a73x

History: test/e2e.sh

Ref:

Hash Message Author Date
4d48bfad feat: mux d stop, dump and stats take --quic for a daemon whose socket is gone a73x 2026-09-05
67a1e976 feat: add native host and session pickers a73x 2026-09-05
b2cc0a99 test: the e2e pin counts the Ctrl-\ X scenario a73x 2026-09-04
5b5bf1d0 test: the e2e pins ask the OS through named oracle helpers a73x 2026-09-03
e6fff02f fix: a tile's application reads mouse reports in its own coordinates a73x 2026-09-03
372d8ada test: the e2e pin counts the refused-layout leg a73x 2026-09-03
13e66d44 test: the e2e suite pins the wall as the layout a73x 2026-09-03
29cbd304 fix: a QUIC client sends CONNECTION_CLOSE on teardown, so a poll frees its slot at once a73x 2026-09-03
0aed35be fix: a successor reaps the pid-named leftovers a dead daemon or wall stranded a73x 2026-09-02
1507f375 fix: the keyboard re-arms the wall's mouse capture; a parked pump cannot a73x 2026-09-02
a500b0cd feat: sessions_reply carries the daemon's version and a stale-image bit a73x 2026-09-02
5c9897e0 feat: mux d upgrade HOST pushes this image over ssh and upgrades there a73x 2026-09-01
479b5c2e test: e2e - a rebooted daemon's panes wear gone and the cut never moves a73x 2026-09-01
90af5cbb test: ssh's prompts, both exclusions, and the socket's hygiene a73x 2026-08-30
6433ab32 test: a down host says why on the row, and nothing on the wall a73x 2026-08-30
502e12d7 refactor: the daemon's foreground is `start`, and `-d` is what forks it a73x 2026-08-30
8443391f fix: a warm miss on unchanged coordinates costs one deadline, not two a73x 2026-08-29
44755603 feat: `mux d endpoint --start` ensures a daemon before it announces a73x 2026-08-29
ed887277 test: the scenario pin is 89 — web-restore went with its subject a73x 2026-08-29
89de963b fix: the spawn is an exec, not a fork — four comments still said fork a73x 2026-08-29
5d9b51fe refactor: the handoff recipe is an argv — ssh is exec'd, not a shell line a73x 2026-08-29
66e13fe3 test: one binary through the suites, and the daemon's exe asked of the kernel a73x 2026-08-28
d5e04be1 test: a refused birth paints [refused] and the wall stays up a73x 2026-08-28
9ec2df21 test: x on a wall ends the focused tile's session and no other a73x 2026-08-28
69a8393b test: a wall polling two boxes starts no daemon; Enter and a cold mux HOST each start one a73x 2026-08-28
ce611141 feat: a new tile takes the lowest free digit a73x 2026-08-28
422efd20 test: the picker on a real pty, and the wall that outlives its last tile a73x 2026-08-28
06db9c9e test: the rigs stop the daemons they used to watch die a73x 2026-08-28
e3f3c7bf fix: the empty wall the keyboard sees is the one the screen paints a73x 2026-08-28
a0524f88 test: e2e — the first mux on a machine writes the wall it just started a73x 2026-08-28
0c07bcf8 test: e2e — a wall is a daemon, not a list of sessions; pin 81 a73x 2026-08-28
88bcfd7a test: e2e — the wall of hosts (two daemons, x two-step, restart re-creates nothing) a73x 2026-08-28
224e0465 test: e2e — one peer holding half a frame does not stop muxd stats a73x 2026-08-27
cafa56ed refactor: the four entrypoints move to src/cli/ a73x 2026-08-27
a824b1a2 test: 14_upgrade moves to a file of its own a73x 2026-08-26
ff52fa6d test: 13_birth moves to a file of its own a73x 2026-08-26
0761be0b test: 12_panes moves to a file of its own a73x 2026-08-26
8a3c3ba9 test: 11_select moves to a file of its own a73x 2026-08-26
fbfd75df test: 10_agent moves to a file of its own a73x 2026-08-26
ec5c8b51 test: 09_wallhist moves to a file of its own a73x 2026-08-26
5b97e538 test: 08_mouse moves to a file of its own a73x 2026-08-26
fc698819 test: 07_wallcli moves to a file of its own a73x 2026-08-26
ea9d9ce9 test: 06_web moves to a file of its own a73x 2026-08-26
13e13cc1 test: 05_session moves to a file of its own a73x 2026-08-26
d92023ef test: 04_handoff moves to a file of its own a73x 2026-08-26
d367443a test: 03_side moves to a file of its own a73x 2026-08-26
078e9712 test: 02_predict moves to a file of its own a73x 2026-08-26
9bd46b17 test: 01_boot moves to a file of its own a73x 2026-08-26
01b5ae24 refactor: the helpers, the registry and the trap become e2e_lib.sh a73x 2026-08-26
76778c7a refactor: a daemon's declaration stands with the leg that starts it a73x 2026-08-26
37d38ee4 refactor: the trap reads a register, not four hand-kept lists a73x 2026-08-26
2f007823 test: the coverage run finishes the suite — three more pids that were the tracer's a73x 2026-08-26
866031d9 test: the coverage run survives two verbs the tracer wrapped wrong a73x 2026-08-26
2c823d71 fix: muxd stop returns when the process is gone, not when the socket is a73x 2026-08-26
a6ad1dca test: the upgrade keeps the shell, its pid, its title, its marks, its agent a73x 2026-08-26
fa7a3295 docs: an e2e comment that names a size no leg runs at is deleted a73x 2026-08-26
f8f7392a test: one birth is counted, not inferred from the session table a73x 2026-08-26
1a21cb38 fix: a refusal the birth cannot fix backs off instead of spinning a73x 2026-08-26
c1dac3ce fix: a verb that never attached does not blame the client table a73x 2026-08-26
e26e5494 test: the browser wall brings a saved local line back a73x 2026-08-26
01255d37 test: the e2e suite pins the refusal's words for run, status and send a73x 2026-08-26
c36f3a11 test: a rendered wall says which chord reaches which tile a73x 2026-08-25
5a2ed83f test: the restored wall creates its local lines and refuses its remote one a73x 2026-08-25
c48a660c feat: Ctrl-\ : adds a tile by spelling from inside the wall a73x 2026-08-25
520a8baa feat: the daemon holds thirty-two sessions, wall-sized again a73x 2026-08-25
4df85e37 test: the rm sweep stops listing files no leg writes a73x 2026-08-25
113a7e2c test: the restore leg asserts the focus came back a73x 2026-08-25
a14ea705 fix: a click finds its pane by column, not just row a73x 2026-08-25
9dca0bb1 test: the layout survives the round trip, heals, and degrades a73x 2026-08-25
789fd74e test: the wall's column era gets its legs a73x 2026-08-24
d6bede8d feat: Ctrl-\ r trades cells between panes a73x 2026-08-24
7faf0467 feat: fullscreen is a relayout where the focus takes the terminal a73x 2026-08-24
6a936579 feat: columns on — aspect hydration, rails, focus_dir, split chords a73x 2026-08-24
11682d56 feat: painters address a column offset and erase only their span a73x 2026-08-24
55be7cab test: the wall claims its rows, and a neighbour survives a scroll a73x 2026-08-24
f2b711e7 fix: the cursor rests in the focused tile, whoever painted last a73x 2026-08-24
cf341e7c test: the CLI wall leg stops betting on a pump race a73x 2026-08-24
056e4f6a fix: a tile with nothing left to say leaves the wall a73x 2026-08-24
55fba86d test: the e2e wall legs learn the focus model a73x 2026-08-24
31771807 feat: every tile claims its rect; focus replaces zoom a73x 2026-08-24
aac3c2da feat: prediction hides itself on a path too fast to see it a73x 2026-08-23
f6013e14 fix: the default socket path refuses to be guessed a73x 2026-08-23
7c8dbc8a fix: a resize is reported in-band to an app that turned on mode 2048 a73x 2026-08-22
2ae7c94b fix: a client that never answers its first agent request is hung up on a73x 2026-08-22
a45ee4ed fix: a click at the wall is bounded by the grid, as a zoomed one is a73x 2026-08-22
1a8338f1 fix: a highlight edge inside a wide cell no longer shifts the row a73x 2026-08-22
e439be23 feat: a drag copies the text it crossed a73x 2026-08-22
c2a60319 feat: a click at the wall selects the stripe under it a73x 2026-08-22
bd8f4571 fix: the unzoomed wall filters mouse reports instead of typing them a73x 2026-08-22
a0915d2d test: the non-tty scenarios wait for their output instead of sleeping for it a73x 2026-08-22
2862f603 test: a green run that leaves residue now says so instead of passing a73x 2026-08-22
6c079f9d test: hardkill must kill the child, not wait on a wrapper that cannot exit a73x 2026-08-22
96febc7b test: line coverage for the e2e suite, via kcov a73x 2026-08-21
38deccfb fix: the -A preflight asks the agent, it does not just dial it a73x 2026-08-21
85152686 fix: the review round's two should-fixes and four nits a73x 2026-08-21
ddbd08e2 feat: -A with no agent is refused, not kept silently a73x 2026-08-21
1be12949 test: the refusal leg proves the daemon it means a73x 2026-08-21
0b356394 test: the signing agent follows whoever typed last a73x 2026-08-21
d225b05c test: a real key crosses the wire; a keyless session refuses fast a73x 2026-08-21
a2b258c9 fix: keep the shellcheck rationale off the directive line a73x 2026-08-21
d057e034 refactor: an unzoomed browser tile claims no size, like every other watcher a73x 2026-08-20
f1d908b5 test: the hidden-tile leg pins silence, not a repaint schedule a73x 2026-08-20
d88f3df5 docs: README and CLAUDE.md catch up — the wall is the product now a73x 2026-08-20
cb1e4946 test: the mutation notes name what the mutants actually did a73x 2026-08-20
9e225de2 test: the convergence, and the legs it deliberately changed a73x 2026-08-20
461245b2 test: a tile the zoom is not on paints nothing at all a73x 2026-08-20
96378b1a test: the wheel works in a zoomed tile, and the demote gives it back a73x 2026-08-20
c7c055bf feat: a wall tile is an interact.Core, so the wheel works zoomed a73x 2026-08-20
ee301abd feat: muxweb argv adds tiles to the wall, never overwrites it a73x 2026-08-20
a89535be feat: x forgets a tile, and never kills its session a73x 2026-08-20
f88b6984 test: the zoom claims the grid without attaching, and skips for free a73x 2026-08-19
d9a5d6cb test: e2e drives a real wheel from the pty side, both ways a73x 2026-08-19
8d60e36e test: e2e zooms the second stripe and types into that session a73x 2026-08-19
69be7cc3 feat: one wall, one argv dialect — both binaries take both --sock spellings a73x 2026-08-19
56781f44 test: e2e reads the planted env out of a shell and pins that no client was made a73x 2026-08-19
d6523df1 test: e2e walls two sessions from inside one, and comes back a73x 2026-08-19
9b404327 test: e2e walks the ring three sessions wide, both ways a73x 2026-08-19
c3830637 test: e2e gates the switch by what moved and what did not a73x 2026-08-19
fb51449b test: the harness detaches with the chord, and a scenario pins the layer a73x 2026-08-19
483606dd test: e2e gates the CLI wall — two sessions and a live delta, one pty a73x 2026-08-19
2de1f8e3 fix: remote ~/.local/bin is a PATH fallback, not a shadow a73x 2026-08-18
7c4367e8 test: e2e — dynamic wall add/remove/reorder/restore; docs a73x 2026-08-18
6f9f4886 test: pin cli side-channel atomicity a73x 2026-08-18
20d59fae docs(e2e): say what the bell leg's cleanup and its zero-OSC check actually do a73x 2026-08-15
5d5b6fa5 perf: one bell per drain, and the count pinned on a real terminal a73x 2026-08-15
24ccce50 test(e2e): the gate fix, pinned by a test that fails without it a73x 2026-08-15
f9c185db test(e2e): pin the title stack's count, and sweep the leg's residue a73x 2026-08-15
89ebdc4d docs(e2e): give the paste leg's waits the reasons they actually run on a73x 2026-08-15
2de33178 feat: carry the session's window title to the host terminal a73x 2026-08-15
84a7a44f test(e2e): say why the paste leg waits the way it does a73x 2026-08-15
057cbff8 test: ptyclient pastes like a terminal, and nvim proves it a73x 2026-08-15
c3ecb3b9 test(e2e): the session's OSC 52 reaches the host terminal a73x 2026-08-15
ab09f763 test(e2e): two sessions on one daemon, on the wall and over QUIC a73x 2026-08-15
ae9d7790 test: leak sweep survives failure; ports are observations a73x 2026-08-14
bd03a5c7 fix(test): a wedged daemon fails leakcheck loudly; the sweep pins its own input a73x 2026-08-14
ab0ecad2 feat: DebugAllocator verdicts print a grep-able LEAK marker; e2e/agent assert absence a73x 2026-08-14
625c6b51 test(e2e): four helpers, and the marker polls grow the assert they lost a73x 2026-08-13
a3fd1a94 test: e2e — hub scenarios: passivity pin, origin gate, tear/re-attach a73x 2026-08-13
ca46fe0e fix: Task 4 follow-through — the third re-timed site, the inverted mechanism comment, narrowed error set a73x 2026-08-12
7bf74d2b fix: refused QUIC dial fails in ~1 RTT; quic:// attach budget is deadline_ms, not idle_ms a73x 2026-08-12
aa247b30 docs: M14 closed — ssh→QUIC handoff a73x 2026-08-12
d9b17d58 test: e2e — delete the unfalsifiable check; (c) measures the time it claims; honest bounds a73x 2026-08-12
d6888aa5 test: e2e — quality batch: full SOCK17 teardown, trap backstops, fixture hardening, honest comments a73x 2026-08-12
5b03e25b test: e2e — (a) asserts the second marker ABSENT before ssh dies a73x 2026-08-11
bde1af57 test: e2e — (a) death asserted across the window; (d) ceiling reasoning; (e) evidence note a73x 2026-08-11
04de1f6a test: e2e pins $SHELL — the suite must not run the developer's login shell a73x 2026-08-11
d0550135 test: e2e — ssh shim + five handoff scenarios; pins 15->20 / 28->33 a73x 2026-08-11
ee04b68c test: legible stop failures — the regrade's predicted catch must print, not abort a73x 2026-08-10
414d282a test: e2e — auto-start arcs (proxy + pty), muxd stop teardown, pins bumped a73x 2026-08-10
7d56f0e2 test: sun_path refusals pinned in e2e; already-running pin carries the new clause a73x 2026-08-10
2a47b9f5 fix: audit refinements — client length check, nothing-listening, actionable stop hint a73x 2026-08-10
68e7a144 fix: error audit — say what happened, never guess what a lower layer named a73x 2026-08-10
d6452d03 refactor: spawn.ensureForAttach owns the attach shape; auto-start appends, never truncates a73x 2026-08-10
3f277597 fix: tp1's daemon guard proves serving, not existing a73x 2026-08-10
583b36c0 test: tp1 — reconnect while scrolled restores the view and prediction a73x 2026-08-10
53845cb4 docs: two comment counts read unambiguously (review nits, controller-applied) a73x 2026-08-10
a9a5a8f3 fix: tp2b proves arrival then silence — witness and settle each cover the other's blind side a73x 2026-08-10
18c4c7f5 fix: tp2b syncs on unique markers and silence — sentinel counts have no order under split deltas a73x 2026-08-10
da3ffc01 fix: tp2b syncs on a width witness — a scrolling repaint reorders rows across deltas a73x 2026-08-10
a50f92c1 test: tp2b resizes UP so a stale replica width has somewhere to show a73x 2026-08-10
85da1e61 test: tp2 — a pty client attaches at 100x30 and resizes to 90x28 a73x 2026-08-10
511d9974 fix: waitexit drains the last bytes before believing the exit a73x 2026-08-10
00d2f8fb feat: ptyclient main loop + fixture controls in the suite a73x 2026-08-10
b03d9834 feat: ptyclient script engine — escapes, consume-cursor expect, verb parse a73x 2026-08-10
e09da54f fix: review conditions — soak refuses a dirty baseline; the scroll bug's true severity a73x 2026-08-09
1b993c93 test: a styled specimen, so the byte-exact leg has something to compare a73x 2026-08-09
2bc64e84 fix: the burst's fifth keystroke aged onto the expiry bound exactly a73x 2026-08-09
2a5aa4d9 test: pin scenario and convergence counts to literals a73x 2026-08-09
818302fd test: convergence on the prediction scenarios; stats reads move to split stderr a73x 2026-08-09
2518c30b test: convergence on every transport scenario that ends with a live daemon a73x 2026-08-09
d351788c test: e2e asserts render-vs-dump convergence, with a control that fires a73x 2026-08-09
143e2b46 test: burst scenario tolerates one in-flight confirmation at detach a73x 2026-08-09
715f71b6 fix: a --via command that dies before connecting says so a73x 2026-08-09
f0c3a9d9 fix: deadline line reads right from any caller, and stays two lines untty'd a73x 2026-08-09
9bd43fcf fix: muxd start reports a dead child instead of panicking on it a73x 2026-08-09
c5656224 feat: muxd start — the setsid-nohup incantation becomes a subcommand a73x 2026-08-09
144f6af7 test: e2e pins daemon MUX_KEY_FILE, and --key beating it at the call site a73x 2026-08-09
63b9dff2 feat: key resolution --key > MUX_KEY_FILE > ~/.config/mux/key, both binaries a73x 2026-08-09
5c02dad4 test: refuse bound gets an absolute ceiling a73x 2026-08-09
01a27648 feat: port 4433 is the default on both ends of quic:// a73x 2026-08-09
ab4e375d test: e2e refuse bound derives from the usage block a73x 2026-08-09
564591de feat: muxd keygen — one command replaces the /dev/urandom incantation a73x 2026-08-09
ac834e38 fix: e2e cleanup trap survives a failure before the first daemon starts a73x 2026-08-09
a33238ab test: e2e pins that both binaries report one version a73x 2026-08-09
78b8d479 feat: --version on both binaries, one source in build.zig a73x 2026-08-09
1ad4be3e test: DELAY_MS is pinned, in the unit test and on the wire a73x 2026-08-08
af1908af test: e2e — prediction confirmed, suppressed, demoted, and flushed, by counter a73x 2026-08-08
8a005f3a feat(m8): QUIC held on a real path — three legs of four; the record a73x 2026-08-08
c35a9687 test: e2e over QUIC — same semantics, same counters, new transport a73x 2026-08-08
a88c3250 feat: mux quic://host — the transport swap, third pass a73x 2026-08-08
ae0b1138 feat: muxd speaks QUIC — one UDP fd, PSK, and the protocol never noticed a73x 2026-08-08
20016508 test: e2e proves resume-by-delta across a transport tear and resume-by-snapshot across a daemon restart a73x 2026-08-08
f6a54d28 feat: transport death is a non-event — reconnect with have_seq, resume by delta a73x 2026-08-08
a518671e feat: mux --via arbitrary-command transport; muxd proxy byte pump a73x 2026-08-08
909a0377 feat: two-client e2e and demo; docs: resize decision recorded — M5 complete a73x 2026-08-08
9ea510f6 test: kill-reattach e2e; docs: M3 decisions and usage a73x 2026-08-08
439d9e14 test: e2e through the real client/daemon loop a73x 2026-08-08
076d28eb feat: muxd run/dump wired through poll loop; e2e passes a73x 2026-08-08