This release ships the core leter product: a D1-backed state layer, a remote MCP server with eight tools, an X publish worker with DO-alarm scheduling, a server-rendered web queue, and a scene capture command that proposes narratives and uploads screenshots to R2. It also adds an audience community-sweep command, a distribution eval harness that reproduces the taste-judge convergence, and a rewritten marketing landing page. Product specs, memory files, and planning docs are consolidated in the repo.
New
- Leter state core: D1 schema and models for file-backed memoryMigration
0005_leter_state.sqlintroduces the full leter schema:people,voice_rules,profiles,moments,slots,versions,judgments,channels,queue, andledger. Models follow thesrc/modelspattern; tests cover CAS conflict, hold/publish flow, and streak semantics. 2d1ebc6 - Remote MCP server with eight person-tokened tools
POST /mcpspeaks stateless JSON-RPC over HTTP — onboarding isclaude mcp add --transport http. Eight tools are wired to the state core:slot_open,slot_get,draft_revise,judgment_post,queue_list,memory_get,memory_teach, andbrief_get. Every call authenticates a person via hashed bearer token so judgments and edits land attributed. e5cfaa0 dcecd9b d9b20be - X publish worker and DO-alarm scheduler
POST /v1/leter/queue/:id/publishposts text-native with a trailing URL split into a reply;POST /schedulesetspublish_atand arms thePublishSchedulerDurable Object alarm, which publishes due items and re-arms for the next. Held and already-published items are refused; the route returns 503 without credentials. 3a696e5 - Server-rendered web queue with traffic-light verdictsA Hono page at
/letershows first sentences with amber/green/red dots for your verdict, ready, and held states. Clicking a post opens keep/edit/kill controls with a note field; queued items support lift-hold and send-back (which reopens the slot and logs the retraction as taste data). Auth uses the same personal token as MCP, set once as a cookie at/leter/login. f6bede0 fdca491 - Leter skill v0:
draft,refine,teach,posted,status,resetTheskill/directory ships the first leter skill bundle — six commands documented inskill/reference/and routed throughskill/SKILL.md. Every product onboards through the setup flow; human input is interview answers and judgments, never file edits. 7a39c24 05f5f32 bf830e0 1457623 /leter scenecapture command (C1): propose, iterate, screenshot, uploadThesceneskill command mines the codebase and leter's product memory to propose a narrative, iterates until agreement, then captures screenshots and uploads changed PNGs to R2 when a project key is configured. The flow stops at mine checkpoint, interview, and judgment gates — capture refuses to run with empty interview or judgments. The agreed one-line story persists inscenes.json. ce21385 a27add8 f8fb7bb 25fc114 927f7ce 72f47ea 27d6d10 196b436- Hosted captures: R2 store, upload and manifest routes, immutable serveMigration
0007_captures.sqladds content-addressed capture history in R2 and D1. Project-key-authed PNG upload includes two-level dedup (unchanged slot is a no-op; known bytes under a new slot skip the R2 put), a latest-per-slot manifest for the CLI's prior-hash diff, and public immutable serving at/c/:sha. 1052c9b /leter audiencecommunity sweep across HN, Reddit, and XTheaudiencecommand sweeps Hacker News, Reddit, and X for relevant community signals and returns ranked, cited findings. It started as a POC and is now a first-class leter skill command, with the engine bundled inskill/scripts/audience/and documented atskill/reference/audience.md. 2773c7b 624dfe0
Improved
- Marketing landing page rewrittenThe landing page copy and layout in
src/views/landing.tsxandsrc/views/layout.tsxhave been rewritten based on a new brief and page spec inmarketing/helleze/. The RSS feed link is preserved and the apex test tracks the updated copy. f40fec3 e8e8479 - Changelog section labels carry their category as a CSS classEach section label in the changelog view now includes its category as a CSS class (issue
#12), making it easier to style or filter entries by type. de12ce8
Fixed
- Login form preserves the destination through manual sign-inThe
/leter/loginform now carries the intended destination so users land where they were headed after authenticating, rather than at a fixed post-login page. fdca491