Summary
renderer/ui.js (~5k+ lines, ~120 top-level functions) mixes navigation, chat mounts, peer profile, context menus, settings panel builders, and update checking. Split into focused modules; leave ui.js as bootstrap/wiring only.
Suggested clusters
| Target |
Contents |
renderer/view-router.js |
resolveMainContent, mountMainPanel, createNav, navigateToView, unread badges, … |
chat.js / group chat modules |
remaining ensure* / mount wrappers still stuck in ui.js |
renderer/peer-profile-view.js |
peer profile open/leave/sync/render (~7–8 functions) over profile-card.js |
renderer/context-menus.js |
group/peer context menus |
settings-ui.js / settings-panels/* |
all build*Settings* / buildSettings*Panel builders (~1/3 of the file; call panel is especially large) |
renderer/update-checker.js |
semver helpers, GitHub release filter, toasts, startup check |
| global shortcuts wiring |
UI binding near existing shortcuts modules |
Acceptance
Summary
renderer/ui.js(~5k+ lines, ~120 top-level functions) mixes navigation, chat mounts, peer profile, context menus, settings panel builders, and update checking. Split into focused modules; leaveui.jsas bootstrap/wiring only.Suggested clusters
renderer/view-router.jsresolveMainContent,mountMainPanel,createNav,navigateToView, unread badges, …chat.js/ group chat modulesensure*/ mount wrappers still stuck inui.jsrenderer/peer-profile-view.jsprofile-card.jsrenderer/context-menus.jssettings-ui.js/settings-panels/*build*Settings*/buildSettings*Panelbuilders (~1/3 of the file; call panel is especially large)renderer/update-checker.jsAcceptance
ui.jsis orchestrator-sizednpm testgreen; smoke navigation + settings + chat