<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kotobaseed changelog</title>
    <link>https://kotobaseed.net/news/changelog</link>
    <atom:link href="https://kotobaseed.net/news/changelog/rss.xml" rel="self" type="application/rss+xml"/>
    <description>Product updates and release notes for Kotobaseed.</description>
    <item>
      <title>v1.0.0: v1.0.0 — first production release</title>
      <link>https://kotobaseed.net/news/changelog/v1-0-0</link>
      <guid isPermaLink="false">changelog-gct45xgvq5fz3nl6itss9phh</guid>
      <pubDate>Sun, 21 Jun 2026 20:06:54 GMT</pubDate>
      <description>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.</description>
    </item>
    <item>
      <title>v1.1.0: v1.1.0 — first staging-first prod release</title>
      <link>https://kotobaseed.net/news/changelog/v1-1-0</link>
      <guid isPermaLink="false">changelog-bcsb48sksf02qmo7ecicvfaj</guid>
      <pubDate>Sun, 21 Jun 2026 20:06:54 GMT</pubDate>
      <description>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) &lt;noreply@anthropic.com&gt;</description>
    </item>
  </channel>
</rss>