Changelog

Product updates and release notes for Kotobaseed.

RSS

v1.0.0

v1.0.0 — first production release

v1.0.0 — first production release What's in this cut: - Stripe LIVE wired under Sophia Willowood AFM (Greek sole proprietor) with 6 subscription prices, 2 minute-pack prices (€19/€79), 2 extra-seat prices, both webhooks (subscriptions + Connect/refunds) active and verified end-to-end inside the prod container. - Four premier tutors onboarded with bespoke themes and 1-year Pro grants via the AdminGrant TIER_UPGRADE mechanism: Vasso (with custom domains greekwithvasso.com + .eu), Dafni, Sophia Inkwell, and Mary's Meadow. - Full curriculum + lesson-plan + homework system, hard-delete buttons across every editable surface, strict empty-state hides for unconfigured offerings. - UserRole.CREATOR retired in favour of TUTOR — only TUTOR + STUDENT + staff roles remain. - Legal docs (ToS, Privacy, Tutor Agreement, AUP, Cookie) include the AFM-first identity and pre-authorise the future going-concern transfer to a Sophia-controlled Greek IKE (ToS §17, Tutor §16, Privacy §1.1). Minute-pack non-refundable + never-expire disclosure in ToS §5.6. - Admin soft-delete user filter, Cloudflare orange-cloud cutover complete, custom-domain platform live, R2 backups with quota guard, Sentry wired, OPERATIONS.md shipped.

v1.1.0

v1.1.0 — first staging-first prod release

v1.1.0 — first production release under staging-first discipline Marks the first prod cutover that ran through the staging-first workflow documented in CLAUDE.md + DEPLOYMENT.md. From here on, every production change goes: push to main → CI → auto-deploy to demo.kotobaseed.net → ≥24h soak → tag vX.Y.Z → maintenance banner ≥12h ahead → Sophia approves in the production GitHub Environment → deploy + smoke → drop banner. This release rolls up everything shipped after v1.0.0: Chat - Rate limits on offer / accept / reject / demo-video write paths - WS broadcast throttle (TYPING + READ_RECEIPT) - Mobile UX overhaul: single-pane phone layout, 44px tap targets, sticky safe-area composer, responsive offer modal - Inline OfferModal extracted to its own component Page builder - Auto-save (manual Save button retired) - TipTap rich-text fields with R2-backed image upload - Tier-2 schools blocks: Team roster, Programs showcase, Booking CTA - Public team endpoint backing the roster block Demo conversion funnel - Brand wizard at /try/tutor/build (theme → bio+photo → languages → live preview) - Stripe Connect chained into the demo-to-real conversion handoff - Demo sealed: chrome + tutor menu stay on demo.kotobaseed.net; /login and /register redirect to /try Safety + correctness - Stripe environment boot-guard (refuse sk_live_ + ENVIRONMENT=test AND sk_test_ + ENVIRONMENT=production) - Datetime UTC normaliser sweep finished — AuditLog, Ticket, RecurringPlan, Project, TeacherRating, Notification - sweep_expired_trials wired into APScheduler (daily 04:15 UTC) Process - CLAUDE.md + extended DEPLOYMENT.md encoding the staging-first rule - PRE_DEPLOY_CHECKLIST.md for per-release staging walks - SECRET_ROTATION.md for the quarterly key roll - GH Actions deploy-staging.yml fixed for BEERANKED_KEY var resolution Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

Colophon

Kotobaseed is the platform our writers also use to teach.

Hundreds of independent language tutors run their teaching practice here. Browse the library, or build your own.