a73x

Commits:

Hash Message Author Date
d1ab8e37 refactor: merge reusable picker presentation a73x 2026-09-09
df2dc36a refactor: extract reusable picker presentation a73x 2026-09-09
1b15df83 docs: add marketing documentation a73x 2026-09-09
ea607659 docs: align toolchain instructions with mise a73x 2026-09-09
eef028e2 docs: record forwarding landing validation a73x 2026-09-08
8d4f4e41 feat: add native local TCP forwarding a73x 2026-09-08
03661841 docs: require plan-first delegated changes a73x 2026-09-07
cf196f16 feat: fullscreen native panes a73x 2026-09-07
7fa72ef8 test: consolidate native scenarios and fixtures a73x 2026-09-07
a9b271c8 fix: dismiss native command hints on invalid keys a73x 2026-09-07
c89f85dd feat: open native panes on the focused target a73x 2026-09-07
a5fc3918 feat: align native split bindings with sway a73x 2026-09-07
9940d8fd test: consolidate native end-to-end journey a73x 2026-09-07
86d04514 feat: add native font fallbacks a73x 2026-09-07
87b2368d build: lint development builds a73x 2026-09-07
b3de1802 chore: remove stale wall selection alias a73x 2026-09-07
73034a05 feat: add native clipboard paste a73x 2026-09-07
751dce3d refactor: separate native clipboard shortcuts a73x 2026-09-07
5b6c89ea refactor: share surface input encoding a73x 2026-09-07
30a49f6d mise a73x 2026-09-06
6a4b3a79 chore: remove obsolete demos and QUIC spike a73x 2026-09-06
ea49739c merge: integrate gui text selection sprint a73x 2026-09-06
236ed2c6 docs: specify sprint models a73x 2026-09-06
ab4acd00 docs: record selection-follow approval and demo teardown a73x 2026-09-06
0716f07b feat: keep native selections anchored as output scrolls a73x 2026-09-06
6a139ebd docs: record mouse product sign-off and demo teardown a73x 2026-09-06
f1027928 docs: publish application mouse demo and review notes a73x 2026-09-06
03138bb4 feat: forward native application mouse and clipboard writes a73x 2026-09-06
93a94c8d refactor: share terminal mouse encoding with wheel input a73x 2026-09-06
444ebf6e docs: pin moving-text and shared tmux selection gaps a73x 2026-09-06
7897f7d8 fix: retain native selection through live terminal redraws a73x 2026-09-06
a1b93332 fix: preserve native selection while scrolling history a73x 2026-09-06
eedff557 feat: scroll native panes through history and applications a73x 2026-09-06
0384efae docs: serve sprint demos locally unless publishing is requested a73x 2026-09-06
ee9d0f38 docs: shorten agent guidance and separate detailed contracts a73x 2026-09-06
c5be8085 build: add pinned linting and reliable development checks a73x 2026-09-06
f1d041f3 refactor: separate daemon upgrade orchestration a73x 2026-09-06
5cee2d84 docs: require Shift-drag in application mouse parity a73x 2026-09-06
04b2c810 fix: handle native copy shortcut before terminal input a73x 2026-09-06
5f6c40b6 docs: tear down sprint demos after acceptance a73x 2026-09-06
3754dae9 feat: select native terminal text and copy on release a73x 2026-09-06
b0a68b12 refactor: share terminal selection gestures with native clients a73x 2026-09-06
8d32a5c2 docs: require reuse and ownership evidence in sprint delivery a73x 2026-09-06
225863b6 refactor: give font settings one owner in the native core a73x 2026-09-06
6b45b04f docs: reconcile appearance review and scope wheel scrolling a73x 2026-09-06
6c341990 docs: record appearance approval and GUI parity backlog a73x 2026-09-06
d0151836 feat: load Ghostty theme files for native appearance a73x 2026-09-06
693d0382 fix: notify QUIC peers before daemon shutdown a73x 2026-09-06
e9c4a928 feat: configure native fonts and preserve them across display scales a73x 2026-09-06
9eadbcea docs: require sprint review pages and record appearance approval a73x 2026-09-06
58e66682 feat: centralize native colours with a warm theme trial a73x 2026-09-06
bb91afde build: include muxg in release and install targets a73x 2026-09-06
7d972a65 docs: share sprint delivery workflow with repository agents a73x 2026-09-06
c64627bc docs: record the wall freeze and the single-target terminal client a73x 2026-09-05
d2323cb8 fix: a burst of dials past the observer table waits in the backlog a73x 2026-09-05
547a0911 docs: record the socket-path watch, its log trail and the QUIC admin door a73x 2026-09-05
4d48bfad feat: mux d stop, dump and stats take --quic for a daemon whose socket is gone a73x 2026-09-05
ede80939 feat: a deleted socket path is logged and taken back within a second a73x 2026-09-05
ad746c0f docs: record native trial acceptance for merge a73x 2026-09-05
d01b5506 feat: streamline native split chords and End feedback a73x 2026-09-05
2a48815a docs: define component owner scopes and handoffs a73x 2026-09-05
74730ed7 refactor: isolate native core and component development gates a73x 2026-09-05
efc99d58 refactor: separate native interaction policy from SDL handling a73x 2026-09-05
ba2ab8f3 docs: record approved SSH demo sharing a73x 2026-09-05
3bf0fc41 fix: stop native reconnect on SSH authentication refusal a73x 2026-09-05
32da9a4d docs: record final native tiling trial acceptance a73x 2026-09-05
1d43cd59 fix: preserve native command mode across delayed End replies a73x 2026-09-05
df13094a docs: trial ergonomic choices before recording acceptance a73x 2026-09-05
106552cd test: guard native raw-output responsiveness with release builds a73x 2026-09-05
04437bf9 feat: restore native workspaces and manage pane lifecycle a73x 2026-09-05
aa5e977b refactor: centralize native attachment ownership before lifecycle sprint a73x 2026-09-05
58052e9d docs: record sprint 3 mouse demo acceptance a73x 2026-09-05
3eab2a35 feat: resize native pane dividers with mouse and keyboard a73x 2026-09-05
3eaad756 refactor: unify native layout planning before resize sprint a73x 2026-09-05
89344c19 docs: record sprint 2 demo acceptance a73x 2026-09-05
67a1e976 feat: add native host and session pickers a73x 2026-09-05
d903a815 fix: align the native command prefix with mux a73x 2026-09-05
c5e30b30 feat: add independent native terminal panes a73x 2026-09-05
b8e8ca5a test: cover redraw erasure and protected terminal state a73x 2026-09-05
446f1a20 fix: render native fonts at the display pixel scale a73x 2026-09-04
5570679e fix: normalize retained control cells in snapshots and deltas a73x 2026-09-04
f25e121b docs: describe native viewer usage and verified delivery a73x 2026-09-04
c49a06ed feat: render native sessions with shared terminal input and reconnect a73x 2026-09-04
b7dbcdaf build: add opt-in native client and OpenGL probe a73x 2026-09-04
794a3433 docs: the native client plan is rebased onto cells on the wire a73x 2026-09-04
b8b679eb docs: the native client implementation plan a73x 2026-09-04
0b5110d2 docs: the native client is a session viewer painted from the grid (spec) a73x 2026-09-04
406628a2 chore: zig fmt the blank line left by the wrapper deletion a73x 2026-09-04
01ef5e8a docs: the transports are dumb; it is the frames that changed a73x 2026-09-04
124ae700 refactor: drop the Grid.clipCol and Grid.snapWide wrappers a73x 2026-09-04
f429a992 fix: cell text carrying a control byte is refused at the decoder a73x 2026-09-04
d1fc858d fix: a snapshot that blanked the grid before failing ends the tile a73x 2026-09-04
56a99c97 docs: the repo figures are the rebased tree's a73x 2026-09-04
fbbe3293 docs: the wasm figure is the final tree's, and the README quotes bytes per keystroke a73x 2026-09-04
ca7fac28 test: the bench bounds a keystroke's bytes, not a ratio the snapshot's size now dominates a73x 2026-09-04
c2344ddb docs: record cells on the wire, its measurements and the clean break a73x 2026-09-04
79da83da test: the grid's wide flags are pinned against ghostty's page cells a73x 2026-09-04
1970473f fix: mux a reads a scrollback chunk as cells, not as VT with SGR in it a73x 2026-09-04
8c4695ae test: the delta fixture replays through the one core, and a zero-row delta is pinned a73x 2026-09-04
12cb9419 build: the engine is its own module, and no client row links ghostty-vt a73x 2026-09-04
94b89d3d refactor: the replica measures the grid it holds, and a delta paint holds no row list a73x 2026-09-04
8afffece test: pin that a selection paints its cells plain, whatever style they carry a73x 2026-09-04
a54a8105 fix: a blank row paints nothing, and a trailing default space is not a divergence a73x 2026-09-04
3c7beb0b feat: every painter reads the grid, and the two browser clients hold one a73x 2026-09-04
f07a56c8 feat: the wire carries cells; the replica is a grid and every painter reads it a73x 2026-09-04
cefede26 feat: term_modes carries the alternate screen and DECCKM, so the wheel rule needs no engine a73x 2026-09-04
63427849 feat: the client grid, pinned against the engine as its oracle a73x 2026-09-04
a9b26feb fix: an interior blank cell is a space on the wire, so a curses row stays one ascii run a73x 2026-09-04
519410b1 fix: the run header is a delta against the previous run, as SGR is a73x 2026-09-04
053ae6ef docs: the run header is a delta, after the size gate refused the absolute one a73x 2026-09-04
632d1166 feat: the daemon encodes a grid row as cells, and the size is measured a73x 2026-09-04
5db58b82 fix: CellRowWriter owns each cell's text until the run closes a73x 2026-09-04
6c3ecd04 feat: the CellRow codec, a grid row as runs of styled cells a73x 2026-09-04
941927df docs: cells on the wire — the design and the plan a73x 2026-09-04
b2cc0a99 test: the e2e pin counts the Ctrl-\ X scenario a73x 2026-09-04
d6f7c2af feat: Ctrl-\ X ends the focused pane's session through its own pump a73x 2026-09-04
42e13926 fix: picker repaint clears the rows a shorter box no longer covers a73x 2026-09-04
99b86336 test: the taken-port leg counts listeners through the oracle, so the web group runs on macOS a73x 2026-09-04
28780537 fix: mux web refuses a port another hub already listens on forge-4 2026-09-04
15b5fbcc fix: collectLeafIds propagates the allocation failure it was swallowing claude 2026-09-04
5ba8bafa Merge branch macos-port-step3: the Darwin arms, and mux runs on a Mac (macOS port, step 3) a73x 2026-09-04
298bebbf docs: the release is one tarball per OS a73x 2026-09-04
b3562f8e test: the xos QUIC agent leg reads mux a's exit code on the box a73x 2026-09-04
db06838a build: make release-mac publishes the Mac tarball from MAC_BUILDER a73x 2026-09-04
acdaffb0 build: RELEASE_TARGET follows the host, and a Mac cuts a Mac release a73x 2026-09-04
39bf2478 docs: the macOS gates name their boxes, and the guest is provisioned a73x 2026-09-04
6d5756ad build: the Makefile names the gates' boxes and provisions a guest a73x 2026-09-04
3fb9ee75 test: make xos takes its three boxes by name a73x 2026-09-04
2e5ce7ef test: make mac takes MAC_BOX and MAC_BUILDER by name a73x 2026-09-04
09776b98 test: the macOS guest's lifecycle is a provisioning script a73x 2026-09-04
9e1ab77e test: one library for the boxes the macOS gates share a73x 2026-09-04
2f9e9835 fix: the xos preflight ssh takes -n, so a tty on stdin cannot stop it a73x 2026-09-04
7e20404d docs: the Darwin spellings and the claims that had drifted past them a73x 2026-09-04
5a0a06de chore: test/mac.sh is executable like its sibling gates a73x 2026-09-04
f61b02b6 fix: the Darwin runtime-directory fallback is .macos by name a73x 2026-09-04
f3f916f1 test: the pty grace test fails when the child died inside the grace a73x 2026-09-04
b2deef85 test: the grace table arms its stubborn shells through the fixture doors a73x 2026-09-04
fe38451f test: bans.sh refuses a backtick inside an unquoted heredoc a73x 2026-09-04
4e8641a1 test: the third backticked word inside an unquoted heredoc a73x 2026-09-04
e542a342 docs: the Darwin arm, its measurements and the Mac e2e verdict a73x 2026-09-04
a1ed572c test: the last padded wc count a73x 2026-09-04
e4156c53 test: the daemons whose label bar is asserted get a socket path that fits one a73x 2026-09-04
c0471242 test: the pager leg reads its own anchor and asserts exactly 24 rows on both OSes a73x 2026-09-04
97a6a21f test: four more Linux-only assumptions in the e2e harness a73x 2026-09-04
cbf1a48f test: the e2e suite stops depending on a fast reap, a pager's height and a $TMPDIR without a trailing slash a73x 2026-09-04
3dc3515c test: the e2e harness reads the process table and its counters the way both OSes answer a73x 2026-09-04
9d8e70b1 fix: the upgrade preflight reads Darwin's arm64 as aarch64 a73x 2026-09-04
1477514f test: the Linux-to-Mac leg pins the port the Mac's daemon actually announced a73x 2026-09-04
6738726c test: the cross-OS gate closes stdin for the mux verb that proxies a73x 2026-09-04
7c02ae1a test: the cross-OS gate starts its Linux daemon on the box's own default key a73x 2026-09-04
c3a7ad58 fix: the Darwin arms answer ENOTCONN as a gone peer, not a panic a73x 2026-09-04
ab23cc7f fix: make install on a Mac names the native target, which is the only one that builds a73x 2026-09-04
8f8ed018 test: make xos attaches a Mac client to a Linux daemon and a Linux client to a Mac daemon, over ssh and QUIC a73x 2026-09-04
3fe816a8 test: the mac gate pins one daemon and reads its exe by pid a73x 2026-09-04
c51815d8 test: the repeated-end test pins that the shell outlives the grace a73x 2026-09-04
4ab43004 test: the nag test pins the grace it is named for a73x 2026-09-04
0b12f4e3 test: real_path refuses a missing parent on perl too, and timeout has a pin a73x 2026-09-04
92bb8917 test: the stubborn shell's fixture owns its own readiness wait a73x 2026-09-04
762d350f test: the stubborn-shell wait names the session the test ends a73x 2026-09-04
8b70b1e0 test: the Darwin oracle answers on a bare macOS through perl, not coreutils a73x 2026-09-04
5db1d50b docs: step 3 plan gains Task 9, the cross-OS journeys gate a73x 2026-09-04
e5af07b9 test: the stubborn shell is armed before anything ends it a73x 2026-09-04
45b67e78 test: make mac drives a pristine macOS guest on the Mac the way make vm drives the VM a73x 2026-09-04
b38521e1 test: the oracle's self-test asks every helper a positive, and the clock at all a73x 2026-09-03
158acfcc test: the OS oracle answers on Darwin, and the harness spells time and paths through it a73x 2026-09-03
404f2d42 test: the attach-ordering guard asserts its own frame a73x 2026-09-03
6ec04455 test: the send test names its cause instead of wedging the runner a73x 2026-09-03
f1e1cc8f test: the QUIC absence checks wait long enough to be a claim a73x 2026-09-03
f4449add fix: one guard for every dial at a path that may not be a socket a73x 2026-09-03
a617d351 test: three daemon fixtures stop assuming Linux timing and sizes a73x 2026-09-03
8119942d test: the QUIC pump waits for the marker it is about to assert on a73x 2026-09-03
8dc6a014 test: the scrollback fixture types only after both resizes have landed a73x 2026-09-03
4498c812 test: the agent dials are accepted between presses a73x 2026-09-03
319c9d8e fix: claim stats the path before it connects to it a73x 2026-09-03
e943dffb test: the dead pid comes from a true that both systems have a73x 2026-09-03
dd859ca9 test: the dribble is written across pumps, not in one blocking write a73x 2026-09-03
574464a6 docs: leg 1 is the agent probe's own sequence, not leg 2 a73x 2026-09-03
d39f9927 test: the handoff stderr check asks whether fd 2 is a pipe a73x 2026-09-03
fc24fa27 test: the reparented sleeper does not hold the pipe naming it a73x 2026-09-03
e33768e7 test: the pty exit tests drain the master the daemon reads a73x 2026-09-03
28c13610 fix: the Darwin send is non-blocking by the fd, not by the flag a73x 2026-09-03
256c96a0 docs: the Mac gate drives a pristine macOS guest, not the host a73x 2026-09-03
47cedd93 feat: the client's Darwin arm, and mux links on a Mac a73x 2026-09-03
64c0073b feat: the daemon's Darwin arm a73x 2026-09-03
f2163b2a fix: one owner for the no-runtime-directory sentence, and a 0700 the umask cannot mask a73x 2026-09-03
2a032b17 feat: the Darwin runtime dir is XDG_RUNTIME_DIR, else /tmp/mux-UID checked like tmux does a73x 2026-09-03
3362909e build: the shell gate reaches deps/, and a release names its own target a73x 2026-09-03
c8ff232e build: a Mac builds natively through a shadow SDK, and the dep script follows the host a73x 2026-09-03
ac7f24d4 docs: step 3 plan for the Darwin arm, and the hardware findings amendment to the spec a73x 2026-09-03
0c516740 Merge branch macos-port-step2: the platform layer (macOS port, step 2) a73x 2026-09-03
36800478 fix: the client's agent probe sends through client_os, and the review's comment repairs a73x 2026-09-03
dd868aeb docs: record the platform layer and the macOS measurements a73x 2026-09-03
e5b27feb build: the QUIC prefix and the linker follow the target, not the host a73x 2026-09-03
d4e465a0 test: the upgrade, hosts, web, push and soak pins read the OS through the oracle a73x 2026-09-03
5b5bf1d0 test: the e2e pins ask the OS through named oracle helpers a73x 2026-09-03
c9980623 build: folder rule 7 keeps every OS-specific spelling under src/os a73x 2026-09-03
a514d02b refactor: the shared root asks the OS in portable words, and sockpath owns the runtime dir a73x 2026-09-03
808d5586 refactor: every remaining std.os.linux spelling goes through an os row or std.c a73x 2026-09-03
602384a1 refactor: a stale daemon image is an inode that moved, not a kernel suffix a73x 2026-09-03
94838e6a refactor: the upgrade manifest rides server_os.anonFd a73x 2026-09-03