Skip to content

fragment v0.14.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 17:19
· 696 commits to master since this release
4cd9dc4

What's Changed

  • A hand-off changes the owner's apps: fragments, on a throwaway made their editor by @futurepaul in #82
  • The desktop's app panes say who may open each app, share it, and who has it open by @futurepaul in #83
  • The share sheet as a Docs-style card, in a dialog on the home by @futurepaul in #85
  • __files is a files viewer: a tree beside a reader, compiled into the cell by @futurepaul in #84
  • The share sheet in a dialog in the owner's desktop, signed in through __share by @futurepaul in #86
  • A desktop updates itself to its template's latest files (__template) by @futurepaul in #87
  • The desktop's share dialog falls back to a window when the sheet never shows by @futurepaul in #88
  • The desktop's share dialog says it is opening until the sheet shows by @futurepaul in #89
  • Self-hosted computers: sandcastle, and a credential route for its nodes by @futurepaul in #90
  • sandcastle: the rewrite to engineering style (core, simulator, real-engine e2e) by @futurepaul in #91
  • sandcastle phase 5: budgets (reserve, admission, measured capacity) and services under their image's init by @futurepaul in #92
  • sandcastle: sleep tiers: idle computers pause (warm) or stop (cold), and a request wakes them (phase 5 step 3) by @futurepaul in #93
  • sandcastle: cors_origins, and the e2e chats with Hermes over its native socket (Hermes chat, phase 1) by @futurepaul in #94
  • hermes: a fragment's own Hermes on sandcastle, bound Finite's way (phases 2–3) by @futurepaul in #95
  • hermes template: a chat page straight to the fragment's Hermes (phase 4), and fragment-club's grantor config by @futurepaul in #96
  • docs/runtime-seam.md: one computer wherever it runs (decisions of 2026-09-30) by @futurepaul in #97
  • sandcastle: a computer reached by its key over iroh, measured on lat-6 (docs/runtime-seam.md) by @futurepaul in #98
  • KEYS signs admissions (step 1 of the cut to one computer) by @futurepaul in #100
  • One computer: Hermes by its key, the computer client on every host, and Hermes as a preset by @futurepaul in #101
  • Hosted e2e: a hermes section (the hosted proof) by @futurepaul in #102
  • Hermes on the platform's new-fragment page by @futurepaul in #104
  • Hermes' socket: the fake and the lane as real Hermes answers by @futurepaul in #105
  • One home, phase 1: the design, and the chat for anyone by @futurepaul in #106
  • One home, phases 2–4: Hermes answers chats through its Relay, its desktop image, and its screen by @futurepaul in #107
  • One home, phase 5: the desktop is home, new chats choose who answers, editors trusted as owners by @futurepaul in #108
  • Hermes: one Relay, however its chat joins (fixes 403 deliveries on fragment.club) by @futurepaul in #109
  • Hermes: its model in config.yaml, where its gateway reads it (fixes 400s on fragment.club) by @futurepaul in #110
  • Hermes: approvals from the chat's owner and editors, mid-turn (fixes a stuck turn on fragment.club) by @futurepaul in #111
  • fragment v1 on Cloudflare: the plan of record and phase 1's hard cut by @futurepaul in #112
  • docs/cloudflare-v1.md: AI Gateway's second half, lessons from cloudflare/agents, two defaults by @futurepaul in #113
  • ci: check only until the e2e runs on Cloudflare by @futurepaul in #114
  • Phase 2: the cell on Cloudflare (workerd, in-cell keys, wrangler deploys), plus the ledger core by @futurepaul in #115
  • Phases 3–4: the usage ledger, and computers through the real-Hermes lane by @futurepaul in #116
  • Phase 5: the shell and the blessed templates by @futurepaul in #117
  • Phases 6 and 7: brains, skills, cards, the hosted lane by @futurepaul in #118
  • Agents share on their owner's behalf by @futurepaul in #119
  • xtask brings its own Node; nothing from PATH by @futurepaul in #120
  • e2e: the routine check waits for its computer to sleep by @futurepaul in #121
  • Credentials: the provider catalog, per-agent placeholders, Google and the operator keys by @futurepaul in #122
  • CI under 10 minutes: no webhook stalls, a working cache, four e2e shards by @futurepaul in #125
  • cli: init prints the webhook URL with the fragment's full name by @futurepaul in #123
  • computer: the container's reports reach their routes by @futurepaul in #126
  • check: every first-party JavaScript file through node --check by @futurepaul in #124
  • deploy: after a rollback, live takes main's files, not a three-way merge by @futurepaul in #127
  • dev: Ctrl-C stops wrangler with xtask by @futurepaul in #129
  • cli: TLS trusts the OS's roots beside the public ones by @futurepaul in #130
  • computer: a container that dies while it starts meters nothing by @futurepaul in #131
  • e2e, chat: Stop clicked on the slow message's own turn by @futurepaul in #132
  • secrets: the deployment's secrets live in its Cloudflare Secrets Store by @futurepaul in #134
  • docs: durable turns, what Pi Durable teaches our computers (an exploration) by @futurepaul in #135
  • bridge: a turn runs only in the life that claimed it (P1, with its tests) by @futurepaul in #137
  • cli: login opens the link without waiting for the browser by @futurepaul in #140
  • computers: a crash lever, a wake that says what it restored, the snapshot as a cache of the save by @futurepaul in #136
  • bridge: a terminal command's fenced block is its step's arguments, not a step by @futurepaul in #138
  • bridge: an agent asking in words gets the asker's next message as its answer by @futurepaul in #139
  • Every hosted agent knows its platform: a built-in fragment skill, and the skills fragment backfilled by @futurepaul in #142
  • docs: durable computers, the design of record by @futurepaul in #141
  • The desktop: Take over reaches it, the agent operates it, and gws by @futurepaul in #143
  • Computers: saving is a lifecycle action (A+ step 1, 1/4): three saves, the hold handshake, failed sleeps keep their container by @futurepaul in #147
  • Computers: a held save leaves out what its guest copied; our Hermes image copies its databases online (A+ step 1, 2/4) by @futurepaul in #148
  • Hermes image: Litestream is cut; the saves carry Hermes' databases (durable computers, step 1's end) by @futurepaul in #150
  • Computers: the seam, /data/work saved on its own (durable computers, step 2) by @futurepaul in #149
  • docs: the SimpleX connector exploration, parked by @futurepaul in #152
  • images, docker test: the scripted tool turn lasts long enough to show its step by @futurepaul in #145
  • A vision model for Hermes' screenshots: the route's vision, GLM-5.3 Flash by @futurepaul in #154
  • images/hermes: Hermes installs software as root, gone at the next start by @futurepaul in #146
  • The shell's sidebar is live: an agent's app shows without a reload by @futurepaul in #158
  • bridge: an open card keeps its computer awake, so a missed card's next message is answered by @futurepaul in #159
  • e2e: concurrent runs keep their computers apart and remove their own containers by @futurepaul in #155
  • e2e, agents: wait for the say's ops record as well as the answer by @futurepaul in #157
  • One reply per turn: a model's text beside a tool call is the step's words, not a message by @futurepaul in #160
  • cell: a template lands in one seed; a commit that changes nothing answers main's tip by @futurepaul in #163
  • shell: a late skills backfill shows in settings; its e2e check waits for the first commit by @futurepaul in #162
  • Hosted desktop: Chromium's container flags on any runtime; the screen follows the desktop by @futurepaul in #161
  • bridge: a first start makes its state directory, and so /data, at once by @futurepaul in #151
  • Docker rung: the tool turn outlasts Hermes' progress poll by @futurepaul in #153
  • P5: a turn a restart cut is closed in Hermes' session and the next turn is told what was cut by @futurepaul in #169
  • e2e: agent-smoke, a real agent on a preview (Hermes on Containers, a real model, Chrome) by @futurepaul in #164
  • Hosted: a computer's own sockets never wake it as it sleeps; Hermes sends a held tool step by @futurepaul in #171
  • A fragment's delete answers at once; its members' lists, app database and blobs go after by @futurepaul in #172
  • e2e: the hosted settle check waits out a model call Hermes makes after its reply by @futurepaul in #173
  • Hermes image: the hold is answered once the desktop has drawn, or a browser runs by @futurepaul in #175
  • ContainerHost.port: drop a message that arrives once the bridge is closed by @futurepaul in #166
  • e2e, hermes: the install's posts take ids no other check uses by @futurepaul in #170
  • e2e: the run's client drops an idle connection before workerd does by @futurepaul in #168
  • URGENT templates/skills: remove powerpoint-finite (Anthropic's proprietary license) by @futurepaul in #200
  • cell: cut a computer's S3 endpoint (storage.fragment.internal) by @futurepaul in #177
  • hermes-boot: the repo sync deletes only what the other side was read whole without by @futurepaul in #181
  • bridge: a Hermes turn ends at its reactions with no clock; questions by glyph (#156, problem 9) by @futurepaul in #184
  • hermes: no bundled skills, stage2 unpatched (#156 head scratchers 1, 2) by @futurepaul in #204
  • cell: a save let go of is kept until its archive's delete worked by @futurepaul in #176
  • cell: a computer's exec holds only its output's tail, and is killed past its bound by @futurepaul in #179
  • cell: a job step runs at least once; a changing fetch names its step by @futurepaul in #180
  • cell: the blob store, the agents' binding and streams through workers-rs's own types by @futurepaul in #183
  • cell: a connection's token is asked of Pipes for each swap, never held by @futurepaul in #185
  • cell: search copies follow the channels every member may read (#156, problem 5) by @futurepaul in #186
  • cell: the poll backstop runs only while the pins may lag the repo (#156 H10) by @futurepaul in #188
  • cell: an outbound read is bounded in time and size as it streams by @futurepaul in #190
  • cell: the storage meter stops asking the app its size by @futurepaul in #193
  • cell: a fragment's status names the code that runs (#156 H9) by @futurepaul in #194
  • cell: one presence protocol; ?v=2 is no longer asked for by @futurepaul in #207
  • cell: cut __tree and GET /api/f/{name}/file/stat (only the e2e called them) by @futurepaul in #209
  • e2e: cut the harness helpers nothing calls by @futurepaul in #202
  • templates: drop the notes viewer's 21 dead chunks (638 KB), one agent.png by @futurepaul in #203
  • e2e: cut the summary machinery; CI's e2e is green when every shard is by @futurepaul in #191
  • cli: cut deploy --preview, manifest-set, the code.storage override, two sync flags by @futurepaul in #192
  • cell: fragments are always on their own hosts; no path mode by @futurepaul in #213
  • platform: the facet ledger's shims for rows from before runs go by @futurepaul in #216
  • e2e: two races: share's quiet list waits for its install, shell's group for its heading by @futurepaul in #217
  • cell: a run whose app code changes under it starts over on the new code by @futurepaul in #178
  • cell: an operator key's call is held on its owner's ledger before it is made by @futurepaul in #182
  • docs: the registry singleton, its costs and trigger (#156, problem 8) by @futurepaul in #187
  • (decision for Paul) devstack: the pinned Node alone; FRAGMENT_NODE and WRANGLER_BIN go by @futurepaul in #199
  • (decision for Paul) xtask: drop the secrets-migration shim; serde refuses the old fields by @futurepaul in #201
  • hermes-boot: an agent's tier unread is said, never defaulted (#156 head scratcher 7) by @futurepaul in #205
  • shell: cut the desktop's leftovers; one stylesheet by @futurepaul in #212
  • fakes: cut what no test or tool calls by @futurepaul in #208
  • cell: no migrations of state from before Cloudflare by @futurepaul in #197
  • cell: the shell's sidebar is one read of the person's list by @futurepaul in #211
  • cell: a fragment's alarm takes its preview card's shot itself (#156, head scratcher 4) by @futurepaul in #189
  • cell: no code.storage push webhooks; a writer refreshes (#156 H10, stacked on #188) by @futurepaul in #215
  • cell: one-value config knobs go; push's VAPID sub is the platform origin (was an unreachable .invalid mailto) by @futurepaul in #210
  • cell: no moved hosts (FRAGMENT_LEGACY_HOST_SUFFIX) (decision for Paul) by @futurepaul in #214
  • cli: cut sync --install/--uninstall and --mirror-from (decision for Paul) by @futurepaul in #195
  • docs: cut the history, keep the contract (#156 audit) by @futurepaul in #198
  • cell: cut the manifest's notifyUrls (decision for Paul) by @futurepaul in #218
  • cell: cut the browser library's notify export (decision for Paul) by @futurepaul in #219
  • shell: cut backfillSkills (decision for Paul) by @futurepaul in #220
  • docs: ROADMAP.md and fragment-boats.md go; cited decisions become cloudflare-v1's R4-R18 by @futurepaul in #206
  • Cut goose: Hermes on a computer is the one agent runtime by @futurepaul in #196
  • Hermes' container guesses pinned: an agent's home is the same on Docker and Containers by @futurepaul in #167
  • e2e: a sweep removes one run's fragments; --sweep-all the rest, sparing the young by @futurepaul in #174
  • hermes: an agent's home is in its work (~ → /data/work//home) by @futurepaul in #223
  • xtask: teardown removes a branch's queue consumers before its Worker by @futurepaul in #224
  • hermes: what Hermes writes under the hold, chosen (catalog off, Node's cache out of /data) by @futurepaul in #225
  • An operator's wipe of a person (fragment operator wipe) by @futurepaul in #226
  • Agents ask each other: @ lists all your agents, fragment ask, the bridge counts the hops by @futurepaul in #228
  • A screen per agent: each agent's own desktop, Take over through Hermes' lease, idle desktops stop by @futurepaul in #230
  • images CI: the Docker lane (real Hermes) on PRs that touch the images by @futurepaul in #252
  • A wipe never waits on the lists it empties; a cleanup's failures are named (p5's stuck wipe) by @futurepaul in #256
  • models: voice memos transcribed through the model route (Workers AI's Whisper) by @futurepaul in #229
  • A fragment's host label is one DNS label: refused past 63 bytes, never cut by @futurepaul in #251
  • Hermes v0.21.6: move to upstream's first stable (pinned digest) by @futurepaul in #231
  • hermes: an agent's temp files are in its work (cache/scratch → /data/work//tmp) by @futurepaul in #227
  • Computers: their owner is told, and Restart is the way back to working by @futurepaul in #255
  • GUIDE: build discipline in First moves, and a short design section by @futurepaul in #233
  • The platform serves the agent docs: /llms.txt (SKILL.md) and /llms-full.txt (GUIDE.md) by @futurepaul in #235
  • A platform stylesheet a page may link (__fragment.css), used by the blank template by @futurepaul in #234
  • The page's errors from the card's shot, on status and in events by @futurepaul in #237
  • Agents run on GLM-5.3 Flash by default (Paul, 2026-10-08) by @futurepaul in #273
  • hermes: Bot Mode on, each agent's own chat its Bot Chat; messages between bots are turns in their chats by @futurepaul in #272
  • People and billing: npub identities, email sharing, orgs, Stripe seats, trials, packs, operator admin (#254–#269 rebased) by @futurepaul in #271
  • hermes: Bot Mode polish: one answer per bot, bots named by title, no chat joined by @futurepaul in #274
  • Mail from a named sender; agent-restart reads npub identities by @futurepaul in #275
  • A first-time person's path: a guest's home, an org of one, shared titles, one name by @futurepaul in #276
  • e2e: checkout, a guest's seat bought on Stripe's own Checkout in Chrome by @futurepaul in #277
  • e2e: the rehearsal's sweep makes its decoys by the names it checks by @futurepaul in #279
  • A sweep's sign-in leaves the paid calls a running lane lent as they are by @futurepaul in #278
  • models: a failed call is made once more on a fallback model (DeepSeek V4 Flash) by @futurepaul in #281
  • Skills: keep ours where they're ours, Hermes' and upstream's where they're better by @futurepaul in #280
  • Connect your models: a person's own OpenRouter, from settings (decision 60) by @futurepaul in #282
  • models: DeepSeek V4 Flash is the cheap tier, GLM-5.3 Flash its fallback by @futurepaul in #283
  • hermes: an agent's own desktop never asks its owner by @futurepaul in #284
  • Operator keys for Hermes' tool categories: Firecrawl, FAL, ElevenLabs, a cloud browser; Perplexity and X search wired by @futurepaul in #285
  • models: GLM-5.3 Flash is the cheap tier again, DeepSeek V4 Flash its fallback by @futurepaul in #286
  • images/hermes: layer the image so a code-only deploy pushes 9 MB, not 1.5 GB by @futurepaul in #287
  • hermes: a stalled call falls back to the route's fallback, by Hermes' own switch by @futurepaul in #290
  • shell: a new agent says hello first; its job is its SOUL.md, never your first message by @futurepaul in #288
  • chat: a clarify's Other is answered on its card, in words, with Enter by @futurepaul in #289
  • cell: a post answers first; computers are woken without the queue by @futurepaul in #291
  • hermes: no blocked credentials in env passthrough; the fragment skill's references exist by @futurepaul in #292
  • hermes: a bot's answer comes back after a restart by @futurepaul in #293
  • Fragments look better by default: optchat's stylesheet and guidance; apps have no header unless asked by @futurepaul in #294
  • shell: an app beside the chat, new chats with an agent, unread badges by @futurepaul in #297
  • Chat: the owner's commands (Hermes' manifest less what changes the install), queued messages, Steer, Reply by @futurepaul in #296
  • chat: video and PDF inline, earlier messages, jump to latest, share, fuller markdown, reconnecting by @futurepaul in #295
  • hermes: every agent is routed, so a completion in any chat comes back by @futurepaul in #298
  • bridge, chat: readable steps, Hermes' notices, waiting for an answer, images by URL by @futurepaul in #299
  • chat: the working card reads cleanly (markdown in notes, compact status, short paths) by @futurepaul in #302
  • computers: an update is told, never forced (the update notice) by @futurepaul in #303
  • xtask deploy: a deployment of its own routes each host in its own zone by @futurepaul in #309
  • cell: templates, the shell and the agent docs into Static Assets; the Wasm held to 6 MB (8.92 → 5.48 MB) by @futurepaul in #305
  • shell: a new person's first run is the welcome, never settings by @futurepaul in #310
  • computers: stable kept at its digest, the canary built; the update pill goes by @futurepaul in #311
  • admin: an operator pins a person's computer (the canary group) by @futurepaul in #312
  • e2e: a hosted run tries a round's candidate, and agent-restart upgrades into it by @futurepaul in #314
  • sharing: buttons for the sheet, leaving, and who has access to what by @futurepaul in #313
  • Polish settings navigation and account controls by @skylerwww in #307
  • Refresh chat, sidebar, desktop and mobile UI by @skylerwww in #308
  • Export everything: a person's data as one tar, from Settings by @futurepaul in #315
  • e2e chat: wait for a reply's quote to clear with its message, not after it by @futurepaul in #319
  • AGENTS.md: the hosted lane's --candidate by @futurepaul in #316
  • e2e billing-page: no step acts on what is not there; waits on what is by @futurepaul in #317
  • shell, chat: on a phone, an app's page by @futurepaul in #318
  • e2e: agent-smoke's awake save, missed, says what the computer said by @futurepaul in #320
  • e2e: a GET or HEAD with no body says no Content-Length, so wrangler dev can retry it by @futurepaul in #321
  • images: the Hermes image's inputs are what it runs by @futurepaul in #322
  • shell: Add teaches how to ask for an app, into the chat's composer by @futurepaul in #323
  • images: nothing technical asks a person; agents ask about outcomes in plain words by @futurepaul in #324
  • chat: a phone's return is a newline; the send button sends by @futurepaul in #325
  • operations: a description each, plain text, shown in status by @futurepaul in #327
  • cli: fragment mcp, a fragment's described operations as an MCP server's tools by @futurepaul in #328
  • llms.txt: a coding agent's handoff, filled in with the deployment that serves it by @futurepaul in #329
  • xtask build: the cell's Wasm budget is 6.5 MB for launch week by @futurepaul in #331
  • models: the tiers run where the deployment says; Finite's on Finite Private (decision 61) by @futurepaul in #330
  • job.ai.text: tools, streamed drafts and timing; the model route settles at [DONE] by @futurepaul in #332
  • agents: one name and one picture, shown everywhere by @futurepaul in #326
  • Typed decisions for jobs and agents on the Clef family, media included by @futurepaul in #304
  • cli: version 0.14.0 by @futurepaul in #333

New Contributors

Full Changelog: v0.13.0...v0.14.0