Skip to content

fragment v0.15.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Oct 14:21
· 138 commits to master since this release
a21beaf

What's Changed

  • templates: doc — paragraph notes any fragment can take by @futurepaul in #339
  • docs: fix the inconsistencies found writing the platform explainer by @futurepaul in #338
  • Hermes v0.21.7: the first Hermes canary round (forward only) by @futurepaul in #346
  • The repo moved to finitecomputer/fragment by @futurepaul in #340
  • shell: three ways to ask at a time, and a die that deals three more by @futurepaul in #347
  • /admin is a 404 to anyone but an operator by @futurepaul in #348
  • The model route takes real model ids; Hermes names them (canary round) by @futurepaul in #350
  • Sign-in: Use another account ends the session AuthKit holds in the browser by @futurepaul in #351
  • hermes image: hermes by name in an agent's terminal by @futurepaul in #349
  • bridge: a listing that fails is asked again at once, not in 5 minutes by @futurepaul in #353
  • Docs match the code, and tests hold them to it by @futurepaul in #354
  • A deleted agent fragment leaves its computer; spent invites leave the owner's count by @futurepaul in #356
  • An agent's name has one source; the first chat is "Your first chat" by @futurepaul in #355
  • The registry is the seat's one writer; a computer, an invite and a re-made name catch up by @futurepaul in #359
  • Hermes keeps its tiers' prompt (family guidance off); the smoke reads commands run from execute_code by @futurepaul in #357
  • The shell reads each fact from its one source: guest, prices, model, agent colour, a chat's agent by @futurepaul in #358
  • Fix sign-out and account switching blocked by browser CSP by @alexlwn123 in #360
  • A sleep ends within its bounds, a hung save fails, and a dead snapshot wake starts again by @futurepaul in #363
  • The time kept for a failed save is free from the start of its try by @futurepaul in #364
  • Audit M1, M2, M3, M5: one read rule, the share token out of URLs, secrets bound to hosts, sync only at repo paths by @futurepaul in #366
  • Browser round trips finish only for whoever began them; a CLI key joins only the person who typed its code (audit H3, M6) by @futurepaul in #365
  • Content is data: one DOM-only markdown renderer, no HTML sinks, agents' own work (H2, M7) by @futurepaul in #368
  • Nobody joins an org without their own yes; a wipe cancels what the wiped would pay (audit H1, M4) by @futurepaul in #367
  • CI on standard actions: rust-cache for Rust's caches, paths-filter for the Docker lane by @futurepaul in #374
  • Ledger: preview cards keep their CDP client; quick actions cannot carry the page's report by @futurepaul in #375
  • devstack: termination signals through signal-hook by @futurepaul in #376
  • The multipart parser and the per-address CLI counter say why they are ours by @futurepaul in #377
  • fakes: their HTTP client is reqwest by @futurepaul in #378
  • AGENTS.md: choosing tools — prefer what exists, a build step when it pays, one concern per PR by @futurepaul in #373
  • Versioned schemas for the platform's Durable Objects, and a lock that guards them by @futurepaul in #383
  • Listed records: a channel names the kinds its members' list rows show by @futurepaul in #384
  • Shell: the agent's row says what it is doing, from its chats' listed records by @futurepaul in #385
  • ci: deploy on a green push, master's to the preview, production's to production by @futurepaul in #352
  • ci: a production push of a commit master proved deploys at once by @futurepaul in #386
  • Shell: say which email is signed in, with Use another account, wherever someone has no seat by @futurepaul in #388
  • Calls between releases: every Worker/DO call carries its release, refused before it acts (deploy skew) by @futurepaul in #387
  • The agent's page names its model by its id; its screen names it by its name by @futurepaul in #389
  • e2e: a hung backup's error may name a millisecond less than its bound by @futurepaul in #392
  • Image workflow: build the canary on a runner; copy the proven image into production at its digest by @futurepaul in #391
  • e2e shell-ui: the guest's switch to a seat waits on the rendered email, not a mouse's press by @futurepaul in #395
  • Scheduled records: a fragment's data schedules (and an agent's routine as one on itself) by @futurepaul in #390
  • e2e: a restart's awake is waited for, not read off its answer by @futurepaul in #397
  • e2e notes: the linked note is read once its embed is in and loaded by @futurepaul in #398
  • Notes viewer: an open note is drawn again when a note or picture it names comes or goes by @futurepaul in #399
  • No eval in runtime code: cargo xtask check refuses a string run as script by @futurepaul in #400
  • Chat page: one record it cannot draw never stops the chat drawing; the renderer's one-column table by @futurepaul in #402
  • Bind Pipes consent to the initiating browser and session by @alexlwn123 in #401
  • The shell reloads itself, at a safe moment, once the platform runs another release by @futurepaul in #403
  • xtask deploy: run wrangler deploy again for a failure a re-run answers by @futurepaul in #412
  • Chats keep their own drafts; the shell reloads for a new release only while hidden or at the next move by @futurepaul in #406
  • Refine Finite login page and theme transitions by @skylerwww in #393
  • Report exact Wasm size and remaining build budget by @alexlwn123 in #419
  • cell: one JSON answer after serializing, not a copy per type by @futurepaul in #434
  • Billing off sells nothing: no price, no Checkout, no trial for a guest by @futurepaul in #452
  • Settings: no Add another sign-in (/auth/link cut), Loading in the loaded layout by @futurepaul in #453
  • CD: read the deploy configs from finitecomputer/fragment-deploy, not DEPLOY_CONFIG by @futurepaul in #454
  • e2e shell-ui: a reload under way is seen from another page, not the one reloading by @futurepaul in #455
  • e2e: a guest's page is evaluated once its document is there; a command's record is waited for by @futurepaul in #456
  • Settings: Connect opens its window in the press, says when it is blocked by @futurepaul in #458
  • Ledger: take the configured price book whenever its contents differ, whatever its version by @futurepaul in #460
  • e2e chat: a message's record is waited for, not read once by @futurepaul in #465
  • e2e: a reload waits for the page to load, and is tried again if it never does by @futurepaul in #470
  • e2e chat: a viewport change is waited for until the chat fits it by @futurepaul in #472
  • Shell: its notice shows over settings and a chat, not in #frames (#436) by @futurepaul in #457
  • Settings: only the latest load renders (#441) by @futurepaul in #461
  • AI steps: gated by the cached standing, charged from the fragment's outbox by @futurepaul in #473
  • Operator keys: gated by the cached standing, charged after the provider answered by @futurepaul in #469
  • Model calls: gated by the cached standing, charged after their answers by @futurepaul in #468
  • Live sockets: one not open in ten seconds is closed and dialled again by @futurepaul in #476
  • cli tests: a host never reached is a port held refusing, not one let go by @futurepaul in #478
  • devstack: a node just written is run again, briefly, while its file is busy by @futurepaul in #479
  • Ledger: one cached gate a spend asks, failing open; writes and the e2e's paid calls read it by @futurepaul in #467
  • Settings: a pack's return that is not applied says so in plain words by @futurepaul in #480
  • Shell: a failed read of the computer is not "no computer" (#437) by @futurepaul in #459
  • Releases: an object that refuses a newer release's call restarts onto it by @futurepaul in #485
  • e2e chat: the held-socket check waits for the chat, not only its hello by @futurepaul in #489
  • e2e shell-ui: the first-run checks press Settings as its own click by @futurepaul in #490
  • Chat: the reader's place is kept by its message, not its node by @futurepaul in #491
  • Billing: a default-plan person in no org can buy the subscription from Settings by @alexlwn123 in #482
  • Settings: a failed Disconnect or Remove says so; a late answer stays out of a chat (#439) by @futurepaul in #462
  • Settings: a failed export read keeps its rows, with Try again; no reads behind a chat (#440) by @futurepaul in #463
  • Settings: a Copy the clipboard refuses says so, the prompt selected (#438) by @futurepaul in #464
  • Shell: a page whose scripts have not started says it is still loading by @futurepaul in #477
  • Billing: every failure says what happened and what to do, in plain words by @futurepaul in #481
  • Chat: a page whose script has not drawn it says it is still loading by @futurepaul in #492
  • docs: Google's consent shows its account chooser by @alexlwn123 in #487
  • Billing: the default plan's seat button says its failure by reason by @futurepaul in #494
  • Settings can disconnect a connection, revoking its grant by @alexlwn123 in #486
  • Settings names the account a connection is connected to by @alexlwn123 in #488
  • Billing: a trial's Checkout that never is gives back its place at once by @futurepaul in #484
  • Ledger: no holds, no reservations; a head that held some loads, its holds forgiven by @futurepaul in #474
  • Ledger: priced with the release's book; a ledger keeps none by @futurepaul in #475
  • Shell: its icon is Finite's mark (the favicon WorkOS's sign-in logo comes from), and iOS gets a home-screen icon by @futurepaul in #497
  • Finite's about page, privacy policy and terms at /about, /privacy and /terms (#496) by @futurepaul in #498
  • A provider's note, shown under its name in settings' Connections (#496) by @futurepaul in #499
  • Node 24.22.1: October 2026's security release (Brotli RCE, TLS hostname bypasses) by @futurepaul in #501
  • README: Fragment, the platform behind finite.chat, self-hostable on your own Cloudflare by @futurepaul in #500
  • Shell: the favicon is Finite's mark full-bleed (light/dark); the app icon keeps a dark square by @futurepaul in #503
  • models: an OpenRouter slot is priced at its config's ceiling, any model by @futurepaul in #507
  • Tell every agent that a file attached in chat is already on its computer, and how to upload it by @futurepaul in #510
  • A message sent while the agent waits on a question answers it: words, files or both, asked in words or on a card by @futurepaul in #508
  • An agent's reasoning level, picked beside its model in Settings; high by default by @futurepaul in #506
  • Terms: basic liability disclaimers by @futurepaul in #515
  • e2e: a run's id adds a random nonce, so two runs in one second never share a scratch by @futurepaul in #517
  • fix: a disconnect holds through an import whose outcome is unknown by @alexlwn123 in #512
  • computers: a restart answers with its start up (the exit report raced the stop) by @futurepaul in #518
  • xtask: the cell's Wasm names no path of the machine that built it by @futurepaul in #519
  • feat: a Google connection keeps whatever scopes the person allows (#445) by @alexlwn123 in #521
  • Chat on a phone: the composer one line high, just above the keyboard by @futurepaul in #544
  • An invite waits for its person's yes, in the shell's sidebar (decision 63) by @futurepaul in #536
  • Unify platform pages with onboarding card styles by @skylerwww in #516
  • Onboarding: the shell's first run on #516's onboarding card (stacks on #516) by @futurepaul in #531
  • Legal pages: about, privacy and terms as the design's sheet of paper (stacks on #531) by @futurepaul in #532
  • xtask: the cell's Wasm drops its function names, 15% of it by @futurepaul in #528
  • Computers: a stop that lost nothing tells nothing; the went-back notice, calmer by @futurepaul in #556
  • Computers: a keepalive the runtime no longer holds is closed; the bridge opens a cut one again by @futurepaul in #562
  • Chat: a step's icon says what it does; commentary has room below by @futurepaul in #565
  • A person's membership is their agents' (decision 64) by @futurepaul in #561
  • Sharing: inviting someone where the owner's agent is in says to trust them by @futurepaul in #566
  • CI: a master push of a tree a green run already tested skips the tests by @futurepaul in #559
  • CI: the e2e's builds keep our own crates; the stub image's layers are cached by @futurepaul in #558
  • e2e: use the framed share sheet once it has sized itself; check it at a short and a tall window by @futurepaul in #570
  • chat: Download saves a file through the page, so it works in the shell's frame by @futurepaul in #572
  • A frame session's page may frame its own pages: a chat's PDF shows in the shell by @futurepaul in #573
  • Managed skills: chat-attachments-finite, so an agent attaches a file in its chat by @futurepaul in #574
  • Hermes image: every agent is told it attaches a file in its chat with MEDIA: by @futurepaul in #575
  • Trials ask no card; one added before the end keeps the seat by @alexlwn123 in #576
  • feat: an agent reaches Google Slides through the Google connection by @alexlwn123 in #578
  • Add design-finite to the default managed skills by @AustinKelsay in #567
  • Add upstream Google Docs skill alongside connected Workspace by @AustinKelsay in #568
  • test: keep Sharing view clicks clear of sticky navigation by @AustinKelsay in #579
  • Add Google Slides skill alongside connected Workspace by @AustinKelsay in #577
  • A local fleet's code.storage, reached through a computer's egress: an agent's sync and deploy work locally by @AustinKelsay in #563
  • xtask dev --real-agent: our Hermes image and real models, and an operator key to start a person over by @AustinKelsay in #564
  • feat: a person may connect several Google accounts, each agent using the one picked for it (#446) by @alexlwn123 in #537
  • Models: a slot's own list price (Tinfoil's DeepSeek V4.1 Flash as the private tier's fallback, by config) by @futurepaul in #526
  • Models: vision falls back to a fallback that says it reads images (stacked on #526) by @futurepaul in #529
  • Models: a private slot's calls reach only private models (stacked on #529) by @futurepaul in #540
  • Share sheet: the agent warning on a chat only, less copy, a compact layout, faster to open by @futurepaul in #588
  • The cell's pages' CSS and platform-pages.js out of Rust, into the release's files (part of #569) by @futurepaul in #591
  • chat: an agent's steps as a quiet timeline, three lines while it works by @skylerwww in #580
  • Settings: the routes the deployment labels, Private (recommended) and Standard (stacked on #540) by @futurepaul in #586
  • Bridge: the model's words before a tool call are a reply, whole, before the step (image round) by @futurepaul in #584
  • Settings: the release at the bottom, its commit linked, when it was deployed by @futurepaul in #597
  • shell: a New chat button below the agent pill by @skylerwww in #581
  • Chat alerts held by the shell: a framed chat's bell no longer needs a tab of its own by @futurepaul in #585
  • Chat's microphone: delegated to the fragment's origin; a card before the browser asks by @skylerwww in #582
  • The dock, a person's own choice: PUT /api/fragments/{name}/dock (#587, item 2) by @futurepaul in #595
  • Kinds: a client reads a kind it does not know as other (a round ahead of #587's new kinds) by @futurepaul in #593
  • dev: rebuild the cell in seconds for a change to the shell or a template by @skylerwww in #596
  • e2e: an app an agent made, opened in a browser as its owner (agent-app; hermes' twin) by @futurepaul in #547
  • Transcription: a fast failure for want of capacity is asked once more by @futurepaul in #520
  • e2e: the transcribe section sends each browser's own memo to Whisper by @futurepaul in #524
  • Transcription: Whisper hears a memo through its voice-activity filter by @futurepaul in #522
  • Deploy: every pinned image ready on Cloudflare's network before anything changes (deploy safety 1 of 4) by @futurepaul in #602
  • Image: a push or a copy waits for its image to be ready on Cloudflare's network (deploy safety 2 of 4; stacked on #602) by @futurepaul in #603
  • Health: /healthz/objects asks every object class whether it runs this release (deploy safety 3 of 4; stacked on #602) by @futurepaul in #604
  • Deploy: finished, verified at every object class, or rolled back; never green over a mix (deploy safety 4 of 4; stacked on #604) by @futurepaul in #605
  • A page's refused socket is opened and closed for good (4003), not refused by its status by @futurepaul in #606
  • SimpleX 1/5: the link's core, proven against simplex-chat v7.0.3 (draft) by @futurepaul in #523
  • SimpleX 2/5: the bridge runs each linked agent's core; the image carries it (draft) by @futurepaul in #546
  • SimpleX 3/5: messages both ways through the agent's own chat (relayed records, via SimpleX) (draft) by @futurepaul in #548
  • SimpleX 4/5: the link page, its QR code, and Settings' entry (draft) by @futurepaul in #549
  • SimpleX 5/5: the real Hermes image end to end in the Docker lane (draft) by @futurepaul in #550
  • SimpleX: the signed link start and the door key (Paul's design) by @futurepaul in #560
  • SimpleX: Settings offer it only on a computer whose image does it by @futurepaul in #608
  • SimpleX: reach SMP servers on 5223, and say when a file cannot arrive by @futurepaul in #610
  • A seat let sleep says so: Settings' SimpleX tells how to take it back, operators see it by @futurepaul in #609
  • SimpleX: files through an XFTP relay in the cell (Worker connect()) by @futurepaul in #611
  • images CI: the Docker lane on ubuntu-24.04 (Docker 28) by @futurepaul in #613
  • SimpleX files: delete only what was given up on, cancel until taken; Settings follow the seat by @futurepaul in #612
  • SimpleX: the agent knows a message came from SimpleX, and can't run SimpleX itself by @futurepaul in #615
  • SimpleX: a reply's files go to the owner's app, a voice message as one by @futurepaul in #616
  • An agent's home: where it reaches its person, set in Settings, marked in the sidebar (SimpleX 1 of 2) by @futurepaul in #619
  • SimpleX is a chat of its own: everything said there reaches the phone; routines go home (SimpleX 2 of 2; stacked on #616 and #619) by @futurepaul in #620
  • SimpleX home, after review: Settings paint on mount; a routine waits for its chat by @futurepaul in #624
  • SimpleX shows the agent's name now, and follows a rename by @futurepaul in #628
  • An agent's name: one source, read where it is shown, and no copy by @futurepaul in #630
  • An agent is told another agent's name, never "someone" by @futurepaul in #631
  • A routine with nothing to tell says nothing by @futurepaul in #633
  • Cards: regenerate (POST) or upload (PUT) a preview card (part of #587) by @futurepaul in #594
  • Icons: a fragment's icon, made from drawings its editors pick, or uploaded (#587, 1 of 3) by @futurepaul in #598
  • Icons: a fragment's pages take its icon as their favicon (#587, 3 of 3; stacked on #598) by @futurepaul in #599
  • Chat: an image attachment's box hugs its picture (no blank band) by @futurepaul in #641
  • Settings: every section and nav item stays reachable by @futurepaul in #642
  • Shell: an app's own icon in the dock, and Icon… to make, pick, upload or remove one (#587, 2 of 3; stacked on #598) by @futurepaul in #600
  • Let operators lower a trial code's places, never below those taken by @alexlwn123 in #644
  • Launcher: its own launcher.js; Enter goes straight to the new chat, files, a growing input (supersedes #592) by @futurepaul in #637
  • The Apps page: each app's dock, card, icon and who has access; sharing leaves Settings (#587; stacked on #594, #599, #600) by @futurepaul in #640
  • CI: rebalance the overloaded E2E shard by @futurepaul in #651
  • SimpleX: stop sending restart announcements by @futurepaul in #646
  • images/hermes: the browser and Node trust the interception CA by @futurepaul in #533
  • Models: max passes the route as asked (Fast and Deep, step 3) by @futurepaul in #638
  • An agent's page shows its job as its computer left it: main, not live by @futurepaul in #635
  • Models: each tier names its route's fallback and vision, so Standard falls back to Cloudflare (stacked on #586) by @futurepaul in #589
  • hermes-boot: a tier agent's stall falls back to its route's fallback (image; stacked on #589) by @futurepaul in #590
  • Use regular Chromium for Hermes desktop browsing by @futurepaul in #648
  • SimpleX: preserve encryption negotiations across retries and restarts by @futurepaul in #645
  • Show Updating while shell reads wait for a deploy by @futurepaul in #655
  • Improve Apps with inline editing, public addresses and progress by @futurepaul in #649
  • Let agents name apps, generate icons, refresh previews and claim addresses by @futurepaul in #650
  • A rename by its owner says the new name in the agent's job too by @futurepaul in #636
  • Models: mark refused signing preflight as not dispatched by @futurepaul in #668
  • Hermes: wait for confirmed model preflight deployment refusals by @futurepaul in #674
  • ci: prove merge queue trees before they reach master by @futurepaul in #667
  • ci: make preview follow master’s computer image automatically by @futurepaul in #669
  • Show an updating page for navigations during deploys by @futurepaul in #666
  • Models: define Fast and Deep slots per tier by @futurepaul in #653
  • Keep computers awake while delegated children run by @futurepaul in #654
  • ci: fix preview image lookup without listing registry tags by @futurepaul in #676
  • images: exclude build trace context from Hermes env flattening by @futurepaul in #678
  • Hermes: run native delegates on each tier’s Deep mode by @futurepaul in #677
  • Bridge: deliver files from background delegates by @futurepaul in #679
  • Let BYO agents pick Fast and Deep in Settings by @futurepaul in #680
  • Give image-capable Fast and Deep models pixels directly by @futurepaul in #683
  • Continue hosted sweeps after a person’s fragment list fails by @futurepaul in #675
  • chore: cli version 0.15.0, so the next release matches production's guide by @alexlwn123 in #682

New Contributors

Full Changelog: v0.14.1...v0.15.0