readysite / docs / changelog.md
2.6 KB
changelog.md

Changelog

Notable changes to ReadySite.

Current

Database

  • Collection[E] generic repository with CRUD operations
  • Four engine types: Auto, Memory, Local, Remote
  • Turso/libSQL remote replicas with local sync
  • Automatic table creation and schema migration
  • Index and unique index support via WithIndex / WithUniqueIndex

Application

  • MVC framework with HTMX/HATEOAS
  • Controller pattern with value-receiver request isolation
  • Bouncers (route guards) for authentication
  • SSE streaming with c.Stream(w)
  • Template functions accessible via controller name
  • Email sending with Resend and logger providers
  • TLS support via TLS_CERT / TLS_KEY environment variables

Frontend

  • React islands via esbuild bundler
  • Hot Module Replacement (HMR) in development
  • {{render "Component" props}} template helper
  • Automatic bundling on startup

Platform

  • DigitalOcean, AWS, GCP providers
  • infra.json declarative infrastructure configuration
  • CLI tools: cmd/launch, cmd/connect, cmd/publish
  • Volume management with persistent storage
  • Health checks with configurable timeouts

Assistant

  • OpenAI and Anthropic providers
  • Fluent ToolBuilder API for tool definitions
  • SSE streaming with event types
  • Mock provider for testing
  • ToolCall.ParseArguments() for type-safe argument extraction

Website CMS

  • 14 controllers (pages, collections, AI chat, files, etc.)
  • AI assistant with 50+ tools
  • PocketBase-inspired collections with JSON schemas
  • Rule-based access control (ACL)
  • Mutation tracking with undo/redo
  • File upload with MIME validation and size limits
  • Real-time updates via SSE

Hosting

  • Passwordless magic link authentication
  • Docker container provisioning per site
  • Caddy reverse proxy with automatic TLS
  • React Flow site management dashboard
  • Free and Pro plans with persistent volumes
  • Real-time launch progress via SSE

Migration Notes

Database Engine Selection

The engines.NewAuto() function selects engines based on environment variables. If you're migrating from explicit engine selection:

// Old: explicit engine
db := engines.NewLocal("/data/app.db")

// New: auto selection via environment
// Set DB_PATH=/data/app.db
db := engines.NewAuto()

Controller Base Type

Controllers embed application.BaseController (not application.Controller):

type MyController struct {
    application.BaseController  // Correct
}

Template Access

Controller methods in templates use the controller name directly:

{{home.Message}}       <!-- Correct -->
{{.home.Message}}      <!-- Wrong -->
← Back