Leftover items from the July 2026 systems/design audit (findings 1–14 and most Low items were fixed in 2aa24da). These remain open:
1. Light theme is built from brute-force utility overrides
client/src/index.css redefines individual Tailwind utilities (.bg-gray-800, escaped arbitrary values, !important inputs) for light mode. Any new utility used in a component silently renders wrong in light theme until it's hand-added to the override list.
Fix: move to semantic CSS variables (or Tailwind darkMode: 'class' with proper theme tokens). Needs a visual pass across all pages in both themes.
2. Remaining window.confirm() calls
SchedulesPage now uses the accessible shared Modal, but window.confirm() is still used elsewhere (e.g. useColonyPage.handleDeleteTeam, and other pages). Convert the rest to the shared Modal/DeleteConfirm pattern for consistency and accessibility.
3. run-now result is polled with a 3-second guess
SchedulesPage.jsx refreshes via setTimeout(onRefresh, 3000) after "Run now" — wrong for any agent run that takes more or less than 3s. Replace with polling until last_run changes, or push completion over SSE.
4. Colony components.jsx is 2,061 lines
client/src/pages/colony/components.jsx holds ~30 components in one file. The hook/view split is done (useColonyPage.jsx + views.jsx); this file is the remaining decomposition target — split into per-component (or per-panel) modules.
Leftover items from the July 2026 systems/design audit (findings 1–14 and most Low items were fixed in 2aa24da). These remain open:
1. Light theme is built from brute-force utility overrides
client/src/index.cssredefines individual Tailwind utilities (.bg-gray-800, escaped arbitrary values,!importantinputs) for light mode. Any new utility used in a component silently renders wrong in light theme until it's hand-added to the override list.Fix: move to semantic CSS variables (or Tailwind
darkMode: 'class'with proper theme tokens). Needs a visual pass across all pages in both themes.2. Remaining
window.confirm()callsSchedulesPage now uses the accessible shared
Modal, butwindow.confirm()is still used elsewhere (e.g.useColonyPage.handleDeleteTeam, and other pages). Convert the rest to the sharedModal/DeleteConfirmpattern for consistency and accessibility.3.
run-nowresult is polled with a 3-second guessSchedulesPage.jsxrefreshes viasetTimeout(onRefresh, 3000)after "Run now" — wrong for any agent run that takes more or less than 3s. Replace with polling untillast_runchanges, or push completion over SSE.4. Colony
components.jsxis 2,061 linesclient/src/pages/colony/components.jsxholds ~30 components in one file. The hook/view split is done (useColonyPage.jsx+views.jsx); this file is the remaining decomposition target — split into per-component (or per-panel) modules.