Repository navigation
aterm v0.141.0
aterm v0.141.0
2026-10-26 · 237 changes since v0.140.0
Fixes
- pet: the resident cat walks on top of the composer's upper rule, never under it
- pet: the stand over the composer's rule is a perch near the caret, never in a rule; a skid and a leg's stand keep their floors
- pet: the slide's reach never calls back a cat already standing past the letters; the escort-grace test ends on the perch
- stats deck: a Folded strip glides 1 pt a second, so the default window is seen moving
- pet: every schedule draws the same pet: a glide lands on home's pixel, a rhythm run asks for frames, a woken tick moves nothing
- init: publish setup markers after file preparation
Performance
- effects: replace Option closure helpers in ribbon, witness, spine, bed, and ink_ledger
- effects: inline Option/Result/iterator closures and single-pass veil/oracle scans (batch 231)
Tests
- pet: the switch replay's off list infers its tuple (tippy type-complexity)
- system-state: expect calm cached status after Cancel
- read the cursor's glow streams whole, ramps and quads together
- pet: the dense sweep holds both hosts' rest clocks together at each edit; changelog says what the pet fix costs
- pet: the pet-paced trail laws read copies as the 16 ms host does; the wrap law checks its bound's own landing
- handoff: v0.140.0's producer fixtures, written by its own cut
- main's two 0.141.0 verify fixes, carried onto its release line
Other
- System State: the signals agree with the rows (round 19 fixes)
- Keep default-account adoption in owned fleet sources
- Gate Unix-only launch-tap test import on Unix
- Guard the Unix harness prelude in platform builds
- Refuse new account labels that retain local authority
- Check provider data isolation around the shared sign-in lock
- aterm-db: DbDiscoveryReplacement's waiver host is a public hidden fn, as the other environment hosts are
- Acknowledge dispatched pointer actions when frame readback fails
- aterm-gui: the deck's live edge after review: a scale at the default window, at most 4 live frames a second, a live line that outranks the stalled one
- aterm-gui: the live-edge merge's lint findings
- Fence additive account sync against retained labels and active sign-ins
- harness: a wall's answer is asked per agent; Grok Build is an aterm ai connection, off where nobody installed it
- disk-free@v1: deliver at background breaks, hold for lasting withholds, credit aterm's own passes to aterm
- disk-free@v1: judge the background-break line on a fresh status read, keep the awaited act, keep a wall's withhold at background breaks
- machines: git runs that change a ref start no automatic maintenance
- setup: a stop during the Command Line Tools install still ends the run, and an unasked tab's failure stays quiet
- setup: tie the install tab's quiet failure to the tick's own ask; a fixture commit starts no maintenance
- aterm-gpu: a video take's finish never waits on its conversions, which run optimized and side by side
- aterm-gui: a headless window takes the size
resize pxasks for, both forms resize with Settings in front, and a tab brought to the front is laid out - aterm-gui: a native page's focus and scroll keys are timed to the present of the pixels they changed
- aterm-gui: a quit nobody started at a window is not held by a Settings draft nobody can answer
- aterm-gui: an aterm that is not its account's own reads no fleet, and lists its own tabs
- aterm-gui: one missed probe keeps a host's last address, SSH banner and round trip
- aterm-gui settings: Tab Control's live rows keep the height they were laid out at while the person reads
- aterm-gui settings: pin that a computer listed above the screen moves nothing on it
- aterm-gui: move_native_focus calls focus_native_control as main now spells it
- aterm-gui settings: Tab Control keeps each live block's room under its own words, so no line in a row moves
- aterm-gui: the cluster's new tests check what a resize answers and that the page says why, not their exact words
- Hold sign-in admission through checkpoint recovery
- aterm-effects: promote stardust centre pricing to const fn and inline hot-path Option/bool closures (batch 220)
- Expose every recovery mutation to the specification sweep
- Capture the fleet test listener key before spawning
- secrets: a vault path in a missing folder names the folder
- aterm-effects: reuse icon_scratch and inline Option/iterator closures (Batch 221)
- aterm-effects: inline Option/iterator closures in rainbow_kitty witness and ribbon (Batch 222)
- System State: settle every ALab widen Apply; a Cancel after a Restore holds like any Cancel
- System State docs: a Stop holds off the ALab review for the run it stopped
- System State: the newer page's Local Network row reads unknown, tested as drawn
- Preserve account authority through local relabeling
- harness:
spawn agent=groknames Grok Build as a worker, refused until its turn end is read - harness: name the Grok sign-in gate's type; fix two Grok tests' compile errors
- Keep cancelled launch reviews calm after immediate reopen
- Recover interrupted account syncs from durable admitted images
- Schedule interrupted account commits before unchanged or offline sources
- Keep sync auxiliary output away from account authority
- Require roster preservation after auxiliary sync failure
- Keep failed saves editable and align palette Copy ownership
- Retain failed-save evidence while documents remain editable
- render: a glow stream carries ramps beside its quads (card-engine B5)
- render, gpu: draw a glow stream's ramps natively
- effects: Rainbow Kitty's ribbon and meteor trains lay ramps, the guard reads them
- gui, web, bench: every glow-stream reader takes the ramps
- gpu tests: Rainbow Kitty's ramps draw their quads on every arm
- render: a ramp runs on only below its last row, at its span, with nothing laid between
- effects tests: read the glow streams as quads through a fold seam
- gpu: a glow stream whose light adds draws its quads as glow instances
- effects: the streaks' beds and ink bodies lay ramps
- effects: comet slabs lay ramps, each core one light as tall as its rows
- effects: a ramp's run keeps its ends once
- effects: ramp readers walk the kept rows, not every pixel row
- style: format the ramp readers as trustfmt lays them
- lint: hold the ramp code to tippy's warnings
- gpu: the heat shimmer reads the additive stream's ramps
- core, effects: a ramp's damage words carry its run, its place and its kept ends
- effects tests: the v2 frame-cost gate times the ramps a shipped build lays
- render: each_laid walks a stream as Lights, not a Result
- effects: the particles stop where their stream's lights fill it, its ramps counted
- effects tests: clear the frame-cost drivers' scratch as two statements
- effects: the letter guard reads a ramp's rows as the quads they stand for
- bench: the effects harness reports means and the ramps' lights and rows
- glow ramps: a run rides a ramp only where its lights pay
- spill: the band reads glow ramps without expanding them
- icon shade: word icons shade glow ramps without flattening them
- gpu: ramps open the fx stream only where their lights repay it
- render ramps: a band reads only the ramp rows that meet it
- letter guard: ramps cost the quad path nothing they do not use
- rainbow kitty: name the test's RampCost by path
- effects harness: an icons scene and the shares of ramp and fx frames
- glow ramps: the measured break-even and fx opening costs
- verify browser: hold the cursor glow's ramps to their quads through cell.glsl
- bloom: an item list draws the extract set with no ramp row expanded
- gpu: the bloom and its crowns read the glow ramps as an item list
- gpu: a ramp stream keeps its order where adds round on store
- verify browser: the comet's additive ramps through the bloom and its crown
- gpu-web: the lane's crown field lives in the wasm dev build alone
- ramps: a band's rows convert without a cast; trustfmt over the lane
- spill test: the run's middle rows read as one range
- ramps: a dark light stays its quad whatever the cost
- ramps: GlowRamps::open and extend_last are test seams
- icon shade: a ramp stream nothing reaches costs no copy
- effects harness: the glow ramps' sweep knobs reach the release build
- aterm-gpu: one fx gate for every frame, art included, measured per arm
- aterm-render: lay a beam's runs on their ramps directly, no fold after
- aterm-gpu: parity beside fx art on every arm; unmeasured arms draw instances
- browser lane: the glow's ramps beside fx art, through cell.glsl in Firefox
- aterm-gpu: the routing comment names what the gate weighs
- B5 round 3: the cost sweep's points, and Metal's art term fitted from them
- aterm-gpu: the wgpu oracle's Metal backend gets its own measured route costs
- effects harness: the glow host's pipeline stays in its owner's field
- B5 round 3: verify fmt --fix
- B5 round 3: laws for the guard's rails and the pet's veil over ramps
- B5 round 3: the rails law passes lint; verify fmt --fix
- aterm-effects: promote const fn helpers and inline hot Option/bool branches (Batches 223-225)
- Keep explicit account aliases and authority across fleet relabels
- Stop System State review countdown on empty menu edits
- init: ask about a secrets vault only where one answers; a vault join never holds init
- init review: a look only where the workstation layer runs; Ctrl-C at the trust question stops; --vault refuses a pin the vault does not answer to
- init: --vault refuses a flag as its value (aterm init --vault --plan names no vault)
- init: say what the vault look overlaps (reading the Mac, not the base layer)
- Recognize the guarded native menu interaction boundary
- Settings status: a status too long for the dock's row scrolls there, nothing pressed moves
- Settings: the reload warning wraps as every status does, in its bar and in the dock
- Settings fields: a field too narrow for its hint's words marks itself with a dot
- Settings: Page Down before a page's first frame steps by that page
- Settings tests: the wheel test reads a short status docked, taking no room
- Settings: a page key lays out only a list no render has laid out
- Settings tests: the wheel test reads a long path's status docked too
- Settings lists: a screen under a status's bar ends on the next card's peek
- Settings lists: the list's end leaves no row cut to nothing under its caption
- Settings lists: Tab reaches a looping preview listed with the rows
- Settings lists: the end rule reads a row's name beside its control
- Settings lists: a looping preview is a Tab key of its stop, not its layout
- Settings tests: the reload warning test asserts its fit failures
- Settings: a page key waits for a layout at the window and text size it acts in
- Settings tests: the 220x12 Tab sweep focuses the search as main's focus call now asks
- Settings tests: the 220x12 Tab sweep names the view main's focus call now checks
- Settings status: a bar stops over the control the person pressed
- Settings toolbar: the keyboard on Search's Cancel keeps the search open
- Settings status: a bar held over a press keeps its room for its status's life
- Settings lists: a last screen gives up a stop it would draw nothing of
- Settings lists: a list's Tab stops are the page's, one rule for both
- Register the menu interaction fence at the permission input boundary
- aterm ctl --host turn: read its timeout= with the verb's own option reader
- drive gate: a hold's refusal names the bare sid a hold takes
- aterm ctl --host survey: refuse survey words that name their own machines
- aterm ctl survey: ctl's own --timeout bounds each fleet peer's read
- fleet join: a code that reaches a member says so, not that the issuer refused
- aterm ctl: one exit code per cause; a drive refused while its issuer is silent exits 2
- aterm ctl --host: exit 2 means one cause, a handshake no aterm sent, at the issuer and the peer alike
- fleet join: the issuer's refusal of its own node is worded for the joiner
- turn help: a leading
--ends only the leading options, so option-like text needs-- -- - aterm-effects: promote const fn helpers and inline closure combinators in cursor_glow and cursor effects (batches 226-229)
- ai login: over SSH a CLI's own sign-in runs off this machine's desk; a Codex wall under the host is nobody's, pinned
- ai login: the no-desk sandbox is macOS's, as the doc now says
- ai login tests: formatted
- Refuse account rows that inherit another login directory
- Expose directory model bookkeeping through the public account module
- Fix three mixed-tab route-parity defects: move, close hold, bloom clip
- Keep each close's line in the resize ledger; name Collapse's real sites
- Take the ledger's last resize row with rfind (tippy double_ended_iterator_last, filter_next)
- aterm-verify: the GUI smoke ends its instance's whole process group
- aterm-conformance: an instance's drop ends the helpers it started
- aterm-verify: the GUI smoke's group reads no terminal and is recorded as it spawns
- System State waits for a live tools installer before opening another tab
- aterm-capacity: refuse a memory need at or above physical less wired
- atpkg: aterm pkg capacity prints the memory that can ever be available
- aterm-release: the Trust plan refuses a claim not below what can ever be available
- aterm-lab: a VM boot above what the Mac can ever have available is NOT RUN at once
- aterm-release: hold the Trust launch gate to the plan's bound
- aterm-capacity: give the NEVER-REACHABLE test's admission wait a hang detector
- atpkg: the capacity memory line says --admit now still starts a claim
- grok sign-in gate: one sandboxed, deduplicated Grok sign-in per machine before any Grok TUI starts under aterm
- grok sign-in gate: harness-repos D22 and
aterm help pkgsay how a Grok launch signs in - needs: read Grok's machine sign-in through an exhaustive Program match (census agent-gate)
- grok sign-in gate: fix the review's problems at their root
- atpkg SPECS: the twin-prelude row states the grok sign-in block; its two tests map to it
- atpkg: the grok hand-off test names each ATERM_NO_HARNESS reader, and never reaches a real aterm
- grok worker floor: a login grok refused starts no worker (grok_signin::login_accepted)
- aterm-link: fabric on --dry-run judges the secret as the real run will; a bare --secret-file is named as given; help, SPECS and CHANGELOG say what is refused
- aterm-uds: a directory open by its mode and by an access list is refused, not narrowed
- aterm-link: the secret-file-private row gives each directory clause its real kind; mint and broker help name the whole rule
- aterm-uds: the mode-first mutant's comment names what it really breaks
- aterm-link: mint help says an access-list ALLOW entry is refused; a deny entry passes
- Keep close recovery and rename commands with their input owner
- disk-free@v1: credit a seat only with its own checkout's builds, and never say a listed holder is none
- disk-free@v1: a seat whose directory is gone holds no checkout's builds, and pin the clipped holder
- aterm-effects: promote const fns and eliminate closure/iterator overhead in hot paths
- sim B01r: the model is aterm's retained broker, and each drift B01 fixed has a control
- sim B01r: the headers a prune cut, the LAST_PAGE_MAX page, and the SPECS row
- Bind the installer identity guard to standard paths
- Recover account renewal publication with durable commit receipts
- Keep model fixture anchors distinct on stock compilers
- Format renewal recovery regression fixtures
- Assert atomic renewal admission in ledger failure tests
- Match test helper availability to their platform callers
- Limit Grok sign-in fixtures to their supported test platforms
- harness: review fixes for grok-alab contract v3 (live-build twin hand-off, scoped claims keep the needs)
- aterm-effects: promote const fn helpers and replace ribbon/witness/stardust iterator closures
- B13 WIP (parked after a usage-limit stop): oracle widening and aterm engine fixes in progress, not reviewed
- Preserve cursor input ownership across window focus changes
- Cover focus report ingress and preserve measured before and after trails
- sim B01r review: a seeded world serves unretained too, and each found bug is reached again
- sim B01r review: the journal replays every tier with the mirror off, retained and unretained
- sim B01r review: every drift B01 fixed has a committed control, and the headers say what the code does
- sim B01r review: Opts::seed's retention bit by is_multiple_of (tippy manual_is_multiple_of)
- Keep editor buffer selection and Find Copy with their resolved target
- init: a repository clone leaves the disk watch's floor free
- System State: the repositories row says when the disk has no room for the rest
- init: a first-launch pass that leaves repositories for room keeps the reason
- harness: admit a Grok worker sign-in first; refusals name their cause
- harness: the slog why tiers name the launcher's two words; the install test's mark reads what it holds
- Recover interrupted account commits at operational pool reads
- Use range patterns in account recovery fixtures
- aterm-gui: an image job boxes its metadata, so no platform needs a large_enum_variant expectation
- Commit pool decisions and their ledger through durable receipts
- Keep custom worker login classification independent of pool budgets
- verify cells: a cell whose std no toolchain carries names verify provision as its fix
- init: no clone below the floor for an unsized repository; first launch names its own remedy
- aterm-effects: promote harness_card helpers to const fn and hoist luminance tables
- aterm-effects: promote clip_quad and near_word_icon to const fn and hoist droplet luminance
- gui: keep a seamless handoff's files for the lab's carry sweep (6I-4, A11, B23)
- lab: seamless's privacy leg sweeps the carry an update writes (6I-4, A11, B23)
- lab: the carry leg reads the waiting post, the typed line and every listed name (6I-4, A11, B23)
- lab: the carry fixture's mail line in the encoder's order, so gitleaks reads no key (6I-4, A11, B23)
- Commit explicit account selections against current policy
- Record fenced selection semantics and design review
- Align launch and CLI regressions with durable account reads
- Keep diagnostic navigation and Settings recovery with their input owners
- Recheck queued login intent and preserve deferred selections
- Keep the original login parent through fallback admission
- aterm-gui: drop the five Gemini retirement exceptions 0.140.0's producer made stale, on 0.141.0's line
- aterm-gui test: the debugger step's stand-in reading stays fresh for the hang detector, not five seconds
Source release. SHA256SUMS is a per-file manifest of the released tree, with a detached Ed25519 signature (SHA256SUMS.sig) by a machine key named in the attached master-signed roster (aterm-machines.toml + .sig). Verification chain and key inventory: SIGNING.md in the publication engine; the roster pin is committed in aterm crates/aterm-update-core/src/pins.rs.