From 5377c8379524fa29d03607f8466d88a02bbf894e Mon Sep 17 00:00:00 2001 From: Chris0Jeky Date: Sun, 6 Sep 2026 05:12:23 +0100 Subject: [PATCH] Add Vue file size lint guardrail --- frontend/taskdeck-web/eslint.config.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/frontend/taskdeck-web/eslint.config.js b/frontend/taskdeck-web/eslint.config.js index 9758b4a46..470cc5a64 100644 --- a/frontend/taskdeck-web/eslint.config.js +++ b/frontend/taskdeck-web/eslint.config.js @@ -70,6 +70,31 @@ export default [ }, }, + // Measured 2026-09-06: count nonblank, noncomment SFC lines and warn above 700. + // These existing high-cohesion seams stay explicitly allowlisted while they are decomposed. + { + files: ['**/*.vue'], + rules: { + 'max-lines': ['warn', { max: 700, skipBlankLines: true, skipComments: true }], + }, + }, + { + files: [ + 'src/components/paper/PaperSidebar.vue', // paper navigation and triage shell + 'src/components/shell/ShellSidebar.vue', // shared workspace navigation composition + 'src/views/CalendarView.vue', // calendar workflow and filtering surface + 'src/views/HomeView.vue', // home workspace composition + 'src/views/MetricsView.vue', // metrics dashboard composition + 'src/views/paper/PaperBoardView.vue', // paper board orchestration + 'src/views/paper/PaperHomeView.vue', // Paper home route composition + 'src/views/paper/PaperReviewView.vue', // paper review workflow surface + 'src/views/paper/inbox/PaperTriageTable.vue', // triage table interactions and layout + ], + rules: { + 'max-lines': 'off', + }, + }, + // Vue accessibility rules (WCAG compliance) ...pluginVueA11y.configs['flat/recommended'], {