Charlie Marsh
055c7a7c53
Speed up TUI startup by reusing plugin discovery ( #26469 )
...
## Summary
TUI startup loads related plugin data from `hooks/list`, session MCP
initialization, and plugin skill warmup. These paths repeated filesystem
discovery and emitted the same plugin warnings, while `hooks/list` and
account/model bootstrap ran serially.
This change:
- Reuses one immutable plugin load outcome across startup consumers.
- Keys the cache only on plugin-relevant configuration.
- Single-flights concurrent plugin loads and prevents invalidated loads
from repopulating the cache.
- Runs hook discovery and account/model bootstrap concurrently.
- Preserves configuration-migration ordering, hook review behavior, and
accurate startup telemetry.
In 10 alternating release-build launches in the Ruff repository with the
existing `~/.codex` configuration, median time to the first editable
composer decreased from 833ms to 504ms. The branch was faster in 9 of 10
pairs, with a paired median improvement of 312ms.
2026-06-05 15:32:43 -04:00
..
2026-06-05 08:32:53 -07:00
2026-06-05 15:10:13 -03:00
2026-06-05 15:10:13 -03:00
2026-05-05 11:17:47 -07:00
2026-06-05 14:33:31 -03:00
2026-05-15 15:04:04 -07:00
2026-05-29 14:01:27 -07:00
2026-05-27 15:11:29 -07:00
2026-04-21 17:10:36 +00:00
2026-06-05 08:32:07 -07:00
2026-05-18 20:24:09 -03:00
2026-04-30 22:42:48 -07:00
2026-06-05 08:34:34 -07:00
2026-06-05 08:34:34 -07:00
2026-06-04 13:36:24 -07:00
2026-05-27 20:14:55 +00:00
2026-05-26 14:54:38 -03:00
2026-05-15 17:10:15 -07:00
2026-06-01 11:49:14 -03:00
2026-06-01 11:49:14 -03:00
2026-06-01 11:49:14 -03:00
2026-06-03 20:30:15 -03:00
2026-04-30 11:34:34 -07:00
2026-06-05 15:32:43 -04:00
2026-06-05 15:32:43 -04:00
2026-04-30 10:52:19 -07:00
2026-04-13 18:27:00 -07:00
2026-04-10 20:25:31 -07:00
2026-05-07 20:31:41 -07:00
2026-05-04 16:11:15 -03:00
2026-06-02 21:09:34 +02:00
2026-05-14 18:51:36 -07:00
2026-05-05 16:18:02 +00:00
2026-06-01 18:01:52 +02:00
2026-05-13 15:40:37 -07:00
2026-06-05 08:32:07 -07:00
2026-06-05 08:32:07 -07:00
2026-05-13 12:11:15 -03:00
2026-04-25 22:00:32 -03:00
2026-06-02 13:18:59 -07:00
2026-04-30 10:52:19 -07:00
2026-04-30 11:34:34 -07:00
2026-06-05 15:32:43 -04:00
2026-05-09 16:10:56 -03:00
2026-05-28 16:53:59 -03:00
2026-06-05 08:34:34 -07:00
2026-06-05 08:32:53 -07:00
2026-05-09 21:17:30 +00:00
2026-05-01 09:39:48 -07:00
2026-05-27 20:14:55 +00:00
2026-05-13 15:33:27 +00:00
2026-05-31 15:42:39 -03:00
2026-06-03 20:28:31 -03:00
2026-06-05 15:32:43 -04:00
2026-04-13 18:27:00 -07:00
2026-05-14 17:11:36 -04:00
2026-05-18 11:32:02 -07:00
2026-05-27 20:27:55 +00:00
2026-05-27 15:11:29 -07:00
2026-05-27 16:18:24 -03:00
2026-05-27 20:14:55 +00:00
2026-05-28 10:30:15 -07:00
2026-04-29 17:22:41 -07:00
2026-04-25 22:00:32 -03:00
2026-05-01 09:07:56 -07:00
2026-06-04 13:36:24 -07:00
2026-04-25 17:09:29 -07:00
2026-05-25 09:53:39 -07:00
2026-05-27 20:14:55 +00:00
2026-05-15 17:10:15 -07:00
2026-04-25 22:00:32 -03:00
2026-06-05 08:34:34 -07:00
2026-05-20 15:57:50 -07:00
2026-06-02 13:18:59 -07:00
2026-05-22 17:19:51 +00:00
2026-06-01 15:14:19 +02:00
2026-05-20 11:05:14 -07:00
2026-04-20 20:46:55 -07:00
2026-06-03 20:30:15 -03:00
2026-05-14 18:51:36 -07:00
2026-06-05 15:32:43 -04:00
2026-06-01 11:49:14 -03:00
2026-05-27 16:18:24 -03:00
2026-05-10 20:42:11 +00:00
2026-05-27 20:14:55 +00:00
2026-06-05 11:05:46 -07:00
2026-06-05 11:05:46 -07:00
2026-04-17 08:39:37 -07:00
2026-04-30 11:34:34 -07:00
2026-05-26 20:59:47 -07:00
2026-05-26 20:59:47 -07:00
2026-05-08 07:56:13 -07:00
2026-04-20 00:37:40 +00:00
2026-04-25 22:00:32 -03:00
2026-06-05 11:05:46 -07:00
2026-05-27 16:45:10 +00:00
2026-05-27 20:14:55 +00:00
2026-04-25 17:09:29 -07:00
2026-04-25 17:09:29 -07:00
2026-04-30 11:34:34 -07:00
2026-04-25 22:00:32 -03:00
2026-05-05 17:09:25 -03:00
2026-05-13 14:19:05 -07:00