Codeman maintainer
16980d644d
feat(tiles): keep the arranged layout per browser across toggles and reloads
...
The Tiles toggle used to fill a remembered grid to the count picked in the
menu (refilling a hole the user made, or trimming tiles), removing the last
tile or "Open group as tiles" forgot it, and Ctrl/Cmd+click repacked it.
The owner asked for the opposite: "when I turn tiles off and on, always
keep what the last setting was".
Now the layout the user arranged (which session sits in which cell, holes
included, the tile count, the divider sizes, the focused tile and a zoom
they chose) is written to localStorage on every change and comes back
exactly from the toggle, Ctrl+Shift+G and a reload, however the grid was
closed (toggle, a non-tiled tab, leaveTiles or a #session= link, Home, the
width gate, the last tile, a group, closing or killing sessions). Nothing
of it reaches the server.
- The stored value stays v: 1 and gains `count`: how many tiles the user's
own last change left. A session that goes away by itself (deleted,
popped out, socket refused) does not lower it, so the next activation
fills that cell from the ranking; a hole the user made stays a hole.
- sanitizeTileGridState reports `freed` cells (sessions gone since) and
derives `count` for values written before it; restoreTileGridCells (pure)
puts a stored grid back, freed cells first, never trimmed to the window
(a too-small window shows the focused tile until it fits).
- Only when none of the stored sessions survive does activation rank from
scratch. A count picked in the menu still re-forms the grid to it.
- Nothing is persisted while a stored grid is being put back, and a
#session= link only flips `open`, keeping gone ids for the fill.
- The hover card no longer promises "a click opens N" when a stored grid
will open instead.
This supersedes decision 10's answer that the count wins over a
remembered grid's size; the affected tests say so.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-10-10 05:58:17 +02:00
..
2026-08-22 14:13:57 +02:00
2026-09-14 23:46:28 +02:00
2026-10-09 16:29:01 +02:00
2026-10-10 05:39:51 +02:00
2026-10-10 03:41:38 +02:00
2026-09-06 21:53:38 +02:00
2026-10-10 02:54:39 +02:00
2026-06-10 01:38:40 +02:00
2026-10-09 16:28:26 +02:00
2026-08-10 12:29:00 +02:00
2026-10-04 23:52:41 +02:00
2026-09-07 19:09:24 +02:00
2026-09-28 16:28:29 +02:00
2026-08-12 02:30:08 +02:00
2026-09-02 08:26:45 +08:00
2026-09-07 19:09:24 +02:00
2026-08-08 22:30:39 +03:00
2026-08-21 02:37:58 +02:00
2026-08-05 01:40:37 +02:00
2026-01-27 23:15:25 +01:00
2026-06-09 20:02:15 +02:00
2026-10-09 18:22:14 +02:00
2026-09-22 08:10:05 +02:00
2026-07-12 17:50:21 +02:00
2026-10-08 14:56:42 +02:00
2026-06-19 17:58:06 -04:00
2026-06-19 17:58:06 -04:00
2026-10-09 16:28:26 +02:00
2026-09-04 16:08:57 -04:00
2026-02-12 13:44:07 +01:00
2026-10-05 20:00:30 +02:00
2026-03-07 07:33:44 +01:00
2026-02-26 16:44:34 +01:00
2026-10-09 16:28:26 +02:00
2026-10-09 16:28:26 +02:00
2026-10-09 16:28:26 +02:00
2026-10-05 20:00:30 +02:00
2026-10-05 19:51:59 +02:00
2026-09-28 16:28:56 +02:00
2026-08-07 16:41:39 +02:00
2026-08-10 11:19:51 +02:00
2026-07-20 02:48:14 +02:00
2026-09-24 01:48:33 +02:00
2026-10-08 14:55:02 +02:00
2026-03-01 16:50:23 +01:00
2026-10-09 12:59:56 +02:00
2026-09-02 08:26:45 +08:00
2026-09-13 17:43:13 +08:00
2026-10-09 12:59:56 +02:00
2026-09-24 01:48:26 +02:00
2026-09-24 01:48:26 +02:00
2026-10-03 11:19:42 +08:00
2026-09-02 08:26:45 +08:00
2026-10-09 09:35:56 +02:00
2026-10-09 09:35:56 +02:00
2026-10-04 23:52:41 +02:00
2026-09-04 14:20:11 +02:00
2026-08-22 14:13:57 +02:00
2026-10-08 14:56:42 +02:00
2026-10-09 12:59:48 +02:00
2026-08-26 18:43:52 +08:00
2026-08-09 05:02:14 +02:00
2026-10-01 17:16:18 +02:00
2026-09-06 21:53:38 +02:00
2026-08-21 08:23:31 -04:00
2026-06-10 22:47:02 +02:00
2026-09-06 21:53:38 +02:00
2026-10-01 11:18:56 +02:00
2026-07-12 18:42:36 +02:00
2026-08-09 15:56:44 +02:00
2026-09-06 23:05:26 +02:00
2026-09-28 17:10:12 +02:00
2026-06-29 11:35:56 +05:30
2026-10-06 15:46:49 +02:00
2026-09-16 20:47:12 +08:00
2026-09-19 12:32:50 +02:00
2026-09-17 13:41:19 +08:00
2026-09-17 13:41:19 +08:00
2026-09-17 12:22:45 +08:00
2026-09-20 21:19:42 +08:00
2026-10-09 17:48:28 +02:00
2026-09-17 11:09:24 +08:00
2026-10-09 16:29:01 +02:00
2026-03-01 16:50:23 +01:00
2026-08-24 18:00:52 +02:00
2026-09-13 17:42:35 +08:00
2026-10-07 19:27:45 +02:00
2026-10-09 16:29:01 +02:00
2026-08-25 18:30:41 +02:00
2026-08-25 03:08:15 +02:00
2026-10-05 19:51:59 +02:00
2026-08-22 14:13:57 +02:00
2026-10-03 08:21:54 -04:00
2026-09-23 11:40:03 +02:00
2026-09-16 16:51:00 +02:00
2026-09-14 23:56:19 +02:00
2026-09-14 23:56:19 +02:00
2026-09-13 17:43:14 +08:00
2026-09-02 19:33:32 +08:00
2026-09-28 16:28:29 +02:00
2026-08-27 19:38:38 +08:00
2026-07-20 02:36:02 +02:00
2026-09-23 14:44:26 +08:00
2026-09-04 14:36:35 +02:00
2026-10-05 19:51:59 +02:00
2026-10-09 16:28:26 +02:00
2026-06-14 08:43:57 +02:00
2026-06-14 08:43:57 +02:00
2026-06-12 09:09:14 -04:00
2026-07-12 17:50:21 +02:00
2026-09-23 11:40:03 +02:00
2026-10-09 16:28:26 +02:00
2026-06-07 04:33:11 +02:00
2026-10-09 17:43:55 +02:00
2026-08-09 22:39:07 +02:00
2026-08-23 21:40:10 -04:00
2026-09-22 13:22:28 +05:30
2026-08-05 08:44:47 +02:00
2026-10-09 16:28:26 +02:00
2026-08-29 23:31:28 -07:00
2026-09-15 20:19:47 +08:00
2026-10-01 11:19:46 +02:00
2026-09-04 16:08:57 -04:00
2026-08-19 23:35:45 +02:00
2026-06-09 20:02:15 +02:00
2026-10-09 09:20:19 +02:00
2026-09-21 04:39:28 +02:00
2026-10-09 07:35:29 +02:00
2026-09-01 12:30:48 +08:00
2026-06-19 13:10:17 -04:00
2026-07-12 17:50:21 +02:00
2026-10-09 17:50:07 +02:00
2026-09-28 16:28:56 +02:00
2026-10-09 16:28:26 +02:00
2026-10-06 20:04:45 +08:00
2026-08-23 08:39:03 +02:00
2026-08-23 08:39:03 +02:00
2026-10-08 21:36:04 +02:00
2026-10-09 10:17:44 +02:00
2026-07-12 18:06:59 +02:00
2026-10-08 04:10:55 +02:00
2026-08-10 03:15:13 +02:00
2026-09-25 19:05:16 -05:00
2026-08-10 11:16:58 +02:00
2026-09-24 22:18:07 +02:00
2026-10-09 01:02:57 +02:00
2026-08-09 14:04:34 +02:00
2026-10-09 16:28:26 +02:00
2026-09-18 22:46:11 +02:00
2026-10-09 05:57:49 +02:00
2026-10-09 16:28:26 +02:00
2026-08-14 00:14:21 +02:00
2026-10-07 06:45:16 +02:00
2026-10-09 09:23:05 +02:00
2026-10-09 20:13:58 -04:00
2026-10-09 14:10:54 -04:00
2026-10-09 16:28:26 +02:00
2026-09-14 23:56:19 +02:00
2026-08-17 01:46:48 +02:00
2026-10-06 08:55:05 +02:00
2026-10-06 08:55:05 +02:00
2026-09-13 17:43:13 +08:00
2026-09-21 03:03:31 +02:00
2026-10-09 16:28:26 +02:00
2026-08-09 18:03:13 +02:00
2026-10-09 16:28:26 +02:00
2026-09-22 19:02:55 +02:00
2026-10-09 14:10:54 -04:00
2026-10-09 19:11:22 -04:00
2026-09-02 08:26:45 +08:00
2026-03-07 07:33:44 +01:00
2026-10-10 02:54:01 +02:00
2026-10-09 17:01:44 +08:00
2026-09-28 15:22:37 -04:00
2026-10-04 23:52:41 +02:00
2026-10-09 18:42:00 +08:00
2026-10-09 18:42:00 +08:00
2026-08-16 20:34:34 +02:00
2026-02-26 16:44:34 +01:00
2026-10-08 20:01:45 +02:00
2026-09-08 00:56:39 -04:00
2026-10-04 23:52:41 +02:00
2026-10-04 23:52:41 +02:00
2026-09-26 22:47:48 -04:00
2026-08-19 19:14:52 +00:00
2026-09-24 01:48:26 +02:00
2026-09-22 13:22:28 +05:30
2026-09-14 23:30:14 +02:00
2026-09-28 15:23:22 +02:00
2026-09-08 00:56:39 -04:00
2026-10-08 14:56:42 +02:00
2026-02-18 12:51:35 +01:00
2026-08-09 13:23:24 +02:00
2026-06-08 11:01:34 -04:00
2026-07-19 15:32:45 +02:00
2026-02-12 13:44:07 +01:00
2026-08-04 15:02:46 +02:00
2026-10-10 02:55:49 +02:00
2026-08-28 11:32:30 -05:00
2026-09-12 05:15:41 +02:00
2026-08-28 13:45:12 -05:00
2026-09-07 22:11:54 -05:00
2026-10-09 16:28:26 +02:00
2026-10-09 16:28:26 +02:00
2026-03-21 19:23:37 +01:00
2026-03-21 07:20:18 +01:00
2026-09-14 23:56:19 +02:00
2026-10-09 16:28:26 +02:00
2026-10-09 16:28:26 +02:00
2026-10-10 03:39:33 +02:00
2026-10-09 20:05:21 -04:00
2026-08-09 16:16:54 +02:00
2026-09-10 12:42:33 +08:00
2026-10-09 10:22:23 +02:00
2026-10-09 16:28:26 +02:00
2026-02-26 16:44:34 +01:00
2026-08-21 02:37:58 +02:00
2026-08-13 17:23:27 +02:00
2026-09-01 11:32:18 +02:00
2026-09-14 15:59:00 +02:00
2026-08-26 18:43:52 +08:00
2026-09-14 14:28:57 +02:00
2026-08-07 01:34:47 +02:00
2026-10-10 04:20:46 +02:00
2026-02-12 18:26:16 +01:00
2026-06-09 20:02:17 +02:00
2026-08-09 16:03:27 +02:00
2026-10-08 14:56:42 +02:00
2026-10-09 16:28:26 +02:00
2026-01-21 22:36:45 +01:00
2026-10-09 16:28:26 +02:00
2026-02-19 14:00:10 +01:00
2026-08-20 12:58:17 -04:00
2026-06-10 18:06:45 +02:00
2026-03-01 16:50:23 +01:00
2026-08-09 23:05:11 +02:00
2026-08-09 23:05:11 +02:00
2026-09-08 00:56:39 -04:00
2026-08-09 23:05:11 +02:00
2026-09-24 22:18:07 +02:00
2026-10-09 10:21:25 +02:00
2026-09-14 23:56:19 +02:00
2026-10-06 08:55:05 +02:00
2026-09-04 13:50:22 +02:00
2026-07-17 16:03:03 -04:00
2026-09-14 23:42:06 +02:00
2026-09-15 14:20:31 +02:00
2026-07-17 15:54:32 -04:00
2026-09-07 21:30:31 -05:00
2026-09-14 23:42:06 +02:00
2026-08-07 05:05:41 +02:00
2026-10-08 10:39:19 -04:00
2026-10-08 00:15:50 -04:00
2026-08-21 02:25:43 +02:00
2026-03-07 07:33:44 +01:00
2026-02-26 16:44:34 +01:00
2026-06-10 20:41:34 +02:00
2026-03-07 07:33:44 +01:00
2026-03-07 07:33:44 +01:00
2026-08-09 15:31:02 +02:00
2026-07-12 18:21:42 +02:00
2026-01-25 07:52:40 +01:00
2026-09-23 11:40:27 +02:00
2026-08-18 10:59:44 -04:00
2026-03-01 14:33:18 +01:00
2026-09-24 01:35:23 +02:00
2026-08-19 19:14:52 +00:00
2026-09-28 15:22:37 -04:00
2026-09-12 05:15:41 +02:00
2026-08-21 02:25:43 +02:00
2026-09-01 12:30:48 +08:00
2026-10-04 19:05:43 +02:00
2026-07-17 16:26:28 -04:00
2026-08-18 10:46:21 -04:00
2026-10-07 11:48:47 +02:00
2026-09-24 01:48:26 +02:00
2026-09-20 21:37:05 +08:00
2026-10-09 06:12:18 +02:00
2026-10-09 05:02:27 +02:00
2026-10-09 09:01:31 +02:00
2026-08-23 14:46:10 -04:00
2026-10-09 16:28:26 +02:00
2026-02-18 18:14:13 +01:00
2026-08-10 03:15:13 +02:00
2026-10-09 16:28:26 +02:00
2026-09-24 01:35:27 +02:00
2026-08-16 20:34:34 +02:00
2026-09-24 01:48:26 +02:00
2026-08-09 01:34:55 +02:00
2026-10-09 03:37:41 +02:00
2026-07-12 19:49:58 +02:00
2026-09-15 17:59:16 +02:00
2026-06-10 20:41:34 +02:00
2026-09-28 16:18:27 +02:00
2026-09-07 08:48:31 +02:00
2026-10-09 16:28:26 +02:00
2026-08-09 01:18:03 +02:00
2026-10-10 04:20:46 +02:00
2026-10-07 19:41:56 +02:00
2026-09-21 18:21:21 +02:00
2026-10-09 09:35:56 +02:00
2026-08-10 03:15:13 +02:00
2026-10-08 21:36:04 +02:00
2026-08-24 22:58:28 +02:00
2026-10-07 13:31:59 +02:00
2026-09-14 23:46:28 +02:00
2026-10-04 23:52:41 +02:00
2026-08-23 12:21:02 -04:00
2026-08-23 12:21:02 -04:00
2026-08-23 14:46:10 -04:00
2026-07-17 16:21:16 -04:00
2026-08-16 05:11:00 +02:00
2026-10-07 02:07:27 +02:00
2026-10-09 16:28:26 +02:00
2026-07-17 16:25:29 -04:00
2026-09-22 18:53:46 +05:30
2026-10-06 16:24:52 +02:00
2026-08-23 12:21:02 -04:00
2026-09-23 11:40:27 +02:00
2026-02-26 16:44:34 +01:00
2026-09-15 17:59:16 +02:00
2026-09-19 11:38:59 +02:00
2026-09-01 02:31:26 +02:00
2026-08-09 01:18:03 +02:00
2026-10-09 03:37:41 +02:00
2026-08-09 21:32:04 -04:00
2026-10-09 16:28:26 +02:00
2026-10-10 02:55:01 +02:00
2026-09-24 01:35:23 +02:00
2026-09-28 16:30:40 +02:00
2026-08-05 01:40:37 +02:00
2026-10-06 09:28:08 +02:00
2026-10-09 16:28:26 +02:00
2026-10-08 20:00:10 +02:00
2026-09-23 11:40:03 +02:00
2026-09-21 04:53:19 +02:00
2026-10-09 16:28:26 +02:00
2026-10-07 13:32:00 +02:00
2026-09-20 13:10:34 -05:00
2026-09-20 13:10:27 -05:00
2026-10-09 16:28:26 +02:00
2026-09-20 13:10:32 -05:00
2026-09-20 13:10:29 -05:00
2026-10-09 16:28:26 +02:00
2026-10-09 09:47:22 +02:00
2026-10-05 21:30:29 -04:00
2026-09-27 07:55:29 -04:00
2026-10-09 10:17:44 +02:00
2026-10-05 21:30:29 -04:00
2026-10-09 16:28:26 +02:00
2026-09-15 21:01:53 +02:00
2026-10-09 16:28:26 +02:00
2026-08-13 17:28:35 +02:00
2026-06-09 20:02:15 +02:00
2026-10-09 16:28:26 +02:00
2026-08-13 17:28:35 +02:00
2026-10-09 16:28:26 +02:00
2026-10-09 04:48:43 +02:00
2026-03-07 07:33:44 +01:00
2026-08-23 14:46:10 -04:00
2026-08-23 14:46:10 -04:00
2026-10-09 16:28:26 +02:00
2026-09-14 15:59:00 +02:00
2026-01-22 11:30:10 +01:00
2026-05-12 10:11:47 +02:00
2026-10-10 04:20:46 +02:00
2026-09-22 12:25:36 +05:30
2026-10-04 23:52:41 +02:00
2026-10-09 16:34:09 +02:00
2026-10-09 10:17:44 +02:00
2026-10-09 01:02:57 +02:00
2026-10-04 20:10:32 -04:00
2026-10-04 20:21:44 -04:00
2026-10-05 19:51:59 +02:00
2026-08-23 14:46:10 -04:00
2026-08-23 14:46:10 -04:00
2026-10-04 20:10:32 -04:00
2026-08-23 14:46:10 -04:00
2026-08-24 00:59:48 +02:00
2026-10-09 09:23:05 +02:00
2026-08-23 14:46:10 -04:00
2026-08-23 14:46:10 -04:00
2026-10-05 19:51:59 +02:00
2026-08-23 12:21:02 -04:00
2026-10-08 21:36:04 +02:00
2026-10-06 04:08:02 +02:00
2026-08-23 12:21:02 -04:00
2026-08-25 18:26:07 +02:00
2026-10-10 04:37:49 +02:00
2026-10-10 05:01:34 +02:00
2026-10-08 22:17:27 +02:00
2026-02-28 17:39:44 +01:00
2026-02-28 17:39:44 +01:00
2026-01-21 07:19:49 +01:00
2026-02-26 16:44:34 +01:00
2026-10-09 23:28:55 +02:00
2026-08-20 10:46:11 +02:00
2026-09-18 21:38:40 +02:00
2026-09-22 19:02:55 +02:00
2026-08-05 02:38:57 +02:00
2026-10-09 16:28:26 +02:00
2026-09-18 21:34:42 +02:00
2026-09-22 13:22:28 +05:30
2026-10-06 10:07:40 +02:00
2026-09-14 14:09:13 +02:00
2026-06-30 19:52:49 -04:00
2026-07-12 12:39:46 +02:00
2026-10-09 16:28:26 +02:00
2026-10-09 05:46:56 +02:00
2026-06-09 15:39:03 -04:00
2026-10-06 10:20:25 +02:00
2026-08-19 19:41:43 +00:00
2026-02-26 16:44:34 +01:00
2026-09-23 11:40:03 +02:00
2026-09-22 13:07:33 +05:30
2026-10-08 20:06:53 +02:00
2026-09-22 13:22:28 +05:30
2026-10-09 07:18:47 +02:00
2026-09-14 23:56:19 +02:00
2026-10-09 09:48:55 +02:00
2026-10-10 02:25:54 +02:00
2026-10-10 02:25:54 +02:00
2026-10-09 09:26:51 +02:00
2026-10-09 08:42:03 +02:00
2026-09-24 01:35:23 +02:00
2026-10-10 02:54:39 +02:00
2026-08-18 19:55:23 +02:00
2026-10-07 09:37:04 +02:00
2026-10-07 09:37:04 +02:00
2026-10-08 04:10:55 +02:00
2026-10-10 05:58:17 +02:00
2026-10-08 21:36:04 +02:00
2026-10-10 04:20:46 +02:00
2026-10-08 03:53:10 +02:00
2026-10-10 05:58:17 +02:00
2026-10-08 04:40:15 +02:00
2026-10-09 17:43:55 +02:00
2026-10-07 09:37:04 +02:00
2026-10-09 08:44:52 +02:00
2026-10-08 17:48:04 +02:00
2026-10-09 09:23:05 +02:00
2026-10-10 05:58:17 +02:00
2026-10-10 05:58:17 +02:00
2026-10-09 09:18:32 +02:00
2026-10-09 09:01:31 +02:00
2026-10-08 03:08:14 +02:00
2026-10-10 05:58:17 +02:00
2026-10-08 04:40:15 +02:00
2026-10-08 04:40:15 +02:00
2026-10-09 10:17:44 +02:00
2026-10-10 05:39:51 +02:00
2026-10-10 05:58:17 +02:00
2026-10-09 08:44:52 +02:00
2026-10-10 05:58:17 +02:00
2026-10-10 05:58:17 +02:00
2026-10-07 07:11:08 +02:00
2026-10-07 13:32:00 +02:00
2026-06-09 15:39:03 -04:00
2026-09-19 10:44:35 +02:00
2026-09-24 22:18:07 +02:00
2026-07-12 19:49:58 +02:00
2026-07-10 11:14:26 -04:00
2026-05-25 23:28:58 +02:00
2026-10-10 02:55:49 +02:00
2026-08-09 18:03:13 +02:00
2026-07-20 03:26:21 +02:00
2026-10-06 16:24:52 +02:00
2026-06-10 20:41:34 +02:00
2026-09-14 15:59:00 +02:00
2026-07-20 02:58:51 +02:00
2026-01-22 11:30:10 +01:00
2026-09-14 15:57:08 +02:00
2026-10-09 08:51:08 +02:00
2026-08-10 11:19:51 +02:00
2026-09-23 11:40:03 +02:00
2026-10-09 16:28:26 +02:00
2026-10-04 23:52:41 +02:00
2026-10-04 23:52:41 +02:00
2026-10-09 16:28:26 +02:00
2026-10-08 14:56:41 +02:00
2026-09-14 23:38:54 +02:00
2026-09-04 15:21:13 +02:00
2026-09-04 15:21:12 +02:00
2026-09-04 15:21:12 +02:00
2026-09-14 23:38:54 +02:00
2026-10-09 16:28:26 +02:00
2026-07-29 09:01:18 +02:00
2026-08-09 04:06:23 +02:00
2026-09-14 23:38:54 +02:00
2026-10-09 16:28:26 +02:00
2026-10-09 09:47:22 +02:00
2026-08-23 14:12:38 -04:00
2026-07-21 00:04:40 +08:00
2026-10-05 20:00:30 +02:00
2026-07-12 18:42:36 +02:00
2026-07-12 18:42:36 +02:00
2026-07-12 18:42:36 +02:00
2026-10-09 05:46:56 +02:00