diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..1620984 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "giteaActions.baseUrl": "https://git.alwisp.com", + "giteaActions.discovery.mode": "allAccessible" +} \ No newline at end of file diff --git a/client/src/App.jsx b/client/src/App.jsx index 2b02499..4c627af 100755 --- a/client/src/App.jsx +++ b/client/src/App.jsx @@ -6,6 +6,8 @@ import ToastProvider from './components/ToastProvider'; import './styles/mobile.css'; const REPO_URL = 'https://git.alwisp.com/jason/cpas'; +// TODO [CLEANUP #18]: DevTicker is a dev vanity widget that ships to prod. +// Either gate with `import.meta.env.DEV` or remove from the footer. const PROJECT_START = new Date('2026-03-06T11:33:32-06:00'); function elapsed(from) { @@ -101,7 +103,9 @@ const tabs = [ { id: 'violation', label: '+ New Violation' }, ]; -// Responsive utility hook +// TODO [MAJOR #8]: Move to src/hooks/useMediaQuery.js β€” this hook is duplicated +// verbatim in Dashboard.jsx. Also remove `matches` from the useEffect dep array +// (it changes inside the effect, which can cause a loop on strict-mode mount). function useMediaQuery(query) { const [matches, setMatches] = useState(false); useEffect(() => { @@ -237,6 +241,8 @@ export default function App() { return ( + {/* TODO [MAJOR #9]: Inline