← Back to changelog2026-05
Launch month — mobile, design, admin, and Knowledge Index Phase A
🚀 Launch
- OAuth verification auto-approved (10 May 2026) — Google's review cleared, removing the last critical-path block to launch.
- Launch track active — demo video CTA replaced with a placeholder, brand tone tightened, pre-launch code integrity (S78A) cleaned up.
- Prompt template engine permanently hardened —
.format → string.Template, retiring the 5/17 KeyError incident class for good.
📱 Mobile and design
- Session 77 Mobile — landing and dashboard, end-to-end fix across 16 phases. Zero mobile viewport overflow, iOS Safari zoom avoided, NoteRenderer modal added, eight viewports laid out cleanly.
- Mobile overflow FIX2 / FIX3 — sealed horizontal overflow on the analysis page with table-fixed + overflow-x-hidden.
- Session 77B Design Track — font system, tone separation, content-type locale, Hero · Trust bar · 4-column footer, max-width across all three locales, dark-mode regression fix.
- B-FINAL2 — removed
status from the footer, brought down EN heroTitle size.
🛠 Admin panel hardening (S81 + S82)
- Self-lockout prevention — admins can't downgrade their own role and lock themselves out.
- pdf-regen elevated to verifyOwnerAdmin — blocks sub-admins from running pipeline commands.
- Removed 1,000-user cap on user search — single SELECT against the new
user_profiles.email index.
- Real emails in audit logs — joined
user_profiles instead of showing a UUID prefix.
- pdf-regen smart batching — 50 per request, auto-loops, with a progress bar.
- Slack incident notifier — fires on analysis-failure spikes and on Paddle webhook errors.
- User drill-down page — profile + analyses + channels + audit on a single screen.
- F1/F2/F3 — trend chart filled, channel-name lookup fixed, user counts corrected via Service Role Key.
📚 Knowledge Index Phase A (S83)
- Library page — explore notes across Timeline / Cluster / Stack tabs.
- Topic synthesis cron (weekly for Pro, daily for Max) — Claude Haiku synthesizes notes that share a topic.
- Bulk delete — multi-select notes and delete them in one action, with integration-side cascade.
🔄 Operations Hygiene (S80) + Phase E (S84)
- Zombie processing auto-reaper — rows stuck longer than an hour are cleared automatically.
- Deterministic exceptions skip retry — code bugs like KeyError propagate immediately, cutting API costs by 3×.
- RetryError unwrap —
error_msg now shows the inner exception, not a wrapper.
- Env-var trim hardening — an invisible
\n at the tail of a URL will no longer take production down.
- Resurface daily digest (S84) — old notes resurface on 21 / 90 / 180 / 365-day intervals.
- Recommendation fallback — when no same-topic notes exist, we fall back to your recent notes.
🎨 D18 sticky timeline
- Left chapter sidebar — a 60-minute video becomes your personal index. IntersectionObserver highlights the active chapter on an amber background.
- Chapter click jumps the YouTube video — direct
watch?v=...&t=Ns link (one hotfix included).
- Mobile hamburger sheet — chapters slide in from the left on small screens.