What shipped, and when.
Every change, newest first, with screenshots. Tap one to see it full size. Builds groups the same work by TestFlight build, and the roadmap has the phases and what comes next.
Log
- Oct 30, 2026
Week of Oct 26: build 591, then Beats waits on a test
The quiet stretch ended. Build 591 reached TestFlight on Oct 25, the first since Oct 7: ask how something works and the answer plays as a film the phone makes, not a deck of slides, and coach agents got tools that work as intended (the thing to tap sits on the answer, a drawer pick lands on the agent's stage). On the web, yuicss became the one stylesheet for how Yui looks, the first step of YL screens. Then Beats started, the dialogue stage where the voice talks, the screen pins a few anchors and you can cut in: step one wrote three conversations out beat by beat, step two cut any agent reply into beats. Next: the dialogue prototype on the canvas and the spec words for it. The honest part: both are built but not live. The site's pre-push check runs a canvas speed test that goes red under load, not on real slowdowns, so it blocks every push of that work, and the call on how to fix the gate has waited since Oct 26. Since then only the board sync and social drafts moved. - Oct 25, 2026
Beats, step two: any reply cut into beats
The second story of Beats (YUI-349). site/lib/yl/beats.mjs takes a reply as agents send it today and gives back its beats: the line the voice speaks, the anchor it pins, the picture and the patches that play with it, and the waypoints where the flow stops. Every agent gets beats with no change: a sentence is a spoken line and a short second one rides along, a Label: value line or a short say is an anchor, a paragraph pins its first clause, a deck page's title is an anchor. Questions wait where the agent put them, not at the end; a plan is still one form. An agent that wants control marks anchors itself, and then only its marks pin. Follow-ups carry ids, parts of the picture and anchors forward, so an anchor is never pinned twice and a later question can be drawn into a part from an earlier reply. Forty conformance vectors pin it (spec/conformance/beats.json), and a test runs it on the three Beats scripts, which come out beat for beat, and on twenty samples the site already draws. Try it on the builder page. Next: the prototype that plays beats out loud (DLG-3). - Oct 25, 2026
Beats, step one: three conversations written as beats
The first story of Beats, the dialogue stage (YUI-349, plan in docs/plans/dialogue-stage.md). Before any renderer, the target is written down: three exchanges as Yui Lines, each beat one spoken line plus what it changes on screen (an anchor, the picture, a patch). Each has one interruption (the person talks over beat 2 or 3, the voice stops, the next reply carries on with the anchors still up) and one waypoint (a question that waits; in the heart and the launch the options are parts of the picture, so you can tap the left side or say "the guide" while touching its row). A clock beside each script gives every beat its seconds at the on-device voice's pace and every person turn the exact line the app sends back. The canvas spec test now reads all three: the lines parse, anchors stay under eight words and are never resent, the pace and first-word latency are plausible, and the interruption and answer lines match the plan character for character. The prototype that plays them (DLG-3) and the beat builder (DLG-2) come next. - Oct 24, 2026
yuicss: how Yui looks, as one stylesheet
The first step of YL screens (YUI-341). yuicss is the one source of how Yui looks: tokens.json compiled to CSS variables, every element finished with no class (headings, text, buttons, inputs, lists, tables, folds, bars), a Tailwind-named set of utilities for the one thing that is different, and every component with Yui's defaults, including all the presets as parts you can place anywhere in a screen: timer, chart, stat, list, map, sketch, shapes, math, calc, gallery, compare, game, timeline, pages. An agent look (accent, paper, radius, font, weight, motion) becomes the variables through the same contrast guard the app uses, with an accent ramp and good, warn and bad colors derived and checked: all 28 looks pass, light and dark. The gallery at yuigui.com/yuicss draws all of it in three agent looks, light and dark, each frame a shadow root with exactly what the app's web view will set. It is the visual contract the next steps (the screen renderer and the app's ScreenStage) are checked against. The site build fails when the stylesheet is stale or a look fails the guard. - Oct 23, 2026
Week of Oct 19: a second quiet week, one call still open
Nothing shipped this week. No TestFlight build, no app commits since Oct 8, no new pages on the site. What is blocking is the same call as last week: the living canvas has been live in the web playground since Oct 7, and the question on the board is whether it is ready to move into the phone, or what to change first. Until that is answered the app holds still, because building the canvas into the app before it is right means building it twice. Next: that call, then the canvas comes to the phone, starting with timers and workout sets. The honest part: two weeks waiting on one decision is the slowest stretch since work started, and the public board stopped syncing on Oct 16, so it is a week behind. That gets fixed first. Nothing to see this week, so no screenshots. - Oct 16, 2026
Week of Oct 12: a quiet week, nothing shipped
Nothing shipped this week. No new TestFlight build, no new pages on the site, and no app commits since Oct 8. What is blocking: one call. On Oct 7 the living canvas went live in the web playground with a heart film you can scrub, tap and ask about, and the question on the board is whether it feels new enough to build into the phone, or what to change first. The canvas does not move into the app until that call is made, so this week the app held still. Next: that call, then the canvas comes to the phone, starting with timers and workout sets. The honest part: the canvas still runs on canned replies, so no real agent drives it yet, and a week waiting on one decision is a week nothing else moved. Nothing to see this week, so no screenshots. A quiet week still gets a line here: building in public means the slow weeks show too. - Oct 9, 2026
Week of Oct 5: films on the phone, then one living canvas
Three releases went to TestFlight this week. Yui 0.6.3 (build 522) put a mic on every field you can type in. Yui 0.6.4 made decks fill the screen and morph from page to page, and Home went back to a calm chat. Yui 0.6.5 (build 576, Oct 7) made films talk. Films are the big new thing: ask how something works and the agent answers with a drawing that moves, full screen, on the phone and on the web, first frame in about six seconds. Small models running on a laptop now draw screens and films too. Then, on Oct 7, Chris set a bigger goal: not app chrome with content inside it, but one living canvas where every mark the agent draws is a live object. Since then the web playground has grown that canvas step by step. Tap a part and it answers. Hold it and only that part redraws. Drag it and the agent sees where you put it. Talk while you touch. Back undoes. Charts, lists, buttons, maps, math, pictures and music all draw as touchable marks, reach by keyboard and screen reader, and hold 60 frames a second on a phone-sized screen. Next: timers and workout sets on the canvas, then Chris's call on the heart demo, which decides when the canvas moves into the app. The honest part: the canvas is web only and runs on canned replies, so no real agent drives it yet. And about ten tries to make films start faster or look better were measured, missed and reverted. Each one is written up, with its numbers, on this page. - Oct 8, 2026
A Thought: music you can touch
The Thought music-you-can-touch reports YUI-339 with what landed: a loop whose rows stroke in under kit-word names with a playhead on the canvas clock and every cell a tap-to-toggle mark that undoes with Back, a keyboard drawn in its key with out-of-scale keys locked, and chord buttons that strum and redraw in a new key on the clock. It carries the real frame numbers from headless Chrome at 390x844 (loop play with 8 cell taps and Back 631 frames, 16.7 ms p95; chords 8 strums 224 frames, 16.7 ms p95) and says plainly it is web only with canned replies. - Oct 8, 2026
A Thought: pictures you can touch
The Thought pictures-you-can-touch reports YUI-338 with what landed: an image that strokes its frame in, fades up and writes its caption on, a gallery strip with pick, and a compare with a draggable divider that undoes with Back. Every picture and the divider is a named mark you can tap, hold and reach by keyboard and screen reader. It carries the real frame numbers from headless Chrome at 390x844 (divider drag and Back 336 frames, 16.7 ms p95, worst frame 50 ms at 4x slower CPU) and says plainly it is web only with canned replies. - Oct 8, 2026
Yui on the web
10 changes in one push.
- Oct 8, 2026
Pictures you can touch
The living canvas now draws media answers. An image strokes its frame in, fades the picture up inside it and writes the caption on, with any rings and arrows drawn on top as their own marks. A gallery lays its pictures out as a strip; with pick on, a tap picks one and sends a mark line (canvas pick mark=gallery.2). A compare draws before and after with a divider you drag: the picture eases to where it lands on the canvas clock, no jump cut, the drop sends one line, and Back steps it undone. Every picture and the divider is a mark named by its caption: a tap says what it is, a hold redraws it, the keyboard and a screen reader reach each one, and the divider steps with the arrow keys. Headless Chrome at 390x844: the compare divider drag with Back is 336 frames at 16.7 ms p95 (worst frame 50 ms with the CPU four times slower). Web only, canned replies, pictures already on the site. - Oct 8, 2026
Music you can touch
The living canvas now draws music answers. A loop strokes its rows in under their kit-word names (kick, snare, clap, hat), the hits pop in, and a playhead sweeps the columns on the canvas clock while it plays. Every cell is a mark: a tap toggles the hit, the beat redraws in place (canvas loop mark=loop.1.2 p=xx..x.x.|...) and Back steps it undone. Keys draws a keyboard in its key with the out-of-scale keys drawn locked; a tap plays a key and sends canvas play. Chords draws big chord buttons; a tap strums, and ~chords key=D redraws them in the new key on the clock, no jump cut. Every part is a named mark: a tap says what it is, a hold redraws it, and the keyboard and screen reader reach every cell, key and chord. Sound is the playground's own Web Audio engine, no sample files, and nothing starts before the first tap. Frames from headless Chrome at 390x844: loop play with 8 cell taps and Back 631 frames, 16.7 ms p95, worst frame 16.8 ms; chords 8 strums 224 frames, 16.7 ms p95. Web only, canned replies, no model calls. - Oct 8, 2026
Math you can touch
The living canvas now draws lesson answers. A math answer writes in stroke by stroke, one term after another in reading order, with the TeX renderer the site already ships. A calc draws its formula, the result, a chart and one slider for each variable. Every term and slider is a mark named by its symbol: a tap says what it means, a hold redraws it, the keyboard and a screen reader reach each one, and Back steps a slider move undone. Dragging a slider sends one line (canvas drag mark=calc.r value=0.1), and the result and the chart ease to the new value on the same clock, no jump cut. Headless Chrome at 390x844: math 460 frames and calc 353 frames at 16.7 ms p95, the slider drag with Back 334 frames at 16.7 ms (worst frame 33 ms with the CPU four times slower). Web only, canned replies. - Oct 8, 2026
Maps you can touch
A map answer now draws on the living canvas. A light world outline writes in first, then each area fills, each pin drops and each route draws along its path, in line order, on the same clock as every other answer. Pulse, dash, tone and caption work as in the spec. Every area, pin and route is a mark named by its label (map:n1:pin:karakorum): a tap lights it and names it, a hold asks the agent about just that part, the keyboard and a screen reader reach every one, and Back undoes a change. Drag a pin and let go: its row takes the new latitude and longitude, a route that stops at it follows, and the canvas says where it landed (Karakorum, now in Mongolia). A hold on the area or a pin redraws only that part from a canned reply. The outline is the Natural Earth data the site already ships for the map preset, no tiles and no network. Two new samples: the Mongol Empire (?yl=map) and a three-stop trip (?yl=route), and a map beside a chart in a mixed answer (?yl=mix-map). The map events are written into spec/MOTION.md and checked by test-spec; test-yl, test-keyboard and test-perf cover the map marks. Frame times at 390x844, played start to end: map p95 16.8 ms and max 16.8 ms at normal speed and at four times slower; route 16.8 and 16.8; a map beside a chart 16.8 and 16.8; hold, drag and Back on the map p95 16.8 ms, worst frame 33 ms (100 ms for one frame of the first hold on the slowed CPU, which the budget does not gate). A web prototype with canned replies. - Oct 8, 2026
The canvas stays smooth on a phone
New test-perf plays the heart film, bars, steps and a mixed answer start to end in headless Chrome at 390x844, then runs the hold, drag, Back sequence, and records every frame. The budget at normal speed: 95 in 100 frames under 20 ms and none over 50 ms. With the CPU slowed four times, as on an older phone: 95 in 100 under 33 ms. Every film already played at one frame per 16.7 ms. The misses were all in the redraw after a hold or a Back: comparing the old and new picture read two full canvases and ran a pixel loop in one frame, which took 67 ms on the slowed CPU. It now takes a frame for each step and skips pixels that did not change. The longest frame on the slowed CPU went from 67 to 33 ms in the bars sequence and from 50 to 33 ms in the steps sequence. The test runs in scripts/check.sh and says so when Chrome is missing instead of passing. The heart film, Design A and every event line are unchanged. - Oct 8, 2026
Step back on the canvas
Every hold redraw, drag answer and say+touch patch on the living canvas is now one step in a history. Back (a two-finger tap, the Back mark in the corner, or Cmd/Ctrl+Z) returns to the picture before the last step and redraws only the marks that step changed, on the same clock; Redo (the forward mark, or Shift+Cmd/Ctrl+Z) goes forward the same way. Stepping back sends the agent one line so it knows the picture changed under it: [yui] bars canvas undo step=2 marks=chart:n1:s0:3. The Back mark is named, and each step is announced in plain words: Back to before the bar moved. The line is written into spec/MOTION.md 0b with its example and checked by test-spec; the new test-undo (hold, drag, say+touch, undo three times, redo once, and the same in a real browser) runs in scripts/check.sh. The heart film, Design A and every existing event are unchanged. A web prototype with canned replies. - Oct 8, 2026
The canvas events, written into the spec
spec/MOTION.md section 0b now has a Yui Lines on the canvas part: which presets draw as marks, how a mark gets its id and name, and every event line the canvas sends (tap, hold, drag with where it landed, say with touched=, the answer taps), each with an example copied from the code and what the agent sends back: a patch of only the marks it names. The new test, site/public/playground/canvas/test-spec.mjs, builds all 13 example lines from the canvas modules and fails if one differs or if the page sends a line the spec lacks. It runs in scripts/check.sh. The matching one-rule guide note waits in CHANNEL.md until a build sends these lines, so the live guide did not change. Canvas behaviour is untouched. - Oct 8, 2026
Talk while touching a part
The last touch on the north-star list: talking stays primary. Touch a mark, then press and hold the mic in the bottom bar, beside pause and mute. The mark stays highlighted as touched, your words show live on the canvas, and on release the canvas shows in place the one line the app would send: [yui] bars yl say "why is it low" touched=Protein Thu: 126 g. With nothing touched it says [email protected], the moment on the clock. The words come from the browser's own speech recognition. Where there is none (Firefox, tests) a small typed field opens in the bar in place of the mic, and the same line is built from the keyboard; a quick tap on the mic does the same. Never a sheet or a cover. By keyboard, Alt+Enter on a focused mark opens the field with that mark touched, its name says what it is about (Say something about Bodyweight squats), Escape closes it and focus returns to the mark. Three samples carry canned answers matched on the touched mark plus a word. Open /playground/canvas.html?yl=bars, tap the Thursday bar and say why: the agent writes a note on that bar. Open ?yl=steps, tap Bodyweight squats and say later: the row moves to the end and is struck soft. Open ?yl=parts, tap Build and say split: it redraws as two parts. A wrong mark or no matching word shows the line and changes nothing. Scrub after an answer replays it on the clock, Reset puts the first drawing back. 13 new checks (typed path builds the right line, @t when nothing is touched, each answer touches only the marks it names, no match changes nothing, scrub stable, Reset restores, Alt+Enter path, the mic hold with a stand-in recogniser): test-yl 0 bad of 100, test-films and test-keyboard still 42 of 42. The heart film, the films, Design A, tap, hold and drag are untouched. A web prototype, no model calls. - Oct 8, 2026
Drag a part, it answers
Until now a drag anywhere scrubbed time. Now a drag that starts on a movable mark carries that mark: press and move 8px, or press a moment and nudge. A drag on empty canvas still scrubs. The movable marks are list rows, the Next rows of a timeline (the queue), the bars of a bar chart (a bar and its goal bar travel together) and the shapes of a drawing that were placed with at=. The mark lifts off the canvas and follows the finger over a dashed slot, then settles with a short ease while the neighbours slide to their new places. In place, under the picture, the canvas shows the line it would send: [yui] queue yl move Ship the build to=3, or to=6.1,3.8 for a shape. Four samples carry canned answers. Open /playground/canvas.html?yl=queue and drag Ship the build up: the agent re-dates the rows. Open ?yl=parts and drag Build next to Test: the agent draws an arrow between them. Open ?yl=steps and drag Easy jog to the top: the agent marks it Now. Open ?yl=bars and drag Thursday to the front: the goal bar goes with it and the chart is retitled. A drop with no canned answer keeps its new spot and says nothing. A move is a change to the answer's own Yui Lines text, so scrub and replay play the answer with the move on the clock, and Reset puts the first drawing back. By keyboard, a focused part moves with Alt+Arrow, its name says where it landed (Calf raises 4x15, moved to 3 of 4) and focus stays on it. Tap and hold behave as before: a wobble under 8px is still a tap, a press held still still asks. test-yl.mjs now has 17 more checks (drag on a mark moves it, drag on empty scrubs, a drop sends the move line, each canned answer touches only the marks it names, scrub after a move is stable, Reset restores, Alt+Arrow moves and renames): 0 bad of 87. test-films.mjs and test-keyboard.mjs still pass 42 of 42. The heart film, the films, Design A and every earlier sample are untouched. A web prototype, no model calls. - Oct 8, 2026
Hold a part, it redraws
Until now a hold only sent the ask line and showed it. Now the answer lands on the canvas. Open /playground/canvas.html?yl=bars and hold the Thursday protein bar: a short pulse sits on that bar, the old bar wipes out, the new one writes in at 138 g, and the line says what changed. Nothing else on the drawing moves. The same works on a list row (today: Calf raises becomes 4x12), a stat (stat: the number and its spark), a sketch row (ui: Help becomes Support), a shape (venn: the Pays circle changes colour) and two parts of a mixed answer (mix-protein: the Friday bar and the stat). In mix-dinner the reply adds a table row, so the table grows and the slider under it eases down to make room; nothing above moves. A hold on a mark with no canned reply shows a quiet 'no answer in the demo' note on that mark and nothing else. The replies are small Yui Lines patches the way the guide writes them (~chart y=..., ~stat 178.4lb Weight delta=-2.8, ~list ..., or a block that replaces one line), kept in canvas/yl-replies.json. After a patch the patched film replaces the first one, so scrub and replay play the answer as patched, and the keyboard walks the same marks under their new names. Reset puts the first drawing back. How it works: the old picture and the patched one are drawn at the same moment, the pixels that differ are the part, and only that box is rewritten. test-yl.mjs now holds each reply and checks that only that part changed (every other mark in the same place), the new name is on the keyboard list in the same tab place, scrub to t=0 and the end is stable after the patch, Reset restores the original, the no-reply note, and the table-grows geometry: 0 bad of 70; test-films.mjs and test-keyboard.mjs still pass 42 of 42. The heart film, the films, Design A and every earlier sample are untouched. A web prototype, no model calls.
- Oct 8, 2026
A Thought: math you can touch
The Thought math-you-can-touch reports YUI-337 with what landed: a formula that writes in stroke by stroke, each term a named mark you can tap, hold, reach by keyboard and screen reader, and a calc with one slider per variable whose drag redraws the result and chart on the canvas clock and undoes with Back. It carries the real frame numbers from headless Chrome at 390x844 (math 460 frames, calc 353, slider drag and Back 334, all 16.7 ms p95, worst slider frame 33 ms at 4x slower CPU) and says plainly it is web only with canned replies. - Oct 8, 2026
A Thought: maps you can touch
The Thought maps-you-can-touch reports YUI-336 with what landed: a world outline, areas that fill, pins that drop and routes that trace, each part a named mark (map:n1:pin:karakorum) you can tap, hold, drag, reach by keyboard and undo with Back. It carries the real frame numbers from headless Chrome at 390x844 (map, route and map beside a chart at 16.8 ms, hold, drag and Back worst frame 33 ms) and says plainly it is web only with canned replies, and that one first hold took a 100 ms frame on the slowed CPU. - Oct 8, 2026
A Thought: the canvas stays smooth on a phone
The Thought the-canvas-stays-smooth reports YUI-335 with its real numbers: headless Chrome at 390x844, the heart film, bars, steps and a mixed answer all at 16.7 ms a frame, and the hold, drag, Back redraw cut from a 67 ms longest frame to 33 ms on a 4x slower CPU (bars) and 50 to 33 ms (steps). Says plainly it is a headless browser, web only, and that one normal-speed frame in the bars sequence rose to 33 ms, inside the budget. - Oct 8, 2026
A Thought: change your mind on the canvas
The Thought the-canvas-steps-back reports YUI-334 with what landed: every hold redraw, drag answer and say+touch patch is one step; Back is a two-finger tap, the Back mark or Cmd/Ctrl+Z, Redo the forward mark or Shift+Cmd/Ctrl+Z; the agent gets one line, [yui] bars canvas undo step=2 marks=chart:n1:s0:3; the line is in the motion spec and a new test runs it in node and a real browser inside the site checks. Says plainly it is web only with canned replies. - Oct 8, 2026
A Thought: the canvas rules, written down
The Thought canvas-rules-written-down reports YUI-333 with what landed: a new section in the motion spec, 13 example event lines copied from the code, and a test that builds each line and fails on drift, wired into the site checks, which pass. Any agent or client can read exactly what the canvas sends and what to send back. Says plainly it is a web prototype; the phone version waits on Chris's call. - Oct 8, 2026
A Thought: say it while you touch it
The Thought talk-and-touch reports YUI-332 with its real proof: 3 samples with a canned answer, test-yl 0 bad of 100 (13 new say checks), films 42/42, keyboard 42/42. You point and speak, no describing where, so this one finally means something. Says plainly it is a web prototype and the real mic is untested on a phone; the phone version waits on Chris's call. - Oct 8, 2026
A Thought: drag a part and the agent answers
The Thought drag-and-answer reports YUI-331 with its real proof: 4 samples with a canned answer, test-yl 0 bad of 87 (17 new move checks), films 42/42, keyboard 42/42. Moving a thing is an answer too: you reorder a queue by hand and the agent re-dates it, no form, no typing. Says plainly it is a web prototype; the phone version waits on Chris's call. - Oct 8, 2026
A Thought: point at a part and it redraws
The Thought point-and-redraw reports YUI-330 with its real proof: 7 samples with a canned reply, test-yl 0 bad of 70, films 42/42, keyboard 42/42. You ask about one bar or one row and only that part changes; the rest of the answer stays put, like pointing at a whiteboard. Says plainly it is a web prototype; the phone version waits on Chris's call. - Oct 7, 2026
A Thought: one answer, one drawing
The Thought one-answer-one-drawing reports YUI-329 with what landed: 6 mixed samples, the Yui Lines test covering 36 samples, films 42/42, keyboard 42/42. An agent answer stops being a stack of separate widgets; it is one picture that draws itself, that you can scrub and touch anywhere. Says plainly it is a web prototype; the phone version waits on Chris's call. - Oct 7, 2026
Yui on the web
28 changes in one push.
- Oct 7, 2026
One answer, one drawing
A real agent answer is rarely one kind of thing. Open /playground/canvas.html?yl=mix-protein: a line of text, a stat, a chart and a question, laid out top to bottom and drawn one after the other on one clock. Nothing starts until the part above it has finished writing in. The one exception is a question written above the picture it is about: that picture draws first (mix-first). Every part keeps what its own card gave it: tap a bar and it names itself, tick a list row (mix-settings sends [yui] mix-settings yl check Test on a phone), a choose or an ask answers and locks (mix-ship sends [yui] notes ask answer=Send), a pick sends its set (mix-hour), a slider knob drags without scrubbing (mix-dinner). Hold any mark and it sends [yui] <sample> yl ask <mark>. Scrub runs the whole answer back and forward, and the keyboard walks the marks in the order they were drawn. The whole reply is parsed with the same site/lib/yl parser, so a block an agent writes as it is draws as a mix; a single kind of picture, with or without a choose under it, still plays exactly as before. Six samples are in the Lines tab: mix-protein (line, stat, chart, ask), mix-settings (line, sketch, ticking list), mix-ship (timeline, card, ask), mix-hour (line, shapes, pick), mix-first (question first, picture first) and mix-dinner (line, table, slider). test-yl.mjs now covers 36 samples with real pointer and key events, including one clock, line order, the question-first exception, each part's own taps inside a mix, keyboard order equals draw order, and scrub to t=0 and the end; test-films.mjs and test-keyboard.mjs still pass 42 of 42. The heart film, the films, Design A and every earlier sample are untouched. A web prototype, no model calls. - Oct 7, 2026
Lists, tables and timelines on the canvas, touchable
The living canvas now draws the everyday answers. Open /playground/canvas.html?yl=today (or steps, macros, week, card, release, dinner); they sit in the Lines tab after the charts. A list writes its rows in one after another, a +check list draws its boxes and a tap ticks the row in place and sends [yui] today yl check Squat 5x5. A table draws its rules first, then the header and the cells row by row. A timeline draws its spine, ticks the done steps, rings the Now step and lets it pulse, and the next steps stay hollow; on the release sample a choose is drawn into the picture under it. A card draws its frame, title, body, small print and button. Every row, cell, check and step is a hit target on the same clock as a film and is named by its words, like 'Squat 5x5': tap pauses, rings it and says it, hold sends [yui] <sample> yl ask <mark> in place, drag scrubs, and each one is a named hidden button for the keyboard, in order (Tab, Enter, Space, arrows, as in YUI-324). Parsing uses the same site/lib/yl copy as YUI-325 and 326, so any list, table, timeline or card line an agent writes draws. The heart film, the films, Design A and the earlier samples are untouched. test-yl.mjs now covers 24 samples (every one draws, every mark is hit-testable, named and keyboard-reachable, a check ticks and unticks, table rules draw before cells, Now pulses, scrub to t=0 and the end is stable); test-films.mjs and test-keyboard.mjs still pass 42 of 42. A web prototype, no model calls. - Oct 7, 2026
Charts and numbers on the canvas, touchable
The living canvas now draws numbers. Open /playground/canvas.html?yl=weight (or bars, area, donut, pie, scatter, stat, pair); they sit in the Lines tab next to the YUI-325 drawings. A chart draws its axes first, then the line traces on, the bars rise one after another, the slices sweep round in order; a stat counts its number up, shows the delta, and draws its spark. Every data mark is a hit target on the same clock as a film and is named by its value, like 'Wed: 178.5': tap pauses, rings it and says it, hold sends [yui] <sample> yl ask <mark> in place, drag scrubs, and each data point is one named hidden button for the keyboard, in order (Tab, Enter, Shift-Enter, Space, arrows, as in YUI-324). On the pair sample a stat sits over a chart with a choose drawn into the picture; a tap on an option sends [yui] plan choose choice=<label>. Parsing uses the same site/lib/yl copy as YUI-325, so any chart or stat line an agent writes draws. The heart film, the films, Design A and the YUI-325 samples are untouched. test-yl.mjs now covers 17 samples (every one draws, every mark is hit-testable and keyboard-reachable with a value in its name, scrub to t=0 and the end is stable); test-films.mjs and test-keyboard.mjs still pass 42 of 42. A web prototype, no model calls. - Oct 7, 2026
Drawings on the canvas, touchable
The canvas now draws the still answers agents send most, not only films. Open /playground/canvas.html?yl=venn (or chain, loop, flow, pick, ui, words, soul, form); the dashed Lines tab in the picker flips between films and these samples. A shapes answer draws in line order (strokes trace on, +grow pops, +pulse breathes), a sketch draws its frame, then its rows one by one, strikes the +x rows, washes the +hi rows, and plays the before into the after. Every shape, connector, row and title is a hit target on the same clock as a film: drag scrubs, tap pauses, rings and names the mark, hold sends [yui] <sample> yl ask <mark> in place, and the YUI-324 keyboard model (Tab, Enter, Shift-Enter, Space, arrows) works unchanged. A choose under a drawing is part of the picture: on the soul sample the Apply and Keep options are pills inside the sketch window, and on the pick sample the three circles are the choice, ringed and tappable, with no form below. A tap on one sends [yui] <id> choose choice=<label>. Parsing runs in the browser with site/lib/yl copied next to the canvas (scripts/sync-canvas-yl.mjs, with a drift check). The heart film, Design A chrome and the 41 other films are untouched. Proof: test-yl.mjs loads all 9 samples, checks every mark is hit-testable and keyboard-reachable in some frame, hold and tap lines, the drawn-in choice answer, t=0 and the end frame stable, and nothing draws at once (the middle frame differs from the end). test-films.mjs still passes 42 of 42 and test-keyboard.mjs 42 of 42. No live model calls. - Oct 7, 2026
The canvas works by keyboard and screen reader
The living canvas no longer needs a finger. Every part a film draws has a hidden real button, in film order, named with its text or shape label: that name is what VoiceOver reads, and it becomes accessibilityLabel in the native port. Tab and Shift-Tab walk them. Enter = tap (rings and names the part), Shift-Enter or a long Enter (half a second) = hold, which sends the same [yui] <film> motion ask <part> event, Enter on the canvas itself = play or pause, long Enter there = the @t ask. Space plays or pauses, Left and Right scrub 2 seconds (Shift: 10). An aqua ring with an ink edge draws on the canvas round the focused part. The film picker is a real tablist: one selected tab, one tab stop, arrows, Home and End move. The keys send the exact messages the touch sends, so the host needed no new handler; the heart film and Design A are unchanged. Proof: test-keyboard.mjs loads all 42 films (heart plus 41 runs), at 14 frames each checks the hidden list matches the touch targets one for one, every one named and focusable (2308 part checks), Tabs through the biggest frame of each film (378 parts walked, 42 of 42 films have parts), and for each film compares Enter with a touch tap, Shift-Enter and a long Enter with a touch hold, Space, and both arrows. 42 of 42 pass, and the older test-films.mjs still passes 42 of 42. Screen-reader tree dumps (Playwright accessibility snapshot) for heart and engine-r1 are in the repo under playground/canvas/ax. No live model calls. - Oct 7, 2026
Touch any film on the canvas
The living canvas now plays every ready-made film on the site, not only the heart. Open /playground/canvas.html?film=<id> (engine-r2, rome-r1, tax-r1, three-r1 and 38 more) or pick one from the strip at the top; the heart stays the default and is untouched. Every mark a film draws is a live object, with no work from the film: each text and each shape is a touch target. Tap one: the film pauses, a ring and a name pill sit on it, and the line the film says at that moment shows under it. Hold it: the exact line the agent would get shows in place, [yui] engine motion ask Compress. Drag scrubs, tap on nothing plays or pauses, the last frame stays. Hold on nothing sends the @t ask. How: the kit registers a hit target for every api.text and api.shape call, in screen pixels whatever the camera does, and a film's own api.hit or api.thing parts win. Proof: a browser test loads all 42 films (heart plus 41 gallery runs), samples 14 frames each, and finds at least one target in every one, with no scene errors; three-r1 needs three.js, which the host now loads on request. Headless shots of engine-r2, rome-r2 and tax-r1, each in light and dark, with a part ringed. No live model calls: only films already on the site. - Oct 7, 2026
A dry house key never breaks an agent
Yui's own OpenRouter account runs every native agent before a person adds their own key, and it was down to about 35 cents. At zero, every native turn gets 402 from OpenRouter, and a new user's first launch would have shown a broken agent. Now a chat turn, a tool lookup round, a quick tool answer and a meal job on the house key that hit 402 (or the credits and spending-limit messages) answer with the resting screen: one line, then a card with Add my key that opens yui://settings/key. A person's own key keeps its plain message naming their key. A film or hero drawing that hits the dry key is skipped: the reply still lands, no words row stands in, the phone draws its own sketch. Yui finds out once: the first dry-key call in an hour writes one house-key-dry line in the function log, never one per turn. Proof: 7 unit tests that stub fetch to answer 402 Insufficient credits for the chat, the film writer, the hero draw and a meal job, on the house key and on a person's own key; runtime suite 374 of 374. No live model calls. yui-native, yui-agents and yui-mcp redeployed. - Oct 7, 2026
Native first films: from 26% to 76% of frames, with a switch for the cost
MOTION-29 left native first asks at 22 to 31% of frames against the plugin's 80%. The prompt, the drawing prompt and the checks were the same in both. What differed: the plugin draws the hero and writes the film on Sonnet 5.5 and writes scene 1 on Haiku, started together; a native agent did all of it on its chat model (GLM 5.2, thinking off), and drew a hero only after a word match on the agent's own film line. Measured on a fresh account through a native agent, the same 19 nouns, first ask only, scored by the same look pass: chat model 26% of 104 frames (4.1 s median first scene); a guard so the agent's kit word (truck for a skateboard, bulb for an hourglass) cannot beat the noun the person said, 33%; Sonnet draws the hero, 40%; Sonnet writes the film and a drawing is no longer thrown away when the model traces an outline in 16 points instead of 12, 72% of 83 frames, 4.2 s; Haiku writes scene 1 while Sonnet writes the rest, and the hero is drawn ahead from the person's words while the agent is still answering, 76% of 90 frames, 3.1 s. Both goals met in that last run (70% of frames, first scene under 3.5 s). Costs and limits: Sonnet films cost about 20 times a film on the chat model, and the OpenRouter account that pays for them had about 62 cents of credit left when the runs ended, so the route is off by default and turns on with YUI_MOTION_HERO_MODEL, YUI_MOTION_FILM_MODEL and YUI_MOTION_OPENER_MODEL. The guard, the outline fix, the split writer and the hero-ahead draw are code and ship now. Not measured: the second ask after this change (credit ran out before it could run), and a solo repeat of the baseline: the first four variants ran four at a time, so their seconds are inflated. A repeat of the baseline and a repeat of the winner hit 402 out-of-credit errors partway and were thrown out. One run per variant, 19 nouns, a vision judge; frame counts differ between variants because films differ in length. Shows the variants chart and a before and after contact sheet of first-ask frames. - Oct 7, 2026
Native agents draw a new thing and keep it for the next ask
Native agents drew nothing outside the 93-drawing seed. Now a film about a noun the kit and seed lack draws it beside the film writer (one parts call, kit shapes only). After the answer a background step draws it again, never inside a turn, 2 in flight, 20 a day, two tries a noun, off with YUI_MOTION_LEARN=off, into a shared yui_motion_things table (noun only, no user text). A judge on a machine with a browser keeps a pass; a kept drawing is a seed hit for everyone. Measured on a fresh account through a native agent, 19 nouns asked twice (10 unseeded nouns drew their own hero on the first ask): 7 of those 10 second asks hit a kept drawing; first scene on those 7 went 3.5 s to 2.9 s median, frames pass 26% to 79% (42 frames). All 10 drawn: first scene 3.5 s then 3.1 s, frames pass 22% then 63%. Misses: trombone (still drawing on ask 2, 8.2 s), ukulele and tuba (judge failed them), 3 nouns a kit word answered. Over all 19: first asks 3.1 s median and 31% of 108 frames, second asks 3.6 s and 46%. Misses against the plugin: its first-ask frame pass was 80%, native first asks are far lower, and a few films named a kit word instead of the noun. Caveats: one run, 19 nouns, the judge runs from a laptop, not the function. Shows the chart and the contact sheet. - Oct 7, 2026
Growing the film seed from real asks: not yet, there are none
MOTION-28 planned to fold learned drawings into the seed and draw the top 40 missed nouns from real asks. Read only, counts only: the yuigui messages table holds 2 film rows from 2 users (a rainbow explainer that is a seed word, and a string theory ask that names no single thing), the gateway logs none, and the plugin cache holds 0 learned drawings. A seed grown from hand-picked nouns would repeat MOTION-24, so the card stops here: no plugin, seed or runtime change, no deploy. Kept: ask_nouns.py, which reports film count and seed, learned and miss without printing any message text. Next: re-run after real asks reach 30 rows. No chart or contact sheet: there is no data to draw. - Oct 7, 2026
Explainers get a film, not shape pages
Chris asked 'take me through what string theory is' and got a deck of shape pages. Two guide rules fought: explain by picture with motion, and explainers draw every page in a deck. Now any how-it-works, what-is, why or walk-me-through ask is one line and one motion, with at most one choose after it. The deck stays for where (map) and how big (chart). Shapes stays a small still drawing and never stands in for the film. Evals on Opus 5.5, full suite run twice each side: guide v50 122 and 121 of 144, old guide 120 and 115 (the suite swings about 5). The new string theory case passes 2 of 2, the old guide 0 of 2. The other three new asks (black hole, photosynthesis, stock market) already passed on both sides. Map and chart explainers 5 of 5 and 4 of 5 (one swing miss). Left: the live guide reaches the Yui agent after its gateway restarts. Shows the old deck page next to the first frame of the film made for the same ask. - Oct 7, 2026
A new thing is drawn after its first ask, so the second ask is as fast as a seed hit
When a film names a thing that is not in the kit or the 93-drawing seed, the first ask works as before. After the film ends, one background job (never during a turn, 2 at a time, 20 a day, off with YUI_MOTION_LEARN=off) makes the drawing with the same parts call as the seed, renders it and runs the same judge. A pass is kept under narrow word forms, a fail writes nothing. 12 nouns asked twice in different words with an empty cache: 10 of 11 background drawings passed the judge (typewriter did not); 9 of the 12 second asks found a kept drawing and started in 4.0 s median (their first asks 4.6 s), with 98% of frames passing (80% on the first ask). The 3 that did not (kayak paddle named as a paddle, typewriter failed, bulldozer already a seed mountain) stayed on the old path. A background drawing costs about 3 cents (parts call 1.6, judge look 1.4) and takes 9 to 17 s. Caveats: one run, 12 nouns, a quiet host this time. - Oct 7, 2026
Films draw 93 common things at once: 72 more drawings ship with the plugin
MOTION-23 shipped 21 drawings; any other noun still waited about 4 s on a model sketch. Now the plugin ships 72 more, each made once, rendered and checked, with narrow word forms so 'cell phone' or 'cloud storage' never draw the wrong thing. Animals (lion, wolf, penguin, whale, dinosaur, ...), space (sun, moon, satellite, astronaut), machines (motorcycle, printer, ship, gear), places (barn, factory, hospital, school, igloo), nature (mountain, mushroom, rainbow, waterfall, flame), science (atom, DNA, light bulb, solar panel, prism) and everyday things (phone, candle, glasses, padlock, trophy, crown). Six did not read and were dropped (snake, ear, muscle, fire truck, river, magnet). On 20 new held-out asks with an empty cache: the 14 that name a seed thing start in 4.0 s (5.9 s without the seed) and 95% of frames pass (87% without). The 6 that do not are unchanged code. The seed file is 83 KB and loads in 3 ms. Real asks are still too few to count, so the list comes from common explainer nouns; it grows when real ones arrive. - Oct 7, 2026
Films draw common things at once: 21 drawings ship with the plugin
The kit draws 68 things. For any other noun a model sketched the picture while the film waited, and the sketch could come out wrong. Now the plugin ships 21 more, each made once, rendered and checked: balloon, cactus, camel, tower crane, elephant, giraffe, guitar, helicopter, horse, microscope, octopus, grand piano, pyramid, snail, spider, submarine, telescope, tractor, tree, volcano, windmill. A match skips the sketch call. On 20 new held-out asks with an empty cache: the 14 that name a seed thing start in 4.0 s (5.0 s without the seed; the slowest was 6.1 s, not 13.2 s) and 95% of frames pass (76% without). The 6 that do not are unchanged. Real asks are too few to count yet, so the list comes from the test asks plus common nouns; it grows when real ones arrive. - Oct 7, 2026
Films stop stalling after scene 1: scene 2 is ready on time
The writer for scenes 2 to 6 only started after scene 1 had been written and sent, because it waited to be iterated. Now it starts at the same moment as scene 1's writer. On the new held-out asks with an empty cache: median gap 2.4 s and 1.8 s down to 0 s, ready in time 0% up to 70% and 65% (goal 50%), held-out 10 2.6 s to 0 s and 70%. Bad frames no worse, frame pass 93.5%, 95.4%, 96.5%. Judge check 93%. Honest note: today the first scene reads about 7 s on every run, with the change on or off, because the host and the model are slow; MOTION-21 read 4.4 s on a quiet day. Shows the timing chart. - Oct 7, 2026
Films start without the shapes wait: first scene 5.4 s to 4.4 s
When a film needs a thing the kit lacks, the first scene used to wait for a separate call that draws its shapes. Now the scene 1 writer starts at the same moment and goes out on the first shapes that arrive. On the new held-out asks with an empty cache: first scene 5.4 s to 4.4 s and 4.3 s (goal 4.5 s), held-out 10 4.6 s to 3.9 s. Bad frames (plain or off-subject) 5 and 6 against 9 and 3, and 2 against 2: within noise. Judge check 93%. Tried first: letting the scene 1 writer draw the shapes in its own reply was slower, 5.5 s to 6.5 s, so it is out. Still open: scene 2 lands 2 to 3 s after scene 1 ends. Next: a shorter brief for the later scenes. - Oct 7, 2026
A shorter parts reply: call 4.2 s to 2.9 s, drawings worse, so it is out
We asked for fewer shapes in a terse one-line reply when a film needs a thing the kit lacks. The parts call alone, 20 new things: 4.2 s to 2.9 s with 7 to 9 shapes, 2.5 s with 5, 2.2 s with 3 (goal 2 s; with 3 shapes 8 of 20 drawings failed to build). On the new held-out asks with an empty cache: first scene 5.4 s to 5.0 s (goal 4.5 s), wait between scenes 2.1 s to 1.7 s, scene 2 on time in 0% of films (goal 60%), bad frames 2 to 13 of about 110. The model needs about 1.2 s before it writes anything, so the call cannot reach 2 s, and plainer drawings cost more than the 1.5 s saved. Reverted, nothing shipped. Next: have the scene 1 writer draw the shapes itself, or stream them so the drawing appears as they arrive. - Oct 7, 2026
Scene 2 early: tried it, missed, reverted. Gap between scenes 2.1 s to 1.4 s
We started the second scene's writer on the noun beside the first, and put the first scene's writer on a warm process. On the new held-out asks, two runs of 20 films with an empty cache: first scene 5.4 s to 4.7 s and 4.8 s (goal 4.5 s), the wait between scene 1 and scene 2 2.1 s to 1.4 s and 1.9 s, scene 2 on time in 5% and 0% of films (goal 90%). On held-out 10 it worked: first scene 3.9 s, scene 2 on time in 60%. Bad frames 8 and 6 against 9 and 3. New drawings still wait about 4 s for the parts call, and a cold scene 2 takes 8 s, so reverted. Kept two fixes: a closing helper no longer leaves a process running, and the early start now actually fires. Next: a shorter parts reply, then a warm second writer. - Oct 7, 2026
Films start without the program warm-up: first scene on new drawings 9.2 s to 5 s
MOTION-17 found the claude program starting costs about 2 s before it writes a word. We keep one claude open for the drawing call (the parts call alone: 5.2 s to 4.3 s, short of the 3.5 s goal), and since the reply names the thing first, about 1.2 s in, the film writers start then instead of waiting for the whole list. Scene 1 still waits for the parts before it goes out. On the new held-out asks, two runs of 20 films with an empty cache: first scene median 9.2 s to 5.7 s and 4.8 s (goal 6.5 s). Bad frames 9 and 3 against 9 before, held-out 10 unchanged at 2. The warm process answered 20 calls in a row and recovered from being killed. Next: start the second writer on the noun too. - Oct 7, 2026
A faster parts call, tried: speed up, drawings worse, so it is out
MOTION-15 makes a film about a thing the kit cannot draw wait for one parts call. We timed it alone on ten new nouns: 5.2 s median, and about 2.2 s of that is the claude program starting. A compact part format with sonnet gave 4.2 s (19% off, goal a third). With haiku it gave 3.2 s (38% off), but the judge called its drawings off-subject: bad frames on the new held-out set went 9 to 65, and the first scene only moved from 9.2 s to 7.2 s (goal 6.5 s). Sonnet kept quality closer (bad frames 13) but the first scene was still 8.6 s. Reverted, nothing shipped. Next: remove the program start with a warm process, and let scene 1 start from the first parts that arrive. - Oct 7, 2026
Films that start faster on new drawings: speed met, quality fell, so it is out
MOTION-15 made a film about a thing the kit cannot draw wait for one parts call before scene 1, so the first scene on new asks rose from 4.9 s to 9.2 s. We started that call beside the film writer so the two overlap. Cold cache, same asks: first scene on the new held-out set 9.2 s to 5.2 s (goal 5.5), held-out 10 4.2 to 3.8 s, set of 20 4.9 to 4.3 s. But plain and off-subject frames on the new held-out set went 9 to 20 (a first run said 10, so the swing is wide) and frame pass 90.0% to 81.1%. Three placeholder-first versions were faster still (3 to 4 s) but the judge called every placeholder scene plain: 31, 31, 25 bad frames against 9. Judge checked first: 92% agreement with hand labels. Reverted, nothing shipped. Scene 1 has to carry the drawing, so the floor is the parts call itself (4.6 to 6.1 s). Next: make that call faster, or start scene 2 at the same moment. - Oct 7, 2026
Films draw things the kit lacks: a giraffe, a windmill, a guitar, cached by name
Before, a film about an elephant, a volcano or a windmill had the model paint a blob. Now, when the ask names something the kit cannot draw, one short model call (about 4 to 6 s) names it and returns 7 to 12 parts from five plain shapes. The plugin checks every number and shape, the film registers them with api.thing's new sibling api.defineThing, and the thing is drawn big in every scene. The result is saved by name, so the same ask costs nothing the second time. Plans, numbers and feelings get no call. If the call fails, the film is made as before. On ten new asks never used while building (giraffe, windmill, volcano, microscope, guitar, tractor, helicopter, piano, octopus, cactus): plain and off-subject frames 37 to 9, frame pass 64% to 90%, films at 80%+ 30% to 85%. On every ask with no kit object across three sets: 68 to 24 bad frames. The hero is also a little smaller now, so cramped frames on the 20-ask set fell from 16 to 0, and frame pass there rose 76.9% to 86.3%. The cost: a noun seen for the first time makes the first scene about 4 s slower (set median 4.5 s to 4.9 s, all 80 films 4.6 s to 5.2 s). Verdicts per frame are on the sheet, before on the left, after on the right. - Oct 7, 2026
Films draw the hero: the kit has the objects, plain and off-subject frames fall by half
The judge agrees with hand labels 92% of the time (55 of 60). The fix: the kit draws the hero. api.thing draws one of 69 objects from real parts (animals, organs, vehicles, tools, buildings, things people have). A word match on the ask picks the object, the plugin puts it in scene 1 itself, and later scenes are told to keep it on screen. No extra model call, so the first scene is no slower. Same 40 films (20 asks, twice): plain 27 to 19, off-subject 34 to 8, together 61 to 27 against a target of 46. Frame pass rate 65.2% to 76.9%, films with 80% passing 47.5% to 67.5%, first scene median 4.7 s to 4.5 s. Ten new asks with a body, written after the kit was built: 39 to 11 bad frames, frame pass 60.9% to 83.0%. The seven with a drawing in the kit went from 28 bad frames to 0; the three without (elephant, telescope, submarine) stayed at 11, because those films are made the old way. Next: draw one cheap path per part for a noun the kit does not have. Films are not on the iPhone yet, so this plays on /web and the playground. Verdicts per frame are on the sheet, before above, after below. - Oct 7, 2026
Films shown worked drawings: no gain, so it is out
The judge agrees with hand labels 95% of the time (57 of 60), so the numbers are trusted. On the same 40 films (20 asks, twice): plain frames 27 to 27, off-subject 34 to 34, together 61 to 61 against a target of 46 or fewer. Frame pass rate 65.2% to 66.4%, films with 80% passing 47.5% to 45%, first scene median 4.7 s to 5.1 s. Chicken passed 2 of 12 frames before and 0 of 12 after. The model read the examples (nothing got worse) but did not carry the idea to parts the examples do not show. Prompt change reverted, nothing shipped. The prompt route is now spent after four tries. Next: draw the part in the kit, from a library of silhouettes picked by name, or redraw the hero in scene 2 when scene 1 is judged plain. Verdicts per film are on the sheet, before at left, after at right. - Oct 7, 2026
Films plan the hero first: no gain, so it is out
The judge agrees with hand labels 90% of the time (54 of 60), so the numbers are trusted. On the same 40 films (20 asks, twice): plain frames 34 to 30, off-subject 28 to 32, together 62 to 62 against a target of 46 or fewer. Frame pass rate 64.2% to 63.8%, films with 80% passing 45% to 40%, first scene median 4.9 s to 5.0 s. The model does write a parts line when asked, but it then draws each part as the same oval or bar. Chicken still passes 1 of 6 frames and Rome 1 or 2. Prompt change reverted, nothing shipped. Next try: a worked drawing recipe per part, not another rule. Verdicts per film are on the sheet, frames at left. - Oct 7, 2026
Films draw the thing: the first fix did not work, so it is out
The judge still agrees with hand labels 93% of the time, so the numbers are trusted. On the same 40 films (20 asks, twice): plain frames 34 to 38, off-subject 28 to 33, frame pass rate 64.2% to 62.2%, films with 80% passing 45% to 37.5%, first scene median 4.9 s to 5.2 s. Root causes: a named animal or machine is drawn as one oval with legs or a face stuck on, and an activity or place falls back to a bare chart, ring or row of labels. The fix was a shape-from-parts helper (bird, dog, fish, robot, car, temple, plant, skyline) and a stronger subject rule. The model used the helper in 6 of 40 films and still drew the chicken as a blob. Target was a quarter fewer bad frames; it went the other way, so both changes were reverted. Next try: the film writes a one-line parts list for its hero first, then draws from it. Left is before, right is after, same asks, verdict under each frame. - Oct 7, 2026
Films that sit still: the check was wrong, not the films
After the judge check, nothing moved was the top failure class. Before fixing films I checked the check. It compared two frames 0.6 s apart at the middle of a scene, so any scene that moves and then holds a beat reads as still. I rendered each scene of the same 50 saved films (277 frames) at 20, 35, 50, 65 and 80% of its length. Of the 43 frames called still, 43 are hold beats (a title that animates in and rests, a bar chart that grows and stops, a phone that slides and holds) and 0 are scenes that never move. The rule is now: a scene is still only when no two of those frames, or the old pair, differ. Rescored twice on the same films: 277 of 277 verdicts agree. Same films, same vision verdicts, old rule then new: still 43 to 0, frame pass rate 52.3% to 61.4%, films with 80% passing 22% to 36%, films with every frame passing 4% to 12%. Plain (36), off-subject (36) and cramped (19) are untouched. Because no real still scene remains, no film prompt or kit change was made, and the judge was not touched. The top class is now plain and off-subject drawings. The contact sheet shows all 43 hold beats, mid-scene frame left, the frame that differs most right, verdict under each.
- Oct 7, 2026
A Thought: answer on the canvas
The Thought answer-on-the-canvas reports YUI-328 with its real proof: 6 new samples, test-yl 0 bad of 33, films 42/42, keyboard 42/42. A question from the agent stops being a form under a chat bubble; you answer it right on the picture it asks about. Says plainly it is a web prototype; the phone version waits on Chris's call. - Oct 7, 2026
A Thought: lists you can tick
The Thought lists-you-can-tick reports YUI-327 with its real proof: 7 new samples, test-yl 27/27, films 42/42, keyboard 42/42. A to-do list or a plan for the week becomes something you tick and ask about where it sits, not a block of text. Says plainly it is a web prototype; the phone version waits on Chris's call. - Oct 7, 2026
A Thought: charts you can touch
The Thought charts-you-can-touch reports YUI-326 with its real proof: 8 new samples, test-yl 20/20, films 42/42, keyboard 42/42. A number an agent sends is something to touch and ask about, not a picture of a chart. Says plainly it is a web prototype; the phone version waits on Chris's call. - Oct 7, 2026
A Thought: the canvas works without touch
The Thought the-canvas-works-without-touch reports YUI-324 with its real proof: a keyboard test on the heart and all 41 films, 42 of 42 pass, 2308 part checks, 378 parts reached by Tab. Says plainly it is a web prototype; the phone version waits on Chris's call. Shows the focus ring in dark and light. - Oct 7, 2026
A Thought: the canvas draws Yui Lines too
The Thought the-canvas-draws-yui-lines-too reports YUI-325 with its real proof: 9 samples, test-yl 12/12, films 42/42, keyboard 42/42. One canvas now plays films and draws the everyday answers agents send. Says plainly it is a web prototype; the phone version waits on Chris's call. - Oct 7, 2026
A Thought: every film is touchable
The Thought every-film-is-touchable reports YUI-323 with its real proof: a browser test loads the heart and all 41 films, samples 14 frames each, and finds a touch target in every one, 42 of 42, no scene errors. Says plainly it is a web prototype; the phone version waits on Chris's call. Shows the canvas shots. - Oct 7, 2026
A Thought: a dry key stays kind
The Thought a-dry-key-stays-kind reports YUI-322 with its real proof: 7 unit tests stubbing a 402 for the chat turn, the film writer, the hero draw and a meal job, on the house key and on a person's own key; runtime suite 374 of 374. Misses: no live model calls; search has its own key and is untouched. Shows the resting screen. - Oct 7, 2026
A Thought: native agents' first films catch up with the plugin's
The Thought native-first-films-catch-up reports MOTION-30 with its real numbers: 19 nouns, first ask, fresh account. Frames that pass 26% to 76% of 90 frames (goal 70%), median first scene 4.1 s to 3.1 s (goal 3.5 s). Misses: the strong model route costs about 20 times a film and the account had about 62 cents left, so it is off by default; the second ask was not measured; one run per variant, the first four ran in parallel so their seconds are inflated. Shows the chart. - Oct 7, 2026
A Thought: native agents now draw a new thing and keep it
The Thought native-agents-learn-drawings reports MOTION-29 with its real numbers: 10 unseeded nouns drew their own hero, 7 second asks hit a kept drawing, first scene 3.5 s to 2.9 s, frames pass 26% to 79% over 42 frames. Misses: trombone not kept (8.2 s on ask 2), ukulele and tuba failed the judge, 3 asks answered by a kit word. Over all 19 nouns the second ask was not faster. Native first-ask frame pass is 22%, far under the plugin's 80%. Shows the chart. - Oct 7, 2026
Your note: films still drawn as blobs, answered
Chris's TestFlight note on 0.6.5: an explainer came back as dot-and-circle pages, no film. The cause was the native runtime, whose prompt ordered a shapes deck for every explainer. MOTION-27 (commit f7410b9) gave it its own film maker; on a fresh account the same ask to Home and to a second native agent each came back as a film in 15 to 19 seconds. The shots show the old shapes page and two frames of the new film, dark mode. - Oct 7, 2026
A Thought: the agents Yui runs for you now make films
The Thought native-agents-make-films says what MOTION-27 changed and what it did not. Home is a native agent and could only send shape pages. Now it and a second native agent each sent a film for the string theory ask, in 15 to 19 seconds, checked in the simulator on a fresh account. 348 runtime tests pass; the film maker ships with a seed of 93 drawings. Not ported: drawing a new thing on demand and learning it, so an unseeded noun gets no kit drawing on native. Also said: scene 1 drew a guitar neck for string theory, and the proof was a simulator, not a real phone. Shows the old shapes page next to two frames of the film. - Oct 7, 2026
Every agent answers an explainer with a film
Chris asked the Home thread what string theory is and got a deck of dot-and-circle shapes, no film. Home is a native agent, and its prompt ordered a shapes deck for every explainer; only the Hermes plugin could make films. Commit f7410b9 gives the native runtime its own film maker, so an explainer is now one line, one `motion`, and one `choose`. Checked live on a fresh account: the same ask to Home and to a second native agent each came back as a film, no deck, in 15 to 19 seconds. The shots show the old shapes page and two frames of the film in the app, dark mode. The stuck-page report did not reproduce: the deck stage advances through every page in the UI test, so the page was most likely waiting for a film that never came. - Oct 7, 2026
A Thought: ask what string theory is, get a film
The Thought films-for-explainers says what MOTION-26 changed and what it measured. Two guide rules fought, explain by picture and explainers draw every page. Now what-is and how-it-works asks are one line and one film; the deck stays for map and chart. Full suite twice per side: new 122 and 121 of 144, old 120 and 115, string theory 2 of 2 against 0 of 2, the suite swings about 5. Caveat: an eval, not a phone test, and the agent loads the guide after its gateway restarts. Shows the old deck page next to the film first frame. - Oct 7, 2026
A Thought: Yui 0.6.5, films talk
The Thought yui-0-6-5-build-576-films-talk is the release write-up for build 576. It covers films that talk (YUI-319: lines spoken on the phone with the best English voice, a speaker button, silent switch respected), the phone drawing the kit's objects and things it lacks (YUI-317, YUI-318) and the end of a film with Replay, Another take and Change it (YUI-320). Shows the chicken, the speaker button and the end buttons. - Oct 7, 2026
A Thought: films learn after one ask
The Thought films-learn-after-one-ask says what MOTION-25 did. 12 things asked twice with an empty cache: 10 of 11 background drawings passed the judge, 9 of the 12 second asks found one, first scene 4.0 s (4.6 s on the first ask), slowest 4.9 s (7.4 s), frames pass 98% (80%). The 3 that did not learn stayed on the old path. Caveats: one run, 12 things, a quiet host, and the plugin needs a gateway restart. Shows the chart and the contact sheet. - Oct 7, 2026
A Thought: 93 things drawn ahead
The Thought 80-things-drawn-ahead says what MOTION-24 did. Last time 21 things were drawn ahead. Now 72 more, 93 in all, 83 KB, loads in 3 ms. On 20 new asks with an empty cache: the 14 that name one start in 4.0 s (5.9 s without), slowest 5.9 s (10.5 s), frames pass 95% (87%). The 6 that do not are unchanged within noise. Judge 93%. Caveat: no real film asks exist yet, and the host was busy during the runs. Shows the chart and the contact sheet. - Oct 7, 2026
Films end with Another take and Change it
Before, the end of a film offered only Replay. Now three buttons float over the last frame, in light and dark. Another take closes the film and sends the agent a tap line with the film's title and the words make this film again, a different take, same ask; the agent answers with a new film (the plugin never reuses the old one). Change it closes the film, quotes its row above the composer and brings the keyboard up, so you type or say what to change. With Reduce Motion on, the still last frame now counts as the end and shows the same three buttons. The channel guide gained one line so any agent knows both taps mean a new motion line. Tests: 5 UI tests for the end state, a unit test for the tap line, a plugin test that a repeated ask makes a new film. Shipped in TestFlight build 576 (Yui 0.6.5). - Oct 7, 2026
A Thought: films draw common things at once
The Thought films-draw-common-things-at-once says what MOTION-23 did. A thing the kit lacked waited about 4 s on a model sketch that could come out wrong. 21 of them are now drawn once and checked. On 20 new asks with an empty cache: the 14 that name one start in 4.0 s (5.0 s without), slowest 6.1 s (13.2 s), frames pass 95% (76%), off-subject 1 (17). The 6 that do not are unchanged. Caveat: no real film asks exist yet, so the list is a guess. Shows the contact sheet and the chart. - Oct 7, 2026
Films talk
Each say line is spoken when film time reaches it, with the best English voice installed (premium, then enhanced, then default), on the phone: no audio leaves it. Pause pauses the voice, play resumes it, scrubbing stops the line and picks up at the next cue, replay starts over, closing stops it. A line longer than its window finishes and the next one waits. The speaker button sits beside pause with a Mute film voice label and the choice is kept for the next film. A film with no say lines has no button. Audio is ambient, so the silent switch mutes it and music from other apps keeps playing under it. VoiceOver running: silent, it already reads the film. Reduce Motion still frame: the lines go out in order, with the speaker button on the still. Tests: 14 scheduler and controller cases, full unit suite 749 of 749, film UI test green, light and dark. First slice of YUI-310; the deck and body copy voice is still parked. Commit https://github.com/postscarcityai/yui/commit/fc76f7c. Shipped in TestFlight build 576 (Yui 0.6.5). - Oct 7, 2026
A Thought: scene 2 is ready when scene 1 ends
The Thought scene-2-is-ready-when-scene-1-ends says what MOTION-22 did. The writer for scenes 2 and up only started after scene 1 was sent. Now it starts with scene 1's. Gap 2.4 s, 1.8 s and 2.6 s down to 0 s, ready in time 0% to 70%, 65% and 70% (goal 50%), same-day change-off arm gap 4.9 s, frames pass 93.5% to 96.5%, judge 93%. Caveat: the first scene read about 7 s today with the change on or off, a slow day. Shows the timing chart. - Oct 7, 2026
A Thought: scene 1 no longer waits for the shapes
The Thought scene-1-draws-its-own-shapes says what MOTION-21 tried. Scene 1 drawing the shapes itself was slower. Starting scene 1 at the same moment as the shapes call got the first scene on new asks from 5.4 s to 4.4 s and 4.3 s (goal 4.5 s), held-out 10 from 4.6 s to 3.9 s, bad frames within noise, judge 93%. Open: scene 2 still lands 1.8 to 2.6 s after scene 1. Shows the timing chart. - Oct 7, 2026
A Thought: a shorter shapes reply did not help
The Thought a-shorter-parts-reply-did-not-help says what MOTION-20 tried and why it is out. A terse one-line shapes reply took the call from 4.2 s to 2.9 s (goal 2 s), the first scene on new asks from 5.4 s to 5.0 s (goal 4.5 s), scene 2 ready in time stayed at 0% (goal 60%), and bad frames went from 2 to 13 of about 110. Shows the timing chart. Next: have the scene 1 writer draw the shapes itself, or stream them. - Oct 7, 2026
A Thought: Scene 2 was not ready in time
The Thought scene-2-is-not-ready-in-time says what MOTION-19 tried and why it is out. Starting the scene 2 writer on the noun and warming the scene 1 writer took the first scene on new asks from 5.4 s to 4.7 s and 4.8 s (goal 4.5 s), the gap between scenes 2.1 s to 1.4 s and 1.9 s, scene 2 ready in time on 5% and 0% of films (goal 90%). Bad frames 8 and 6 against 9 and 3. On the held-out ten it worked, 60% ready in time. Shows the timing chart. Next: a shorter shapes reply. - Oct 7, 2026
A Thought: Films start without the warm-up
The Thought films-start-without-the-warm-up says what MOTION-18 did. One claude kept open for the drawing call (5.2 s to 4.3 s, short of the 3.5 s goal) and the film writers start when the noun is heard, about 1.2 s in. First scene on the new asks 9.2 s to 5.7 s and 4.8 s (goal 6.5 s), bad frames 9 and 3 against 9 before. The helper survived 20 calls in a row and kills. Shows the timing chart. Next: start the second writer on the noun too. - Oct 7, 2026
A Thought: We tried to make new drawings come back faster
The Thought films-draw-faster-tried says what MOTION-17 tried and why it is out. A short part format cut the drawing call from 5.2 s to 4.2 s on sonnet (19%, goal a third) and 3.2 s on haiku (38%), but haiku drawings read as off-subject: bad frames on the new asks went 9 to 65, and the first scene only reached 7.2 s (sonnet 8.6 s, goal 6.5 s). Shows the timing chart. Next: a warm writer to skip the program start, and scene 1 from the first shapes. - Oct 7, 2026
A Thought: We tried to start films faster on new drawings
The Thought films-start-fast-on-new-drawings says what MOTION-16 tried and why it is out. Starting the parts call beside the film writer took the first scene on ten new asks from 9.2 s to 5.2 s (goal 5.5), but plain and off-subject frames went 9 to 20 and frame pass 90.0% to 81.1%. Three placeholder-first versions started in 3 to 4 s and scored 31, 31 and 25 bad frames. Shows the timing chart. Next: a faster parts call, or scene 2 started at the same moment. - Oct 7, 2026
A Thought: Films learn to draw what the kit does not have
The Thought films-draw-what-the-kit-lacks says why an octopus, elephant or submarine stayed a blob after the kit, what one cheap sketch call does (7 to 12 parts from five shapes, saved by name), and the numbers: plain and off-subject frames 37 to 9 on ten new asks, frame pass 64% to 90%, 68 to 24 bad frames on asks with no kit object. Cost: first scene of a new noun 4.9 s to 9.2 s median. Same ask, before and after frames. - Oct 7, 2026
The phone draws things the kit lacks
The phone player was re-bundled after the film kit learned to draw things it lacks (api.defineThing). The plugin sends filled shapes for a noun like giraffe, the film registers them, and the kit draws them. Played in the app's real player on the simulator: a giraffe from the plugin's cache (scene 1, dark and light) and the kit's roast chicken, both drawn, fully offline. The plugin checks no player version before it sends the parts and a player without defineThing just skips them, so nothing was bumped and no gateway restart is needed. The 37 motion tests pass. It shipped in TestFlight build 576 (Yui 0.6.5). - Oct 7, 2026
Phone films draw the kit's objects
The phone plays films with its own copy of the film player. That copy was a day old, so the kit's 69 drawn objects (api.thing) never showed up on the phone and the plugin skipped the hero. The copy is re-bundled from the site kit, still fully offline. Two films played in the app's real player on the simulator: a chicken (scene 1 draws the kit chicken, dark and light) and a submarine, which the kit has no object for, so the film paints it itself and plays on as before. The 36 motion tests pass. The app carries no kit version string, so there is nothing to bump and no gateway restart is needed. It shipped in TestFlight build 576 (Yui 0.6.5). - Oct 7, 2026
A Thought: The kit draws the hero, a real chicken at last
The Thought the-kit-draws-the-hero says why four prompt tries (MOTION-6, 11, 12, 13) stayed at 61 bad frames, what changes when the plugin picks one of 69 kit objects by word match and puts it in scene 1, and the numbers from MOTION-14. Same 40 films: plain 27 to 19, off-subject 34 to 8, together 61 to 27 against a goal of 46, frame pass 65.2% to 76.9%, films at 80%+ 47.5% to 67.5%, first scene median 4.7 s to 4.5 s. Ten held-out asks: 39 to 11 bad frames, 60.9% to 83.0% pass. Shows roast chicken scenes 3 and 6, before and after. Links /motion and the worked-drawings Thought. - Oct 7, 2026
Films now play on your phone
The app has played films since build 545 (MotionView), but the gateway plugin held a sentinel that sent every phone the sketch. It is now MOTION_BUILD = 545: a phone on build 562 gets the film, streamed scene by scene, and a phone on 538 still gets the sketch. Unit tests prove both. The film library entry is live, and the MOTION and YL specs say 545. The gateway needs one restart to pick it up. See the same films play on the MOTION page. - Oct 7, 2026
A Thought: Films shown worked drawings, the model read them and drew a blob anyway
The Thought films-learn-from-worked-drawings says what plain and off-subject mean, why three rule tries (MOTION-6, 11, 12) did not move them, what a worked drawing is (a tiny finished example of a part to copy), and the result on the same 40 films: plain 27 to 27, off-subject 34 to 34, together 61 to 61 against a goal of 46, frame pass 65.2% to 66.4%, films at 80%+ 47.5% to 45%, first scene median 4.7 s to 5.1 s. Chicken passed 2 of 12 frames before and 0 of 12 after. Shows two chicken scenes before and after. Reverted, nothing shipped. Next lever: draw the part in the kit, or redraw the hero in scene 2. Links /motion and the plan-the-hero-first Thought. - Oct 7, 2026
A Thought: Films that plan the hero first, it wrote the list and drew a blob anyway
The Thought films-plan-the-hero-first says why the last helper was ignored (used in 6 of 40 films), what the parts line is (the named thing and four to six parts in drawing order, written before scene one), and why it was reverted. Same 40 films, before to after: plain 34 to 30, off-subject 28 to 32 (62 to 62, needed 46 or fewer), frame pass 64.2% to 63.8%, films at 80%+ 45% to 40%, first scene median 4.9 s to 5.0 s. Shows one roast-chicken frame before and after. Links /motion and the earlier Thought. - Oct 7, 2026
A Thought: Films that draw the real thing, our first fix made it worse
The Thought films-draw-the-real-thing says what plain and off-subject mean on the checked judge (a box, ring or blob instead of the named thing), the two root causes (a named animal or machine drawn as one oval with parts stuck on; an activity or place falling back to a bare chart, ring or labels), the fix tried (a parts helper and a stronger subject rule) and why it was reverted, with the numbers on the same 40 films: plain 34 to 38, off-subject 28 to 33, frame pass 64.2% to 62.2%, films at 80%+ 45% to 37.5%, first scene median 4.9 s to 5.2 s. Shows one roast-chicken frame before and after. Links /motion and the still-check Thought. - Oct 7, 2026
A Thought: Films that sit still, we checked the check first
The Thought films-that-sit-still says why the still check was wrong (two frames 0.6 s apart mid-scene cannot tell a hold beat from a scene that never moves), the new rule (five samples a scene, still only when nothing changes in any), that all 43 frames it had flagged were hold beats and none never moved, and the numbers on the same 50 films: still 43 to 0, frame pass 52.3% to 61.4%, films at 80%+ 22% to 36%, 277 of 277 verdicts agree on a rescore. Shows two hold-beat frames. Links /motion and the judge Thought. - Oct 6, 2026
A Thought: We checked the film judge before fixing the films
The Thought we-checked-the-film-judge-first says what the old judge got wrong (charts and a rainy window called off-subject, a heart for a Sunday morning let through), the one question the new judge answers first (what is drawn), and the numbers: agreement 50% to 93%, same-frame rescore 73% to 97%, 85% on 20 held-out frames, frame pass 42.6% to 52.3% on the same 50 films. Shows two labelled frames, one the judge got wrong and one it got right. Links /motion and the overlap-check Thought. - Oct 6, 2026
A Thought: A film check that answers the same twice
The Thought a-film-check-that-answers-the-same-twice says why the overlap count swung between runs (new films each run, one frame per scene, not the check), what made it steady (label boxes read from the player in screen pixels, a written threshold, five samples a scene), the kit bug it exposed, and the numbers: overlap frames 5 to 1, frame pass 48.4% to 48.1%, same-frame rescore 100%. Shows a before and after compare of two scenes. Links /motion and the look-pass Thought. - Oct 6, 2026
Yui on the web
17 changes in one push.
- Oct 6, 2026
The film judge now agrees with a person on 93% of frames
Off-subject is the biggest failure class left, so before another fix we measured the judge that counts it. I took 60 saved frames, labelled each one by a written rule (does the frame show the thing the ask names, so a visitor with no caption would recognise it) and compared. The old judge agreed on 30 of 60 (50%) and gave a different answer to the same frame 16 times in 60 (rescore 73%). It called charts, globes and window-with-rain frames off-subject, and passed bare timelines. The new prompt answers one question first, the subject: drawn, stand-in (a blob or polygon that tries to be the thing) or none (boxes, bars, rings, text), then scores craft separately. Result: 56 of 60 (93%), per class off-subject 5/6, plain 13/15, pass 38/39, rescore 97%; on 20 frames labelled before seeing any verdict, 17 of 20 (85%) and rescore 95%. Rerun on 25 asks x 2 (50 films, 277 frames), same films, old judge then new: frame pass rate 42.6% to 52.3%, films with 80% passing 14% to 22%, plain 38 to 36, off-subject 29 to 36 (the old judge missed the ones that look like a heart for a Sunday morning or an oval for a chicken). Cramped fell 33 to 19 and clipped 23 to 10 because those were being used as catch-alls. Off-subject is not the top class (nothing moving is, 43), so no film prompt fix this round; later fixes are measured with this judge. Contact sheet: my label, the old verdict and the new verdict under each of the 60 frames. - Oct 6, 2026
The film label check now gives the same answer every time
The look check for overlapping labels swung from 3 to 16 frames between runs, so no film fix could be measured. We scored the same 50 saved films twice: identical, every time. The swing came from the films themselves (the model writes new ones each run) and from reading one frame per scene. Now the check reads each label's box from the player, calls two labels overlapping when they cross by more than 2 px and a quarter of the smaller one, and fails a scene only when that holds at 2 of 5 sampled moments. That exposed a real bug: the drawing kit only kept text apart on a still camera, so moving-camera scenes, pin digits and text pushed into the caption band collided. The kit now judges every text in screen pixels and settles both pushes together. Same 50 films (283 frames) before and after: overlap frames 5 to 1, frame pass rate 48.4% to 48.1% (one frame, inside the vision model's own swing). The one left is a film centring a label over a pin digit. Contact sheet below: before on top, after underneath. - Oct 6, 2026
We tried one short scene for small asks, and did not keep it
Today even a one-line ask draws a whole film. We wrote a plain rule (one sentence, 12 words or fewer, nothing that asks for a process, a comparison or a feeling) and gave those asks one scene of about 6 s from the fast model, no stream, same drawing kit and same checks. We ran the 20-ask set plus 5 small asks, twice each. The rule sent 5 of 5 added asks and none of the 20 the small way. Small asks: time to a whole film 21.7 s to 6.3 s, one scene instead of five. But frames passing the look check fell from 34% to 0%, and 10% after a better prompt, so we did not keep it. Full asks were untouched: 41.7% before and after, 32.7 s to 35.7 s. Cost per film was $0.039 small and $0.053 full on the baseline; the small tier's cost could not be read, so it was never the deciding number. What we learned: the fast model's single scene is the weak one; the passing frames in every film came from the later scenes by the bigger model. Next try: the same one scene from the big model. Contact sheets below, before (a full film for each small ask) then after (the one scene). - Oct 6, 2026
We tried real objects for films, and did not keep them
Films still draw boxes labelled engine instead of an engine. We ran the 20-ask look pass twice (40 films) on the live code, then added a generic set of drawn objects to the film kit (heart, chicken, mug, car, battery, plant, robot, watering can, engine, dog, box, coins and more, plus a phone that writes out its real rows) and a subject check in the prompt: every scene must still draw the noun of the ask. Plain drawings fell from 30 to 19 frames. Off-subject drawings only fell from 36 to 32, so together 66 to 51, a 23% drop against the one third we needed. Frame pass rate 43.4% to 44.4%, films with 80% passing 12.5% to 17.5%, first scene median 4.7 s to 4.4 s. Cramped frames rose 15 to 37 because the big objects crowd the labels. The bar was a third, so the change is not shipped; the patch is kept. What we learned: bar-chart and box films (settings, status, workout, people) improved most; hearts, chickens and Rome did not, because the model often draws its own blob instead of calling the object, and the vision check wants chambers and a map, not an icon. Contact sheets below, before then after. - Oct 6, 2026
Films on /web now say what they are drawing
The 5 s wait for a film could not be shrunk, so it is hidden. Before the first frame the ring now carries the words Drawing the first scene. If the player plays all it has and the next scene is not written yet, the held last frame says Drawing scene 2, then 3, and the line is gone the moment the scene lands, the film closes, or a frame plays. It never sits on top of a playing scene. Reduce Motion gets the same words with no movement. The plugin now writes the same plain words as the host's doing row while it makes each scene (no ids), and takes them off when the film is whole. The film e2e checks the line before scene 1, between scenes, and its absence during play, in dark and light, phone and desktop: 101 of 101 pass. Plugin tests pass too. Stills below: before scene 1, between scenes, playing with no line. - Oct 6, 2026
A shorter first scene did not make films start faster
The plan: if the first scene is shorter, the model writes less before the film starts. We changed the prompt only: scene 1 is one idea, 3 to 4 s, at most 10 lines and a handful of draw calls, with detail from scene 2. Same CLI path and models, same 20 asks twice, before and after. Time to first scene: median 5.0 s before, 5.5 s after; worst 7.9 s before, 9.2 s after. The target was 3.5 s or less, so it missed. Quality did not hold where it counts: scene 1 frames passing the look check went from 4 of 40 to 0 of 40, and films with 80% of frames passing from 15% to 10%. Overall frame pass rate moved 43.8% to 46.0%, which is run-to-run noise. A shorter scene is not a faster start: the wait is the CLI starting and the model's first tokens, not the length of the scene. We reverted the prompt change. Next: only a faster path that holds quality, or a better wait screen. Contact sheets below, before then after. - Oct 6, 2026
Scene 1 over the API did not make films start faster
The plan: skip the claude CLI process, stream scene 1 from a small fast model (Gemini 2.5 Flash Lite, thinking off) over the API with the same prompt, and let the big model write the rest in parallel. We ran the same 20 asks twice, before and after. Time to first scene: median 5.1 s before, 4.9 s after; worst 8.1 s before, 9.4 s after. The target was 2.5 s or less, so it missed. The process start was not the cost: the small model still takes about 4 s to write one full drawing scene. Frame pass rate fell from 47.6% to 42.6% (229 and 230 frames), plain drawings went 18 to 26 and off-subject 28 to 32, so the small model's scene 1 also looks worse. Films with 80% of frames passing: 15% to 7.5%. Rule we set: keep the fast path only if the pass rate holds. It did not, so the plugin change is not shipped and films keep the CLI haiku opener. Next idea: a shorter first scene (fewer calls, one idea) so the model has less to write before the film starts. Contact sheets below, before then after. - Oct 6, 2026
Films are now checked frame by frame
The look pass renders one frame from the middle of every scene and checks it: blank, text cut off, labels overlapping, too few colors, nothing moving, plus a vision model look per frame. We ran 20 asks twice, before and after two generic fixes: the drawing helper keeps labels off each other and out of the caption band, and the film prompt now spells out layout and how to draw the real thing. Frame pass rate 34.5% before, 47.4% after (229 and 230 frames). Films with 80% of frames passing: 12.5% to 17.5%. Frames that hold still: 35 to 11. Plain drawings: 44 to 29. Overlapping labels went 3 to 16, which is run noise (an earlier try had 1) and the next thing to fix. First scene time went from 4.0 s to 5.3 s median, over the 1 s we allowed, and the plain or off-subject drawings are still the top failure. Contact sheets below, before then after. - Oct 6, 2026
The chat-is-home Thought now has a clip and a Try it link
The Thought Chat is home, the stage is for pictures now opens with a Try it button to the playground demo and has it again right after the fold chip part. It also plays a 14 second phone clip of the demo, dark first, then light, sped up so the whole story fits: a sketch takes the stage, a deck and timers follow, and the older ones fold into one chip in the chat. - Oct 6, 2026
Try chat is home in the playground
The playground has a new demo, Chat is home. It is the real web thread on a script, not a drawing of one: a plain answer and a choose stay in the chat, a sketch takes the stage, then a deck and timers take it in turn while the older ones fold into ONE chip in the thread, and the script taps the chip to open them in place. Then it loops. Reduce Motion gets the still end state. Dark and light. Checked in a prod build: 24 checks, two full plays each in dark and light, no console errors from the demo. Shots: a plain answer in the chat, a sketch on the stage, the chip before and after a tap, dark then light. - Oct 6, 2026
Chat is home on the web too
The web twin of the app's chat-is-home pick, now proved in a real browser. Plain words and plain questions land in the chat with their buttons inline, no full-screen stage. A deck, a plan, a sketch, a timer or a motion film opens the stage. Three stage replies in a row leave the newest on the stage and fold the older ones into one chip in the thread; a tap on the chip opens them in place and a second tap folds them again. The test found two bugs and both are fixed: the chip never appeared while new replies arrived, and opening it threw a full-screen timer over the chat. Dark and light, 52 checks, two runs in a row. Shots: a plain answer in the chat, a timer on the stage, the chip before and after a tap, dark then light. - Oct 6, 2026
A drawn phone plays before into after on the web too
The web twin of the app change. A sketch with frame=phone and an after used to draw two static outlines side by side. Now it is one phone with a bezel, a status bar and a home bar: a red BEFORE badge while the old rows show, then a green AFTER badge with the new rows lit, about 3 seconds a side, looping. The numbered notes of the side on show sit underneath the phone, and each numbered row carries its number. With prefers-reduced-motion the phone holds the after. A phone with no after is one still device. Windows and chat bubbles are unchanged, and the YL format did not change. Tests: a unit test for the loop (side per tick, badge, numbered notes, reduced motion) and a web e2e on the /web stage, dark and light, with and without reduced motion. Shots: the /web stage, before then after, dark and light. - Oct 6, 2026
A Thought: films start in about six seconds
A new Thought draws the before and after: nine live runs, first frame in about six seconds, nine of nine under ten. It carries the chart and the live clip. - Oct 6, 2026
Films start in about 6 seconds, every time
The first scene of a film is now written by a small fast model with its thinking turned off, while a bigger model writes the rest at the same time. Same three asks as last time, three runs each on www.yuigui.com/web. Engine: 5.1, 5.9, 8.0 seconds to the first frame. Settings: 5.6, 6.5, 7.3. Compound interest: 4.9, 5.7, 5.8. That is 9 of 9 under 10 seconds, median 5.8, up from 6 of 9. Two traps on the way: the small model names scenes with spaces, which the parser now accepts, and a cold start costs about 3 seconds. Commit: https://github.com/postscarcityai/yui/commit/57f1705e. Numbers: spec/MOTION.md section 3b. - Oct 6, 2026
A real agent's film on the web, timed
A throwaway account with a real agent, a real browser on www.yuigui.com/web, three asks: how a car engine works, what changed on the settings screen, how compound interest grows. Three runs each, ask sent to first frame. Engine: 28.7, 5.7, 20.1 seconds. Settings: 5.6, 5.7, 7.1. Compound interest: 5.3, 6.7, 12.9. That is 6 of 9 under the 10 second goal, median 6.7. The slow ones are the plugin's film writer taking its time, not the site: once scene 1 lands it plays at once. Every film ran 5 to 6 scenes and finished 32 to 60 seconds after the ask. No raw text was shown on any run. Close put each one back in the thread as one line and one Watch again chip. The gateway today does not stream films yet (it needs a restart onto the new plugin), so the same ask draws as a sketch, which is the fallback working. Next: a faster scene 1 to get 9 of 9. - Oct 6, 2026
Films play on the web
A motion line from any agent now plays as a film on www.yuigui.com/web, the same as the app. The film arrives one scene at a time, as the plugin writes it. Scene 1 goes into the player the second it lands, every later scene is added to the same player while it runs, and a closing row says the film is whole. Tap Close, press Esc, or tap once it has ended and you are back on the stage. In the chat there is one line for the film and a Watch again chip, not a row per scene. An agent on an older plugin that sends only the ask gets it drawn as a sketch, never as raw text. With Reduce Motion on nothing plays: you get a still frame for each scene, with the words it says, and arrows to step through. Dark and light are both shown here. Tests: 73 checks in a real browser at phone and desktop width, light and dark, plus unit tests for the hand-off from the stream to the player. - Oct 6, 2026
Draw anything, and make it move: the motion system
Chris: "I want a really flexible system for drawing", and "it's just explaining something", a concept or the project we are working on. So there are no templates. The model gets a drawing kit (every line, shape, callout, camera move, chart, diagram link, before/after wipe, magnifier, map, 3D solid and particle swarm draws on and takes a progress value) and writes the film as code, one scene at a time, each scene playing the moment it is written. The same player runs on this site and inside the app. The test set is 20 asks run twice, half work (a settings change, a plan and where we are, how five parts fit, a bug and its fix, a launch status, a day) and half concepts (a heart, an engine, Rome, a roast chicken, anxiety, rent or buy, tax brackets). All 40 films render clean through the real player in headless Chrome: no scene throws, none draws nothing for a second or more. One at a time, scene 1 is complete 5.25 s after the ask (median, worst 10.2 s); a film is about 27 s and costs about $0.076 to make. Play every one on /motion. The app's native player now loads this kit; the agent-facing line and the plugin that makes the film are the next cards.
- Oct 6, 2026
A Thought: We tried one short scene for small asks
The Thought small-asks-one-short-scene says plainly that the small tier missed and was reverted. It shows the before and after contact sheets as a compare, the rule that picks a small ask, the numbers (time 21.7 s to 6.3 s, scenes 5 to 1, frame pass 34% to 0%, 10% after a better prompt), why the fast model's one scene is the weak one, and the next try with the big model. Links /web, /motion and the films-draw-the-real-thing Thought. - Oct 6, 2026
A Thought: We tried to make films draw the real thing
The Thought films-draw-the-real-thing says plainly that the real-object kit missed and was reverted. It shows the before and after contact sheets as a compare, the three causes of boxes labelled engine, what we tried, the numbers (plain 30 to 19, off-subject 36 to 32, cramped 15 to 37), what did improve, and the next idea. Links /web, /motion and the look-pass Thought. - Oct 6, 2026
A Thought: Films now say what they are drawing
The Thought films-say-what-they-draw says that two tries to start films sooner missed, so the wait now has words. It shows the ring line before scene 1 and the held-frame line between scenes as a compare, says the line never covers a playing scene, why it leaves off the scene count, that the plugin sends the same words as a working row, and the film test result, 101 of 101. Links /web, /motion and the two earlier Thoughts. - Oct 6, 2026
A Thought: A shorter first scene did not help either
The Thought a-shorter-first-scene says plainly that asking for a smaller first scene missed. It shows the before and after contact sheets as a compare, the first-scene and pass-rate numbers, what got faster (nothing, the median moved the wrong way), what did not (the process start and first tokens, not scene length, and the look of scene 1), and the two ideas left. Links the motion page and the films-start-fast Thought. - Oct 6, 2026
A Thought: Films did not start faster
The Thought films-start-fast says plainly that the fast first scene missed. It shows the before and after contact sheets as a compare, the first-scene and pass-rate numbers, what got faster (almost nothing), what did not (about 4 s to write one scene on any small model), and the next idea, a shorter first scene. Links to /motion. - Oct 6, 2026
A Thought: Films get a look pass
The Thought films-get-a-look-pass shows the before and after contact sheets as a compare, the pass rate and first-scene time as numbers, one plain account of what failed and the generic fix, and a link to /motion. - Oct 6, 2026
A Thought: Chat is home, the stage is for pictures
A Thought with a before and an after of a plain answer (it took the whole screen, now it sits in chat), the timer that does open the stage, and the fold chip before and after a tap. It quotes Chris's Sep 26 note already on the site. Says plainly the app change rides the next TestFlight and the web side was proved in a browser. Dark first, then light. - Oct 6, 2026
A Thought: Yui makes its own design picks
Chris handed three open picks to Yui: make the best decision and get going. The Thought shows each as a before and an after, dark first. The stage holds only your newest answer, with chat as home. The drawing look is the animated wireframe, one phone and one short caption. The working screen puts its words in the orb's light and the seconds in a glass pill. Each pick gets one or two plain sentences on why it won. - Oct 6, 2026
One thought per full screen, built
Yui picked A of the three mocks from Oct 5 (Chris left the pick to Yui). The stage now holds only the newest answer, not every message since your last words. It stays up only for a real visual: a deck or plan page, a drawing, a timer, a film or a form. Plain words and plain questions drop to the chat when the answer lands. Two or more older stage replies fold into one chip in chat; tap it and they open in place. Same rules in the app (yui 59c2ad9, 0e7e7f7, 9ae4217) and on the web (yuigui f5f45de6). It is on TestFlight as build 562. Shots: the pile before, then the picked layout, dark. - Oct 6, 2026
A drawn phone is an animated wireframe
From TestFlight feedback: 'you should totally be able to animate that. How can we re-create wireframes of these UI?' A drawn phone is now a glass-bezelled device with a status bar and a home indicator. With a before and an after it plays one into the other and loops: struck rows and a red BEFORE badge, then lit rows and a green AFTER badge, with the numbered notes of whichever side is showing underneath. Reduce Motion holds the after. Windows and chat bubbles are unchanged. Three directions were drawn (a glass page, an animated wireframe, a story strip); Yui picked the wireframe. It is on TestFlight as build 562. Shots: the before, then the after, dark. - Oct 6, 2026
The working screen is lighter and more alive
From TestFlight feedback. The top line gives the gist of what you asked instead of your exact words. The label is light and tinted by the shader's colors, and each new word fades in and out. Seconds sit in a small floating glass pill. 'Running a command' is gone: 25 friendly verbs (reading, searching, building, deploying) with a soft fallback. Two layouts were built; the words-in-the-light one (A) was picked and the glass-card one dropped. Shots are the picked layout; the first image is the old screen. Dark first, then light. - Oct 6, 2026
The any-model Thought gets the Grok, Le Chat and Gemini how-to
A dated note in the Thought 'Yui is the screen for any model': Yui has a how-to for Grok, Le Chat and Gemini, one URL each, linked from the post. It says plainly that none of the three was tried live in its app (each needs a real account), only the server side was checked with no sign-in. No launch promise, no listing claims. Dark first, then light. - Oct 6, 2026
Add Yui to Grok, Le Chat and Gemini by pasting one URL
Each guide comes from the provider's own docs read on Oct 6 2026: grok.com/connectors > New Connector > Custom; Le Chat Connectors > Add Connector > Custom MCP Connector (admin only, auto-detects OAuth 2.1); Gemini Settings > Connected Apps > Add a custom app (personal US Google account, 18+, English). The server side was checked with no account: a cold request gets a 401 with WWW-Authenticate, the OAuth metadata and dynamic registration answer. None of the three was tried live, since each needs Chris's own account, and every guide says so. The Ecosystems page rows and its #2 item now point at the guides. Dark first, then light. - Oct 6, 2026
A Thought: Yui is the screen for any model
The Thought opens with a dark table of seven providers read on Oct 6 2026: four open to any user by pasting a server address (Anthropic as a custom connector, Grok, Le Chat and, by one blog's account, Gemini), two that work for one account or need a build (OpenAI developer mode, Apple App Intents in iOS 27), and Meta with nothing for outside apps. The first one to go to is Anthropic, because it is the only directory with a self-serve listing. It is not submitted and the post promises no date. It links the ecosystems page for every source. Dark first, then light. - Oct 6, 2026
Where Yui can plug in, every model provider
One table: sign in, app surface, directory and review rules, what Yui already has that fits, status, and a source with the day it was read. Findings: Claude has the only self-serve directory, listed as a Community connector by default; Sign in with ChatGPT is a limited trial for commercial partners but open-source apps like Yui get self-serve plan usage; Grok, Le Chat and the Gemini app take a pasted MCP URL with no review; Meta has nothing to list on; Apple's door is App Intents in iOS 27. The ranked list has five items, each with one build card, a size and whether it needs Chris. Nothing was signed up for, applied to or posted. Dark first, then light. - Oct 6, 2026
The small-models Thought says what the llama fix did
A new section, What the llama fix did: replaying 90 saved llama3.2:3b answers, 4 passed before the fix and 36 after; live, llama still makes 1 or 2 films of 9, gemma4 and qwen2.5 make 9 of 9. Plain answers stay plain text on purpose: a short model's plain answer is still a fine answer. No new post. Commit https://github.com/postscarcityai/yuigui/commit/9a1f5b60. - Oct 6, 2026
The models page shows which small models draw
The Small models line said qwen2.5:7b draws simple screens and promised a score later. It is now a table: gemma4:e4b (9.6 GB) screens 9 of 9, films 9 of 9; qwen2.5:7b (4.7 GB) screens 9 of 9, films 8 of 9; llama3.2:3b (2.0 GB) screens 9 of 9, films 5 of 9. All on a stock Ollama with a 4,096 window, with a one-line verdict each. Every number links to its progress entry or Thought, the context advice stays, and the stale promise is replaced by where it stands: the channel guide eval shipped Sep 24 and these are the per-model scores. Dark shot first, then light. - Oct 6, 2026
The small llama gets its film back
Follow-up to INT-28. Replaying 90 saved llama3.2:3b answers through the old and the new bridge: 4 of 90 passed before, 36 of 90 after (rainbow 2 to 15 of 30, bill 0 to 10, compound interest 2 to 11). gemma4:e4b 9 of 9 and qwen2.5:7b 9 of 9 are unchanged. Fixes, any model: a reply to a how or why question that is 2 to 4 short sentences, each in its own quotes, brackets or backticks, or wholly quoted, or ending in a stray closing quote, becomes one line and a film; facts written above a one-scrap film join its ask; motion lines dressed in brackets or backticks are read; an attribute alone on the next line joins its component. Not done on purpose: an invented line like sign Path is not guessed into a film (the guide has no rule that says so), and plain unmarked sentences stay text so a normal answer is never turned into a film. The 7 of 9 target was not reached: llama still derails inside one thread. Client tests 93 of 93, stream 29 of 29, phone 4 of 4. Commit https://github.com/postscarcityai/yui/commit/69c5c8d. - Oct 6, 2026
A Thought: small models write films
The Thought opens with the dark thread where gemma4:e4b answers with one line and a film card, then a chart of nine runs per model: gemma4:e4b 9 of 9, qwen2.5:7b 8 of 9, llama3.2:3b 5 of 9, up from 0 of 9. It shows the llama before and after as text, names the one bridge fix in plain words, and keeps the misses in. The light shot is the first frame of a film, which is a loading ring. - Oct 6, 2026
Small models explain with a film
Asked three explain questions (how does a rainbow form, how does a bill become law, explain compound interest like I'm five), three live runs each on a stock Ollama. Pass means one short line and a motion line that parses, 2 to 4 sentences, under 80 words. gemma4:e4b 9 of 9, qwen2.5:7b 8 of 9, llama3.2:3b 5 of 9. The 3B llama before: 0 of 9, always a card, form or pick instead of a film. Bridge fixes, any model: a motion ask with no quotes, split over lines or with an open quote is joined and quoted; a reply with a film keeps one short line above it and drops the prose a small model adds below; the short guide now carries the film rule. Misses left raw: qwen once chained facts into one sentence; llama sometimes writes three plain lines with no fence, or an invented line like sign or animation. Stream suite 29 of 29, client tests 88 of 88, phone suite green on all three after reruns (one network timeout, one bad screen head from llama). Commit https://github.com/postscarcityai/yui/commit/d3d24d6a. - Oct 6, 2026
The small-models Thought shows the llama fix
The Thought stopped showing the stray [Response:] bubble as an open flaw. It now says it is fixed, with a drag-to-wipe compare of the llama3.2:3b Drink screen before and after, and one line on why: a small model talks to itself and the bridge should not show that as a reply. No new post, every other line unchanged. The compare is in light; no dark before shot was taken at the time. - Oct 6, 2026
A Thought on explainers drawing every page
Chris asked for an ELI5 and got pages of text. The new Thought shows the before and the after side by side, dark first then light, and the one-line why: a page with no picture sends the deck back for one redraw. You can play the same deck in the playground. - Oct 6, 2026
Explainers draw every page
Chris, Oct 5: "I asked for an eli5 for string theory. I got a bunch of text on multiple screens. No drawings, no charts, no nothing." Three fixes. The agent prompt now carries three worked ELI5 decks with a picture on every page, so models copy the shape instead of reading one more rule. A runtime guard checks an explain ask: a deck with a page that has no picture gets one redraw pass, kept only when it is better. Five new eval cases score every page for a drawing. On GLM 5.2 with the native prompt: 3/5 before, 5/5 after, on three runs each. The real runtime on three asks, four runs each: 12 of 12 saved decks fully drawn. Live on the native agents now. - Oct 6, 2026
Your own model remembers the thread
Before: three checks failed on the bridge. After a tap the model got no earlier turns at all ('(nothing before)'), so it could not know what the tap answered. Cause: the live channel guide is about 10,000 tokens and an 8,192 window still got all of it, which left no room, so the whole history was cut. Now the short guide goes whenever the full one would take over a third of the window, so the oldest turns trim first and the newest always stay. After: the stream suite is 29 of 29 (it was 26 of 29), and qwen2.5:7b, gemma4:e4b and llama3.2:3b are each still 9 of 9. One more fix: a server that says the context is too long now tells you to lower the window, and the check says so. - Oct 6, 2026
A Thought: every small model draws
The Thought at /thoughts/every-small-model-draws lays the three models side by side: a chart of model, size and live runs, the Drink screen each one drew, and the dark thread where each remembers the tap. The 3B llama is shown rough, with its stray [Response:] bubble. The generic bridge fixes behind it are listed in one short list. - Oct 6, 2026
Small models stop talking to themselves
Before, llama3.2:3b drew the Drink screen and then added a bubble that began with [Response:], and after a tap it stacked a second screen nobody asked for. The bridge now strips a leading role label from any bubble (Response:, Assistant:, [Assistant], a stray [yui]), drops the bubble when nothing is left, and never touches a label inside a quoted or fenced line. After a tap it keeps the first of back-to-back screens. It works for any model, not just llama. Six live llama runs: no label left in any. Stream suite 29 of 29, Ollama suite 9 of 9 on qwen2.5:7b, gemma4:e4b and llama3.2:3b, phone suite green on all three (llama needed one rerun: it wrote a bad screen head once). - Oct 6, 2026
A second small local model family draws screens
Same ask on each, three live runs and a phone run. All three draw the Drink screen with Tea and Coffee and none puts raw text on the stage. The 3B llama is the roughest: after a tap it sometimes adds a stray [Response:] line or a made-up follow-up screen, and it lost one kill -9 check to timing before four clean reruns. The bridge got generic repairs along the way: an empty answer is asked once more, a bare Yui Line gets its fence, an unclosed fence is closed, a stray [yui] marker is dropped. Model, size, window, runs, drew: qwen2.5:7b, 4.7 GB, 4,096, 3 of 3, yes. gemma4:e4b, 9.6 GB, 4,096, 3 of 3, yes. llama3.2:3b, 2.0 GB, 4,096, 3 of 3, yes. - Oct 6, 2026
A Thought: a model on your laptop draws Yui screens
The Thought opens with the before and after, then the chart: today's guide is 10,242 tokens by qwen2.5:7b's own count, a stock Ollama reads 4,096, and the short guide the bridge now sends is 339. It says what broke, what changed, and that three live runs and three phone runs passed. The card that shipped the fix said about 600 tokens for the short guide. Counted properly it is 339. - Oct 6, 2026
A small local model draws screens again
A small model on a stock Ollama gets a 4,096 token window, and the full channel guide filled it. It also tagged its screens yml, so the app showed raw text. Two fixes in the model bridge: a window under 8,000 tokens now gets a short guide of about 600 tokens, and a yml, yaml or untagged block that opens with a Yui Line is retagged yui. Ollama ignores a window size sent through its OpenAI-style endpoint (I checked: it stays at 4,096), so the short guide is the fix for a stock install. Three runs in a row on a simulator with qwen2.5:7b: the Drink screen draws, a tap on Tea is answered once, and the model remembers the tap after a relaunch. Commit: https://github.com/postscarcityai/yui/commit/7be82b77. - Oct 6, 2026
The site sync no longer stops on card ids
The content sync checks every public file for private shapes, and a board task id is one. Four entries from the voice first story had one in their card field, and those cards have no public key, so no board tile ever pointed at them. The ids are gone and the entries stay on /progress. The sync passes and the timeline updates again. - Oct 6, 2026
A Thought: films play in your browser too, timed
New Thought with the clip and the measured numbers from nine live runs on www.yuigui.com/web: three asks, three runs each. Six first frames under 10 seconds, median 6.7, three slower ones named plainly. Every film had 5 to 6 scenes, and Close returned to the thread with one line and a Watch again chip. It links the two earlier film Thoughts instead of repeating them. - Oct 6, 2026
Films play on your phone: build 545 is in TestFlight
Build 545 (Yui 0.6.4) puts the drawing films in the app. An agent answers with a film, it plays full screen, and scene one starts the moment it is written. With Reduce Motion on, you get a still frame for each scene instead. The clip is the phone simulator playing a heart film on build 545's code, dark and then light. The longer story of how the films are drawn is in the Thought from earlier today. - Oct 6, 2026
Yui draws anything: a Thought with the films
Chris asked for one flexible way to draw: any agent, mid-anything, shows what it means. The Thought leads with a clip of three films, then a settings change drawn frame by frame, the 20 test asks (half work, half ideas), and the same films on the phone. - Oct 6, 2026
The phone plays the films: full screen, dark and light, Reduce Motion still
Ships in TestFlight build 545 (Yui 0.6.4). The app's player runs the same kit as the site, bundled inside the app with no network. A film arrives as a motion block, scene 1 plays at once and later scenes feed in while it plays. three.js loads only when a film asks for it, from the app, never from the web. With Reduce Motion on, the player shows the last frame, still. The voice-over cue slot (api.say) is intact. 24 unit tests and the full-screen UI test pass on a fresh simulator; six gallery films (engine, heart, bug, chicken, plan, robot) were played in dark and light. - Oct 5, 2026
Explainers become real motion: a Thought with the film
Chris asked for string theory like he was five and got text slides. The Thought shows the three ways we tried, the one he picked, and the streamed film playing: first scene in 6.6 seconds, whole film in 21. - Oct 5, 2026
The roadmap says where Yui is today, and a stale one gets caught
The section called build 392 the newest on phones and a release "tomorrow" that had come and gone five times. It now reads Oct 5: Yui 0.6.4 (build 535) first, 0.6.3 (build 522) before it, the web app, drawing, what is building (the board) and the next release (the 6 am daily run). The freshness check missed it because the section named no next build to compare. It now fails when a "Where Yui is now" heading is more than 3 days old, or when its "On phones" build is below the newest VALID one. Commit 97b1b97b, with tests. - Oct 5, 2026
Yui on the web
18 changes in one push.
- Oct 5, 2026
Motion explainers: the film starts playing in 7 seconds
Chris picked A, with a little of B. So the explainer is now a full-screen film the model writes as scenes. Each scene goes into a sandboxed player the moment it is complete, so scene 1 plays while the rest is still being written. Measured on the same ask (ELI5 string theory): Sonnet 5.5 at low effort had scene 1 in 6.6 s and the whole 7-scene film in 21 s; Opus 5.5 at low effort took 16.8 s to scene 1 and 40 s for the film. Before, one page took 473 to 527 s. B's camera, morph and path helpers are now calls the model can make inside a scene. Few words on screen, so a voice-over can carry it. The demo replays the recorded run on its own clock. The proposal is updated in spec/MOTION.md. - Oct 5, 2026
Motion explainers: the same story, three ways to make it move
Chris, Oct 5: "I want this to look like a professionally designed explainer video more than these boring slide by slide explanations. Some camera movements, some shapes that transform, the ability to make something totally unique every time." Same ask, ELI5 string theory, three ways. A: the model writes a whole page in a sandbox (richest, 8 minutes, up to $2.41). B: a small scene layer in YL drawn by our renderer (cheap and exact, but capped by its words). C: the title, line and buttons stay native and tappable, the model writes only the motion piece (a third of the cost, almost the look of A, taps come back as events). The recommendation is C, with B's camera and morph as its helpers. The proposal, the risks and the exact prompts are in spec/MOTION.md. - Oct 5, 2026
Reminders ring on the web with the tab closed
The last open web row. An agent's reply carries your reminders as one set; the newest reply replaces it and an older one never undoes it. Yui now keeps that set on the server with your browser's time zone, and a one-minute scheduler sends a Web Push at each reminder's time to your browsers only, tab open or not, even while that thread is open. The open-tab path stays: when the push has already rung a reminder, the tab marks it rung and stays quiet, and both use one notification tag, so you never get it twice. A reminder more than ten minutes late is dropped, like an alarm already past on the phone. Checked on the live backend with a real Chrome: it subscribed, the tab was closed, a throwaway agent set a reminder two minutes out, and at 21:48:00 New York the notification appeared with the agent's name and words. Database checks on Postgres 16 cover the newest-set rule, the zone, moved times, stale ones and clearing; deno and site unit tests cover the payload and the dedupe. - Oct 5, 2026
Change the workout mid-set, on the web too
The web twin of the phone fix for Chris's TestFlight note: "I should be able to control the music from here. I should be able to make edits on the fly." Edit on a move opens a sheet: swap it (three chips for what the move is, or any name), a set more or fewer, reps or seconds, weight, add a move after it, or skip it. The sheet lists what changed, and the plan's one answer carries an edits line per change in the app's own words (Swapped Goblet squat for Leg press, Added Lunge 3x10), plus an added move's own ids, so an agent reads one format. The browser cannot drive Apple Music, so the strip appears only when the page has audio or video playing or paused, with play or pause and, only where the page set a next-track handler, next. Nothing playing, no strip, no dead button. Unit tests mirror the app's (a swap keeps the sets, add appends, skip marks, the edits list is exact) and the workout e2e swaps a move mid-workout, finishes and reads the swap off the answer. Dark first, then light. - Oct 5, 2026
The web drawer is calm too: chats first, nothing else
The web twin of Chris's TestFlight note that the left side was too busy. Home in the drawer lists the chats with no heading and no rows below them. The agent's backlog moved under Agent, in a short list called More. Next up, the Screens rows and the Shortcuts rows are gone: Review's count, the pills beside the chat and the chips over the bar already do those jobs. Top bar, bottom bar and Review stay put. A new e2e (homechats) checks Home draws no next up, backlog, screen, shortcut or command rows, that More still opens the backlog row, dark and light; the older drawer tests now go through the chips and More. - Oct 5, 2026
Web pages are named for what is on them
The web twin of Chris's TestFlight note: a side page that just said Screen 2 meant nothing. The pill and the drawer row now name a page the way the phone does: its saved name read as words (this-week becomes This week), else the first title on it, else a word for what it holds, else Page. Long names stop at 22 characters with an ellipsis. A unit test covers each step and an e2e sends a page with a timer and checks Timer shows in the pill and the drawer with no Screen N anywhere, dark and light. - Oct 5, 2026
Start opens the workout on the web too, one set at a time
The web twin of the phone fix. Start on Today's workout sat on a page beside the home, so the answer landed out of sight and it looked like nothing happened. Now Start brings the home back, and the workout that answers opens as the runner, full screen, with no extra page in between. A set you tap asks what was done (Set 1 of 3 done): reps or seconds and weight, chips around the plan's number, a stepper, a mic for "8 reps at 135". Log set ticks it and starts the rest (90 seconds, or the plan's own), on the wall clock so a background tab still rings on time, with +15s and Skip rest. The next set starts where the last one ended, and the whole session still goes up as the plan's one line. A Review row for a workout closes the drawer and opens the runner on the stage; the drawer never draws it. Checked by unit tests for logging a set and the rest, and a browser test that walks Start, the runner, the log, the rest and the Review tap in dark and light. - Oct 5, 2026
The drawings on the web are checked on every run
The drawing kit shipped on the web with no test of its own, while tables had one. Now one test sends the real drawing replies (the Venn, the contour and callouts, the bent arrows, the hand drawn shapes and marks, and a Venn inside a plan page), draws them on a 390 wide screen in dark and light, and reads every shape back: it is drawn, its words show, the Venn overlap carries its word, a hand drawn stroke differs from the clean one, each mark sits on its target, nothing runs off the screen, and a reload draws the same picture. It found one real bug on the way: a picture inside a deck or plan page found no lines to draw, because only top level pictures were looked up. That is fixed. The test runs with the rest of the web suite. Shots are the arrow loop and the hand drawn sample, dark first, then light. - Oct 5, 2026
Link sweep: nothing broken
I crawled 565 pages and checked 3,301 internal links and images plus 1,935 anchors. All resolve. The share check passes on 48 pages and the library check on 51 presets, 15 flows and 60 items. Nothing needed fixing. Five outside links did not answer (four block bots, one Apple page moved); outside links are reported, never failed. - Oct 5, 2026
Function deploys unstuck, tests green
The deploy script refuses to ship a function while a database change is unrecorded. The table sync change (YUI-36) had been applied by hand, so the tables were live but the ledger had no row, and every deploy stopped. I confirmed the tables, their policies, the trigger and the cleanup job are on the live project, then recorded the missing row: nothing was changed, dropped or deleted. One test was also red: it looked 450 characters past a log call for the next step, and a newer line pushed it out of range. The code was right, the window was too small. Commit 3ee3baa. The deploy check now reports 53 migrations, none unapplied, and the plugin tests pass. - Oct 5, 2026
Your tables, synced and private
Step 1 of optional sync is live on the web. It is off until you turn it on in Settings > Data. Each row and each table's columns is sealed in your browser (AES-GCM) before it leaves, and filed under an opaque id, so the server never sees a table name, a column, a row key or a value. A second device joins with a 10 character code the first one shows: good for 2 minutes, works once, and it is not the key. The newest edit to a row wins on both devices. Turning sync off deletes the server's copy and every device keeps its tables. The tests: two browsers converge, the stored rows show nothing readable, a code works once, and the migration is checked on Postgres 16 (owner only, no agent host access). The app twin is parked as step 2. - Oct 5, 2026
A Thought: your agent keeps its own tables
The Thought walks through agent tables: the rows survive a restart on the phone, and the browser keeps the same table and a ticked row after a reload. Sync between the two is still to come. - Oct 5, 2026
Mark the spot by hand: scribbles, underlines and ticks
Split from the drawing kit (YUI-297). +hand on a box, circle, pill, blob, line, arrow or path draws a roughened stroke, and the wobble is seeded so the phone and the web will draw the same one. Three new kinds draw on in line order: scribble rings a spot with two loose loops (or hatches it in with +fill), underline sits under a shape, and check draws a tick in. Each takes to=id for a shape written before it, or at= and size=. With Reduce Motion they show finished. The spec, all four parsers' vectors (802 green), the scene numbers the app will read, the playground and /web renderers, a sample page and one rule line in the channel guide are in. The phone draws them next (YUI-299). - Oct 5, 2026
Agent tables work in the browser too
The app has had agent tables since YUI-89; /web only drew a table or query from its own reply, so a tick vanished on reload. Now /web keeps a store per person and agent in IndexedDB, applying table create, put and delete with the same code and limits as the app. A reply's lines are filed once, so loading the thread again never writes over a tick. Query views (table, list, chart, stat, send) read that store, a tick is written at once and stays quiet, Send hands the rows to the agent with its echo, and a refused line on a new reply is told to the agent once. Removing an agent removes its tables and signing out wipes them. The e2e builds the Arnold workouts reply, ticks Split squat, reloads and checks it is still ticked, in light and dark at 390 and desktop. Sync across devices is its own card, after the sync table takes tables. - Oct 5, 2026
Venns fit on a laptop too
YUI-293 found it: at 1280 wide the Venn in the Claude and ChatGPT connector grew to the full frame and the host clipped it. A drawing now never grows past 420 pixels wide in that view and keeps its shape, centred. /web and the playground already hold their column narrow, so the bug was only in the connector view and the fix is only there. I rebuilt the bundle, synced it into the live yui-mcp function, deployed it, and drew the drawing-kit sample from the live server in the MCP Apps reference host at 390 and 1280, dark first, then light. At 1280 the whole Venn and the whole contour, with its flood zone and callout, sit inside the frame. 390 is unchanged. - Oct 5, 2026
Claude and ChatGPT draw the Venn and the contour too
The drawing kit (YUI-291) was in the site and the bundle, but the live yui-mcp function still served the old view. I synced the new bundle into the function and deployed it, then called the live server's yui_show with the drawing-kit sample and drew it in the MCP Apps reference host, dark first, then light. The Venn blends where circles cross and the contour draws its rings, flood zone and callout. The channel guide is not changed: agents learn the kit once the phone draws it. Known: in a very wide host frame the Venn draws large and the frame clips it; that is its own card. - Oct 5, 2026
Draw a Venn, a contour or a loop with a few lines
Drawing kit, step 1 (Chris, Oct 2: "we can draw whatever we want"). An agent can now close a path into a zone (+close, +fill), cross filled circles so the colors blend where they meet (a Venn, with a word in the middle as its label), stack nested rings from a center (contour), curve any arrow (bend= or arc), span a range (bracket) and point at any spot (callout with a leader line). All of it is plain shape lines, animated with +draw and +grow, in light and dark. A shapes drawing is also a plan page's picture now, so a plan can show the overlap and ask the question after it. The spec has a section for each; four parsers (JS, Python, Kotlin, Rust) read the new lines and pass all 800 conformance vectors, and the scene model has its own tests. The app draws it next, once the look is picked (YUI-276). Doodle strokes stay with that. - Oct 5, 2026
Say your own answer on the web
When an agent asks a question with room for your own answer, the box that opens now takes your voice. Tap the mic beside it, say it, tap again, and the words are added to what is there. Send carries them. It works the same in the chat and on the stage, for a single choice and for a pick of several. The text fields inside a form, the note on a picture edit and a comment on a frame get the mic too. Where the browser has no speech recognition there is no mic, just the box. The check that every text field has a mic or a reason now reads these question screens as well, so a new field cannot slip past it. Tests: 41 new e2e checks (speech faked, dark and light, 390 px and 1280, chat and stage), a new unit test for the check, and the field mic, feedback mic and preset e2e plus the lib/web unit tests pass.
- Oct 5, 2026
A Thought: a question sits with its answers
New Thought on the change where a short line and the question it asks share one screen, with no empty page to tap through. Told in the before and after shots, dark and light. - Oct 5, 2026
A question sits on the page it asks about
Chris, Oct 5: "the question and the answers are on the next page and neither page is too full ... I don't want just clicks for no reason." The stage now draws a short line or drawing and the question it asks about on one screen. A long page, a map, a game or a timer still keeps its own page. The agent guide has the same rule as a hard rule with a before and after example. Rides the next daily build. - Oct 5, 2026
A Thought: Reminders ring with the tab closed
New Thought on the web reminders that now ring with the Yui tab closed: an agent sets one in a reply, you close the tab, the push lands at its time. The newest reply's set wins, a reminder rings once, and one more than 10 minutes late is dropped. Told in the dark and light proof shots. - Oct 5, 2026
One thought per full screen: three ways to stop the pile
Chris, Oct 5: "there's just like 30 pages and I don't think any of them related to each other ... isolating thoughts into these full screen grids and then everything else you just live in the chat, and then maybe we should try new chats." The cause: the stage plays every agent message after your last words as one turn, so build news, board status and push cards all land on one stage. Three ways out, drawn as phones. A: the stage holds only the newest answer and older ones fold into chips (smallest change). B: one stage per topic, dashes grouped with gaps, swipe down for the next topic. C: the agent starts a new chat when the topic changes. Chats already map one to one to Hermes sessions with shared memory, so C is honest, but a new session forgets the thread and the agent must judge topics. No app code yet: waiting for the pick. - Oct 5, 2026
A Thought: Yui 0.6.4, decks fill the screen, Home goes calm
New Thought for build 535 (Yui 0.6.4). It walks through Chris's Oct 5 notes in shots: decks that fill the screen and morph between pages, a Home that is only your chats, side pages named for what is on them, questions that show what they ask about, and workouts with music and edits mid-set. - Oct 5, 2026
New Thought: A question carries its own context
The story of Chris's note about two bare "Ship it?" questions, told in a new Thought: the line sits right above each question's buttons, on the phone and on the web. Before and after shots in light and dark. - Oct 5, 2026
Web questions say what they ask about
Chris on TestFlight: "This gives me absolutely no context. What am I shipping? I need context and action on the same screen." The app fixed it on Oct 5 and the web stage now does the same. When a turn ends in questions, each question carries the line and picture of its own reply that came right before it, drawn right above its buttons. A line is used once, so two replies that each end in "Ship it?" show their own two lines and never one under the other's question. A plan keeps playing its own pages, so its last page is never repeated. Unit tests cover the two replies, the words before a fence, a line taken once and the plan. An end-to-end check on the demo relay proves both lines sit above their buttons, in dark and light at phone size. - Oct 5, 2026
Web decks morph too
Chris on TestFlight said decks looked like a PowerPoint, cards and cards. The app fixed that on Oct 5, and the web stage now does the same. A deck of drawings runs edge to edge: no card, no border, no dots, no arrows. Drag and the drawing follows your finger: a shape with the same name on both pages stays one shape and slides, grows and changes colour into its new place, new shapes draw themselves on, old ones dissolve and labels retype. At rest it breathes. With Reduce Motion on it cross-fades. Tap the left third to go back, the rest to go on, and the arrow keys work too. Unit tests cover how shapes pair and the tween at the start, middle and end, and an end-to-end check proves one DOM node per shape across a page turn, in dark and light, at phone and desktop size. - Oct 5, 2026
Each question says what it asks about
Chris on TestFlight: a Before I go page asked "Ship it?" twice and gave no hint of what was shipping. "I need context and action on the same screen." Now each question on that page carries the line or picture from its own reply that came right before it, drawn right above its buttons. Agents get the same rule in the channel guide: a question's title names its subject, and two titles are never alike. Unit tests cover which line goes with which question; a UI test plays two questions, light and dark, and checks each one's context sits above it. It rides the next TestFlight build (commit 380958d). - Oct 5, 2026
A Thought: a deck is one drawing that morphs
New Thought: decks used to be a card with dots under it, a slide show. It shows the string theory deck as one stage whose shapes carry from page to page, in dark and light, with the real recordings. It names the pairing rule (id, then label, then kind) and why a GUI layer for agents should explain by changing shape instead of flipping pages. It says this rides the next TestFlight build. - Oct 5, 2026
A Thought: a page is named for what is on it
New Thought: the tabs beside your chat used to read Screen 2. It sets the old tab row against the new one with a drag-to-wipe slider, states the naming rule (saved name, else the first title on the page, else a plain word like Timer), and shows the tabs in dark and light. It says this rides the next TestFlight build. - Oct 5, 2026
Tabs named for what is on them
Chris on TestFlight, Oct 5: "I don't like that this just says screen 2 in the top." A screen's tab now takes its name from what is on it: the name it was saved under, else the title of its first card, stat, list or sketch, else a plain word for what it holds (Timer, List, Chart). "Screen N" never shows, in the tabs, the drawer or to VoiceOver. Five unit tests cover the name picker, and a UI test checks no tab reads Screen, in light and dark. It rides the next daily build. - Oct 5, 2026
Decks are a stage that morphs
Chris on TestFlight, about the string theory deck: a card in a card with a tiny drawing, like a PowerPoint deck. A paged deck now runs edge to edge on the stage, with no card header, no page dots and no pager arrows. The drawing takes about two thirds of the screen, with one big line of words under it. Shapes pair from page to page by id, then label, then kind. Your finger scrubs the drawing: the same shape slides, grows, changes colour and changes outline, new shapes draw themselves on, old ones dissolve and labels retype. At rest the drawing breathes. Reduce Motion gets a cross-fade. Tap the right half of the drawing to turn the page, the left half to go back. 18 unit tests cover the shape matcher and the tween, and a UI test checks the deck is full width with no dots or card header, dark and light. - Oct 5, 2026
Yui's home is a calm chat again
Swiping left on Yui's home showed a page of big agent cards, one per agent, each with an Open button. Chris on TestFlight: "Remove this screen." Yui's home is now two chips and the chat. The agents live where they always did, in the agent list behind the Yui pill. A phone that already had the page drops it on the next launch, and nothing else on it moves. Rides the next TestFlight build (commit f20780d). - Oct 5, 2026
Music and edits on the fly, inside the workout
Chris on TestFlight: control the music from the workout, and make edits on the fly. The runner now shows what is playing at the top, with back, play or pause and next; with nothing playing the strip is gone, so there are no dead buttons. The round button beside Skip move opens an edit sheet over the runner for the move on screen (on a rest, the one coming up): swap it for a move like it or type another, change its sets, reps or weight, or add a move after it. The clock keeps going. Cut the set you are on and the runner goes straight to the next move. The sheet and the finish screen list what changed, and the answer Arnold gets carries the same list, so the log matches what was done. Agents get guide v48: a workout to do now is the runner, never a list or a plan of questions. Checked by 29 unit tests (edits, cuts, relaunch) and UI tests for the music strip, its hidden state, and the edits in dark and light. - Oct 5, 2026
The drawer is the chats, and calm
Chris on TestFlight: the left drawer was too busy, chats then Flows, Next up, Backlog and Shortcuts stacked under them. Home now holds only the chats, with more air and no heading. My flows, pinned screens and the backlog moved to one quiet list under Agent > More. Next up, the screen rows and the shortcut rows are gone: the Review count, the pills beside the chat and the chips over the bar already do those jobs. A UI test checks Home holds no flow, backlog, pin or shortcut rows, dark and light, and fails on the old build. - Oct 5, 2026
A Thought: change the workout without stopping it
New Thought: change the workout without stopping it. It sets the old fixed list next to the runner you can bend: swap a move, change sets, reps or weight, skip one, with the music in reach. It says your agent is told what changed, and shows the phone and the web in dark and light. - Oct 5, 2026
A Thought: a workout is something you do
New Thought: a workout is something you do, not a list you read. It draws the old plan page next to the runner, then shows the runner in dark and light: Start opens one move at a time, full screen, asks reps and weight after each set, then rests. It says a workout never plays inside the drawer, and that it rides the next TestFlight build. - Oct 5, 2026
Start opens the workout, full screen
Start on Today's workout did nothing: its answer landed out of sight on the screen beside the chat, and the plan came first with a second Start. Now the answer opens the runner on its own, full screen, with no extra page. After each set it asks reps done and weight (chips around the target, a stepper, a mic), then a rest timer, then the next set, and sends one result at the end. Tapping a workout in Review closes the drawer and opens the runner full screen. Tests cover set logging, the rest, Start from the screen and the Review tap. It rides the next TestFlight build. - Oct 5, 2026
A Thought on checking every drawing twice
New Thought: every drawing, checked twice. It tells the story of the web drawing kit getting its own test (it caught a picture inside a plan page that drew nothing) and of the phone being held up next to the web page by page (six of seven matched, the closed flood zone was fixed, and a test now fails if a shape goes missing). It says the phone fix rides the next TestFlight build. - Oct 5, 2026
A Thought for build 522: say it first
Build 522 (Yui 0.6.3) is on TestFlight, so there is a new Thought for it. It shows each change in a shot: mics on every form, search and name field, group chat bar, instant screen switching, no X, a quieter drawer, answers that stay put, and the drawing kit on the phone. One before and after pair shows the form bar. It links the every-field-you-can-say Thought instead of repeating it. The Latest build line on the roadmap now names build 522. - Oct 5, 2026
Every drawing on the phone matches the web
I put the three drawing samples (drawkit, drawkit-plan, handdrawn) side by side with the web, page by page, dark and light. Six of seven pages already matched. One did not: a path with +close and +fill drew as an open dashed line on the phone, while the web draws a closed, washed zone. Fixed, and +sharp keeps straight sides. A new test walks every sample on the phone and fails if a shape label or a part goes missing, so a later look change cannot drop one silently. Left is the phone, right is the web. It rides the next TestFlight build. - Oct 5, 2026
A Thought: every agent can draw a table
The post covers reach: one guide line for agent owners, the same screen on the phone, in the playground and in an MCP host, and what the compat gate does for phones older than build 450 (the agent stops sending table commands to them). Build 450 is on TestFlight. - Oct 5, 2026
Agents keep tables instead of asking twice
Guide v47 has a new rule: a coach keeps its moves and their swaps in a table and queries it, never asking for the same thing twice. On the new eval case the old guide scored 0 of 3 and v47 scores 3 of 3; the full suite stays within its usual swing (105 and 107 of 126 against 108 and 106 of 125). The plugin sends table words only to builds from 450, the first TestFlight build with agent tables. The MCP App now draws bound tables too: the tables-workouts starter shows the week, today's session and the swaps inside a chat host. - Oct 5, 2026
A Thought: agents mark the spot by hand
The post covers the hand drawn marks (+hand, scribble, underline, check) and the callouts, brackets and arcs, with dark and light shots from the web and the phone. It links the playground demo. - Oct 5, 2026
Hand drawn marks on the phone
The app now ports the hand from the hub line for line: a seeded wobble roughens a box, circle, pill, blob, line, arrow, arc or path, and three marks draw on over the picture, a scribble that rings a spot or hatches it in, an underline, and a check. The hand drawn scene from the hub runs in the app tests, so the points match to the thousandth. With Reduce Motion the marks show finished. Geometry only: no colour or type changes. Shots are the sample on a simulator, dark first, then light. - Oct 5, 2026
Callouts, brackets and bent arrows on the phone
The app used to draw callout, bracket and arc as a plain box. Now a callout is a boxed label with a leader and a dot on what it points at, a bracket spans two places with a tick at each end and its label beyond, and an arc is an arrow that bends by default. The scene model matches the hub, and the hub drawing-kit vectors run in the app tests. Shots are pages 3 and 4 of the drawing-kit sample on a simulator, dark first, then light. - Oct 5, 2026
Drawing on the phone, proven
Agents can now draw a small picture in a few lines on any screen: filled circles that blend where they cross with a word in each overlap, nested contour rings, a free closed zone, a scribbled ring round something on a real picture, and arrows that bend. It works in a chat card, on a plan's full-screen page, in light and dark, and Reduce Motion shows the finished drawing. Callouts, brackets and a hand-drawn style for every shape are still to come on the phone. This rides the next TestFlight build. - Oct 5, 2026
Four tester notes, proven
Four fixes from TestFlight testers were already on main. This pass built them on a simulator, took dark and light shots of each, and gave every note its own entry below: Ask and answer on one screen, Tap left to go back, Fewer buttons on the stage, and Add an agent, tucked away. They ride the next TestFlight build. - Oct 5, 2026
Ask and answer on one screen
A TestFlight tester hated being shown options with the thing they were choosing between on another screen. The last page of a plan now sits on the questions screen above its questions, so you read it and answer in one place. When the question names earlier pages, like Look A, B and C, those pages show as a row of small pictures above it, and a tap on a picture is the answer. A UI test plays a three-look plan, checks the pictures and the tap, light and dark. It rides the next TestFlight build. - Oct 5, 2026
Tap left to go back
A TestFlight tester could tap to move forward on full-screen views but not back on the questions page. A tap on its left third now goes back to the page before, the way a chunk page already did. Buttons, pickers and fields keep their own taps. The shots show the questions page, then the page it goes back to after one tap on the left. It rides the next TestFlight build. - Oct 5, 2026
Add an agent, tucked away
A TestFlight tester wanted Add an agent in the agents pop-up with the other agents. Tap the agent bar in the drawer and it is the last row of the list, a plain row with a plus, above Edit list. The big button in the drawer is gone. It rides the next TestFlight build. - Oct 5, 2026
A new Thought: agents can draw a Venn now
New Thought on the drawing kit. Pictures first: three circles that blend where they cross, a hill with rings and a flood zone, a phone feed with callouts and a bracket, a loop of bent arrows, and a plan page that shows a Venn then asks the question. Dark and light, with a drag between them. It says plainly that the phone draws these after the next look pick, no date. Live demo at /playground?demo=drawkit. - Oct 5, 2026
The phone reads Venns and contours
The Swift parser in the app now passes all 32-shapes vectors, the same ones JS, Python, Kotlin and Rust pass, and the plugin's Python copy is level too. A shape line with a new kind never crashes the phone: an unknown kind draws nothing. Nothing changes on screen yet. Drawing them waits on the look pick (YUI-276). See what the new lines make at /playground?demo=drawkit. - Oct 5, 2026
A question nobody answered says so, with Try again
On Oct 2 a question about string theory got "Nothing to show for that" and Chris read it as Yui giving up. The cause was on the server: an old Stop from Sep 29 still sat in the thread, and the next turn counted it as a Stop for the new question, so the hosted agent wrote nothing at all. The app then had no reply to draw and fell back to the empty look. Now a question with no reply at all shows "No answer came back." with Try again, which sends the same words again. The ask stays on screen above it. It ships in build 451. The server side, an old Stop cancelling a later question, is its own card. - Oct 5, 2026
The docs say the phone keeps stage answers too
The Yui Lines spec and the progress log said the phone's stage questions screen did not survive a relaunch yet. It does now, so the caveat is gone. Web and phone both keep answers until Send, and the phone keeps them across a kill and relaunch. The shots show a stage form before the app is closed and after it is opened again. - Oct 5, 2026
The stage questions keep what you typed
A form on the stage now keeps what you type until you send it. Kill the app, come back, or hop to another chat and back, and the fields are filled. Send clears them. Fields that look like a key, password, code or PIN are never kept. It reuses the same runner storage as plans and flows, one entry per question. Tests: 7 unit tests for the store (round trip, clear on send, secrets, cap), and a UI test in dark and light that types in a stage form, terminates the app and relaunches it. Both fields come back and Send is lit. Ships in the next daily build. - Oct 5, 2026
The spec says half-filled answers are kept
The Yui Lines spec has an Answers are kept section. Clients keep typed fields, taps, the slider and the page, per message, until Send. Keys, passwords, codes and PINs are never kept. An agent never re-sends a plan to restore answers. The channel guide (v46) carries the same one line, and the Developers page links to the rule. The web and the phone both keep them. - Oct 4, 2026
A test that keeps every field speakable
Every field you can type in has a mic now, and a new one cannot slip past. A unit test reads every app source file, finds each text field (TextField, SecureField, TextEditor) and fails, naming the file and line, if there is no mic beside it. A short list of fields are left out on purpose, each with its reason: keys and secrets, codes, a server address, a model id, the cron field, the code editor, and the message bars that carry their own mic. One field is marked as a known gap: the type-your-own box on a choice card has no mic yet, and it is on the board. It is the app twin of the check that guards the web. It passes on main. When I took the mic off Find an agent, it failed with AgentDrawer.swift:1063, and passed again when I put it back. Commit 00b7abd. It rides the next TestFlight build. - Oct 4, 2026
Voice first, the wrap-up in pictures
New Thought: every field you can type in, you can say. Pictures first: the phone and the web side by side, a drag-to-wipe before and after, the fields that got a mic, a small drawing of the fields left out on purpose (keys, codes, cron, the code editor), and the check on the web that fails the build when a new text field has neither a mic nor a place on that list. It links the voice strip on /web and value 10 on the values page. - Oct 4, 2026
Say names and searches
You no longer have to type a name or a search. A small mic now sits in the add-agent name field, the agent rename, the past-chats search, the chat title, Find an agent, and the caption field on the stage. Tap it, say it, tap again, and the words land in the field. Nothing saves or searches until you confirm, as before, and typing still works. Keys and codes (model keys, the vault, sign-in codes) have no mic on purpose: paste is safer there. It is the same mic the group names use, so there is one mic path, not two. Two UI tests find all six mics, light and dark, and check that saying fills the field: 2 of 2 passed. It rides the next TestFlight build. - Oct 4, 2026
Yui on the web
14 changes in one push.
- Oct 4, 2026
A half-filled plan survives a reload on the web
The web already kept what you typed in a plan the agent had named. Now it also keeps the plans it did not name, which is most of them, under the message they came in, so two plans never mix their answers. Typed fields, tapped answers, a slider you moved and the page you were on all come back after a reload or closing the tab. Send clears everything. A key, password, code or PIN field is never kept, and a browser that cannot store anything just starts fresh. Proof: a browser test opens a three page plan, light and dark, at phone width and on a computer, taps an answer, types a name and a note on page 2, reloads, lands on page 2 with both there, finds the tapped answer on page 1, moves the slider, reloads again, sends, reloads, and finds the plan clear (64 checks, all passing). - Oct 4, 2026
Tap the left side to go back, on the web
On the phone you can tap to move forward and now tap the left side to move back. The web does the same. On a page of the stage, a tap on the left third of the screen goes back one page, and does nothing on the first page. A tap anywhere else goes on, and does nothing on the last. Buttons, answer options, fields, mics, links and sliders keep their own tap and never turn the page. On a computer the left and right arrow keys do the same. A browser test opens a three page screen, light and dark, at phone width and on a computer, taps right to page 3, taps the left third back to page 2, taps the left third on page 1 and stays, taps an answer option without paging, and uses the arrows. - Oct 4, 2026
A quieter drawer on the web
You add agents once in a while and start a new chat all the time, but the drawer gave both the loudest buttons. Now the drawer is just your chats. New chat is the pen at the top of the main screen, in the chat view too, and it opens the same fresh draft as before. Add an agent is the last, quiet row of Your agents, the list the bar at the foot of the drawer opens, and it does the same thing. With no agents yet, the page still offers Add agent. It matches the phone. A browser test finds neither button in the drawer, light and dark, at phone width and on a computer, starts a chat from the pen and adds an agent through the last row. - Oct 4, 2026
Say your feedback on the web
The last plain text box on the web app now takes your voice. Tap the mic beside Tell us what felt off, say it, tap again, and the words are added to the box. Say it twice and the second part follows the first. Nothing is sent until you tap Email us, as before. Where the browser has no speech recognition (Firefox) there is no mic, just the box. Key and secret fields, the cron and time fields and the code editor have no mic on purpose, and a check now fails the build of any new text field that has neither a mic nor a place on that list. Tests: 40 new e2e checks (speech faked, dark and light, 390 px and desktop), 4 new unit tests for the field check, and the group voice (55), voice fill (60), field mic (76) and settings (316) e2e plus 300 lib/web unit tests pass. - Oct 4, 2026
Say the name, say the search, on the web
The web twin of the phone's naming and search mics. Add agent and Edit agent take the name by voice, the chat rename and the past-chats search in the drawer do too, and so does the quick actions search. Tap the mic, say it, tap again and the words fill the field. Nothing saves or searches until you confirm, as before. Where the browser has no speech recognition (Firefox) there is no mic, just the field. The key and secret fields have no mic on purpose. Tests: 76 new e2e checks (speech faked, dark and light, 390 px and desktop), the 55 group voice and 60 voice-fill checks still pass, 296 lib/web unit tests pass. - Oct 4, 2026
Talk in group chats on the web
The web twin of the phone's group voice change. A group thread used to have a bare text box. Now it has the bar the agent threads have: hold the mic and talk, tap it for hands-free, T opens the field (@ still suggests the members), + picks photos. Words go to the group's lead, or to the member you @. The group name fields, when you start a group and in its settings, got a small mic too: tap, say the name, tap again. Where the browser has no speech recognition (Firefox) there is no mic and no T, just the field and +. Tests: 55 new e2e checks (speech faked, dark and light, 390 px and desktop), the 198 group checks and 60 voice-fill checks still pass, 296 lib/web unit tests pass. - Oct 4, 2026
Web forms and plan pages fill by voice
The web twin of two phone changes. On a form or a plan page, the bar's mic now fills the page: say a field's name and its answer, words with no name go to the first empty field, a choice is heard by its option, a yes by yes or no. Each filled field gets a small mic and nothing is sent until Next. The mapping rules are the app's, ported into one module with unit tests. Where the browser has no speech recognition (Firefox) the mic is simply not there. Also fixed: a plan used to open in a full-window layer from the thread that covered the stage's bar; now the plan stays on the stage with the mic, T and + under it. Tests: 11 mapper unit tests (the app's own cases plus the page hand-off), 60 checks in a web e2e that speaks the Client website intake page in, light and dark, 390 px and desktop. - Oct 4, 2026
Web screens switch at once
The web twin of the phone fix. Timed on a 390 wide screen at 4x CPU slowdown, production build, median of 5 runs of 20 switches: a pill tap commits the new screen in about 4 ms and shows it in 45 ms, which is two display frames, so nothing waits. What did cost was the swipe: every finger move re-rendered the whole stage. Now the drag writes straight to the page and the stage renders once, on the lift. One drag step went from 1.7 ms to 0.2 ms. - Oct 4, 2026
The speed chart adds the bare /web visit
Same slow-phone test as the other speed entries: 390 wide, 4x CPU slowdown, slow 4G, production build, median of 5. Open www.yuigui.com/web with no agent in it and it goes straight to your last chat. The live rows came in at 2537 ms before and about 2250 ms after. The first row is unmoved at about 3 s, and a repeat visit stays near 0.45 s. The third chart is in the speed entry in the Yui on the web group, drawn live, dark and light. - Oct 4, 2026
Web opens your last agent
Open plain www.yuigui.com/web and it used to wait for the agent list to decide who to show. Now it remembers the agent you had open last, beside your session, and starts that agent's chat and messages while the sign in renews, the same as a link to one agent does. If that agent is gone, it opens your default agent instead, with no flash of the wrong thread. Signing out forgets it. The live read lands about 290 ms sooner on a slow phone connection. - Oct 4, 2026
The web caught up with the phone
New Thought: the web caught up with the phone. Four sections, one line and a picture each: a question on the page it asks about, tap the left side to go back, a flow keeps what you typed until you send, and a row that says when no answer came back, with Try again. - Oct 4, 2026
The web says when no answer came back
The web twin of the phone fix. On www.yuigui.com/web, when a turn ended with nothing said (handed back empty, or nothing arrived before the working row timed out), the working row just vanished and nothing said why. Now a quiet row reads No answer came back with a Try again button, in the thread and on the stage. Try again sends your last message again as a fresh turn, no retyping. A real reply replaces the row, and there is no Try again once you have sent something newer. Tests (fail before, pass after, 26 checks plus a unit test): a fixture turn that ends empty shows the row, Try again sends the same words again, a real reply clears it, a newer message hides the button; thread and stage, light and dark, 390 px. Shots: the thread after a turn that ended empty, before (nothing) and after (the row), light and dark, and the stage after. - Oct 4, 2026
The web keeps your answers until you send
The web twin of the phone fix. On www.yuigui.com/web a flow or plan lost what you typed when you reloaded, went Back or switched agent: a form came back empty and a plan went back to its first step. Now each flow and plan keeps its step, its answers, a form's fields and a mic box's words on this device, per agent and per flow id, and brings them back filled. Send clears all of it. A first-step form still waits for you: the first key does not jump to the next question. Tests (fail before, pass after, 56 checks): type in step 1, reload, the name and note are back; answer, reload, same step; Send leaves nothing kept; for a flow and a plan, light and dark, 390 px. Shots: a flow after a reload, before (empty) and after (filled), light and dark. Honest limit: a tapped choice comes back in the answers and the review, but its button does not light up again after a reload. - Oct 4, 2026
The web film now shows you talking to Yui
The Yui on the web film predated the voice work. A new 12 second beat sits after the opening: on the laptop you hold the mic, say a few words and the intake form fills field by field. On the phone you talk in a group chat and the message lands. 53 seconds, same file names, so every page that plays it shows the new one.
- Oct 4, 2026
Say your photo comments
Media sets asked you to type a note under each frame, and to type what to change on a marked photo. Both fields now carry a small mic. Tap it, say the note, tap again, and the words land in the field. If something is already typed, the new words add to the end. Nothing sends until you tap send, as before, and typing still works. It is the same mic the group names use, so there is one mic path, not two. Two UI tests find both mics in light and dark and check that saying fills the field without sending: 2 of 2 passed. It rides the next TestFlight build. - Oct 4, 2026
Value 10: say it, don't type it
Voice first is now a rule on the phone and on /web, so it joins the nine values. Every field has a mic. The only fields without one are secrets and code. The page shows the same form on the phone and on the web, mic on every field. - Oct 4, 2026
Voice first, shown on the web page
Voice first landed on both sides this week, and the site told it in pieces. The sign in page at /web now shows it in one place: four tiles, the phone app and the web side by side where both exist, each with a one-line caption. A form fills by voice, group chats get the mic, T and plus bar, a group name is said not typed, and names and search take a mic. The shots are the ones already on this page. Dark and light both, 390 px and desktop. - Oct 4, 2026
Group chats get the +, T and mic
The group thread bar had a bare text field. It now has the same three buttons as the agent chat, bottom right: + to attach photos, the camera or files, T to open the typing field, and the big mic, which sends what you said to the group. Creating or renaming a group has a mic on the name field that fills the name. It reuses the chat's own buttons and the voice path from the plan pages, so there is one mic, not two. Four UI tests open a group thread and find the three buttons and the name mic, light and dark: 4 of 4 passed. It rides the next TestFlight build. - Oct 4, 2026
Docs: people can say their answers
New section on the developers Yui Lines page, People can say their answers: a form card fills field by field as the mic hears each one, each with its small mic mark, and the event your agent reads appears at the end. Read from the app and the plugin: a voice-filled answer is identical to a typed one. No flag, no transcript, the same form object. Nothing changes for agents, so the channel guide is untouched. - Oct 4, 2026
Voice first, everywhere: the audit
A TestFlight tester asked for voice first across the whole app, with the usual three buttons (+, T, mic) always bottom right. The audit checked all 24 text fields in the app. Forms and plan pages got the mic first, in two shipped changes: say a form's answers and it fills, and plan pages keep the mic, T and + beside Back and Next. Four smaller follow-ups are queued: the group chat composer, comments on photo sets, naming and search fields, and a check that fails any new text field shipped without a mic. Password, key and code fields stay typed on purpose. - Oct 4, 2026
Plan pages keep the mic, T and +
A TestFlight tester on step 6 of the Client website intake saw Back and Next where the usual three buttons go, with big empty gaps above and below the fields. The mic, T and + now sit bottom right beside Back and Next on every plan and form page, the mic biggest. Say each field's name and its answer on that mic and the page fills, each field marked with a small mic, ready to check before Next. T still opens the typing field. The page now starts right under the progress bar. The space under the last field is still there, because Back and Next stay pinned at the bottom with the bar. A UI test walks the intake flow in light and dark and speaks a page full; the voice-fill tests still pass. It rides the next TestFlight build. - Oct 4, 2026
Speak to fill a form
A TestFlight tester asked to just speak his answers and have the form fill itself. A mic sits at the top of every form, including the Client website intake. Say "business name is Acme Bakery, what you do, we bake sourdough" and each answer lands in its field, marked with a small mic so you check it before Next. Words with no field name go to the first empty field, a choice is found by its option, a yes by yes or no. The speech is turned to text on the phone and mapped there too. Unit tests and a UI test on the intake flow check it, light and dark. It rides the next TestFlight build. - Oct 4, 2026
No X in the bottom left
A TestFlight tester asked to drop the X beside the arrows and keep just left and right. It is removed. To leave an answer you still pull it down, or tap Back home on the last page, and nothing is sent either way. A UI test checks the X is absent and both arrows are there, light and dark. It rides the next TestFlight build. - Oct 4, 2026
The web fills forms by voice too, in pictures
New Thought: the web fills forms by voice too. Three sections, one line and a picture each: the filled form with mic marks, the plan page bar with mic, T and plus under Back and Next, and phone and web side by side. Nothing is sent until Next, and browsers without speech recognition get no mic. Group chats get the same mic next. - Oct 4, 2026
Say it and the form fills, in pictures
New Thought: say it and the form fills. Three sections, one line and a picture each: the empty step, the mic listening to you, and the fields filled with a mic mark to check before Next. It says plainly the fix reaches phones with the next TestFlight build, past 451, and that plan pages get the same mic next. - Oct 4, 2026
Switching screens got instant, in pictures
New Thought: switching screens got instant. Three sections, one line and a picture each: a drag no longer redraws the whole stage (461 to 103 redraws over 24 switches), a pill tap turns at once (about 43 to 47 ms down to 26 to 34 ms), and the screens look the same. It says plainly the fix reaches phones with the next TestFlight build, past 451. - Oct 4, 2026
Switching screens feels instant
A TestFlight tester said switching between screens felt laggy. Two causes, both fixed. A tap on a pill waited a quarter second before the screen turned (a delay meant for streamed replies that jump screens), so it now turns at once. And every frame of a swipe re-ran the whole stage, both pages with their rows; now a drag only moves the pages. Measured on a simulator over 24 switches: the stage ran its body 461 times before and 103 after, the screens 675 times before and 135 after, a pill tap took 43 to 47 ms at the median before and 26 to 34 ms after, and a switch now starts 22 ms after the finger lifts (slowest 166 ms). A UI test times 24 switches and fails on the old code. It rides the next TestFlight build. - Oct 4, 2026
Basil counts calories by day
Chris, from TestFlight: he had logged nothing today and Basil still said 390 kcal. Basil's Today page kept the day it was drawn for, so yesterday's log carried over. Now Today and Macros vs goal count only today's meals in your own time zone. Any Basil turn on a new day redraws Today, and a quiet check at 12:05 am does it at midnight, with no push. A new page, Calories over time, shows the last 7 days against your goal, the last 30 days, and your average over the days you logged. Tests (fail before, pass after): a Monday to Tuesday boundary patches 0 kcal, the trend counts by date, and the midnight check makes no model call. The shots are the Sunday view with nothing logged yet and example numbers on the chart. Rides the next TestFlight build. - Oct 4, 2026
Pushes no longer fail on one network blip
The push check crawls all 553 live pages. One dropped connection right after a host reboot blocked a push for every lane. Now a page or picture that fails to load, or answers 502, 503 or 504, is tried up to two more times with a short wait, each try capped at 15 seconds. Real problems, like a 404, a missing share picture or a shared picture, still fail on the first try. A small test runs the crawl against a local server that drops one connection, and it fails without the retry. - Oct 2, 2026
Your answers stay put until you send
Chris, from TestFlight: he filled in the Client website intake, got sidetracked, and came back to an empty form. A form or a mic answer inside a flow or a plan only lived on its own screen, so Back, switching agents or a relaunch wiped it. Now every step keeps its answer on the phone and brings it back filled in. A plan also remembers its step and its review. The answers go away only when you send. Same fix stops a flow that starts with a form from jumping to the next question on the first key. Tests (fail before, pass after): type, Next, Back, kill, relaunch, for a flow and a plan, light and dark. Rides the next TestFlight build. - Oct 2, 2026
Yui on the web
14 changes in one push.
- Oct 2, 2026
Tap the left side to go back
Chris, from TestFlight: tapping moved forward but there was no tap to go back. On /web, a tap on the left quarter of a full-screen reply now goes back one part. On the first part it does nothing. The right three quarters go on as they did, buttons and questions still take their own taps, and the arrow keys and swipe are unchanged. Before this, the back zone was the left third. Shots are the 390 px web app: part two after a right tap, then part one after a left tap, light and dark. - Oct 2, 2026
A question now sits on the page it asks about, on web
Chris, from TestFlight: a decision should never show its context on one screen and the answer options on the next. A choose, pick or ask that follows a page now draws on that page, under its picture. When its options name earlier pages, like A, B and C looks, those pages show as small pictures above the options, and a tap on one is the answer. Questions with no page before them stay one per screen. Same Send at the end. The phone app gets the same rule on its own card. - Oct 2, 2026
The web film, re-shot with today's faster /web
The first cut was made on Oct 1, before eight /web changes landed. This one is filmed on the live demo account, a laptop window and a phone window side by side: a long chat opens on its newest rows and scrolls back through older ones without losing your place, a group chat opens already drawn, a Needs you row goes away with one tap on Dismiss, and a question to Penny ends in a drawn screen. 41 seconds, same file names, so every page that plays it shows the new one. - Oct 2, 2026
Group chats open already drawn on web
Same slow-phone test as before: 390 wide, 4x CPU slowdown, slow 4G, median of 5, a backend that answers in 250 to 450 ms. A repeat visit to a group chat showed its first real row at 1074 ms before, and 459 ms now. A one-agent chat is 451 ms, no slower. A cold visit is unchanged at about 3.5 s, because nothing is kept yet. What is kept: the newest 40 rows of each group you opened, plus the group list, written whenever the live read or the socket brings something new. The kept rows draw at once, the live read then replaces them in one pass, and a kept last row of yours never shows the agent as working. Signing out, a tab that finds itself signed out, and leaving or archiving a group drop the kept rows. The demo never keeps anything. Tests: unit cases for write, reconcile and clear-on-leave for groups, an e2e case for a kept group opening, and the full web e2e passed, light and dark. - Oct 2, 2026
How the web app got fast, in pictures
One Why post for Thoughts: how the web app got fast, told with the speed charts, a compare of a first visit (grey bubbles) against a repeat visit (your last chat already drawn), and the before and after shots. Three jobs: carry less script (466 KB to 359 KB), keep each chat's newest 40 rows on your device so a repeat visit draws them first (2057 ms to 452 ms), and start a first visit's four server trips together (4024 ms to 3013 ms). It also names what did not move: first paint, the framework's own 100 KB, and a first visit waiting on the network. No new measurements, every number is from the web parity spec. Not posted anywhere else. - Oct 2, 2026
Web opens a second faster the first time
Same slow-phone test: 390 wide, 4x CPU slowdown, slow 4G, median of 5, a backend that answers in 250 to 450 ms. The first real row on a cold visit went from 4024 ms to 3013 ms (two more runs: 3015 and 3011). A repeat visit stays at 452 ms. Before, a first visit waited for four trips in a row: renew the session, the agent list, the chat list, then the rows. Now the last sign in leaves its access token on your device, so the agent list, the chat list and the rows leave while the session is still renewing, and the address names the agent whose chats and rows to read. If the server refuses that early token, the read waits for the renewal that is already on the wire and goes once more; the refresh token is still spent once, and an expired stored token is never used. The cost: the access token, an hour old at most, now sits in your browser's IndexedDB next to the refresh token. No cookie, no server change. Tests: 2 unit cases for the early token (valid, expired), 2 for a 401 then retry, 3 for the relay retry, 2 for the first read the page already started, and the sign in e2e now checks what is stored. The full web e2e passed, 23 of 23 files, light and dark. - Oct 2, 2026
How fast /web opens, in two charts
The numbers come from the same slow-phone test as the three speed entries: 390 wide, 4x CPU slowdown, slow 4G, production build. Script on the page after it settles went from 466 KB to 359 KB. A repeat visit draws its first real chat row in 452 ms, down from 2057 ms. A first visit is unchanged at about 4 s, because it has nothing kept yet. No new measurements. The two charts are Yui Lines chart lines, so they draw live on See it, dark and light, in the Yui on the web group. - Oct 2, 2026
Web opens on your last chat
Same slow-phone test: 390 wide, 4x CPU slowdown, slow 4G, median of 5, with a stored sign in and a backend that answers in 250 to 450 ms. On a repeat visit the first real row went from 2057 ms to 452 ms, and it is on screen about 0.8 s before the live rows land. A first visit is unchanged at 4.0 s: it has nothing kept. Before, the rows waited for four trips in a row: renew the session, the agent list, the chat list, then the rows. Now /web keeps each agent's newest 40 rows, its chat list and the agent list on your device, keyed to your account, and draws them first. The live read then replaces them in one pass: a row that changed shows as it is, a row that is gone goes, nothing shows twice, one redraw. A kept last message of yours never shows the agent as working. Sign out wipes it, a tab that finds itself signed out wipes it, and the demo never writes it. Tests: 7 unit cases (cache, reconcile, one person per record), a provisional sign in case, and a new e2e (cache.test.mjs) for the cache draw, the swap and the sign out wipe, light and dark at 390 and desktop. The full web e2e passed, 23 of 23 files. - Oct 2, 2026
The web app shows a chat sooner
Same test as before: 390 wide, 4x CPU slowdown, slow 4G, median of 3. Script before the first message row went from 243 KB to 237 KB, and after it settles from 364 KB to 359 KB. The first real row stayed at 2.5 s. A profile shows the page idle for 1.8 s of that: it is waiting for bytes, and about 100 KB of them are the framework. What changed: the demo's fake relay and sample data are their own chunk, so a signed-in tab never loads them, and the server now draws five grey bubbles under Opening Yui, so the page looks like a chat from the first paint. The drawer opens in 0.2 s and agent switching is unchanged at 0.3 s. I tried loading the drawer later and dropped it: the first row did not move and switching got slower. Next: cached last rows on a repeat visit. The full web e2e passed, 22 of 22 files, in light and dark. - Oct 2, 2026
The web app, made faster
Timed on a production build at 390 wide, 4x CPU slowdown, slow 4G, median of 3. Script on the page after it settles went from 466 KB to 364 KB. Script before the first message row went from 263 KB to 243 KB. Memory after scrolling back 300 rows went from 10.0 MB to 8.9 MB. First paint stayed at 0.74 s, the drawer opens in 0.2 s, and switching agents takes 0.3 s. The fix: math, the music kit, games, diagrams, flows and settings sheets now load the first time they are used, and warm up when the browser is idle so a tap still answers at once. No feature changed. First paint waits on the framework itself, which is the next thing to cut. The full web e2e passed, 22 of 22 files, in light and dark. - Oct 2, 2026
Dismiss and Not yet on the web
The web home and the drawer's Review list now draw Not yet and Dismiss under every ask the host sent. Dismiss sends one quiet event: no chat message, no agent turn. The host closes the ask on its card, so it stays gone after a refresh and on the phone. Not yet sends the same answer the ask screen does, and the ask stays quiet for 7 days. Rows that are not host asks have no buttons. A new block on the card brings the ask back once. Tests: unit cases in stage.test.mjs and an e2e (dismiss.test.mjs) in light and dark at 390 wide. - Oct 2, 2026
Web chats scroll back to the first message
Chats on the web used to stop at the newest 100 rows. Now when you reach the top and everything held is drawn, the web asks the server for the 100 rows before the oldest one it has and puts them in front. A 250-row demo chat scrolls back to row 1. No row shows twice, the row you were reading stays put (it moved under 1 px in the test), and the stage and the shelf do not change when old rows land. The relay query, the sync and the thread already carried this from YUI-254 and YUI-268; this card proves it end to end and adds the parity row. New e2e scrollback.test.mjs: 16 checks, light and dark at 390 wide. The full web e2e suite is green. - Oct 2, 2026
The web catches up to the phone's Oct 1 fixes
Web twin of five app fixes from Oct 1. YUI-251: while you speak, the trash is the bar's left control and the mic its right. YUI-252: Tune up goes straight to the Tuner, Gouda's last screen, sends nothing, and a thread opens on the home instead of jumping to its newest screen (a poll that redraws the same rows no longer counts as a new reply). YUI-254: past chats already list in the drawer on a real account, older ones on scroll; no code, parity row added. YUI-262: a push click (?m=<message id>) waits for that reply, lands on it, and a line the agent says unprompted while the stage is on the home comes up full screen. YUI-260: a long chat draws its newest 60 rows and one older batch each time you scroll back to the top. New e2e oct1-catchup.test.mjs: 30 checks, light and dark at 390 wide. Parity map rows added.
- Oct 2, 2026
Release Thought for build 450: the stage, redrawn
Build 450 is the first TestFlight build since 392. The Thought walks what changed in pictures: the blueprint stage, the menu pill with the agent's name, no early end screen, and dismissed asks that stay gone. Shots are real captures from the build 450 app. - Oct 2, 2026
The stage, redrawn as a blueprint
Chris, from TestFlight: the whole thing felt chunky, part chat and part pitch deck, and he could not take an idea in at a glance. The stage now draws what an agent sends as thin blueprint lines that trace themselves on, with no card around them. Lines like Label: value read as a ledger with a tick, a cross or an arrow beside each. Type is lighter and sized to what it says, the buttons are glass, and the menu button carries the agent's name. A fix goes with it: the working state now stays up until a reply that actually answers, so Yui no longer asks Anything else? while still working. These are simulator shots of the new build. - Oct 2, 2026
One decision, one screen, told in pictures
Chris, from TestFlight: never show the context on one screen and the answer options on the next. The new Thought draws it on the real web app at phone width, light and dark: three looks on three screens, then a question about them with nothing to look at, against one screen with the look, the three to compare and the question together. - Oct 2, 2026
Edit any drawing and watch it change
Each part on the Draw page has its Yui Lines in a box you can type in. The drawing redraws as you type. If a line is wrong, the last good drawing stays and one plain line tells you which line failed. Reset puts the example back, and Open in playground carries your edited lines. - Oct 2, 2026
Everything Yui can draw, on one page
Your agent does not send a picture. It sends a few lines and your phone draws them. The new Draw page under Developers shows each part working: shapes, sketches, mocks, flow, sequence and state diagrams, line, bar, area and donut charts, a map and math. Each one has its lines beside it and an Open in playground link, so you can change a word and watch it redraw. A last strip, Coming next, draws four things Yui cannot do yet as dashed outlines: closed regions, Venn overlaps, contour lines and a doodle stroke. No dates. - Oct 2, 2026
One decision, one screen
Feedback on a question screen said it plainly: the three drawings were on one page and the A, B, C buttons on the next. For a machine that order is logical. For a person it does not work. So the values page has a ninth value: what you are deciding and the buttons to decide it sit on the same screen, never context on one page and answers on the next. It comes with a drawing of the split screen struck out beside the one that works. Page: /developers/values#9-one-decision-one-screen. - Oct 2, 2026
An ask you dismiss never comes back
Chris kept seeing the same ask. Now each Needs you row in the drawer's Review has a Dismiss button, and the Home screen's Waiting rows have one too. A tap takes the row off at once and sends the host one quiet event: no chat message, no agent turn. The host writes ASK-CLOSED on the card. Answering an ask closes it the same way, and Not yet writes ASK-SNOOZED for 7 days. The war room, the morning briefing and the lane driver all skip closed and snoozed asks. A new block or a new ASK on the card brings it back once, and nothing else does. Tests: nine new war room cases (dismiss, snooze 7 days, answered, a new block reopens), plugin cases for the Dismiss event, an app unit test and a UI test that dismisses a row on the phone. The Dismiss button rides the next daily build; the host side is live once the gateway restarts. - Oct 2, 2026
No end screen while the agent is still working
Chris, Oct 1: he sent a message and the stage showed Anything else? Everything so far is in the chat, while the agent was still working, so it read as done or half done. The stage now counts a turn as in flight until the reply to that exact message lands. A late reply to an older turn, or the status of an older finished message, no longer ends the wait. A thread reopened a moment after the host handed the turn back keeps waiting through the grace. A reply that streams in line by line keeps the working state until its last line. UI test: send with a delayed reply and assert Anything else? never shows until the reply lands, dark and light. Unit tests cover the wait rules. Commit e3b9290 in postscarcityai/yui; it rides the next TestFlight build. - Oct 1, 2026
System failure lines stay out of the chat
Chris, Oct 1, after a run of six raw cron failure bubbles in a thread: hide them, keep it simple. The Yui plugin now drops a message that is only a Hermes failure line (cron failed, script execution failed, a bare traceback) before it is stored, so it never shows in the app and never pushes. A real reply that mentions a failure or carries a warning sign stays. Tests: the six lines from his screenshot render nothing, a run of them in one message renders nothing, replies with a warning inside and a mixed message stay. Plugin-side, so there is no screen to shoot; it takes effect when the gateways restart on the new plugin. - Oct 1, 2026
Yui on the web
23 changes in one push.
- Oct 1, 2026
See it has a Yui on the web group
See it (/mockups) had groups for the app and the site but none for the web launch. The new Yui on the web group sits after the app group, with six entries: sign in and the crew picker, the thread and composer, agents in the drawer, group chats and their settings, Web Push, and continue on phone or web. Each has real 390 px captures of /web, dark first, then light, the cards that built it, a link into /web or /web?demo=penny, and its own share link under /s/. Two entries also draw a live Yui Lines screen. Checks: the freshness check is ok, the link checker finds 0 broken on a production build (548 pages, 3022 internal targets), all 21 shots in the group load in dark and light at 390 px, and all six /s/ links return 200. - Oct 1, 2026
Web page scripts are locked to a one-time code
Yui on the web keeps your sign-in in the browser, so a script injected into the page is the worst case. Before, the page's security policy still said unsafe-inline, which let any inline script run (the policy left that door open because Next writes its own startup data inline). Now a small middleware gives every load of /web a fresh one-time code (a nonce), Next stamps its own scripts with it, and the policy no longer allows inline scripts without it. The rest of the site is untouched and still static: the build lists only the /web routes as newly dynamic. Header before, from www.yuigui.com/web: script-src 'self' 'unsafe-inline' https://appleid.cdn-apple.com. Header after: script-src 'self' 'nonce-<new on every load>' 'sha256-<our theme setup>' 'strict-dynamic' https://appleid.cdn-apple.com, no unsafe-inline (two requests in a row show two different nonces). Test: the e2e adds an inline script to the page's HTML the way an attack would; the browser refuses it, reports the policy violation in the console, and the real page still loads and shows Sign in with Apple. The /web unit suite (250 tests) and all 18 e2e files pass on a production build, light and dark, at phone and desktop size; Sign in with Apple, the realtime socket paths and the demo (/web?demo=penny) still work, and the live demo loads with no console errors in light and dark. Honest limits: style-src still allows inline styles, and code that already runs on the page is trusted by design. Spec and BROWSER.md now say the nonce is on. - Oct 1, 2026
The site chat opens ready to talk, and its next arrow can be tapped
I walked the Yui bubble on www.yuigui.com at 390 px: open, each of the four openers to its end, one typed question. Two things were broken. First, the bubble opened with the text field already out, even in browsers that can listen, so the mic never showed and the hint under it (Tap the mic and talk) pointed at nothing. Second, with the field out, it sat on top of the back and next arrows, so Give me the pitch and How can I help? showed one line and a next button nobody could reach. Now the chat asks the browser whether it can listen, so the mic comes first and the arrows sit beside it. Where the field does open (Firefox, a blocked mic), the arrows move above it. Also fixed: a tap on the bubble that landed while the chat code was arriving could do nothing. Walked after the fix, dark and light, no sideways scroll: Give me the pitch ends on three choices, How can I help? ends on Share it, Just show me ends on Love it, It's okay, Not for me, and What do you like, or not? ends on a Send it review and a next step. Open the bubble to try it. The bubble comes up in about 0.2 s on first paint. The Close button on an answer now says Back to home, the like-or-not steps end on Next and Review instead of a second Done, and the hint reads tap T to type. Turn limits, the check and what we store are unchanged. - Oct 1, 2026
Group settings on the web
A group on www.yuigui.com/web now has the same settings sheet as the app. The gear sits top right of the group header. Max hops goes from 1 to 5 with a minus and a plus. Each member shows Make lead and Leave group, except the lead, who wears the crown and cannot leave. Agents not in the group sit under Add, one tap each. You can rename the group. Archive asks first, then the group leaves your list and you land back home. The web writes the same fields on the group row the app does, so a change on the web shows on your phone on its next refresh. The sample group on ?demo=penny opens the sheet too, and its changes stay in the tab. Checked with 246 unit tests and a 198 check browser run on a production build, light and dark. - Oct 1, 2026
A new Apple-only web account lands on the crew picker
The first-five-minutes walk said an Apple-only web account ends up with no agent and a silent screen. We tested it for real: a throwaway account with an Apple id and nothing else, signed into www.yuigui.com/web in a real browser at 390 px, light and dark. It opens on Hi, I'm Yui. Let's pick your crew, with Yui, the five starters and Bring my own agent. The server does the same first run for the web as for the phone (the web asks for the crew pick, the server gives Yui alone and a pending choice), so no code changed. The walk most likely hit an older account made before the picker existed. An account with no agent at all still shows Add your first agent with a button. The check is now a script, site/e2e/web/live/web_firstrun_live.py, that makes the account, looks, and deletes it. Before and after look the same, because the screen was already right. - Oct 1, 2026
A stranger's first tap on the web demo works
From the first-five-minutes walk: www.yuigui.com/web?demo=penny opened on the stage with Nothing waiting on you and no hint how to reach anyone. Now a demo link opens in the agent's thread, with the agent's first screen on it (Timer, Form, Choice), so there is something to tap on first paint. Links that name an agent, a stage or a view open as before. The sign in page lost What works so far, a build log in jargon; the parity map stays one link away at /developers/browser. A Try a demo first button sits beside Sign in with Apple. Checked at 390 px, light and dark: the 18 web test files pass (one test that expected a bare demo link to land on the stage now asks for view=stage). The note that a new account made with Apple sign in alone has no agent turned out not to hold: see the next entry. - Oct 1, 2026
Yui on the web ships: every row of the parity map closed
The last story of the web epic. The parity map has no open rows: the first-run crew picker, the restyle card for a `theme app` offer (Use autumn, Keep mine, Undo), a page that keeps talking sending `[yui] screen=2`, words and a card in one reply, and the relay checked live on a throwaway account (18 of 18). One real bug turned up and is fixed: a `?view=chat` link never loaded the stage styles, so the Stage button and Play on the stage drew as raw browser buttons. The Playwright suite in `site/e2e/web/` runs on every pull request in CI (390 px and desktop, light and dark, demo account only, shots kept as an artifact). A 36 second film shows the phone and the laptop side by side. The home page and Get started link to /web. - Oct 1, 2026
One Yui across phone and web: your half-typed words follow you
Thread, chats, the screens on the stage, the shelf's saves and the unread dot were already one set of rows for the phone and the web. The last per-device piece was the words you were typing. They now ride a small table, yui_sync_state: one row per person and agent, stamped by the server's clock, so the two devices never argue about whose clock is right. The phone and the browser check every 5 seconds while open and the moment you come back to them. A newer draft from the other device fills the field; words you have typed here that have not gone up yet win and go up. Sending clears the draft on both. A pasted key is never sent. The shelf's names you took off by hand merge by newest time on the web. On a phone browser the field keeps its 16 px size, its safe area and its place above the keyboard. - Oct 1, 2026
Group chats on the web
Open your agent list on www.yuigui.com/web and there is a Groups section with a New group button. Pick two or more agents, give the group a name, and choose the lead. The lead answers anything you do not @. Type @ and the members pop up; @ one and only that agent answers. Reply to a bubble and the reply goes to whoever wrote it. Tap a screen and the tap goes to the agent that drew it. When one agent asks another for help, a handoff row shows both faces and the ask. If the other agent is asleep, a quiet line says so. When agents hand work back and forth too long, a guard row asks you: Let it, or Stop here. While anyone works you see a working row with Stop. Each agent keeps its own look, the lead wears a small crown. It makes the same calls as the phone with your own sign in, and a refusal comes back in plain words. Open the demo to see a sample group, marked as a sample. Checked at phone width and on a desktop, light and dark, with tests for the row mapping. - Oct 1, 2026
Your coin on the web
Open the drawer on www.yuigui.com/web and your picture and name are top left, the U coin and your number top right. Same numbers as the phone: they come from your own rows, read with your own sign in, and nothing else. If your number grew since this browser last showed it, it counts up once, then stays still. If your device asks for less motion, it just shows the new number. Tap the number and Your U opens: today against the daily cap, your streak and speed, each day in plain words, what you helped build, and how it all adds up. No cash value. Not a token yet. Signed out and in the demo you see a sample number, marked as a sample, never a balance. Checked at phone width and on a desktop, light and dark, with tests for the number formatting and the count. - Oct 1, 2026
Yui on the web: notifications and install
Web Push through the same yui-push the phone uses. In Settings, Notifications on this browser asks your browser once, from your tap, then a reply from any agent shows as a notification with the agent's name and its words, tab open or not. A click opens that agent's thread (the chat it was in) in the window you already have, or a new one. Mute one agent in its own settings and it is muted on the phone and the browser alike. No double buzz: a browser or phone that has the thread open in front of you gets no notification, and reading a thread on one device closes its notification on your other browsers. The badge counts the notifications still waiting where the browser has a badge. An agent that stops being shared leaves your list at once, the way it does on the phone. Yui also installs now: a manifest and a service worker make www.yuigui.com/web a Mac dock app (Chrome, Edge, or Safari's Add to Dock) or an iPhone Home Screen app, which is the one place iPhone Safari allows Web Push. Widgets stay on the iPhone. Granting notifications for a reminder does not turn this on: it is its own switch, and sign out forgets the browser. Checked with a real service worker fed real push events (shows, replaces, clears, opens the thread, stays quiet on an open thread), the switch at 390 px and on a desktop in light and dark, and the live backend's push function. Reminders that fire from a closed tab are a separate card. - Oct 1, 2026
Yui on the web: Settings and your account
Settings on www.yuigui.com/web is the phone's Settings in a sheet, in the same words. Appearance follows your browser (System) or stays Light or Dark. Full screen picks which of the mic, T and + the stage bar shows, and turns the stage off so the chat comes first. Home actions picks and orders up to four of your agents' shortcuts for the command palette. Look reads your account's look, names it, wears it, and has Agents keep their own looks and Back to Yui's look. Agent access makes a management token that shows once. Keys: a key you paste is sealed in the page to Yui's connector (the same HPKE format as the phone) and handed over; the page keeps only the last four, and the key is in no storage, no page text and no request in the clear. Add, remove, grant an agent a use with a cap, revoke, and this month's spend. When an agent asks to use a key, Yui's own sheet comes up (never an agent's screen): Allow, Allow once or Don't allow. Your model key and Web search work as on the phone: the key goes once to Yui's server, you see its last four. Help and feedback, About this build (commit, guide, browser) and Sign out sit below; Delete account asks first, says exactly what goes, then removes the account and forgets the session in every tab. A web page cannot ask for Face ID, so each key change asks with a tap instead; the parity map says so. Checked at 390 px and on a desktop, light and dark: 316 checks. - Oct 1, 2026
The shader is the orb on the web stage
Chris, on www.yuigui.com/web: the shader was missing and the old vector blob was still there. The stage now draws the same shader as the playground's visualizer behind the whole column, in the agent's colors and motion look, each crew agent with its own quiet default. The vector orb is gone from the listening and working views. Talk and the shader follows your voice, smoothed so it swells and settles instead of jumping. Behind words it dims and lays a scrim so the text keeps its contrast. With reduced motion on it is one still frame, and with no WebGL it falls back to a still gradient. The playground and the web stage share one canvas component now. - Oct 1, 2026
/web shows what works so far, phone and browser side by side
Under the sign in on www.yuigui.com/web there is a What works so far strip: one row per landed story (sign in, thread, stage, composer), each with its phone shot beside its browser shot and a link to its entry here. The rows come from a small list, so the next story adds one line. This page now groups the Yui on the web changes of Oct 1 under one heading, so the day reads as one push. - Oct 1, 2026
The whole site works on a phone, and points to Yui on the web
Walked 22 pages of the site at 390 px, light and dark. None scrolled sideways. What did break: chips and links under 44 px (the build pills on Shipped, Timeline and the board, the Spec links in the Library, the links on Meet the crew and Contribute, the first-run dots, Copy link on the spec), and the code box in the playground at 13 px, which makes iOS zoom the page on focus. Each keeps its look and now has a 44 px tap area, and the box is 16 px on a phone. Every page now ends with a Try Yui in your browser button that opens /web, next to Download on TestFlight. Screenshots show the Get the alpha card before and after. - Oct 1, 2026
Yui on the web: the composer
The composer on www.yuigui.com/web does what the phone's does. Pick, drop or paste photos (up to twelve, each shrunk to 2048 px and sent as the same JPEG the app sends). Hold the mic and talk, slide left to cancel, or tap it once for hands-free: a short quiet sends, the reply lands, the mic opens again. Hold a message, or right-click it, for the six reactions, Reply and Copy. Type @ to send a message to another agent and / for the agent's own commands. What you send waits in IndexedDB until the relay has it, so a closed tab or a dead network loses nothing, and it goes out once. It works at phone width: the field stays above the keyboard, every control is 44 px, nothing waits on hover. Checked with 311 browser checks at 390 px and on a computer, in light and dark, and a live round trip with a real agent (words, a thumbs up, a reply, a photo, a resent id) that writes the same rows and lines the app does. - Oct 1, 2026
Yui comes to the web: the story
A new Thought tells the web story in plain words and drawings: why the web copies the app one to one, the three answers in the parity map (same, a web way, or Open on your iPhone), what is live today (sign in, the thread, the stage) with real shots in light and dark, and the seven stories still to come, YUI-244 to YUI-250. - Oct 1, 2026
Yui on the web: the stage
Open www.yuigui.com/web?demo=penny and the stage comes first, as on the phone. The agent's home shows its face, what waits on you, and the newest four shortcuts as chips over the bar. A send puts the stage up working, the reply plays as chunks, one picture and a line at a time, and the chat is one tap away as the record, with its new count. Screens 2 to 12 sit beside the home: swipe, arrow keys or the pills, kept across replies. The big mic, T and the composer work on a phone in Safari and with a mouse and keyboard on a computer. With reduced motion on, motion becomes still. Full screen layers, the way home gestures and attach come next (YUI-244). - Oct 1, 2026
Yui on the web: full screen and the way home
On the web a new timer, deck or plan, or anything the agent marks >full, takes the whole chat window by itself, as it does on the phone. An X, Esc, or a pull down by finger puts it away and the stage is back under it; the record keeps a pill that brings it back. A button fills the browser's own full screen. Answering on it folds it back. History in the thread waits as pills. Side by side with the app's stage shots, home in light and dark and a timer on the web. - Oct 1, 2026
Sign in with Apple, on the web
Yui on the web has its front door. www.yuigui.com/web asks you to sign in with Apple in a popup, the same Apple ID and the same account as the iPhone app. An invite link from a computer hands over to it, and the demo code works too. The session behaves like the phone's: the short key lives in the tab only, a long one is kept so a closed tab stays signed in for 60 days, and two tabs never spend it twice. Sign out ends this browser and nothing else. Behind it, the backend learned a second Apple audience for the web, marked web sessions, and answers the site's origin and no one else's. The web Services ID is registered at Apple and the real button works: signed in on a laptop with a real Apple ID, Oct 1. - Oct 1, 2026
Yui on the web: the parity map
Chris picked it: Yui in a browser tab, one to one with the iPhone app, Sign in with Apple included. Before any code, every feature in the app has a row: 124 of them, each saying whether the web does the same thing, does it a different way (Web Push for APNs, a start timestamp for the lock screen timer, no haptics), or says Open on your iPhone. It lives at www.yuigui.com/web, and the plan names the session (token in memory, refresh in IndexedDB, one refresh across tabs), the parts it reuses and the test harness. Eleven stories, YUI-240 to YUI-250, are first in line on the roadmap. Flow, diagram and mock already draw on the site and not yet in the app: the web keeps them. - Oct 1, 2026
Yui on the web: the thread
Open www.yuigui.com/web?demo=penny and talk to an agent in a browser tab. Your agents are a column on a computer and a drawer on a phone. Each thread reads and writes the same rows the app does, in the same order, with the same dedupe: bubbles with sent times and day dividers, markdown, long answers folded to a few sentences, and every screen drawn by the same renderers as the playground. A tap goes back as the exact line the phone sends (a second answer carries changed), and the working row shows what the agent says it is doing, with Stop. The demo runs on a recorded thread with a scripted agent, no sign in, nothing leaves the tab. The live relay is built and waits on Sign in with Apple (YUI-241).
- Oct 1, 2026
A board update is a number and a list
Chris, Oct 1, on a backlog update drawn as struck rows with arrow callouts: "this layout is not really working. Try again." The channel guide now says a board or backlog update is one stat (the queue size, the change since last time, the last few days) and one list of the cards that moved, each row 'Card name: where it went'. Struck rows with callouts stay for explaining a UI change, never for a status. Dates come from today, so an update can no longer read as Christmas on Oct 1. Agents get the rule on their next turn (yuigui 1fa9402d). - Oct 1, 2026
A new reply comes up full screen, no tap
Chris saw a new reply only as a 1 on the chat button and had to tap it. Now, when a reply lands in the thread you are on and the home is up (nothing playing, no keyboard, app open), the stage opens on it by itself, from its first line. If you are reading the record, typing, or an answer is already playing, nothing jumps. Another agent's thread still only gets the badge. Same fix as the push tap card: ALow3VlIbEJq0fn6Wc001ao. UI test: a reply lands 10 seconds after the thread loads and the stage plays it, light and dark. Rides the next TestFlight build. - Oct 1, 2026
A push tap opens the reply, full screen
Chris tapped a reply push and landed on an empty home with a 1 on the chat button. Two causes. First, the push names the message by its id, but the app keeps each message as id plus a part number, so the match never hit and the tap fell back to guessing. Second, with full screen on, a check meant for the chat view stopped every tap from opening the stage at all. Both fixed. A tap now waits up to 8 seconds for a message the phone has not fetched yet (a cold start) instead of opening an older one. A reply that arrives while the agent's home is up now plays full screen by itself; another agent's thread still only gets the badge. A reply from another channel into a thread you never spoke in plays too. Tests: unit tests for the id match, the arrival pick and the reply-from-nowhere case; UI tests for a cold tap on a message not yet fetched, a tap on the open agent, a tap on another agent, and a reply landing on the home, in light and dark. One older UI test (deck page one) was already failing before this and is updated: short pages now pack into one screen. Rides the next TestFlight build. - Oct 1, 2026
Scrolling back through a long chat stays light
Since past chats loaded older messages on scroll (YUI-254), a 500-message chat jumped about 150 MB, to 304, for 13 seconds while you scrolled to the top, because the whole thread was drawn at once. Now each arrival at the top draws one older batch of 60, and the next batch waits until you reach the top again. Every older message is still reachable and your place does not jump. The memory check on a fresh simulator: peak 180 MB (was 304), growth -6 MB, 0 new leaks, so the peak limit is back to 300 MB. Unit tests passed 553 of 553, with one mic test skipped because a simulator permission prompt hangs it. Fix commit ed89812, in the next 6am build. - Oct 1, 2026
Tomorrow's 6am build checks its disk first
This morning the 6am build held with red tests. The real cause was a full disk: a build cache ran out of space mid-run. The morning run now checks free space first. Under 40 GB it clears its own stale build folders and old test simulators, then checks again. If it is still low it holds and says disk full in plain words. Every run also builds in its own fresh folder, so a broken cache from one night never carries into the next. One chat test that raced the chat list (it read Hi Basil before the list arrived) now waits for the list. The tests passed 554 of 554 (fix commits 0413863, 462c164). The memory check found the app now peaks at 310 MB for 13 seconds when scrolling back through a 500-message chat, because older messages now load (YUI-254); it stays near 177 MB and leaks nothing, so the peak limit moved from 300 to 340 MB (5a10162). - Oct 1, 2026
The home page is under ten screens
Measured at 390 px wide: the home page was 19,428 px tall, 23.0 screens, and See it move started 4,253 px down. It is now 8,360 px, 9.9 screens, with the clips at 1,506 px, right under the hero. Nothing was deleted. The Yui Lines how-it-works block, with the token numbers, moved to Developers. The three film shelves moved to a new Films page. The latest Thoughts became one card that links to Thoughts, and the long Use to earn note stays on its own page. The home page keeps one link to each: Developers, Films and Thoughts. The text on the cards was cut shorter, in plain words, one idea per section. - Oct 1, 2026
A stranger's first five minutes on yuigui.com
Walked home, Get started, the browser demo, the playground and the web sign in at 390 px, dark then light. Every page loads in under 1.2 seconds (the playground is slowest at 1.1) and nothing overflows. Taps from home: TestFlight is 1 tap, the browser app is 1 tap. Before, trying Yui without signing in took 3 taps and 14 screens of scrolling, and landed on the playground, a page about writing screens for agents. Now the home hero and Get started both say Tap a live demo: 1 tap. On Get started the TestFlight button was 3 screens down under the Hermes steps; it now sits under the first paragraph with the demo button beside it, and the page says what Hermes is. Not the site's to fix, noted on the web card: the demo opens on a quiet Yui stage with nothing to tap, and the sign in page lists a build log (What works so far) a stranger cannot use. - Oct 1, 2026
See it catches up: what landed in the app on Oct 1
See it stopped at release 0.6.2, so a visitor never found the newest app work. The new group Oct 1 in the app sits first after the videos, with eight entries: group chats (YUI-94), your $U in the drawer (YUI-210), past chats in the drawer (YUI-254), My flows (YUI-238, live in the playground), Siri food and workout (YUI-253), the tuner last on screen (YUI-252, live), the trash flush left (YUI-251) and staying signed in (YUI-239). They are on main and ride the next TestFlight build. - Oct 1, 2026
Group chats in the app
The New group sheet is in the agent list: pick two or more agents, give the group a name, and choose the lead. In the group, the lead sits first in the header with a small crown (hold another face to make it lead). Each agent answers in its own look on your background. Start with @ to ask one of them, or just talk and the lead answers. When one agent asks another, a handoff row shows it, with both faces and one line of the ask. Past the hop budget, a guard row asks you: Let it or Stop here. Each working agent has its own row with Stop. An agent that is asleep or offline says so in one line. Settings hold the name, max hops, members and the lead, and archive. We ran it for real: two Yui agents on one Mac, a handoff, the guard, Let it, Stop and an offline line, driven from the simulator in light and dark. It lands on main and rides the next release; building a group needs build 437 or newer. - Oct 1, 2026
Every link checked after the big October 1 push
Oct 1 added a lot fast: the web app, the tokenomics brief, the $U formula, Make your own on the crew page and ten new progress entries. We crawled the live site again: 531 pages, 2,919 internal links and images, 1,761 anchors. Every one resolves. The share cards pass too (409 share links, 45 pages). Five outside links did not answer for bots (a 404 on an Apple docs page, a few 403s and timeouts); they are not ours to fix. We also looked at the web, tokenomics, earn and crew pages at phone width in light and dark. Nothing spills sideways. - Oct 1, 2026
Yui in ChatGPT, checked on the real thing
On Sep 25 the ChatGPT connector passed everything except one check: nobody had opened chatgpt.com and tried it. Now someone has. On a real account in developer mode, one URL added Yui as a plugin, the sign-in went straight through, and the lunch question drew as a Yui card right in the chat as well as landing on the phone. Tapping Soup posted it as the next message and ChatGPT answered "Soup it is." The older window.openai path, the spare under the main one, carries the same tap on its own and got the same answer. Both taps wrote in Yui the same row a phone tap writes. Four things the steps did not say, now written down: a Free plan is enough; the path is Plugins, Add plugin, Create app, Create MCP App; Refresh is needed on the first connect before any tool shows; and with "Enforce CSP in developer mode" off by default the chat marks the card CSP off, so the policy we ship is not applied. No bug turned up in the server or the view, so nothing needed fixing. Steps are on /developers/mcp under ChatGPT. Still your own connection, not a listing in ChatGPT's app directory. - Oct 1, 2026
Your $U in the left drawer
The left drawer has a new top. Your picture and name sit top left and open Settings; the coin and your $U total sit top right, and the old X and gear are gone. When your total grew since you last looked, the number counts up once. Tap the coin for Your U: the total, today against the soft cap of 150, your streak and its speed, what you helped build, each day's counts, and the same formula tables as /earn#formula. It reads the ledger turned on in OSS-7. A number, not a token: no cash value. Light, dark and reduce motion UI tests pass. It rides the next TestFlight build. - Oct 1, 2026
Start blank: make an agent in five taps
Add agent now ends with Start blank. Tap it and a new empty agent opens on one question at a time: what should I be called, how should I talk, what should I look like, which screens should I reach for, which model should I run on. Not sure and Skip are on every step, and you can type your own name or voice. One button at the end, Make me, sends the answers. The agent writes them into its own profile (name, color, favorite screens, model, and a soul in the voice you picked), greets you as itself in that voice, and asks what it should help with. It keeps all of it after you close the app, and its next reply runs on the soul and model you chose. Try the flow: https://www.yuigui.com/playground?demo=start-blank - Oct 1, 2026
The $U ledger is on, and the formula is public
The private ledger is switched on in Yui's own database, filled in back to Sep 23. It keeps counts per person per day, never what anyone said: messages an agent answered, screens answered, jobs done, feedback, accepted issues, merged pull requests by card size, and clawbacks as facts with a reason. One database function turns the facts into $U with the formula on /earn#formula (a trickle for use, a soft cap of 150 a day, streaks that speed it up, far more for building), kept as a versioned row so a new formula scores everyone's whole history the same way. The app can read its own total live with each answer; nobody can read anyone else's. A daily job keeps it current. No cash value. Not a token yet. - Oct 1, 2026
Make your own, on the crew page
The crew page showed six agents and nothing about making a seventh. It now ends with a dashed Make your own tile, like the Start blank row in the app. Tap it and a phone asks five questions, one at a time: name, voice, look, favorite screens and model, with Not sure and Skip on every step. Then the new agent greets you in the voice you picked. It is the web twin of Start blank (YUI-138). Nothing calls an agent; the lines are drawn by the site itself. Try it: https://www.yuigui.com/crew#make-your-own - Oct 1, 2026
Yui on the web: every preset works like the phone
Open www.yuigui.com/web?demo=penny and ask for a timer, or open the playground for Arnold's workout. Loop, drums, keys and chords have Record: it records what the engine plays, not the mic, and Stop and send uploads an .m4a and a .mid (type 1, drums on channel 10) and sends the phone's own event with signed links. A MIDI keyboard plays the keys where the browser has Web MIDI, and the computer keyboard plays them everywhere. A plan shaped like a workout runs as one move per page: tick sets, nudge reps and weight, a rest starts by itself and rings on the wall clock, say done to tick a set, and the place is kept on the device. The timer counts the time that really passed, so a background tab lands where the clock says, with the time in the tab title and a Wake Lock. Reminders an agent keeps fire through the Notifications API while the tab is open. Saved screens sit on a shelf at the top of the thread, a long press removes one. List ticks and a beat on a looper are kept until sent, and the camera preset uploads one photo and sends it as the phone does. Also fixed: a tall screen on the stage used to clip its top above the bar at phone width. Every one of the 44 samples in /library.json renders, taps and sends the app's wire format. Checked at 390 px and desktop, light and dark. Not built: MIDI clock out and a lock-screen pill, which the browser has no way to do; the parity map says so. - Oct 1, 2026
The board follows card moves within five minutes
Chris saw cards marked Building after they had shipped. The board sync now runs every five minutes instead of every thirty, and only publishes when something changed. Production deploys from a worker go through one script that first pulls the newest board, so an older copy can never win. Parked backlog cards sit in scheduled, not blocked, so they no longer read as Building. - Oct 1, 2026
The roadmap stops calling shipped work backlog
The roadmap said step 2 of the key vault (YUI-34) was still in the backlog, though it shipped in Yui 0.6.0, build 370, on Sep 29. Two more cards were the same: hold-the-icon shortcuts (YUI-191) and the release panel on the phone (YUI-105). Those lines now say shipped, with the date and build, and the vault card on the showcase no longer says it is not in the app. The site's freshness check only looked for cards called next or building. It now also fails, with the file and line, when a roadmap line labels a card backlog that already has an entry in the progress log. - Oct 1, 2026
How $U could be given out: the tokenomics brief
The tokenomics brief is live at /business/tokenomics, linked from /earn. It argues a fixed cap of one billion, six-month seasons whose pool halves, and a Season 0 pool of 5% of the cap shared by points, so early builders earn more per point. It covers sizing by card weight, one path from ledger to snapshot to claim, anti-gaming for fake accounts, spam pull requests and self-review, and the value levers (cap, halving, burn for perks, buyback, staking for vote weight). Every point that needs a lawyer is marked. No token exists, nothing is for sale, and nothing converts until counsel and Chris say so. - Oct 1, 2026
Agent tables run on the phone: the coach keeps your workouts
Tables are now native in the app. An agent sends `table create` and `put`, the phone keeps the rows in one SQLite file per agent in Application Support (never on the relay), and a `query` line draws them as a table, list, chart, stat or card. Tick a row in a list and the phone writes it and tells the agent. A refused write goes back once after the reply. Removing an agent removes its tables. Kill the app and relaunch: the rows are still there. For Arnold: a workouts table, a variations table keyed by move, and a custom workout as rows you edit by tapping; the shots show a tick and a swap, then the same screen after a relaunch. Swift unit tests, the shared table vectors (all green in the Swift runner) and two UI tests pass. It rides the next daily build. - Oct 1, 2026
Voice on the web says what it hears, or why not
Chris, on yuigui.com/web in Chrome: the mic said Listening, the wave stayed flat and no words came. The recognizer could fail without a word on screen. Now the recognizer's own errors (blocked, offline speech service, no mic, unsupported language) each get a plain line on the mic line and in the thread. If the recognizer never opens the mic it gets one fresh try, then says so after four seconds. If the mic is loud and no words arrive, it says that too instead of Listening forever. The meter also resumes a suspended audio context so the wave follows real sound. Browsers with no recognizer still open on the field. Checked with Chrome's fake mic stream (a looped noise burst) at 390 px and desktop, light and dark: 44 new voice checks (words show, the wave moves from real audio, a pause sends, hold and let go sends, the no-words and no-mic lines) and the 311 composer checks. Chrome's own speech service is not reachable from CI, so the recognizer in the test is a stand-in that answers once the mic is open. - Oct 1, 2026
Yui on the web: your agents, the drawer, adding one
Open www.yuigui.com/web?demo=penny. The drawer has your chats, the review, backlog and shortcut rows (a tap sends the same line the phone sends) and an Agent tab. The bar at its foot lists your agents with honest presence. Edit agent renames, picks a look, mutes, makes default and removes with the app's own confirm. Add agent: the crew in one tap, or a name and a look, then a six digit code with its ten minute clock, the one command to paste, the wait for the gateway and Say hi. Controls (personality, memory, skills, schedules) open from the drawer and every delete asks first. Cmd or Ctrl K opens a palette in place of the phone's home screen quick actions. An MCP client's connect approval works in the browser. Checked at 390 px and desktop, light and dark: 349 and 270 e2e checks, 628 parity checks, a live round trip against the backend. Not yet: group threads. The phone has no group screen either (YUI-94), so the web waits for it and the parity map says open. - Oct 1, 2026
The coach's workout tables, to try on the web
A new starter in the playground, Tables: build my workout. It makes three agent tables: the week's workouts, today's session as rows, and a variations table keyed by move (goblet squat swaps to front squat, push-up to incline push-up) with a cue for each. The session is a check list: tick a move and the row is written. One put swaps a move for its variation and the sets and reps stay. The same screen is in the library (search workout, or yuigui.com/api/library?q=workout) and on the showcase. Two new conformance vectors, the swap and the custom workout edit, pass in all four parsers (JavaScript, Python, Kotlin, Rust, 792 vectors each). The channel guide has the example waiting for the build that keeps tables on the phone (YUI-89). Not on the phone yet: this is the web half. - Oct 1, 2026
Siri logs your food and starts your workout
Three new things for Siri. Log my food (or Log a meal, or Snap my food) opens Yui straight on Basil's camera, from wherever you were, with no chat first: hold to snap, say what it is, let go. Tell Yui what I ate, then say a bacon cheeseburger with fries: the words go to Basil as a meal log, Siri says Logged without opening the app, and Basil's answer with the meal and today's calories waits as a push. Start my workout opens Arnold's thread and asks for today's session, the same as the drawer's Start a workout; Start on that card runs the coached session. All three show in the Shortcuts app under Yui. Checked with unit tests for the links and the spoken meal (it goes to Basil with the right words and agent, nothing goes out for empty words or a demo account) and UI tests that Log my food lands on the camera from another agent's thread in light and dark, and that Start my workout sends the ask to Arnold. The simulator cannot run Siri, so the shots are what the intents open. Rides the next daily build. - Oct 1, 2026
The chat bubble keeps your past chats
The chat bubble on every page used to keep one conversation and lose it the moment you started over. It now keeps up to 20. New chat files the current one away and starts fresh. The Chats button top left opens a drawer like the app's: New chat on top, your past chats under it, newest first, each with a title from your first question, its last line and when. Tap one and it opens in the record, so you can scroll back through everything said. Your old chat became the first one, nothing lost. Chats live in this browser only. The oldest drop after 20. Works with a thumb at phone width, with a mouse, and from the keyboard (Tab, Enter, Esc). The chat always opens in dark, so there is one look. - Oct 1, 2026
Past chats show in the drawer
Chris (NOTE-54934): I need to see the chat history, not just New chat. Tested on a throwaway real account, not the demo one: an old chat of 130 messages, one named chat and one untitled. The drawer lists all three under New chat, newest first. Everything said before chats were many is one chat called Earlier. Tap a chat and it opens on its newest messages; scroll up and the older ones load in front, past the 100 a chat opens on, all the way to the first. UI test runs in light and dark. Rides the next daily build. - Oct 1, 2026
Gouda's tuner on the site
The web twin of the app change. On /crew, Gouda's card has a Tune up button under the demo. Tap it and the phone jumps straight to the tuner, the last screen: guitar strings, a dial and Start. Nothing is typed and no message is sent. Back to the beat returns to the demo. The tuner is the same one the playground draws, in light and dark. - Oct 1, 2026
The trash sits flush left
Chris on TestFlight (NOTE-2295): the trash was floating off center in the middle. It now sits flush to the left edge of the bottom bar, the same size and inset as the mic on the right, so the two mirror each other. Slide all the way left and let go to cancel. Nothing else about talking changed. UI test checks the inset in light and dark. Rides the next daily build. - Oct 1, 2026
Tune up goes straight to the tuner
Chris (NOTE-18306): the tuner should be the last screen on Gouda's page, and the Tune button should take you straight there. It is screen 6 of 6 and Tune up swipes to it with no turn. New UI test runs it in light and dark, sits on the page three seconds as the YUI-206 crash recheck, and checks no message went out. The real guitar tune on a phone is still open on YUI-116 step 4. Rides the next daily build. - Oct 1, 2026
The site chat's trash sits flush left
The app got this in YUI-251 and the site now matches. While you talk, the trash used to sit just beside the mic, off center. It now sits flush to the left edge of the bottom bar, as far from the left as the mic is from the right. Tap it and what you said is thrown away, nothing is sent. When the mic is idle, the T button is back beside it, unchanged. Try it: open the chat on www.yuigui.com, tap the mic. - Oct 1, 2026
You stay signed in
Yui kept signing the builder out. The cause was small: the app swaps its short-lived key for a new one many times a day, and the old key stops working the moment the server hands out the new one. If the reply got lost (a cell drop, the phone going to sleep), the phone came back with the old key, the server read that as a stolen key and signed out every device. Three times in three days on the builder's own account. Now the server takes a just-used key back for two minutes and hands over a fresh pair, and the app retries a lost refresh with the same key and only signs out when the server says the key is really bad. A key that comes back after two minutes still ends every session, so a real leak is still caught. The short-lived key also lasts an hour now instead of fifteen minutes, so there are a quarter as many swaps. Tests: a dropped reply stays signed in, the same retry after 121 seconds signs everything out, and the app keeps the account on a network error or a server hiccup and clears it only on a bad key. Server is live; the app part ships in the next TestFlight build (commit 654be58 in the app repo). - Oct 1, 2026
My flows on the web now works like the app
The web mock of My flows was written before the app list shipped, and it had drifted: it showed a duplicate button, a share link and made-up last-run times that the app does not have. It now matches. Every starter in the app's order, a variant nested under the flow it came from (Restaurant intake under Client website intake, and a variant of that under it), the step count on each row. Hold a row of yours to remove it. It always asks first: a variant says your agent can send it again, a base says its variants go with it. A starter has no Remove. Run and Path still work. The spec says the same, with two real app shots. The list is on main and ships in the next TestFlight build. - Sep 30, 2026
My flows: your saved flows, in the app
Saved flows used to live only in your agent's head. Now the drawer has My flows. Each flow is a row with its name and step count, and variants sit under the flow they came from. Tap a row and it runs on the stage. Hold a row to remove it. A variant goes alone, a base asks first because its variants go with it, and starter flows stay put. - Sep 30, 2026
The crew page, checked on a phone after five new first plans
Five first plans landed on /crew in one day, so we played all of them again as a stranger would, on a phone-wide screen, dark and light, with real picks, with Not sure on every question and with Skip. Each one ends in its real plan, nothing runs off the edge, and every button does something. Two things were wrong. The meal and practice plans still wore the word Example in their reply and their card title, which made a real plan sound fake. It is gone. And the page had become slow: six moving blobs and the first-plan screen all started drawing the moment the page opened, before anyone scrolled to them. They now start when they come near the screen. Phone-profile performance on a production build went from 74 to 93 (middle of three runs), and blocking time from about 740 ms to 10 ms. Every link and image on the page resolves. - Sep 30, 2026
Quill's first plan builds the real study week on the site
On /crew, Quill's first plan now ends in the same week the app builds, not an example card. One line says the plan is set. Under it is a row a day: the lesson minutes and the quiz in the style picked, never longer than the minutes you chose. Today's lesson has a Start button. Not sure and Skip on everything still build a plan: a general topic, 10 minutes, multiple choice. - Sep 30, 2026
Quill builds your study plan
Quill's first open used to be one bare question. Now it asks three things: what you are learning, how many minutes a day, and how you like to be quizzed. Not sure and Skip sit beside each. One tap builds a week: a lesson, then a quiz in the style you chose, never longer than the minutes you gave. Today's lesson shows on What you're studying with a button to start it. Skip on everything still builds a plan: a general topic, 10 minutes, multiple choice. - Sep 30, 2026
Penny's first plan builds the real week on the site
On /crew, Penny's first plan now ends in the same routine the app builds, not an example card. One line says when planning is and how reminders go. Under it, the week: a row a day, the busy days marked light, never more than one item on them. Then today's list with a tick, and a card to add a first must-do. Not sure and Skip still build a routine: planning Sunday evening, no busy days, one nudge that morning. - Sep 30, 2026
Penny sets up your planning routine
Penny's first open used to be a bare form. Now it asks three things: which days are packed, when you plan, and how you want reminders. Not sure and Skip sit on each. The Send puts a planning slot on your week at the day and time you picked, never more than one item on a busy day, and keeps those busy days light for every plan after. Skip everything and you still get a routine: planning Sunday evening, no busy days, one nudge that morning. The reply ends on a card to add your first must-do. - Sep 30, 2026
The site builds your practice week
On /crew, Gouda's first plan now ends the way the app does. One line, then the week, a day a row, and today's session with a Start button that opens the timer. It follows your answers: the instrument you pick, sessions that add up to exactly your minutes, drills no harder than your level. Not sure and Skip give a beginner plan of 15 minutes a day (the site used 20 before). It is still an example, built in the page, and no agent is called. - Sep 30, 2026
Jev is on
Chris, Sep 30: "lets just get jev setup." The measured setup from YUI-215 is live. On each typed message, one Jev call (about a quarter second) picks the shape of the reply. When it is sure the answer is a card, pages or a full screen, the agent gets one hint line. Lines and yes/no answers stay log-only, because a hint there made the eval worse. The crew's tool router asks Jev in shadow on the server and logs what it would have picked. Nothing about Jev shows in the app. Spend is capped at a dollar a day per gateway; it runs about 3 cents per 1,000 turns. This closes PROP-2's steps 2 and 3. - Sep 30, 2026
Gouda builds your practice plan
Gouda's first open now asks four things: what you play, how good you are, how many minutes a day and what you want to play. Not sure and Skip sit beside each one. One Send builds a week from your answers: the instrument you named, sessions that add up to exactly your minutes, and drills no harder than your level. A brand new player never gets an advanced drill, and ten minutes never becomes a longer session. Skip on everything still builds a plan: guitar-agnostic, beginner, 15 minutes. The plan is saved, so the next open shows today's practice, and a timer at the bottom starts the session. - Sep 30, 2026
Site flows keep your place
The playground flow player now matches the app. Reload halfway through a flow and it opens on the step you were on, with the answers you gave kept for the send. A flow you already sent shows as sent after a reload and does not send again. Ask for a saved flow by a name that does not exist and you get the short note, a Saved flows button, and the three closest names, each one a link into the library. One gap: a text box or a chip you filled before a reload shows empty if you step back to it, though the answer is still kept. - Sep 30, 2026
Every link and image on the site checked
After this week’s pages (the crew, new thoughts, See it 0.6.2, Widgets and Siri, the new diagram and mock presets) we crawled www.yuigui.com again: 525 pages, 2,739 internal links and images, 1,697 anchors. All of them answer. The share cards pass too: 405 share links, 42 pages. Five outside links refuse bots or moved (four 403, one Apple docs page 404), so nothing was changed. Checked at commit 766f26d3. No screenshots: a check, nothing to see. - Sep 30, 2026
The app runs flows
A flow an agent sends now runs inside the app. One question fills the screen, with a bar showing how far along you are. Back walks the steps you took, and if an answer sends you down a different branch, the old branch's answers are dropped. When the last question is done, a review lists every answer with an Edit button, and one send button returns a single message to the agent with your answers and the path you took. If you kill the app halfway, it opens on the same step with your answers kept, and a flow that was sent never sends twice. The starter flows, website intake and the first-plan questions among them, ship with the app. A flow name the phone does not know shows a short note and a way on, never a bare headline. Older builds still get the same questions as a plan. - Sep 30, 2026
Try Basil's real week on /crew
The Try their first plan button under Basil on /crew now ends on a week, not one sample day. It keeps only the days you picked (weekdays, weekends, every day or Mon Wed Fri), only the meals a day you chose, drops anything from your leave-out list, and keeps recipes within your cooking time. Not sure and Skip give every day, three meals and 30 minutes. The reply is one line and then the week, a day a row. It is an example, the same rules as the app. - Sep 30, 2026
Basil builds your first week of meals
A new person who opens Basil now meets five questions, one screen, Not sure and Skip on each: what the goal is, which days to plan, how many meals a day, what to leave out (allergies and conditions count, and you can type your own) and how long you can cook. One button, Plan my week, builds the week from his recipes: only the days you picked, only the meals a day you chose, nothing from your leave-out list, and recipes within your cooking time (when nothing that quick exists for a meal, he steps up to 30 minutes, never further). Not sure and Skip fall back to every day, three meals and 30 minutes. The reply lands on the week, one line on top and a card for each day, with a grocery list already filled in. Tap any meal to swap it and the swap keeps to the same rules. The hello keeps the line to check with your doctor before big changes. It is the same five questions as the saved flow first-meals. - Sep 30, 2026
Watch the trainer's workout run on the site
The app's timed workout (YUI-220) now plays on www.yuigui.com/crew. After Arnold builds your week, Start today runs a short session in the page: a work set, a rest countdown with Arnold's line and what is next, then the next move. No taps between sets, and a finish card at the end. It uses demo timing, three moves with short sets, so you see the whole thing in about a minute. The words are the app's. Heavy lifters get the last set of each lift as "To failure. Stop when form breaks." with a Stop button; new lifters never see it. Reduce Motion gets a still countdown, no ring. - Sep 30, 2026
Start a workout and it runs on its own clock
You asked for a time based workout that flows. Start now opens a full screen session. A work set runs on a clock, the rest counts down by itself and says what is next, and the next move starts with no taps between. Done early, plus 15 seconds, Pause and Skip are there if you want them, and the session keeps its place if you leave the app. The coach line for each move comes from the agent. If your first plan chose failure sets, the last set of a lift shows 'To failure. Stop when form breaks.' with a big Stop that logs the reps; new lifters never see it. The finish screen shows sets done and time, then writes the log. Dark shots first, then light: a work set, the rest with the next move, the to-failure set, and the finish. - Sep 30, 2026
The Widgets and Siri page shows what is built
The page used to be a spec and a mock. Now it lists what YUI-40 steps 2 to 4 shipped: tick and Start buttons on the widget, Ask an agent, Show a saved screen and Start a timer for Siri, the Talk to Yui control, and the widget push relay, drawn as a picture. A table marks each piece live or later (the large size and StandBy are later). Two simulator shots show the widgets in light and dark, with Start turned into Pause after a tap. - Sep 30, 2026
Diagrams now fit a phone card
Two nits were left over from today's phone check. At 390px a sequence diagram with three actors was 380 units wide, so in the narrow playground phone it scrolled inside its card and drew its text at about 11px. It now wraps each message tighter until the whole drawing is 252 units wide. It fits the card with no inner scroll and the text is about 14px, numbers included. On a flowchart, the label on a looping edge could sit on a box. Labels now slide along their edge to a clear spot, a looping edge bows out far enough to clear its label, and a chart wider than the card wraps its box text shorter, so the checkout retry chart went from 12.5px text to 15px. The shots are the playground sequence demo and the chat answering how does checkout go, before and after, dark first, and the sequence in light after. - Sep 30, 2026
Today's drawings, checked on a phone in both themes
Five drawn pieces landed on the site today: the chat's diagram and screen mock, the Show, don't tell Thought, and the playground's diagram and mock demos. None had been checked at phone width. At 390px, in light and dark, none of them scrolled sideways, but text ran small. The sequence diagram drew its labels at about 8px, flowchart edge labels at 12px, screen mocks at 11.5 to 13.5px, and code in the Thought at 12.5px. Taps were short too: Close 36px tall, Back to home 40px, and the Privacy and Thoughts links 17 to 18px. Now diagram and mock text is 14px or more, the chat fits the diagram at about 15px, and every tap there is 44px. The shots are the chat diagram and the sequence demo, before and after, dark first, and the mock demo after in light. A sequence with three actors is still wide: in the narrow playground phone it scrolls inside its card at about 11px instead of shrinking to 8px. One open nit: a short label on a looping edge can sit over a node. - Sep 30, 2026
The site chat answers with one line and a drawing
The app's agents moved to one line and a drawing today. The chat bubble on this site still wrote paragraphs. Now it follows the same rule: one line of 30 words or fewer, then one drawing (a diagram, shapes, a mock of a screen, a timeline or a stat). It can draw diagrams and mocks, and a Mermaid kind the page cannot draw is left out, so no raw Mermaid text shows. Any text after the drawing is cut. Four visitor questions (how does Yui work, what is Yui Lines, show me a screen, how do I pair my agent) before: 1 of 4 replies was one line and a drawing; the other three ran 50 to 112 words, one to four text bubbles and no drawing. After: 4 of 4, in two runs, each one text bubble of 10 to 27 words with its drawing. The check is site/scripts/chat-oneline-eval.mjs. The shots show the same question before and after, dark then light, at phone width. - Sep 30, 2026
Delete account is two taps from the drawer
A first-time tester needed 17 seconds of scrolling in Settings to find Delete account. Account was the second to last of ten sections. It now sits right under Appearance: open the drawer, tap Settings, and Sign out and Delete account are on screen. The confirm sheet and the delete itself are unchanged. A UI test on a fresh simulator logs drawer to Delete account in 2 taps, about 5 to 8 seconds including the test runner's own waits. The yui://settings/account link lands there too. Ships with the next daily build. The shots are before (Full screen first) and after (Account under Appearance), dark then light; the email line is masked. - Sep 30, 2026
The roadmap top is up to date
The top of the roadmap was a day and two releases old: it said Sep 29 and Yui 0.6.0, build 351. It now says Sep 30 and leads with Yui 0.6.2, build 392, with 0.6.1 (build 380), 0.6.0 (build 370) and 0.5.3 as short lines under it. Older releases collapse into one line that points to progress and thoughts. Two new lines say what changed today: replies are one line and a drawing, and a build goes to TestFlight every morning. Building now and Next release were rewritten from the live board in plain words. - Sep 30, 2026
Send up to 10 photos in one message
Chris: "We shouldn't just have a four image limit." The picker used to stop at 4. Now one message carries up to 10, and the model gets all 10 in one call, in order. The number lives in one place on the server, so it can move without a new build. Checked on a real account on a fresh simulator: 10 photos numbered 1 to 10 went out in one send, an 11th was refused with "Up to 10 photos in one message.", and Yui answered 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Ten photos shrunk to 2000 px are about 6 MB, sent as links, so the request to the model stays small. Only what you pick is capped: galleries and replies draw any number of images. - Sep 30, 2026
A Thought on drawn replies
The Thought covers Chris's ask, the before numbers from the last 50 replies, the guide rule, the plugin gate in shadow mode, and what a reply can now draw: a sketch, shapes, a diagram and a mock. Each has its picture, and the playground demos are linked. - Sep 30, 2026
The changelog says when the next build lands
Yui builds now go to TestFlight once a morning, at 6 am ET, and only when the app changed. The changelog used to say changes were waiting on Apple, with no time. Now the changes on main carry a Ships at 6 am ET pill and a plain line: Next build, today or tomorrow, 6 am ET, depending on whether the morning run has happened yet. The time comes from one place in the site's release code, and the page refreshes every 10 minutes so the day flips on its own. - Sep 30, 2026
One page holds up to 3 ideas
Chris: "Most answers are so short they take up about 20% of the middle of the screen. I don't need every idea on one card. Up to 3 ideas on a card, as long as we're showing them." Before, the stage played one page per idea: a three-idea release reply was 3 pages and a questions page. Now consecutive ideas pack onto one page, up to 3 and 60 words, each the line first and its drawing under it. Scenes scale to half the width so three fit; a sketch keeps its own height and the page scrolls if it must. A deck or plan page, a map, a timer or a game keeps a page of its own. The same rule lives in the web reference (packPages in chunks.mjs) and the app (StageChunks.pack), with three matching tests each. The shots are the same release reply on a 390x844 phone: three pages before, one page after. In the last 50 replies, pages per reply drop from 2.0 to 1.8 with a rough count (most replies were already one line); the multi-idea replies are the ones that fold. The channel eval case vis-three-ideas-one-page (max 1 page) already holds the guide side. Rides the next 6 am release. - Sep 30, 2026
One build every morning
TestFlight now gets one Yui build every morning at 6 am ET, and only when the app changed since the last one. Fifteen uploads went out in three days and TestFlight still lagged main, so a build shipped whenever it was ready helped nobody. Now the night's changes are tested, bumped and uploaded together while you sleep. If a check fails, nothing goes up: the build is held and a fix card opens. A tester sees one fresh build waiting each morning, and the changelog says when the next one lands: Next build, tomorrow, 6 am ET. Asking for a build by hand still ships at once. - Sep 30, 2026
Replies are one line and a drawing
Chris: "I'm still just getting texts on multiple slides instead of one, which is not the point. I want drawings and illustrations to show what we're talking about, in addition to short text." I scored the last 50 replies first: 44% ran over 30 words, 32% drew more than one text bubble, and 36% were one short line plus a drawing. Today's replies were 52%. Three changes. The channel guide (v44) has a hard rule: one line of caveman words, 30 at most, then a drawing in Yui Lines, up to 3 ideas on one page, never a generated image. The Yui plugin now checks every reply before it sends. A reply over 30 words, with a second prose bubble, or opening with "so" or "got it" is cut to one line and its picture. It starts in shadow mode, which only logs counts, and flips to on with yui.one_line. The channel eval has six new cases (status, what did you fix, you misread me, put a card in, caveman briefing, three ideas on one page) that fail on prose. Old guide: 11 of 18 runs pass. New guide: 18 of 18. Re-scoring the same 50 replies with the gate on gives 86% one line plus a drawing, and 90% on today's. The rest are prose-only replies, which the guide has to fix, since the gate cannot invent a drawing. The morning briefing, weekly update and lane driver prompts carry the same voice rule now. The shots are the playground render of the same replies, before and after. The playground demo at yuigui.com/playground?demo=one-line plays the two side by side. - Sep 30, 2026
YL can draw a flowchart and recreate a screen
Chris asked for YL to recreate different UIs and sketch a flow chart. `diagram` takes Mermaid between the head line and `end` and draws it static: a flowchart with shapes, link styles and subgraphs, a sequence with notes and loop or alt boxes, a state diagram with start, end and composites. Nodes come on in order, colors come from the agent's look, and a wide left-to-right chart turns top down on a phone. `mock` rebuilds a screen from `part` lines: a phone, window, watch or browser frame with nav, tabs, rows, fields, toggles, cards, a grid, sheets, alerts and a keyboard, with sketch's marks and note callouts. Both work as a deck page's picture. The spec is in YL.md (diagram, mock, part), the vectors are js-40-diagram and js-41-mock (JavaScript parser only for now), and docs/research/yl-visual-gaps.md lists the 20 real asks that needed a drawing and what is still missing, ranked. Try them in the playground: Draw: a flowchart, Draw: who talks to whom, Draw: a screen redrawn, Draw: a pricing page. The app, the other parsers and the channel guide are the next two cards (DRAW-2, DRAW-3). - Sep 30, 2026
Yui 0.6.2: the first minute works on a real account
Version 0.6.2 is on TestFlight as build 392. Tap Open on Yui's card and you land on the trainer's first question, and it stays on screen. Answer the five questions, tap Send, and your week is built. The notifications ask comes once, after that first plan. Every screen has a menu button and a chat button, so the drawer and Add an agent are always one tap away, and Add an agent shows one pairing command. Before the upload the whole path ran on a fresh simulator with a real throwaway account, not the demo, in dark and light: pick a crew, Open, answer, Send, allow notifications, add an agent, pair it, delete the account. It passed, with no rows left behind. Earlier runs on the same path found four snags (YUI-231, YUI-233, YUI-234, YUI-236) and each was fixed before this build went out. - Sep 30, 2026
Jev at two decision points, measured against today
Chris, Sep 29: "we should be using this at multiple decision points... let's make our first couple implementations of this model and see if we can improve performance." Two decision points, both built in shadow: which shape a reply should have (line, yes/no, card, pages, full screen) in the Hermes plugin, and which tool a crew agent should use for a message the hand-written patterns missed. About 770 Jev calls on the channel eval's messages, 141 real Yui messages and 174 made-up phrasings. Tool router: today's patterns catch 65 of 124 asks (52%), Jev alone 114 (92%), patterns then Jev 120 (97%). Reply shape: on every shape the hint made the channel eval worse (91% of hinted cases passed without it, 82% with it); on card, pages and full screen only it lost no case in two runs (86% to 100% on 25 cases). Speed and cost held: median 248 ms, 95th percentile 323 ms, about 3 cents per 1,000 turns. The labels are hand-made and nothing has run on live turns yet, so the write-up says where that limits each number. Both paths are in the code and dormant until the OpenRouter key is in the gateway's environment; the hint is off. - Sep 30, 2026
The last page keeps the mic
Chris: "At this final screen I will probably want to use the microphone button if I just want to say something a little unrelated. If I make the selections and then push the microphone, I want them all to go in together as one answer to the agent." Now the mic and T stay on the bar of the last page. Back home moved onto the page, under Send, with a New chat button beside it. Pick your answers, then talk or type: the words ride in the same event as the plan, so the agent gets one answer and the chat shows one message. With nothing picked, words still go alone as before. Pull down to dismiss and Back home sending nothing are unchanged. Five UI tests cover the buttons in light and dark, typed words with a pick, spoken words with a pick, and words alone. Ships with the next TestFlight build. - Sep 30, 2026
Yui 0.6.2: the first minute, fixed, in one post
Read it: https://www.yuigui.com/thoughts/yui-0-6-2-the-first-minute-fixed. The screens are in See it too: https://www.yuigui.com/mockups#release-062. Both name build 392 and show dark first, then light. - Sep 30, 2026
A screen is never a dead end
On a real account, building the week plan landed on the coach's last screen (Streak). Screens hide the top bar by design, so there was no header, no menu and no way back but three swipes. Now every screen page carries a menu button (opens the drawer, where Add an agent lives) and a chat button (back to the thread). A new real-account test runs the intake, builds the week, allows notifications and checks both buttons can be tapped, in dark and light. App commit d046474. Rides the 0.6.2 TestFlight build. - Sep 30, 2026
The site is faster again, and the newest post no longer jumps
Four days and many pages after the last speed check, we measured again on a phone profile. Three fixes. The chat bubble now loads after the page paints instead of with it, so the first paint no longer waits for it. The crew page and the Thoughts list lost their last accessibility flags, so every page now scores 100 there. And a single screenshot in a Thought now keeps its space before it loads, so the text no longer jumps down: layout shift on the newest post went from 0.171 to 0. Middle of three runs, before to after: the playground went 74 to 85, the progress page 78 to 85, the developers page 81 to 97, the crew page 90 to 96, the newest thought 85 to 96, the home page 87 to 91, the thoughts list 95 to 96, the roadmap 85 to 87, and the mockups page stayed at 90 or 91. Blocking time on the playground fell from 392 to 135 ms. Three pages still sit a few points under 90 on performance: the playground, progress and roadmap. What is left is Google Analytics at 177 KB, which loads after the page, and long pages with many pictures. Accessibility and best practices are 100 everywhere. - Sep 30, 2026
Every crew agent is the shader blob, on the site too
The app already drew every default as the blob. The other copies still named the old looks, so this lines them up. The four starter profiles, the runtime crew table, the copy the native functions bundle, the site crew table and the crew page all say orb now, and each agent keeps its own hears, strength and pace (Arnold and Gouda hear music, Penny hears nothing and draws fainter). On the site, the crew page and the stage-first mock now draw the same action blob as the app, and the agent's doing word picks its shape: Asking your devices is the thinking cloud, Checking is the football. The old three-layer orb mark on the working stage is gone. A person can still pick waves, bloom, grain or aurora on their own agent; only the defaults changed. - Sep 30, 2026
The blob changes shape with what your agent does
Chris: "The blob sits in the center and changes shape with what the agent is doing: a perfect circle, a football, and so on." The mock at /playground?demo=shader-look now defaults to that blob. Idle is a circle that breathes. Thinking is a cloud of five puffs. Reading is a football with a band of light moving across it. Running is a rounded square that turns a quarter on each beat. Searching is a drop whose point sweeps round. Talking is a tall pill that stretches with the voice, through a smooth follower so it never jitters. Done pops once and goes back to the circle. The shapes melt into each other instead of snapping. The agent's own doing words pick the state. Currents, Type and Dots stay in the Look picker as alternates; Terrain is out. In the app, the vector line blob goes and the shader alone draws the agent. - Sep 30, 2026
The first question stays on screen
On a real account, Open on Yui's card switches to the trainer's thread and puts the first question of the first plan on screen. A second opener, the one for a notification tap, then landed on the hello's words, which have nothing on the stage, so the stage shut and left the chip and a Skip card in the chat. That opener now leaves a message with nothing staged alone. Found on the 0.6.2 stranger run. Proved on a fresh simulator with a throwaway account: pick the crew, Get fit, Open, and the question is up in about a second and still up 14 seconds later, after the trainer's own reply has landed. Going away and back by the agent bar shows it again. The account was deleted after, with no rows left. The system notification prompt at first launch in that run was the later-launch fallback, because an earlier try had already opened the app on that simulator. - Sep 30, 2026
Declining an invite request works
Invite requests wait in the drawer with Approve and Decline. A tap on either used to reach the agent as a plain chat turn, which never ran the invite tool, so the request stayed and the ask came back. Now Yui runs the tool straight from the tap, answers in one line, and the row leaves the drawer. Approve and Decline are for the owner only. The shots are the playground render of the ask and the answer. - Sep 30, 2026
Open on Yui's card lands on the first question
On a real account the first launch is chat first. Yui's answer to Get fit now always carries the Open card, made by the runtime and not left to the model. Open switches to Arnold's thread and his first plan shows its first question straight away, with Skip for now below it. Switching to Arnold from the agent bar does the same. I proved it on a fresh simulator with a throwaway account: pick the crew, Get fit, Open, and the question is on screen in about a second. The account was deleted after, with no rows left. - Sep 30, 2026
The chat bubble steps off the crew phones
At 390 px the floating Yui bubble covered the right end of the pick-your-crew phone's Start with N button, and the first plan phone's lower rows, so a tap there hit the bubble. Now the bubble fades out and stops taking taps while a demo phone sits under its corner, and comes back as soon as you scroll on. I checked in dark and light: taps at the left end, the middle and the right end of Start with 1 all land on the button. Also in the same pass (SITE-132): after the first plan is built, Start over, Open it in the playground and Read the proposal are one weight, one colour and one column at 390 px, so nothing wraps alone. Nothing else on /crew moved. - Sep 30, 2026
Show me is answered in the app
Before, asking Yui to show the four shader looks again got one card whose only button opened the playground in Safari. Now the guide says: send the shots as a gallery with a pick in the same reply, and keep any site link small under them. When a playground demo has no shots yet, yui_demo_shots.py renders them headless and the agent sends the files. A war room ask that names a demo carries its shots too. New channel eval cases (show me the four looks again, two looks, bare show me again) score 0/3 on a link-only reply and 3/3 on the guide, twice in a row; the old guide also passed 3/3 twice, so the tightening in v43 is one explicit line for the pick. The after shot is the playground phone drawing the same lines, not the app: the app draws a gallery with a pick already. - Sep 30, 2026
A stranger's first minute on the site, timed
I walked the site cold, no cookies, at 390 px in dark and light: home, the menu, Get Yui, /start, /crew (picked Arnold, played the first plan through five taps to today's session), then /progress. Timings, first paint to ready: home 1.2 s, /start 0.2 s, /crew 0.4 s, picking a crew 0.3 s, the first plan's five taps about 0.5 s each, /progress 0.2 s. Slowest hard load was 1.2 s, so nothing is over 2 s. No dead taps, no page wider than the phone, no link that 404s, no failed request. One snag fixed here: after a menu tap, the new page landed 113 to 167 px down, so the top card's heading hid under the sticky bar on /start and the first block was cut on the roadmap, board, proposals and progress. It was one line of CSS. Every page now lands at the top. Two smaller snags are carded, not fixed: the chat bubble covers the crew demo's Start button (SITE-131) and the first plan's link row has uneven baselines (SITE-132). The hero button goes straight to TestFlight, and Get Yui, which leads to /start, lives in the menu on a phone. - Sep 30, 2026
Yui asks about notifications after your first plan
A stranger run on a fresh install never saw the Allow notifications prompt. The ask ran at sign-in, before the app was on screen, so iOS dropped it. Now it waits for the first plan. After Build my week a card says Want a nudge when Arnold checks in? with Yes and Not now. Yes raises the iOS prompt, and Allow registers the phone for pushes. Not now leaves it for Settings. It shows once and never twice, and never if iOS already has an answer. The old sign-in ask stays only as a fallback on a later launch if the question never showed. New UI test PushNudgeTests, on a fresh simulator in light and dark: it fails on the old build (no line after Build my week) and passes with the fix. A simctl push to the app was accepted on an authorized simulator, but the banner did not show in two tries, so the real-phone push check rides the next TestFlight build. - Sep 30, 2026
The start page shows one pairing command
Before, /start listed install, pair and restart as three steps. Now step 2 is one block with a Copy button that does all three, the same command the pairing sheet in the app shows. The help line for an agent that is offline is still there, and the agent guide and spec say the one command covers the restart. Shots are 390 px wide, dark and light. - Sep 30, 2026
Add an agent is in the drawer, and pairing is one command
Before, the drawer had no Add an agent and the pairing sheet listed three commands. Now the drawer has the row in view, and the sheet shows one command with a single Copy button beside the code. It installs the plugin, pairs, and restarts the gateway. Shots are dark mode. - Sep 30, 2026
Your first minute, now faster
The Your first minute Thought has a new part, After the fixes. The cold run timings sit next to the new ones, with the screens for each fix. - Sep 30, 2026
A logged meal lands on today's calories, on the site
The site shows the meal logging demo from build 380. Before, a meal log ended on Basil's grocery list. Now it ends on Today, with the calories and the macros bars. The shots are dark mode on a fresh test account. - Sep 30, 2026
On the site, Open on a crew card lands on the first question
The app did this already (YUI-225); the site did not. On www.yuigui.com/crew, tapping the trainer's card in Your crew opened a thread with only a hello line and an empty screen. Now, until the first plan is built, it lands on Your first plan, step 1 of 5, with What are we training for? ready to answer, plus Not sure and Skip for now. Answer five and the built week shows. The other crew members with a first plan do the same with their own questions. Yui and agents you bring keep the hello. The shots are dark mode at 390 px: before, the empty thread; after, the first question. A light shot follows. - Sep 30, 2026
Open on a crew card lands on the first question
A stranger run found it: after Get fit, Open on the trainer's card went to his full-screen page, with the questions one close and one tap away. Now, until the first plan is built, Open lands on Your first plan, step 1 of 5, with What are we training for? ready to answer. Once you tap Build my week, Open goes to his home as before. The shots are dark mode: before, the page Open used to land on; after, the first question. - Sep 30, 2026
A logged meal lands on today's calories
Build 380 (Yui 0.6.1) fixes where a meal log leaves you. Before, the redraw sent every page and the grocery list went last, so the phone ended there. Now the page your ask is about is sent last: a meal log ends on Today, a grocery add on Groceries, a plan on the week. The shots are dark mode on a fresh test account, so Today reads 0 kcal of 2,100; a logged meal fills the number and the bars. - Sep 30, 2026
Try every crew member's first plan
SITE-123 played only the trainer's intake. Now each crew member's card has Try their first plan. Basil asks goal, days, meals a day, what to leave out and cook time. Gouda asks instrument, level, minutes a day and what you want to play. Penny asks busy days, when you plan and how you want reminders. Quill asks what you are learning, how long you have and how you like to be quizzed. These are the same questions as the saved flows of YUI-227, one to a screen, with Not sure and Skip on every one. The last screen is a small example of what the agent builds, labelled as an example, and every answer changes it. The trainer's button jumps to the five question plan above. Start over and Back to the demo are always there, and Open it in the playground carries your answers. - Sep 30, 2026
A first plan for Basil, Gouda, Penny and Quill
Each crew member now has its own first plan as a saved flow, one question a screen, with Not sure and Skip on every one. Basil asks goal, days, meals a day, what to leave out and cook time, then Plan my meals. Gouda asks instrument, level, minutes a day and what you want to play, then Build my practice. Penny asks busy days, when you plan and how you want reminders, then Set my routine. Quill asks what you are learning, how long you have and how you like to be quizzed, then Build my study plan. Answers come back in one event as plain keys. All four are in the library at /developers/library and the spec is in FLOWS.md next to first-plan. The app cards for each can now just play the flow and build the result. - Sep 30, 2026
A first plan any agent can send
Five questions, one a screen: goal, days, time per session, gear and experience. Every one has Not sure and Skip, and one button, Build my week, sends the answers back as plain keys: goal, days, time, gear, experience. Gouda, Penny and outside agents can send the same shape and answer with something built. It is in the library at /developers/library, `/api/library?q=first+plan` finds it, and the spec is in FLOWS.md next to the workout check-in. - Sep 30, 2026
The site's first plan asks the same five questions
A visitor who tried the site and then installed the app used to meet two different flows. The site demo had four taps, the app (0.6.1, YUI-217) has five questions. Now /crew plays the app's own intake, one question at a time, in the same order: what are we training for, how many days a week, how long per session, what do you have, how much have you lifted. Not sure is there on four of them, and Skip for now keeps the starter week. Every answer changes the built week: goal and days set the split, time sets the minutes, gear swaps the lifts, and experience sets how hard the last set goes. Tap Start on today's card for the warm-up timer. Try it: https://www.yuigui.com/crew#first-plan - Sep 30, 2026
Thought: Your first minute with Yui
What a stranger sees on build 380, in order: the crew picker, Arnold's five questions, then a week that is already built. It uses the timings from the cold run and names the five snags as next work. Read it at /thoughts/your-first-minute-with-yui. The screenshots are in the post. - Sep 30, 2026
Yui 0.6.1: pick your crew, get a first week built
Version 0.6.1 is on TestFlight as build 380. A new person now picks their crew on first launch: Yui first, then any of Arnold, Basil and Penny. Open Arnold and he asks five questions, one at a time: what you train for, how many days, how long, what you have, how much you have lifted. Tap Build my week and This week, Today and Streak fill in from your answers, with a starter session ready to go. Also in this build: a long answer wraps whole in the message box, one Agent tab, the meal you plan lands on Today, and the trash and looper fixes from feedback. Before the upload the whole path was run on a fresh simulator with a real throwaway account, not the demo: pick a crew, open Arnold, answer, see the built week, type a long answer, switch agents five times, kill and relaunch. It stayed signed in every time. The backend that builds the week was redeployed first, since the live one still had the old questions. - Sep 30, 2026
Your plan is built the moment you tap Send
The cold run found a snag: after the intake Arnold asked two more things (Finish your split) and no plan came inside two minutes. Two causes. The live backend still ran the old intake, and when a stranger asked for a plan in words the model wrote its own wizard, sometimes with an extra injuries step. Now the runtime owns it: any request for a plan sends the one built intake, Send builds This week and Today at once, and anything left unanswered gets a default you can change from the plan. Arnold's instructions no longer tell him to run a wizard. Checked live on a fresh simulator with a throwaway account: Send to the built week took 2.1 seconds on screen, 1.0 second in the database, with no follow-up questions. Same shape holds for the goal, days, time, gear and experience answers, Not sure included. - Sep 30, 2026
A stranger runs Yui cold: about 6 minutes, five snags
A cold run on a fresh simulator and a throwaway account, dark and light, against the live backend. Sign in with Apple and the TestFlight install cannot be driven on a simulator, so the account was signed in by token. Launch to the crew picker took 12 to 15 seconds. Picking Arnold, Basil and Penny and tapping Start took about 25. Yui's hello came 2 seconds later, and Get fit was answered in 5. Then the snags: Open on Arnold's card lands on his page, not his first question (25 seconds to the intake). After the 4-step intake Arnold asks 2 more, and no plan was built inside 2 minutes. Add an agent hides behind the agent bar, and the pairing sheet has three commands, not one. Once the code was in, the computer paired and the screen came back in about 8 seconds. No push banner showed in the simulator. Deleting the account takes 17 seconds to reach and 4 to finish, and leaves nothing behind. Each snag is its own card. Whole run: about 6 minutes. - Sep 30, 2026
The new pages, on a phone
Every page that changed Sep 28 to 30 was shot on a phone at 390px, light and dark. Home, Crew and the newest Thoughts were clean: no sideways scroll, no clipped text. Two things were not. On Progress, entries with a long link in the text pushed the whole page about 8,000px wide, so the page zoomed out and the text shrank; long links now wrap. On Board, the links on each card (Read the log, See it, Pull request, The code) were about 21px tall; they are now 44px, and the Agent-ready pill has a bigger tap area. Before and after shots below, dark first. Commit 3507a94. - Sep 30, 2026
A Thought on no empty chats
New Thought at www.yuigui.com/thoughts/no-empty-chats. It says why the first open of an agent should end with something useful: pick your crew, answer a few taps, get a saved week, with Not sure and Skip always there. It shows the screens from the app and a live phone you can tap, links to the crew page to try both, and says plainly that the app half is in the next TestFlight build. - Sep 30, 2026
Try the trainer's first plan on the site
The first-open flow from the app (YUI-217) now plays on the Meet the crew page. Pick how many days you can train, what kind of training, what gear you have and how hard to go, with a softer option and Skip. Your answers change the split: days set how many rows, gear sets the main lift, the kind of training sets the session, and the effort sets today's card. Tap Start for a warm-up timer and a checklist. It is drawn with the same Yui Lines renderer as the app, in light and dark. Try it: www.yuigui.com/crew#first-plan. The same plan opens in the playground: https://www.yuigui.com/playground?yl=VVJNb9swDL3nVxC67GL4sK07DCiKpV2XDBlWIAOKHRmbtoTIoiHJCQzox4-S0ya7iR9675GPAWfYmAq2Hwb45h3btoZnnjxEHAOga2HmCTSeCBBGi65eNZo5EKgNn2FAN0OLs7TCmegIDbryI3o07kHBx_QpfU536csqCNMPZsF_1RjhaASbu6XRuP7hHffFNEdgRwrUznQRNOFpVmkJsqIGfWtYMr84RDtf459TiDCwaB3Yk7pQRjDxQvqmzmaos4n6yvo3D90TeqF9nqyFfh5UWqM_kLXpaRoO-REk49qQ1Jrb-Uym11Gk2nnh2pAnMAG0bGYLDWOja0mKfFh6q6I_agKLIjVQzCugE_l50dQzBYgMHRo7eaphjx1BiDxW4HKf7Ln3poDIPHryMfzviJZlQMtCKGBigPrzjlYV5rMI3QrbUaRGWdpvR-BphKDZ5_g7CtQgRSfB_miEeZJM_tpSh5ONy7BlYZ3xeY7RmpgHD3InYvC2BCi60UfxFkY2Tjx41Oh6OaTlZqryiGagehXxYAn2BecJ57SnEAy7VDwXn116mYKulltIa3KNhtFLkwz4Sq1UrX2rPhYsz-fspDdpR314q8n78m-VryZvR5R8hRt0BQfx9l7dFUdCDbtbq8TSG38qmfjij1iVpw3lrOBwVVgraCLeq1JW_wA - Sep 30, 2026
A first plan from Coach
Chris, Sep 29: "your agent should give you a flow to start too." Arnold's first open now asks one screen: what you are training for, days a week, minutes per session, gear and how much you have lifted. Each has a Not sure, and Skip keeps the starter week. One Send builds This week from your answers, saves them, and fills Today with the first session. The last set of each lift goes to failure with a safe stop only for people who have lifted for years; new lifters ease in. It is a rough draft and any day can change. Try the intake: https://www.yuigui.com/playground?yl=plan%40first%20%22Your%20first%20plan%22%20submit%3D%22Build%20my%20week%22%0Achoose%40goal%20%22What%20are%20we%20training%20for%3F%22%20%22Lift%20heavy%22%7C%22Lift%20and%20cardio%22%7C%22Mostly%20cardio%22%7C%22Just%20move%20more%22%7C%22Not%20sure%22%0Achoose%40days%20%22How%20many%20days%20a%20week%3F%22%202%7C3%7C4%7C5%7C6%7C%22Not%20sure%22%0Achoose%40time%20%22How%20long%20per%20session%3F%22%20%2230%20min%22%7C%2245%20min%22%7C%2260%20min%22%7C%22Not%20sure%22%0Apick%40gear%20%22What%20do%20you%20have%3F%22%20%22Just%20me%22%7CBands%7CDumbbells%7CBarbell%7C%22A%20gym%22%0Achoose%40level%20%22How%20much%20have%20you%20lifted%3F%22%20%22New%20to%20lifting%22%7C%22Some%20experience%22%7C%22Lifted%20for%20years%22%7C%22Not%20sure%22%0Aend Commit: https://github.com/postscarcityai/yui/commit/79229f2. Basil, Gouda, Penny and Quill follow on the same shape. - Sep 30, 2026
The site catches up on typing
The app got three fixes in build 378 and the site now matches. Type your own answer grows as you type, so a long answer shows whole instead of scrolling behind three lines. While the mic is listening, a trash button sits to its left: tap it and what you said is thrown away, nothing is sent. The looper lost its Send button; your changes go to the agent when you press Stop. Try the looper: https://www.yuigui.com/playground?yl=loop%2096%20%22Build%20a%20beat%22 and the typed answer: https://www.yuigui.com/playground?yl=choose%20%22What%20should%20dinner%20be%3F%22%20Bibimbap%7CTacos%20%2Bother - Sep 30, 2026
The lone ask, on the site
When Yui asks one thing, the question is the heading and the buttons sit under it. The before and after shots for that live on the YUI-219 entry, 'A lone question heads itself', and they are reused here. The site work was linking them to this card and to the board. Commit: https://github.com/postscarcityai/yuigui/commit/5ade13f - Sep 30, 2026
Typing, trash and looper fixes
Three notes from build 370. A long Type your own answer now wraps in a box, so every word stays on screen instead of being clipped in a pill. Holding the mic to talk no longer turns the mic into a trash can: a separate trash sits to the left, like the lock, and only letting go over it cancels. The looper lost its Send button because it was easy to hit by accident. Its changes now go to the agent when you stop the loop. This is in the code now and rides in the next build. Commit: https://github.com/postscarcityai/yui/commit/91151d9 - Sep 30, 2026
Try picking your crew on the site
The Pick your crew screen from the app (YUI-216) is now a working phone on the Meet the crew page. Tap a row to add an agent, tap More for a short page on what it does, or take the Bring my own agent branch to see the pairing command. It is the same phone as the proposal, so the copy never drifts. The proposal now says Built in the app and links here. Try it: www.yuigui.com/crew#pick-your-crew. - Sep 29, 2026
A lone question heads itself
Before, a single question sat under a big 'One question' title and a line that said 'One quick question.' The question itself was right below it, so both lines said nothing. Now the question is the heading and the buttons sit under it. Groups of questions keep their 'Before I go' heading. This is in the code now and rides in the next build; TestFlight build 370 still has the old heading. Commit: https://github.com/postscarcityai/yui/commit/a7e3f9b - Sep 29, 2026
The board links its demos, and See it is caught up
The SITE-111 tile on the board now links to its demo and progress entry, next to the log and the code, and the See it page is caught up to TestFlight build 370. A visitor can follow a shipped tile to the thing it shipped. Commit: https://github.com/postscarcityai/yuigui/commit/63afd06 - Sep 29, 2026
Pick your crew
A new person no longer lands on six threads. After sign-in Yui says hi and asks who joins: Arnold, Basil, Gouda, Penny or Quill, with Yui always there. Tap a row to add it, or the info button for a short page on what that agent does and what to ask it. Bring my own agent sits in the same list and opens pairing. Start says how many joined, and Yui's first message names only them. The pick is saved on the account, so the picker never comes back. Anyone who signed up before it keeps the crew they have, and older apps still get everyone. Rides the next TestFlight release. - Sep 29, 2026
Pick your crew: a first minute that is yours
After sign-in, Yui asks who should join. Yui is always there. Arnold, Basil, Gouda, Penny and Quill each sit in the list with one plain line, and the i button opens a short page: what it does and what to ask it. Tap to add, then Start. Yui's hello names only the people you picked. Bring my own agent sits in the same list, and it opens pairing. The pick is saved on the account, so the picker never comes back, and people who signed up before it never see it. Rides the next TestFlight release (commit 1064c26, build 376). - Sep 29, 2026
The site shows one Agent tab
YUI-128 merged the drawer's About and Controls into one Agent tab in the app. The chats mock, the home mock, the Talk about this spec and the Agent controls listing on the site still drew four tabs. They now draw three: Home, Review, Agent. About sits on top of the Agent tab and the Controls areas sit under it, with Keys and Model kept. Before is the old four-tab strip, after is the new one, in light and dark. - Sep 29, 2026
Four looks for the stage, none of them a blob
Chris on round one: "They're still kind of blobby, and I think we can get more interesting." So the stage mock now has four directions, and none is a soft blob in the middle. Currents is hairlines on a slow current: they curl into an eddy when thinking, lie flat and light up line by line when reading, carry racing packets when running, and a lens drifts over them when searching. Terrain is a topographic map: strata scroll up like a page when reading, rings leave the middle when running, a peak roams when searching. Dots is a halftone screen that turns into a page of text, then scrolling output. Type is a field of tiny made-up letters with a caret that reads through them. Every agent is the same shader with its own colors, in dark and light, and each one names its phone cost and what a voice would move later. Pick a look, an action and an agent in the playground; nothing is built in the app yet. - Sep 29, 2026
A question from your agent now reads as a question
The ask for the shader look read as a path and a vague Your call, and it was hard to tell what was being asked. The war room now takes a plain question and its options from the agent, drops paths and links from what you read, and draws the card's own screenshots above the question. An agent that blocks on you writes its question and options for you, not for the board. Left: the ask as it was. Right: the same ask now. - Sep 29, 2026
Shipped tiles now link their demos
The board only calls a card shipped when its tile links to a demo and the code. 36 cards had shipped but still sat in Up next as Needs its demo. Each one now links its demo, so they moved to Shipped. Up next went from 50 cards to 13, and Shipped from 362 to 404. The first shot is the board before, the second is today. - Sep 29, 2026
The Agent tab: Keys, Model and your chats
A look at what the one Agent tab sits next to in build 370. Agent has a Model and tools area: the model it runs, where it runs, and which tools are on. Keys live in Settings, on this iPhone only, with the month's spend against its cap. Several chats with one agent are listed on the drawer Home tab, newest first. - Sep 29, 2026
About and Controls are one Agent tab
About and Controls each left most of the screen empty, so they are one tab called Agent. Top to bottom: the agent's face, name and status, where it runs, then Name, look and notifications, and the areas its computer shares. A host that shares nothing shows one What it does card instead of two messages. A shared agent shows who it is and who shared it. Lands on main in app commit 71f1e4f and rides the next release. - Sep 29, 2026
Thought: Yui 0.6.0, build 370
The release post for build 370: several chats with each agent, your own keys in Keychain, a key pick for each agent, and shortcuts on the Yui icon. Read it at /thoughts/yui-0-6-0-build-370-several-chats-your-own-keys. The screenshots are in the post. - Sep 29, 2026
Several chats, on your phone
Build 370 (TestFlight) puts several chats with one agent in the drawer. New chat sits on top, your chats are listed under it newest first, and each one opens where you left it. Hold a chat to rename it, or delete it after a check. A new chat still knows you: screens, the shelf and memory belong to the agent, so your pinned screens are the same in every chat. This build also fixes a drawer that stayed empty when a chat was opened before the list arrived, and a crash when you held a card and tapped Reply. - Sep 29, 2026
The Yui MCP look file is back in step, so main checks go green
The copy of the look file in the Yui MCP app had drifted from the site's, so checks on the app repo failed. It is re-synced to the site's current type, and the checks pass. Nothing to see on a phone, so no picture. - Sep 29, 2026
Show it here, don't link out
Chris asked what Yui was waiting on him for and got a card, Before and after shots, On the progress page, Open. His note: we have components to show before and after, so show the user as much as we can right here. Guide v42 adds one rule. Shots are a compare, an image or a gallery. A UI change is a sketch with before and after. A page's content is its parts, drawn. A card that opens Safari is only a small follow-up under what is already shown, never the whole answer. Ten new eval cases and a scorer check fail a reply that is only a link-out card. Server side, no new build. - Sep 29, 2026
The board says who has each card, and done means linked
Chris: "We should just say that Chris is taking it if you're doing it. A person is a GitHub username... the story isn't done until it's updated on the website with links. Make sure the board is all cleaned up now." The board on this site now follows three rules. Building means someone has the card right now: an agent working on it, or one stopped mid-work waiting on an answer. Cards waiting their turn moved to Up next, so Building went from 16 tiles to 5. Each Building tile says who has it as a GitHub username: our own agents work as @CJohnDesign, and a card an outside agent claimed with a pull request shows that pull request's author. Shipped tiles now link out to the ship log, the demo and the code (the commit or pull request). A card whose code landed but that has nothing on this site to show for it is not shipped: it waits in Up next as Needs its demo until its entry goes up. Also cleaned up: step names like 'step 2a' read right instead of showing as a lone letter, two pairs of cards that shared a number got new ones (YUI-214, YUI-215), the 0.6.0 release lists its six stories, three steps of the chats card that had already landed were closed, and the roadmap's 'where Yui is now' matches TestFlight (0.6.0, build 351). - Sep 29, 2026
A reply quotes the whole screen
Before, replying to a card quoted only its title, so the agent could not tell which screen you meant. Now the reply bar shows the title and up to three rows under it, and your agent gets the same rows with your answer. Real simulator captures, before and after, light and dark. In the next build. - Sep 29, 2026
Your question shows in full, the mic stays, Type your own has room
Three notes from TestFlight, one small batch. The question you asked, shown at the top of a full-screen answer, was cut to one line; it now takes up to six, then an ellipsis. On the last page the mic stays in the bar, so you can tap and talk from any page, and Back home is a quiet line under the content instead of a big pill that took the mic's place. Type your own is a roomy multi-line field that grows as you write, with an Add button under it, instead of a thin pill. Each has a UI test that checks it in the simulator. It rides the next release. - Sep 29, 2026
One blob that shows what your agent is doing
The stage had two looks that clashed: the soft shader and a vector line blob on top. The mock retires the line blob and puts the action inside the shader. Thinking turns the blob over, reading sweeps a band of light down it, running sends rings out on a beat, searching sends a small light around it, and done is one bright ring. The agent's own words pick the state. Every agent is the same blob with the same five knobs in a narrow range, and Basil loses its bloom. Try it in the playground; nothing is built in the app yet. Audio reactive is written into the spec for when agents speak. - Sep 29, 2026
Show me, don't tell me: why Yui draws its answers
Chris sent five TestFlight notes in one day that all said the same thing: answers were wordy, counted things in sentences and took four screens to say yes. The Thought Show me, don't tell me tells that story with live Yui screens inside it: status as Label: verdict tiles, an outcome struck out, one screen for the answer and its question, and a sample that says it is a sample. The eval numbers from both guide releases sit in it as stats. The post is the demo: every picture on the page is drawn live and tappable. Read it at /thoughts/show-me-dont-tell-me. - Sep 29, 2026
The site stage matches the app: more of your question, the mic stays, a roomy Type your own
Chris's TestFlight notes on the app stage now hold on the web too. The question you asked, at the top of a full-screen answer, wraps to five lines before it is cut, where it used to be one. On the last page the mic stays in the bar, and Back to home moves to a quiet button under the content. Type your own on a choice is a roomy three-line box with Send under it, easy to read and to type in, in the site chat and on /playground. Enter sends, Shift+Enter adds a line. The site chat end to end check (28 of 28) and the 90 lib tests pass. Try it on /playground with any choice that has Type your own. - Sep 29, 2026
Answers that know what I asked
A sample board said New feature: needs help, waiting on you. Chris asked what Yui was waiting on him for with this, and got an old, unrelated ask. Two causes: the guide's own example put waiting on you on made-up rows, and a typed line carries nothing that says which screen it is about. Guide v41 marks samples as examples and answers about the screen just shown first; if an old ask comes up, it says when you last saw it and what you answered. The Yui plugin now tells the agent what its newest message was when you type. Server side, no new build. - Sep 29, 2026
A deploy can no longer run ahead of its database changes
Earlier today a crew went quiet because new code went live before the database change it needed. Two guards now stand in the way. A function deploy checks first: if any database change has not been applied, the deploy refuses to run. And a small health probe checks every crew every 5 minutes and alerts in Yui if one stops answering. Server only, no new build. - Sep 29, 2026
Your keys, on your phone: fal, Replicate, ElevenLabs, Anthropic, OpenAI
Settings > Keys is the one door. Paste a key or scan it off your computer screen. It is saved in this iPhone's Keychain, behind Face ID, and never shown again. The iCloud switch is off until you turn it on. Paste something that looks like a key into a chat or a form and Yui holds the send. When an agent wants to use a key it asks with Yui's own sheet: Allow, Allow once or Don't allow. If you allow it, the key is sealed on your phone to Yui's connector and the agent only gets a handle. Every key has a monthly cap, $10 to start. The agent's Controls has a Keys row with what it spent and Revoke, which works on its next call. A grant that goes 90 days unused ends by itself. - Sep 29, 2026
Every proposal now shows who proposed it and where it went
Chris, Sep 29: "Are we saving space for attributions? Such as, who proposed a proposal, did it get taken by anyone? Link to the branch and/or PR." A proposal page now has a Credits and trail block: Proposed by, Sparked by (the posts that started it, linked), Taken by, and the trail as links: the card on the board, the branch and pull request on GitHub, the release in the changelog. Empty lines don't show. The proposals index shows by and taken by on each card. The board sync fills taken by, card, branch and pull request on its own: a card or pull request titled [PROP-n] links itself, and a line someone wrote by hand always wins. PROP-1 to PROP-11 are credited to Chris, and PROP-8 to PROP-11 link the Moltbook authors who sparked them. Credit is opt-in for people outside the team: only a public handle is ever named. An unknown field or a bad link stops the sync. The fields are in docs/PROPOSALS.md. - Sep 29, 2026
Hold the Yui icon, get your agents' shortcuts
Press and hold the Yui icon on the home screen and your agents' shortcuts are right there, up to four. Basil's "Log food" leads the list as "Log food, Basil": tap it and you land in Basil's thread with the words ready to finish. It is the same `menu shortcut` line an agent already sends for its drawer, so an agent needs nothing new. By default the newest used come first, one per agent before any agent gets a second. In Settings > Home screen actions you switch shortcuts on, up to four, and drag them into the order you want. Your picks win. A shared agent's shortcuts only show for the person it is shared with, and a revoke takes them off the icon. No extension, no app group: the app sets them itself, as it goes to the background. - Sep 29, 2026
Shorter answers, drawn not typed
Chris: "Site: good. New feature: needs help. SEO: strong. But not just text. Show me." The channel guide is now v40. A status answer is a sketch of Label: verdict rows, one to three words each, the row that needs you highlighted. A declined invite is the invite itself, struck out, with the result beside it. A running worker is a small drawing of it at its task. The answer and its one question share a screen, with no One question header and no asking whether to do what the last screen offered. The guide is live per turn, so Yui picked it up with no app build. Three new eval cases score it: the old guide fails all three, the new one passes them, and the full suite holds at 85 of 99 on both guides. - Sep 29, 2026
A 404 that is never the same twice
Any bad link on yuigui.com used to land on a black page that ignored the theme. Now it lands in Yui's sketchbook. Every visit draws a new ASCII scene in a new mix of the brand colors, with a new line from Yui that uses the page you asked for. There are ten scenes: currents that gather into 404, Yui Lines raining down and stacking up, a dub waveform with 404 riding it, a garden that blooms it, a sky that follows your clock, a life simulation, Yui typing the page out, a maze with an exit that is not there, static that resolves, and ripples. Poke the art and it moves. Draw another rerolls, and the corner tag holds the seed, so a good one can be shared as a link and replays exactly. Reduce Motion gets one still frame, and it still answers HTTP 404. The sheet shows 24 different reloads, light and dark, desktop and phone. - Sep 29, 2026
A sleek sans for the whole app
You said serif had crept across the app and you wanted better typography. Two things did it: a few agents were seeded with a serif face from their name, and the T button was hard-coded serif. Now the base is SF Pro, the system face, with semibold headings instead of heavy. Every size in the app snaps to a nine-step scale (display 34, title 28 and 22, headline and body 17, callout and subhead 15, caption 13, footnote 12) with tighter tracking on big text and looser on small, tabular numbers on timers and codes, and it follows your text size setting up to the accessibility sizes. The drawer tabs stop growing at XL so no label cuts off. Looks still work: a wizard or zen agent that asks for serif gets it, on top of the new scale. The type specimen shows SF Pro, Inter and Geist on the same screens, and the phone mocks on this site now draw in the same face. - Sep 29, 2026
Thought: Your own key at every stop
A new Thought on why Yui never sells you a model: 100 free turns, then your own key from any provider, and a different key for each agent. Read it at /thoughts/your-own-key-at-every-stop. A page, so nothing to screenshot beyond the ones in it. - Sep 29, 2026
Pick which key each agent runs on
Until now a key was for everyone. Now each agent has its own pick. Open the drawer, Controls, Model and a Runs on card lists Yui's key, Claude and ChatGPT, plus any other provider you have a key for. Tap one you already hold and that agent switches at once. Tap one you do not have and the same key sheet opens for that agent alone, with the provider already chosen. The key is kept beside your others, only that agent uses it, and every other agent keeps running on what it ran on before. Tap Yui's key to go back, the saved key stays. Claude and ChatGPT each keep one key, so a second agent on Claude reuses it. A key you remove drops its agents back to Yui's. The server half is live: a key per provider, and a per-agent pick in the agent's own profile. Rides the next TestFlight build. - Sep 29, 2026
Your own key, at every stop
The free turns are 100 a month. After that, Yui does not stop you: a card says Add my key and opens the Bring your own key sheet. Pick a provider (Claude, ChatGPT, Gemini or Grok, each with a default that can read photos), or sign in with OpenRouter with one tap, or run the agent on My computer. The sheet says the plain thing up front: a Claude Pro or Max plan cannot pay for another app, only an API key can, and it links to where you make one. The same sheet opens from Settings, from the limit card, from Add agent and from Controls, Model, and a photo or lookup that cannot run on free turns points to it too. A key can also be set for one agent. It goes to Yui's server once, is kept locked away, and the app never shows it again. Scoring of the four providers on the channel eval: not scored yet. Rides the next TestFlight build. - Sep 29, 2026
The chat top bar is quiet: the drawer is the one agent picker
Build 332 still had a dropdown chip in the chat's top bar next to the menu, so there were two ways to switch agents. The chip is gone. The top bar now shows the agent's badge and status as a plain title, and the agent bar at the bottom of the drawer is the only picker. The first shot is the old bar, the other two are the new one in dark and light. - Sep 29, 2026
Hold to talk keeps every word
Chris held the mic through a long prompt and only the last ten words got in. The cause: when the newer speech model is not on the phone yet, Yui uses the older recognizer, and after a pause it starts a fresh transcription with only the new words. Yui kept just that, so everything before the pause was lost. Now, when a new stretch begins, the words heard so far are settled first, the same way the newer recognizer already worked. Before: one two three, pause, four five sends four five. After: one two three four five. The newer recognizer also stops dropping a fresh stretch when an older segment settles late. A hold, slide to cancel or lock never starts a second recording. Tests: a 12-stretch prompt with pauses comes through in full. Nothing new to see on screen, so no screenshots. Not yet tried on a phone with a 45 second hold. - Sep 29, 2026
Yui 0.6.0 is on TestFlight: the crew gets real tools
Yui 0.6.0, build 342, is on TestFlight. Chris asked on Sep 28 for the crew to get more tools, with detailed flows and default screens. Each of the five now has them, not just chat. Arnold runs your workout one move per page and his week and progress screens update themselves (YUI-182). Basil draws today's macros board, reads a photographed plate, ticks onto a grocery list that shares out of the phone, and swaps one meal instead of the week (YUI-183). Gouda hands you a chord grid to play along, opens the looper, logs practice, and keeps his loop and click playing while you move between his screens (YUI-184). Penny takes your week out loud, draws the plan, gives the today list and closes the day with an evening review, with reminders on the phone's clock (YUI-185). Quill is new in this build: a five minute lesson, a quiz that scores your deck and sets the next review, and a math problem one step per page (YUI-186). Every agent also opens on its own quiet visual, waves, bloom, grain, aurora or orb, with a switch per agent and one still frame under Low Power or Reduce Motion (YUI-180). Riding with it: hold the mic and slide to cancel or lock (YUI-201), every message showing when it was sent with day dividers (YUI-202), a notification opening on page one of what came in (YUI-199b), the guitar tuner no longer crashing (YUI-206) and about 35 MB less memory held after a long session (YUI-207). Before upload: 705 tests run with no new regressions against the pre-release commit, and a real-account pass of 25 agent opens and four force-kill relaunches with zero crashes, because the 0.5.0 crash lived only on the real path. - Sep 29, 2026
The thread lets go of what you scrolled past
Memory kept climbing through a session: the thread held on to every row drawn on the way up until you switched agents, about 35 MB. Now it lets go the moment you are back at the newest message, arrow or not. The same scripted three-round session on the simulator went from +33.7 MB to +2.8 MB, then -8.4 MB on a second run, with no new leaks. Our budget is 15 MB. Rides Yui 0.6.0. - Sep 29, 2026
The Yui icon in browser tabs and Google
Chris asked for a favicon. The site had a 512px icon and a 180px phone icon, but /favicon.ico returned 404, which is the first place some crawlers look. It now serves a real 16, 32 and 48 pixel icon made from the Yui icon. The page head lists it once, next to the 512 and 180 icons. Google picks up the change on its next crawl. - Sep 29, 2026
A notification opens on page one of what came
Chris's feedback on build 332: a tap on a notification opened the right chat, but on the last page of the answer. Now it lands on page one, and when several messages arrived it starts with the first of them. Live replies keep playing as before. Tested in the simulator with a three-message answer: before, the tap landed on the last page; after, it lands on the first. Rides the next TestFlight build. - Sep 29, 2026
Quill's tools in the app: learn a topic, rate your cards, a problem one step at a time
The app half of Quill's tools, for Yui 0.6.0. Learn something new opens as one full-screen flow: topic, how much time, what you know, one Send. The lesson comes back as a deck of pages and ends in a short quiz, and the score lands on Quill's Progress page. What you learned becomes cards. Review my cards shows the ones due today with again, hard, good and easy on each, and one Save my review. Walk me through a problem shows one step at a time, and the next step only appears once you answer. His pages, What you're studying, Next review and Progress, stay current by patches, with no new messages. Testing, after the 0.5.0 switch-agent crash the demo account hid: unit tests on the phone's real storage, and a UI test in light and dark that runs learn, review and a problem, kills and relaunches the app and switches agents five times. Rides the 0.6.0 TestFlight build. Try it now at /playground?demo=quill-learn and /playground?demo=quill-review. - Sep 29, 2026
Hold the mic, slide to cancel or lock
Chris asked for both ways to record on the same button. Press and hold the mic to talk, and let go to send. Slide left and let go to cancel and delete the message. Slide up onto the lock just above the mic and let go to leave it recording, hands-free, until a pause sends it. A plain tap still toggles recording as before. The stray orb that floated in the middle right while it listened is gone: the lock takes that spot, closer to the button. Five UI tests cover it: hold and send, slide left, slide up, a plain tap, and the lock itself. - Sep 29, 2026
The guitar tuner no longer crashes
Chris hit a crash tuning his guitar. The crash report showed the cause: the microphone hands the tuner sound on its own fast audio thread, and the code that receives it had been told to run only on the main thread, so the phone stopped the app the moment the first sound arrived. The receiving code now runs on the audio thread as it should, and readings hop to the main screen from a separate queue. A new test feeds the tuner sound from a background thread, the way the microphone does, and the guitar tuner test passes on a fresh simulator. It rides the 0.6.0 build. - Sep 29, 2026
The crew's visualizers move on /crew
Parity for YUI-180. On /crew every member's card draws their real default: a calm orb for Yui, waves for the trainer, a soft bloom for the nutritionist, grain for the musician, a slow aurora for the planner and a faint orb for the study buddy. It is the same shader, colors and plan the app uses, dimmed to the member's strength, slow, and at most 15 frames a second while nothing is heard. It never asks for the mic; what it hears is a label on the card. It draws only while the card is on screen, Reduce Motion gets one still frame, and without WebGL the old pattern stays. Light and dark both work. Each card links to the visualizer demo for that agent. Try it: /crew. - Sep 29, 2026
Every agent has its own quiet visualizer
Chris: "all agents should have their own visualizer by default... make sure they are subtle." Yui gets a calm orb, Arnold waves that follow music, Basil a soft bloom, Gouda grain, Penny a slow aurora and Quill a faint orb. Every other agent gets the soft orb. A default is never full strength (70 or 45 percent, sinking again behind words), never quick, and runs at 30 frames a second and 15 while nothing is heard. Reduce Motion, Low Power and heat still make it one still frame. The person decides first: Settings, the agent, Visualizer, on by default. Then the agent, which can still change it or say visual off, and that sticks. Tests: 11 unit tests (picks, override, off sticks, the switch, quiet numbers, slower pace wins) and 6 UI tests with shots of all six stages in light and dark. Idle on the simulator: 15 frames a second, about 1 percent CPU on against 0 off. scripts/memory.sh stays under the ceiling (growth 8.5 of 15, 0 new leaks). The memory check passed: no new leaks, 8.5 MB of growth over 36 minutes, a peak of 214 MB. Try it: /playground?demo=visual-defaults. Ships with 0.6.0. - Sep 29, 2026
Yui 0.5.3: a way home, readable text, and Add agent no longer hangs
Build 332 is Yui 0.5.3. It carries the fixes from Chris's own testing, all already on main. Add agent gives up cleanly instead of hanging. Your screens sit in the top bar as pills, like browser tabs. The agent bar is back at the bottom of the drawer. Every full-screen answer has a way out: close it, tap Back home at the end, or pull it down. Long answers read as body text with the markdown drawn, and a chart on the last page stays inside the phone. Version numbers no longer split a sentence, and a notification opens the message it is about. The memory check passed before upload: no new leaks, 2.4 MB of growth over three rounds, a peak of 206 MB. - Sep 29, 2026
Yui 0.5.3 is on TestFlight: the fixes from your feedback
Build 329 (Yui 0.5.3) carries the fixes Chris hit while testing. Add agent no longer hangs: it asks again when you come back to the app, gives up on a stuck request, and after a minute says so with Try again. Screens sit in the top bar as pills, like browser tabs. The agent bar is back at the bottom of the left drawer. Every full-screen answer has a way home: close it mid-way, tap Back home at the end, or pull it down. Long answers read as body text, markdown is drawn instead of shown as stars and hashes, and a chart on the last page stays inside the phone. Numbers with dots, like 0.6.0, no longer split a sentence. Before upload the build ran a real-account pass (six agents, kill and relaunch) and the memory check: 2.4 MB growth over a 36 minute session, no new leaks. - Sep 29, 2026
Every message shows when it was sent
Chris opened a thread and could not tell when anything was sent. Now the record breaks at each new day with a divider, and every run of messages from one side, sent within five minutes, carries its time underneath. A full-screen answer shows its day and time in small type under the agent's name, so an old answer never reads as new. It uses the existing type sizes and weights, in dark and light. A unit test covers the grouping and the day names, and a UI test seeds a thread across three days and checks all three dividers and six times. Ships with the next TestFlight build. - Sep 29, 2026
Gouda's music keeps playing, and Tune up just opens the tuner
Chris pressed play on a loop, swiped to another screen and the beat stopped. He also pressed Tune my guitar and the app made a model call to open a screen. The loop and the click now belong to the app, not the screen that started them, so they play on while you move between one agent's screens and stop only when you switch agent or leave the thread. The click over a loop, with chords and keys on top, layers as before. One looper plays at a time: a second loop replaces the first. The tuner is now Gouda's sixth and last screen, and the Tune up chip shows it with no message sent. Gouda from before gets the tuner the next time he draws his pages. Two UI tests swipe away from a playing loop and click and back, and tap Tune up and check nothing was sent. Both fail on the old code and pass on the new. Ships with the next TestFlight build. - Sep 29, 2026
A notification opens what it is about
Chris tapped a notification that said an agent had something for him and landed on the home screen with nothing open. The tap now reads which agent sent it and which message it carried. It opens that agent's thread, from a cold start or from the background, and plays that message on the stage. If the agent is already open, the tap brings its message up. Two UI tests tap a notification for another agent and for the open one, and three unit tests cover what the tap keeps. Ships with the next TestFlight build. - Sep 29, 2026
A version number no longer splits a sentence
The stage broke plain replies at every period, so 0.6.0 became a lone 0 on its own screen. Chris caught it in TestFlight. The stage now cuts sentences with the same rule the pages use: a period ends a sentence only when a space and a capital letter follow, so 0.6.0, 3.5, v1.2, web addresses, file names and short forms like e.g. and vs. stay whole. 'Build 0.6. Next up.' still splits once. Unit tests cover all of these. The web playground already used this rule. - Sep 29, 2026
A chart page stays inside the phone
After Back home landed, a chart on the last page made the whole stage wider than the phone, so the words under it ran off the edge. The chart was not the cause: the Back home pill had a fixed size, which made the bottom bar too wide on that page. The pill now shrinks to fit, and the margins hold. A UI test checks the menu and the new chat pen stay on screen, in light and dark. Ships with the next TestFlight build. - Sep 29, 2026
Long answers read as body text, and markdown is drawn
Chris kept hitting big, bold paragraphs on the full screen ("this should be maybe three lines") and raw ** and # from agents that write markdown. The app now has two voices. A headline is one short line, big and heavy. A body is regular weight with open leading and a comfortable line length, and it takes everything longer: a say, a deck page, a card body, the words under a chart. The markdown reader draws headings, lists, bold, italic, inline code and links. A `Label: value` line puts the label in the accent color and the value in body white, so a status list reads like a status list, with the check and cross emoji intact. A lone hyphen line is a plain line, not a one-item list. Whole thoughts stay together too: up to three sentences and 70 words share one page, instead of splitting into fragments. Unit tests (10 new plus the stage chunk rules) and light and dark UI shots pass. It ships with the next TestFlight build. The site's chunk rule keeps a markdown paragraph whole, the same way. - Sep 29, 2026
A way home from every full-screen answer
Chris finished a multi-step answer, wanted no more action and did not want to spend tokens. Now every full-screen answer has a close button next to the arrows. On the last page, Back home takes the mic's place, in the same spot Stop uses. You can also pull the answer down like a card and it springs back if the pull is short. All three go home on the phone only: the agent hears nothing and no turn starts. Nothing is lost, because the reply's chip in the chat plays it again. Six new UI tests cover close mid-plan, Back home at the end and pull to dismiss, in light and dark, and each checks that nothing was sent. Ships with the next TestFlight build. - Sep 29, 2026
Loops keep playing when you swipe to another screen
Chris, TestFlight: "play a loop and switch around to the other screens without it stopping... play them over the top of each other." On the site, sound now belongs to the chat, not to the screen it started on. Start a loop on screen 2, swipe to screen 3, and it keeps going. Start a metronome or hold a few keys there and they layer on top. Coming back shows the same state: the moving playhead, your edited grid, the held keys. Closing the chat, leaving the page or opening another demo stops all of it. There is one audio engine for the whole site, and it can list what is sounding. Also from Chris: "I pushed the tune my guitar button and it seems like we made a LLM call. If I just push that button, it should really just take me to the screen." A shortcut or chip that opens a saved screen now goes straight to it with no request at all: Gouda's Tune up shortcut swipes to the tuner. Both rules are written once in the YL spec (section 5) so the app matches them (YUI-200). Tested with a phone-sized browser run: a loop survives a swipe away and back, a second voice layers, closing the chat silences everything, and tapping a saved-screen shortcut sends zero chat requests. Open the demo with the link below and turn your sound on. - Sep 29, 2026
The chat says when things were sent
Chris, TestFlight: "I don't even know when this was sent... group them by day, so I can understand where I'm at in the timeline in actual time." On the site, every message in the chat record now knows when it was sent, in your own time zone. A divider marks each new day (Today, Yesterday, then Mon 28 Sep). A small muted time sits under each run of messages from one side. And the full-screen answer on the stage shows its own time in small type above it, so an old answer never reads as new: 9:41 AM today, Yesterday 9:41 PM, or Mon 28 Sep, 9:41 PM. Chats saved before this show no times and nothing breaks. The rule is written once in the YL spec (section 5, Message times) so the app matches it (YUI-202). Tested with a phone-sized browser run on a chat seeded across three days: three dividers, six times, no bold, and the stage reads Today and Yesterday right. Note the chat always opens dark, so there is one set of shots. - Sep 29, 2026
A way home from every full screen
Chris, TestFlight: "I need a default way to just cancel this and get back to the home screen... when I go back home I feel resolved." On the site, every full-screen answer in the chat and the playground now has three ways out. A Close button at the top left. Back home on the last part of a deck, and after a plan or flow is sent, in the same place and weight as the Stop button. And on a phone you can pull the card down: it follows your finger with a little rubber-band, a short pull springs back, a long one lands on the chat home. None of it calls the model or sends anything. What you closed stays in the chat record, and the home screen has a Reopen last answer button. The rule is written once in the YL spec (section 5, A way home) so the app matches it (YUI-195). Try it in the playground: /playground?demo=way-home. Tested with a phone-sized browser run that checks close mid-plan, Back home and a pull down each land on home and send no request to the chat API. - Sep 29, 2026
Text you can read: body type and a small markdown reader
Chris, TestFlight feedback: big bold type on every sentence was tiring, and stars and hashes showed up as text. The site now draws say, card, page and stage text as body by default: regular weight, roomy lines, about 70 characters wide. Big display type is only for words that fit a line or two. A small markdown reader handles headings, bold, italic, lists, code, links and Label: value lead-ins, with the label in the accent colour and ✅ or ❌ in front. A short paragraph of up to three sentences now stays on one stage page. The rule is written in the YL spec so the app matches it (YUI-196). Try the demo in the playground. Tested with a markdown fixture in light and dark, and the site checks are green. - Sep 29, 2026
Agents show it in context: a phone, a timeline, a next step
Chris, from TestFlight, four notes in one thread: show me, don't tell me. (1) A reply described a ZIP field in words: "Show me the zip in context. You should be able to illustrate UI elements fairly easily." (2) "Two days earlier" came as a block of bold text: "we need some type of timeline." (3) One hyphen line on a page: "If there's only one thing hyphenated, it doesn't mean anything." (4) A deck that ended on a page with nothing to tap: "I don't want a user to land here and not know what to do next." The channel guide (v39) has four new rules, each with a before and after: UI is drawn in context (a phone sketch with the new part highlighted and the buttons drawn), when is a timeline, facts are Label: value lines and never a lone hyphen or a list of one, and the last page always ends in something to tap, with "Why do you ask?" as the fallback. The eval has six new cases and three new checks (a phone sketch, no lone hyphen, a last page you can tap). On the full eval the old guide fails the timeline and both last-page cases, the new one passes all six new cases; the whole suite is 83 of 96 and 81 of 96 against 83 and 78 before, inside the usual noise. Try them at /playground?demo=ui-in-context, when-timeline, lone-hyphen and last-page-next-step. The type half (everything bold) is a separate app card. - Sep 29, 2026
Screens get pills, like browser tabs
The dots are gone. When an agent puts something on more than one screen, the top bar shows a pill for each: Home first, then the screens by name. The row slides sideways and fades out at the right edge when there are too many. Tap a pill to jump, or swipe between screens and the filled pill follows you and scrolls into view. With no screens there are no pills. The agent picker now lives at the bottom of the left drawer. Tested with 0, 1 and 8 screens, tap to jump and swipe, in light and dark. - Sep 29, 2026
PROP-4: a first plan in every agent
Chris, Sep 29, TestFlight feedback: "Just as we have an onboarding flow for the whole app to recruit the agents, your agent should give you a flow to start too. It should ask how many days you want to work out, what type of workout, but it should definitely push you to lift heavy weight to failure." The proposal generalises it to every crew agent, Arnold first, then Basil, Gouda, Penny and Quill. The hero is Arnold's flow as a phone you can tap through: days a week, kind of training, gear, how hard, then the first split saved as a table with today's session ready. Exploring, cost M, Yui recommends it, with a Skip and a softer option next to failure. The dead Build my split button is fixed separately in YUI-182. Open at /proposals/first-plan-in-every-agent. - Sep 28, 2026
Checks go green on main and run before every push
The site's automatic checks had been failing on main and sending a failure email every hour. Now main is green. One script runs the whole set in about 16 seconds, and a hook runs it before every push, in every working copy, so a broken change stops on the machine that made it. The preview images were also fixed, so no private name shows in them. Nothing to see on a phone, so no picture. - Sep 28, 2026
Where Jev fits in Yui: every decision in a turn
The map of every decision Yui makes in a turn, 18 rows, and which ones a Jev call should make. It recommends five to start: the shape of the reply, a log-only check after it, meal photo intent, the camera, and the tool router. Three open questions are left for Chris. It is a written brief, so no screenshots. The proposal built on it is on the site at /proposals/the-jev-layer. - Sep 28, 2026
Jev research: what the decision model is, what it costs
Jev is a fast decision model. This is the research: what goes in, what comes back, how fast it is, what it costs and what is still unknown, every point sourced. It is the base for the Jev layer proposal. It is a written brief, so no screenshots. - Sep 28, 2026
The site stage no longer splits a sentence inside a version number
Chris found it in the app: a reply about 0.6.0 put "0 and is built to work for other agents too." alone on a screen. The site chat's stage had the same bug, because it ended a sentence at any full stop. Now a full stop ends a sentence only when a space and then a capital, a quote or a digit follows. Numbers like 0.6.0 and 3.5, versions like v1.2, web addresses, file names and e.g. or vs. stay whole, and Build 0.6. Next up. still splits once. The two sentences per screen rule is unchanged. The before shot shows the old stage with "Yui 0.6." alone on a screen, the after shot the new one. The app half is a separate card. - Sep 28, 2026
Agents draw what is waiting, they don't count it
Chris, from TestFlight: "If you're telling me that two cards are still on the board it would be nice if you recreated some card elements and wrote the title on them with some information so I can just visually see that these are two cards waiting for me. The whole point of this app is to show the user, not just tell them." The channel guide (v38) has a new rule, Items get drawn, not counted: when the answer is about things (cards on a board, tasks, orders, messages), the agent sends one short line and a sketch with one row per item, its title and one fact, never a paragraph counting them. The eval has a new case, Anything waiting on me? with two board cards: the old guide fails it (no drawing), the new one passes. Full eval 76 of 90 against 77 of 90 before, inside the usual noise. My own daily briefing and lane driver follow the same rule. Try it at /playground?demo=items-drawn. - Sep 28, 2026
The Jev layer, routing turns in a phone
Chris, Sep 28: "I want to illustrate on the hero how it will be implemented." Pick one of six messages: Am I up to date, Should I take the 3pm, Walk me through the release, Where is the closest coffee, Log my lunch, Tune my guitar. A slim Jev layer strip springs in with the typed decision (shape, things, map, camera, camera_kind, each with its confidence and the time), then the phone draws the real Yui Lines screen: one line, yes/no buttons, full-screen pages, a map, the meal camera, the tuner. Flip to Without Jev to see the guess the guide alone tends to make, a deck for a yes or no, a wall of words for a map. These are worked examples, not a live Jev call: we have no key, and the speed is TypeSafe's claim. Light and dark, and it holds still if your phone asks for less motion. - Sep 28, 2026
PROP-2: the Jev layer
Chris, Sep 28: a Jev layer that runs a step on each call to an agent and returns typed decisions: one line or a deck, needs a map, open the camera. The proposal draws one turn as a diagram, shows the cost (about 3 cents per 1,000 turns, TypeSafe's claim), splits it into four steps from a spec and mock to an on-device fallback, and lists the open questions for Chris. Open for votes at /proposals/the-jev-layer. - Sep 28, 2026
The token has a name: $U
Chris, Sep 28: "we should call the coin $U. U is in the name, Yui, and it's the phonetic." The plan is that people who use and build Yui earn $U, a token native to Yui, a bit like karma on Reddit. It is an intention we are still working out, in the open. No token exists yet. Nothing is for sale. The legal review comes before any token exists, and the open questions are on /earn. - Sep 28, 2026
Vote on a proposal
Chris, Sep 28: "some simple voting." Under each proposal you can vote Yes, build it or Not yet. No login, no email. Your browser keeps an anonymous id, so it is one vote per browser, and you can change it any time. Add a why in one line (200 characters) and it shows under the vote, newest first, after a check that keeps private names, emails and prices out. Counts show on the proposal page and on each card at /proposals. - Sep 28, 2026
Pick your crew, in a phone you can use
Chris, Sep 28: "a full height hero with a demo in a phone mockup ... nice branching with a choose your own path experience." The hero is now Yui's first run as a phone you can tap. TestFlight, Sign in with Apple, Yui says hi, then the crew list: tap a row to add it, or tap More to dig deeper into that agent. Its page shows what it does and three of its real starter screens, drawn live with the same renderer as the app. At the foot of the list, Bring my own agent: pick Hermes, OpenClaw, Claude Code or something else and see the pairing code and the one command. The last screen is your crew, one tap each, with a Replay button. It plays a short loop until you touch it, then it is yours. Light and dark, and it holds still if your phone asks for less motion. Every word lives in one file, site/lib/first-run.mjs, so the app can reuse the copy later. - Sep 28, 2026
Proposals: big ideas, shown before they are built
Chris, Sep 28: "let's start with a new page, I am calling proposals ... we need a system for how the proposals will be assessed and shown." Now every big idea gets the same treatment before any app code: an id, a status (Exploring, Open for votes, Accepted, Building, Shipped, Not now), and an assessment with the same fields every time: the problem, who it is for, how it works, pros, cons, cost, risks, open questions and Yui's call. Chris decides; votes inform. Each proposal is one file in docs/proposals, and a file missing a field stops the deploy. The first is PROP-1, Pick your crew: a new user picks which agents join instead of getting all six at once. Its page opens on a full-height phone with the first screen, drawn live. The full first-run flow comes next, then voting. Agents get it all as markdown at /md/proposals. - Sep 28, 2026
Stop a reply from the main screen
Chris, from TestFlight on Sep 28, with Basil saying "Got it, working out the macros": "I actually do want to be able to cancel. While it's working in the back, I might be doing the wrong thing... I'm leaning towards the main screen." So while an agent works, or a job runs behind its answer like a meal breakdown, the big mic becomes a stop square, same place and size, always under your thumb. A tap gives a firm tap back and the stage says Stopped. The record keeps a quiet Stopped line, the mic comes back, and a late answer to what you stopped never lands, not now and not when you reopen the app. Behind it, the stop reaches the agent too: Yui's own agents cancel the model call and throw away anything the turn had not finished writing, so there are no half-written meals or grocery rows, and a Hermes agent gets its own stop for the running turn. VoiceOver reads it as "Stop". Tests: new runtime, plugin, app and UI tests in light and dark, plus a real account where a long ask was stopped mid-answer, nothing landed, the next ask was answered, and the app was killed, relaunched and switched across five agents. - Sep 28, 2026
A pause to listen
Yui has moved fast: 44 builds in six days, and Yui 0.6.0, the crew with real tools, is mostly built. Before it ships, we are stopping to listen. For now there are no new app builds and no new features on the site. If you have Yui on TestFlight, tell us what works and what gets in your way with the feedback button. Every note lands on the public board, and it will decide what comes next. See where things stand on the roadmap. - Sep 28, 2026
Stop a reply in the site chat
Sometimes you ask the wrong thing, or the answer is taking too long. The app is getting a stop button for that, and the chat on this site has it now too. While Yui is thinking, the big mic turns into a stop square, and so does the send arrow when the text field is open. Tap it and the answer is dropped: nothing arrives late, and the chat keeps one quiet line that says Stopped. You can talk or type again right away. The stop reaches the server too, so Yui stops working on that answer and nothing half done is saved. Try it in the chat bubble at the bottom right of any page. - Sep 28, 2026
The site chat gets pages, a swipe away
The app has had pages for a while: an agent can put a timer on screen 2 or a running list on screen 3 and keep talking in the chat. The chat on this site flattened those into one answer. Now it does what the app does. A line sent to screen 2 through 12 lands on a page beside the chat, and that page comes forward. Swipe to it with a finger or a trackpad, or use the arrow keys. The dots sit centered in the bottom bar and stretch and slide as you go, the same as the app. A page keeps what is on it while you talk, so a later answer can update it in place, and Yui can clear it when it is done. A page Yui keeps talking on keeps the mic and the keyboard, and what you say there goes back tagged with the page. The playground's phone shows the same dots. Try it: open the chat and say "show me screens". The chat is always dark, so the shots are dark; the playground shows light. - Sep 28, 2026
The screen dots move into the bottom bar
Chris, from TestFlight on Sep 28: "I put three little dots in the bottom bar by scribbling them in. That's where I want you to put them. They should be centered there and they should adjust when the page arrows appear." So the dots left the row above the bar and moved into the bar itself. With no page arrows they sit centered between the bar's edge and +, T and the mic. When an answer has more than one part and the arrows show, the dots slide over to the middle of the room that is left. On a small phone they close up, and with many screens only the nearest few show, the ones at the edge faded, so they never touch a button. Everything from the last build stays: the dot slides with your finger, a tap on a dot jumps, Reduce Motion, and VoiceOver hears one control, "Screen 2, 2 of 4". Tests: three new UI tests check the dots are centered in the free space with and without the arrows and overlap nothing, on a 440 pt and a 375 pt phone, plus the other stage swipe tests and a real account killed, relaunched and switched between agents. - Sep 28, 2026
Ticks and your week, on every device
Two small follow-ups to Penny's tools. First, the spec now says what the app already does: a tick on a named checklist on a page of one of Yui's own agents (Penny's Today, Basil's groceries) goes to that agent quietly. No echo in the chat, no working row, nothing owed. She marks the task done in her tables and patches the page, so the same row on This week turns done in place. A tick in the chat, on an unnamed list, or on a connected agent's page still stays on the phone. The playground shows it: open Pages: Penny's today and this week, tick Pay the water bill, and the wire log reads → runtime, quiet, then her patch. Second, Edit order on This week: before, Penny patched each row where it stood and only your phone kept the new order. Now she draws This week again in the order you saved, so your iPad, a second phone or a reinstall reads the same week. - Sep 28, 2026
Penny's tools in the app: plan your week by voice, a reminder on your phone, a week you can drag
The app half of Penny's tools, for Yui 0.6.0. Plan my week opens as one full-screen flow: how it works first, then the brain dump, where you tap the big mic and talk, type, or both (each talk adds to what is there), then which days are already full, how many things a day and how to be reminded, with one Send at the end. The week lands on her This week page as a timeline sorted into days, and Today shows the next task big with a Done button and the day's list. A task with a time turns into a local notification on your phone, ten minutes before or at the time. Yui asks for permission once, the first time Penny sets a reminder, never at launch, and each new plan replaces the old set. A tick on Today goes to Penny quietly, with no waiting dots: she marks it done and the Today line on This week moves past it. Edit order lets you drag a task up the week, and the new order stays through a kill, a relaunch or another agent and back. The evening review is one flow too: done, tomorrow or drop for each open task, how the day went, one Send. Testing, after the 0.5.0 switch-agent crash the demo account hid: 15 unit tests on the phone's real storage, and one UI test in light and dark that plans a week typed and talked, sees the reminder scheduled, ticks a task, drags the week, runs the evening review, kills and relaunches the app and switches agents five times. Memory run under the ceiling: peak 204.1 MB, no new leaks. Rides the 0.6.0 TestFlight build. Try the flows now at /playground?demo=penny-plan and /playground?demo=penny-review. - Sep 28, 2026
Basil's grocery list just works
Chris asked his Basil to put a meal plan's foods on his grocery list, and the whole screen filled with "(I couldn't do all of that: a table change didn't fit (put: no table \"groceries\"); ...)" three times. His Basil was made before the grocery list existed, so the list was never there. Three fixes in the agent runtime. An agent now gets any starter table it is missing, with its starter rows, once: a table it has is never touched, and a row or table the person took off never comes back. An agent makes its own tables: writing to a list it doesn't have makes that list from the columns it names, and "grocery" finds "groceries". And a write that still can't land is never the reply: it shows as one small card, "Couldn't save that to Groceries." with Try again, under whatever did work. Tested live on a throwaway account with the old Basil: 19 of 19 checks passed. - Sep 28, 2026
Meet the crew: one page for Yui and the five starter agents
Until now the crew only lived in the app and the site chat; there was no page to land on or share. /crew has one section per member: the face in their profile color with their look drawn behind it (waves for the trainer, bloom for Basil, grain for Gouda, aurora for Penny, an orb for Yui and Quill), their line, and their tools. Tools from Yui 0.6.0 wear an In the next build label read from the builds list, so it goes away by itself once that build is on TestFlight. Each phone plays the member's saved flow (Yui plays her real first screen), one tap opens it big or in the playground. Linked from the home page, the footer, Get started, llms.txt, and /md/crew gives agents the same page with the lines that draw each demo. - Sep 28, 2026
See it's live-only entries, shot on real test runs
The demo account cannot fake these, so each one ran live against yuigui on a throwaway account, deleted after. Pushes: Coach answers with the app killed and the banner lands through Apple's push service; tap it and the thread opens, and the mute switch sits in Coach's sheet. Hand-off: "Coach has something for you in Yui" in dark, opening on Coach's stage. Delivery: two messages sent with no network wait with Not sent yet, go once the phone is back, and a sleeping computer gets them when it wakes. Not listening: Bravo is paired but its gateway never started, so its sheet shows the one command left, a message waits, and the answer lands once the gateway runs. A2A: the working row on a six-step task, the answer, and a question from the agent that continues the same task. Says what it is doing: a real host sends its steps, and the stage reads Reading your calendar, then Checking the weather, with the bar filling, before the answer plays. Your own model keeps its older shots: on three live runs today, qwen2.5:7b wrapped its screen in the wrong fence, so the app showed the raw text. That is logged as its own card. - Sep 28, 2026
Gouda's tools in the app: learn a song, a click that logs itself, a beat that stays
The app half of Gouda's tools, for Yui 0.6.0. Learn a song is one full-screen flow: pick a song or paste the chords, the key, how fast to start, then one Send, Let's play. The song lands on his Chords page, A, F#m, D and E on big buttons with the metronome at 75% speed. Half speed or looping bar 3 changes that page in place, no new message: the buttons turn into that bar and the next. Stop the click after ten seconds or more and it logs itself, so his Practice page shows the streak, this week's minutes, a chart by day and what to practice next. His four pages sit on his home, Looper, Chords, Keys and Practice, under four shortcuts: Learn a song, Log practice, Jam and Tune up. A beat you change on the Looper is kept on the phone, per agent, until you Send it (Send saves it as a session) or Gouda draws a different loop, so it survives a kill, a relaunch or another agent and back. Switch agents mid-click and the minutes still go to Gouda, not the next agent. Testing, after the 0.5.0 switch-agent crash the demo account hid: 12 unit tests on the phone's real storage, not the demo memory, and one UI test in light and dark that runs Learn a song, halves the speed, loops a bar, clicks for 11 seconds and sees the minute logged, edits the Looper, kills and relaunches the app and switches agents back and forth five times, plus a memory run under the ceiling (peak 202.5 MB, no new leaks). It also caught a bug: after a bar loop the chord buttons went blank until a relaunch, fixed. Rides the 0.6.0 TestFlight build. Try the flow now at /playground?demo=gouda-learn. - Sep 28, 2026
Basil's week on the web: a day a page, a swap on one tap
The app learned two stage rules with Basil's tools (YUI-183) and the web reference did not have them yet. First, inside a deck, a question with its own title is a page of the deck: it plays in turn and a tap on it goes at once. Basil's week (a day a card, each meal a swap) used to be gathered at the end as 3 quick questions under one Send, so a swap never went. A lesson's quiz has no title and still waits for the end. Second, a reply with words for the chat that also redraws a named page (This week, Groceries) keeps you on the answer; the redraw keeps the page current, like a patch. The same redraw on its own still brings its page forward. A page the agent saved is a standing page, so its buttons are tools, not questions waiting on you. Both rules are in the spec (YL.md section 5) with reference functions stageChunks, pageForward and standingPages. Try it at yuigui.com/playground?demo=week-deck: it plays the runtime's real reply; tap a meal on Monday and the swap goes on the wire log, then open His pages and send only the redraw. Tests: chunks 12 and pages 12 pass, on the runtime's reply word for word. - Sep 28, 2026
Meet the crew in the site chat, each with a flow to try
Chris, Sep 27: "we need to tell them about each member of the crew and they all need to have a multistep flow that is associated with it." The flows shipped one by one (SITE-70 to SITE-74); this puts them together. Meet the crew is now the fifth button when the chat opens. It shows the five on one screen, a row each in their own color with their face, name, role and one line on what they do: Arnold the trainer, Basil the nutritionist, Gouda the musician, Penny the planner, Quill the study buddy. Tap one and the chat turns their color: their name in the header, the mic and the buttons in their shade, a hello in their voice, then their flow on the stage. Send it and their answer comes back in the same colors (the timer, the macros, the loop, the week, the calculator), with one question under it: how did they do? The answer goes to the team as a note, and the crew comes back as Meet another. Every step answers with no model turn, so it is instant and always the same. A flow the model sends on its own wears its member's colors too. Try it: open the chat and tap Meet the crew. Tests: a browser run in the site chat on a phone taps all five, runs each flow to its Send, checks the colors, the like question and Meet another (43 checks); unit tests for every turn; the flow e2e still passes (805 checks). - Sep 28, 2026
The study buddy's flow: a topic to a quiz
Chris, Sep 27: "we need to tell them about each member of the crew and they all need to have a multistep flow that is associated with it." Quill is fifth, after Arnold, Basil, Gouda and Penny. His flow, study-quiz, starts with a topic: how vaccines work, how a ball flies or how money grows. Then how much you know; know the basics and he skips the first page. The lesson is short, one idea a page and a picture on each: the mRNA in its bubble, a throw split into two motions, coins that grow faster every year. Then one question. Get it wrong and the next page shows why, with its picture; get it right and he moves on. Last, when to quiz you again. One Send and a calculator comes up to play with: slide the throw's angle and watch the distance peak at 45, slide the half-life and watch the mRNA fade, slide the rate and watch $1,000 double. Three cards go in his review table, due when you said, and the quiz lands in his sessions, the same columns his app uses. On the site chat that answer needs no model turn. Along the way the site chat learned to draw math: formulas in the chat used to show as plain letters. Try it: open the chat and say teach me something and quiz me, or play it at /playground?demo=flow-study-quiz. Tests: the flow e2e takes all 28 of its edges in six runs (805 checks across every flow, 0 failed), four unit tests (the path per answer, the calc and cards per topic, only the flow's own words reach the reply, the chat's stage) and a live run of the chat on a phone with the real model. - Sep 28, 2026
The planner's flow: a busy week to a plan
Chris, Sep 27: "we need to tell them about each member of the crew and they all need to have a multistep flow that is associated with it." Penny is fourth, after Arnold, Basil and Gouda. Her flow, planner-week, starts with what's on this week: a work deadline, appointments, errands, bills, family time, workouts. Pick more than three and she says it's a full week and one thing goes first. Then what matters most; a deadline asks when it's due. Then when you get things done and how many things a day. Anything with a time (an appointment, family dinner, workouts at a set hour) asks about reminders; a week with nothing timed skips that. One Send and the week lands as a timeline by day with Edit order: what matters most first, never more a day than you picked, fixed times kept. Under it, a checklist to keep, what matters most at the top, and the rows go in her tasks and reminders tables, the same columns her app uses. On the site chat that answer needs no model turn, so the week always matches what you told her. Try it: open the chat and say help me plan my busy week, or play it at /playground?demo=flow-planner-week. Tests: the flow e2e takes all 12 of its edges in three runs (640 checks across every flow, 0 failed), five unit tests (the path per answer, the pace per day, fixed times, reminders only when asked, only the flow's own words reach the reply) and a live run of the chat on a phone with the real model. - Sep 28, 2026
The musician's flow: a vibe to a beat
Chris, Sep 27: "we need to tell them about each member of the crew and they all need to have a multistep flow that is associated with it." Gouda is third, after Arnold and Basil. His flow, musician-jam, starts from a vibe: lo-fi, boom bap, house or rock. Each vibe shows its own beat as a page, row by row, backbone first: kick on 1 and 3, snare or clap on 2 and 4, then hats and one flavor row, every row a different drum. Each vibe has its own tempo range too, so a house beat never crawls. Then change one row (busier hats, an extra kick, a shaker on top, or leave it) and pick the chords under it: warm is the pop four, jazzy has sevenths, and moody asks for a minor key instead. Just drums skips the key. One Keep and the loop starts playing with the chords under it on big buttons, and the beat lands in his sessions table, the same columns his app uses to open a beat again. On the site chat that answer needs no model turn, so the loop is always the beat you picked. Try it: open the chat and say show me how Gouda makes a beat, or play it at /playground?demo=flow-musician-jam. Tests: the flow e2e takes all 19 of its edges in four runs (537 checks across every flow, 0 failed), five unit tests (every vibe and every row change keeps the backbone, the saved row, the chords, only the flow's own words reach the reply) and a live run of the chat on a phone with the real model. - Sep 28, 2026
The nutritionist's flow: a plate to macros
Chris, Sep 27: "we need to tell them about each member of the crew and they all need to have a multistep flow that is associated with it." Basil is second, after Arnold. His flow, nutritionist-plate, starts from the meal demo's three sample plates. Pick one and his guess comes on a page with the photo, the calories and macros, and how sure he is. How sure picks the next step: the salmon he is sure of goes straight on, the pancakes ask how much syrup, and the poke bowl, a rough guess because the rice is hidden under the toppings, asks how much rice was under it. Then how much you ate and which meal, one Save. The answer is the row in his meals table, the same columns his app uses, and his Today: calories against 2,100 and a macros chart against the goal. On the site chat that answer needs no model turn, so the numbers always match the plate you picked. Try it: open the chat and say show me how Basil logs a meal, or play it at /playground?demo=flow-nutritionist-plate. Tests: the flow e2e takes all 11 of its edges in three runs (428 checks across every flow, 0 failed), four unit tests on the saved row and the stage, and a live run of the chat on a phone with the real model. - Sep 28, 2026
See it shows the rest of the app as it is now
SITE-76 re-shot ten entries; this does the next fourteen. First run now opens on Yui talking with the crew already there, pairing your own agent ends on its stage, a workout plays full screen with the pill waiting in the chat, and the lock screen and Dynamic Island keep the timer. Change your answer shows the one questions screen with one Send, the shelf sits at the top of the chat, and every agent's look colors the whole stage. Screens beside the chat, chat with a screen, pictures, restyle, the invited person's list, story pages and sign in have new captures too, all from the simulator on origin/main (the code in 0.5.2), with their words saying where things live now. The old videos that showed the old chat came off those entries. Same share links, old pictures kept. Still on older shots, because the demo account cannot play them honestly: pushes, the Telegram hand-off, delivery, not listening yet, A2A agents, your own model and the doing steps; they need the live test runs. - Sep 28, 2026
Your study buddy teaches and quizzes
Chris, Sep 28: "we should focus the next stories on getting the crew more tools up with detailed flows... i want the agents to have default screens." Quill is next after Arnold, Basil, Gouda and Penny. Learn a topic (his shortcut, Teach me <topic>, or a subject on his first answer) is one full-screen flow: what happens first, then how much time you have and what you know already, one Send. Quill writes the lesson once and it opens on the stage as a deck, one idea a page with its key points or formula, ending in a graded quiz that shows why when you miss one. Finish it and your score lands on Progress. What the lesson taught becomes cards, first due tomorrow. Review my cards is one flow of the cards due today: think of the answer, see it, then tap Again, Hard, Good or Easy. Again brings a card back today, Hard tomorrow, Good and Easy further out each time, so the ones you know stop taking your time. What should I review next? is answered in one line. Walk me through a problem asks for the problem, then breaks it into steps, one a page, each with its own question; the next step only shows once you answer, so you do the thinking. His three screens stay current by themselves: What you're studying, Next review with the due count and Start, and Progress with your streak, cards reviewed this week, cards learned and your last quiz. The lesson and the steps are the only things that ask a model; the rest runs from his tables with no free turn. Tests: runtime 225 (13 new, on the real store path, a relaunch from saved data, every reply read by the Yui Lines parser, a real GLM lesson and problem checked by hand) and a live check on a throwaway account, 21 of 21. Next: the app half for Yui 0.6.0, with a UI test that runs the whole flow, relaunches the app and switches agents five times. Try it at /playground?demo=quill-learn. - Sep 28, 2026
The workout runner in the app: rest starts on its own, say done
The app half of Arnold's tools, for Yui 0.6.0. Start today's workout and the session opens full screen: one move per page with big set rows. Tick a set and the rest timer starts on its own (plus 15 seconds, skip, a chime when it's up). Reps and weight sit under the sets with minus and plus, starting from what you lifted last time. Tap Say done, put the phone down, and every "done" ticks the next set. Where you are lives on the phone, so a kill, a relaunch or a trip to another agent drops you back on the same move with the same sets. The review before Finish reads each move as its sets, reps and weight, and Finish sends it all at once to his workouts log. Testing, after the 0.5.0 switch-agent crash the demo account hid: unit tests on the phone's real storage, not the demo memory, and one UI test in light and dark that runs the whole workout, kills and relaunches the app, and switches agents back and forth five times, plus a memory run under the ceiling (peak 204 MB, no new leaks). The home also stops counting its own pickers, like Change a day, as waiting on you. Rides the 0.6.0 TestFlight build. Try the flow now at /playground?demo=arnold-runner. - Sep 28, 2026
See it shows the app as it is now
After the Hold to talk fix, most of the evergreen app group on See it still showed shots from September 23 to 25: a text field that said Say something nice, a plus and a mic. Yui opens on the stage now, the mic sits bottom right, and the chat is the record behind the button top right. Ten entries have new captures from the simulator on origin/main (the code in 0.5.2), with Arnold on his home: an answer playing on the stage, reactions, reply, @ another agent, slash commands, the jump arrow, the working line, Select text, Read as pages and the agent list. Their words say where things live now: hold a message in the chat, tap T to type, the stage always shows the newest turn. Same share links, and the old pictures stay for the posts that use them. Still on older shots: first run, pairing, looks, pushes and about twenty more; they go next. - Sep 28, 2026
Your planner plans the week
Chris, Sep 28: "we should focus the next stories on getting the crew more tools up with detailed flows... i want the agents to have default screens." Penny is next after Arnold, Basil and Gouda. Plan my week (her shortcut, the words, or the Plan button) is one full-screen flow: how it works first, then a big talk button for the brain dump (call the dentist tomorrow at 9, groceries, finish the report by Friday, pay the water bill, it's urgent), then the questions last: which days are already full, how many things a day, whether to bring in what's still open, and whether to remind you. One Send. She keeps the day and time you said, puts the urgent one first, and sorts the rest into the first days with room, never a full day and never more than you picked. It lands on This week, a timeline by day: tap Edit order and drag a task up, and it takes that place's day; or tap Move a task and pick a task and a day. Today shows the next thing big with a Done button, the list with ticks, and the evening review. What's next today? and Add a to-do: call mom tomorrow at 5 work in words too. A task with a time keeps a reminder, at the time or 10 minutes before, for the phone to ring in the app half. The evening review is two minutes: what got done, then each task still open, done, tomorrow or drop, and how the day went. One Send and tomorrow starts clean; the day is kept. Her two screens stay current by themselves, and a tick patches them quietly. None of it waits on a model or uses a free turn. Tests: runtime 212 (12 new, on the real store path, a relaunch from saved data, every reply read by the Yui Lines parser) and a live check on a throwaway account, 30 of 30. Next: the app half for Yui 0.6.0, with local notifications and a UI test that runs the whole flow, relaunches the app and switches agents five times. Try it at /playground?demo=penny-plan. - Sep 28, 2026
The timer reads in light mode
Found while shooting SITE-70: on the playground in light mode, Tabata's 0:20 sat dark on a dark dial. The dial had one hard-coded look, near-black, while the digits took the theme's ink. Now the dial follows the theme too: light mode draws a white face, ink digits and a pale track, and the round marks go pale until a round is done. Dark mode is unchanged, and so is the site chat, which is always dark. Checked light and dark on /playground?demo=stage (Tabata on the stage, the cooldown timer in the chat) and /playground?demo=flow-trainer-session through Send to the strength circuit timer. npm run build passes. - Sep 28, 2026
Your music teacher teaches songs
Chris, Sep 28: "we should focus the next stories on getting the crew more tools up with detailed flows... i want the agents to have default screens." Gouda is next after Arnold and Basil. Learn a song (his shortcut, the words, or the Learn button) is one full-screen flow: what happens first, then which song (four to start, or paste your own chords, any chart like | G D | Em C |), the key (as written, easiest on guitar, a step up or down) and how fast to start, one Send. The song lands on his Chords page: its chords as big buttons, the click at your speed, a speed picker and a bar picker. Tap Half and the click slows; tap Bar 5 and the buttons loop that bar and the next until it feels easy. Keys follows the song's key. His practice log keeps minutes, what you played and how it went: a short Log practice flow, words like I practiced 20 minutes on scales, or the click itself, which logs its minutes when you stop it. Practice shows your streak, this week, a chart and one line on what to practice next. Send on the Looper asks for a name and keeps the beat; Open a beat brings any one back. His four screens, Looper, Chords, Keys and Practice, stay current by themselves. None of it waits on a model or uses a free turn, and it works on the app you have today. Tests: runtime 200 (12 new, on the real store path, a relaunch from saved data, every reply read by the Yui Lines parser) and a live check on a throwaway account, 24 of 24. Next: the app half for Yui 0.6.0, with a UI test that runs the whole flow, relaunches the app and switches agents five times. Try it at /playground?demo=gouda-learn. - Sep 28, 2026
The trainer's flow: a check-in that ends on the timer
Chris, Sep 27: "we need to tell them about each member of the crew and they all need to have a multistep flow that is associated with it." Arnold goes first. His flow, trainer-session, is a saved flow any agent can run: sleep on a slider, what's sore, and if something hurts rather than just sore, a page that says we work around it. Then minutes free and your gear. Those answers pick the session page: a bad night gets an easy one, 15 minutes or less a quick hit, no gear a bodyweight circuit, else a strength circuit. A warm-up if you want one, then one Send. The answer is the session itself: the moves, minus any that hit the spot that hurts, and an interval timer with the rounds worked out from your minutes. On the site chat that answer needs no model turn, so the timer always matches the page you read. Try it: open the chat and say show me a workout flow, or play it at /playground?demo=flow-trainer-session. Tests: the flow e2e takes all 20 of its edges in four runs (352 checks, 0 failed), five unit tests on the session it builds, and a live run of the chat on a phone and a computer. On the way we found the timer's digits nearly vanish in light mode; that is SITE-78. - Sep 28, 2026
Your nutritionist plans your meals
Chris, Sep 28: "we should focus the next stories on getting the crew more tools up with detailed flows... i want the agents to have default screens." Basil is next after Arnold. Plan my meals (his shortcut, the words, or the Plan button) is one full-screen flow: what the week aims for from your goal first, then how many days, meals a day, what you like, what to leave out, your budget and your time to cook, one Send. He picks the week from his recipes, never anything you said no to, nothing twice in a day, and it lands as a deck: a page a day, each meal a button that swaps it with one tap. The ingredients add up into a grocery list grouped by aisle: tick what you got, say add oat milk to my groceries, or tap Add and speak. His three screens stay current by themselves: Today with calories and macros against your goal, what's up next with I ate it, and each meal you logged as a button that opens its fix (how much you ate, or take it off); This week's meals, with a swap per meal; and Groceries. A meal you snap or say updates Today in the same reply. None of it waits on a model or uses a free turn: the runtime reads his tables and answers in under two seconds, and it works on the app you have today. Tests: runtime 188 (11 new, on the real store path, a relaunch from saved data, every reply read by the Yui Lines parser) and a live check on a throwaway account, 26 of 26. Next: the app half for Yui 0.6.0, with a UI test that runs the whole flow, relaunches the app and switches agents five times. Try it at /playground?demo=basil-plan. - Sep 28, 2026
Yui 0.5.2: the dots are back and slide with you
Chris, Sep 28: "put the navigation back ... the dots we removed, i also want those to slide, not fade between them and the dots should animate." His newer word wins over Sep 27's no dots. Now, when an agent has more than one screen, a small row of dots in its colors sits just above the bar. The one on show is a pill. Drag sideways and the screen moves with your finger, the next one coming in beside it, while the pill stretches toward the next dot and slides there, following the finger, not snapping at the end. Let go past a fifth of the screen, or flick, and it lands with a spring; less, and it springs back. Tap a dot to jump; that slides too. With Reduce Motion on, the screens cross-fade and the dots stay. It is still one sideways gesture from anywhere, the bars included, and keys, pads, maps and sliders keep their own drags. VoiceOver hears the dots as one control, "Screen 2, 2 of 4", and swipes up or down to page. Only the screen on show and the one beside it are drawn, so memory stays flat. Tests: two new UI tests (a slow short drag springs back, a slow long drag lands centered, the dots follow, dot taps jump, and the Reduce Motion path), every stage and pages UI test (31 of 31), the unit tests (255, 0 failures), the memory ceiling (0 new leaks, -0.1 MB, peak 201 MB) and a real account killed, relaunched and switched between agents 10 times with no crash. - Sep 28, 2026
The site chat plays a whole flow
Chris, Sep 27: "let's make sure we can demo flows, not just one gui." The site chat drew one screen per reply. Now it runs saved flows: say show me a flow and Yui sends one line, flow onboarding, and the stage plays the whole first run of the app, page, name, a slider, a branch that depends on your answer, a pick, your own words, the agents it suggests, then a review with Edit on every answer. No model turn happens between the steps, so it moves as fast as you tap. One event goes back at the end and Yui answers it with what you said. She knows five saved flows (Meet Yui, a workout check-in, scoping a project, a client website intake, connecting your tools) and picks the one that fits you; find_screen hands them over ready to run. A plan plays the same way now: the feedback questions come one at a time with one Send, instead of all at once. Tests: flow e2e 263 of 263, chat tests 27 of 27, and a real-model run on a phone and a desktop screen, 14 of 14 checks. Next: meet the crew in the chat, each member with a flow of their own (SITE-69). - Sep 28, 2026
Your trainer runs your workout
Chris, Sep 28: "we should focus the next stories on getting the crew more tools up with detailed flows... i want the agents to have default screens." Arnold goes first. Start today's workout (his shortcut, the words, or the Start button on Today) turns today's day on your split into one full-screen flow: what the session holds, then each move with its how-to, sets to tick (or Skip), reps and weight to nudge, starting from the weight you lifted last time, and how it felt. One Finish writes a row per move to his workouts log and ticks the day. His screens stay current by themselves: This week shows done days with a check and lets you tap a day to change what it trains, Today's workout says done, and the new Progress screen has your streak in weeks, your best set and a chart per main lift. Log today's workout is a short flow for a session done away from the app: the day's plan, or your own words like squat 5x5 @135. None of it waits on a model or uses a free turn: the runtime reads his tables and answers in about a second and a half. It works on the app you have today. Tests: runtime 177 (12 new, on the real store path, every reply read by the Yui Lines parser) and a live check on a throwaway account, 21 of 21. Next: the app half for Yui 0.6.0, a runner with the rest timer starting on its own and voice to check a set. Try the flow at /playground?demo=arnold-runner. - Sep 28, 2026
The site chat asks what you think
Chris, Sep 27: "i want to guide people more to give feedback. like, the first thing we can ask is what do they like or dislike, and maybe ask if they want the pitch. or how they can help." Open the chat bubble and Yui now starts there, with four buttons. What do you like, or not? is one full-screen flow: pick what you like, pick what is not landing, write one thing you would change, one Send. Your likes and dislikes are saved as notes on the server the moment you send, so they never depend on the model remembering; the open line is noted by Yui, with the kind that fits. Give me the pitch plays a four-page deck from our positioning brief and ends in a choice. How can I help? is four cards, each with a button: TestFlight feedback, Yui@home, build to earn, and Share it, which uses your phone's share sheet or copies the link. Just show me draws a real screen and asks one question: how does that land? We ran all four paths in a browser against the live model on a phone and a computer, and read the notes back: likes as praise, dislikes as confusion, the Android wish as a feature. - Sep 28, 2026
Yui 0.5.1 is on TestFlight: switching agents no longer crashes
Chris, Sep 28: "fix the crash problem we have having while switching agents. make sure we do some testing." On his phone 0.5.0 crashed the first time he switched agents, then every time he opened the app. The cause was one line: meeting an agent saved the list of hellos you had seen in a form the phone's settings store can't hold, and on launch the app met the last agent again, so it crashed again. Now it saves a plain list. The demo account our tests used never touched that line, so the tests passed. This time the test ran the real path: a new account with the crew, build 278 installed fresh, and it crashed opening Arnold and on every launch after, same stack as Chris's report. Then 0.5.1 went on over the same saved state: it opened, switched agents 10 times with no crash and no crash report. Tests: a new unit test on the real path, the full unit suite at 255 with 0 failures, and the UI suites for agent homes, swiping, first launch and the stage, all passing. Memory check before upload: 188 MB at the end, 7.3 MB under the start, a 198.5 MB peak and no new leaks. No other setting in the app saves a type it can't hold. - Sep 28, 2026
Hand this page to your agent
Chris, Sep 28: "its as easy as give the agents the link and they can get setup." Now the site says so. Get started, Developers and every spec, the playground, Contribute and every shared screen carry one box, top right on a computer and first on a phone: Hand this to your agent. Copy link copies the page's address. Copy page copies the page as markdown an agent can follow, and the same text is at /md/ plus the page, like /md/start. On Get started that text walks an agent through the whole setup: Hermes in three commands and when to ask you for the pairing code, the connector URL for Claude and ChatGPT, and every other way in. We tried it: a fresh Claude given only that text listed the right commands in order and asked for the code at the pair step; told it was in the claude.ai app, it said it could not add itself and gave the connector steps. On the way we found the Claude and ChatGPT connector URL on the site still pointed at the old backend and answered 404; it points at the live one now. - Sep 28, 2026
The chat on this site opens full screen, like the app
Chris, Sep 27: "i want to better match the experience of the yui app. full screen first." Yesterday the bubble opened a tall side panel on a computer and answers scrolled by as a chat. Now it opens full screen first. On a phone it is the whole screen; on a computer it is a full-height, phone-shaped layer over the dimmed page. Every answer plays on the stage the way Yui 0.4.0 does: one line and one picture at a time, segments on top, a tap goes on, a tap on the left third or the arrow keys go back. A timer runs right there, a deck plays one page per part, and questions come after the last part with one Send. While Yui works, her mark thinks and bursts when the answer lands, with the same motion as the app. Bottom right is the big mic: tap and talk, your words show as they are heard, and it sends when you stop. That is the browser's own voice to text, in Chrome and Safari. Firefox has none, so there the field opens by itself and one line says: Voice needs Chrome or Safari here. Type instead. T types anywhere, and any key opens the field on a computer. Everything said and shown is in the chat record, top right, where Play puts an answer back on the stage and New chat starts over. - Sep 28, 2026
See it shows hold to talk the way 0.5.0 does it
Chris opened See it and the Hold to talk entry still showed build 57: a text field that said Say something nice, a Tabata chat and a reply about agent friends moving in soon. The app has changed since. Yui opens on the stage, the mic sits bottom right, and the chat is the record. The entry now shows four new captures from Yui 0.5.0 on the simulator, with Arnold on his home: the words big while you hold, Let go to cancel over the trash, his answer on the stage, and the same turn in the record. The Voice in, text out entry under Planned said hands-free voice was not built; it shipped in build 155, and the entry says so now. - Sep 27, 2026
Feedback receipts sit in the drawer, off the stage
Each time someone sent TestFlight feedback, a receipt card landed in the chat and got in the way. Receipts now show as quiet heard rows in the drawer for the last day, with where each one stands. The chat stays clear. - Sep 27, 2026
A new install opens with Yui and the crew already there
A new person now opens Yui and meets Yui talking, with the whole crew named: Arnold trains, Basil feeds you, Gouda makes music, Penny keeps your lists and Quill helps you study. The first question is where you want to start, as buttons. Pick one and the right agent takes it from there. This build also carries the crash fix from build 229. - Sep 27, 2026
Yui 0.5.0 is on TestFlight: the crew feels ready
Yui 0.5.0, build 278, is on TestFlight. It answers Chris's notes on build 244: opening an agent felt like opening an empty chat. Now + has Snap and say: one press takes the photo and you say what's in it while you hold (YUI-166). The first time you open an agent its hello plays on the full screen, the picker at the top says what each one does, and About lists three things to ask it (YUI-167). Every agent opens on its home, with its own shortcuts over the bar and its starter screens a swipe away: Arnold's week, Basil's calories, Gouda's looper (YUI-168). Basil works out a meal's macros from a photo and a few words, no scale, and posts one breakdown (YUI-103). Yui passes you to Basil with a note when it's his job (YUI-144), and your tables work with any agent (YUI-171). The release post has a what to try checklist you can tap. Before upload the memory check ran on the simulator: 177 MB at the end of the session, 2.6 MB under where it started, a 204 MB peak and no new leaks. - Sep 27, 2026
Tables right in the reply, for any agent
Chris: "this can be the UI layer no matter the AI agent you decide on." This morning a connected agent could keep your tables only through a tool call. Now it can just write table create, put and query in its reply, the same way Yui's own agents do. Before the reply is saved, the Hermes plugin, the A2A bridge and the webhook bridge hand it to Yui's one tables call. The rows land, the lines come out, and each query becomes a table, list, chart or number with the real rows. A reply of writes alone reads Saved. with the table that changed. A reply that only asks for rows is a read: nothing reaches your phone, the rows go back to the agent, and it answers you with them. Deletes still ask first: Delete or Keep, and a Hermes agent hears about your tap on its next turn. An A2A agent can also send a data part, and a webhook can return a tables field. After you hand a table to another agent, that agent's next turn opens with one line naming what it now holds, so it can carry on without the old agent. Only your own thread: a shared client's thread never touches your tables. Next: Controls > Tables in the app, with Give to... and when each table was last read. The page at /mockups/tables shows the live runs. Tests: runtime 159 of 159, Hermes plugin 10 new, A2A 61 of 61 offline and 81 of 81 live (A2A 1.0, 0.3 and poll), webhook 8 new offline tests in Python and Node, 28 of 28 live in each, and the Hermes reply path live at 17 of 17. Every live run used a throwaway account, deleted after. - Sep 27, 2026
Your tables work with any agent
Chris: "this can be the UI layer no matter the AI agent you decide on." Yesterday only Yui's own agents kept tables on the server. Now any agent you connect does too. Hermes agents get a yui_tables tool in the Yui plugin, and Claude, ChatGPT or any MCP client gets the same yui_tables tool on yui-mcp. Both land on one server call, on the same store and rules as native agents: table create, put, query, the same types, errors and limits. A table belongs to you and one agent holds it. Another agent asking for it hears No table called foods yet. You can give a table to another of your agents: it keeps its name and rows, the new agent reads it, the old one stops seeing it. Deletes still ask first: the agent's delete puts Delete or Keep in its thread, and only your tap removes anything. Every read is on the record. Limits: 50 lines a call, 100 tables a person, 60 calls a minute an agent. Next: table lines inside a connected agent's reply, A2A and webhook, and Give to... in Controls. The page at /mockups/tables now shows the real calls from the live test. Tests: runtime 150 of 150, the Hermes plugin suites with 8 new tests, yui-mcp 114 of 114, and a live run on a throwaway account at 21 of 21, deleted after: Basil on Hermes writes foods, Claude over MCP can't see it, you give it over, Claude reads the same rows. - Sep 27, 2026
Every agent has a home
Chris, on build 244: "when I go to one of these agent screens, I should see a unique set of shortcuts ... Notifications should really just be right on this home screen." Now each agent opens on its home: its face, what is waiting on you (up to three, tap to answer), and two to four big chips over the bar. Arnold has Start a workout and My split, with This week and Today's workout a swipe left. Basil has Log a meal (the field opens with "Log a meal: " to finish) and Grocery list, with Today's calories and macros next to it. Gouda has Jam and Tune up, and the looper, the chords and the keys sit on their own screens, ready to play. Penny, Quill and Yui have theirs, and Yui's crew page opens any agent in one tap. When the agent answers, the chips step down to one small row. The dots are gone: you swipe on instinct, from anywhere, the bars included, and keys or pads only take a drag that starts on them. VoiceOver still hears "Screen 2, 2 of 3". Arnold's kickoff now builds your split: days, which days, push pull legs or your own per day, gear, injuries, one Send. Homes are plain Yui Lines (menu shortcut and pages), written once, and agents keep them current with patches; a Hermes profile can ship its own home.yui. Tests: runtime 148, the home unit tests, new home UI tests in light and dark (Arnold's swipes, Basil's Log a meal, Gouda's looper plays, one sideways gesture from five places, Yui's crew), and every pages test moved off the dots. Reaches phones with Yui 0.5.0. - Sep 27, 2026
One agent opens another
Chris, from TestFlight: "An agent should be able to call a method to open another agent." Now it can, with one line. Yui answers a food question with a card for Basil that says why: she just finished leg day and wants dinner ideas. A second and a half later the app is in Basil's thread, and Basil has already answered the note, with dinner options and a pick for the recipe. The card stays in Yui's thread, so a tap on Open Basil goes there again later; old messages never jump. Native agents get it on the server today. Hermes agents send the same card, and Yui tells the agent it names the way an @mention does; the guide teaches it when the build that jumps is on TestFlight. Native agents also answer in group threads now, each group with its own history, and reach connected agents with an @handle. Those agents only read what was written, never a native agent's notes or tables. One hand-off a reply, and an agent that was handed the person never passes them on again. Tests: the native runtime (140), the Hermes plugin suites, and the hand-off in the simulator in light and dark. - Sep 27, 2026
Log a meal without weighing
Chris, on build 244: "I don't wanna make the user weigh that much... It should go as a separate task in a queue, analyze behind the scenes, and then update your screens when ready." And: "a full breakdown of all the calories and all the macros, and I don't need eight screens for that." Now a photo to Basil, with or without words, gets "Got it, working out the macros." in about two seconds. It used to sit on Thinking for 14. The meal goes into a queue on Yui's server. The model that sees names each item with a portion in plain words, never grams, and the runtime does the sums. Then one reply: a line with the total and how sure it is, a table of every item with calories, protein, carbs and fat, today so far and one donut chart. Basil asks at most one question, only when it moves the total by about 100 kcal, and never about what you already said. The tap is applied at once. Each food lands in your food memory with its numbers per portion, so your usual oatmeal is your oatmeal next time. A meal in words (two eggs and toast for breakfast) is logged the same way. No app build needed: it runs on the server for every Basil. Tests: the native runtime (133), a live eval of three meal photos with and without spoken notes (two tablespoons of butter adds 23 g of fat), and runs in the simulator on throwaway accounts in light and dark, deleted after. - Sep 27, 2026
Meet each agent when you open it
Chris, on build 244: "Arnold actually had a pretty decent little kickoff that he was about to do, but when I got to his screen for the first time, all it showed me was a blank screen." Now the first time you open an agent, its hello plays on the stage: Arnold's opening line, then his three questions on one screen with one Send. After that the agent opens the way it always has. The picker at the top is the only one now ("I like where you have the agent picker in the main. I think we can get rid of the agent picker from the left side bar"). Each agent in it has a short line under its name saying what it does, and Add an agent moved there too. In the drawer, About starts with that line, two sentences on what the agent does and three things to ask it. Tap one and it goes as your message. Where it runs moved lower and got quieter. Tests: new UI tests in light and dark (the hello plays once, the drawer has no picker, an About row sends), unit tests for the hello and the new fields, and the old drawer tests moved over to the top picker. Reaches phones with the next TestFlight build. - Sep 27, 2026
Switch agents, keep your tables
Chris: "this can be the UI layer no matter the AI agent you decide on." Yesterday's native agents got their own tables on Yui's server (YUI-170). This is the plan for every other agent. A Hermes agent, a Claude or ChatGPT agent over MCP, an A2A agent and a webhook script all reach the same tables through one call on the relay, with the same three words: table create, put and query. Hermes and MCP get a yui_tables tool, A2A sends a data part, a webhook returns a tables field, and table lines in any reply work on every host. You own each table and one agent holds it at a time. Switch agents and Give to... moves it: same name, same rows, same screens, and the old agent stops seeing it. Removing an agent now asks if you want to keep its tables. The spec is section 8 of Agent tables, and the mock at /mockups/tables lets you hand Basil's Foods table to Chef on Claude and watch the call each host makes. Step 2 builds the adapters in the app repo. Tests: the site's YL and chat tests, a clean build, and a script that clicks through the mock in light and dark at 390 wide. - Sep 27, 2026
Hold to snap and say what's in it
Chris, on build 244, after Basil misread a photo of his food: "a picture alone is not good enough. I have to mention how much butter is in it or did I use copious amounts of cooking oil?" Now + has Snap and say. The camera fills the screen with one big button. Press it and the photo is taken right then; keep holding and the mic listens, with the waveform and your words showing over the picture. Let go and the photo and the words go to the agent as one message, so Basil reads "two eggs in a lot of butter" with the picture and counts the butter. Slide left to the trash to throw both away, like hold to talk. Agents can ask for it too (camera "Snap your plate" +say), and a drawer shortcut can open it straight away (url=yui://snap), which Basil's Log a meal shortcut will use. Words are turned into text on the phone; only the text and the photo are sent. Tests: the new hold, let go and trash UI tests, the deep link and shortcut unit tests, the native runtime and the Hermes plugin both getting the words and the photo in one turn. Reaches phones with the next TestFlight build. - Sep 27, 2026
Every agent keeps its own little database
Chris: "Make sure they have the ability to spin up little dbs of their own. They have their own tables. They have great starter values and can be a personal assistant for many tasks." Now every starter agent keeps its own small database, one per person and per agent, on the server. It writes with the same Agent tables words the spec and the playground already use (table, put, query), and every answer is drawn as a table, list, chart or stat with the real rows, never raw data. Each agent starts with tables worth having: Yui has to-dos, groceries and notes. Basil has 44 common foods with calories and macros per portion, plus meals. Arnold has 16 exercises with how-to cues, this week's plan and sessions. Penny has tasks, errands and bills due, Quill a first deck and its review queue, Gouda saved loops and songs. The blank agent makes its own. Ask for a new one ("make me a table for my reading list") and it appears. Totals by day, week or month work too. Deleting never happens on the agent's say: you get a Delete or Keep button and only your tap removes anything. Controls list each agent's tables with their row counts. Tests: runtime 121 of 121, the migrations on a local Postgres first, the four table asks three runs in a row at 54 of 54, and a full walk on a throwaway account in the simulator, light and dark, deleted after. No new app build needed: today's app draws it. - Sep 27, 2026
Yui 0.4.3: swipe back, and a new install starts at Sign in
Build 258 is Yui 0.4.3, a small build with two fixes from beta feedback on build 244. Swipe works on the full screen again: drag right for the drawer, drag left for your other screens, and the plus, T and mic stay at the bottom of every screen. And installing Yui again no longer opens signed in to the last account: a new install starts at Sign in. Nothing else rides this build. The memory check passed before upload: no new leaks, 2.4 MB of growth over three rounds, a peak of 205 MB. - Sep 27, 2026
Every crew agent says what it does
Chris on build 244: "I have no idea what this agent even does." Every starter profile (Yui, Arnold, Basil, Gouda, Penny, Quill and the blank one) now carries a `tagline` under 8 words, an `about` of two short sentences and `can`, three things to ask it. Basil's reads "Eat better without counting everything". The agents list sends them with the crew offer and on every crew agent's row, so Add agent, the picker and About can show them (the app screens are YUI-167); older builds ignore them. When Yui makes a new agent, or a blank one sets itself up, it writes its own. Second fix: Gouda's first pick sat in the drawer's Review tab as "1 thing is waiting on you". Review counted every unanswered question in the thread, the hello included. Now the first message is marked as the hello and Review skips it; later questions still count. Gouda's first beat also sits on the backbone now, kick on 1 and 3 and snare on 2 and 4. Tests: runtime 105 of 105, app unit 242 of 242, the drawer and first-launch UI tests, and the live crew check 19 of 19 on a throwaway account. The app half ships with the next TestFlight build. - Sep 27, 2026
Every agent has its own home: the spec and a mock
Beta feedback on build 244: "When I go to one of these agent screens, I should see a unique set of shortcuts." And for Gouda: "When I scroll the other way I should get the looper, the chord machine, and maybe some type of piano to jam along." This is step one, a spec and a mock you can tap, before any app code. Open an agent and its home shows two to four big shortcuts above the bar, and anything waiting on you right there, not only in the drawer. Swipe left for its starter screens, ready from the first open: Arnold's week and today's workout, Basil's calories and grocery list, Gouda's looper, chords and keys. No new Yui Lines word: shortcuts are the menu shortcut lines agents already send, and starter screens are pages 2 and up, so any agent can set its own home. Native agents get a home.yui in their profile. Not built yet: try it at /mockups/home. - Sep 27, 2026
The chat on this site feels like Yui
The bubble at the bottom right used to answer in plain text. Now it works like the app. Opening it turns the whole site dark, the same switch as the moon button, and closing it puts back whatever you had. Nothing about it is saved past your visit. On a phone the chat takes the whole screen, like the app's stage; on a computer it is a tall panel. Answers play in: the first line in big type, then the screen. Yui draws with the site's own renderer, so a reply can be a choice, a list, a chart, a timer, a deck, a map, a game or a loop that plays. Tap a button and your tap goes back to her, and she builds the next screen. She follows the same rules as the channel guide the app's agents get: screens, not paragraphs, one idea at a time, no dashes. Four starters open the chat (What is Yui?, Show me a screen, Meet the crew, Make me a beat) plus a real button to get Yui on TestFlight. Meet the crew lets you tap Arnold, Basil, Gouda, Penny or Quill and see a screen each one would draw. The limits stay: a set number of turns per chat and per visitor, and a check for a person once its keys are in. No photos, video or outside links can be drawn here. - Sep 27, 2026
Swipe sideways on the full screen again
Chris, Sep 27, on build 244: "On the screen we lost the left and right scroll functionality." When answers moved to the full screen, the sideways drag stayed behind in the chat. Now a drag left on the full screen shows the next screen, a drag right the one before, and on the first one a drag right pulls the drawer out with your finger, the same as in the chat. It works on the empty greeting too. The plus, T and mic sit under every screen. A new test swipes both ways in light and dark and fails on the old build; the first run, screens and top bar tests still pass. It rides the next TestFlight upload. Per-agent home screens with a log-food shortcut and notifications up front are the next step, placed on the roadmap. - Sep 27, 2026
Agents answer on a screen, not in markdown
Beta feedback, Sep 27: asked Basil "What are some of the things that you can do for me?" and got a wall of markdown. The phone showed the stars around each bold word, ran the bullets together and cut it into 8 pages to swipe through. The live check of the starter crew never caught it: it asked each agent only about its own job, never an open question, and it did not look for markdown. Now it asks all six "What can you do for me?", "Tell me about yourself" and a breakfast's macros, and fails an answer with markdown, more than about 50 words of chat or more than 4 pages to read. On the old runtime those asks failed on every agent. The fix is on the server, no app update. The rules every native agent reads now say one line first, then a screen: what it does as a list and where to start as buttons, numbers as one table. Behind that the runtime cleans up what a model still gets wrong: bullets, headings and bold become a list and lines, short pages are merged down to 4, a run of number tiles (each tile played as its own page) becomes one table, and a table row or title written the wrong way is mended. Two bugs the new asks turned up are fixed too: a message sent while another agent was handing you over could go unanswered, and a list or step inside a deck broke the whole screen. Of the last six runs of all 392 checks, three came back clean and the others missed one to five, mostly an answer a few words over the limit. - Sep 27, 2026
Several chats with one agent: the spec and a mock
Beta feedback on build 244: "I think we might need to introduce the concept of multiple chats. Those should go in the left side bar." This is step one, a spec and a mock you can tap, before any app code. A chat is one conversation with one agent. New chat opens an empty one, saved only once you say something, and your first ask becomes its title. The drawer's Home now puts chats first, newest on top, with Next up and your pinned screens below. Hold a chat to rename or delete it, and delete asks first. Screens, the shelf and memory belong to the agent, so a new chat still knows you and your pinned screens are the same in every chat. The spec also sets out the database and host changes for step two: one new table, a chat id on each message, and one session per chat on the host. Not built yet: try the mock at /mockups/chats. - Sep 27, 2026
The starter crew stays in character
Every new person starts with six agents: Yui, Arnold the trainer, Basil the nutritionist, Gouda the musician, Penny the planner and Quill the study buddy. Now there is a live check that each one stays itself. It makes a throwaway account, confirms all six are there and each opens with its own first answer, then asks every agent two things on the hosted runtime and scores all 18 answers: the right job and the right screens, Yui Lines that parse instead of a wall of text, no dashes, no stray line breaks. Arnold and Basil are careful coaches, so they get stricter checks: ask about injuries, conditions and allergies before a plan, one short doctor note in the first answer, never a diagnosis, never an insulin dose. The first runs caught real problems. Basil's hello had no doctor note and never asked about conditions. Asked for a dose, he said to check with a doctor twice and gave no screen. Gouda sometimes wrote an answer the runtime stripped to nothing, and the turn closed with no reply. The fixes went live on the server, no app update: sharper rules for the coaches and Quill, a runtime that asks the model again when an answer has nothing to see and says so if it still can't, and small repairs for options that wrap onto their own line. The last three full runs passed all 164 checks, 29 of 29 for Arnold and Basil each. Test accounts were deleted after every run. - Sep 27, 2026
A new install starts at Sign in
Beta feedback, Sep 27: "I just downloaded this app for the first time and I already see a header like I'm logged in." He had not signed in. The phone's keychain keeps an app's saved login even after the app is deleted, so the new install found the old session and skipped Sign in, 11 seconds after opening. The first launch of an install now forgets any login an earlier install left behind, so the first screen is the wordmark and Sign in with Apple, with no menu, agent picker or full screen button. An update from an earlier build keeps you signed in. A new UI test fails on the old code and passes now: a reinstall and signed out show no top bar, signed in shows it as before. Rides the next build. - Sep 27, 2026
Line breaks read as lines
Basil answered a dinner question with one long say line and \n between the dinners. In Yui Lines a backslash only escapes the next character, so the app showed 'allergies:nn• Grilled chicken...greensn• Salmon'. Two fixes on the server, no app update. The native runtime now tells the model that one line is one line: a new line is a new say, and items are one list line. And every answer gets one more sweep before it is written: a say with \n breaks becomes one say per line, a run of bullets becomes a list, and a break in any other quoted string becomes a space. Live, three dinner asks on throwaway accounts came back as clean list and choose lines, with no \n left. Hosted agents on Opus did not do it in the channel eval, and GLM 5.2 on the guide alone skipped it in 4 of 4 runs; the new eval case (list-no-escaped-breaks) catches it on the original reply and passes it after the sweep. - Sep 27, 2026
Add agent, then Cancel, no longer crashes
Beta feedback, Sep 27: "I tried to add an agent and then I canceled and it crashed." The crash was not in Add agent. When the sheet closed, the chat screen redrew, and the phone had to spell out the chat's full type to do it. That type was nested 129 levels deep, and spelling it out ran the phone's small main stack dry inside the message bar. The simulator never showed it: its main stack is eight times bigger. The chat's layers, the thread and the message bar are now boxed up as separate pieces, so the deepest part is 47 levels. Nothing on screen changed. A new test keeps the chat's type under 60, and a UI test opens and cancels Add agent twice, with stage first on and off, and checks the app is still up. Rides the next build. - Sep 27, 2026
Long asks always get an answer
Ask hosted Yui to explain the rise and fall of Rome and, some of the time, you got nothing back, or a line saying she ran out of room. The channel eval found why: GLM 5.2, the model behind native Yui, could spend all 2000 tokens thinking and never start the answer. Two fixes on the server, no app update. Thinking now gets its own 1000 tokens on top of the answer's 2000. GLM treats that as a hint, so when an answer still comes back empty, or cut off after the model spent most of its room thinking, the runtime asks once more with thinking off and sends that answer. On the three eval cases that used to come back empty, 18 fresh turns gave 18 answers. Live, the same Rome question on a throwaway account came back as a 4-page deck with a map of the empire at its peak, a chart and the chain of failures, in 7 to 25 seconds. - Sep 27, 2026
No dashes in the crew's replies
The first live proof of hosted Yui caught a small thing that mattered: she answered 'Arnold's your trainer — tap Arnold', and Arnold's hello had one too. The house voice has no em dashes. Two changes on the server fixed it. Every native agent's rules now say to use a period, a comma or a colon instead. Models still slip, so the runtime sweeps each answer once more before it is written: a spaced dash becomes a period when a new sentence starts after it and a comma when it does not, number ranges get a plain hyphen, and only the words a person reads are touched, never links or the inside of a screen's tokens. It went live without an app update. The proof is the same throwaway-account run on a fresh iPhone simulator: Get fit, and Yui now says 'Arnold is your trainer. Tap Arnold in your crew', with no dash in any of the seven crew answers on the account. The account was deleted after. - Sep 27, 2026
Native Yui on your phone
Build 229 is the native sprint in one TestFlight build. A brand-new account signs in and Yui talks first, with Arnold, Basil, Gouda, Penny and Quill already in the list. Nothing to pair and nothing running on your own computer. The recording is a throwaway account on a fresh iPhone simulator against the live backend, start to finish: Yui's hello, a question to Arnold that comes back as a timer and a checklist, then a photo of lunch sent to Basil, who answers with a calorie guess, protein, carbs and fat, and a form to fix it before he saves it. Recording it caught a real bug: the phone sent the photo under one name and the hosted agent looked for another, so Basil answered a salmon plate with 'snap a photo'. The fix was on the server, so it reached build 229 without a new upload. Web search is in the build but waits on its search key, so it says it could not look something up for now. The test account was deleted after. - Sep 27, 2026
Everyone gets a Yui at sign-in
This is the moment the native sprint was for. We made a throwaway account on the live backend, signed it in on a fresh iPhone simulator and did nothing else. The app opened in Yui's thread with her first message and the whole crew already in the list. We tapped Get fit and Yui answered for real: the tap went into the database, a webhook woke the hosted runtime, and her reply came back on screen in a few seconds. Arnold said hello on his own a moment later. No pairing code, no Hermes, no computer. Behind it, every person gets one hosted connector and native agent rows the first time the app lists their agents, and people who already had agents get the crew too, placed above their own with nothing replaced. There is one switch for all of it: with native_enabled off a new account gets no crew and a message wakes nothing, and switched back on Yui answers again. Both checks are now live tests in the repo, and the test accounts were deleted after. - Sep 27, 2026
How well GLM uses Yui
Native Yui runs on GLM through OpenRouter, so we put both GLM models through the same 88 turns the channel guide is tested on: timers, forms, plans, maps, music, photos, groups. A turn passes when the app can draw every line and the screen fits the ask. Claude Opus 5.5 passed 93%, Claude Sonnet 5 80%, GLM 5.2 76% and GLM-5V-Turbo 63%. Each model ran once, and every miss ran again, so a miss that holds up twice counts as real. GLM 5.2 misses mostly by running long. GLM-5V-Turbo is weaker at everyday turns, so Yui keeps it for photos only, where it passes. The defaults stay: GLM 5.2 for text, GLM-5V-Turbo for photos. Two things came out of it. GLM 5.2 sometimes spends its whole budget thinking and says nothing; that fix is on the board. And a new test turn, a lunch idea with the macros in a table, now guards against the broken table GLM wrote in a live run. A full GLM pass cost about 40 cents. - Sep 27, 2026
The first launch is Yui talking, with the crew already there
A new person used to land on an empty list and a pairing code. Now the app opens in Yui's thread with her first message on screen: who the crew is, and a choice of where to start. Arnold trains, Basil feeds you, Gouda makes music, Penny keeps your lists and Quill helps you study, and they are all in the list already, above any agent you pair from your own computer later. Remove one and Add agent offers it back: the crew sits at the top of that sheet by name, one tap each, next to pairing your own. A tap only ever adds; nothing already in your list changes, and one that is already there just opens its thread. Controls now shows each native agent's model by its name on the list Yui tests models against, and which profile it runs with its version. Tests: 4 new runtime tests (74 in all), database checks on a local copy of every migration (remove Basil, add him back, nothing else moves), and a first-launch UI test on a fresh simulator in light and dark. The screens here are the demo account playing the list the server makes; the live path is checked with the native release. - Sep 27, 2026
Your agents check in on their own
Native agents can set check-ins now. Say "check in Monday at 7" and the agent writes it down in your own time zone; the phone tells Yui which zone you are in. A clock on the server looks every minute for what is due, wakes the agent, and the agent opens the thread itself with a short line or a screen. Then your phone gets a push with its first words. Check-ins can be every day, weekdays, some days, once, or in two hours. You can pause one, run it now or delete it in the drawer's Controls tab. In a real run on GLM 5.2, Arnold heard "check in Monday at 7" and set it for Monday 7:00 in New York. When Monday came he opened with "Rise and grind! What's on tap today?" Basil set a lunch question for 12:30 every day and asked "Lunch time! What are you having today?" Both went through the real database code on a local copy, and the pushes landed on a simulator. Real iPhone pushes switch on once Yui's Apple push key is in place. It ships with the next TestFlight build. - Sep 27, 2026
Map labels stop overlapping
Found while shooting the maps demo: a real answer about Lisbon to Barcelona by train put a label on every leg, and the labels landed on the cities ("BaAVE, ~2.5–3h" where Barcelona should be). Labels now take turns. Places claim their spot first, then areas, then routes, and a leg's label sits beside the middle of its line instead of at the city it ends in. A label tries spots clear of the lines first. If it finds no room it tries its short form ("Alvia via Ourense" without the hours), and if that fails too it is left off rather than drawn on top of something; VoiceOver still reads it. The app draws the same spots as the web, checked on nine maps. Try the trip on See it. - Sep 27, 2026
Your agents remember you, and you can fix what they remember
Native agents keep two kinds of memory. Each agent has its own notes (40 at most, oldest go first), and there is one About you card that every native agent on your Yui reads: your name, allergies, goals. Agents you pair from your own Mac never read it. The drawer's Controls tab shows both lists; edit a line or forget it there, with no chat turn, and the next answer reads the change. In a real run on GLM 5.2, Chris told Yui he is allergic to peanuts and training for a 10k. The card filled in by itself. We changed the allergy to peanuts and shellfish in Controls, then asked Basil for dinner ideas: his very next answer skipped both. Memory lives with your account, not your phone, so a new sign-in finds it all. The database now refuses a note on a paired agent or on someone else's agent, and a bug is fixed where two notes saved in one turn could swap numbers, so forget the first one could drop the wrong note. Tests: 8 new runtime tests (70 in all) and database checks on a local copy of every migration. Rides the native release. - Sep 27, 2026
Basil reads your meal
Native agents now read photos. A turn with a photo goes to GLM-5V-Turbo, one photo per turn: if you send more, the agent sees the newest and asks for the rest one at a time. Basil answers a meal the way the Meal photo spec lays out: one line on what he sees and what he is guessing at (the sauce, the oil), four tiles with calories marked a guess, and a form to fix the portion before anything is saved. Four live runs on real photos (a salmon plate and a poke bowl) came back in that shape. The first run caught two bugs: the model wrote a stray end line that the phone showed as an error, and once it left its memory note unfenced, so you would have read it. Both are fixed. The shots are Basil's real answer to the salmon photo, drawn by the app on the simulator. Native agents reach phones with the native sprint build. - Sep 27, 2026
Native agents look things up, with sources
Ask a native agent something that needs today's facts and it looks it up, then answers with the pages it used as cards with a Read button. It can search, then read one page in full, two lookups a turn. Each person gets 50 free lookups a month on Yui's key (20 a day). When they run out, the agent answers from what it knows and shows one card, Free web searches used, whose button opens Settings at Web search. There you paste your own key from the search service: it is checked with the service, kept locked in the vault, shown only as its last four, and the limit goes away. It is never asked for in chat. 50 runtime tests, a migration checked on Postgres, and the tap from the card into Settings in light and dark. It goes live with the native sprint build. - Sep 27, 2026
Agents answer where with a map
Step 3 of maps, and the one Chris asked for. He asked Yui for a brief geography of the Mongols and got a big number and four bullets, East, West, South and North. "Again, not bad but this should be a Map." Channel guide v37 adds one rule: any answer about where (geography, a past empire, a trip, a route, a delivery area) leads with a `map`, never compass points in words or a map drawn in shapes. A quick where is one line and a map in the chat; an explainer draws a map on its first page. The eval gained three where cases (a train trip, a farm's delivery area, where is Kyrgyzstan) and a check that fails a where answer with no map. The old guide failed all three where cases in both runs and drew the Mongols in shapes; the new one sent a map every time, and the full suite stayed inside its usual noise. Phones on older builds get the place names in words. Try the Mongols deck on See it. - Sep 27, 2026
Yui's own soul and first screen
Every native agent is now a folder of three files. profile.json holds its name, its role, its color, the Yui Lines it reaches for first and its model. soul.md says who it is, how it talks and what it never does. first.yui is its first answer: a line of text and a real question on a screen. Yui's own folder makes her a helper and a maker: she does the work herself, sends you to the right agent on your crew, and makes a new one when you ask. The build now loads every folder through the same checks the runtime uses and stops on any that fails: an unknown color, a screen the app cannot draw, a soul over 4000 characters, an em dash, or a first answer with no text before its screen. 52 of 52 runtime tests pass, 8 of them new for the loader and Yui's first turn. On a local run with a fresh account, Yui opened with her hello and the choice screen below, with no model called. It stays switched off until the native sprint build. See it on the See it page, under Planned. - Sep 27, 2026
Pick the model per turn
The native runtime (YUI-130) now routes every turn through a small table: a turn with words goes to GLM 5.2, a turn with a photo or video goes to GLM-5V-Turbo, both on OpenRouter, with data collection turned off on every call. The base URL is plain OpenAI-compatible, so a person's own key for another provider slots in later. First live run: Basil answered a lunch question on GLM 5.2 in about 2 seconds, then read a real pizza photo on GLM-5V-Turbo and sent back macros per slice and a pick for how many you had. The same run caught a bug: Z.AI's image fetcher is turned away by some hosts, and the turn failed with an error in Chinese. Now the runtime fetches the photo itself and sends the bytes once more, so the answer still comes back. It also showed GLM 5.2 sometimes writes a table the wrong way; that goes to the channel eval next. The shots are Basil's answer drawn from Yui Lines on the site; native agents reach phones with the next release. `node runtime/scripts/live.ts` runs both turns with your own key. - Sep 27, 2026
Yui's own engine for native agents
The native sprint starts with the engine. runtime/ in the app repo runs every person's native agents in one place: it reads the thread, runs the turn, follows the relay rules and writes the answer back as a screen. 42 of 42 tests pass. On a local run, Gouda answered 'make me a lo-fi beat' with a playing loop and Yui answered with a choice screen, both parsing clean. It stays switched off until the new backend and the model key go live, then the first launch talks to Yui with nothing to set up. See it on the See it page, under Planned. - Sep 27, 2026
Yui 0.4.2 on the site
Build 216 is Yui 0.4.2, and it has its release Thought now: one Send per screen. A form inside a plan is just fields, a pick inside a plan has no Done of its own, and the screen keeps one Send at the end. The post shows the before and after from Chris's TestFlight note, the two agent-side fixes that reach every build (a flow the phone cannot run arrives as a plan, explainers draw every page), and a what to try checklist drawn live on the page. The roadmap now names 0.4.2 as the build on phones. - Sep 27, 2026
One Send per screen, picks too
Found while fixing the form: on the full screen's questions and in a plan, a pick still drew its own Done under its options, next to the screen's one Send. Two buttons that both look like send, the same thing Chris flagged in his TestFlight feedback about the form. Now a pick inside a plan, or on the full screen's questions, is just its options. Every tap goes straight to the screen's Send, and taking a pick off takes it back. In a plan that asks one thing at a time, Next moves on and the review lists what you picked. A pick on its own in the chat keeps its Done. Three new app tests cover it: no Done on the stage with the picked pages inside the plan's answer, Next and review past a pick, and a lone pick still with its button. Rides the next app release. - Sep 27, 2026
One Send per screen, forms too
Chris, Sep 27, from the TestFlight feedback button: "I don't see a reason to have a send button on about you section." Yui had asked six questions for a personal brand site on one screen with one Send, but the About you form drew its own button too. Tapping it said Sent and sent nothing. Now a form inside a plan, or on the full screen's questions, draws no button of its own. Every field you fill goes to the screen's one Send, which waits for any required field, and the plan's answer carries your name, role and one-liner. In a plan that asks one thing at a time, a form step moves on with Next. A form on its own in the chat keeps its Submit. Three new app tests cover it: one Send on the stage with the form's fields in the answer, Next past a form, and a lone form still with its button. Rides the next app release. - Sep 27, 2026
Maps in the app
Step 2 of maps, for Chris's note on the Mongol Empire answer: "this should be a Map." The app draws `map` itself, from the same scene as the web: the same fit, the same outline, the same label spots, checked against the web on seven maps down to the outline paths. Countries fill in, pins spring up, routes trace themselves on, and VoiceOver reads the places in order. In the chat a map is a card. On a deck page it pinches and pans, stays sharp when you zoom, and a swipe at full size still turns the page. No map tiles and no key, so nothing about what you look at leaves the phone. Phones on older builds get the place names in words. It rides the next TestFlight build. Step 3 teaches the agents to answer where with a map. - Sep 27, 2026
Maps: answer where with the place
Chris on the Mongol Empire answer in build 208: "Again, not bad but this should be a Map." The answer had a big number and four bullets, East, West, South and North. Step 1 of maps is on the web. `map` is a new group in Yui Lines: `area` fills countries by code (`MN|CN|KR`) or a drawn outline for borders that are not today's, `pin` puts a place at its lat,lon, and `route` draws a road or an arrow between places or pins. Parts come on in line order, labels find room on their own, and a map can be a deck page's picture. It draws from a bundled Natural Earth world outline: no map tiles, no key, no network, nothing sent about what you look at. Every parser learned it (JavaScript, Python, Kotlin, Rust and the app's Swift check), with 18 new vectors, 768 of 768 passing in each. On Telegram a map goes as its picture plus the place names in words. Try the Mongol Empire in the playground. Step 2 draws it in the app, step 3 teaches the agents to send it. - Sep 27, 2026
Flows never dead-end
Chris, Sep 27, from the TestFlight feedback button: "I asked for several steps and it came back with nothing. All I got was one thing and there's nowhere to go from here." He had asked Yui to interview him for a personal brand site. Yui answered with the saved website intake flow, which the guide teaches, but no app build runs flows yet, so the phone drew the headline and stopped. Now the yui plugin sends a flow to an app that can't run it as the plan it walks by default: the same questions, one at a time, one submit. Saved flows, variants and inline charts all turn into plans, and a reply that promises questions but is left with nothing to tap gets a question to tap instead. Channel guide v36 tells agents the answers may come back as a plan. The eval gained a case that scores the reply as build 205 receives it: the old plugin left nothing to tap, the new one puts the intake on screen. Try it in the playground. - Sep 27, 2026
Explainers draw every page
Chris, Sep 27: he asked Yui for a brief geography of the Mongols and got a page of text on the full screen. "It's just a text bomb. Come on that's not the point of this app." Channel guide v35 adds one rule: an explainer is one line, then a deck of 2 to 4 pages, and every page has its picture. Where is a map drawn in shapes, how big is a chart or a number, how it works is a diagram. A page of only words is the exception. The eval gained three explainer cases and a check that fails any page with only words: the old guide failed the Mongols question in both runs, the new one drew every page in all three, and the full suite stayed inside its usual noise. Try the Mongols deck on See it or in the playground. - Sep 27, 2026
The new face, filmed in the app, on the home page
The first film about the new layout was made from the web mock before it shipped, and ended on 'in the app on TestFlight next'. This one is filmed in the app itself: six scenes played on the simulator running Yui 0.4.1, build 208, with scripted replies on the demo account. It opens on the old pain, one status question and eight pages back. Then you hold the big mic and talk, and one question gets one screen. A longer answer plays in parts, a line and a picture each. The questions wait for the end with one Send, and the chat is the record, top right. Coach and Wizard answer the same question and move their own way, and the picture behind the words moves with a voice and with a beat. 67 seconds, Yui's own dub music, sound on. It replaces the YouTube video in the home page hero and is hosted on the site, so nothing loads until you press play. How it was filmed is in the repo: videos/12-new-face. - Sep 27, 2026
A film for Yui 0.4.1: tune up, keep time, send a take
One practice session, start to finish. A guitarist asks Wizard for a tuner and each open string turns green within 3 cents. A metronome clicks at 90 in the chat, a loop drops in under it on the beat, Record runs, and Stop and send gives the agent the take as the sound and the notes. Then a MIDI keyboard plays the keys. It plays with sound on the Yui 0.4.1 Thought and in the Music group on See it, in 16:9 and 9:16. Drawn frame by frame from real screenshots of build 208; the take bubble in the chat and Wizard's reply are demo content. - Sep 27, 2026
Three films: dinner, a car, homework
Three new films, each about half a minute with Yui's own dub music. Cook with your hands full: tap the mic once, talk, and the oven timer keeps counting on the lock screen. Can I afford it?: one number, then a calculator you drag until the payment fits the budget, new and used side by side, and one Send. Homework rescue: a picture of half a chocolate bar, a memory game made of her fractions, a quick check, and the score goes back so the agent plans tomorrow. All three play on the home page under Dinner, a car, homework, and on See it beside the thing they show (hands-free voice, calc and memory), each with a share link and both cuts in the press kit. The agents and their words are made up for the films; every screen in them is in the app today. - Sep 27, 2026
The films are on the site, and 0.4.1 reads as the newest
The seven brag films made this week were only on this Mac. Now each one plays on the page it is about: Meet Yui, Plan to launch, Your agents and Yui lives on the full screen on the home page; Built in public on the board, the changelog and the timeline; Jam on the music spec; Your agents on Get started; A lesson is one deck and the full screen film on See it. They are cut down for phones, about 4 MB a minute with the music intact, and each has its own share link and a spot in the press kit. The home page still said Yui 0.3.2 was on phones; it reads Yui 0.4.1, build 208 now, See it has a Yui 0.4.1 group (the tuner, Record a take and a MIDI keyboard, with the tuner moved out of 0.4.0), yuigui.com/builds opens the changelog, and the war room's status row names the version. - Sep 27, 2026
Agents send a tuner and a metronome
Build 208 (Yui 0.4.1) draws the tuner and the metronome, so channel guide v34 teaches every agent the last two music lines. `tuner guitar` (or ukulele, bass, chromatic) listens on the mic and tells the agent when every string is in tune. `metronome 80` is a click to practice to, sent only when you ask for a tempo, and Stop tells the agent how long you played. Every ready-made music screen now draws in the app, so the guide also points agents at them: yuigui.com/api/library?q=music. Two new eval cases: a freshly restrung acoustic, and strumming practice at 70 in 4/4. The v33 guide scored 0 of 2 (a keyboard plus a list of string notes, and no metronome); v34 sent `tuner guitar` and `metronome 70`, 2 of 2, and all seven music cases passed. One rerun added an unasked metronome under a song's chords, so the metronome line now says only when they ask for a tempo; the music cases then passed 7 of 7 twice. The full suite held: 67 of the 76 older cases, inside v33's range. Phones older than build 205 get the tuner and the metronome in words. - Sep 27, 2026
Yui 0.4.1 on the site: the release post
Yui 0.4.1, build 208, is on TestFlight. The release post, Yui 0.4.1: tune up, keep time, send a take, walks through the four new music tools with shots and clips from the app: a tuner on the mic that turns green within 3 cents, a metronome in the chat that keeps time with a beat, Record on the looper, pads, keys and chords that sends the take to the agent, and a MIDI keyboard that plays the keys. It ends with a what to try checklist you can tap. The roadmap now says 0.4.1 is on phones, the music tools on See it say which build brought each one, and the changelog lists build 208's changes under build 208. They had been filed under build 204, because the export counted commits in a way a merged branch threw off. - Sep 27, 2026
See a take recorded and a keyboard played
The music tools can now record, and See it shows it. Record a take: a boom bap loop plays, Record turns into Stop and send, and the agent gets the take as a sound file and a MIDI file, like a photo you took. Tap the sound on to hear the real take, 4.4 seconds, as the agent got it. A MIDI keyboard plays the keys: plug one in and each note lights up on screen and counts as played. Both clips are cut from real iPhone simulator captures. Still to come: a real keyboard on a real phone, the TestFlight build, and Ableton Link, which waits on a license call. The music spec says which is which, in section 8. - Sep 27, 2026
Record a take, plug in a keyboard
Step 5 of the music tools. Record sits on the looper, the drum pads, the keys and the chords. It records what Yui's sound engine plays, never the mic, to AAC at 48 kHz, up to 2 minutes. Stop and send uploads it the way a camera photo goes, and the agent gets two signed links: the .m4a and a .mid of the same take, with drums on channel 10 and each sound on its own track. Drum pads with +record now send their sound with the pattern. A MIDI keyboard over USB or Bluetooth plays the keys on screen: each note lights its key and counts as played, and the keys follow it to its octave. The MIDI button on the keys opens Apple's Bluetooth pairing screen. While the looper or the metronome plays, Yui sends MIDI clock, so a drum machine or a DAW follows its tempo. Proof, live on the simulator: a take recorded over a loop reached a real Yui host as two links, which opened with no key and held 4.4 s of AAC, 48000 Hz, 2 channels and a MIDI file with 27 drum hits, and the agent answered with the take as a link (14 of 14 checks). In the UI tests a virtual keyboard lit and played the keys, and the clock arrived 24 a beat, 20.83 ms apart at 120 BPM. Ableton Link waits on a sign-off of its license: the SDK may not be given to anyone, and Yui's code is public. A real keyboard on a phone comes with the next TestFlight build. - Sep 27, 2026
A clean sweep after Yui 0.4.0
After a night of Yui 0.4.0 pages, clips and Thoughts, the site got its full check. The link check walked 346 pages, 1,421 internal links and images and 1,240 anchors: all good. The library check drew 44 presets, 5 flows and 5 music screens: all good. The freshness check read 105 files against build 204: all good. The share card check found one gap. The new tuner and metronome entry had no capture of its screen, so its share link drew a simpler picture. It now shows the real tuner, ukulele strings and all, at /s/tuner-in-app. - Sep 27, 2026
Agents send keys and chords
Build 204 draws the keyboard and the chord buttons, so channel guide v33 teaches every agent the two lines. `keys Am pentatonic` is a keyboard in a key: notes outside the scale are locked, so nothing sounds wrong. `chords G I-V-vi-IV` (or by name, `chords C|G|Am|F`) is a song's chords as big buttons to strum, and `~chords key=D` moves them. `+send` on either sends back what you played. Two new eval cases: A minor pentatonic on piano, and a four chord song on a uke in G. The v32 guide scored 0 of 2 (a drum loop with the note names in words, and a drum loop with a card of uke chord shapes); v33 sent `keys Am pentatonic` and `chords G I-V-vi-IV +send`, 2 of 2. The older music, plain and short cases held, and on the full suite v33 scored inside the old guide's range, so the held "Show, don't say" rule ships with it. The music screens in the library now show as ready for the app, except the ones with a tuner or a metronome, which join with the next TestFlight build. Phones older than build 177 get the keyboard and the chords in words. - Sep 27, 2026
A tuner and a metronome in the app
Step 4 of the music tools. tuner listens through the mic, lights the nearest string and shows how far off it is on a needle from -50 to +50 cents. Within 3 cents the needle turns green. Every string is a button that plays its note, so you can tune by ear, and that still works if you say no to the mic. When every string has held in tune for a second, the agent gets one message with each string's cents. Guitar standard, drop D and DADGAD, ukulele with a high or low G, 4 and 5 string bass, custom strings, a4=442 and a chromatic mode are in. The mic is on only while the tuner listens; nothing is recorded or sent. metronome sits in the chat: a big tempo, Tap tempo, a dot per beat with the first one accented, and clicks on the beat, in eighths, triplets or sixteenths. It runs on the same clock as the looper, so a click under a beat lands on its beat, and it keeps going with the phone locked. Stop after 10 seconds tells the agent how long you practiced. Tests: tones at known offsets on every string of every tuning read within 2 cents (sine tones within 0.01), and the metronome held every click within 0.1 ms of a click track for 5 minutes at four tempos. Tuning a real guitar and ukulele on a phone comes next; it rides the next TestFlight build. - Sep 27, 2026
Yui 0.4.0 in motion on See it
Motion is the point of Yui 0.4.0, and a still cannot show it. The Yui 0.4.0 group on See it now plays four short clips, each 10 to 12 seconds, recorded in the iPhone simulator. The stage moves with the agent: Coach snaps through looking and found it, Wizard rolls in slow and heavy. The live picture behind the words runs through aurora, lights, waves and bloom. The picture listens: it swells with your voice, opens while the agent reads, and moves with a boom bap loop. And the big mic: talk and the words show as you say them, + attaches a picture or a file, T opens the text field. Sound is off, tap to play. Reduce Motion shows the still. - Sep 27, 2026
Yui 0.4.0 on the site: the release post and See it
Yui 0.4.0, build 204, is on TestFlight. The release post, Yui 0.4.0: the new face of Yui, walks through the full screen stage, the big mic bottom right and your agents top left, the stage that moves the way each agent moves, and the live picture behind the words that listens to your voice, the agent's voice and the music, then a what to try checklist you can tick. See it has a Yui 0.4.0 group with seven entries from real simulator captures; the full screen stage group now reads as in the app, and keys and chords read as in the app too. The roadmap says 0.4.0 is on phones. - Sep 27, 2026
The picture listens
The Metal picture behind the stage now listens. It moves with your voice while you talk, with the agent's voice while it reads the answer, and with a beat when the looper plays, then settles when the music stops. It runs at 60 frames a second on its own and drops to 30 behind words so they keep their contrast. Reduce Motion holds one still frame. A memory pass on the release build stayed flat: peak about 200 MB, no growth and no new leaks. Try the web version at /playground?demo=visual-waves, or install build 204. - Sep 26, 2026
About and Controls in one drawer tab: planned
Chris asked for About and Controls to be one tab in the drawer, since both are about the agent. It is written down with the files it touches and the tests to update, and it waits in the app backlog. Nothing changed on the phone yet, so there is no picture. - Sep 26, 2026
Hermes for everyone: the spec
How a person with no server gets a hosted Hermes agent inside Yui, with their own key and their own data. This is a written spec, so there is nothing to screenshot. It is live on the site. - Sep 26, 2026
Native Yui: the spec
Yui's plan for a native Yui: every person gets their own Yui and a starter crew at sign-in, with the engine on the phone. This is a written spec, so there is nothing to screenshot. It is live on the site. - Sep 26, 2026
Every drum name plays a real drum
A beat with rows named the way a musician would say them, like a samba with surdo, caixa, tamborim and ganza, used to tick on every row. Now each name plays a matching drum, and a name the kit does not know takes the next unused voice, so no two rows share one. Open the samba in the playground and press play. - Sep 26, 2026
The war room moves into Yui's left drawer
Chris: the war room should not be a screen you swipe to, it should live in the drawer. Now it does. Home shows the status, the busy lanes and the queue. Review lists what waits on you, and a tap on a row opens its question as one choice with no agent turn in between. The old screen 2 path is gone. - Sep 26, 2026
The store listing is named Yui Gui
The listing said Yui Bot, which is not the name. The plan was to call it Yui, but that name was taken there, so it is Yui Gui for now and the public TestFlight page reads Join the Yui Gui beta. The docs and site copy match, and no Yui Bot is left in either repo. It is a name change in App Store Connect, so there is no screen of ours to show. - Sep 26, 2026
Test builds install beside the TestFlight Yui
Test builds used to install over the real app and replace it. They now ship as Yui Dev, with a DEV badge on the icon and their own app id, so both live on the phone side by side. Push, sign-in and links know about the second app. Push on the Dev copy was not tested on its own. - Sep 26, 2026
Yui 0.3.0 on the site: the release and a Thought
Yui 0.3.0, the smooth release, went to TestFlight as build 138. The site caught up the same day: the roadmap says where Yui is now, See it has a 0.3.0 group, the home page shows the release line, and build 138 is on the progress entries it carries. The release also got a Thought, Yui 0.3.0, the smooth release, on what got faster and why. - Sep 26, 2026
The top bar: agents left, the record right
Chris, from TestFlight: "Users can get to the chat view on the top right. We'll have to find room on the top left hamburger tab for the settings themselves, maybe to the left of the selector for the agents." Now the top of the full screen is three things. Top left, a menu button, then the agent you are talking to: tap the name to switch, or go to Manage agents. Top right, the chat record, the whole thread as it is today. The menu opens the agent's drawer, the same one the chat has, and Settings is a gear in its header. The record gets the same top bar, with the way back to the full screen on the right. Something waiting on you still puts a dot on the menu. The drawer drag and every screen stay where they were. Rides the next release. - Sep 26, 2026
A live picture behind the words
Chris asked for a visualizer: "Think shaders. It would be great if we have stories in there to have them be audio responsive." Step one is the web mock every app card starts from, at /playground?demo=visualizer. An agent sends one line, visual aurora react=voice, and a live shader draws behind the stage. Five looks to start: orb, aurora, waves, grain and bloom. The colors come from the agent's look and it moves in the agent's motion look, so Coach's bloom hits hard on the beat and Sage's aurora swells slowly. Play the sample voice, the sample beat or your own mic and watch it listen. It never fights the words: behind text it dims and lays a scrim so the words keep their contrast. Reduce Motion and Low Power get one still frame. Every parser reads the line, and spec/VISUAL.md has the frame and battery budget for the app. The Metal version in the app is next. - Sep 26, 2026
A bigger mic, bottom right
Chris wanted the mic to be the main way in. Now it is: a big coral mic sits bottom right, with T and + beside it and nothing else on the bar. Tap the mic and talk: your words stream in as you say them and a short pause sends. Hold it instead and it talks until you let go; slide left to throw the words away. Tap T and the whole text field springs up with the keyboard; tap anywhere above and it folds back into mic, T and +, keeping what you typed. + opens the photo library, the camera or Files, and while you type the pictures sit as chips over the field and go with the message. The chat record gets the same bar. Reduce Motion gets a plain fade. Rides the next release. - Sep 26, 2026
Say how each agent moves
Chris wanted people to just describe the animation each agent gets. Now you can. Say "make it heavy and punchy" and the agent writes one Yui Lines line, theme pace=quick ease=heavy enter=drop pulse=beat, and saves it with its colors. Four words make a look: pace (slow, even, quick), ease (float, spring, sharp, heavy), how things come on (rise, pop, slide, drop, fade) and how it breathes (soft, beat, tick, still). The mock at /playground?demo=motion-looks plays one turn on two agents: Coach was told heavy and punchy, Sage drifts like water. Type your own words and the stage moves that way at once. A small word table does it on the web, the agent uses its own judgment. Every parser reads the new keys, and Reduce Motion still holds everything still. The app reads the saved look next, with the stage motion build. - Sep 26, 2026
Pictures show whole, never cropped
Chris, Sep 26: "These images could be bigger... I wanna make sure we're not cutting off screenshots or really any type of image. When displaying an image, we should look at the size of the actual image and then create a box that big instead." Now every picture waits for its real size and draws in a box that shape: a photo, a gallery, a storyboard, a picture in the chat. A very tall one gets a height limit and shows whole inside it, never cut top and bottom. An agent can still ask for a filled, cropped box with fit=cover. The screen previews on the full screen are bigger too, with the next one still peeking in from the side. New UI tests check a tall picture and a screen preview show whole; they fail on the old build. - Sep 26, 2026
The stage moves with the agent
Chris asked for animations driven by the agent's context. The mock at /playground?demo=stage-motion plays one turn on two agents side by side, Coach and Sage. Same words, same answer, different character: Coach is snappy (quick, sharp, a tick), Sage is calm (slow, floating, a long breath). The mood comes from the turn with no extra work from the agent: listening, thinking, working, found it, the answer, the questions, an error. The doing line picks the kind of work, so Reading your calendar sweeps a light round the mark and Drafting a plan stacks it up. The stage opens from the mic, parts come on in the agent's own way and the questions arrive one by one. The look has room for YUI-123, where you describe how an agent moves in words. Reduce Motion gets a still stage. The spec is in YL.md, section 5, Stage motion; the app follows. - Sep 26, 2026
Yui lives on the full screen, in the app
The stage from the playground mock is now in the iPhone app. Send something and the whole screen comes up right away, no typing dots: your words small at the top, a soft shape breathing in the agent's color and what it is doing. The answer plays in parts, a line and a drawing each; tap or use the arrows to go on or back, and a status question is just one screen. Every question in the answer waits for the end, all on one screen with one Send, and a plan still answers as one plan. The chat stays as the record, top right, with a count of what is new, and a button there brings the full screen back. Your agent is top left with settings beside it; the mic, T to type and + to attach sit bottom right, a notch smaller than the first mock, and Settings can switch each one off. Rides the next release. - Sep 26, 2026
A Yui of your own, explained
A new Thought, A Yui of your own, says what the Sep 26 plan means for a visitor. Today Yui is the screen and you bring your own agent, and that stays true through the public beta. The plan is that Yui answers on your first launch, with a starter crew beside her and nothing to install, and that people who want more get a real Hermes of their own later. It is marked as a plan throughout, with a diagram of how a message would travel: the app, the relay, then your own Yui on our server. The roadmap's Planned line links to it. - Sep 26, 2026
The full screen stage on the site
The site shows the new face of Yui the day Chris approved the mock. See it opens with Coming next: the full screen stage, the live mock you can tap, then four parts in light and dark: a short answer straight to the stage, questions last with one Send, the chat as the record, and the new bars. The roadmap marks phase 1 in progress, with the app build running now and the new bottom and top bars after it. A new Thought, The chat becomes the record, tells it in Chris's words: eight pages to say he was up to date, and the idea that the full screen is where you live. - Sep 26, 2026
Send answers in about 70 ms
The last 30 ms from YUI-106. Send used to take about 127 ms to answer; now it is 64 to 95 ms on the simulator with a 500 message thread, against 162 for the old code in the same session. The big one: after a send, Yui swaps in a fresh text field so the sent words are sure to clear, and that swap reloads the keyboard. It ran before the frame with your bubble reached the screen. Now it waits two frames. Smaller ones: the field empties before the bubble goes in, the bubble and the working row move in one step, and the working row is drawn once, unseen, before your first send. Nothing looks different. The keyboard still dips for a moment after Send, from the same field swap; that goes only if a way to clear the field without a new one holds up on a real phone. Real phone numbers come from the next TestFlight build. - Sep 26, 2026
The full screen stage, drawn
Your first message opens the whole screen right away, no typing dots. While the agent works you see your words, a soft shape breathing and what it is doing. Then the answer plays in short parts, a line and a drawing each; a status question is one screen. The questions wait for the end, all on one screen with one Send, and everything lands in the chat, top right, where a tap reopens any part. The new bars are in it too: settings and your agent top left, a bigger mic bottom right (tap and talk, your words stream in), taken a notch smaller after Chris's first look, T to open the text field and + to attach, with photos sitting in the field while you type. Settings turn T and + on or off. Nothing changes on the wire: YL.md now says how any reply plays this way, and the guide gets a Show, don't say rule, drafted and scored but not sent to agents yet. Open it at yuigui.com/playground?demo=stage-first. The app follows once Chris picks. - Sep 26, 2026
Help: why a beat is silent
On Yui 0.3.2 the ring/silent switch mutes the looper and the drum pads. That was Chris's first try at a beat. The fix is on main and rides the next build. Until then, /help says to flip the switch and turn the volume up, and gives one line each on asking for a beat, tapping cells, the drum pads and Record, with a link to the music demo in the playground. A text-only change, so no screenshots. - Sep 26, 2026
Agents send a beat
Build 176 draws the looper and the drum pads, so channel guide v31 teaches every agent the two lines. A beat is one line: `loop 96 "Boom bap" p=x...x.x.|....x...|xxxxxxxx +play`, one string per row, x a hit, a dot a rest. Pads are `drums 2x2`, and `+record` sends a take back as a beat. When you tap Send, your version comes back to the agent in the same words, so it patches it in and saves it to your shelf. On three new eval cases the old guide scored 0 of 3 (a drum table in markdown, a tic-tac-toe game for the pads, a re-sent loop); v31 scored 3 of 3. Keys, chords, the tuner and the metronome join the guide as their builds land. Phones older than build 175 get the beat in words. - Sep 26, 2026
Yui 0.3.2 on the site: the release post and See it
Yui 0.3.2, build 176, is on TestFlight. The release post, Yui 0.3.2: ask any agent for a beat, leads with the looper and drum pads that now play in the app, then hold to reply, the quiet dot on the menu button, the working row that says what the agent is doing and how long it usually takes, and a what to try checklist you can tick. See it has a Yui 0.3.2 group with six entries from real simulator captures, and the music group's loop and drums now read as in the app. The roadmap says 0.3.2 is on phones and marks YUI-116 step 2, YUI-63 step 2 and YUI-107 shipped. The changelog and the board are synced to build 176. - Sep 26, 2026
It says what it is doing
Chris's words: "the agent sends a few words on what it is doing, with a small progress bar when it knows the steps." From build 176 (Yui 0.3.2) the working row under your message reads Reading your calendar, then Checking the weather, then Drafting the plan, with a thin bar in the agent's color and the seconds still counting. The reply clears it. It is never a bubble and never sends a push. The host writes the newest words onto your message while the turn runs, about once a second, and only to phones that draw them; older builds keep Pondering. Channel guide v30 tells every agent to do it in plain words, no ids or file names: the old guide sent none on a long turn, v30 sent three, two runs of two. - Sep 26, 2026
Short answers first
Chris, Sep 26: "this last full screen header had eight screens of basically nothing just to tell me that I'm up-to-date." The channel guide sent anything over about 50 words to a deck, so agents padded a yes into four pages and a go-ahead into eight. Guide v29 turns that around. The first line is the answer. A yes/no or status question gets one line or one card, never a deck. A deck needs three or more things to read, holds four pages at most, and drops any page that repeats the headline or says what happens next with nothing to act on. Two new eval cases replay the screenshot: the old guide failed both (49 words to say yes, a timeline for a go-ahead), the new one answers "Yes, this phone is on build 160, the newest. Your iPad is still on 135." A new page cap keeps the report cases at four pages; the old replies had five and six. Every agent on the Yui channel gets it on its next turn. - Sep 26, 2026
Keys and chords you can play in the app
Step 3 of the music tools. keys puts one octave and a bit on the phone. The scale lock is on by default, so keys outside the key are dimmed and make no sound, and nothing you play sounds wrong. Arrows move an octave up or down, a picker switches between six sounds (keys, pluck, bell, pad, bass, lead), every finger plays its own note, and sliding across the keys plays each one. Send hands the agent the notes you played. chords turns a key and a progression like I-V-vi-IV into one big button per chord, with the name large and the numeral under it, or takes chord names like C|G|Am|F. A tap strums it down, up or all at once, on the same clock as the looper and the pads. When an agent writes ~chords key=D, every chord moves to D and keeps its numeral. A test checks every numeral form in the spec in all 12 major and 12 minor keys. It rides the next TestFlight build. - Sep 26, 2026
Music screens agents can find
The six music presets were in the spec, but an agent looking for music found nothing. Now the library has five ready-made music screens, each a whole reply built from the presets: a practice session (tune up, a click, then a loop to play over), a chord chart for a song, a beat to jam over, a songwriting check-in and a scale warm-up. They sit on the music shelf of the library, drawn live and ready to open in the playground, and /api/library?q=music and the yui_library MCP tool return them, marked as coming to the app. The music page links each one. The line that teaches agents to reach for music is written and waiting in the channel guide: it goes live with the app build that draws the looper and drum pads, so no phone gets a screen it cannot play yet. - Sep 26, 2026
The working row says how long it usually takes
Chris, Sep 26: "Would be good if there was some expectation on how long it will take in the counter... similar to like when you install new software on an iPhone." The counter only counted up. Now the phone keeps how long each agent's recent turns took, from pickup to finished, and once it has three it says the usual range under the row: Usually 1 to 3 min. One odd long turn does not stretch it. Past the top of the range it says Longer than usual, and after two minutes that you can leave and the answer lands here. VoiceOver reads it too. - Sep 26, 2026
Music on the site: See it, and a Thought
The music tools are on the site the same day the mock started playing. See it has a Music group: the six instruments, loop, drums, keys, chords, tuner and metronome, each drawn live from its one line, with a link to play them all in the playground. A new Thought, Yui for musicians, says why a chat app grows a looper and a tuner, what one line gets you, and what ships in the app next, step by step. The music spec now has its own place under Developers. - Sep 26, 2026
Yui for musicians: the plan, and a mock that plays
Chris wants Yui to be a musician's best friend, so music is now the app's main focus. Step 1 is the plan and a working mock. Six new instruments, one line each: a step looper (loop), drum pads (drums), an easy keyboard with a scale lock so nothing sounds wrong (keys), big chord buttons from a key and a progression like I-V-vi-IV (chords), a tuner for guitar, ukulele, bass or any note (tuner), and a metronome. An agent can write a beat, you edit it, and Send hands the pattern back so it can be saved. The agent can change a playing instrument live, like ~chords key=D. All six share one sound engine with 21 voices, rebuilt from the synth recipes behind the brag film, and agents name sounds by word (sound=pluck), never by file. The spec covers the research: the apps people love, iOS audio and latency, how the tuner hears pitch, MIDI and Ableton Link. Every hub parser reads the new lines. The playground plays all of it in your browser today, tuner included. The app gets the engine, the looper and the drum pads next. - Sep 26, 2026
Agents make their own flows: variants
An agent can now make its own version of a saved flow without copying it. It names the flow it starts from, gives the new one a name, and says only what changes: drop a step, reword one, add one after another. Scout turns the client website intake into a restaurant intake in six lines: ask what kind of place, drop the pages and product questions, add the menu and online orders. The phone keeps a variant as its base plus those lines, so fixing the base fixes every variant made from it, and flow restaurant-intake runs it again later. The JavaScript, Python, Kotlin and Rust parsers read variants and pass the same 23 new vectors, 683 each. The library lists the restaurant intake under the website intake with its chart, the changed steps dashed, and /api/library finds it. Try it: /playground?demo=flow-variant. Spec: /developers/flows#9-variants. The app runs flows next. - Sep 26, 2026
Yui is in alpha: a Thought on how the MVP got done
A new Thought, Yui is in alpha, tells the story behind today's MVP call. It walks the six steps the MVP promised, each with a real capture: install from the public TestFlight link, Sign in with Apple, pair your own agent with a six-digit code, screens back that you can change your mind on (a live choose screen you can tap), a push when your agent answers, and deleting your account from Settings, with a fresh shot of the delete sheet. Then four days from the first TestFlight build on Sep 23 to alpha on Sep 26, drawn live as two stats (34 builds) and a timeline. It says plainly what alpha means for a stranger: Yui is the screen and you bring the agent (Hermes, OpenClaw, MCP, A2A, a webhook or a local model); there is no hosted agent yet. It ends with the queue: the stranger acceptance run first, then flows in the app, group threads and a working row that says what your agent is doing, plus one line to use to earn. It is in the RSS feed and has its own share preview. - Sep 26, 2026
The home page has its hero video
The stand-in is gone: the top of the home page now plays Meet Yui, a generative user interface, the new launch video. It shows the video's preview and a play button, and YouTube's player loads only when you press play, from youtube-nocookie.com, so the home page stays fast and sets no YouTube cookies for people who never watch. The privacy page says what the video loads. - Sep 26, 2026
Flows and the library: a Thought on screens any agent can run
A new Thought, Flows and the library, explains what shipped on the web today. A flow is a saved series of screens written in Mermaid, so the same text is a chart a person reads and screens the phone runs. The post opens with the client website intake running live, step 1 on the phone, then shows it as a chart on the library page. Any agent runs one by name (flow website-intake), and agents find one by what they want to do: /api/library?q=client+intake on the web, yui_library over MCP. The last part is marked as next, not shipped: the iPhone app runs flows, then My flows, with the playground mocks of both. It is in the RSS feed and has its own share preview. - Sep 26, 2026
The MVP is done: Yui is in alpha, and use to earn begins
Chris called the MVP done on Sep 26, and Yui is in alpha: open to anyone with an iPhone on iOS 26 through TestFlight. The site says so everywhere, and every call to action reads Download on TestFlight. The home page is rebuilt around it: a big horizontal video at the top (a stand-in until the new hero video is ready), two buttons, Download on TestFlight and Star on GitHub, and eight of the best screen recordings from around the site, each playing as you scroll past. A short new section teases use to earn: the people who use Yui early, and help build it, should earn a stake in it. The thinking is in a new business doc, Use to earn. The record behind it is a private ledger, designed and tested: facts about use and contributions back to day one, never what anyone said. It starts recording when Chris switches it on. No token exists and nothing is for sale. - Sep 26, 2026
Outside agents draw like the app
The Yui MCP server checks every screen an outside agent sends with its own copy of the Yui Lines parser, and that copy had fallen behind the app and the site. A doing line, the working row that says what the agent is up to, came back as an unknown preset. The copy is current again and deployed, and the live test sends a doing line through yui_show and gets it back accepted (114 of 114 checks). So it can't slip again, the app repo's checks now compare the copy with the site's parser on every push and once a day, and fail when they differ. - Sep 26, 2026
Agents can look up the library
The library at yuigui.com/developers/library now answers agents too. Ask /api/library?q=client intake and the client website intake flow comes back first, with the line that runs it and its Mermaid. Every entry has a few plain intent phrases ("get a client's website brief", "ask a yes or no question"), and one search ranks them the same way on the page, at the endpoint and in the new yui_library tool on the Yui MCP server. It is plain word matching, no model behind it. The channel guide, v28, names the five saved flows and says to send one instead of building a plan when it fits. Tested on a client who wants a bakery site: the old guide built ten questions by hand, the new one sent flow website-intake. The library gained the shapes diagram tiles it was missing, and a check now runs before every site build, so a screen can no longer ship without its tile. Also fixed: the Rust parser now lowercases a shape's kind like the others, and a new check holds all four hub parsers to it. - Sep 26, 2026
Speed numbers are stored once
The first speed numbers from a real phone showed one batch stored twice, 19 seconds apart, across a relaunch. The phone keeps a batch until the server answers, so a send that lands just as iOS puts the app away goes again on the next launch. Now every row gets its own random key when it is made, kept with it on the phone, and the server skips a key it already has: the resend still answers OK and nothing is stored twice. Proof: the live table tests (91 of 91, 11 new), the app's own tests (12 of 12) and a simulator run where the app sent 3 stored rows again plus 1 new one, and only the new one landed. No screen changes, so no screenshots. It rides the next TestFlight release. - Sep 26, 2026
The site says it plainly: Yui is in public beta
Yui is in public beta on TestFlight, but parts of the site still read like a private beta. The form at the bottom of every page said the beta was by invite, and called the public link a way to skip the line. Now every call to action leads with the public TestFlight beta: the home page, the band at the bottom of every page and Get Yui. The form stays, renamed Ask for a hand, for people with no agent yet, who want help connecting one, or who would rather Apple email them the invite. The privacy page says the same. - Sep 26, 2026
Flows run the same in every parser, and My flows has a first look
Flows are saved series of screens written in Mermaid, with branches. Until today only the JavaScript parser read them. Now the Python, Kotlin and Rust parsers do too, and all four pass the same 36 flow vectors: the three starter flows end to end, conditions on edges, bad Mermaid, cycles, a flow in the middle of a reply, and streaming. The spec now says what the phone keeps for each run and how it picks up after the app is closed, so nothing is asked twice and the answers are sent once. The playground has a first look at My flows: your saved flows in a list, Run to answer one, and the path it took, with the branch each answer picked. The app runs flows next. - Sep 26, 2026
Help catches up with the app
The Help page (/help, the app's support link) was checked against the app on main, answer by answer. Two answers named steps that moved: a pairing code that ran out now says tap Get a new code, and the notifications switch now lives in the agent's menu, under Controls, then Name, look and notifications. Five new answers cover what changed this week: hold a message to reply (swipe to reply is gone, a sideways swipe moves between screens), what the menu button and its four tabs are for, what the dot on it means, talking instead of typing, and what Update Yui to see this means. Sending feedback now says where to copy your exact build: Settings, About this build. On Developers, every spec page from Sep 25 and 26 (key vault, widgets and Siri, the model on the phone, encrypted sync, the starter agent, group threads, the release timeline) is linked once, and the Yui Lines line now points at the working row, where an agent says what it is doing. - Sep 26, 2026
Your agent says what it is doing
While an agent works, the working row says Pondering and counts the seconds. Now the agent can say what it is actually doing, in a few plain words, with a thin bar when it knows how many steps there are: doing "Reading your calendar" 1/3. Each new line replaces the last, doing off puts the working word back, and the reply clears the row. It never shows as a message, and in a group each agent's row shows its own words. The line is in the Yui Lines spec and read by the JavaScript, Python, Kotlin and Rust parsers, with 24 new conformance vectors. The playground plays a whole turn: the row steps through three updates with its bar, then the answer lands. The app draws it in a later release; until then phones keep Pondering, and agents are not told about it yet. - Sep 26, 2026
Get Yui shows the app and every way in
The Get Yui page (/start) caught up with the app. The three Hermes steps stay first, now with pictures from build 162 on the simulator: the pairing code screen, the connected screen and the agent's first screen, light and dark. Under them, Not on Hermes? gives each other way in its own card with one command or URL and a link to its spec: OpenClaw, any agent that answers an HTTP POST (the webhook bridge), Claude and ChatGPT (the MCP URL as a custom connector), Claude Code or Cursor, an A2A agent, and a model on your own machine. Every command was checked against its spec and the app repo. The page also says it plainly: a new account has no agent until you connect one, and TestFlight lists the app as Yui Gui. - Sep 26, 2026
Yui 0.3.1 on the site: the release post and See it
Build 160, Yui 0.3.1, went VALID on TestFlight, and the site caught up the same hour. A Thought, Yui 0.3.1: three notes from the feedback button, tells what changed: what you were typing stays put, a lesson is one deck you swipe (with the lesson drawn live in the post), and an ask you answered leaves the war room at once. See it has a Yui 0.3.1 group with each one and its own share link, and the roadmap says 0.3.1 is on phones. Voice and the memory fix now read as shipped in build 155. - Sep 26, 2026
Hold to reply, no more swipe
Chris, Sep 26: "We already have when I tap and hold this the option to reply so I wanna get rid of this swipe to the left to reply because it's blocking other UX motion gestures." Swipe to reply is gone. Holding a bubble or a card still opens Reply, Copy, Select text and the reactions, and tapping the quote on a sent reply still scrolls back to the original. A sideways drag now always switches screens, on a bubble or beside it, and scrolling up and down is untouched. The reply test now checks a left swipe on a bubble pages to screen 2 and sets no quote, and replies to an old message through the hold menu; it passes in light and dark. The channel guide (v27) tells agents to expect hold to reply only. It rides the next release. - Sep 26, 2026
Sync, decided: not in v1
Agent tables live on your iPhone. The question was whether Yui v1 should copy them to a second device. The answer is no: v1 is one iPhone, and the real risk, a new phone with an empty workout log, is covered by keeping the tables in the phone's own backup. The design is written anyway, for the day a Mac, iPad or browser version of Yui arrives. Sync is off by default and needs no new account. Only agent tables sync, never chats or keys. Every change is sealed on the phone, and Yui's server holds boxes it cannot open: no table names, no columns, no values. A second device joins by scanning a QR code from Settings, and you confirm it with Face ID. Two devices editing the same row agree without asking you, and the same agent reply seen on two devices makes one row, not two. Removing a device makes a new key, and turning sync off deletes the server's copy at once while every device keeps its own tables. No new Yui Lines word. Try it in the playground; five questions for Chris end the spec. - Sep 26, 2026
The war room, stripped down
Chris, Sep 26: "the war room is an absolute mess. I respond to cards and they don't go away, it's long as can be and there's a big library at the bottom." Screen 2 now holds four things: one folded status line (the build on your phone, what waits on main, where the release stands), at most three asks with their context above the buttons, one Now and next timeline with a row per busy lane and the queue you can drag, and one link to the board. The release checklist, commit list, builds, speed tiles, feedback cards, MVP stat and eight link cards are gone; the page went from 56 lines to 15, about a third of its old height. Rows read as plain words, never a card id plus a raw comment. Answering an ask now redraws the war room right after the tap, so the card leaves at once. 22 war room tests and 22 plugin tests pass. - Sep 26, 2026
Designed in the open: a Thought on how Yui designs in public
A new Thought, Designed in the open, tells how a Yui feature starts: a spec page and a mock you can tap in the playground, before any app code. It walks the five designs that went up today (the starter agent, widgets and Siri, the model on the phone, the key vault, a lesson as one deck), each with its playground mock and links, and the rules they share: keys never in chat, the phone's model never speaks as an agent, the agent never sees a key. It ends with an invitation for agents to pick one up. - Sep 26, 2026
See it catches up to build 155
See it has a Build 155 group now, above Build 148, with what reached phones this morning: talk to your agents hands-free and read the answers (YUI-14), a full screen that puts the keyboard away, plan questions in the middle of the page with no card inside it, and a Yui that holds less in memory (YUI-100). The voice, keyboard and question shots are the simulator captures from each change, before and after where there was one. Memory is a live screen instead of a screenshot: three stats and a chart drawn from Yui Lines, peak down from 243 MB to 203 MB, launch from 137 to 124, and no new leaks. Each entry has its own share link. - Sep 26, 2026
A lesson is one deck
Follow-up to Chris's Sep 26 feedback: "I want all that to be in one experience." A deck page can now hold a diagram, a formula, a chart, a big number or a calculator as its picture, the same way it already held a sketch. So a lesson is one swipeable deck: an idea per page, each with its picture, a quiz, and the sliders on the last page. The change is in all five parsers (JavaScript, Swift, Python, Kotlin, Rust) with new conformance vectors, the site's playground and the app. A slider drag moves the slider, not the page. Phones on older builds still get the pieces laid out on one full screen, so nothing breaks before the update lands. The channel guide now asks for one deck. - Sep 26, 2026
Every link on the site resolves
A built-in-public site with dead links reads as stale, so now a script checks. It crawls all 273 pages in the sitemap and tries every link, image, clip, poster and #anchor on them, about 1,300 in all. Anything broken fails the run with the file and line it came from: a progress entry, See it, the roadmap or a spec. The first run found 7 dead links, all between spec pages: a link written as FLOWS.md works on GitHub but pointed nowhere on the site. Spec pages now send those links to the right page, and the check passes. Links to other sites are tried too and reported, but never fail the run, since other sites go down. This card is a script, so there is nothing new to see. - Sep 26, 2026
A key vault, planned
Some things agents do cost money at another company: an image from fal, a model through OpenRouter, Anthropic or OpenAI, a run on Replicate. Today paying for that with your own account means a key in a file on the machine the agent runs on. The plan puts your keys on your iPhone instead. A key goes in one way only, Settings > Keys: paste it or scan it off your computer screen, never into a chat or an agent's form. It stays in the Keychain on this phone, and after you save it you only ever see its last four characters. When an agent needs one it asks through its host, and Yui draws the ask itself, so no agent can fake it: Penny wants to use your fal key to draw your agent avatars, with Allow, Allow once and Don't allow. Yui's hosted connector gets the key sealed and makes the call; the agent gets a handle and never sees the key. Every key has a monthly cap, every call lands in an activity list, and the drawer shows what each agent may use, with Revoke. No new word in Yui Lines. Try it in the playground with placeholder keys. Seven questions for Chris end the spec; building it natively is the next step. - Sep 26, 2026
A lesson is one screen
Chris, Sep 26: "that compound interest full screen looks pretty good, but then there's a bunch of just broken out chat bubbles that live before it. I want all that to be in one experience." Agents now put a lesson on one full screen: the diagram, the formula, the chart, the result, the pages and the sliders, in reading order. The chat keeps one line and one chip that opens it again. The channel guide says it in one rule, and a new eval case checks every piece lands on the full screen. The old guide scattered them (0 of 1), the new one passes (1 of 1) with no slip on plain answers, diagrams or reports. It is live for every agent now, with no app update. Next, a deck page will hold these pieces, so a lesson can be one swipeable deck. - Sep 26, 2026
Faster pages, and every one clears 90
A speed and accessibility pass on the seven busiest pages, measured with Lighthouse on a phone profile. Before: the home page scored 80 for speed, See it 67 and the roadmap 71; the rest were 94 to 100. After, taking the middle of three runs: home 100, See it 99, roadmap 99, Shipped 98, Developers 100, Get Yui 100, playground 96. Accessibility went from 95 to 98 on four pages to 100 on all seven, and Best Practices stays at 100. What changed: the analytics tag waits until the page has loaded, the live phones fetch their drawing code only when one scrolls near, the videos on See it load their cover frames as you reach them, the logo is a 6KB image instead of 27KB, and the row of section links under the menu no longer downloads every page in the section up front. For accessibility: headings now step down in order, the big coral numbers on the home page use the darker coral that reads on cream, and screenshot thumbnails keep their size before they load, so they are easy to tap. Nothing you see moved. - Sep 26, 2026
What you were typing stays put
Chris, Sep 26: "I was writing in the text box and then a new answer came in and took over the screen with a full screen. But then when I came back my query was lost." Each agent's thread now keeps its own unsent words on the phone, saved as you type and cleared when you send. A reply going full screen, switching to another agent, leaving the app or closing it all leave the words where they were. A new test types, lets the agent open a full screen, closes it and checks the words are still there, then checks each agent keeps its own draft across a relaunch. The composer, keyboard, full screen and typing speed tests still pass. It rides the next release. - Sep 26, 2026
The model on the phone, planned
Newer iPhones carry a language model of their own, and apps can use it for free, with nothing leaving the phone. The plan gives it four small jobs in Yui. When an agent asks something in words, two or three reply chips show under the screen; a tap sends one as your message. In a group, a pill over the composer says who your message is for (To Sage, sleep and calm), and Change picks someone else. A reply that is all screen gets a real line on the lock screen instead of "Coach has something for you in Yui". With no signal, a typed ask gets a draft checklist or timer, marked as a draft, while the message waits for the agent. It never answers as an agent and never sends without a tap. Phones without Apple Intelligence keep the app as it is today. Try all four in the playground, with a switch to turn the model off. Seven questions for Chris end the spec; building it natively is the next step. - Sep 26, 2026
Widgets and Siri, planned
Today an agent's screen lives in its thread: to check your weight trend or tick off today's list you open Yui and find it. The plan takes Yui out of the app. A widget is a saved screen you pin to the home screen or the lock screen: a stat with its trend, a checklist, a timer. The agent keeps it current with the same patches it already sends, and Yui's relay tells the widget to redraw with a WidgetKit push, so it never polls and stays inside Apple's budget of 40 to 70 refreshes a day. Tick a row or start the timer right on the widget and the agent gets the same event as a tap in the thread. Siri gets three things to do: ask an agent, show a saved screen, start a timer, and one of them can live on the Action button. No new word in Yui Lines. Try the home screen, the lock screen and Siri in the playground. Seven questions for Chris end the spec; building it natively is the next step. - Sep 26, 2026
See it catches up to build 148
See it has a Build 148 group now, above Yui 0.3.0, with what that build added to phones: agent controls in the drawer, talk about a setting (moved up from the app group, same link), and a timeline row that moves in place. The timeline shots are new captures from the iPhone simulator on today's app, before and after one patch line: the running row turns done where it stands and the Now line moves down, with the rows kept tight at the top. Faster send and drawer taps joined Taps answer at once, since they are the same kind of change. Each entry has its own share link. - Sep 26, 2026
A plan's question sits in the middle of the screen
Chris, Sep 26: "I don't see a reason that this card should be up towards the top... prioritize vertically centering, and I'm not even a huge fan of cards within cards." A plan step like a slider question sat in a bordered card pinned under the progress bar, with the rest of the screen empty. Now a short step sits centered between the progress bar and Back/Next, and it has no card of its own: the page is the card. Long steps still start at the top and scroll. In the chat, a question keeps its card. A new test walks a page, a slider, a choice, a multi-pick and a form in light and dark, checking the question is centered and no card is drawn around it. It failed on the old code and passes now. It rides the next release. - Sep 26, 2026
A starter agent, planned and priced
Today someone who downloads Yui with no agent of their own gets an empty list. The plan to fix it is written: pick Coach, Basil, Penny or Quill on first launch and it answers right away, no computer needed. It runs on Yui's hosted connector beside the relay, on the person's own OpenRouter account first (one sign-in, no key to paste), with no tools that act on the world, caps per turn, per person and for the whole host, and a kill switch. The cost model prices a turn at about a tenth of a cent on a cheap model and one cent on a frontier one, and a month at 100 to 10,000 people. It ends with five questions for Chris: who pays, which model, how big a free tier. Try the first launch in the playground. Building it needs a Cloudflare account and spend, so that waits on Chris. - Sep 26, 2026
Talk to your agents hands-free, read the answers
Chris, Sep 24: "human voice in, text out, fast and smooth." Tap the mic once and Yui keeps listening between turns. Your words show as you say them, a short pause sends them, the answer comes back as text, and the mic opens again once it lands. The bar says where you are: Listening, Sending, on it, Your turn, or Paused. One button stops it. A call or an alarm pauses it and it picks up after; leaving the app stops it. Holding the mic still works the old way. Speech now runs on Apple's new on-device transcriber, and the audio never leaves your phone, only the text. Measured on the same spoken clip: the final words land about 90 ms after you stop talking (under 600 ms the first time). While an answer is owed, Yui checks for it every 350 ms instead of every 1.5 s, so it shows up sooner. Each agent can start with typing or talking, in its settings. It rides the next release. - Sep 26, 2026
A full screen takes the keyboard down with it
Chris, Sep 26: "if I ever open a full screen, I need the keyboard to go away automatically." He was typing, opened a diagram full screen, and the keyboard stayed up over the bottom third of it. Now any full screen drops the keyboard as it opens: a reply the agent opens on its own, a pill in the chat, a deck, a plan, a picture, the camera. Closing it leaves the keyboard down, and what you typed is still in the field. A new test types in the chat, opens a full screen and checks the keyboard is gone. It rides the next release. - Sep 26, 2026
Yui holds less in memory, and a test checks it before every release
Chris, Sep 25: "I think there must be memory leakage all over the place." We measured first. A scripted session on the simulator opens five agents with 486-message threads, galleries, decks, games and screens 2 to 12, goes full screen, then idles, while the app logs its memory every second and a leak checker runs at the start and the end. The big leak was the deck you swipe inside a message: every one that scrolled out of the thread left its pages behind, about 1,550 leaked objects over one session. It pages with a plain scroll now, and the session ends with zero new leaks. Pictures used to decode at full size for as long as their message lived; now each is decoded at the size it is drawn and shares one cache with a size limit that empties when the phone runs low. Videos let go of their player when they leave the screen, a long thread drops the older rows it drew once you are back at the bottom, and a few lists that only ever grew are gone or trimmed. The session's peak fell from 243 MB to 203 MB and launch from 137 MB to 124 MB, with taps and scrolling as fast as before. The same session now runs before every release and fails on new leaks, growth or a peak over 300 MB. It rides the next release. - Sep 26, 2026
A timeline opened on its own sits at the top
A saved screen holding only a timeline, opened full screen from the shelf, used to spread three rows over the whole phone: big empty gaps, and the running row's highlight about 400 points tall. The rows' dot column was flexible, so they soaked up the extra height the full screen hands its content. Now each row keeps its natural height and a timeline starts at the top, like a page you read down. A card, timer or stat alone still sits in the middle. The folded 'earlier' button's line was fixed the same way. It rides the next release. - Sep 26, 2026
Agent tables in the Python, Kotlin and Rust parsers
The web half of step 2 for agent tables. The Python, Kotlin and Rust parsers now read table create, put and query, and each carries its own copy of the store: upsert by key, rows that append with no key, today and now dates, where filters, sort with empty cells last, group and totals. The table vectors moved out of the JavaScript-only file, so every runner in the repo checks all 36 of them against its own store: 591 of 591 pass in Python, Kotlin and Rust, and JavaScript still passes all 612. The app half, the same store in SQLite on the phone, comes next. A spec and parser change, nothing new to see. - Sep 26, 2026
Every agent can put a picture on a page
The channel guide every agent reads on Yui (v23) now teaches the page picture: in a walkthrough deck or plan, a small drawing right after a page is that page's picture, the before struck out and the after highlighted. Phones have drawn it since build 104; 0.3.0 (build 138) has it. One example line costs about 93 tokens a turn. Scored on a new eval case, walk me through three changes with a before and after for each: the v22 guide sent loose drawings with no pages, v23 put one on each page. A first draft let one run put a moving diagram inside the deck, which ends it; one clause fixed that, and the report, drawing and plain-answer cases all still pass. Published to every agent on Yui and sent for real: Yui walked Chris through it as two pages, the first with its drawing. - Sep 26, 2026
Talk about a setting, built: change your agent by talking
Step 2 of 2. Every item in Controls (the personality, a memory, a skill, a schedule, and the model card, read only) now has a Talk about this button. It closes the drawer and pins the item above the composer as a chip: tap it to see the item, x to take it off, and a second item replaces the first. Say what you want and your message goes out with a short line naming the item, never its text. Your Mac puts the item into the agent's turn itself, with any line holding a key hidden. The agent proposes, it never writes: your Mac checks the change with the same rules as a hand edit and draws it in the chat as a before and after, with Apply and Keep it as is. Apply writes it with no agent turn, keeps the old copy and logs it, and a card says it is done. If the file changed on your Mac meanwhile, nothing is written and Ask again gets a fresh proposal. A memory with a key in it can be talked about but never changed from the phone. Only the owner can do any of this. Tested end to end on the simulator over the live relay: a new line in SOUL.md, one Keep it as is, a terminal edit mid-proposal, a memory forgotten, a schedule moved to 7:30, and nothing key-shaped in the messages. Rides the next release. - Sep 26, 2026
The app moves timeline rows in place
Step 2 of 2. The iPhone app now reads `kind=` on a timeline row patch: `~rel-YUI-202 kind=done` turns a running card done where it stands and the Now line moves past it, on the page and in its saved copy on the shelf. The Swift, Python, Kotlin and Rust parsers all learned it, so the 12 test vectors run in every language now (545 each, 602 in JavaScript). The war room uses it next: once the phone is on build 143 or newer, a card moving on the board reaches the release panel as one quiet patch line instead of the whole page and a push. It rides the next release. - Sep 26, 2026
Yui@home runs every week: a routine for each agent
Step 2. /contribute now has a weekly routine for Claude, ChatGPT Codex, Google Jules, Cursor, GitHub Copilot and any agent that can run the GitHub CLI. Paste one in, and your agent takes one open card a week, stays inside a budget you pick, and stops when nothing is open. We checked every setup against that platform's own docs today, and the links sit under each prompt. Our finding: none of them documents forking a repo you don't own. So the hosted routines work in your fork and hand back a one-click link for the pull request, and the Actions recipe does the whole thing with your own token. Every pull request now runs the same checks in both repos (conformance vectors, bench tests, the site build, the Swift parser) with no secrets. CI, signing and release files need the owner's review, and nothing merges on its own. When a pull request titled with a card key merges, the card closes and leaves the backlog by itself. Your GitHub handle goes on this page only if you tick Credit me. - Sep 26, 2026
A timeline row can move without resending the page
Step 1 of 2. A patch can now change a timeline row's kind: `~rel-YUI-54 kind=done` turns a running card done in place, and the Now line moves past it. Before, a card changing status meant sending the whole page again, which jumped the screen and pushed a notification. Now it is one quiet line. The row keeps its place and its id. Written into the Yui Lines spec and the release panel spec, with 12 new test vectors, and live in the playground: pick the timeline sample and press Send on the agent line. The app learns it in step 2, then the war room's release panel switches to it. - Sep 26, 2026
Agent controls, built: your agent's settings in the drawer
Step 2 of 2. The drawer's Controls tab now talks to the Mac the agent runs on. Read and edit its personality file, forget one memory, switch a skill off and on, pause a schedule, resume it or run it now, and see its model and channels. A change lands on the Mac in about a second, with no chat turn, and the agent hears about it in one line on its next turn. Every delete asks first. If the Mac changed the same thing since you opened it, you see both versions and pick one. A line with a key in it never leaves the Mac: it shows as hidden and that item stays read only. Only the owner sees Controls; someone an agent is shared with never does, and the relay refuses it too. Rides the next release. - Sep 26, 2026
Yui@home: the agent-ready backlog is live
Lend your agent to Yui now works end to end on our side. Cards marked agent-ready on our board are exported to /contribute and to /contribute/backlog.json, each with its goal, done-when lines and test commands. An agent claims one by opening a draft pull request titled with the card key; a claim with no push for a week lapses, and the first pull request merged wins. The board stays the one source of truth, with no second list on GitHub. Both repos got CONTRIBUTING-AGENTS.md and AGENTS.md, the rules for agents: one card per pull request, tests pass, no secrets, CI or release scripts. Feature requests get a template in docs/specs. Three cards are open to start: the browser's first pull request, the Mac app's first pull request, and a Yui Lines parser in Go. Next: a weekly routine prompt for each platform. - Sep 26, 2026
The release panel tops the war room, live from the board
Step 2 of the release timeline. Swipe to screen 2 in Yui's thread and the first thing you see is where the next version stands: cards landed, what is on main but not on TestFlight yet, and one rail from the first card to the what-to-try link. It is the same lines the site draws, made by the same code from a fresh board export, so the phone and yuigui.com never disagree. No agent writes it. The board sync refreshes it when a card or a build moves: a changed count or title patches in place, with no page jump and no push; a card changing kind or the scope changing sends the page again. Overnight only the quiet patches go out; anything that would buzz the phone waits for 8 in the morning. - Sep 26, 2026
Talk about a setting, designed: change your agent by talking
Step 1 of 2. Chris, Sep 25: "Would it be cool if I could just bring in a certain setting or piece of markdown or whatever setting the agent has into context and then chat about it and have it updated itself." Every item in Controls (the personality, a memory, a skill, a schedule) gets a Talk about this button. The chat opens with that item as a chip above the composer. Say what you want, and the agent proposes the change as a before and after: lines it would drop struck out, new lines highlighted. One tap applies it, through the same path a hand edit in Controls takes, so your Mac checks it, logs it and keeps the old copy. Keep it as is writes nothing. Keys never reach the agent, and only the owner can do this. The spec is at /developers/talk-about and the mock runs in the playground (demo=talk-about). Step 2 builds it in the app, after Controls itself. - Sep 26, 2026
Agent controls, designed: change what your agent is made of
Step 1 of 2. Chris, Sep 25: "I definitely want just basic crud access to a lot of this stuff." The drawer gets a Controls tab for the agent you are talking to: its personality, its memory, its skills, its schedules, and which model and tools it runs on. Edit the personality and save, forget one memory, switch a skill off or delete it, pause a schedule or run it now. A change goes straight to the machine the agent runs on, with no chat turn in between, and every delete asks first. Keys and tokens never leave that machine; they are not even listed. Only the owner sees Controls, never someone an agent is shared with. The spec is at /developers/controls and the mock runs in the playground (demo=controls). Step 2 builds it in the app. - Sep 26, 2026
Taps answer at once, and a long thread scrolls smooth
Chris, Sep 25: "I am not getting ultra smoothness when I click around. Things feel delayed. Very efficient like Telegram." We measured first, on a 500-message thread in the simulator. Opening it took over three seconds, a tap on a choice took more than a second to show, and every change to the thread redrew all 500 rows. The fixes: each row now knows when it hasn't changed and skips its redraw; what the thread reads on every pass (which rows show, which bubble wears the reaction, the pages) is worked out once per change instead of once per row; markdown is parsed once per message; a long thread draws its newest 60 rows and adds more as you scroll up; and dragging the drawer only redraws the drawer. The look is the same, light and dark. Warm thread open went from about 3 s to under 350 ms, a choice tap from 1.4 s to 58 ms, a reaction from 300 ms to 29 ms, a sent bubble from 2.4 s to 145 ms, and scroll hitches from 63 to under 2 ms per second. Real phone numbers come in through the app's own perf log once the build is out. Rides the next build. - Sep 25, 2026
The build-ready message reads like a changelog for people
The message that says a new build is ready used to read like a git log: five pages, one per commit, full of ids. It now finds each change's own entry, titles each page with what a person can do, and folds the builder-only work into one last page. For build 96 the deck went from five pages of code talk to three pages: the hold menu, markdown, and builders. There is no screen to show, the message is text. - Sep 25, 2026
A deck in the chat is as tall as its page
Chris, on build 96: "there's too much random white space here and I would love for this component to look a little more similar to how it does on the full screen version." His screenshot was an inline deck on a four-line page with half a card of nothing above the arrows. The pager in the chat had a fixed height of 380 to 440 points, whatever the page said. Now every page is measured before it shows, and the card is as tall as the page showing, up to a cap past which a very long page scrolls inside it. It grows and shrinks with a spring as you page, and the arrows sit right under the last line. The pages themselves are drawn the way full screen draws them: the same big headline, the quieter body and the numbered points. A new test pages a four-page deck with a short page, a long one and a list, in light and dark, and checks the gap above the arrows on every page and that the card grows for the long page and shrinks back after. Rides the next build. - Sep 25, 2026
Full-screen pages never come up blank
Chris, on build 96: "Sometimes I come to these pages and they don't come back." His screenshot was a full-screen deck with its page bars and arrows around an empty page. A story page's words waited for a signal that the page had arrived before they came on, and the paging view does not always send it. Now the page showing always has its words; the signal only decides which way they slide in from. A new test pages a deck to its end, opens it full screen, closes it, opens it again and swipes and taps both ways, checking the title and body are on screen every time, in light and in dark with Reduce Motion. Rides the next build. - Sep 25, 2026
Typing keeps up, even on a long thread
Chris, on build 96: holding backspace went slow, and a double space was slow to make the period. The cause: every key you typed made the whole chat redraw itself, every message above included. Now the words you type belong to the composer alone. A key redraws the text field and the little / and @ hints, and nothing else; the Send button swaps in on your first letter without touching the thread. On a simulated thread of 241 messages with cards in it, a key used to take 177 ms to show (375 ms at the slow end) and a fast run of backspaces lost 34 of 49 presses. Now a key shows on the next frame most of the time, the slow end is 62 to 113 ms, and every press lands. The chat redrew 33 times while typing before, zero times now. Rides the next build. - Sep 25, 2026
The MCP server and Telegram read Yui Lines like the app again
Two copies of the Yui Lines parser had gone quietly stale. The MCP server that lets Claude, ChatGPT and other MCP hosts put screens on your phone, and the Telegram renderer, each carry a copy of the site's parser. When agent tables and app restyles arrived, the parser split into three files, but the scripts that copy it still took one. So the MCP server refused query, put, theme app and the new shapes diagrams as unknown lines, and Telegram pushed them all behind Open in Yui. Both copy scripts now follow the parser's imports and bring the whole set, so the next file it grows comes along on its own. The MCP server is redeployed and its live test, 106 of 106 checks, now sends a theme app, a table, a put, a query and a shapes diagram in one screen and sees them accepted. Telegram draws a shapes diagram as words: the title, the labels in order with arrows between them, and the caption. A query opens in Yui, since the tables live on the phone, and table and put lines send nothing. 73 of 73 Telegram checks. Nothing changes in the app, so no screenshots. Spec: /developers/telegram. - Sep 25, 2026
Shapes that move
Chris, on build 96: generated pictures look fine but cost compute for every little idea; he wanted simple vector drawings that show a complex idea fast, in the chat with a caption. Now an agent writes a few lines and the phone draws a small diagram: circles, boxes, pills, dots, soft blobs, labels, lines, arrows and curves. They come on one after another in the order of the lines, drawing themselves on, springing up, gliding, or gently pulsing on the part that matters, then a caption says what it means. With no positions they line up in a row and the arrows find their ends, so a flow is five short lines. Colors come from the agent's look, Reduce Motion shows the finished drawing, and nothing is rendered off the phone. Agents learn it in channel guide v22: asked how a heat pump works, the new guide drew it; the old one wrote a paragraph. Live in the web playground; the iPhone draws it on main and reaches the phone with the next build. - Sep 25, 2026
The release timeline, live from the board
Where the next version stands used to be a list Yui typed in chat, out of date by the next card that moved. Now it is built from the board. The board export carries the release: the open YUI-SHIP card, or the last one that landed, and the cards it waits on. From that and the build list, one panel: how many cards landed, the cards done, running or queued, the four ship steps (tests, one upload, VALID, what to try goes out), and everything on the app's main branch since the last TestFlight build. Right now it shows 0.2.0 shipped as build 122 and the changes on main for the next one. Try it at /playground?demo=release, or from the tile on Builds; it redraws with every board sync. How it works, and how it will patch in place on the phone with no agent turn, is in the new spec at /developers/release. The phone side is YUI-105: the panel at the top of the war room. - Sep 25, 2026
Yui now times itself: speed numbers from real phones, every day
The speed budget written earlier today is now measured. On the phone, nine moments are timed from your tap to the frame that shows the answer: a key appearing, your bubble after Send, an agent's message landing, a page swipe settling, full screen opening, a thread opening (first and later), launch and coming back. Each shows by name in Instruments and is timed on the phone's own clock. Memory is sampled every 30 seconds, and Apple's daily MetricKit report adds hangs, scroll hitches, memory peaks and crash stacks. It all travels as numbers only: no message text, no names, nothing you wrote. A new table, yui_perf, keeps each person's rows to themselves and their own agents, at most 500 a day, gone after 90 days. Yui (the agent) reads them into a daily report: p50 and p95 against the budget, what got slower than the build before, and the worst hang stacks, matched to code. The war room has a Speed panel under Builds (the shot uses sample numbers until real ones come in), and the morning briefing gets one line only when something got worse. Test builds have a Speed switch in Settings that shows the last keystroke time and the frame rate. What the build taught is in section 10 of the speed budget. Rides the next build. - Sep 25, 2026
Meal photo to macros, in the playground
Snap a meal and the agent answers with screens: the photo with what it sees, a calorie guess with one plain line on how sure it is, four tiles for calories, protein, carbs and fat, and a form to fix the portion. Save writes the meal into the agent's meals table and shows today's totals, which redraw with every meal after. No new words: it is camera, image, stat, form and agent tables in two replies. Try it at /playground?demo=meal with one of three sample photos (CC0, no people); the stand-in agent is a script, so a photo from your own camera gets stand-in numbers. The flow, the confidence rules and where the photo goes are in the new spec at /developers/meal. The app side is YUI-103, after agent tables reach the phone. Also fixed: form fields and image captions in the playground's light mode were dark. - Sep 25, 2026
What fast means for Yui, in milliseconds
Chris asked for Yui to feel as quick as Telegram, and for numbers Yui can watch. Before any fix, a yardstick. The new speed budget names seven moments people feel (a key reaching the screen, a sent message showing, an agent's message landing, a swipe, a full-screen open, a thread open, launch) and gives each a target: one frame for typing and sending, under 100 ms for a tap, 300 ms to open a thread. It sets budgets for hangs, scroll hitches and memory too, based on Apple's hitch and hang guidance. The phone will send numbers only, never what anyone wrote, into a table only the owner can read. A daily report compares each build with the one before, and the morning briefing speaks up only when something got slower. The war room gets a Speed panel, drawn here with sample numbers from presets the app already has. Step 2 (YUI-102) builds it into the app. - Sep 25, 2026
Ask any agent to restyle Yui, in the app
Say "make Yui feel like autumn" to any agent you own and it answers with one line. Yui draws a card: two small phones, Yui as it is now beside Yui in autumn, and a Light / Dark switch that flips both. If a color had to move so text stays readable, one line says so. Nothing changes until you tap Use autumn. Then the app fades into the new look and the card leaves Undo, one step back. Keep mine closes the card, and a newer offer retires an older one. The look covers everything that is nobody's thread: Yui's own thread, the sheets, Settings and sign-in. Every other agent keeps its own look in its thread, so you still know who you are talking to; Settings > Look has a switch to put the whole app in one look, and Back to Yui's look is always one tap. The look is saved to your account and cached on the phone so the first frame is right. Agents shared with you by someone else can never restyle your app, and phones too old to show the card never see the line. It rides the next Yui release. - Sep 25, 2026
Make Yui feel like autumn: restyle the app by asking, on paper and in the playground
Every agent already has its own look, so you know who you are talking to. This step is about the rest of Yui: the chat list, the tab bar, Settings and Yui's own thread. Ask any of your agents to make Yui feel like autumn. It answers with one line, and the app shows you Yui in autumn next to Yui as it is now, in light and in dark. Nothing changes until you tap Use autumn, and Undo puts it back. Settings gets Back to Yui's look, one tap, no agent needed. The same contrast check as agent looks runs first, so the preview already shows the fixed colors: text stays readable, buttons stay the same size, and Reduce Motion is respected. Inside an agent's thread its own colors still win, unless you switch that off. Only agents you own can offer a look; agents someone shared with you never can. Try it in the playground, and edit the line to try ocean, a hex color or reset. The app gets it in a later release. - Sep 25, 2026
Settings says exactly which Yui is on your phone
Scroll to the bottom of Settings and a small block says which Yui you are holding: the version and build, where it came from (TestFlight, a Yui Dev test build, or the App Store), the commit it was built from and when, and the version of the channel guide your agents read. Tap it and the whole block is copied, ready to paste into feedback. With Yui Dev installing beside the TestFlight app now, this is how you tell them apart. It shipped in Yui 0.2.0, build 122. The shots come from a local simulator build, so they read Xcode where your phone reads TestFlight. - Sep 25, 2026
Invite a client and their agents are already there, on paper and in the playground
Invites are how new people get into Yui right now. This step writes down what an invite can carry: a set of agents, each in a look you pick, each with a first message. The person signs in with Apple and their agent list is already filled, with a new message waiting from each one. They get their own thread with each agent. They can mute one or move it in the list, but not rename it or delete it. Take an agent back and it leaves their app at once. The harder part is safety. Most agents on a developer's computer can run any command and read any file, which is fine for their owner and never fine for someone else. So an agent can be shared only if it passes five rules: its own profile, no shell and no files outside a sandbox, no reach into the rest of the computer, nothing carried from one person to the next, and a model reached through an API. The grant script refuses any other agent, the database refuses it again, and the agent checks itself before every turn for someone who is not its owner. Try both sides in the playground: making the invite, and the first open. The app gets it in a later release. - Sep 25, 2026
Yui 0.2.0: every agent gets a home
Yui 0.2.0 is on TestFlight as build 122, the first real release after a week of hourly builds. Apple started turning uploads away, so we held TestFlight, finished a set of features, ran the full test pass and uploaded once. Drag right on any chat and the agent's drawer slides out: Home, Review, Controls and About. Agents fill it themselves, with asks in Review, a Backlog and one-tap Shortcuts. Screens update where they sit: a timer, a score or a status line changes in place instead of arriving again, and those quiet updates don't buzz your phone. Full-screen pages read like a story, one idea per page. Agents can draw a quick sketch of a window, a phone or a chat bubble. You can type on a screen that keeps a composer. Needs you is one block per ask, the buttons under the question. Anything this build can't draw yet shows as one Update chip, not red lines. And Settings now ends with About this build: version, build, channel, commit and date, tap to copy. A Yui Dev copy for test links installs beside it, so the two never get mixed up. Install or update it at https://testflight.apple.com/join/ykrYHwet - Sep 25, 2026
Group threads: the plumbing is live
Yesterday we wrote down how a group of agents should behave. Today the database and the agent side do it. A group has its own thread, with a lead who answers anything you don't address. Your message goes to the agents you @, and only to them; the others see it on their next turn. When one agent @s another, the ask goes through on a budget: three handoffs and eight agent turns per message by default. Past that the ask is held until you say Let it or Stop, and Stop also cancels every handoff nobody has picked up yet. Each agent still reads only its own messages. What it knows of the rest of the group is a short quote above each ask and one line per message since its last turn, and only while it is a member. The agents' guide got a Groups section: answer only your part, hand work on in one plain sentence, never bounce it back. We tested it on three new cases and it passed all three. The database side passed 69 checks against the live project. The app's side, the New group sheet and the thread itself, is next and ships in a later release. - Sep 25, 2026
Group threads: several agents in one conversation, on paper and in the playground
You can already @ another agent from any thread. The next step is a thread with several agents in it, and before building it we wrote down how it should behave. The rule for who answers is simple: the agent you @ answers, and if you @ nobody, the group's lead does. Nobody jumps in on a message that wasn't for them. When one agent asks another for help, the thread shows it as its own row, both faces and the ask, and every agent keeps its own colors. Agents can keep handing work on, but on a budget: one message of yours buys a few handoffs and at most eight agent turns. Past that, the ask waits for you with two buttons, Let it and Stop here, and a Stop button sits on the working rows the whole time. The spec also covers how a group is stored, why no agent can read another agent's messages even in a group, and what older copies of the app see. Try the mock in the playground: Coach plans race week, asks Sage for a wind-down, and Sage's ask to Quill hits the guard. The app gets it in a later release. - Sep 25, 2026
Connect your tools: the plan, and a flow you can try
Agents get useful when they can reach your calendar, your mail and your CRM. This step writes down how that will work in Yui, and turns the connect screens into a flow you can run. A connector is the tool's own MCP server, the open standard agents use to call tools: Google now runs one for Calendar and one for Gmail, and HubSpot runs one too. You sign in once, on Google's or HubSpot's own page, never in Yui. Before that, each tool gets a consent step that says what it allows in plain words instead of scope names: Calendar can see your events and find a time, and adding one is a separate ask later; Gmail can read, label and write drafts, and has no send button, so every draft waits for you; HubSpot sees only what your own login can see. The sign-in stays with your agent on your own computer, never in the app and never in a Yui database, and you can switch a tool off from the drawer or on Google and HubSpot directly. The sign-in buttons come from the agent after the flow, because a real sign-in link is made fresh for each person. Nothing signs in yet: the buttons open the spec. Real sign-in is step 2, and it needs a Google Cloud project and a HubSpot app registered first. Try it in the playground under Flow: connect your tools, and read it at /developers/connectors. - Sep 25, 2026
See it catches up with 0.2.0
Every change you can see gets a place on See it, and five from the next release had none. Now a Yui 0.2.0 group sits near the top of /mockups: each agent's drawer, the menu word that lets an agent fill it, screens that update in place, the app drawing sketches, and one Update chip instead of red lines for anything your copy of Yui can't draw yet. Where the web can draw it, the phone on the page is live, so you can tap the leg day timeline or the sketch; the drawer itself is shown with real captures from the simulator. Each one is labelled In Yui 0.2.0 until that build is on TestFlight. The site group also got its two newest pages: Yui's values and the shared type scale. - Sep 25, 2026
Meet Yui: an onboarding interview that suggests your first agents
A new person's first minute in Yui is now written down, and you can run it. Yui asks three quick things on full screens: your name, how much you know about AI on a 1 to 5 slider, and what you want help with, in taps and then in your own words. Each answer changes what comes next. Brand new gets a one-page answer to what an agent is. Four and up gets asked if you already run one. Pick get fit and eat better and Yui suggests Coach, a trainer, and Basil, a nutritionist; get organized gets Penny, an assistant; learning something gets Quill, a study buddy. Each comes with a look the app already has. The last page is honest about today: Yui draws the screens and the agent runs on your own computer, so it says how to connect one. It is a saved flow, so any agent can send `flow onboarding`, and it is in the library. Try it in the playground under Flow: meet yui. The app runs it on first launch after 0.2.0. - Sep 25, 2026
Agents keep data on your phone: tables
An agent can now keep a workout log, today's macros or a small CRM, and draw it any time. Three new words in Yui Lines do it. table create makes a table with typed columns (text, number, date, on or off). put writes one row: with a key it updates that row, without one it adds a row, so a log just appends. query draws the rows as a table, a list, a chart or one big number, and it stays live: send a put and every view on screen redraws. A query can filter (Day=today), sort, and total by group, so "best set per lift" or "protein by day" is one line. Dates like today and today-7 are read on the phone, so the agent never has to know yours. The rows stay on the phone. The agent sees them only when you tick a box in a list or tap Send on the rows you choose to share. This step is the spec and the web version: try the three starters in the playground under Agent tables, send the put in the agent line and watch the views change. Rows you add stay in your browser until you reset them. The iPhone app gets the same store next. - Sep 25, 2026
Agents fill the drawer
The drawer from YUI-54 filled itself: pinned screens, open questions, About. Now the agent can add to it too, with one new word in Yui Lines. menu review@dana "Invite Dana to the beta?" puts a card in Review, under the thread's own questions, and counts on the menu button. menu backlog@deload "Deload week plan" sub=drafting lists what the agent is working on for you, in a new Backlog section on Home. menu shortcut "Start the workout" adds a one-tap shortcut above the host's commands; a tap sends it as your message, and one that ends in a space, like say="Log a meal: ", fills the composer for you to finish. menu done dana takes one out, and you can hold any item to remove it. The lines draw nothing in the chat. Three lists, 20 items each, no nesting, so no agent can crowd the drawer or restyle it. A tapped review or backlog item goes back to the agent, which answers with the screen. In the eval, asked for a one-tap breakfast log, the agent added the shortcut on its own; tapped on its deload item, it sent the plan and marked the item draft ready. Cards got +fold too (Chris's round-4 note: cards you can open): title, sub and a line of body, and a tap opens the rest in place. Spec in YL.md, 27 new conformance vectors, and all five parsers (JavaScript, Swift, Python, Kotlin, Rust) pass them. Rides the 0.2.0 build; older phones drop the lines quietly. - Sep 25, 2026
Cron failures go to Yui, not to your chat
Chris sent a screenshot of his Yui thread: a raw alert that a weekly job had failed, with a Python traceback in it. He did not want those. There is nothing for him to do with one, and it would come back to Yui anyway. So now every scheduled job Yui runs without an agent goes through a small guard script. When the job works, its message goes out exactly as before. When it fails or runs too long, the guard says nothing in the chat. It logs the failure, and it opens one card on Yui's board for that job, or adds a note to the card that is already open. Yui's lane driver reads that log every half hour and fixes the script or hands it to whoever owns the broken part. Chris hears about it only when the same job has failed three runs in a row and it is holding up Yui work, as one short line, never a traceback. The failing job itself, a weekly report that crashed on an older Python, was fixed first. A script on the Mac, so nothing to screenshot. - Sep 25, 2026
Week of Sep 21: from a first build to build 96, then a pause for 0.2.0
Yui's first week in public. On Monday there was a pitch and a roadmap. The first TestFlight build went out Wednesday, and by Friday the app had reached build 96: Sign in with Apple, every preset drawn native, decks and full-screen plans, reactions, replies, @mentions, slash commands, games, a war room with a timeline you can reorder, and a drawer for each agent. Agents from outside Hermes can talk in Yui now: Claude, ChatGPT, Gemini, Grok, LangGraph, CrewAI, n8n and any A2A agent. The site grew a public board, a changelog by build, See it, the library and Thoughts. The honest problem: we shipped too often. Five uploads in one day, and Apple started turning builds away. So TestFlight is paused except for crash fixes, and the next build will be one real release, 0.2.0, with the drawer as each agent's home and screens that refresh in place. After that, the MVP test: a stranger goes from invite to first screen with no help. - Sep 25, 2026
Screens your Yui can't draw yet turn into words
Chris sent a screenshot with a question: something looks broken. Yui had answered with a drawing, a sketch of the INT-7 ask with the old buttons crossed out and the new ones highlighted. His phone runs build 96, and sketches arrived in build 104, so every line of the drawing showed as a red unknown preset with the raw lines under it. Nothing crashed, but it read as broken, and he was right. Three fixes. The relay now knows which build each phone runs: the app already says it in every request it makes, so this works for the phones out there today. The plugin checks that build before a reply leaves the Mac: anything the phone can't draw goes out as plain words, so the same answer on build 96 reads as a short list, the old option struck through and the new one in bold. Inside a deck it becomes a page of points. And the agent is told which screens to skip on that phone. For the next release, the app itself folds anything it can't draw into one quiet Update Yui chip instead of raw lines. Tested live against the relay and in the simulator, light and dark. - Sep 25, 2026
Yui for macOS has a brief, open for contributors
Chris wants Yui on the Mac too. It is now a written plan anyone can pick up. The Mac app ships under the same app record as the phone, so it is the same account and the same Sign in with Apple, with no new roles and no new tokens. It is a real Mac app, not the phone app in a window: the agent drawer becomes a sidebar that stays open, Return sends, Command-K switches agents, and the stage opens in its own window that can go full screen. A translation table covers every screen: most draw exactly as on the phone, the camera and mic work the Mac way, a running timer lives in the menu bar instead of the lock screen, and anything that needs the phone says Open on your iPhone instead of breaking. Four pull requests in order, each with its tests on macOS. The first needs no account: the Mac target builds and opens a demo chat. Signing and release stay with us, so no keys in any pull request. A spec, so nothing to screenshot in the app yet. - Sep 25, 2026
Each agent gets a drawer
The top-left button used to open a list of your agents, and nothing else. Now each agent has a home. Drag right on the chat and a drawer follows your finger out from the left. It stops short, so the chat still peeks out on the right; tap that sliver, drag back left or hit the X to close it. On a screen, a drag right pages back to the chat first, so it never fights the pager. Chris picked this layout from three mocks: Peek and tabs. Home has your pinned screens (the workout you open every day), what's next for you, and the screens in this thread. Review holds everything waiting on you, and each ask opens in place with its buttons, so you answer right there. Controls is where the agent's name, look and notifications live, with room for its soul, memory, skills and schedules next (YUI-70). About is saved for a page about the agent, once hosts can describe themselves. The agent you're talking to sits at the bottom. Tap it and your other agents spring up above it, with Add an agent. Reduce Motion swaps the slide for a fade. It rides the next build with YUI-70. - Sep 25, 2026
Screens update in place instead of piling up
An agent can now give a piece of a screen a name and change it later, across replies. A timer, a score or a status line updates where it sits instead of arriving again as a new screen. Replies that only change something already on screen don't buzz your phone. The war room uses it first: a refresh patches the numbers on its page rather than sending the whole page again. All five parsers (JavaScript, Swift, Python, Kotlin, Rust) share ten new test cases. It reaches the app with 0.2.0. - Sep 25, 2026
The library: every screen and flow, live and searchable
yuigui.com/developers/library puts every screen an agent can send on one page: 35 tiles, each a live phone you can tap, with the line that draws it, what it is for and a few tags. Copy the line, or open it in the playground. The Flows tab draws each saved flow as its Mermaid chart, the same text GitHub draws, with a Run it button into the playground. Search runs in the browser over names, purposes, tags and the lines themselves. Agents get the same list at /library.json, with a pointer in llms.txt, so an agent can look up a screen or a flow and send it as is. A check fails the build step when a preset has no tile or an example stops parsing. Checked light and dark at phone and desktop width: nothing clipped, nothing wider than the screen. - Sep 25, 2026
Yui in the browser has a brief, open for contributors
Yui in a browser tab is now a written plan anyone can pick up. The spec says what it is: Sign in with Apple, the same relay the phone uses, and the playground's renderer, so an agent cannot tell a tab from the phone. A translation table says what each screen does in a browser: haptics dropped, camera and mic through the browser, timers kept by the clock so a background tab stays right, push later through Web Push, and anything a tab cannot do says Open on your iPhone instead of breaking. No new roles and no new tokens. The first pull request needs no account at all: a thread page drawn from a recorded thread, checked tap for tap against the playground. It is listed on the contribute page as open for contributors. A spec, so nothing to screenshot yet. - Sep 25, 2026
The site reads like the app now
Build 96 made the app type-led: big clear titles, short bodies, nothing cut off. The site now reads the same way. One type scale runs every page: the same title, section and card heading sizes everywhere, where before there were nine. Headings sit tight instead of borrowing the body's loose line height, and they wrap in balanced lines, so a title no longer leaves one word alone. Reading text stops at about 70 characters a line on a wide screen, down from as many as 170. On a phone, small print is at least 16px. Checked at phone and desktop width on all 18 pages in the menu: nothing clipped, nothing wider than the screen. - Sep 25, 2026
Asks sit with what they ask about
Chris's feedback on the war room: every ask was two cards, the context on top and the buttons in a separate box under it, so the answer looked cut off from what it was about. Now each ask is one card: the card's tag, its name and the context, then the question and the buttons. Two answers ride every ask, always last. Not yet is for when the ask assumes you already did something, like a browser step. The card stays waiting and nothing restarts. You decide hands the call back, and the agent picks the option it recommends and goes. Under the hood, choose and pick take tag, title and body, in the app, on the web and in the MCP App. Phones on an older build still get the two-card layout until the next build. - Sep 25, 2026
Flows, written in Mermaid
Plan mode walks you through a few screens in a straight line. Flows add the map. A flow is a Mermaid flowchart, the same text GitHub draws as a chart: each box carries one screen, and the labels on the arrows are conditions on your earlier answers. Pick Shop and the intake asks about products and payments; pick Landing page and it skips the page list. The same step reads 4 of 9 on one branch and 4 of 6 on the other. Back walks the path you took, the review lists only what you answered on it, and the agent gets one event with the answers and the path. An agent can send a flow inline or run a saved one by name, like flow website-intake. Three starter flows come from real work: a client website intake, scoping a project yourself, and a workout check-in. All three run in the playground, and a browser test takes every branch of every one. This step is the spec and the web runtime; the app runs flows next. Spec: /developers/flows. - Sep 25, 2026
The admin console, scoped
Yui will need people who run it from the top, so we wrote down who they are before building anything. Five roles: the owner, a super user or two, admins for the daily work, support who can look things up but change nothing alone, and a company's own admin who runs only their people and their default agents. A table says what each role can touch: invites, accounts, the kill switch and limits, feature flags, announcements, feedback, usage numbers and an audit log. Next to each control is what exists today and what is missing. Our recommendation is an Admin section inside the app, not a web console: Sign in with Apple already works there, and the site has no login to secure. A role is a row checked on every request, never inside the token, and anything destructive asks again with Face ID and a fresh Apple sign-in. Admins never read messages: the admin API has no way to return them, and the doc lists exactly what is visible. It ends with three phases and six cards to pick from. No build yet, so no screenshots. Spec: /developers/admin. - Sep 25, 2026
The app draws
Feedback on build 96 asked Yui to draw a little window with some things crossed out and others highlighted, instead of explaining in words. The app now draws sketches itself. An agent sends a frame, a window, a phone or a chat bubble, and a few rows: some struck out, some highlighted, some greyed, some drawn as buttons, blank ones as filler, each with an optional short note and an arrow. One line splits it into a before and an after. In the chat a sketch sits on a card. On a full-screen page it is the page's picture: the frame comes on first, then each row, then the headline and the words. A sketch with no page before it is a page that is only the drawing. The spec gained that rule, so agents can put a sketch right under a page line, and all five parsers and the web playground follow it. VoiceOver reads each drawn row with its marks, so a crossed-out line is read as crossed out. Lands with the next build. - Sep 25, 2026
Yui Lines in Rust
Yui Lines now has a fifth parser, in Rust. It is a crate with no dependencies: no regex library and no serde, only the standard library, with a small JSON reader of its own for custom lines. Each rule of the JavaScript parser is ported line by line, with the pattern it replaces written next to it. It passes all 445 shared test vectors in 25 files, read straight from the spec folder, and spec/conformance/run-all.sh now runs it next to JavaScript, Python and Kotlin. We also fed it 35,000 random documents and compared every result with the JavaScript parser: whole parses, streams cut into random chunks, what opens full screen, which pages can talk, and every screen with its defaults filled in. No differences. The README lists the few Unicode edge cases Rust strings cannot hold. The Developers page lists all five parsers. Go or C# is a good first contribution. - Sep 25, 2026
AG-UI agents in Yui
Agents served over AG-UI can come into Yui by their URL. AG-UI is the protocol agents use to talk to the app in front of them, and Microsoft Agent Framework, CopilotKit, Mastra and Pydantic AI all speak it. The new bridge makes Yui that app. Each message you send is one run, and the bridge keeps the conversation, since AG-UI servers remember nothing between runs. Screens are a tool the agent calls, yui_show: the run stops there, the screen goes to your phone, and your tap goes back as the tool's answer. That is AG-UI's own way of waiting on a person, so nothing is bent to fit. We ran Agent Framework's own AG-UI endpoint on a small local model, with instructions that never mention Yui, through live Yui on a test account: asked for a drink, it called yui_show with a Tea or Coffee picker on the first try, took the tap back, remembered it the next turn, and a crash in the middle of a turn still got one answer, 16 of 16 checks. The bridge reuses the A2A bridge's Yui side, so delivery works the same. One open question for Chris: whether Yui should also read A2UI, Google's UI format, which Agent Framework can send over AG-UI. Our take is not now. No new screens in the app, so no screenshots. Spec: /developers/agui. - Sep 25, 2026
Full-screen pages tell a story
Feedback on build 96 held up a long answer read as pages: a card inside the full screen, a title cut off at "with the…", and a bullet list split across three pages. Now full screen is the whole stage. There is no card on it. Each page carries one idea: every list item gets its own page, and prose comes a sentence or two at a time. The headline is set big and sized to its words, so a five-word idea fills the screen, and it never breaks a word. The body is a second, quieter voice. A thin bar per page runs across the top. Words spring on when a page arrives and drift off when it leaves; with Reduce Motion they only fade. Titles stop after a whole clause, and a lead-in that ends in a colon ends in "…" so the next page picks it up. Decks, plans and walkthroughs all open this way, and host reports no longer repeat a title with "(2/3)". Each page leaves room for a picture. Drawn ones come next. Lands with the next build. - Sep 25, 2026
Agents can draw now
From TestFlight feedback: "Yui should be pretty good at just drawing different stuff so we don't even have to generate images or screenshots." Now an agent can draw a small picture in a few lines. A sketch is a little window, phone or chat bubble with rows in it. A row can be struck out, highlighted, greyed, drawn as a button, or left blank as filler, and a short note beside the frame points at it with an arrow. One line in the middle splits it into before and after. It sends nothing back; it is there to show instead of tell. Agents learn it in channel guide v18, next to long reports. In the eval, the old guide answered "show me the difference" with a table and words; the new one drew it both times. Live in the web playground and in the MCP App now. The iPhone view comes next. - Sep 25, 2026
Yui's values, written down
Feedback on a build-ready deck said it plainly: three cards of split-up text is not what Yui is. The same note named what Yui should be, and those are now eight values on one page: screens, not text bombs; one idea per page; type tells the story; full screen is the whole stage, with no card inside it; draw it, don't describe it; say what is being done, not who did it; nothing cut off mid-sentence; every button does something. Each comes with one example. The agent guide points to them where it teaches long answers, and the build-in-public rules hold progress entries and Thoughts to them. The app work they call for (full-screen pages that tell a story, little drawn windows) is on the board next. Page: /developers/values. - Sep 25, 2026
Flue agents in Yui
Agents built with Flue, the TypeScript agent framework from the team behind Astro, can come into Yui. Flue adds integrations as channels: you run `flue add channel` and hand the guide it prints to your coding agent. Yui now has that guide, plus a small connector. Your Flue app dials out to Yui, so there is no webhook to expose, and every message you send goes to the agent through Flue's own dispatch. Its answer comes back once, even across a crash. Yui's agent guide goes into the agent's instructions, and that is all it takes to get screens. We ran a Flue agent on a small local model through live Yui on a test account: it answered, drew a Tea or Coffee picker its own instructions never asked for, answered the tap, remembered it the next turn, and a crash in the middle of a turn still got one answer, 14 of 14 checks. The connector's Yui side is the same code the A2A bridge runs, now shared. On Cloudflare, where Flue agents usually live, Yui will push turns to the app instead; that waits on the hosted connector. No new screens in the app, so no screenshots. Spec: /developers/adapters. - Sep 25, 2026
Chat with a screen
Screens beside the chat are full screen, for reading and tapping, and typing happens in the chat. Now an agent can open a screen up for talk: one line, `>2 talk`, keeps the composer on screen 2. The field says "About screen 2", and what you type there reaches the agent with a first line that names the screen, so it knows you mean the plan on it and can change it in place. Your message shows in the chat with a small "From screen 2" mark that takes you back. `talk off` closes it again, and clearing the screen closes it too. Screens without it stay exactly as they were. The new word is in the spec and in all four parsers (JavaScript, Swift, Python, Kotlin), 419 of 419 test lines in each, and the agent guide teaches it: in two new test turns the agent put a week of runs on a screen with talk on, then changed Thursday in place when asked from that screen. Tested on an iPhone 18 Pro simulator. It rides the next TestFlight build. Spec: /developers/yl. - Sep 25, 2026
Microsoft Agent Framework agents in Yui
Agents built with Microsoft Agent Framework, the successor to AutoGen, can come into Yui. Agent Framework serves an agent over A2A, so the A2A bridge pairs it by its card URL. Two catches. It reads every text in a message as what you said, so the example agent moves Yui's guide into the agent's instructions, its system prompt. And it forgets the thread each turn, so the example keeps one session per thread. We also fixed the bridge: without streaming, Agent Framework sends its answer as a progress note and then finishes with nothing, and the bridge used to drop it. We ran an Agent Framework agent on a small local model through live Yui on a test account: it answered, drew a Tea or Coffee picker only because the guide reached it, answered the tap and remembered it the next turn, 10 of 10 checks. We also looked at AG-UI, another way agents talk to apps: Yui can speak it too, with its screens as a tool the agent calls, and that is now its own card. No new screens in the app, so no screenshots. Spec: /developers/a2a. - Sep 25, 2026
CrewAI agents in Yui
Agents built with CrewAI can come into Yui. CrewAI can serve an agent over A2A, so the A2A bridge pairs it by its card URL, no change needed. One catch: CrewAI reads every text in a message as the task and drops the labels on them, so Yui's guide would read as part of what you said. The example agent moves the guide into the agent's backstory, which is CrewAI's system prompt. We ran a CrewAI agent on a small local model through live Yui on a test account: it answered, drew a Tea or Coffee picker only because the guide reached it, and answered the tap, 9 of 9 checks. Crews you run as a script come in through the webhook bridge instead, and the repo has one. No new screens in the app, so no screenshots. Spec: /developers/a2a. - Sep 25, 2026
n8n workflows in Yui
n8n workflows can now put a screen on your phone and wait for your tap. Three ways. A Yui node you drag in after any trigger: Ask and Wait shows a choice, a form or a timer, and the next node gets what you tapped, no AI needed. n8n's AI Agent with its MCP Client Tool pointed at Yui's MCP server, so the agent decides when to ask. And a Webhook trigger behind the webhook bridge, which makes Yui the chat front end of a workflow. We ran all three in a real n8n against live Yui on a test account: a small local model put a lunch picker up and said "You picked Soup for lunch." after the tap, the node handed the tap to the next step, and the webhook answered a hi with a screen, 22 of 22 checks. The node isn't on npm yet. No new app screens, so no screenshots. Guide: /developers/mcp#n8n. - Sep 25, 2026
Agent answers read clean
Agents and the Hermes gateway often answer in markdown, and Yui used to show the raw stars and backticks: a /status answer read as **Model:** with the marks in it. Agent bubbles now draw it: bold, code on a soft tint, code blocks, bullet and numbered lists, headings and links (only https links tap). Screens written in Yui Lines are untouched, anything malformed stays as written, and your own messages look exactly as you typed them. Copy, Select text and VoiceOver get the plain words, and a long answer still folds into pages. 11 new unit tests, 94 in all, and the phone runs pass in light and dark. It rides the next build. - Sep 25, 2026
LangGraph agents in Yui
Agents built with LangGraph can come into Yui. LangGraph's own server, the one langgraph dev runs and LangSmith deployments use, speaks A2A for every graph, so the A2A bridge pairs a graph by its card URL. One catch: that server keeps only one text part per message and drops the labels on parts, so Yui's guide could vanish. For LangGraph the bridge now sends the guide and any taps as data, which LangGraph hands the graph as state. A graph declares two keys and can read Yui's guide and the person's taps. We ran a scripted graph, no model, through live Yui: it answered, drew a Tea or Coffee picker only because the guide reached it, and read the tap from its data, 12 of 12 checks. No new screens in the app, so no screenshots. Spec: /developers/a2a. - Sep 25, 2026
Meta's Muse Spark in Yui
Muse Spark, Meta's model, can come into Yui as a model. The model bridge has a Meta preset: set MODEL_API_KEY, pair with --server meta (or muse), and it uses muse-spark-1.3 unless you pick another. There is no way to plug into the Meta AI app itself, so this goes through Meta's Model API, which copies OpenAI's and is in public preview for US developers. Where it differs, the bridge copes: a bad key, an empty balance and a model the key can't use each say what they are, a message the safety filter blocks says so, a busy server waits as long as Meta asks, and a slow plain answer says to stream instead of retrying. 17 new tests replay those shapes, 65 in all. No new screens in the app, so no screenshots. The first live call waits on a Model API key. Spec: /developers/models. - Sep 25, 2026
The chat never gets stuck shrunk
Chris hit a bug on TestFlight: the whole chat shrank behind a border and nothing undid it. The chat steps back only while a screen is really on stage, so a stage whose reply went away now closes itself, and a tap or swipe on the stepped-back chat closes it too. Replies with nothing left to draw no longer leave a lone agent face in the thread. 83 unit tests and the stage, pages, reply and long message UI tests pass in light and dark. It rides the next build. - Sep 25, 2026
Grok in Yui, two ways
Grok can come into Yui as a model, or call Yui as a tool. As a model: the model bridge has a Grok preset. Set XAI_API_KEY, pair with --server grok, and it uses grok-4.7 unless you pick another. xAI's API copies OpenAI's with a few differences: errors come as a code and a message, a bad key comes back as a 400, a team out of credits gets a 403, and reasoning models refuse some arguments. The bridge handles each one, and says out of credits instead of bad key when that is the problem. 11 new tests replay those shapes, 48 in all. As a tool: xAI's Responses API takes remote MCP servers in the request, so a Grok agent can pass Yui's MCP server with a connection token and put screens on your phone. The spec has a request you can copy, with no token in it. No new screens in the app, so no screenshots. The first live call waits on an xAI key. Specs: /developers/models and /developers/mcp. - Sep 25, 2026
Gemini in Yui, two ways
Gemini can come into Yui as a model or as an agent. As a model: the model bridge has a Gemini preset. Set GEMINI_API_KEY, then pair with --server gemini --model gemini-2.5-flash. Google's endpoint copies OpenAI's API with a few differences: model names come back as models/..., errors come wrapped in a list, a bad key comes back as a 400. The bridge handles each one, with 11 new tests that replay those shapes. As an agent: agents built with Google's Agent Development Kit speak A2A, so the A2A bridge pairs them by their card. We ran a real ADK agent on a local model through Yui: it answered, drew a Tea or Coffee picker from Yui's guide, and answered the tap, 9 of 9 checks. The example shows how an ADK agent passes Yui's guide to its model. No new screens in the app, so no screenshots. One live call to Gemini itself waits on a free AI Studio key. Specs: /developers/models and /developers/a2a. - Sep 25, 2026
Yui screens in Telegram
The insurance policy is real now. If the app is not around, an agent's Yui screen can still reach you in Telegram. Questions become buttons under the message, and a tap goes back to the agent as the exact line the phone sends, changed answers and all. Lists, cards, stats and tables become formatted text. A timer, a chart, a deck or a form goes behind one Open in Yui button, which opens the whole screen in a Telegram Mini App at yuigui.com/tg, in the chat's own colors. Every preset is covered, none dropped: 62 unit checks, and all 61 playground screens drawn in Telegram's dark and light themes in a real browser, with taps checked through both ways back to the bot. No bot runs it yet: that needs its own Telegram bot and comes next. Spec: /developers/telegram. - Sep 25, 2026
No more text bombs
Chris opened a build ping and got a wall: the whole commit message for the A2A bridge, test counts and all, in one bubble. That is the chatbot experience Yui exists to replace. Now a long agent message folds in the thread to its first lines and a Read as pages button, which opens it as a deck you swipe through, one idea per page. Build pings arrive as one line, a card with the TestFlight button and a short deck of what changed. The channel guide tells every agent to send long answers as pages, and the Yui plugin logs any agent or cron that still sends a wall, so it can be fixed at the source. The app part rides the next build. - Sep 25, 2026
Your own model, in Yui
Run a model on your own machine with Ollama, LM Studio, vLLM or llama.cpp? The model bridge puts it in Yui. A chat API remembers nothing, so Yui holds the thread: each turn the model gets Yui's channel guide as its system message and as much of the conversation as fits. That is enough for a 7B model to answer with real screens. On a Mac mini, qwen2.5:7b drew a Drink picker, the tap on Tea went back as its next turn, and after a relaunch it still knew what was picked. It streams when the server does, backs off when the server is down (and tells you once), and a restart never sends an answer twice. Tested with 26 unit checks and 47 live ones, including the simulator runs below. Cloud APIs come later on Yui's hosted connector. Guide: /developers/models. - Sep 25, 2026
The chat stays on your newest message
Send a photo with a caption, pull the keyboard away, and the thread now rests on what you just sent. Before, it stopped short: the photo sat under the composer and the caption was out of sight. The chat now remembers when you are at the bottom and stays there while things change size: a new photo, the composer shrinking, the keyboard going away. Scroll up on purpose and it leaves you where you are. Rides the next build. - Sep 25, 2026
Add any A2A agent by its Agent Card
Agents built with Google's ADK, LangGraph, CrewAI or Microsoft Agent Framework speak A2A, an open protocol for agents talking to agents. Now they can talk in Yui too. Add the agent in the app, then point the new A2A bridge at the agent's card URL: node yui-a2a.ts pair <code> --card <url>. Each message you send goes to the agent as an A2A task. While the task runs, the app shows the working row, and when it finishes its whole answer lands in the thread. If the agent asks you something back, your answer continues the same task. The bridge speaks both A2A 1.0 and the older 0.3. If it crashes mid-task, it picks the same task back up after a restart instead of sending your message again. Yui's channel guide rides along on each new task, so an agent that reads it can answer with real screens. For now the bridge runs on your own computer. A hosted version, where you run nothing, comes next. Tested with 66 live checks on throwaway accounts, against the official A2A SDK in both versions, and on the iPhone simulator with a scripted test agent (no model). - Sep 25, 2026
An agent that isn't listening yet says so
Chris paired a new agent, said hi, and the thread sat on the working dots for an hour. The agent was paired, but its gateway had never started, so nothing was reading its messages. The app still said online, because it only knew the computer was up. Now each gateway tells Yui which agent it serves, so presence is per agent. An agent that is paired but not served yet reads Not listening yet. Its sheet shows the one step left, with the exact command to run and a copy button. A message you send it says it will wait, instead of a timer that counts forever, and it is answered as soon as the gateway starts. When one gateway on a computer stops, only its agent goes offline; the others stay online. Tested live with two real agents on one computer and on the iPhone simulator, light and dark. - Sep 25, 2026
Where the hosted connector will run
Some agents can't install anything: an A2A agent somewhere on the web, or a plain model API. For those, Yui needs a small service of its own that holds the call open. We looked at three homes for it and wrote the answer down in spec/HOSTING.md (/developers/hosting). The relay stays on Supabase, with its limits and kill switch in the database. The new connector runs on Cloudflare Workers and Durable Objects, beside it, as one more host with the same rules as a Hermes plugin. Supabase alone stops every call at 400 seconds, and an A2A task can run for hours. The memo also has list-price estimates at 10, 1,000 and 10,000 users. The best news is that neither next card has to wait: open models and A2A agents both start as a small bridge on your own machine. Nothing to see here, it is a spec. Nothing was set up or paid for. - Sep 25, 2026
Yui screens in ChatGPT too
You can now add Yui to ChatGPT the same way as Claude: turn on developer mode, paste one URL, and approve it in the Yui app. Ask ChatGPT to check something with you and the screen lands on your phone and also draws right in the chat. Tap it in either place and ChatGPT reads your answer as your next message. Under the hood the Yui MCP server now also speaks ChatGPT's own dialect: a status line while it works ("Putting it on your phone"), the sign-in it expects, and the older way ChatGPT talks to embedded screens, so the screen works on both. The steps are on /developers/mcp under ChatGPT. It is a personal connection, not a listing in ChatGPT's app directory. Proof: a test host that plays ChatGPT's side from OpenAI's docs signed in the way ChatGPT does, drew the screen and tapped it both ways, in dark and light (32 checks), plus 105 live server checks and the Claude host test still green. One look inside chatgpt.com itself is still to come. - Sep 25, 2026
One working row instead of dots plus a timer
While your agent works, the chat used to show three dots in a bubble and, under them, a line saying it was sent and for how long. Two things saying the same thing. Now it is one row: the agent's face, three small dots and one line. "On its way · 3s" until the agent's computer picks your message up, then a working word and the time, like "Pondering · 12s". The word changes every few seconds (Figuring it out, Mulling it over, Tinkering), and the row goes away when the answer lands. Long jobs still say it's fine to leave. With Reduce Motion on, the dots hold still and the words swap without moving. Next, the agent itself will send a few words on what it is doing. Proof: the simulator sent a message and watched the row go from On its way to Pondering to the next word to gone, in light and dark. - Sep 25, 2026
@ another agent from any thread
Type @ anywhere in the composer and your other agents come up, each with its face, name and whether it is online. Keep typing to narrow the list, tap one and its name lands in your message, with a line above the composer saying who it goes to. The agent you are talking to is not asked. The one you named gets your words plus the last few lines of this thread, answers in its own thread, and its answer shows up here too, in its own colors, with a link to its thread. If it is asleep, offline or muted, you get one line saying so right away instead of silence. The agent you were in reads what was asked and answered as context on its next turn. Agents can @ each other only while answering you, and only one hop, so two agents can never ping-pong. It all happens in the database, so it works the same whatever runs the agent. This is step one of group threads. Proof: two real agent hosts on one Mac and a throwaway account; the simulator typed @, picked the second agent, got its answer back in the first thread, and saw an offline agent say so, in light and dark. 38 live database checks, 11 plugin tests, 8 app tests. - Sep 25, 2026
Yui in Claude, and Yui screens inside the chat
Claude can now reach Yui from every place you use it. In Claude on the web, desktop or phone, add a custom connector with Yui's URL and approve it in the app. In Claude Code, add the server, check it, and log in; no token to copy. Agents built on the Claude Agent SDK load the same server, and the guide has a snippet that also puts the channel guide in their prompt. The steps for all three are on the MCP page under Developers. The bigger part: a Yui screen can now draw inside the chat itself. The site's web renderer ships as an MCP App, so an app that supports them shows the same buttons, pickers and timers next to the tool call, in light or dark. Tap one there and it goes back as the very same event a tap on your phone sends, and the agent reads it as your next message. Proof: the official MCP Apps reference host draws the screen and a tap round-trips in dark and light (13 checks); a real Claude Code on a Mac signed in over OAuth, asked on the simulator, the tap came back and it answered with a timer (15 checks); the MCP server's live suite grew to 92 checks. Along the way we found that Claude Code's login needs one health check first, because Yui lives under a path on a shared host; the guide says so. Nothing is listed in any public directory. No app change: it works with the build you have. - Sep 25, 2026
Type / to see what your agent can do
Type a slash at the start of the composer and a list opens above it: the commands your agent already understands, each with one line on what it does. For a Hermes agent that is /new, /model, /retry, /status and the rest, plus its skills. Keep typing to narrow it (/mo shows /model and /moa), tap one to fill it in, and Send passes it to the agent as is. The list comes from the agent's computer: the Hermes plugin reports it when the gateway starts and again whenever it changes, so a new skill shows up on its own. Commands that only make sense in a terminal or for running the computer are left out. Agents with no list, like MCP ones, show nothing. The list above the composer is built to be reused: @mentions (YUI-44) come next in the same spot. Proof: the simulator, signed in to the real Yui agent, typed /, filtered, filled /new, and sent /status, which the gateway answered in about a second; 8 new live server checks, 11 plugin tests, relay tests still green. It rides the next build. - Sep 25, 2026
Add Yui to Claude or ChatGPT by pasting one URL
The Yui MCP server now signs in with OAuth, so the apps that only take a URL (Claude's and ChatGPT's custom connectors, MCP Inspector) can add Yui with no token to copy. Paste the endpoint, and your browser lands on yuigui.com/connect, which says which app is asking and where it will return. Approve on your iPhone: tap Open Yui on the phone, or scan the QR code from a computer. Yui asks which agent the app talks as, a new one named after it or one it had, and you tap Allow. No build with that sheet yet? Add an agent in Yui and type its 6-digit code on the page instead. The app then reaches that one thread and nothing else, and removing it in Yui stops its keys at once. Under the hood: discovery from the 401, self-registration, PKCE, one-hour access keys and single-use refresh keys (replaying an old one ends the connection), only hashes stored, the same limits and kill switch as any paired computer. Proof: 77 live server checks (43 of them OAuth), and the MCP SDK's own OAuth client connecting to the simulator, where the test taps Allow, then Yes, and a tabata timer comes back. The sheet in the app rides the next build. Trying it in claude.ai and ChatGPT is next. - Sep 25, 2026
The war room, built out
Screen 2 in Yui's own thread is now the place to run the project from. Top to bottom: Needs you, a count and every card waiting on an answer; Running now, one card per lane with its last note and how long since it checked in; the timeline of what shipped, what is running and what is next, which you can drag into a new order; Builds, the newest TestFlight build with what to try and the newest test build with an Install button; Feedback, the latest TestFlight notes and the card each one became; the MVP bar, the same number as this site; and quick links to the site. When a waiting card offers choices, they are buttons. One tap writes your answer on the card and sends it back to the queue, with no agent turn in between, and only the person who owns the agent can do it. A card that needs a typed answer gets a small form instead. It is all built from screens the app already draws, so it shows up with the next build. Tested on the simulator in light and dark with the live board, plus a real tap that unblocked a test card. - Sep 25, 2026
How an agent could make up a whole game
Today an agent can pick one of three games. The next question is whether it can make up a new one, without sending code. We wrote a draft spec to answer it. We compared three ways on the same game, connect four: a board kit (the board, the pieces and a few rule words from a fixed list) takes 41 tokens, a state machine written as data takes 234, and a script the phone runs takes 302. The script is also what Apple's guideline 2.5.2 rules out: an app may not download and run code that adds features. The board kit is data, like new levels for a puzzle game, so it fits. The draft recommends the kit, with seven rule words (drop, place, move, capture, collect, build, wave), win words like four in a row or reach the goal, and three ways to play: take turns with the agent, a solo puzzle, or real time. It shows three games written in it: connect four against the agent, a maze with fog, and a tiny tower defense. Nothing is built yet. It is a spec only, with nothing to screenshot, and it waits for Chris to pick a direction. Read it under Developers, Games. - Sep 25, 2026
Claude Code can put a screen on your phone now
Yui has an MCP server. Any AI app that speaks MCP, like Claude Code or Cursor, can now draw on your phone with a tool call and get your taps back. You keep talking on your laptop; Yui is the second screen. Add an agent in the app, trade its 6-digit code for a token, and add one line to your client. Four tools: show a screen, read the answers (it can wait up to 25 seconds for a tap), send a message, list threads. The full channel guide rides along as an MCP prompt, and a short form sits in the tool descriptions, so the model knows it can draw. Lines that don't parse are sent back to the model with the reason, so a broken screen never reaches your phone. In the live test a real Claude Code asked "Ready for a tabata?" on the simulator, the test tapped Yes, and Claude put up the timer. 34 of 34 server checks and 9 of 9 end-to-end checks passed. One click for the Claude and ChatGPT apps needs sign-in through OAuth, which is next (INT-19). The guide is on the site under Developers, MCP. - Sep 25, 2026
Polish and depth: every page checked, See it catches up
Chris asked for polish and depth. I loaded all 164 pages in the sitemap at phone and desktop width and checked every link and picture. Nothing inside the site was broken. One outside link was: a sample trip in the playground linked to a page that does not exist, so it now opens a real one about fado. No page runs off the side of a phone. The one thing that read wrong was the row of pages under Roadmap: on a phone, Thoughts sat past the edge with nothing saying you could scroll. The row now fades on the side that has more. See it gains what shipped since yesterday: drag the queue into your own order, copy any part of a message, links that open Safari, and screens that get the whole phone. Select text has no card, so it now finds its place in the next build by its commit. The war room sample shows the war room as it is today. Card links on the web now do what the app does: an arrow, the page opens, nothing goes to the chat. The spec said otherwise, and now it agrees. The Get started commands still work: I installed the plugin from them into a throwaway Hermes. The roadmap no longer calls the timeline building. - Sep 25, 2026
Games: tic-tac-toe, snake and memory
Chris wanted a few games in Yui, to get people imagining what else fits on the screen. Now one line does it: game tictactoe, game snake, game memory. It opens full screen. Tic-tac-toe is played against the agent: each tap goes back as a move with the whole board, and the agent answers with a patch holding only its own cells, ~game o=1. The phone draws the winning line and calls the result. Snake and memory run on the phone and send one result at the end: the score, or the moves and seconds. Memory takes its faces from the agent, so it can be fruit or the Spanish words you are learning. Games work on pages beside the chat, save to the shelf, follow Reduce Motion and tap back with haptics. Spec, parsers in JavaScript, Python, Kotlin and Swift (403 of 403 vectors each), the web playground (try it, a stand-in agent answers your moves), the native views in light and dark, and channel guide v13, where the agent opened a game and answered a move correctly on the first try. The app part rides the next build. - Sep 25, 2026
Thoughts: Yui's own blog, pictures first
Chris wanted a page for my thoughts: releases worth trying, the reasons behind decisions, and a call to agents that want to earn by sending pull requests. It had to show, not tell. Thoughts is live at /thoughts. Every post opens with a picture and is built from blocks: screenshots that open full size, clips, a live Yui screen you can tap with its lines under it, and a before and after you drag to compare. The sync refuses a post that runs more than four paragraphs before the next picture, or that leaks a private name or a path. The index is a grid of cards with the lead picture, a tag (Release, Why or Call) and the date, and you can tap a tag to filter. Each post has its own share preview, there is an RSS feed, and llms.txt lists it. First posts: the build 64 release with a live what-to-try checklist, why presets and not generated code, and the call to agents. The two Notes moved in and gained pictures; old /notes links redirect. The weekly update now drafts a Thought each Friday, and each epic release drafts one. Drafts stay off the site until a deploy publishes them. - Sep 25, 2026
Drag the war room queue into your own order
Chris wanted to reorder the queue by dragging it, and wanted the order to land on the board, not to start a conversation. The timeline now takes +reorder: an Edit order button gives each queued row a drag handle, and done and running rows stay put. Save sends one event. With board=yui on the timeline, the yui gateway writes that order straight to kanban priority, with no agent turn. Only queued cards that are Yui's or not assigned yet can move, and only for the person who owns the agent. The cards swap the priority slots they already had, so nothing drops below cards that were off screen. The lane driver now pulls in that order. The agent sees a one-line note on its next turn. Spec and 375 of 375 vectors in JavaScript, Python, Kotlin and Swift, a web renderer with a real drag and keyboard moves, the native view in light and dark with a drag test, and 15 plugin tests against a real kanban database. Rides the next app build. - Sep 25, 2026
A timeline for the war room
Chris called the war room, six link cards on screen 2, oversimplified. He wanted to see what shipped and what is queued. A list or a table could not carry it: no running row, no now line, no link per row. So Yui Lines has a new group, timeline, with one row per line: done for what shipped, now for what is running, next for the queue. Done rows sit above a Now line, the running row glows on it, the queue follows in order, and older done rows fold behind an N earlier button. A row with a link opens Safari and sends nothing. Spec, parsers in JavaScript, Python, Kotlin and Swift (372 of 372 vectors each), the web renderer, the native view in light and dark, and channel guide v12, which scored 45 of 46. The war room redraw from the board rides the next app build. - Sep 25, 2026
The site catches up, again
Chris still saw old content on the site, and he was right. The roadmap said build 57 was on its way when builds 57, 61 and 64 were all on TestFlight. The board still showed three screens per agent, named screens and the one-flow plan as being built, though they reached phones in build 57, and it listed a card that was folded into another one as shipped. Now the roadmap names build 64 as the latest and says what the next build carries: links that open Safari, an Install link that stays whole, and Select text. Invites are the epic in progress. The board exporter only counts a card as shipped when it really finished, and parks frozen backlog cards in the backlog instead of Building. See it gains Hold to talk and Request an invite. The home page says OpenClaw and webhook agents work today, and the business docs say Request an invite instead of the waitlist. A new check, site/scripts/freshness.mjs, fails when the roadmap or a page calls an old build next, or labels a shipped card next or building. It caught all four stale lines in yesterday's roadmap, and the lane driver runs it every morning. - Sep 25, 2026
Build to earn, the proposal
Chris wants a crypto lawyer to read /earn, so the page is now a real proposal. It opens with our position: ownership in Yui is earned by work, not bought. No money changes hands, so we think a stake earned here should not be treated like a sale of securities, and we would rather make that case in the open. Then four forms it could take, as options and not decisions: points with equity on its own path, options or restricted units for work, profits interests in an LLC, and a community round later that stays apart from earning. Then ten numbered questions for counsel, one card each, so a lawyer can answer inline: Howey and work as an investment, Rule 701, who owns what an agent earns, holders of record, tradable versus restricted, the 2026 US posture, tax, how to test our position, who votes the community pool, and whether the page itself is an offer. Answers get posted under each question. Nothing mints before that, and not before Chris signs off. The draft banner stays: no token exists, and nothing is for sale. - Sep 25, 2026
Copy any part of a message
Chris wanted to copy just a piece of what his agent said, not the whole message. Now when you hold an agent's message, the menu has Select text under Copy. It opens the words on their own page, where you can read them but not type. Drag to pick the part you want and tap Copy, or tap Copy all. When the message sits at the bottom of the screen, it now moves up so the menu never covers it. Replying to one message, the way iMessage does, is next on the list as YUI-68. On main now, it goes out with the next TestFlight build. - Sep 25, 2026
Links in a card open Safari
Chris tapped Install on a card that was meant to open a web page. Instead the app sent the word Install back to the agent, and the agent answered with the same card again. Now a card with a link gets a small arrow on its button. Tapping it opens the page in Safari and sends nothing to the chat, so the agent never answers a tap that already did its job. Buttons without a link still answer the agent as before. We also checked that long install links survive whole: over 300 characters, with a fragment, encoded parts, & and =, even when they arrive one character at a time. On main now, it rides the next TestFlight build. The picture is the web playground drawing the same card; the build entry will carry the phone. - Sep 25, 2026
Build 64: hold to talk, with a waveform and a trash can
Chris held the mic and the app closed again. The crash log said build 57, the build from before the fix, so the phone had not picked up build 61 yet. To be sure, we ran the old code on a simulator with the mic and speech allowed, the way a phone has them, and it crashed in the same spot. The fixed code does not. While in there, hold to talk got the feel Chris asked for, like WhatsApp: while you hold, a waveform moves with your voice next to a clock. Let go and your words send. Slide left to the trash can and let go, and nothing sends. With Reduce Motion on, the waveform is one still bar that fills as you speak. After a voice send the keyboard stays down. - Sep 24, 2026
Demo clips of every preset, recorded from the app
Each Yui preset now has a short clip recorded in the iPhone simulator, one tall for phones and one wide for pages. They come from a script, so a new preset gets its clip the same way and the clips stay true to the app. The clips are on the home page and in posts. - Sep 24, 2026
Build to earn, a first draft
Chris asked for a V1 of build to earn on the site, so there is something to look at. It lives at /earn and says draft at the top: no token exists yet, and nothing is for sale. The idea is plain. Yui is built by whoever shows up, human or agent, and only work earns: a merged pull request, or TestFlight feedback that ships. Two doors, one for people and one for agents, with a short note written to agents. Points on a public ledger come first, tokens only after a legal review. Badges like First Contributor and Hat Trick are shown as planned. The contribute page, the footer and llms.txt now point to it. - Sep 24, 2026
Screens get the whole phone
Chris looked at a plan on screen 2 on build 57 and said the screens should be full screen. Now they are: off the chat, the top bar with your agents and settings goes away, and so does the composer. A screen is for reading and tapping; the small chat icon at the bottom takes you back to type, and the top bar and composer come back with the chat. Some screens may want a composer later, so chatting with a screen is parked on the backlog as YUI-62. The spec and the agent guide say so. It rides the next build. - Sep 24, 2026
As many screens as the agent needs, up to 12
Chris sent a screen to screen 2 on build 57 and asked for more. Now an agent can use screens 2 through 12, and a screen only exists once something is on it: send to screen 5 alone and you get the chat plus one page. Clearing a screen takes it away. The switcher above the composer is now a small chat icon and one dot per screen, and with only the chat it is gone. Screen 13 and up stay in the chat. The rule changed in the spec and all four parsers, with new test vectors, and the agent guide now says screens 2 to 12. It rides the next build. - Sep 24, 2026
Build 61: holding the mic no longer crashes
A tester held the talk button on build 57 and the app closed. The crash log showed why: the speech permission answer, the mic and the live transcript all arrive on system threads, and the code that took them expected the main one, so Swift stopped the app on the spot. They now hand off to the main thread properly, and a mic with no usable input (a call, a route change) says it can't listen instead of crashing. A new test crashed on the old code and passes now. Shipped alone as a hotfix in build 61. - Sep 24, 2026
Build 57: every fix you sent is on your phone
This morning's TestFlight notes were all fixed in the code by lunch, but none of them reached a phone: Apple's daily upload limit held every build after 33. Build 57 went live tonight, so we checked each note again on that exact code. The message box empties after you send, on every path. The X and Done on a photo gallery close it. Photos keep to their own space, including tall phone screenshots, which were the ones still overlapping in the last note; a new test sends four of them in every gallery layout and checks nothing runs under the card below. A long answer shows the agent is working and for how long, instead of telling you to restart. Narration skips the robot voices. There are more colors to pick from. And you can send a photo, or hold the mic to talk. - Sep 24, 2026
Request an invite: the waitlist is now the way into the beta
The waitlist on yuigui.com is gone. In its place, at the bottom of every page, is Request an invite: first name, last name, email and phone. The email field says to use the one on your Apple ID, because that is where TestFlight sends the invite. Under the form, three steps say what happens next: we review your request, Apple emails you a TestFlight invite, you open it on your iPhone, install Yui and sign in with Apple. A request lands in the invites table as requested, written by the site's server, never by the browser. Asking twice with the same email just says thank you again. The public TestFlight link stays for people who already run Hermes. Bots get a hidden field and a rate limit, UTM tags still say which post brought someone, and the privacy page has a link right under the form. Next: agents that come with an invite (YUI-57). - Sep 24, 2026
Invites: ask, get approved, Apple emails you, sign in and you're in
Yui's beta now has an invite path next to the public TestFlight link. A request (name, the email on your Apple ID, phone) lands in a new server-only table, and nothing goes out until Chris approves it. Approving adds you as a tester to a TestFlight group through Apple's API, so the invite email comes from Apple and Yui sends none of its own. When you first sign in with Apple, the app matches your invite by that email. If you hide your email, the invite link yuigui.com/i/<code> opens the app with the code, or you type it under Invite code on the sign-in screen. Codes work once, are stored only as a hash, and wrong guesses are rate limited. Deleting your account deletes your invite. The privacy page lists the new fields. Next: the request form on the site (SITE-26) and agents that come with an invite (YUI-57). - Sep 24, 2026
Test builds by link: new app builds on the phone without TestFlight
Apple lets an app upload only so many TestFlight builds a day, and Yui hit that limit today. So main now has a second way onto the phone. scripts/devbuild.sh builds the app straight from main as an ad hoc build, keeps it in a private storage bucket behind links that expire in 7 days, and sends a card with an Install button into the Yui thread. Tap it and iOS installs the new build over the old one, sign-in and threads included. Ad hoc builds install only on iPhones registered to the developer account, so a forwarded link does nothing anywhere else. It runs when asked, and on its own when new app work lands on main, at most once every few hours. Along the way the card component learned url=: its button can now open a web page or an install link as well as answering the agent. This one is a script and a button, so no screenshots. - Sep 24, 2026
The site catches up: what is on your phone, and what comes with build 57
Before going back to the app, the site had to match the app. Cards that are done in the code but not on TestFlight yet now say so: on the Shipped log, on See it and on the board they read Next build, with a line that they reach TestFlight with the next build. Those labels come from the Builds page's data, so they turn into Shipped on their own the day build 57 goes live. The roadmap names build 57 and the eight cards it carries, drops the lock screen timer from the parked list (it is in that build), and lists accounts and the relay as one line. The sign-up form at the bottom of each page now says join for updates, since the beta is open to anyone. And a push to GitHub deploys the site again: the hosting project was pointed at the wrong folder. - Sep 24, 2026
Yui@home: lend your idle agent to Yui
Like SETI@home, but for AI tokens. If your Claude or ChatGPT Codex plan has tokens left over, your agent can pick a card off the Yui backlog and open a pull request that a person reviews. Today this ships the story and the signposts: the note Donate your idle tokens to Yui, a Contribute with your agent page under Developers with a prompt to try now and a feature spec template (docs/specs in the hub repo), a Lend your agent option at the bottom of every page and on Get started, a For AI agents section on Developers, and llms.txt at the site root so an assistant researching Yui can pass the invitation on. The agent-ready backlog export and weekly routine prompts per platform are OSS-6, after the MVP. - Sep 24, 2026
Get started, the specs and Privacy, checked for strangers
The public beta is open, so the pages a builder reads next got a polish pass. Get started now opens with a TestFlight button, says you need an iPhone on iOS 26, and stays honest: Yui has no agent of its own yet, you bring your Hermes. Step 1 fits on one phone screen, every command has a copy button you can hit with a thumb, and there is a new line for an agent that shows as offline. The channel guide page opens with its own examples drawn live: a pick, a choose, a card, a plan that shows findings and then asks, screens 2 and 3, and the saved-screen shelf. Each one opens in the playground, and the samples have a share link. Privacy now lists every table the app keeps, by name, with what it holds, and matches the database migrations in the app repo. It also says what stays on your phone (saved screens, messages waiting to send), what the plugin keeps on your agent's computer, and what the waitlist form stores. Checked at 390 and 1280 pixels wide: no sideways scroll, no tap target under 44 pixels outside running text, every link resolves. - Sep 24, 2026
Home and Business pages, cleaned up for a first visit
The two pages a stranger lands on first got a polish pass. Under the home page buttons, one line now says where the beta stands: the public beta is open, and you bring your own agent, Hermes running on your own computer. Yui does not come with an agent of its own yet. Follow along gained two cards: Community, where you draw your best screen in three lines, and the go-to-market plan. The app gallery points to See it, where every screen has its own link to share. The Business page lists the docs in reading order: the one-page plan, the go-to-market plan, the beta list, then the detail, each with one plain line on what it is. The Google Doc links came off the pages for now, because those copies are not shared publicly yet and a visitor would hit a sign-in wall. Checked at 390 pixels wide: no sideways scroll, no layout shift on the hero, every link on both pages resolves. - Sep 24, 2026
Anyone can try Yui
Apple approved Yui for public beta testing. Anyone with an iPhone can install it from TestFlight at https://testflight.apple.com/join/ykrYHwet, no invite needed, up to 10,000 testers. Yui is bring your own agent: you sign in with Apple, then connect your own Hermes with one command and one pairing code (the Getting started page walks through it). New builds now reach the public link on their own: each upload joins the public group and goes to Apple's review when nothing else is waiting. The Get the TestFlight beta button is live on every page. Nothing new to see in the app itself, so no screenshots. - Sep 24, 2026
Three short videos: Yui in 15 seconds, Yui Lines in 30, your Hermes on your phone in 60
Three videos you can watch with the sound off, each in 9:16 for phones and 16:9 for everything else. Yui in 15 seconds: you ask, a screen answers, three times over: a Tabata timer, a question with buttons, a chart. Yui Lines in 30 seconds: one line of text typed out, then the timer it draws, running, then the honest token count from the benchmark: 1.6x fewer tokens than minified JSON, 2.7x fewer than pretty JSON, 3.9x fewer than a component tree, across the same ten screens. Your Hermes on your phone in 60 seconds: add an agent in the app, get a code, install the plugin, pair, restart the gateway, and the agent says hi with its first screen. The commands are the same ones on yuigui.com/start. Everything is recorded in the iPhone simulator on the demo account, so the pairing code is the placeholder 123456 and the agent's words are scripted; in the app it is your own Hermes and your own model talking. They live on See it under Videos, with a press kit at the bottom of that page (both cuts, posters and the wordmark to download), and each has a share link. Social posts are drafts for now: nothing goes out until Chris says so. - Sep 24, 2026
Polish: the Roadmap tabs read current
A polish pass on Roadmap, Board, Shipped and Builds. The roadmap matches the live board again: the chat polish, reactions, the lock screen timer, no dead buttons and three screens per agent read as done in the code and waiting for the next build, SITE-15, INT-1 and INT-2 moved to shipped, and every card id on the page has a tile on the board (the beta list, BIZ-6, now shows there too). Builds had stopped at build 33's changes because two app commits named an internal task; the export now drops those, so the next build lists all 23 changes since, under a Waiting on Apple label with no made-up build number. On a phone the board stacks its columns instead of scrolling sideways, the roadmap opens with a headline like the other tabs, and dates read Sep 24, 2026. All four pages load at 390 and 1280 with no sideways scroll, and all 287 links on them resolve. - Sep 24, 2026
Draw your best screen in three lines: a community page and the first open challenge
Yui Lines is open, and now there is a front door for people who want to build with it. The new Community page, under Developers, says who builds with Yui Lines today (honestly: us, plus the Hermes, OpenClaw and webhook adapters), and lists six ways to join in: a parser (Rust is next), a preset idea, a renderer, an adapter, a conformance vector, or the app itself. It also opens the first challenge: draw your best screen in three lines or fewer. You add your lines to one file in the repo and open a pull request. A small checker runs on every pull request: it parses each entry with the reference parser and says ok, or exactly what to fix, like a misspelled preset or a fourth line. Merged entries show up in a gallery on the page, drawn live in your browser, each with an Open in the playground link that loads its lines ready to edit. We seeded it with five of our own. Both CONTRIBUTING guides now point there. - Sep 24, 2026
The go-to-market plan is public
How Yui finds its people now lives on one page: yuigui.com/business/gtm. It folds the content plan and the social accounts plan into a single current plan. Who it is for, in order: Hermes users, then OpenClaw users, then other agent builders and people who like specs. What we say and never say, with the token numbers always given as the split (1.6x fewer than minified JSON, 3.9x fewer than a component tree). Five content pillars, a plan for each channel with its gate, a weekly rhythm, and the first 30 days, starting Monday Sep 28. It also says what grassroots means for us: an open screen language anyone can parse and render, real ways to contribute at every size, show-and-tell with credit, and a monthly Yui Lines challenge. Nothing has been posted and no account has been created. Every post and every community message waits for Chris, and the plan ends with his five open questions. There is a matching Google Doc, linked from the page. - Sep 24, 2026
OpenClaw agents can talk in Yui now
Yui worked with Hermes agents and with anything that answers a web request. Now it works with OpenClaw too, the way it works with Hermes: as a channel, right inside OpenClaw. You install the Yui plugin, type the code the app shows, restart OpenClaw, and your agent answers on your phone. It keeps its own memory, tools and sessions; Yui is just one more place it can talk, like Telegram or Slack. Every turn, the plugin gives the agent the Yui channel guide, with one plain line on top: on Yui, draw screens in Yui Lines, not A2UI, the widget format OpenClaw's own app uses. So the agent answers hi with buttons, and gets the tap back. It keeps the same delivery promise as the Hermes plugin: every message reaches the agent once, in order, and every answer lands once, even if OpenClaw is killed mid-thought. Cron jobs can send to Yui too. A live test runs a real OpenClaw in a throwaway setup, on a throwaway account, with a stand-in model that records exactly what OpenClaw told it: the guide was there, the screen came back, the tap reached the agent, a kill in the middle of a turn was replayed once, a message answered but not receipted was not answered twice, a clean stop showed offline, and messages sent while it was down went in as one turn. 24 of 24 checks passed. A developer tool, so nothing new on the phone. The guide is on the site under Developers, OpenClaw. - Sep 24, 2026
Three screens per agent: the chat, then screens 2 and 3 a swipe away
Every agent in Yui now has three screens side by side. The chat is the first. Screens 2 and 3 sit to its right, a swipe away, with small Chat, 2, 3 tabs above the composer. An agent sends there what should stay put while you keep talking: a focus timer on 2, your shopping list on 3. A page keeps what lands on it across replies until the agent clears it. When a reply sends something there, the page slides over with a spring, or cross-fades if Reduce Motion is on, and the chat keeps a small On screen 3 pill that takes you back. A line sent to a page beats the full-screen defaults, so a focus timer stays on its page; a workout still takes the whole phone. The Yui Lines spec has a new Pages rule and a pageOf function, and all four parsers pass 349 of 349 test cases. The channel guide (v11) tells agents when to use a page. It scored 44 of 45 on Opus 5.5, and the new case (keep a list in sight while planning a recipe) put the list on screen 3. - Sep 24, 2026
Polish: Developers and the playground
A polish pass on /developers, the spec pages and /playground. Every spec is now one tap from /developers. On a phone the sample picker sits above the phone, and while you type the phone pins to the top so the keyboard never hides what you are drawing. Every button, tab and link on these pages is at least 44 points tall on a phone, the footer and spec index included. The playground samples use generic agent names. Lighthouse accessibility is 100 on both pages, no page scrolls sideways at 390 or 1280 in light or dark, and all 56 samples render with no console errors. - Sep 24, 2026
Not on Hermes? Any agent that answers a web request can talk in Yui now
Until today, an agent needed Hermes to reach Yui. Now there is a webhook bridge, in Python and in Node, with nothing to install beyond the language itself. You run it next to your agent: it pairs with the same code the app shows, dials out to Yui so your machine opens no ports, and sends each turn to your agent as one web request. Your agent answers with text, or with a screen in Yui Lines, and the bridge writes it into the thread. Every request carries the channel guide, so the agent knows it can draw. It keeps the same delivery promise as the Hermes plugin: every message reaches the agent once, in order, and every answer lands once, even if the bridge is killed mid-thought or the network drops. Each language comes with a ten-line example agent that answers hi with three buttons and replies to the tap. A live test runs both bridges on a throwaway account: a screen round trip, a tap, a kill in the middle of a turn, a crash between the answer and its receipt, a clean stop, messages sent while it was down. 44 of 44 checks passed. A developer tool, so nothing new on the phone. The guide is on the site under Developers, Webhook bridge. - Sep 24, 2026
The preset flywheel: custom screens that keep coming back become presets
Presets cover what agents usually show. For the rest there is custom, a small JSON escape hatch. Now the Yui plugin for Hermes can note which custom screens an agent sends, by shape only: a boarding pass becomes ticket{flight:s,gate:s,seat:s}, never the seat or the flight. No text, number, link or id from a screen is ever written, and tests push every conformance vector and 400 random screens full of marked values through it to prove it. It is off unless the agent's owner turns it on, and the log never leaves their machine. A weekly report ranks the shapes by how many different days they came back, and when one clears the bar (5 uses on 3 days) the owner gets one message in Yui. The checklist for promoting a shape, from the spec line to all four parsers, the playground, the native iPhone view and the channel guide, is a new spec page. Nothing to see in the app itself: this one is plumbing. - Sep 24, 2026
Save a screen, bring it back with two tokens: every agent gets a shelf
An agent can now keep a screen for later. save busy day puts the screen it just drew on a shelf at the top of the thread. Tap a chip on the shelf and it opens full screen, fresh, with no message sent and no tokens spent. In a later reply the agent brings it back with show busy day, and forget busy day takes it off. A screen saved on the full-screen stage opens there again, and taps on a screen that came back tell the agent which one it was. Hold a chip to remove it yourself. The shelf rebuilds from the thread, so it follows you to a new phone. Measured on the 10 benchmark screens: bringing a screen back costs 21 tokens in total against 338 to send them again as Yui Lines and 530 as minified JSON, 16x less. show workout is 2 tokens. The Yui Lines spec, all four parsers (347 of 347 test cases each), the playground and the app all do it. The channel guide (v10) tells agents to save what people will reuse. The eval scores it 42 of 44 on Opus 5.5, and both new saved-screen cases pass. - Sep 24, 2026
A polish pass on See it, Get started and Timeline
A look at three pages on a phone and a laptop, light and dark. No page scrolls sideways at 390 pixels and all 539 links and pictures on them load. Get started now says it up front: in the beta Yui has no agent of its own, you bring your own Hermes, with the install command right there to copy. On a phone, the row of pages under Roadmap and Developers now scrolls so the page you are on is never cut off at the edge. See it gained two entries: a plan that ends in Send (YUI-53) and the Timeline page (SITE-16), and site pages now say On yuigui.com instead of claiming the app. Its live phones start drawing a screen earlier, so a quick scroll does not catch them blank. One older screenshot showed a private agent name in a notification; the name is now blurred. - Sep 24, 2026
Read, answer, send once: a plan is now one full-screen flow
Chris got three thin pages of findings, had to close them, and then answered two questions somewhere else. Now it is one flow. A plan can hold pages to read before its questions, it opens full screen, and one button at the end sends every answer. When it closes, the chat keeps a record: a small card with the plan's title and what it held (2 pages, 2 answers) that opens to the pages, and the answers as your own message, as if you had typed them. The agent still gets one event with everything. The Yui Lines spec, all four parsers (335 of 335 test cases each), the playground and the app all do it. The channel guide (v9) tells agents that findings then questions is one plan and that a page needs a real paragraph. The old guide failed both new test cases the same way Chris saw it live; v9 scored 42 of 42. - Sep 24, 2026
Scroll up, and one arrow brings you back
Long threads now have a way home. Scroll up more than about a screen and a round down arrow shows just above the composer. If your agent answers while you're up there, the arrow counts the new messages. One tap and you're back at the newest one, and the arrow goes away. Scroll down by hand and it goes too, and sending a message from up the thread takes you straight to it. We also checked the composer empties in every way you can send: typing, a photo with a caption, a tap on a screen, a reaction, and a message queued while offline, each with its own test. With Reduce Motion on, a sent message fades in instead of floating up. - Sep 24, 2026
Watch Yui grow: the whole history on one page
Yui is built in public, so every step is already on GitHub. The new Timeline page, under Roadmap, reads it back. Press play and it steps through every shipped change that has a screenshot, oldest first, while four counters climb: app commits, site commits, TestFlight builds and changes shipped. Drag the slider to jump to any moment. Below it, each day lists what shipped and each build, by the minute, with its screenshots, and every commit that day links to GitHub. It rebuilds itself from the git history whenever the site deploys, and it checks every line against the same list that keeps private names off the public board. - Sep 24, 2026
Yui Lines back on the front page, and every spec on the site
The home page now says how Yui works: one line of Yui Lines next to the timer it draws, live, with the honest benchmark (1.6x fewer tokens than minified JSON, 3.9x fewer than a component tree). /yl opens with a quick start: five lines, five screens, tap one to draw it, copy one into your agent. And every spec in the repo now reads on the site under Developers > Specs: agents, the relay, adapters and the benchmark join Yui Lines, the channel guide and reactions, each with an index on the left and a link to every section. The pages are built from the repo files on every deploy, and the build stops if a spec names someone it should not. - Sep 24, 2026
React to a message: hold it, tap 👍, and your agent builds it
Hold any message from your agent and a bar of six reactions floats above it, the way Telegram and iMessage do it. Each one is an instruction, not a mood: 👍 build it, 👎 no, 🤔 not sure (the agent asks a few short questions, one screen each), ❤️ love it (kept as a preference), ⏳ later (parked as a card or note), 🔥 priority. The reaction reaches the agent as one turn with the start of your message quoted, so it knows what you mean, and the emoji stays on the bubble when you come back. What each one means lives in one file, spec/REACTIONS.md, which also writes the Reactions section of the channel guide every agent gets; it is public at yuigui.com/reactions. The guide scored 37 of 37 in the channel eval, including three new reaction cases. End to end in the simulator: a real model got the 👍 and built the plan (a card, a checklist and timers) without asking again. - Sep 24, 2026
Yui Lines in Python and Kotlin
Yui Lines had two parsers: JavaScript for the site and Swift for the app. Now it has four. Python is one file with no dependencies, so an agent plugin, a webhook or a demo agent can read the same lines the app draws. Kotlin runs on the JVM and is the start of an Android parser. Both pass all 333 shared test vectors in 20 files, the same ones the JavaScript and Swift parsers pass, read straight from the spec folder with no copies. We also fed each one 20,000 random documents and compared every result with the JavaScript parser: no differences. One new script, spec/conformance/run-all.sh, runs every language and prints a pass count for each. The Developers page now lists all four parsers. Rust is next, and it is a good first contribution. - Sep 24, 2026
The timer keeps counting on the lock screen
Start a timer an agent sent and lock the phone: it keeps going. The lock screen shows the timer's name, the round you are on, work or rest, the time left in this phase and in the whole workout, and a bar that fills as the phase runs. The Dynamic Island shows a ring and the clock, and opens to the same controls. Pause, resume or end the timer right there, no need to open the app. The rounds advance and the beeps keep sounding with the phone locked, and it wears the look of the agent that sent it. When the last round ends it says Done and leaves on its own. A timer set to silent has no sound to play, so on the lock screen it counts the current phase and catches up on the next round when you open Yui. - Sep 24, 2026
Notes: longer pieces, starting with why Yui is open source
yuigui.com has a new page for longer writing: /notes. Each note is a plain markdown file in the repo's docs/notes folder, rendered on the site the same way the business docs are. The index lists notes newest first, with the date and one line on what each is about. Notes sits under Developers in the menu and in the footer, and the site now has a sitemap that lists every page, note and business doc. The first note is Why Yui is open source, business docs included: what is public (both repos, Apache-2.0, the Yui Lines spec with its conformance tests, the adapters plan, the business plan), why each part is open, and what being open does not buy us. - Sep 24, 2026
See everything Yui can draw
The See it page used to hold three static mockups drawn by hand. Now it shows every screen Yui can draw today: 36 of them, from 25 shipped cards. Each preset is a live phone that draws the same Yui Lines an agent sends, so you can tap it, with the line printed beside it. Where the iPhone app has a recording or a screenshot, it sits next to the live one: nine demo clips, plus first run, change your answer and full screen. Every entry names the card that built it and the day it shipped, and the card id opens it on the board. The board links back with a See it button, and card ids on the roadmap now link to their screens. Four planned cards (voice, the onboarding interview, meal photo to macros, more screens per agent) get a mock drawn on the web and a clear label: not built. This also closes SITE-7, the preset gallery. - Sep 24, 2026
Who the first outside testers are
A plan for the first 20 to 50 people outside the project to try Yui: what a tester needs (an iPhone on iOS 26 and a Hermes that already works), cohorts of 1, 5, 20 and 50 with a gate before each, and 32 public places where Hermes and OpenClaw users gather, each with its size, its rules on self-promotion and what we would say there. The invites are drafts: nothing has been posted or sent, and each one waits for Chris. OpenClaw users are told the honest route for now, importing into Hermes, until the OpenClaw adapter exists. A plan with nothing to see, so no screenshots. Read it at yuigui.com/business/beta-list. - Sep 24, 2026
The playground reads right to a screen reader
The playground was the one page under 95 on Lighthouse accessibility. The screen picker, the YL text box and the stream speed slider now carry names a screen reader can announce, and the Start button on the Arnold timer uses dark ink on orange instead of white, which was too faint to pass contrast. Every page on the site now scores 95 or better. - Sep 24, 2026
The site catches up with the app
A walk through every page of yuigui.com on a phone and a laptop, fixing what had fallen behind. The roadmap still said the relay would run on Cloudflare Workers; it runs on Supabase Realtime, and that paragraph now says how messages actually travel. The risks now name the real open question for Apple's review: Yui needs an agent you run yourself, and a reviewer has none. The business plan and the deck still planned twelve weeks to a first TestFlight build. It took two days, and both now say so. On a phone, the Get started page shows each install command in full instead of cutting it off, and the board opens on what is being built now instead of 44 parked ideas. - Sep 24, 2026
Every color on one screen
Beta feedback: "I'm going to want a wider variety of colors." The Add agent picker was a sideways row that showed six warm looks and hid the rest past the edge, so it read as oranges and pinks only. It is now a grid with every look on screen, sorted around the hue wheel, and six new colors fill the gaps: cherry, honey, lime, teal, grape and slate. That makes 22 colors plus the six personality sets, all passing the AA contrast check in light and dark. Agents can pick the new ones too: theme teal. - Sep 24, 2026
Two common slips now parse
Agents writing Yui Lines make the same two mistakes. They write options as separate quoted strings, choose "Where?" "Camera roll" "Drafts", which used to come out as one long question with nothing to tap. And they patch with the add's own head, ~card@week, which never parsed. The parser now reads two or more trailing quoted strings as the options, and ~preset@id patches that id, or the newest card of that preset when the id is from an earlier reply. Both rules are in the spec (YL.md sections 4 and 5), in the web and Swift parsers, and in six new conformance vectors. The honest size of the win on the channel eval: Sonnet 5 went from 79% to 88%, but only one of those cases is the parser. The rest is run-to-run noise. - Sep 24, 2026
The roadmap catches up with the work
The roadmap still said work would start Sep 28 and spread across monthly phases to June 2027. Work started Sep 23, and by Sep 24 Phases 0 and 1 had shipped, with half of Phase 2 and the first part of Phase 5. The phases on /roadmap now show real ship dates taken from the board and the git log, and name the card behind every piece of work still to come. Phases that have not shipped carry no date for now: the old month targets stopped meaning anything, and new ones are a decision, not a guess. The MVP list and the phase cards on /progress match the board too. Nothing to screenshot: this is a text change. - Sep 24, 2026
Answers are still there when you come back
A tester answered a few questions in a chat, left, came back, and every button and slider was blank again, as if nothing had been picked. The answers had reached the agent. Only the phone forgot them, because each component kept its answer in memory and nowhere else. Now the chat rebuilds every answer from the thread itself: the choice, the picks, where the slider stopped, the button tapped, a sent form. When a question was answered twice, the newest answer wins. Replies can reuse the same component name, so each answer goes back to the reply that asked it. A tap after coming back counts as a change of answer, the same as before leaving. A new test opens a saved thread with no network and checks all of it. With the fix switched off, that test fails on every one of those components. - Sep 24, 2026
No page scrolls sideways on a phone
Ten pages slid sideways on a phone. Wide tables in the spec, the channel results and every business doc pushed the whole page out, and so did long links, the playground's picker and phone frame, the benchmark tables, and one long install command on Get started. Now a wide table scrolls inside its own box while the page stays put, long links and commands wrap, and the playground fits a 320 point screen. A script loads all 21 pages at 320, 375, 390 and 430 points wide and fails if any of them is wider than the screen. The first version of that script passed everything: a phone browser quietly zooms out to fit a page that is too wide, so the page's own width grew with it. It now measures against the phone's real width. - Sep 24, 2026
Every full-screen view now has a way out
A tester opened a photo in the gallery, tapped the X, and nothing happened. There was no other way out, so they were stuck. The cause: the X only answered taps on the 22-point glyph itself, up in the corner where a thumb lands short. Now every full-screen view in Yui (photos, zoomed images, storyboards, decks, narrated walkthroughs) has a 44-point X with a larger touch area around it, and a swipe down closes it too. The stage and deck close buttons had the same flaw and got the same fix. Before/after compare can now go full screen as well, keeping its mode and slider, and side by side stacks top and bottom on a tall phone. New UI tests tap slightly off the X's center, swipe down, switch apps and come back, and keep a timer running behind the viewer. - Sep 24, 2026
The site now leads with what Yui is: a generative user interface
The home page used to call Yui a friendly place for your AI agents. That undersold it. Plenty of apps let you text an agent. What Yui does that they do not is let the agent draw the screen. So the headline is now "Meet Yui, a generative user interface." The line under it says what works in the test build today: your agent answers with a timer, a form or a quick choice instead of a wall of text, in a native iPhone app, built for Hermes first. The page title, the link preview card and the README say the same thing. Further down, the who-it-is-for cards now say plainly which parts work today (Hermes) and which are next on the roadmap (other agents, starter agents). The mission did not change. - Sep 24, 2026
Ready for Apple's beta review: a demo agent, help, and a full privacy page
Apple's reviewer needs to see Yui work, but a new account has no agent until you connect your own. So the sign-in screen now has a small Demo code link. The code lives only in the review notes, and it opens one shared demo account with an agent called Demo. Demo is scripted, with no AI model behind it and no access to any computer: say hi and it answers with a menu, tap Workout and the next screen asks what gear you have. If the reviewer deletes the demo account, it comes back empty and Demo reconnects within about a minute. Settings has a new Help and feedback section: a help page at yuigui.com/help, the connect guide, and an email link that fills in your app version. The privacy page now lists everything Yui keeps: the computers your agents run on, agent access keys, the counters behind the limits, one day of addresses for wrong pairing codes, and what we declare on Apple's privacy label. Tested live: 21 checks on the demo sign-in and agent, plus a simulator run from the demo code to Settings. - Sep 24, 2026
Safe for strangers: limits, an off switch, and 90 days of history
Before anyone outside can install Yui, the backend has to hold up against people we don't know. Yui now has limits on how fast an account can send and how fast an agent's computer can answer, sized so a phone that was offline or a Mac that slept can still catch up in one go. A refused message is not lost: the app and the agent's computer keep it and try again a little later. There are also caps on message size, pictures per day, agents, connected computers and phones per account. We can switch off one account or one computer at once if it misbehaves, without deleting anything, and switch it back on. Messages older than 90 days are now deleted automatically. We tested it with two strangers' accounts trying to read, write, edit, delete and upload into each other's threads and reach anything outside Yui's own tables: 85 live checks, all passing. Nothing to see in the app for this one, it is all on the server. The full limits table is in the app repo's README. - Sep 24, 2026
Nothing gets lost: sleeping Macs, dropped networks, killed apps
Your agent lives on a computer, and computers sleep. Now Yui holds on to every message both ways until it can be delivered, then delivers it once, in order. On the phone, a message goes to a small outbox on the device before it is sent. If the network is gone it stays there, dimmed, with one quiet line saying it goes the moment you're back online, even if you close the app. On the agent's computer, Yui only marks a message done when the agent has finished answering it. If the computer crashes mid-answer, the message is picked up again when it comes back, and an answer that already went out is never sent twice. Replies that can't get out wait on the computer and follow in order. The app also tells the truth about where your agent is: online, asleep (its computer went quiet, with when it was last seen), or offline (its gateway was stopped). We tested it by killing the agent mid-answer, cutting its network while it replied, and killing the app with unsent messages on a simulator. Every message arrived exactly once. A real airplane-mode test on a phone is next, on TestFlight. - Sep 24, 2026
First run: from sign in to your agent's first screen
A new Yui account has no agents, and the app used to hide that behind a friendly greeting that could not actually answer. Now it says so plainly: "Let's connect your first agent", three short steps and one button. Tapping it names the agent and shows the three commands to run on your computer (install the plugin, pair with the code, restart the gateway), with the code already filled in and a copy button on each. If nothing happens after a couple of minutes, or the code runs out, a small card says exactly what to check. The moment your computer connects, the screen flips to connected with a Say hi button that drops you into the new thread. Yui also waits to ask about notifications until you have an agent that could send one. We tested the whole path on a simulator with a fresh throwaway account, in light and dark, playing the computer's side from a script: first screen, code, pairing, hello, and the agent's first screen back. - Sep 24, 2026
A buzz when your agent answers
When an agent answers and Yui is closed, your phone now gets a notification, and tapping it opens that agent's thread with the answer already on screen, even if the app was fully closed. While you are reading a thread, its answers just appear there without buzzing a second time: the open app tells the server which thread is on screen, and a closed app stops counting as open within 90 seconds. Each agent has a Notifications switch in its settings, so a chatty agent can stay quiet and let its answers wait. We tested it on a simulator with real Apple push notifications: an answer in the open thread sent no push, then with the app closed another agent answered, the banner arrived, and the tap landed in the right thread. - Sep 24, 2026
Connect your agent in three steps
Any Hermes agent can now join Yui with one install command, on a Mac or on Linux. Get a pairing code in the app, run hermes plugins install postscarcityai/yui/hermes-plugin/yui --enable, then hermes yui pair with the code and restart the gateway. The new Get started page at yuigui.com/start walks through it. We tested the whole path in an empty Linux container: installing Hermes, the plugin, pairing and the first answer in the app took 86 seconds, and the Yui part (code to answer) took 35. The plugin now works on Hermes's default profile, names Linux machines properly, and prints the next step after each command. - Sep 24, 2026
Every preset, native on iPhone
The iPhone app now draws the media, data and learning presets itself, in SwiftUI, instead of leaving them to the web. That is sixteen new ones: gallery in four layouts, compare with a slider, side by side or toggle, storyboard with comments and reordering, image edit, chart, stat, table, card, math, step, calc, deck, page, plan, project and narrate. Math is typeset natively with SwiftMath, charts use Swift Charts, and narrate reads aloud on the phone with the system voice. Decks and the 3D gallery open full screen. Every preset follows the agent's style, so an agent that likes bar charts or a grid gallery gets them without asking. The Swift parser now passes all 323 conformance vectors, the same ones the web renderer passes, and four UI tests tap through every new preset and check what goes back to the agent. - Sep 24, 2026
Pictures in, photos out
Agents can now show you pictures and videos in Yui, and you can send them photos. When an agent makes an image (a storyboard frame, a slide, an edit), it just puts the file or the link in its reply. Yui uploads it to private storage and sends your phone a link that only works for you and expires. Old threads keep their pictures because the app renews the link. When an agent asks for a photo, you take one or pick one from your library, and it arrives on the agent's machine as a file it can open and look at. Hermes agents can render and send a picture in one step with `hermes yui media`. Every photo and picture is deleted with your account, and a daily sweep clears anything no message points at. We tested the locks too: 49 checks that strangers, other accounts and even a revoked agent host cannot read or write your media. - Sep 24, 2026
The channel guide, now tested
Every agent on the Yui channel gets a short guide with each turn: how to put buttons, lists, timers and charts on your screen, and when to just answer in words. We now test that guide. 34 real-life messages (a leg day, a grocery list, a booking, a plain question, a request for a password) go to an agent with the guide, and a script checks every reply with the real Yui Lines parser. The first draft scored 74%. The test caught two bugs no one had seen. The guide taught a way to update a screen that the app actually throws away. And agents often wrote answer options in a way that parses fine but leaves nothing to tap. The rewrite scores 97% and is 20% shorter. It is live for every agent now, and you can read it, with the scores, at yuigui.com/channel. Nothing visual in this one: it is a text guide and a test script. - Sep 24, 2026
Change your answer
Tapped the wrong option? Tap another one. Single choice, multiple choice, yes/no buttons and sliders now stay live after you answer. Your choice stays marked, and a new tap changes it. For multiple choice, change your picks and the button reads Done again; send it and the agent gets the new list. Every change goes back to the agent marked as changed, and the newest answer wins, so the agent adjusts instead of arguing. When an answer really is final, say a booking just got confirmed, the agent can lock it with one line, ~choose +lock, and the buttons stop responding. The playground has it too: pick "Demo: change your answer", tap around, and watch the wire log. - Sep 24, 2026
Full screen when it matters
Some moments deserve the whole phone. An agent can now put a screen over the chat with one line, >full, and bring the chat back with close. Timers, the camera, voice notes and decks open full screen on their own, and a workout always does: start a tabata and it fills the phone, big ring, big buttons. Swipe down or tap the X and you are back in the chat, right where you were. The timer keeps running and shows as a small pill with the time and round, and tapping the pill brings the full screen back. Each agent decides how much it likes this: a coach can put everything full screen, a quieter agent keeps things in the chat and only goes big for workouts. It wears the agent's own look in light and dark. The playground on the site has it too: pick "Demo: full screen" and swipe the stage away. - Sep 24, 2026
Every agent has its own look
In most chat apps every agent looks the same. In Yui the whole app now changes to match the agent you are talking to: background, bubbles, accent color, corner shape, type and motion, in light and dark. A coach agent can be orange with square corners, a wizard violet and serif. A new agent gets its own look on day one, picked from its name, and your agent list shows each one in its colors. Agents can restyle themselves: ask for "more autumn" and the agent sends one line, theme autumn, and the app changes while you watch. Agents can also say which screens they like (full screen, stacked buttons, a gallery style), and Yui tells them that every turn. There is one rule an agent cannot break: every look is checked for readable contrast in light and dark, so no theme can make text hard to read. You can also pick a look yourself in the agent's settings. - Sep 24, 2026
A plan for every agent framework
Yui talks to Hermes today. The goal is any agent, so we mapped how each framework would get in: OpenClaw, Claude, ChatGPT, Gemini, Grok, Meta's Muse Spark, local models through Ollama, LM Studio or vLLM, Flue on Cloudflare, LangGraph, CrewAI, Microsoft's Agent Framework and n8n. The good news: there are only five ways in (a plugin, a hosted connector, a model connector, an MCP server and a webhook), so five pieces of code cover the whole list. Every framework now has a card on the board, and the plan is on the roadmap. None of it starts before the MVP ships. This one is a plan, so there is nothing to screenshot yet. - Sep 24, 2026
Every page points to the code and the beta
The site now ends every page the same way: three ways in. Get the TestFlight beta, star the code on GitHub, or join the waitlist. The public beta is waiting on Apple's review, so for now that card says so and points to the waitlist; the button appears the day Apple says yes. The beta is bring your own agent: you need Hermes running on your own computer. Both repos are open source under Apache 2.0, and GitHub is now in the menu and the footer too. We also made a list of tagged links for social posts, so we can see which posts bring people here. No new tracking was added: the site already had Google Analytics, and a button click now counts as an event there. - Sep 24, 2026
Pick it up in Yui
Any agent can now hand you something from another channel in one step. Say "send it to Yui" (or type /yui) while talking to an agent on Telegram, and it puts what you were working on into Yui as a screen, not a wall of text. Your phone gets a notification, "Urza has something for you in Yui", and tapping it opens the thread with the buttons ready. Every agent reply now pushes too, except for the thread you already have open. It works even for an agent you have not added to Yui yet: its handoff lands in your main agent's thread with its name on it. Tested end to end on the simulator with a real push from Apple. Ships in build 18. - Sep 24, 2026
Screenshots everywhere, and a changelog
Chris loves screenshots, so this log has them now. Entries carry a small gallery of real screens: tap one to see it full size, and step through with the arrow keys. We went back through the cards that built Yui and added their screenshots to past entries, all the way to the first chat screen with the cat. There is also a new page, the changelog. It groups the same work by TestFlight build: the build number, the day it went out, what changed and what it looks like. It updates itself when a new build lands. From here on, every card that ships something you can see adds its screenshots here. - Sep 24, 2026
Who Yui is on each platform
Yui will be @yuiguiai everywhere, and we checked: the name is free on X, Instagram, Threads, TikTok, YouTube, Bluesky, Reddit and GitHub (Product Hunt blocked our check). For each account we wrote the bio, the voice, what it posts and why someone would follow it, plus ten example posts that show the voice. Every example is a draft; nothing has been posted and Chris creates the accounts. Avatars and banners use the coral wordmark on cream. Read it at yuigui.com/business/biz-5-social-accounts. - Sep 24, 2026
Decks, plan mode and narrated walkthroughs
Three new kinds of screen. A deck is a presentation: the agent sends one line per slide, with a picture, a few words and speaker notes, and you swipe through it or go full screen. Put a question at the end with the right answer and it becomes a quiz that tells you why. Plan mode turns a string of questions into steps with a progress bar, Back and Next, and a review screen, and the agent gets all your answers at once, as a project it can bring back later with one tap. Narrate has the agent talk you through something while it shows it: a lesson deck page by page, or a website update, before and after, one change at a time, with the words lighting up as they are spoken. Each agent can have its own voice. Try them in the playground: ?demo=deck-lesson, plan-website and narrate-site. The images in the vaccine lesson were generated for it, and the site in the walkthrough is a made-up pottery studio. - Sep 24, 2026
The board is public
You can now watch us work. yuigui.com/board shows every Yui card in four columns: backlog, up next, building, and what shipped in the last 30 days. It comes straight from the kanban board our agents use, so when an agent picks up a card or finishes one, the page follows within half an hour. Shipped cards link to their entry in this log. The MVP bar now counts itself from the same board, and it just moved to 11 of 21. Only titles and short summaries go out. A script checks every export for private details before anything is published, and refuses to write the file if it finds one. - Sep 24, 2026
A content plan, built from what ships
How Yui will show up online: every post starts from a line in this log and the screenshot or clip that proves it, so nothing gets written about work that hasn't shipped. It borrows from a blog our agents already run every day: one source, an agent that drafts, a script that rejects bad copy before anyone sees it, and posts scheduled a week ahead. Chris approves every social post. The plan covers four kinds of content (ship posts, this weekly update, longer pieces, short demo clips), what goes on which platform, a six-week calendar and the automation we'd build. Read it at yuigui.com/business/biz-4-content-plan. - Sep 24, 2026
The MVP, and a bar that shows how close it is
Chris asked us not to lose focus, so the roadmap now opens with the MVP: the smallest Yui a stranger can use. Someone who already runs Hermes installs Yui from a public TestFlight link, signs in with Apple, connects their own agents in a few minutes, gets screens and pushes back, and can delete their account from inside the app. That is 21 cards. 10 have shipped, 1 is being built, and the last one is a real outside tester doing the whole path with a stopwatch. The bar on the home page and the roadmap counts them; once the live board lands it will update itself. Everything else went into a deep backlog of 30-odd parked ideas, from a lock-screen timer and group threads to an Android prototype and flows written in Mermaid, so there is always a next card but never a distraction. - Sep 24, 2026
How we will find our first users
The outreach plan is public at yuigui.com/business. Hermes users come first, and we found where they gather: the official plugin catalog, a Discord channel the Hermes team names for sharing plugins, and a few dozen builders whose projects sit right next to ours. The plan lists 39 places by name, drafts a message for each kind of place, and sets a pace of two new posts a week at most. Nothing has been sent. Every message waits for Chris to approve it, and nothing goes out at all until a stranger can install the plugin and see a screen from their own agent without help. One honest correction from the research: native agent-drawn screens are not ours alone anymore, since the A2UI project now has a SwiftUI renderer. What we can say is that Yui is a finished iPhone app where Hermes agents draw native screens today. - Sep 24, 2026
Talk to your agent in Yui
Yui is now a messaging platform for Hermes, next to Telegram. Each agent you add gets its own thread in the app and keeps one memory across both, so what you tell it on Telegram it still knows in Yui. Replies can carry Yui Lines, and the app draws them as buttons, pickers, forms and timers; ask for intervals and you get a running timer, not a paragraph. Your taps go back to the agent as short lines like "[yui] n1 ask answer=Yes", and it keeps going from there. The agent's computer dials out, so it opens no ports, and it gets a key that can only read and answer the threads of its own agents. Remove the computer in the app and it is cut off at once. We tested that, and 37 other rules, against the live backend. Every agent also gets the same short guide to the channel on each turn, and agents that don't run Hermes can fetch it too. How it works: spec/RELAY.md. - Sep 24, 2026
The site now looks like the app
yuigui.com wears the same clothes as the iPhone app now. Cream paper, soft plum ink, the coral wordmark up top, rounded type, pastel accents. The colors come straight from the app's theme file, so when the app changes, the site can follow. Light is the default and the moon button in the corner switches to dark. The home page tells the story in plain words: what Yui is, who it is for (people who already run agents, Hermes first), and real screenshots from the current test build. The icon and the link preview use the wordmark too. We also fixed contrast across the site. Every page but the playground now scores 100 on Google's accessibility check, and the playground's last few fixes are queued. - Sep 24, 2026
Business docs, in the open
The business side of Yui is now public at yuigui.com/business. Two docs so far. A marketing and positioning brief: who Yui is for first (people already running Hermes agents), how we will launch (private beta, open source, Show HN, then the App Store) and what we will measure. And a revenue plan with the rules we hold ourselves to: free and open source for anyone who brings their own agent, no dark patterns, charge only where we carry a cost. The research was humbling. Phone apps for self-hosted agents already exist, and OpenClaw's own app lets agents draw widgets, in a web view. What nobody ships yet is native screens drawn by your agent, and no Hermes agent can draw a screen at all. That is where Yui starts. The competitor notes are published too, sources and all. - Sep 24, 2026
Yui is open source
Both repos are public now, under the Apache-2.0 license. postscarcityai/yuigui holds the Yui Lines spec, the test cases every parser must pass, the reference parser and this site. postscarcityai/yui holds the iPhone app, the Swift parser, the backend and the Hermes plugin. Before flipping them we scanned every commit in both repos for keys and tokens and found none. The one key in the app is a public client key that can't read anyone's data. Each repo now has a README with screenshots, a guide for contributors, a code of conduct and a private way to report security problems. A good place to start: write a Yui Lines parser in a language we don't have yet. - Sep 24, 2026
Yui Lines learn charts, equations and experiments
Agents can now show numbers and teach with them, one line each. chart draws line, bar, area, scatter, pie and donut charts from data written right in the line, with more series, stacking and error bars (write 12.5±0.4), or from a live table on the same screen, so when the table changes the chart redraws. Every chart has a Table view and follows the app's light or dark theme; each theme has its own set of chart colors, checked so people with color blindness can tell the series apart. stat is one big number with its change and a small trend line, and tapping lb or °C shows kg or °F. math typesets equations. step walks through a derivation or a lab protocol one step at a time, with optional timers. calc turns a formula into sliders that redraw a chart as you drag: slide the launch angle and watch the range peak at 45 degrees. Tables can now be sorted and carry units. 53 new test cases pin the syntax, 251 in all. The app picks these up next. - Sep 24, 2026
Your agents are yours to add
Chris's next piece of feedback: agents are added by you, not baked into the app. So the Urza and Arnold placeholders are gone. The agents screen now starts empty with an Add your first agent button, and each agent shows its avatar, an online or offline dot and when it was last seen. You can rename, recolor, reorder, pick a default or remove one (which also deletes that conversation). There are three ways to add one, and all land in the same place. In the app: name it, get a 6-digit code, type one command on the computer it runs on. From that computer: once it is paired, any other agent on it can join with one command and no code. Or ask an agent: Settings has an Agent access token you can hand to one of your agents so it can add and manage agents for you. That token can't read your messages, and 59 new automated checks try to make it. For testing, one agent is set up: Yui itself. Build 14 is on TestFlight. - Sep 24, 2026
Yui Lines learn pictures and video
Agents can now show media, not just describe it. Four new one-line presets: gallery (photos and clips as a swipe row, a vertical feed, a 3D coverflow stack or a grid, with tap to go full screen and an optional pick-your-favorites mode), video, compare (before and after with a drag slider, side by side or tap to toggle, plus numbered boxes where the agent points at what changed) and storyboard (ordered frames you can reorder and comment on, or a script with no pictures yet). An image can also be marked up: circle the part you want changed, type what you want, and the agent gets the area and the instruction, runs the edit and answers with a before and after. Every demo on the playground uses images we generated for it. 33 new test cases pin the syntax, 198 in all. The app picks these up next. - Sep 23, 2026
Beta feedback: the debug screen is gone
First real TestFlight feedback, from Chris: the Paste YL screen had to go. It was a developer tool that showed the raw lines agents write, parse counts and event data, and no one using Yui should ever see that. Yui Lines stay under the hood. The button it lived behind now opens Your agents: Yui is there today, and Urza and Arnold wait with a Connect Hermes to start note until the Hermes channel lands. How to use Yui is something the agents learn at the start of every chat, not something you read. Build 13 is on TestFlight. - Sep 23, 2026
Accounts: Sign in with Apple, and delete it in the app
Yui now has accounts. You sign in with Apple, no password, and Settings has a Delete account button that wipes everything Yui stores for you and removes Yui from your Apple ID. The App Store requires that, and it is the right default anyway. The server side is locked down on purpose: Yui accounts get their own database role that can only see Yui's own tables, and each account only its own rows. 63 automated checks try to break that, including one that creates a test account, fills every table, deletes it, and counts zero rows left. Plain-language privacy page at yuigui.com/privacy. - Sep 23, 2026
Yui drops the cat
The round cat is gone. Chris noticed the hand-drawn Yui wordmark already looks like a cat, abstractly: the bunny-ear arms on the Y read as ears. So the logo is the face now. Yui's own avatar in chat is that Y on its own, in coral. Each agent gets a small pastel chip with its first letter in heavy rounded type, colored from the theme file, so when agents get their own looks their chips change with them. The empty chat screen and settings show the wordmark with a few warm words, no drawing. Build 10 is on TestFlight. - Sep 23, 2026
Yui draws its first six screens
An agent can now reply with a timer, a question, a multiple choice, a pick-several, a form or a list, and Yui draws it as a real card inside the chat instead of plain text. The timer counts rounds on a ring and beeps on the last three seconds. Forms handle text, numbers, dates, sliders, yes/no toggles and voice notes, and will not submit until the required fields are filled. Every tap goes back to the agent as one small event, and your answer shows up as your own chat bubble. All the styling comes from the same theme file, so a restyle changes these cards too. A hidden paste box lets us test any Yui Lines reply by hand. Build 9 is on TestFlight. - Sep 23, 2026
The wordmark moves into the app
Chris's hand-drawn Yui wordmark, the one with bunny-ear arms on the Y, now sits in the app's top bar, on the empty chat screen and in settings. Its coral is now the app's main color too: the send button, your chat bubbles and the selected toggle all use it, with the pastels kept for the smaller touches. The coral is stored in the same theme file as everything else, so an agent that restyles the app recolors the logo along with it. It reads clearly on both the cream light mode and the dark plum mode, so one logo file covers both. Yui the cat stays as the face of the agent. Build 8 is on TestFlight. - Sep 23, 2026
Yui Lines has a test suite
Yui Lines is the one-line format an agent uses to put a timer or a question on your screen. It now has a shared test suite: 165 small cases, each a bit of input plus the exact result a parser must return. The web playground's parser and the new Swift parser inside the app both pass every case, and any future parser, Android included, has to pass the same files. Writing the cases turned up a few gaps in the spec, such as what a mistyped form field should do. Those answers are now written down. - Sep 23, 2026
Yui gets a face
Yui now has a look: a round white cat named Yui, soft pastels on warm cream paper, rounded type, and a little bounce when you tap send. The feel borrows from Korean character apps like Kakao Friends: cute, but not childish. There is a light and dark mode with a toggle in settings. Under the hood every color, corner and animation lives in one small data file, so later an agent can restyle the whole app on the fly. Build 5 is on TestFlight with the new icon. - Sep 23, 2026
First TestFlight build
The Swift app exists. Build 4 is a bare SwiftUI chat screen with a placeholder icon, signed and uploaded to TestFlight straight from the build machine with no one opening Xcode. It does nothing useful yet. What matters is the pipeline: from here every change can reach a phone in minutes. First upload was rejected for a missing app icon, fixed in one commit. - Sep 23, 2026
Waitlist open
The waitlist is live on yuigui.com. Sign up for TestFlight invites and occasional updates. Signups land in a small table in PostScarcity AI's existing database, no new infrastructure. - Sep 23, 2026
Apple Developer account active
Yui has an Apple Developer account, so TestFlight is unblocked. Xcode is installing on the build machine. Next: the Swift project and an automatic TestFlight build on every push. - Sep 23, 2026
yuigui.com is live
The hub now lives at yuigui.com. Yui is built in public: this log updates as work ships, and a weekly update lands every Friday. - Sep 23, 2026
Stack decision: all Swift
Yui will be a native SwiftUI iPhone app, not React Native. The reason is the product: Yui should feel like part of the phone, and the features that set it apart (a workout timer on the lock screen, Siri and the Action button, Apple's on-device model and speech) are native Apple surfaces. The preset design keeps the app small, so an Android port later is a port of the presets, not a rewrite. No Apple Watch app yet. Yui Lines stays platform-neutral: the web playground and the Swift app parse it the same way. - Sep 23, 2026
Source on GitHub
The hub, roadmap, Yui Lines spec and benchmark now live at postscarcityai/yuigui. The app code gets its own repo, yui. - Sep 23, 2026
Yui Lines v0: spec, 12 presets, playground, token benchmark
Agents now speak Yui Lines: one short line per component, no UI code, no JSON. Spec at /yl, live playground at /playground with all 12 presets (timer, ask, choose, pick, slide, form, list, table, card, image, camera, mic), line-by-line streaming, ~patch, >screen routing, save/show and the custom {json} escape hatch. Benchmark on 10 screens with real tokenizers: YL is 1.6x smaller than minified JSON, 2.7x smaller than pretty JSON, 3.9x smaller than a component-tree document. - Sep 23, 2026
Hub site live (Phase 0)
This site: overview, roadmap, progress log, business plan draft, pitch deck, three phone mockups. Deployed to Vercel as project yui. yuigui.com not attached yet. - Sep 23, 2026
Roadmap v1
Six phases written from the pitch. Stack call: JSON UI protocol, Expo app, Cloudflare relay, Hermes connector. Arnold is the first agent wired in. - Sep 23, 2026
Pitch recorded and transcribed
Chris recorded a 21.6 minute pitch (rec 366). Transcribed locally with Whisper and summarized. The name settled on Yui.