Commits
138 commits on main
Add Balatro-style 3D tilt hover effect to admin cards and list items Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
f517511
Feb 16, 2026
Fix marketing copy, docs accuracy, and consistency across readysite.org Unify email to hello@readysite.org, remove undocumented template functions (published_pages, site_name, site_description) and nonexistent API endpoint (auth-with-password), standardize API parameter naming to {collectionId}, rename misleading "GitHub" nav links to "Source", update copyright to 2026, link MIT License, add SSE payload docs, clarify community support, and fix docs sidebar ID mismatch. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
cdc2183
Feb 16, 2026
Add full-text search across all website content - New search package (website/internal/search/) with FTS5-backed search - Search API endpoint: GET /api/search?q=query&type=page&collection=blog - AI assistant search tool for finding content by keyword - Template search function for use in page templates - Background sync to keep search index up to date Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
c7cf8ef
Feb 16, 2026
Fix marketing copy, broken links, and documentation accuracy - Fix broken /docs/getting-started links → /docs/docker (6 occurrences) - Correct AI tool count from 34 to 39 across all pages - Fix PUT → PATCH inconsistency in collections docs to match API - Unify Pro plan description across app.html and sites.html - Rename nav "Source" → "GitHub", add Contact link to footer - Soften PHP criticism, add benchmark methodology notes - Broaden CTAs from WordPress-only to inclusive messaging - Replace "sleeps" with "pauses" for clarity - Add Bearer token and error response examples to API docs - Improve settings, billing, and plan description copy - Run go mod tidy to fix dependency warnings Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
a8f978f
Feb 16, 2026
Add Stripe Checkout integration for readysite.org billing Replace stub payments with real Stripe Checkout (hosted page) for PCI-compliant subscription billing. Webhooks sync subscription state back to the database. Gracefully degrades to DB-only stubs when STRIPE_API_KEY is not set (dev mode). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5b1d6ed
Feb 16, 2026
Add test suite, pre-deploy test gates, and docs improvements - Add comprehensive tests across all packages: emailers, assistant providers (OpenAI, Anthropic), frontend/esbuild bundler, platform layer with all cloud providers (DO, AWS, GCP), website controllers, AI tools, rule engine, and models - Add --skip-tests flag to launch and publish commands; run go test ./... with 5m timeout before deploy/publish by default - Document environment variables (TLS, email, admin, registry) in CLAUDE.md - Document application options table in docs/application.md - Add /publish to .gitignore to exclude build artifact - Rename health_test.go to controllers_test.go to reflect actual scope - Make tool count assertion non-fragile (>= instead of ==) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
c1391c9
Feb 16, 2026
Redesign docs pages, fix template underscore escaping, add website-2 server Docs visual redesign: add sidebar icons, header accent lines, standardized callouts (tip/info/warning), What's Next navigation grids, and per-page improvements (templates categorized cards, collections field type grid, docker TOC and section dividers, pages intro cards). Add logo to docs nav. Fix AI-generated template rendering bug where escaped underscores (\_) broke Go template parsing by adding normalization in normalizeQuotes(). Add website-2 server (134.199.239.73) to infra.json for Docker publishing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
bd7116c
Feb 9, 2026
Improve website UX: fix tool counts, copy, pricing FAQ, about mission - Fix "21 tools" → "34 tools" across all pages (index, about, pricing, quickstart, developers) - Homepage: fix confusing "Nothing it can't" copy, add magic link explainer under signup form - Pricing: add FAQ section explaining storage limits, sleep/wake behavior, custom domains, and plan switching - About: add mission section explaining why ReadySite exists, replace vague "we" language, add GitHub link - Footer: add copyright notice, replace Source link with GitHub icon - Quickstart: recommend cloud path, clarify self-host as alternative, add live URL reminder in step 5 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
57f602e
Feb 9, 2026
Add onboarding tour, improve AI assistant prompt and chat suggestions - Welcome tour modal for first-time admin users (4 steps with skip) - Tour state persisted per-user via settings table - System prompt now includes admin UI awareness and accurate 34-tool summary - Chat empty state expanded to 6 diverse suggestions across tool categories - AI assistant docs updated from 21 to 34 tools with all 8 categories Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
776a695
Feb 9, 2026
Reposition site messaging to data-driven CMS, add developers page and signup modal Shifts homepage from "Ready, Site, Go" to "Turn your data into a live website" with open-core branding. Adds /docs/developers page, inline signup modal (replaces /signup nav link), reorganizes getting-started docs with cloud CTA and Turso provider section. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ae0f141
Feb 9, 2026
Simplify launch tour to single step, reduce delay to 2s Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
76d2cb3
Feb 8, 2026
Fix deploy region bug, review fixes for sleep/wake and middleware - Fix volume creation using DO slug instead of platform region - Fix middleware order so logging wraps outermost - Fix SQLite ALTER TABLE rejecting CURRENT_TIMESTAMP default - Log auto-migration errors instead of silently ignoring - Add wake deduplication to prevent concurrent wake calls - Fix cleanup loop to only delete sleeping sites, not active ones Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
e5732f7
Feb 8, 2026
Replace logo with rocket icon, add logo to footer New logo: white rocket on violet-to-cyan gradient, matching the "Ready, Site, Go!" launch theme. Same rounded square shape, same gradient, but now a rocket with window, fins, and exhaust flame instead of the "R" letterform. Added logo to footer for consistency. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
021883a
Feb 8, 2026
Add 3-tier pricing, sleep/wake system, and volume storage Introduces Hobby tier ($5/mo) between Free and Pro ($20/mo). All tiers now get persistent database storage on a dedicated block volume (/mnt/sites). Free sites sleep after 30min idle and auto-wake on visit. Adds GitHub open source button to homepage hero. - Add DO block storage volumes (readysite-data 25GB, readysite-sites 50GB) - Persistent DB for all tiers (50MB free, 500MB hobby, 2GB pro) - Sleep scheduler: free sites sleep after 30min, deleted after 30 days - Wake middleware: serves loading page, starts container in background - 3-tier pricing/billing pages and site dashboard updates - WithMiddleware option for application framework Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
608a877
Feb 8, 2026
Rebrand ReadySite Hosting to ReadySite, set Pro tier to $20/mo Remove "Hosting" suffix from page titles, email subject, magic link email header, and app layout. Update Pro pricing from $0 placeholder to $20/mo per site. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2c12f77
Feb 8, 2026
Style hero learn more as centered ghost button linking to features section Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
44bd759
Feb 8, 2026
Merge hosting app into readysite.org as single binary Combines the hosting app (auth, sites, billing, settings) into readysite.org so both domains are served by one container. Merges setup.sh to write Caddyfile, init Docker Swarm, and generate SSH keys. Adds hero email signup form with auth-aware dashboard/source links for logged-in users. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0b70865
Feb 8, 2026
Add drag threshold to prevent click-drag conflicts on site nodes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
259d6a2
Feb 8, 2026
Fix node highlight on drag in sites page Use custom data.isOpen flag instead of ReactFlow's selected prop, which incorrectly triggers during drag interactions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
c0fa1b4
Feb 8, 2026
Fix security vulnerabilities, error handling, and documentation accuracy - Add bluemonday HTML sanitizer to prevent XSS in Markdown rendering - Fix unchecked errors in database Count(), index creation, template parsing, auth controllers, settings, sites, and Destroy operations - Buffer template execution to prevent partial HTTP writes on error - Prevent double-close panic in hosting SSE event unsubscribe - Add site-per-user limit (25), email normalization, rand.Read checks - Add rate limiter stale entry eviction to prevent memory leak - Add cycle detection to topological sort in deploy tooling - Fix Sscanf silent failures in DigitalOcean provider - Change Temperature from float64 to *float64 to allow explicit zero - Fix all documentation code examples to match actual function signatures - Remove dead code: User.Sites(), DowngradeSite, GetPlan, useClickOutside Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
70b827f
Feb 7, 2026
Fix in-memory DB data loss, setup redirect, and launch tour UX - memory.go: Set MaxOpenConns(1) so all connections share the same :memory: database instead of each getting an empty one - site.go: Use setup_complete setting + HOSTING_URL redirect instead of counting admin users - SitesPage.jsx: Add 3s delay before showing ready, visit button opens admin panel via JWT Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ef8a357
Feb 7, 2026
Add comprehensive documentation across 10 new files New docs covering all five pkg layers, security, deployment, testing, examples, troubleshooting, architecture, changelog, hosting app internals, and a user-facing collections guide for readysite.org. Updated docs index and CLAUDE.md references. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
9a02bb3
Feb 7, 2026
Add auto-setup from env vars, JWT admin access, and signin redirect Hosting now passes site/user info (ADMIN_EMAIL, ADMIN_NAME, SITE_NAME, SITE_DESC, AUTH_SECRET, HOSTING_URL) to website containers. The website auto-creates the admin user and site settings on first boot, skipping the setup wizard. Hosting generates short-lived JWTs so clicking "Admin Panel" signs users into their site without a password. The website signin page redirects to the hosting dashboard when HOSTING_URL is set. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fee2848
Feb 7, 2026
Update AI tour step copy Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
83c9f6a
Feb 7, 2026
Rename AI step, disable Visit button until site is live Rename 'Hook up your AI' to 'Use your favorite AI'. Last tour step shows 'Going live...' disabled button until site status is active. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
33119b9
Feb 7, 2026
Add AI coding assistant step to launch tour New thought-bubble SVG with Anthropic and OpenAI logos. Tour is now 3 steps: launching, hook up your AI, you're live. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
a0f599b
Feb 7, 2026
Redesign launch tour with inline SVGs, 2 steps, skip button Replace gopher images with custom inline SVG illustrations (rocket, globe). Trim tour to 2 steps: launching and live. Add skip button to dismiss immediately. Larger visuals, simpler copy, cleaner layout. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0d80ea0
Feb 7, 2026
Fix Pro data size, update tour content, don't select on drag DataSize now runs du inside the site container instead of walking a local path that doesn't match the Docker host mount. Updated launch tour copy to reflect current product. Dragging a node no longer opens the detail panel when nothing was selected. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4fba5f2
Feb 7, 2026
Add delete confirmation modal, portal all modals to document.body Add DeleteConfirmModal with type-to-confirm for permanently deleting shutdown free sites. Use createPortal to render all confirmation modals at document.body so they aren't clipped by the detail panel's overflow-hidden. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
d4ad730
Feb 7, 2026
Fix launch tour auto-skip, center canvas on selected site Remove useEffect that auto-skipped to last tour step when site launched fast. Center ReactFlow canvas on the initially selected node when loading /sites?id=xxx. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
eb60da3
Feb 7, 2026
Merge API controller into Sites, fix launch tour auto-skip Move all site API endpoints from api.go into sites.go and fix CreateSite slug check treating ErrNotFound as a failure. Remove launch tour auto-advance that skipped the tour when sites launched fast. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
098d701
Feb 7, 2026
Add Delete Site button for shutdown free sites Shutdown free sites show a Delete Site button that permanently removes the database record. Shutdown pro sites have no delete option since their data volume is retained. The DELETE endpoint now handles both: active sites get shutdown, already-shutdown free sites get deleted. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7762dad
Feb 7, 2026
Pro database indicator on site cards with data size Pro cards show a violet database footer with storage used (e.g. "32 KB"). Free cards keep the subtle grey "no database attached" warning. Pro plan badge is now violet with border to stand out. Backend ListSites includes DataSize by walking the site's data directory. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
80f0958
Feb 7, 2026
Rename Delete Site to Shutdown Site, fix slow upgrade timeout Free site button/modal now says "Shutdown Site" with warning that free sites cannot be restarted. Also reduce docker stop timeout from 10s to 2s during upgrade since we're immediately recreating the container. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6988b0b
Feb 7, 2026
Subtle grey SVG warning icon on free site cards Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2f3b6c7
Feb 7, 2026
Replace dedicated servers with database-only Pro tier Pro sites no longer provision DigitalOcean droplets. Instead, upgrading recreates the container with a volume mount and DB_PATH for persistent SQLite. Delete servers package, simplify launch/upgrade to synchronous container operations, add shutdown/restart for Pro sites, and update all pricing copy to reflect the free Pro tier. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
881445f
Feb 7, 2026
Add delete site with confirmation modal, stop and remove containers - Delete button in site detail panel with confirmation modal - User must type site name to confirm deletion - Backend: Destroy() removes container, Caddy config, server (Pro) - New "shutdown" status for deleted sites (hidden from listings) - Destroy() no longer updates model status (caller handles it) - Exclude shutdown sites from all listings (api, billing, settings) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2b121b6
Feb 7, 2026
Harden hosting app: rate limiting, error handling, auth enforcement, launch rollback Critical fixes: - Wire up API rate limiting (60 req/min) via RequireAuthAPI bouncer - Add error handling to Sites.Insert, Sites.Update, Sites.Get in slug loop - Sanitize error messages in UpgradeSite (don't expose internals) - Handle json.Marshal errors in SSE event streaming High priority fixes: - Enforce AUTH_SECRET in production (log.Fatal instead of random secret) - Fix race condition in selectSite with request counter guard - Close stale EventSource on deselection to prevent memory leaks - Add launch rollback: cleanup container/server/Caddy config on step failure - Add input validation: description capped at 500 chars - Fix silent error ignoring in billing.go and settings.go UserSites() Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
d409b2d
Feb 7, 2026
Clean up hosting app: remove dead dashboard controller, add user dropdown to public nav - Remove dashboard controller (was only a redirect to /sites) - Fix auth.go: redirect to /sites directly after login instead of /dashboard - Public nav: show user avatar dropdown with sign out when authenticated - Mobile drawer: add sign out option when authenticated Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0bde36b
Feb 7, 2026
Add cookie consent, logo, auth-aware nav, rename tabs to Dashboard/Billing/Account - Cookie consent banner on all pages (localStorage-based dismiss) - SVG logo mark in nav headers (public + app layouts) - Public nav shows Dashboard/Billing/Account when signed in - App nav tabs renamed: Sites→Dashboard, Settings→Account - ReadySite logo links to homepage (/) instead of /sites - Hero buttons: swap order so View Source Code is first on desktop Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
22a4452
Feb 7, 2026
Remove email from user dropdown, keep only sign out Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
8bf20de
Feb 7, 2026
Mobile fixes: dvh viewport height, left-aligned nav tabs, responsive panel and grid - Use 100dvh instead of 100vh for sites page to account for mobile browser chrome - Move nav tabs to left side of navbar, always visible on all screen sizes - Detail panel: capped height on mobile, Open button with label, responsive positioning - Site cards: responsive width (260px mobile, 280px desktop), 1/2/3 column grid by viewport - Billing: responsive flex layout for site list items - Frontend: cache-busting hash on components.js bundle URL Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3f44820
Feb 7, 2026
Polish detail panel, add help modal, smaller cards - Detail panel: smaller link URLs with Labels section header, more gap between link rows, admin panel link, open button in header - Panel wider (420px fixed width) - Site cards: shorter (148px), no-description italic placeholder - Help modal with getting started info on all pages - Scroll to zoom enabled on ReactFlow canvas Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
f5eb7dd
Feb 7, 2026
Simplify sites page with ReactFlow node cards and standalone template Replace the old multi-component site manager (SiteManager, ServiceNode, ServicePanel, SiteInfoPanel, Toolbar) with a single SitesPage component that renders site cards as draggable ReactFlow nodes. Cards persist their positions in localStorage. The sites template is now standalone (not using the app layout) to give ReactFlow a proper height chain. Revert app.html to a normal scrollable layout for billing/settings pages. Clean up the detail panel and fix stale /dashboard links. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4757160
Feb 6, 2026
Keep launch tour through site going live, remove separate welcome modal The tour now includes "Your site is live!" as the final step instead of switching to a separate welcome modal. Auto-advances to the last step when the site becomes active, so users always see the full tour. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
d0a61f2
Feb 6, 2026
Rename Team plan to Pro on pricing page Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
48bcb7b
Feb 6, 2026
Add Pro tier with dedicated servers via Docker Swarm Pro sites ($20/month) get a dedicated DigitalOcean droplet that joins a Docker Swarm with readysite-org-1 as manager. Server provisioning handles droplet creation, swarm join, image transfer via docker save/load, and Caddy reverse proxy to the server IP. Services (database) run as swarm services constrained to the site's node. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
d6d9c28
Feb 6, 2026
Implement site launching with Docker containers, Caddy reverse proxy, and startup recovery Replaces launch.go stubs with real Docker container creation from local registry, per-site Caddy config generation, and idempotent startup. Adds lifecycle operations (Stop, Start, Destroy, Status), SSE event streaming for real-time launch progress, and automatic recovery of sites stuck in "launching" state on app restart. Infrastructure: mount host Docker binary + socket into hosting container, add registry to readysite network, support custom healthcheck commands in ServiceSpec, and configure Caddy to import per-site config files. Launch tour button now stays disabled until site is live, then opens the site in a new tab. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
e71da25
Feb 6, 2026
Clarify per-site pricing model across billing and pricing pages Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5a9bf6a
Feb 6, 2026
Add billing, settings pages and enhance service/site panels - Billing page with plan comparison (Free vs Pro), per-site plan cards, upgrade CTA - Settings page with profile form (HTMX), plan summary, danger zone - ServicePanel: type-aware details with connection URLs per service type - SiteInfoPanel: live URL link, relative created date, plan badge - Nav: add Settings link alongside Dashboard and Billing - Launch tour for new sites with "launching" status Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
73d2546
Feb 6, 2026