- The gitignore cache is module-level (singleton Map). If DanCode ever supports hot-reloading server modules, the cache would survive reloads. Not an issue now but worth noting.
- The RingBuffer compaction threshold is 2x maxSize. This balances between compacting too often (defeating the purpose) and accumulating too many chunks. If profiling shows memory issues under extreme throughput, the multiplier could be tuned.
- The client build fails due to a missing
ResizeHandle.jsximport inApp.jsx. This is a pre-existing issue that blocksnpm run build. Future phases that need a fresh client build will need to fix this import first. - The
compressionpackage handles content-encoding negotiation automatically (gzip/deflate/br based on Accept-Encoding). No additional configuration is needed for brotli support if Node.js is built with it. - Four server tests fail pre-existing (tmux capture pane output wrapping on small terminal widths, and a missing
lastActivityfield). These are not caused by compression changes.
- The MobileDashboard polling and the App.jsx
fetchAllTerminalActivityinterval (line 146) both poll on 30s intervals. Consider consolidating these into a single visibility-aware polling mechanism in App.jsx to avoid duplicate requests when the dashboard is mounted. - The ETag implementation currently uses
getFileStats+readFileContentas separate calls, meaning twostat()calls per read. A combinedreadFileContentWithStatsfunction could reduce this to one stat + one read. - The
compressionmiddleware converts strong ETags to weak ETags on compressed responses. This doesn't affect correctness since ourIf-None-Matchcheck runs beforeres.json(), but clients will seeW/"..."ETags in responses. Future phases should be aware of this if adding ETag support to other endpoints.