layout: a late-arriving tile is cut stacked on a wide wall; the aspect rule runs once #62

Open
opened 2026-08-30 05:20:19 +00:00 by a73x · 1 comment
a73x commented 2026-08-30 05:20:19 +00:00 (Migrated from git.a73x.sh)

A tile that arrives on a wall of one is cut STACKED whatever the terminal's
shape: layout.Tree.insert on a leaf root calls split(focus, tile, .stacked).
The aspect rule (wall_layout.rootOrient: beside when cols >= 2*rows) runs
only in wallview's !restore_ok branch, once, after the sidecar restore is
tried (all hosts reported, or 2 s).

Two visible effects, both reproduced 2026-08-30 with v0.0.1-16 + ssh-askpass
on a 100x30 pty, hosts = local + a down host + a reachable ssh host:

  1. Every reattach blinks: the local tile paints, the remote's tile inserts
    stacked, then the restore applies the saved beside tree ~2 s in.
  2. A tile that arrives AFTER the restore succeeded on the one local tile
    (seen once: the remote's list took 6 s) inserts stacked and nothing ever
    re-orients it. A wide wall stays stacked until the next detach/attach.

Fix: the root split a birth makes takes rootOrient(size) instead of
.stacked (in insert, or the birth path in wallview). That removes the
blink too, since the interim cut is already the right shape. Restore stays
verbatim — a saved tree still wins over the aspect rule.

Pin: a two-tile wall built by list arrival on a wide pty is beside before
any restore; a tile born after restore_tried on a wide pty is beside.
(Fixture holds the terminal shape constant today: cols/rows must vary.)

Aside, not this issue: a picker birth on a down host sits at [connecting]
with no reason on its bar; the reason is on the picker row only.


Migrated from git-collab issue 7b04a2ac92e05b893e7ff113617651c27e9fc176.

Original author: a73x dev@a73x.sh.

A tile that arrives on a wall of one is cut STACKED whatever the terminal's shape: `layout.Tree.insert` on a leaf root calls `split(focus, tile, .stacked)`. The aspect rule (`wall_layout.rootOrient`: beside when cols >= 2*rows) runs only in wallview's `!restore_ok` branch, once, after the sidecar restore is tried (all hosts reported, or 2 s). Two visible effects, both reproduced 2026-08-30 with v0.0.1-16 + ssh-askpass on a 100x30 pty, hosts = local + a down host + a reachable ssh host: 1. Every reattach blinks: the local tile paints, the remote's tile inserts stacked, then the restore applies the saved `beside` tree ~2 s in. 2. A tile that arrives AFTER the restore succeeded on the one local tile (seen once: the remote's list took 6 s) inserts stacked and nothing ever re-orients it. A wide wall stays stacked until the next detach/attach. Fix: the root split a birth makes takes `rootOrient(size)` instead of `.stacked` (in `insert`, or the birth path in wallview). That removes the blink too, since the interim cut is already the right shape. Restore stays verbatim — a saved tree still wins over the aspect rule. Pin: a two-tile wall built by list arrival on a wide pty is `beside` before any restore; a tile born after `restore_tried` on a wide pty is `beside`. (Fixture holds the terminal shape constant today: cols/rows must vary.) Aside, not this issue: a picker birth on a down host sits at `[connecting]` with no reason on its bar; the reason is on the picker row only. --- Migrated from git-collab issue `7b04a2ac92e05b893e7ff113617651c27e9fc176`. Original author: a73x <dev@a73x.sh>.
a73x commented 2026-09-05 19:19:06 +00:00 (Migrated from git.a73x.sh)

[claude 2026-09-05 backlog pass] Half stale, half live. The sidecar restore and its 2 s blink are gone: an unseeded wall orients once via rootOrient when a second tile appears (wallview.zig, the 'oriented' branch). What survives: layout.Tree.insert still splits a leaf root .stacked, so a tile born after that one-shot (chord or picker) on a wide wall of one is cut stacked. Fix is the same one-liner the body names.

[claude 2026-09-05 backlog pass] Half stale, half live. The sidecar restore and its 2 s blink are gone: an unseeded wall orients once via rootOrient when a second tile appears (wallview.zig, the 'oriented' branch). What survives: layout.Tree.insert still splits a leaf root .stacked, so a tile born after that one-shot (chord or picker) on a wide wall of one is cut stacked. Fix is the same one-liner the body names.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
a73x/mux#62
No description provided.