Peter Steinberger
6df0fb818d
feat: add session thread management ( #98510 )
...
* feat: add session thread management
Squash of codex/thread-management (025aefc3ad1) onto origin/main:
pin/archive/rename sessions via sessions.patch, archived-aware
sessions.list, lifecycle fencing, read-only archived chat, SDK +
Swift protocol support, Control UI session management.
* refactor(ui): minimal session rows with hover-revealed management
Chat picker and sidebar recents share session-row primitives: single-line
rows, relative timestamps, rename/archive/pin revealed on hover or focus,
accent pin badge for pinned rows, and an active-run spinner in the trail
slot. Sidebar floats pinned sessions above recency via the shared
comparator and gains archive/pin actions through the unified sessions-view
patch fallback. Archive eligibility is one shared policy
(canArchiveSessionRow); the sidebar/picker active-run tooltip now uses the
real sessionsView.activeRun locale key.
* fix: align session admission with mailbox-era main
Integration fixes after rebasing onto current main: sessions_list mailbox
test expectations learn the archived/pinned row fields and archived:false
list param; gateway agent admission treats a session as deleted only when
both the requested and canonical alias sets miss it (legacy bare-main
stores and exec-approval followups read under different spellings); cron
persist tests keep a consistent store across claim-guarded persist calls;
the ACP abort hook test asserts abort propagation instead of signal
identity; drop dead lifecycle writes flagged by no-useless-assignment and
fix the promise-executor return in the codex compact test.
* fix(qa): align UI e2e and shard fixtures with redesigned session rows
Sidebar session rows are wrapper divs with an inner link now: update the
navigation browser tests and chat-flow Playwright selectors. Seed a real
per-test session store for the auto-fallback admission guard instead of
depending on leftover host files at /tmp/sessions.json. Teach the
test-projects routing fixture about the suites that newly import the
shared temp-dir helper. Document the Codex thread-format contract for
archivedAt/pinnedAt (flag derived from server-stamped timestamp, epoch ms
here vs Codex epoch seconds) at the type and in the session docs.
* test: route auto-fallback suite through temp-dir helper plans
The auto-fallback suite now imports the shared temp-dir helper for its
seeded session store, so the top-level helper routing fixture must list
it in the auto-reply plan.
2026-07-04 14:30:47 -04:00
..
2026-07-03 17:58:15 -07:00
2026-07-01 17:04:31 -07:00
2026-07-04 14:30:47 -04:00
2026-07-01 03:58:47 -07:00
2026-06-29 10:36:29 -07:00
2026-07-04 14:30:47 -04:00
2026-06-04 19:39:51 -04:00
2026-06-04 19:39:51 -04:00
2026-07-04 00:03:49 -07:00
2026-06-04 19:37:38 -04:00
2026-06-04 10:48:30 -04:00
2026-06-04 19:35:08 -04:00
2026-06-04 10:48:30 -04:00
2026-06-21 15:32:56 +08:00
2026-06-22 17:17:11 +08:00
2026-07-02 00:36:52 +01:00
2026-07-01 15:52:39 -07:00
2026-07-01 15:52:39 -07:00
2026-06-03 18:43:23 -04:00
2026-06-22 19:12:07 +00:00
2026-06-30 18:06:15 -07:00
2026-07-01 04:00:39 +00:00
2026-07-01 04:00:39 +00:00
2026-06-04 19:32:43 -04:00
2026-06-04 10:48:30 -04:00
2026-07-03 16:38:02 -07:00
2026-07-03 16:38:02 -07:00
2026-06-04 19:35:08 -04:00
2026-06-04 10:48:30 -04:00
2026-06-04 10:48:30 -04:00
2026-06-26 18:33:19 +10:00
2026-06-26 18:33:19 +10:00
2026-06-03 15:20:39 -07:00
2026-06-13 19:55:37 +08:00
2026-06-13 19:55:37 +08:00
2026-06-04 19:35:08 -04:00
2026-06-16 01:54:29 +08:00
2026-06-04 10:48:30 -04:00
2026-06-04 10:50:04 -04:00
2026-06-04 19:37:38 -04:00
2026-06-12 09:50:31 -05:00
2026-06-04 19:35:08 -04:00
2026-06-16 01:54:29 +08:00
2026-06-22 19:11:46 +08:00
2026-06-04 19:37:38 -04:00
2026-06-04 10:50:04 -04:00
2026-06-19 04:44:51 +08:00
2026-06-19 04:44:51 +08:00
2026-06-16 01:54:29 +08:00
2026-06-04 10:50:04 -04:00
2026-06-04 19:32:43 -04:00
2026-06-04 10:50:04 -04:00
2026-06-12 09:50:31 -05:00
2026-06-12 09:50:31 -05:00
2026-06-04 19:35:08 -04:00
2026-06-04 19:35:08 -04:00
2026-06-04 19:35:08 -04:00
2026-06-03 15:20:39 -07:00
2026-06-04 19:35:08 -04:00
2026-06-03 15:20:39 -07:00
2026-06-19 04:37:29 +08:00
2026-06-19 04:37:29 +08:00
2026-06-23 14:12:27 +08:00
2026-06-23 14:12:27 +08:00
2026-06-14 17:31:18 -07:00
2026-06-17 17:41:44 +08:00
2026-06-17 17:41:44 +08:00
2026-06-20 04:01:08 +01:00
2026-06-17 17:41:44 +08:00
2026-06-22 10:51:51 +01:00
2026-06-28 14:20:54 -07:00
2026-06-28 14:20:54 -07:00
2026-06-03 15:20:39 -07:00
2026-06-03 15:20:39 -07:00
2026-06-04 19:37:38 -04:00
2026-06-04 10:52:10 -04:00
2026-06-04 19:37:38 -04:00
2026-06-03 15:20:39 -07:00
2026-06-04 19:37:38 -04:00
2026-06-04 10:52:10 -04:00
2026-06-27 00:28:45 +01:00
2026-06-03 18:43:23 -04:00
2026-06-04 19:37:38 -04:00
2026-06-03 15:20:39 -07:00
2026-06-25 09:56:16 +01:00
2026-06-03 15:20:39 -07:00
2026-06-04 19:37:38 -04:00
2026-06-04 10:55:01 -04:00
2026-06-03 18:43:23 -04:00
2026-06-04 19:32:43 -04:00
2026-06-04 19:35:08 -04:00
2026-06-30 22:17:42 -07:00
2026-06-30 22:17:42 -07:00
2026-07-02 18:06:00 -07:00
2026-06-04 19:32:43 -04:00
2026-06-03 15:20:39 -07:00
2026-06-04 10:55:01 -04:00
2026-06-04 10:55:01 -04:00
2026-06-16 01:54:29 +08:00
2026-06-03 15:20:39 -07:00
2026-06-10 10:32:54 -06:00
2026-06-06 22:56:48 -07:00
2026-06-04 19:37:38 -04:00
2026-06-04 10:55:01 -04:00
2026-06-04 19:37:38 -04:00
2026-06-04 10:55:01 -04:00
2026-06-23 06:05:33 +08:00
2026-06-03 18:25:21 -04:00
2026-06-03 18:23:39 -04:00
2026-06-22 14:00:57 +08:00
2026-06-22 14:00:57 +08:00
2026-07-01 06:55:11 -07:00
2026-07-01 06:55:11 -07:00
2026-07-01 06:55:11 -07:00
2026-06-03 18:25:21 -04:00
2026-06-22 20:18:11 +08:00
2026-06-03 15:20:39 -07:00
2026-06-19 05:18:25 +08:00
2026-06-03 15:20:39 -07:00
2026-06-04 19:35:08 -04:00
2026-06-04 10:58:50 -04:00
2026-06-03 15:20:39 -07:00
2026-06-04 19:32:43 -04:00
2026-06-04 10:58:50 -04:00
2026-06-04 19:37:38 -04:00
2026-06-04 10:58:50 -04:00
2026-06-04 10:58:50 -04:00
2026-07-01 06:55:11 -07:00
2026-07-03 16:24:43 -07:00
2026-06-17 10:18:18 +02:00
2026-06-17 10:18:18 +02:00
2026-06-04 19:35:08 -04:00
2026-06-03 15:20:39 -07:00
2026-06-04 19:37:38 -04:00
2026-06-04 19:35:08 -04:00
2026-06-04 10:58:50 -04:00
2026-06-04 19:32:43 -04:00
2026-06-04 10:58:50 -04:00
2026-06-19 04:53:59 +08:00
2026-06-19 04:53:59 +08:00
2026-06-03 18:43:23 -04:00
2026-06-19 11:57:43 +02:00
2026-06-23 00:43:50 +08:00
2026-06-27 00:40:29 +01:00
2026-06-27 08:11:31 +08:00
2026-06-03 15:20:39 -07:00
2026-06-04 19:35:08 -04:00
2026-06-04 11:01:13 -04:00
2026-06-16 14:35:58 +08:00
2026-06-19 04:44:51 +08:00
2026-06-19 04:44:51 +08:00
2026-06-03 15:20:39 -07:00
2026-06-04 19:32:43 -04:00
2026-06-04 11:01:13 -04:00
2026-06-30 14:15:19 -07:00
2026-06-30 14:15:19 -07:00
2026-06-03 15:20:39 -07:00
2026-06-03 18:23:39 -04:00
2026-06-11 20:52:07 +09:00
2026-06-11 20:52:07 +09:00
2026-06-15 23:07:29 +08:00
2026-06-04 19:37:38 -04:00
2026-06-04 11:01:13 -04:00
2026-06-04 19:35:08 -04:00
2026-06-18 18:40:12 +08:00
2026-06-04 19:32:43 -04:00
2026-06-04 11:01:13 -04:00
2026-06-26 16:43:51 -07:00
2026-06-26 16:43:51 -07:00
2026-06-26 18:33:19 +10:00
2026-06-26 18:33:19 +10:00
2026-06-28 14:11:29 -07:00
2026-06-04 19:32:43 -04:00
2026-06-28 15:44:27 -07:00
2026-06-28 15:44:27 -07:00
2026-06-04 19:37:38 -04:00
2026-06-28 15:44:27 -07:00
2026-06-28 14:11:29 -07:00
2026-06-04 19:32:43 -04:00
2026-06-26 18:33:19 +10:00
2026-06-26 18:33:19 +10:00
2026-06-04 19:37:38 -04:00
2026-06-03 18:43:23 -04:00
2026-06-20 23:37:00 +08:00
2026-06-26 18:33:19 +10:00
2026-06-15 23:07:29 +08:00
2026-06-23 18:07:57 +08:00
2026-06-23 18:07:57 +08:00
2026-06-23 18:07:57 +08:00
2026-06-23 18:07:57 +08:00
2026-06-03 18:43:23 -04:00
2026-06-20 23:37:00 +08:00
2026-06-20 23:37:00 +08:00
2026-06-20 23:37:00 +08:00
2026-06-04 19:35:08 -04:00
2026-06-04 11:03:24 -04:00
2026-06-15 23:07:29 +08:00
2026-06-15 23:07:29 +08:00
2026-06-22 09:55:08 -07:00
2026-06-04 19:37:38 -04:00
2026-06-03 15:20:39 -07:00
2026-06-04 11:03:24 -04:00
2026-06-04 19:35:08 -04:00
2026-06-03 18:43:23 -04:00
2026-06-26 18:33:19 +10:00
2026-06-26 18:33:19 +10:00
2026-06-04 19:35:08 -04:00
2026-06-03 18:43:23 -04:00
2026-06-04 19:37:38 -04:00
2026-07-01 01:08:20 -07:00
2026-06-23 07:35:59 +08:00
2026-06-04 11:03:24 -04:00
2026-06-14 18:08:42 -07:00
2026-06-14 18:08:42 -07:00
2026-07-01 01:08:20 -07:00
2026-06-27 00:40:29 +01:00
2026-06-19 22:55:38 +08:00
2026-06-04 19:37:38 -04:00
2026-06-03 15:20:39 -07:00
2026-06-19 22:55:38 +08:00
2026-06-19 22:55:38 +08:00
2026-06-03 18:43:23 -04:00
2026-06-04 19:32:43 -04:00
2026-06-03 18:23:39 -04:00
2026-06-04 19:32:43 -04:00
2026-06-26 18:33:19 +10:00
2026-06-19 01:20:06 +08:00
2026-06-19 01:20:06 +08:00
2026-06-04 19:32:43 -04:00
2026-06-04 11:05:42 -04:00
2026-06-04 19:32:43 -04:00
2026-06-04 11:05:42 -04:00
2026-06-04 19:32:43 -04:00
2026-06-22 02:59:57 -04:00
2026-06-03 15:20:39 -07:00
2026-06-18 00:06:57 +02:00
2026-06-04 19:32:43 -04:00
2026-06-20 22:09:32 +08:00
2026-06-22 21:27:47 +08:00
2026-06-03 15:20:39 -07:00
2026-06-03 18:23:39 -04:00
2026-06-04 19:35:08 -04:00
2026-06-03 15:20:39 -07:00
2026-06-16 13:15:52 +08:00
2026-06-16 13:15:52 +08:00
2026-06-23 07:35:59 +08:00
2026-06-30 11:22:26 -07:00
2026-06-20 03:56:15 +01:00
2026-06-22 21:27:47 +08:00
2026-06-30 11:22:26 -07:00
2026-06-04 11:07:54 -04:00
2026-06-04 19:37:38 -04:00
2026-06-04 11:07:54 -04:00
2026-06-04 19:37:38 -04:00
2026-06-04 11:07:54 -04:00
2026-06-04 11:07:54 -04:00
2026-06-04 19:10:02 -07:00
2026-06-26 18:33:19 +10:00
2026-06-03 15:20:39 -07:00
2026-06-04 19:32:43 -04:00
2026-06-16 06:26:20 +08:00
2026-06-26 18:33:19 +10:00
2026-06-23 12:06:56 -07:00
2026-06-09 01:02:22 +02:00
2026-06-04 19:32:43 -04:00
2026-06-30 18:06:15 -07:00
2026-06-23 07:26:53 +08:00
2026-06-04 19:35:08 -04:00
2026-06-03 15:20:39 -07:00
2026-06-04 19:32:43 -04:00
2026-06-04 11:07:54 -04:00
2026-06-04 11:07:54 -04:00
2026-06-03 15:20:39 -07:00
2026-06-04 11:11:07 -04:00
2026-06-26 18:33:19 +10:00
2026-06-04 19:35:08 -04:00
2026-06-04 19:35:08 -04:00
2026-07-04 08:59:18 -04:00
2026-06-26 18:33:19 +10:00
2026-06-04 11:11:07 -04:00
2026-06-04 19:35:08 -04:00
2026-06-03 15:20:39 -07:00
2026-06-04 19:37:38 -04:00
2026-06-03 15:20:39 -07:00