feat(tiles): the grid holds at most 6 tiles (owner decision 7)

Six was tested smooth on the owner's desktop; nine missed the headless
frame bar and is untested on real hardware. TILE_GRID_MAX (constants.js)
is now 6 and stays the one cap every limit reads; the layout table gets
its own bound, TILE_LAYOUT_MAX = 9, so the 7 to 9 layouts keep working
(unreachable) and going back to nine is that one line.

Every way in stops at the cap: opening, addTile, a tile's +, a session
Run makes, Ctrl/Cmd+click, the picker, "Open group as tiles", and a stored
grid with more ids (it comes back as its first six, focus kept only if it
survives, a dropped zoom cleared, row fractions that no longer match the
3x2 reset). The limits now go through one helper, _tileGridLimit(), whose
texts say which limit binds: "Up to 6 tiles" / "The grid holds at most 6
tiles" when it is the cap, "This window fits N" when it is the window.

Docs: decision 7 and an as-built entry in the spec, CLAUDE.md, the
invariants, the wiki's Tile Grid and Dashboard pages.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Codeman maintainer
2026-10-06 23:18:29 +02:00
parent 21beacf700
commit d2e72143e8
10 changed files with 217 additions and 32 deletions
+10
View File
@@ -29,6 +29,10 @@ or settled a question the spec left open. The invariants as built are in
B too), and a refresh clears the screen at its turn in the queue, so a waiting tile keeps
its last frame.
- **4009 lands on the Attach overlay**, and 4003/4004/4010 remove the tile.
- **The grid holds at most 6 tiles** (owner decision 7). `TILE_GRID_MAX` in constants.js is
the one cap every limit reads; the layout table keeps 7 to 9 (`TILE_LAYOUT_MAX`), unreachable,
so going back to nine is that one line. A stored grid with more ids comes back as its first
six. Where this spec says nine, read six.
- **"+ / New session in this case"** runs the normal Run for that case and joins through
the same auto-join as any Run from this tab.
- **A tile that joins before its pane exists resends its size when the pid appears**
@@ -869,6 +873,12 @@ exits green. Use the browser runner for those files and read the file count.
chord is inert while `showTileGridButton` is off (it passes through like any
unbound key) and toggles the grid while it is on, so one setting governs both
the button and the chord.
7. **The tile cap.** Decided by the owner: at most 6 tiles for now. Six was
tested and is smooth on the owner's desktop; nine missed the headless frame
bar (p95 33 ms at 6 and 9 tiles under load, 16.8 ms at 4) and is untested on
real hardware. The cap is one constant (`TILE_GRID_MAX`), the layout table
keeps 7 to 9 working but unreachable, and the user-facing texts say "at most
6 tiles" when the cap, not the window, is what limits the grid.
## Code anchors