coding-agent-harness 1.0.2 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/CONTRIBUTING.md +98 -0
  3. package/LICENSE +661 -21
  4. package/LICENSE-EXCEPTION.md +37 -0
  5. package/README.md +244 -87
  6. package/README.zh-CN.md +77 -35
  7. package/SKILL.md +32 -24
  8. package/docs-release/README.md +9 -5
  9. package/docs-release/architecture/overview.md +17 -5
  10. package/docs-release/architecture/overview.zh-CN.md +9 -5
  11. package/docs-release/architecture/system-explainer/01-system-overview.md +217 -0
  12. package/docs-release/architecture/system-explainer/02-module-dependency.md +257 -0
  13. package/docs-release/architecture/system-explainer/03-task-lifecycle.md +304 -0
  14. package/docs-release/architecture/system-explainer/04-check-and-governance.md +239 -0
  15. package/docs-release/architecture/system-explainer/05-data-flow.md +276 -0
  16. package/docs-release/architecture/system-explainer/06-preset-and-migration.md +303 -0
  17. package/docs-release/architecture/system-explainer/README.md +67 -0
  18. package/docs-release/architecture/system-explainer/en-US/01-system-overview.md +226 -0
  19. package/docs-release/architecture/system-explainer/en-US/02-module-dependency.md +263 -0
  20. package/docs-release/architecture/system-explainer/en-US/03-task-lifecycle.md +319 -0
  21. package/docs-release/architecture/system-explainer/en-US/04-check-and-governance.md +250 -0
  22. package/docs-release/architecture/system-explainer/en-US/05-data-flow.md +290 -0
  23. package/docs-release/architecture/system-explainer/en-US/06-preset-and-migration.md +323 -0
  24. package/docs-release/architecture/system-explainer/en-US/README.md +70 -0
  25. package/docs-release/assets/dashboard-overview.png +0 -0
  26. package/docs-release/guides/agent-installation.en-US.md +39 -15
  27. package/docs-release/guides/agent-installation.md +43 -16
  28. package/docs-release/guides/contributing.md +100 -0
  29. package/docs-release/guides/contributing.zh-CN.md +99 -0
  30. package/docs-release/guides/document-audience-and-surfaces.en-US.md +3 -2
  31. package/docs-release/guides/document-audience-and-surfaces.md +3 -2
  32. package/docs-release/guides/full-legacy-migration-subagent-strategy.md +2 -2
  33. package/docs-release/guides/full-legacy-migration-subagent-strategy.zh-CN.md +2 -2
  34. package/docs-release/guides/legacy-migration-agent-prompt.md +0 -11
  35. package/docs-release/guides/legacy-migration-agent-prompt.zh-CN.md +0 -11
  36. package/docs-release/guides/migration-playbook.en-US.md +14 -15
  37. package/docs-release/guides/migration-playbook.md +14 -15
  38. package/docs-release/guides/parent-control-repository-pattern.en-US.md +7 -5
  39. package/docs-release/guides/parent-control-repository-pattern.md +7 -5
  40. package/docs-release/guides/preset-development.md +238 -0
  41. package/docs-release/guides/repository-operating-models.en-US.md +5 -4
  42. package/docs-release/guides/repository-operating-models.md +5 -4
  43. package/docs-release/guides/task-state-machine.en-US.md +224 -0
  44. package/docs-release/guides/task-state-machine.md +231 -0
  45. package/docs-release/intl/en-US.md +1 -1
  46. package/docs-release/intl/zh-CN.md +1 -1
  47. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/INDEX.md +60 -0
  48. package/examples/minimal-project/docs/09-PLANNING/TASKS/demo-task/findings.md +7 -0
  49. package/package.json +10 -4
  50. package/presets/legacy-migration/checks/preset-check.mjs +3 -0
  51. package/presets/legacy-migration/preset.yaml +134 -0
  52. package/presets/legacy-migration/scripts/plan-work-queue.mjs +4 -0
  53. package/presets/legacy-migration/scripts/scaffold-task-contracts.mjs +4 -0
  54. package/presets/legacy-migration/templates/execution_strategy.append.md +18 -0
  55. package/presets/legacy-migration/templates/findings.seed.md +17 -0
  56. package/presets/legacy-migration/templates/review.seed.md +12 -0
  57. package/presets/legacy-migration/templates/task_plan.append.md +9 -0
  58. package/presets/legacy-migration/templates/visual_map.append.md +12 -0
  59. package/presets/legacy-migration/workbench/dashboard-panels.yaml +2 -0
  60. package/presets/legacy-migration/workbench/migration-queue.schema.json +23 -0
  61. package/presets/lesson-sedimentation/preset.yaml +23 -0
  62. package/presets/lesson-sedimentation/templates/prompt.md +23 -0
  63. package/presets/module/preset.yaml +25 -0
  64. package/presets/module/templates/execution_strategy.append.md +8 -0
  65. package/presets/module/templates/task_plan.append.md +17 -0
  66. package/presets/standard-task/preset.yaml +31 -0
  67. package/presets/standard-task/templates/task_plan.append.md +7 -0
  68. package/references/adversarial-review-standard.md +2 -2
  69. package/references/agents-md-pattern.md +2 -2
  70. package/references/delivery-operating-model-standard.md +3 -3
  71. package/references/docs-directory-standard.md +6 -7
  72. package/references/harness-ledger.md +53 -96
  73. package/references/lessons-governance.md +88 -93
  74. package/references/module-parallel-standard.md +14 -14
  75. package/references/planning-loop.md +12 -6
  76. package/references/pull-request-standard.md +118 -0
  77. package/references/repo-governance-standard.md +11 -2
  78. package/references/review-routing-standard.md +7 -1
  79. package/references/ssot-governance.md +67 -59
  80. package/references/taskr-gap-analysis.md +600 -0
  81. package/references/walkthrough-closeout.md +7 -7
  82. package/scripts/check-harness.mjs +40 -301
  83. package/scripts/commands/dashboard-command.mjs +67 -0
  84. package/scripts/commands/migration-command.mjs +126 -0
  85. package/scripts/commands/preset-command.mjs +73 -0
  86. package/scripts/commands/task-command.mjs +328 -0
  87. package/scripts/harness.mjs +59 -260
  88. package/scripts/lib/capability-registry.mjs +82 -28
  89. package/scripts/lib/check-module-parallel.mjs +230 -0
  90. package/scripts/lib/check-profiles.mjs +90 -228
  91. package/scripts/lib/check-task-contracts.mjs +55 -0
  92. package/scripts/lib/core-shared.mjs +65 -2
  93. package/scripts/lib/dashboard-data.mjs +155 -24
  94. package/scripts/lib/dashboard-workbench.mjs +131 -12
  95. package/scripts/lib/dashboard-writer.mjs +20 -4
  96. package/scripts/lib/git-status-summary.mjs +46 -0
  97. package/scripts/lib/governance-index-generator.mjs +174 -0
  98. package/scripts/lib/governance-sync.mjs +611 -0
  99. package/scripts/lib/governance-table-boundary.mjs +175 -0
  100. package/scripts/lib/harness-core.mjs +6 -0
  101. package/scripts/lib/lesson-maintenance.mjs +36 -29
  102. package/scripts/lib/markdown-utils.mjs +33 -0
  103. package/scripts/lib/migration-planner.mjs +4 -6
  104. package/scripts/lib/migration-support.mjs +1 -1
  105. package/scripts/lib/phase-kind.mjs +50 -0
  106. package/scripts/lib/preset-audit-contracts.mjs +37 -0
  107. package/scripts/lib/preset-engine.mjs +494 -0
  108. package/scripts/lib/preset-registry.mjs +776 -0
  109. package/scripts/lib/preset-resource-contracts.mjs +83 -0
  110. package/scripts/lib/review-confirm-git-gate.mjs +248 -0
  111. package/scripts/lib/status-builder.mjs +88 -0
  112. package/scripts/lib/status-dashboard-renderer.mjs +105 -0
  113. package/scripts/lib/subagent-authorization-audit.mjs +196 -0
  114. package/scripts/lib/task-audit-metadata.mjs +385 -0
  115. package/scripts/lib/task-audit-migration.mjs +350 -0
  116. package/scripts/lib/task-completion-consistency.mjs +26 -0
  117. package/scripts/lib/task-index.mjs +93 -0
  118. package/scripts/lib/task-lesson-candidates.mjs +242 -0
  119. package/scripts/lib/task-lesson-sedimentation.mjs +326 -0
  120. package/scripts/lib/task-lifecycle/create-task-helpers.mjs +67 -0
  121. package/scripts/lib/task-lifecycle/phase-sync.mjs +88 -0
  122. package/scripts/lib/task-lifecycle/review-confirm.mjs +112 -0
  123. package/scripts/lib/task-lifecycle/review-gates.mjs +73 -0
  124. package/scripts/lib/task-lifecycle/review-submission.mjs +63 -0
  125. package/scripts/lib/task-lifecycle/scaffold-provenance.mjs +49 -0
  126. package/scripts/lib/task-lifecycle/template-files.mjs +53 -0
  127. package/scripts/lib/task-lifecycle/text-utils.mjs +24 -0
  128. package/scripts/lib/task-lifecycle.mjs +338 -477
  129. package/scripts/lib/task-metadata.mjs +118 -0
  130. package/scripts/lib/task-review-model.mjs +455 -0
  131. package/scripts/lib/task-scanner.mjs +193 -372
  132. package/scripts/lib/task-tombstone-commands.mjs +140 -0
  133. package/scripts/postinstall.mjs +14 -0
  134. package/skills/preset-creator/SKILL.md +179 -0
  135. package/skills/preset-creator/references/complex-task-skeleton/README.md +31 -0
  136. package/skills/preset-creator/references/complex-task-skeleton/artifacts/INDEX.md +12 -0
  137. package/skills/preset-creator/references/complex-task-skeleton/brief.md +43 -0
  138. package/skills/preset-creator/references/complex-task-skeleton/execution_strategy.md +71 -0
  139. package/skills/preset-creator/references/complex-task-skeleton/findings.md +24 -0
  140. package/skills/preset-creator/references/complex-task-skeleton/lesson_candidates.md +70 -0
  141. package/skills/preset-creator/references/complex-task-skeleton/long-running-task-contract.md +76 -0
  142. package/skills/preset-creator/references/complex-task-skeleton/progress.md +33 -0
  143. package/skills/preset-creator/references/complex-task-skeleton/references/INDEX.md +13 -0
  144. package/skills/preset-creator/references/complex-task-skeleton/review.md +107 -0
  145. package/skills/preset-creator/references/complex-task-skeleton/task_plan.md +111 -0
  146. package/skills/preset-creator/references/complex-task-skeleton/visual_map.md +50 -0
  147. package/skills/preset-creator/references/preset-package-skeleton.md +296 -0
  148. package/templates/AGENTS.md.template +24 -18
  149. package/templates/dashboard/assets/app-src/00-state.js +13 -0
  150. package/templates/dashboard/assets/app-src/10-router.js +5 -1
  151. package/templates/dashboard/assets/app-src/20-overview.js +18 -8
  152. package/templates/dashboard/assets/app-src/30-tasks.js +92 -246
  153. package/templates/dashboard/assets/app-src/35-task-detail.js +286 -0
  154. package/templates/dashboard/assets/app-src/45-review.js +241 -22
  155. package/templates/dashboard/assets/app-src/50-migration.js +24 -10
  156. package/templates/dashboard/assets/app-src/55-presets.js +375 -0
  157. package/templates/dashboard/assets/app-src/60-shared.js +3 -1
  158. package/templates/dashboard/assets/app-src/90-bindings.js +302 -29
  159. package/templates/dashboard/assets/app.css +1501 -376
  160. package/templates/dashboard/assets/app.css.manifest.json +10 -0
  161. package/templates/dashboard/assets/app.js +1240 -101
  162. package/templates/dashboard/assets/app.manifest.json +2 -0
  163. package/templates/dashboard/assets/css-src/00-foundation.css +346 -0
  164. package/templates/dashboard/assets/css-src/10-panels-flow.css +236 -0
  165. package/templates/dashboard/assets/css-src/20-briefs-controls.css +398 -0
  166. package/templates/dashboard/assets/css-src/30-task-index.css +739 -0
  167. package/templates/dashboard/assets/css-src/35-review-workspace.css +507 -0
  168. package/templates/dashboard/assets/css-src/40-detail-modules-migration.css +489 -0
  169. package/templates/dashboard/assets/css-src/45-presets.css +516 -0
  170. package/templates/dashboard/assets/css-src/50-responsive-overrides.css +551 -0
  171. package/templates/dashboard/assets/i18n.js +263 -23
  172. package/templates/ledger/Harness-Ledger.md +13 -25
  173. package/templates/lessons/lesson-arch-process-change.md +1 -1
  174. package/templates/lessons/lesson-new-doc.md +1 -1
  175. package/templates/lessons/lesson-ref-change.md +1 -1
  176. package/templates/planning/INDEX.md +87 -0
  177. package/templates/planning/brief.md +1 -1
  178. package/templates/planning/execution_strategy.md +31 -0
  179. package/templates/planning/lesson_candidates.md +18 -6
  180. package/templates/planning/module_session_prompt.md +1 -0
  181. package/templates/planning/optional/artifacts/INDEX.md +3 -3
  182. package/templates/planning/optional/references/INDEX.md +3 -3
  183. package/templates/planning/review.md +41 -0
  184. package/templates/planning/task_plan.md +5 -21
  185. package/templates/planning/visual_map.md +13 -9
  186. package/templates/planning/visual_map.simple.md +52 -0
  187. package/templates/reference/execution-workflow-standard.md +31 -3
  188. package/templates/reference/pull-request-standard.md +80 -0
  189. package/templates/reference/repo-governance-standard.md +7 -6
  190. package/templates/reference/review-routing-standard.md +6 -0
  191. package/templates/reference/walkthrough-standard.md +2 -1
  192. package/templates/verifier/verifier-output.md +1 -1
  193. package/templates-zh-CN/AGENTS.md.template +25 -19
  194. package/templates-zh-CN/ledger/Harness-Ledger.md +17 -40
  195. package/templates-zh-CN/planning/INDEX.md +87 -0
  196. package/templates-zh-CN/planning/brief.md +1 -1
  197. package/templates-zh-CN/planning/execution_strategy.md +30 -0
  198. package/templates-zh-CN/planning/lesson_candidates.md +18 -6
  199. package/templates-zh-CN/planning/module_session_prompt.md +1 -0
  200. package/templates-zh-CN/planning/review.md +41 -1
  201. package/templates-zh-CN/planning/task_plan.md +4 -44
  202. package/templates-zh-CN/planning/visual_map.md +14 -7
  203. package/templates-zh-CN/planning/visual_map.simple.md +48 -0
  204. package/templates-zh-CN/reference/adversarial-review-standard.md +1 -1
  205. package/templates-zh-CN/reference/docs-library-standard.md +1 -1
  206. package/templates-zh-CN/reference/execution-workflow-standard.md +33 -7
  207. package/templates-zh-CN/reference/harness-ledger-standard.md +2 -2
  208. package/templates-zh-CN/reference/pull-request-standard.md +106 -0
  209. package/templates-zh-CN/reference/repo-governance-standard.md +4 -3
  210. package/templates-zh-CN/reference/review-routing-standard.md +8 -1
  211. package/templates-zh-CN/reference/walkthrough-standard.md +3 -2
  212. package/templates-zh-CN/walkthrough/Closeout-SSoT.md +1 -1
  213. package/docs-release/assets/dashboard-overview-en.png +0 -0
  214. package/scripts/smoke-dashboard.mjs +0 -92
  215. package/scripts/test-harness.mjs +0 -1395
  216. package/templates/ssot/Feature-SSoT.md +0 -43
  217. package/templates/ssot/Lessons-SSoT.md +0 -44
  218. package/templates-zh-CN/ssot/Feature-SSoT.md +0 -49
  219. package/templates-zh-CN/ssot/Lessons-SSoT.md +0 -49
@@ -0,0 +1,739 @@
1
+ /* === Task Index Layout Redesign (Cockpit Style C) === */
2
+ .tasks-grid {
3
+ display: grid;
4
+ grid-template-columns: 1fr;
5
+ gap: 24px;
6
+ margin-top: 16px;
7
+ }
8
+
9
+ @media (min-width: 1024px) {
10
+ .tasks-grid {
11
+ grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr);
12
+ align-items: start;
13
+ }
14
+ .tasks-sidebar {
15
+ position: sticky;
16
+ top: 24px;
17
+ }
18
+ }
19
+
20
+ /* Sidebar Widgets */
21
+ .sidebar-card {
22
+ background: var(--paper);
23
+ border: 1px solid var(--line);
24
+ border-radius: 12px;
25
+ padding: 20px;
26
+ box-shadow: var(--shadow);
27
+ display: flex;
28
+ flex-direction: column;
29
+ gap: 16px;
30
+ transition: box-shadow 0.25s;
31
+ }
32
+
33
+ .sidebar-card h3 {
34
+ margin: 0;
35
+ font-size: 13px;
36
+ font-weight: 800;
37
+ text-transform: uppercase;
38
+ letter-spacing: 0.05em;
39
+ color: var(--accent);
40
+ border-left: 3px solid var(--accent);
41
+ padding-left: 8px;
42
+ line-height: 1.2;
43
+ }
44
+
45
+ .sidebar-card .input-group {
46
+ display: flex;
47
+ flex-direction: column;
48
+ gap: 6px;
49
+ }
50
+
51
+ .sidebar-card .select-group {
52
+ display: flex;
53
+ flex-direction: column;
54
+ gap: 6px;
55
+ }
56
+
57
+ .sidebar-card .select-group label {
58
+ font-size: 11px;
59
+ font-weight: 700;
60
+ color: var(--muted);
61
+ text-transform: uppercase;
62
+ }
63
+
64
+ .sidebar-card input,
65
+ .sidebar-card select {
66
+ width: 100%;
67
+ border: 1px solid var(--line);
68
+ background: var(--paper);
69
+ color: var(--ink);
70
+ border-radius: 8px;
71
+ padding: 10px 14px;
72
+ font-size: 13px;
73
+ font-weight: 600;
74
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.01);
75
+ transition: all 0.2s;
76
+ }
77
+
78
+ .sidebar-card input:focus,
79
+ .sidebar-card select:focus {
80
+ border-color: var(--accent);
81
+ box-shadow: 0 0 0 3px rgba(217, 119, 6, 0.15);
82
+ outline: none;
83
+ }
84
+
85
+ .sidebar-card .search-stats {
86
+ font-size: 12px;
87
+ color: var(--muted);
88
+ text-align: right;
89
+ border-top: 1px dashed var(--line);
90
+ padding-top: 12px;
91
+ margin-top: 4px;
92
+ }
93
+
94
+ .sidebar-card .search-stats strong {
95
+ color: var(--ink);
96
+ }
97
+
98
+ /* Stats Hero Gauge inside Sidebar Stats */
99
+ .stats-hero-gauge {
100
+ display: flex;
101
+ flex-direction: column;
102
+ align-items: center;
103
+ gap: 4px;
104
+ padding: 16px 0;
105
+ background: var(--bg);
106
+ border-radius: 10px;
107
+ border: 1px solid var(--line);
108
+ margin-bottom: 4px;
109
+ }
110
+
111
+ .gauge-percentage {
112
+ font-size: 32px;
113
+ font-weight: 800;
114
+ color: var(--accent);
115
+ letter-spacing: -0.02em;
116
+ line-height: 1;
117
+ }
118
+
119
+ .gauge-label {
120
+ font-size: 11px;
121
+ color: var(--muted);
122
+ font-weight: 700;
123
+ text-transform: uppercase;
124
+ }
125
+
126
+ .stats-breakdown {
127
+ display: flex;
128
+ flex-direction: column;
129
+ gap: 10px;
130
+ }
131
+
132
+ .stats-breakdown-row {
133
+ display: flex;
134
+ justify-content: space-between;
135
+ align-items: center;
136
+ font-size: 13px;
137
+ font-weight: 600;
138
+ padding: 4px 0;
139
+ border-bottom: 1px solid var(--line);
140
+ }
141
+
142
+ .stats-breakdown-row:last-child {
143
+ border-bottom: none;
144
+ }
145
+
146
+ .stats-breakdown-row .stat-label {
147
+ color: var(--muted);
148
+ display: flex;
149
+ align-items: center;
150
+ gap: 8px;
151
+ }
152
+
153
+ .stats-breakdown-row .stat-value {
154
+ color: var(--ink);
155
+ font-weight: 800;
156
+ }
157
+
158
+ .stats-breakdown-row .state-dot {
159
+ width: 8px;
160
+ height: 8px;
161
+ border-radius: 50%;
162
+ display: inline-block;
163
+ }
164
+
165
+ /* Legend items */
166
+ .legend-list {
167
+ display: flex;
168
+ flex-direction: column;
169
+ gap: 12px;
170
+ }
171
+
172
+ .legend-item {
173
+ display: flex;
174
+ align-items: flex-start;
175
+ gap: 10px;
176
+ font-size: 12px;
177
+ line-height: 1.4;
178
+ }
179
+
180
+ .legend-item .badge {
181
+ font-size: 10px;
182
+ padding: 2px 6px;
183
+ border-radius: 4px;
184
+ font-weight: 700;
185
+ white-space: nowrap;
186
+ display: inline-flex;
187
+ }
188
+
189
+ .legend-item .badge.ready {
190
+ background: rgba(22, 163, 74, 0.08);
191
+ color: #16a34a;
192
+ border: 1px solid rgba(22, 163, 74, 0.15);
193
+ }
194
+
195
+ .legend-item .badge.map-ready {
196
+ background: rgba(217, 119, 6, 0.08);
197
+ color: var(--accent);
198
+ border: 1px solid rgba(217, 119, 6, 0.15);
199
+ }
200
+
201
+ .legend-item span {
202
+ color: var(--muted);
203
+ }
204
+
205
+ /* Layout Toggle styling */
206
+ .layout-toggle-group {
207
+ display: flex;
208
+ background: var(--bg);
209
+ border: 1px solid var(--line);
210
+ border-radius: 8px;
211
+ padding: 2px;
212
+ gap: 2px;
213
+ }
214
+
215
+ .layout-btn {
216
+ flex: 1;
217
+ border: none;
218
+ background: transparent;
219
+ color: var(--muted);
220
+ font-size: 12px;
221
+ font-weight: 700;
222
+ padding: 8px 12px;
223
+ border-radius: 6px;
224
+ cursor: pointer;
225
+ display: inline-flex;
226
+ align-items: center;
227
+ justify-content: center;
228
+ gap: 6px;
229
+ transition: all 0.2s ease;
230
+ }
231
+
232
+ .layout-btn:hover {
233
+ color: var(--ink);
234
+ }
235
+
236
+ .layout-btn.active {
237
+ background: var(--paper);
238
+ color: var(--accent);
239
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
240
+ }
241
+
242
+ .sort-toggle-group .layout-btn {
243
+ min-width: 0;
244
+ white-space: normal;
245
+ line-height: 1.25;
246
+ }
247
+
248
+ /* Beautiful taskstatsbar metrics strip */
249
+ .task-stats-bar {
250
+ display: flex;
251
+ flex-wrap: wrap;
252
+ gap: 12px;
253
+ align-items: center;
254
+ padding: 16px 20px;
255
+ background: var(--paper);
256
+ border: 1px solid var(--line);
257
+ border-radius: 12px;
258
+ box-shadow: var(--shadow);
259
+ margin-bottom: 24px;
260
+ backdrop-filter: blur(10px);
261
+ }
262
+
263
+ .stat-chip {
264
+ display: flex;
265
+ flex-direction: column;
266
+ align-items: center;
267
+ gap: 4px;
268
+ padding: 8px 16px;
269
+ border-radius: 8px;
270
+ background: var(--paper-2);
271
+ min-width: 64px;
272
+ transition: transform 0.2s, box-shadow 0.2s;
273
+ }
274
+
275
+ .stat-chip:hover {
276
+ transform: translateY(-1px);
277
+ box-shadow: 0 4px 6px rgba(0,0,0,0.02);
278
+ }
279
+
280
+ .stat-chip .stat-value {
281
+ font-size: 20px;
282
+ font-weight: 800;
283
+ color: var(--ink);
284
+ line-height: 1;
285
+ }
286
+
287
+ .stat-chip .stat-label {
288
+ font-size: 11px;
289
+ color: var(--muted);
290
+ font-weight: 700;
291
+ text-transform: uppercase;
292
+ }
293
+
294
+ .stat-chip.in-progress .stat-value {
295
+ color: var(--accent);
296
+ }
297
+
298
+ .stat-chip.review .stat-value {
299
+ color: var(--accent-2);
300
+ }
301
+
302
+ .stat-chip.blocked .stat-value {
303
+ color: var(--danger);
304
+ }
305
+
306
+ .stat-chip.done .stat-value {
307
+ color: var(--ok);
308
+ }
309
+
310
+ .stat-chip.completion {
311
+ flex: 1;
312
+ min-width: 180px;
313
+ flex-direction: row;
314
+ gap: 12px;
315
+ align-items: center;
316
+ }
317
+
318
+ .stat-bar-track {
319
+ flex: 1;
320
+ height: 8px;
321
+ background: var(--paper);
322
+ border-radius: 4px;
323
+ border: 1px solid var(--line);
324
+ overflow: hidden;
325
+ position: relative;
326
+ }
327
+
328
+ .stat-bar-fill {
329
+ height: 100%;
330
+ background: linear-gradient(90deg, var(--accent), var(--accent-2));
331
+ border-radius: 4px;
332
+ transition: width 0.5s ease;
333
+ }
334
+
335
+ /* Beautiful upgraded Task Row List view styling */
336
+ .task-list {
337
+ display: flex;
338
+ flex-direction: column;
339
+ gap: 1px;
340
+ background: var(--line);
341
+ border-radius: 12px;
342
+ overflow: hidden;
343
+ border: 1px solid var(--line);
344
+ margin-top: 16px;
345
+ }
346
+
347
+ /* Table Header for Task List */
348
+ .task-list-header {
349
+ display: grid;
350
+ grid-template-columns: minmax(0, 1fr) 100px 120px 100px 100px;
351
+ gap: 16px;
352
+ align-items: center;
353
+ padding: 10px 20px;
354
+ background: var(--paper-2);
355
+ border-bottom: 1px solid var(--line);
356
+ font-size: 11px;
357
+ font-weight: 700;
358
+ color: var(--muted);
359
+ text-transform: uppercase;
360
+ letter-spacing: 0.05em;
361
+ }
362
+
363
+ .mini-progress-track {
364
+ width: 80px;
365
+ height: 6px;
366
+ background: var(--bg);
367
+ border-radius: 3px;
368
+ border: 1px solid var(--line);
369
+ overflow: hidden;
370
+ position: relative;
371
+ display: inline-block;
372
+ }
373
+
374
+ .mini-progress-fill {
375
+ height: 100%;
376
+ background: linear-gradient(90deg, var(--row-accent, var(--accent)), var(--accent-2));
377
+ border-radius: 3px;
378
+ transition: width 0.4s;
379
+ }
380
+
381
+ .task-row-card {
382
+ display: grid;
383
+ grid-template-columns: minmax(0, 1fr) 100px 120px 100px 100px;
384
+ gap: 16px;
385
+ align-items: center;
386
+ padding: 14px 20px;
387
+ text-decoration: none;
388
+ background: var(--paper);
389
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
390
+ position: relative;
391
+ cursor: pointer;
392
+ }
393
+
394
+ .task-row-card:hover {
395
+ background: var(--paper-2);
396
+ z-index: 1;
397
+ }
398
+
399
+ .row-accent-bar {
400
+ position: absolute;
401
+ left: 0;
402
+ top: 0;
403
+ bottom: 0;
404
+ width: 4px;
405
+ background: var(--row-accent, var(--muted));
406
+ transition: width 0.2s;
407
+ }
408
+
409
+ .task-row-card:hover .row-accent-bar {
410
+ width: 6px;
411
+ }
412
+
413
+ .row-main {
414
+ min-width: 0;
415
+ }
416
+
417
+ .row-main strong {
418
+ font-size: 14px;
419
+ font-weight: 700;
420
+ color: var(--ink);
421
+ display: block;
422
+ overflow: hidden;
423
+ text-overflow: ellipsis;
424
+ white-space: nowrap;
425
+ }
426
+
427
+ .row-meta {
428
+ display: block;
429
+ font-family: var(--font-mono);
430
+ font-size: 11px;
431
+ color: var(--muted);
432
+ overflow: hidden;
433
+ text-overflow: ellipsis;
434
+ white-space: nowrap;
435
+ margin-top: 4px;
436
+ }
437
+
438
+ .row-status {
439
+ display: flex;
440
+ align-items: center;
441
+ }
442
+
443
+ .row-progress {
444
+ display: flex;
445
+ align-items: center;
446
+ gap: 8px;
447
+ }
448
+
449
+ .row-pct {
450
+ font-size: 11px;
451
+ font-weight: 800;
452
+ color: var(--ink);
453
+ min-width: 32px;
454
+ text-align: right;
455
+ }
456
+
457
+ .row-brief {
458
+ display: inline-flex;
459
+ }
460
+
461
+ .row-map {
462
+ display: inline-flex;
463
+ }
464
+
465
+ /* Task Card Grid */
466
+ .task-card-grid {
467
+ display: grid;
468
+ grid-template-columns: 1fr;
469
+ gap: 16px;
470
+ margin-top: 16px;
471
+ }
472
+
473
+ @media (min-width: 640px) {
474
+ .task-card-grid {
475
+ grid-template-columns: repeat(2, 1fr);
476
+ }
477
+ }
478
+
479
+ @media (min-width: 1440px) {
480
+ .task-card-grid {
481
+ grid-template-columns: repeat(3, 1fr);
482
+ }
483
+ }
484
+
485
+ /* Elegant Task Card Component */
486
+ .task-card {
487
+ display: flex;
488
+ flex-direction: column;
489
+ background: var(--paper);
490
+ border: 1px solid var(--line);
491
+ border-radius: 12px;
492
+ padding: 16px;
493
+ gap: 12px;
494
+ text-decoration: none;
495
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.02), 0 2px 4px -1px rgba(0, 0, 0, 0.01);
496
+ transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
497
+ position: relative;
498
+ overflow: hidden;
499
+ }
500
+
501
+ .task-card::before {
502
+ content: "";
503
+ position: absolute;
504
+ top: 0;
505
+ left: 0;
506
+ right: 0;
507
+ height: 4px;
508
+ background: var(--row-accent, var(--muted));
509
+ transition: height 0.25s;
510
+ }
511
+
512
+ .task-card:hover {
513
+ transform: translateY(-3px);
514
+ box-shadow: var(--shadow-hover), 0 0 0 1px var(--row-accent);
515
+ border-color: transparent;
516
+ }
517
+
518
+ .task-card:hover::before {
519
+ height: 6px;
520
+ }
521
+
522
+ .task-card .card-header {
523
+ display: flex;
524
+ justify-content: space-between;
525
+ align-items: center;
526
+ gap: 8px;
527
+ margin-top: 4px;
528
+ }
529
+
530
+ .task-card .card-id {
531
+ font-family: var(--font-mono);
532
+ font-size: 11px;
533
+ font-weight: 600;
534
+ color: var(--muted);
535
+ background: var(--paper-2);
536
+ padding: 2px 6px;
537
+ border-radius: 4px;
538
+ }
539
+
540
+ .task-card .card-title {
541
+ margin: 0;
542
+ font-size: 14px;
543
+ font-weight: 700;
544
+ color: var(--ink);
545
+ line-height: 1.4;
546
+ display: -webkit-box;
547
+ -webkit-line-clamp: 2;
548
+ -webkit-box-orient: vertical;
549
+ overflow: hidden;
550
+ text-overflow: ellipsis;
551
+ height: 38px;
552
+ }
553
+
554
+ .task-card .card-meta {
555
+ display: flex;
556
+ align-items: center;
557
+ gap: 6px;
558
+ font-size: 11px;
559
+ color: var(--muted);
560
+ font-weight: 600;
561
+ }
562
+
563
+ .task-card .meta-module {
564
+ overflow: hidden;
565
+ text-overflow: ellipsis;
566
+ white-space: nowrap;
567
+ max-width: 100%;
568
+ display: inline-flex;
569
+ align-items: center;
570
+ gap: 4px;
571
+ }
572
+
573
+ .task-card .card-progress {
574
+ display: flex;
575
+ align-items: center;
576
+ gap: 8px;
577
+ margin-top: auto;
578
+ }
579
+
580
+ .task-card .card-progress-track {
581
+ flex: 1;
582
+ height: 6px;
583
+ background: var(--paper-2);
584
+ border-radius: 3px;
585
+ border: 1px solid var(--line);
586
+ overflow: hidden;
587
+ }
588
+
589
+ .task-card .card-progress-fill {
590
+ height: 100%;
591
+ background: linear-gradient(90deg, var(--row-accent, var(--accent)), var(--accent-2));
592
+ border-radius: 3px;
593
+ transition: width 0.4s;
594
+ }
595
+
596
+ .task-card .progress-pct {
597
+ font-size: 11px;
598
+ font-weight: 800;
599
+ color: var(--ink);
600
+ min-width: 32px;
601
+ text-align: right;
602
+ }
603
+
604
+ .task-card .card-badges {
605
+ display: flex;
606
+ flex-wrap: wrap;
607
+ gap: 6px;
608
+ border-top: 1px dashed var(--line);
609
+ padding-top: 10px;
610
+ }
611
+
612
+ .task-card .badge,
613
+ .task-row-card .badge {
614
+ font-size: 10px;
615
+ font-weight: 700;
616
+ padding: 2px 6px;
617
+ border-radius: 4px;
618
+ display: inline-flex;
619
+ align-items: center;
620
+ gap: 4px;
621
+ }
622
+
623
+ .task-card .badge.brief.ready,
624
+ .task-row-card .badge.brief.ready {
625
+ background: rgba(22, 163, 74, 0.08);
626
+ color: #16a34a;
627
+ border: 1px solid rgba(22, 163, 74, 0.15);
628
+ }
629
+
630
+ .task-card .badge.brief.missing,
631
+ .task-row-card .badge.brief.missing {
632
+ background: var(--bg);
633
+ color: var(--muted);
634
+ border: 1px solid var(--line);
635
+ }
636
+
637
+ .task-card .badge.map.ready,
638
+ .task-row-card .badge.map.ready {
639
+ background: rgba(217, 119, 6, 0.08);
640
+ color: var(--accent);
641
+ border: 1px solid rgba(217, 119, 6, 0.15);
642
+ }
643
+
644
+ .task-card .badge.map.missing,
645
+ .task-row-card .badge.map.missing {
646
+ background: var(--bg);
647
+ color: var(--muted);
648
+ border: 1px solid var(--line);
649
+ }
650
+
651
+ /* Beautiful Group Header styling */
652
+ .task-group {
653
+ background: var(--paper);
654
+ border: 1px solid var(--line);
655
+ border-radius: 12px;
656
+ box-shadow: var(--shadow);
657
+ padding: 20px;
658
+ margin-bottom: 24px;
659
+ }
660
+
661
+ .task-group .section-head {
662
+ display: flex;
663
+ justify-content: space-between;
664
+ align-items: center;
665
+ border-bottom: 1px solid var(--line);
666
+ padding-bottom: 16px;
667
+ margin-bottom: 8px;
668
+ border-left: none; /* remove legacy left border */
669
+ }
670
+
671
+ .task-group .section-head h2 {
672
+ font-size: 16px;
673
+ font-weight: 800;
674
+ margin: 0;
675
+ color: var(--ink);
676
+ }
677
+
678
+ .task-group .section-head .subtle {
679
+ font-size: 12px;
680
+ color: var(--muted);
681
+ margin: 4px 0 0;
682
+ font-weight: 600;
683
+ }
684
+
685
+ .task-group .group-actions {
686
+ display: flex;
687
+ align-items: center;
688
+ gap: 16px;
689
+ }
690
+
691
+ .task-group .group-progress {
692
+ display: flex;
693
+ align-items: center;
694
+ gap: 8px;
695
+ font-size: 12px;
696
+ font-weight: 700;
697
+ color: var(--ink);
698
+ }
699
+
700
+ .task-group .group-progress-track {
701
+ width: 60px;
702
+ height: 6px;
703
+ background: var(--paper-2);
704
+ border-radius: 3px;
705
+ border: 1px solid var(--line);
706
+ overflow: hidden;
707
+ }
708
+
709
+ .task-group .group-progress-fill {
710
+ height: 100%;
711
+ background: linear-gradient(90deg, var(--accent), var(--accent-2));
712
+ border-radius: 3px;
713
+ transition: width 0.4s;
714
+ }
715
+
716
+ /* Responsive arrangement for search tool order */
717
+ @media (max-width: 1023px) {
718
+ .tasks-grid {
719
+ display: flex;
720
+ flex-direction: column;
721
+ }
722
+ .tasks-sidebar {
723
+ order: -1;
724
+ }
725
+ }
726
+
727
+ .crumbs {
728
+ display: flex;
729
+ align-items: center;
730
+ gap: 8px;
731
+ color: var(--muted);
732
+ margin-bottom: 16px;
733
+ font-size: 13px;
734
+ font-weight: 600;
735
+ }
736
+
737
+ .crumbs a:hover {
738
+ color: var(--accent);
739
+ }