odysseus/static/js
Léo 1c5f60539f refactor(settings): move the shell out of settings.js into settings/
settings.js is 5,721 lines and the registry/navigation/search/sidebar/
lifecycle primitives already live in static/js/settings/. What was left
behind in the coordinator was the layer above them: what happens when a
panel becomes active, where an admin-managed tab is handed to admin.js,
which elements are admin-only, the Appearance window fade, and the
public open/close. That layer reached module-global `modalEl` and
`initialized` directly, so none of it could be exercised without
booting every panel in the file — and every panel I eventually move out
would have to route back through it.

Three modules, no behavior change:

  shell.js       panel-activation side effects, the admin handoff,
                 .admin-only visibility, open()/close(). Takes what it
                 needs from settings.js as injected callbacks, the same
                 shape bindSettingsNavigation() already uses, so it
                 holds no panel state.
  peek.js        the Appearance window fade and its toggle. It is window
                 chrome rather than Appearance panel data, and it has to
                 be cleared when the user leaves that panel.
  oauthReturn.js the once-per-load return path from the Google OAuth
                 redirect. It was an IIFE running at module evaluation
                 in the middle of a 5,700-line file.

settings.js keeps open/close/syncAdminVisibility as exports, so every
caller (app.js, calendar.js, chatStream.js, gallery.js, admin.js,
modelPicker.js, slashCommands.js, chatRenderer.js, emailLibrary.js) is
untouched. 5,721 -> 5,583 lines; the settings/ modules go 887 -> 1,107.

The real-ESM coordinator smoke now links the three new files and asserts
what moved: admin-only elements hidden for a non-admin and shown for an
admin, an admin-managed tab click handed to admin.js without a second
local activation, and the Peek fade applying on Appearance and clearing
when the user navigates away. The OAuth test follows its handler to the
new file and additionally pins the coordinator wiring, since "uses the
module-local open()" is now a property of the seam rather than of one
source slice.

No new module needs a cache-busting query or an sw.js precache entry:
the existing settings/ submodules have neither, they load transitively
from settings.js's versioned URL, and sw.js serves JS network-first.

admin.js stays where it is. It has no shell to extract — open() and
close() already delegate to settingsModule, and its 4,122 lines are all
panel code. That is a panel split, not this one.
2026-09-30 09:45:23 +02:00
..
calendar Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
color fix: theme color parsing breaks on #rgb shorthand hex (#1213) 2026-06-03 00:30:03 +09:00
compare Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
editor Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
emailLibrary Squash Odysseus development history 2026-09-11 06:04:19 +00:00
markdown Ignore non-string markdown table rows (#1648) 2026-06-03 14:17:02 +09:00
model fix: model cost/info matches first substring key (gpt-4o-mini billed as gpt-4o) (#1439) 2026-06-04 03:05:37 +01:00
research Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
settings refactor(settings): move the shell out of settings.js into settings/ 2026-09-30 09:45:23 +02:00
util fix: monthly schedule label shows 21th/22th/31th (ordinal suffix for days >20) (#1577) 2026-06-03 08:57:47 +09:00
a11y.js Improve accessibility across core flows (#86) 2026-06-01 22:04:00 +02:00
actionMenuOrder.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
admin.js feat(provider): add lazy Featherless model discovery 2026-09-22 13:12:19 +01:00
appConfig.js perf(frontend): share one cached fetch for /api/auth/settings and /api/tools (#5997) 2026-08-16 21:03:05 +01:00
assistant.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
backgroundToolJobs.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
calendar.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
censor.js Ignore censor preference storage errors (#1652) 2026-06-03 14:16:55 +09:00
chat.js feat(ui): refine subscription model and usage controls 2026-09-22 13:12:19 +01:00
chatgptSubscriptionUsage.js feat(ui): refine subscription model and usage controls 2026-09-22 13:12:19 +01:00
chatModelProvenance.js refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01:00
chatRenderer.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
chatStream.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
chatStreamErrors.js refactor(model-routing): centralize explicit foreground fallback policy (#6020) 2026-08-14 08:10:30 +01:00
chipScroll.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
codeRunner.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
colorPicker.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
composerArrowUpRecall.js fix(chat): stop ArrowUp from eating an unsent multi-line prompt (#5875) 2026-08-07 19:34:50 +02:00
cookbook-deps-recipes.js Merge verified Odysseus fixes 2026-07-23 14:49:02 +00:00
cookbook-diagnosis.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
cookbook-hwfit.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
cookbook.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
cookbookDownload.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
cookbookPorts.js fix(cookbook): only block model launch on real port collisions (#4760) 2026-06-24 19:44:09 +02:00
cookbookProgressSignal.js Don't falsely declare a dependency build stale (#1568) (#1768) 2026-06-03 13:23:35 +09:00
cookbookRunning.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
cookbookSchedule.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
cookbookServe.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
document.js fix(ui): restore rich text controls and accessible research map 2026-09-22 23:26:43 +01:00
documentLibrary.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
documentOutline.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
documentStats.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
dragSort.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
emailInbox.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
emailLibrary.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
emailShared.js Polish mobile UI and editor workflows 2026-06-27 13:05:44 +00:00
emojiPicker.js fix(modal): keep body-portaled dropdowns above their tool modal at any stack depth (#4720) (#4724) 2026-06-23 10:24:31 +02:00
emojiShortcodes.js Render emoji shortcodes as icons in chat (#345) (#629) 2026-06-05 02:28:42 +02:00
escMenuStack.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
fileHandler.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
gallery.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
galleryEditor.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
group.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
init.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
keyboard-shortcuts.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
langIcons.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
liveThinkingThrottle.js perf(chat): batch live thinking rendering and bound timer updates (#5931) 2026-08-10 20:11:48 +01:00
markdown.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
memory.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
mobileBulkSelect.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
modalManager.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
modalSnap.js Merge remote-tracking branch 'origin/dev' into test-main-dev-merge-20260615 2026-06-15 21:20:15 +09:00
modelPicker.js feat(ui): refine subscription model and usage controls 2026-09-22 13:12:19 +01:00
models.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
modelSort.js Ignore invalid model sort inputs (#1653) 2026-06-03 14:16:52 +09:00
MODULE_SUMMARY.md perf(chat): batch live thinking rendering and bound timer updates (#5931) 2026-08-10 20:11:48 +01:00
notes.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
package.json Fix test suite: ESM module loading and stub isolation (#844) 2026-06-02 11:29:29 +09:00
panels.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
platform.js Ignore AltGr keystrokes in Ctrl+Alt keyboard shortcuts (#825) 2026-06-02 11:12:54 +09:00
presets.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
providerDeviceFlow.js feat: add ChatGPT Subscription provider (#2876) 2026-06-08 10:19:18 +02:00
providers.js feat(provider): add lazy Featherless model discovery 2026-09-22 13:12:19 +01:00
rag.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
researchSynapse.js fix(ui): restore rich text controls and accessible research map 2026-09-22 23:26:43 +01:00
search-chat.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
search.js perf(frontend): share one cached fetch for /api/auth/settings and /api/tools (#5997) 2026-08-16 21:03:05 +01:00
searchProviderIcons.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
section-management.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
sessions.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
settings.js refactor(settings): move the shell out of settings.js into settings/ 2026-09-30 09:45:23 +02:00
sidebar-layout.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
signature.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
skills.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
skillsMetrics.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
slashAutocomplete.js feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
slashCommands.js feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
spinner.js fix(ui): stop the whirlpool spinner animating when it is never attached (#5990) 2026-08-12 00:25:03 +01:00
startupShell.js perf(ui): stop session loading from blocking shell (#5927) 2026-08-10 19:37:21 +01:00
storage.js feat(a11y): add a Text size control and an OpenDyslexic font option (#4210) 2026-06-22 13:53:46 +02:00
streamingRenderer.js fix(chat): stop code-block button flicker during streaming (#3023) 2026-06-06 04:08:54 -06:00
streamingSegmenter.js fix(chat): stop code-block button flicker during streaming (#3023) 2026-06-06 04:08:54 -06:00
tasks.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
theme.js Harden maintainer-preview harness and review fixes 2026-09-21 06:54:03 +00:00
tileManager.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
toolWindowZOrder.js fix(modal): keep body-portaled dropdowns above their tool modal at any stack depth (#4720) (#4724) 2026-06-23 10:24:31 +02:00
tourAutoplay.js feat(provider): support multiple ChatGPT subscriptions with usage 2026-09-22 13:12:19 +01:00
tourHints.js Odysseus v1.0 2026-05-31 23:58:26 +09:00
tts-ai.js perf(frontend): share one cached fetch for /api/auth/settings and /api/tools (#5997) 2026-08-16 21:03:05 +01:00
turnRendering.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
ui.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00
ui_visibility.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
voiceRecorder.js Odysseus v1.0 2026-05-31 23:58:26 +09:00
windowDrag.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
windowResize.js Squash Odysseus development history 2026-09-11 06:04:19 +00:00
workspace.js Consolidate Odysseus agent harness and tool contracts 2026-09-17 10:07:40 +00:00