diff --git a/.sisyphus/plans/button-consistency.md b/.sisyphus/plans/button-consistency.md new file mode 100644 index 0000000..a3f868b --- /dev/null +++ b/.sisyphus/plans/button-consistency.md @@ -0,0 +1,469 @@ +# Button Consistency Normalization + +## TL;DR + +> **Quick Summary**: Replace all raw `` → `Register Node` + - Line 128: `` → `Cancel` + - Line 281: `` → `Save` + - Line 282: `` → `Cancel` + - Button rows in modals: wrap in `
` + - Lines 156-157: Table action buttons (Edit, Delete) → `NgButton variant="ghost" size="sm"` + + **Must NOT do**: + - Do NOT change form inputs or validation logic + - Do NOT change toggle switches + + **Recommended Agent Profile**: + - **Category**: `quick` + - **Skills**: [] + + **Parallelization**: + - **Can Run In Parallel**: YES + - **Parallel Group**: Wave 1 (with Tasks 1, 3-6) + - **Blocks**: Final verification + - **Blocked By**: None + + **References**: + - `apps/dashboard-ui/src/views/Servers.vue` — Lines 127-128 (add modal buttons), 156-157 (table actions), 281-282 (edit modal buttons) + + **Acceptance Criteria**: + + **QA Scenarios:** + ``` + Scenario: No raw button in Servers modal + Tool: Bash + Steps: + 1. Run: grep -n 'Delete` → `Delete` + - Import NgButton if not already imported (it is — line 67) + + **Must NOT do**: + - Do NOT change the delete confirmation logic + + **Recommended Agent Profile**: + - **Category**: `quick` + - **Skills**: [] + + **Parallelization**: + - **Can Run In Parallel**: YES + - **Parallel Group**: Wave 1 (with Tasks 1-2, 4-6) + - **Blocks**: Final verification + - **Blocked By**: None + + **References**: + - `apps/dashboard-ui/src/views/Users.vue` — Line 51 + + **Acceptance Criteria**: + + **QA Scenarios:** + ``` + Scenario: No raw button in Users + Tool: Bash + Steps: + 1. Run: grep -n '` with `NgButton variant="ghost" size="sm"`: + ```vue + Config + Firewall + Delete + ``` + - Import NgButton if not already imported (it is — line 78) + + **Must NOT do**: + - Do NOT change the delete confirmation logic + + **Recommended Agent Profile**: + - **Category**: `quick` + - **Skills**: [] + + **Parallelization**: + - **Can Run In Parallel**: YES + - **Parallel Group**: Wave 1 (with Tasks 1-3, 5-6) + - **Blocks**: Final verification + - **Blocked By**: None + + **References**: + - `apps/dashboard-ui/src/views/Devices.vue` — Lines 45-47 + + **Acceptance Criteria**: + + **QA Scenarios:** + ``` + Scenario: No raw button in Devices + Tool: Bash + Steps: + 1. Run: grep -n 'Export CSV` + - Lines 53-59: Apply Filters button → `{{ loading ? 'Loading...' : 'Apply Filters' }}` + - Lines 110-116: Previous button → `Previous` + - Lines 118-124: Next button → `Next` + - Replace ALL hardcoded colors with design tokens: + - `text-cyan-400` → `text-accent` + - `bg-cyan-600` → `bg-accent` + - `bg-black/30` → `bg-bg-base/30` + - `border-white/5` → `border-border-subtle/50` + - `text-gray-400` → `text-text-muted` + - `text-gray-500` → `text-text-muted` + - `bg-gradient-to-br from-gray-900/90 to-gray-800/90` → `bg-gradient-to-br from-bg-surface/90 to-bg-elevated/90` + - `border-white/10` → `border-border-subtle` + - `text-white` → `text-text-primary` + - `bg-black/50` → `bg-bg-base/50` + - `hover:bg-white/5` → `hover:bg-bg-elevated/50` + - `hover:bg-black/50` → `hover:bg-bg-base/50` + - `hover:text-white` → `hover:text-text-primary` + - `text-cyan-400` → `text-accent` + - `text-blue-400` → `text-info` + - `hover:shadow-cyan-500/50` → `hover:shadow-accent/50` + - Update `` import + + **Must NOT do**: + - Do NOT change the CSV export logic + - Do NOT change the pagination logic + - Do NOT change the date filtering logic + + **Recommended Agent Profile**: + - **Category**: `quick` + - **Skills**: [] + + **Parallelization**: + - **Can Run In Parallel**: YES + - **Parallel Group**: Wave 1 (with Tasks 1-4, 6) + - **Blocks**: Final verification + - **Blocked By**: None + + **References**: + - `apps/dashboard-ui/src/views/TrafficHistory.vue` — Full file (326 lines). Raw buttons + extensive hardcoded colors + - `apps/dashboard-ui/src/components/ui/NgButton.vue` — API reference + + **Acceptance Criteria**: + + **QA Scenarios:** + ``` + Scenario: No raw button in TrafficHistory + Tool: Bash + Steps: + 1. Run: grep -n 'Logout` → `Logout` + - Line 24: `` → `Logout` + - Import NgButton + + **Must NOT do**: + - Do NOT change the logout logic + - Do NOT change sidebar behavior + + **Recommended Agent Profile**: + - **Category**: `quick` + - **Skills**: [] + + **Parallelization**: + - **Can Run In Parallel**: YES + - **Parallel Group**: Wave 1 (with Tasks 1-5) + - **Blocks**: Final verification + - **Blocked By**: None + + **References**: + - `apps/dashboard-ui/src/App.vue` — Lines 16, 24 + + **Acceptance Criteria**: + + **QA Scenarios:** + ``` + Scenario: No raw button in App.vue + Tool: Bash + Steps: + 1. Run: grep -n '` replaced with `NgButton` +- [x] No `flex-1` on button rows +- [x] Consistent `gap-2` spacing +- [x] TrafficHistory.vue hardcoded colors replaced with tokens +- [x] Frontend builds without errors diff --git a/apps/dashboard-ui b/apps/dashboard-ui index faec4f6..c71c991 160000 --- a/apps/dashboard-ui +++ b/apps/dashboard-ui @@ -1 +1 @@ -Subproject commit faec4f658f3ed560b0fbe696ea3f3842d0b32f9c +Subproject commit c71c9914f73faff2c295dd515acf426211752b80