chore: strengthen lint coverage and update project housekeeping
- Recursively lint all production JS/JSX under src/ and shared/ - Exclude tests, mocks, and node_modules from static guard - Update TODO status - Exclude TODO.md from Docker build context
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
TODO.md
|
||||
node_modules
|
||||
**/node_modules
|
||||
.git
|
||||
|
||||
@@ -2,44 +2,45 @@
|
||||
|
||||
Backlog of bugs + long-term items. Milestones live in REWORK_PLAN.md.
|
||||
|
||||
|
||||
## Open
|
||||
|
||||
|
||||
x fullscreen and dont lock on main app dm view and the no-game-player view ...and doesnt actually prevent lock on android
|
||||
|
||||
also better vert tab layout - labelt friendly
|
||||
x also better vert tab layout - labelt friendly
|
||||
|
||||
x needs AC for players dude
|
||||
|
||||
x and quick entry hp
|
||||
|
||||
hp do not carry from encounter to ecnounter!!!
|
||||
x hp do not carry from encounter to ecnounter!!!
|
||||
^feature to add back to campaign character after encounter?
|
||||
maybe campaign toggle in charc section (choosing each end is DM overload will be missed forgotten done wront)
|
||||
|
||||
hp wont go over max and no temp hp support
|
||||
|
||||
|
||||
x refresh/reload/code update causes UI to update to top unselected cambpaign have to drill all the way back down to active encounter....every time. siemtmes?
|
||||
|
||||
x encounters cards need clear "in progress"...
|
||||
|
||||
I wonder...if a charcter-list-character should have a isNPC option vailble to them - for longer lived
|
||||
|
||||
|
||||
x I wonder...if a charcter-list-character should have a isNPC option vailble to them - for longer lived
|
||||
npcs.....
|
||||
|
||||
x hp wont go over max and no temp hp support
|
||||
|
||||
|
||||
## monsters per campaign and npcs
|
||||
## or/and ....copy from encoubnter?
|
||||
|
||||
|
||||
|
||||
|
||||
### dm list - keep active particpant in view (scroll)
|
||||
not sure good way to do this
|
||||
|
||||
|
||||
### npm install warnings cleanup pass
|
||||
lots of updates
|
||||
|
||||
|
||||
## monsters per campaign and npcs
|
||||
## or/and ....copy from encoubnter?
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,21 +1,30 @@
|
||||
// STATIC GUARD: prod source must pass eslint with zero errors/warnings.
|
||||
// Scans App.js + storage adapters + shared modules. Catches unused imports,
|
||||
// Scans ALL .js/.jsx in src/ + shared/ (excl tests/mocks). Catches unused imports,
|
||||
// dead code, undefined vars before they hit the browser console.
|
||||
// Run via: npx eslint <files> --format json -> parse -> fail on any problem.
|
||||
const { execSync } = require('child_process');
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
|
||||
const ROOT = path.resolve(__dirname, '..', '..');
|
||||
|
||||
function walkJs(dir) {
|
||||
let out = [];
|
||||
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
||||
const full = path.join(dir, entry.name);
|
||||
if (entry.isDirectory()) {
|
||||
if (entry.name === 'node_modules' || entry.name === 'tests' || entry.name === '__mocks__') continue;
|
||||
out = out.concat(walkJs(full));
|
||||
} else if (/\.(js|jsx)$/.test(entry.name)) {
|
||||
out.push(full);
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
const TARGETS = [
|
||||
'src/App.js',
|
||||
'src/storage/contract.js',
|
||||
'src/storage/firebase.js',
|
||||
'src/storage/index.js',
|
||||
'src/storage/server.js',
|
||||
'shared/index.js',
|
||||
'shared/logEvent.js',
|
||||
'shared/turn.js',
|
||||
...walkJs(path.join(ROOT, 'src')),
|
||||
...walkJs(path.join(ROOT, 'shared')),
|
||||
];
|
||||
|
||||
function runEslint(files) {
|
||||
|
||||
Reference in New Issue
Block a user