@prmichaelsen/acp-visualizer 0.1.0 → 0.1.2

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 (159) hide show
  1. package/package.json +8 -10
  2. package/src/components/ExtraFieldsBadge.tsx +1 -1
  3. package/src/components/FilterBar.tsx +1 -1
  4. package/src/components/Header.tsx +1 -1
  5. package/src/components/MilestoneTable.tsx +1 -1
  6. package/src/components/MilestoneTree.tsx +2 -2
  7. package/src/components/StatusBadge.tsx +1 -1
  8. package/src/components/StatusDot.tsx +1 -1
  9. package/src/components/TaskList.tsx +1 -1
  10. package/src/routes/__root.tsx +5 -5
  11. package/src/routes/api/watch.ts +1 -1
  12. package/src/routes/index.tsx +2 -2
  13. package/src/routes/milestones.tsx +7 -7
  14. package/src/routes/search.tsx +4 -4
  15. package/src/routes/tasks.tsx +3 -3
  16. package/src/services/progress-database.service.ts +3 -3
  17. package/agent/commands/acp.clarification-address.md +0 -417
  18. package/agent/commands/acp.clarification-capture.md +0 -386
  19. package/agent/commands/acp.clarification-create.md +0 -437
  20. package/agent/commands/acp.clarifications-research.md +0 -326
  21. package/agent/commands/acp.command-create.md +0 -432
  22. package/agent/commands/acp.design-create.md +0 -286
  23. package/agent/commands/acp.design-reference.md +0 -355
  24. package/agent/commands/acp.handoff.md +0 -270
  25. package/agent/commands/acp.index.md +0 -423
  26. package/agent/commands/acp.init.md +0 -546
  27. package/agent/commands/acp.package-create.md +0 -895
  28. package/agent/commands/acp.package-info.md +0 -212
  29. package/agent/commands/acp.package-install.md +0 -539
  30. package/agent/commands/acp.package-list.md +0 -280
  31. package/agent/commands/acp.package-publish.md +0 -541
  32. package/agent/commands/acp.package-remove.md +0 -293
  33. package/agent/commands/acp.package-search.md +0 -307
  34. package/agent/commands/acp.package-update.md +0 -361
  35. package/agent/commands/acp.package-validate.md +0 -540
  36. package/agent/commands/acp.pattern-create.md +0 -386
  37. package/agent/commands/acp.plan.md +0 -587
  38. package/agent/commands/acp.proceed.md +0 -882
  39. package/agent/commands/acp.project-create.md +0 -675
  40. package/agent/commands/acp.project-info.md +0 -312
  41. package/agent/commands/acp.project-list.md +0 -226
  42. package/agent/commands/acp.project-remove.md +0 -379
  43. package/agent/commands/acp.project-set.md +0 -227
  44. package/agent/commands/acp.project-update.md +0 -307
  45. package/agent/commands/acp.projects-restore.md +0 -228
  46. package/agent/commands/acp.projects-sync.md +0 -347
  47. package/agent/commands/acp.report.md +0 -407
  48. package/agent/commands/acp.resume.md +0 -239
  49. package/agent/commands/acp.sessions.md +0 -301
  50. package/agent/commands/acp.status.md +0 -293
  51. package/agent/commands/acp.sync.md +0 -364
  52. package/agent/commands/acp.task-create.md +0 -500
  53. package/agent/commands/acp.update.md +0 -302
  54. package/agent/commands/acp.validate.md +0 -466
  55. package/agent/commands/acp.version-check-for-updates.md +0 -276
  56. package/agent/commands/acp.version-check.md +0 -191
  57. package/agent/commands/acp.version-update.md +0 -289
  58. package/agent/commands/command.template.md +0 -339
  59. package/agent/commands/git.commit.md +0 -526
  60. package/agent/commands/git.init.md +0 -514
  61. package/agent/commands/tanstack-cloudflare.deploy.md +0 -272
  62. package/agent/commands/tanstack-cloudflare.tail.md +0 -275
  63. package/agent/design/.gitkeep +0 -0
  64. package/agent/design/design.template.md +0 -154
  65. package/agent/design/local.dashboard-layout-routing.md +0 -288
  66. package/agent/design/local.data-model-yaml-parsing.md +0 -310
  67. package/agent/design/local.search-filtering.md +0 -331
  68. package/agent/design/local.server-api-auto-refresh.md +0 -235
  69. package/agent/design/local.table-tree-views.md +0 -299
  70. package/agent/design/local.visualizer-requirements.md +0 -349
  71. package/agent/design/requirements.template.md +0 -387
  72. package/agent/index/.gitkeep +0 -0
  73. package/agent/index/acp.core.yaml +0 -137
  74. package/agent/index/local.main.template.yaml +0 -37
  75. package/agent/manifest.template.yaml +0 -13
  76. package/agent/manifest.yaml +0 -302
  77. package/agent/milestones/.gitkeep +0 -0
  78. package/agent/milestones/milestone-1-project-scaffold-data-pipeline.md +0 -67
  79. package/agent/milestones/milestone-1-{title}.template.md +0 -206
  80. package/agent/milestones/milestone-2-dashboard-views-interaction.md +0 -79
  81. package/agent/package.template.yaml +0 -86
  82. package/agent/patterns/.gitkeep +0 -0
  83. package/agent/patterns/bootstrap.template.md +0 -1237
  84. package/agent/patterns/pattern.template.md +0 -382
  85. package/agent/patterns/tanstack-cloudflare.acl-permissions.md +0 -332
  86. package/agent/patterns/tanstack-cloudflare.action-bar-item.md +0 -416
  87. package/agent/patterns/tanstack-cloudflare.api-route-handlers.md +0 -401
  88. package/agent/patterns/tanstack-cloudflare.auth-session-management.md +0 -387
  89. package/agent/patterns/tanstack-cloudflare.card-and-list.md +0 -271
  90. package/agent/patterns/tanstack-cloudflare.chat-engine.md +0 -353
  91. package/agent/patterns/tanstack-cloudflare.confirmation-tokens.md +0 -346
  92. package/agent/patterns/tanstack-cloudflare.durable-objects-websocket.md +0 -516
  93. package/agent/patterns/tanstack-cloudflare.email-service.md +0 -431
  94. package/agent/patterns/tanstack-cloudflare.expander.md +0 -98
  95. package/agent/patterns/tanstack-cloudflare.fcm-push.md +0 -115
  96. package/agent/patterns/tanstack-cloudflare.firebase-anonymous-sessions.md +0 -441
  97. package/agent/patterns/tanstack-cloudflare.firebase-auth.md +0 -348
  98. package/agent/patterns/tanstack-cloudflare.firebase-firestore.md +0 -550
  99. package/agent/patterns/tanstack-cloudflare.firebase-storage.md +0 -369
  100. package/agent/patterns/tanstack-cloudflare.form-controls.md +0 -145
  101. package/agent/patterns/tanstack-cloudflare.global-search-context.md +0 -93
  102. package/agent/patterns/tanstack-cloudflare.image-carousel.md +0 -126
  103. package/agent/patterns/tanstack-cloudflare.library-services.md +0 -553
  104. package/agent/patterns/tanstack-cloudflare.lightbox.md +0 -169
  105. package/agent/patterns/tanstack-cloudflare.markdown-content.md +0 -115
  106. package/agent/patterns/tanstack-cloudflare.mention-suggestions.md +0 -98
  107. package/agent/patterns/tanstack-cloudflare.modal.md +0 -156
  108. package/agent/patterns/tanstack-cloudflare.nextjs-to-tanstack-routing.md +0 -461
  109. package/agent/patterns/tanstack-cloudflare.notifications-engine.md +0 -151
  110. package/agent/patterns/tanstack-cloudflare.oauth-token-refresh.md +0 -90
  111. package/agent/patterns/tanstack-cloudflare.og-metadata.md +0 -296
  112. package/agent/patterns/tanstack-cloudflare.pagination.md +0 -442
  113. package/agent/patterns/tanstack-cloudflare.pill-input.md +0 -220
  114. package/agent/patterns/tanstack-cloudflare.provider-adapter.md +0 -401
  115. package/agent/patterns/tanstack-cloudflare.rate-limiting.md +0 -323
  116. package/agent/patterns/tanstack-cloudflare.scheduled-tasks.md +0 -338
  117. package/agent/patterns/tanstack-cloudflare.searchable-settings.md +0 -375
  118. package/agent/patterns/tanstack-cloudflare.slide-over.md +0 -129
  119. package/agent/patterns/tanstack-cloudflare.ssr-preload.md +0 -571
  120. package/agent/patterns/tanstack-cloudflare.third-party-api-integration.md +0 -508
  121. package/agent/patterns/tanstack-cloudflare.toast-system.md +0 -142
  122. package/agent/patterns/tanstack-cloudflare.unified-header.md +0 -280
  123. package/agent/patterns/tanstack-cloudflare.user-scoped-collections.md +0 -628
  124. package/agent/patterns/tanstack-cloudflare.websocket-manager.md +0 -237
  125. package/agent/patterns/tanstack-cloudflare.wrangler-configuration.md +0 -358
  126. package/agent/patterns/tanstack-cloudflare.zod-schema-validation.md +0 -336
  127. package/agent/progress.template.yaml +0 -161
  128. package/agent/progress.yaml +0 -145
  129. package/agent/schemas/package.schema.yaml +0 -276
  130. package/agent/scripts/acp.common.sh +0 -1781
  131. package/agent/scripts/acp.install.sh +0 -333
  132. package/agent/scripts/acp.package-create.sh +0 -924
  133. package/agent/scripts/acp.package-info.sh +0 -288
  134. package/agent/scripts/acp.package-install.sh +0 -893
  135. package/agent/scripts/acp.package-list.sh +0 -311
  136. package/agent/scripts/acp.package-publish.sh +0 -420
  137. package/agent/scripts/acp.package-remove.sh +0 -348
  138. package/agent/scripts/acp.package-search.sh +0 -156
  139. package/agent/scripts/acp.package-update.sh +0 -517
  140. package/agent/scripts/acp.package-validate.sh +0 -1018
  141. package/agent/scripts/acp.uninstall.sh +0 -85
  142. package/agent/scripts/acp.version-check-for-updates.sh +0 -98
  143. package/agent/scripts/acp.version-check.sh +0 -47
  144. package/agent/scripts/acp.version-update.sh +0 -176
  145. package/agent/scripts/acp.yaml-parser.sh +0 -985
  146. package/agent/scripts/acp.yaml-validate.sh +0 -205
  147. package/agent/tasks/.gitkeep +0 -0
  148. package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-1-initialize-tanstack-start-project.md +0 -210
  149. package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-2-implement-data-model-yaml-parser.md +0 -294
  150. package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-3-build-server-api-data-loading.md +0 -193
  151. package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-4-add-auto-refresh-sse.md +0 -262
  152. package/agent/tasks/milestone-2-dashboard-views-interaction/task-10-polish-integration-testing.md +0 -156
  153. package/agent/tasks/milestone-2-dashboard-views-interaction/task-5-build-dashboard-layout-routing.md +0 -178
  154. package/agent/tasks/milestone-2-dashboard-views-interaction/task-6-build-overview-page.md +0 -141
  155. package/agent/tasks/milestone-2-dashboard-views-interaction/task-7-implement-milestone-table-view.md +0 -153
  156. package/agent/tasks/milestone-2-dashboard-views-interaction/task-8-implement-milestone-tree-view.md +0 -174
  157. package/agent/tasks/milestone-2-dashboard-views-interaction/task-9-implement-search-filtering.md +0 -233
  158. package/agent/tasks/task-1-{title}.template.md +0 -244
  159. package/vitest.config.ts +0 -27
@@ -1,280 +0,0 @@
1
- # Unified Header & Navigation
2
-
3
- **Category**: Design
4
- **Applicable To**: All page headers, tab navigation, mobile menus, and back navigation
5
- **Status**: Stable
6
-
7
- ---
8
-
9
- ## Overview
10
-
11
- The header system provides a fixed 56px top bar (`UnifiedHeader`) with optional sub-header tabs (`SubHeaderTabs`), inline filter tabs (`FilterTabs`), smart back navigation, mobile hamburger menu, and notification bell integration. All pages share the same header chrome via this system. Content below the header uses `pt-14` (which includes `env(safe-area-inset-top)` via CSS override).
12
-
13
- ---
14
-
15
- ## When to Use This Pattern
16
-
17
- **Use this pattern when:**
18
- - Creating any new page that needs a header bar
19
- - Adding tab navigation to a page (sub-header or inline)
20
- - Building a page with action buttons in the header
21
- - Implementing a new mobile-responsive navigation flow
22
-
23
- **Don't use this pattern when:**
24
- - Building a full-screen overlay (lightbox, modal) — these have their own chrome
25
- - Creating a landing/marketing page with custom header design
26
-
27
- ---
28
-
29
- ## Core Principles
30
-
31
- 1. **Fixed Position + Safe Area**: Header is `fixed top-0` with `paddingTop: env(safe-area-inset-top)` for notch support
32
- 2. **Content Offset**: All content below uses `pt-14` (56px + safe area via CSS override in `styles.css`)
33
- 3. **Two-Tier Structure**: Main bar (always) + optional sub-header children (tabs)
34
- 4. **Smart Back Button**: Shows when `title` is set; uses `router.history.back()` with `/` fallback
35
- 5. **Max-Width Container**: `max-w-3xl mx-auto` keeps content centered and readable
36
-
37
- ---
38
-
39
- ## Implementation
40
-
41
- ### UnifiedHeader
42
-
43
- **File**: `src/components/UnifiedHeader.tsx`
44
-
45
- ```typescript
46
- interface UnifiedHeaderProps {
47
- /** Page title. Omit for homepage mode (shows "agentbase" branding). */
48
- title?: string
49
- /** Icon displayed next to the title. */
50
- icon?: ReactNode
51
- /** When true, renders the icon as-is instead of wrapping in a gradient circle. */
52
- iconRaw?: boolean
53
- /** Callback for the ellipsis (⋮) button. Page owns the panel/menu. */
54
- onEllipsisPress?: () => void
55
- /** Action buttons rendered directly in the header bar. */
56
- headerActions?: ReactNode
57
- /** SubHeaderTabs or other content rendered below the main bar. */
58
- children?: ReactNode
59
- }
60
- ```
61
-
62
- **Structure**:
63
-
64
- ```
65
- <header fixed top-0 z-50 w-full>
66
- ├─ <div h-14 border-b> ← Main bar (56px)
67
- │ └─ <div max-w-3xl mx-auto>
68
- │ ├─ [Back button + separator] ← Only when title is set
69
- │ ├─ [Icon] + [Title] ← Or branding if no title
70
- │ ├─ <flex-1 spacer />
71
- │ ├─ [headerActions] ← Custom action buttons
72
- │ ├─ [Ellipsis button] ← If onEllipsisPress provided
73
- │ ├─ [NotificationBell] ← If real user
74
- │ └─ [Hamburger menu button]
75
- └─ {children} ← SubHeaderTabs go here
76
-
77
- {mobileMenuOpen && <MobileMenu />} ← Dropdown below header
78
- ```
79
-
80
- **Exported Constants**:
81
-
82
- ```typescript
83
- export const HEADER_HEIGHT_CLASS = 'pt-14' // Padding for content below header
84
- export const HEADER_TOP_CLASS = 'top-14' // Top offset for fixed elements below header
85
- ```
86
-
87
- **Back Navigation Logic**:
88
-
89
- ```typescript
90
- const handleBack = () => {
91
- if (window.history.length > 1) {
92
- router.history.back()
93
- } else {
94
- window.location.href = '/'
95
- }
96
- }
97
- // Back button only renders when title is set (non-homepage)
98
- ```
99
-
100
- **Mobile Menu**: Fixed dropdown below header (`top-14`) with:
101
- - Navigation links (Chat, Conversations, Memories, etc.)
102
- - Collapsible "Social" subsection with ChevronDown rotation
103
- - Auth section: loading skeleton / user email + logout / login link
104
- - Auto-closes on link click
105
-
106
- ---
107
-
108
- ### SubHeaderTabs
109
-
110
- **File**: `src/components/SubHeaderTabs.tsx`
111
-
112
- Rendered as `children` of UnifiedHeader, below the main bar.
113
-
114
- ```typescript
115
- export interface SubHeaderTab {
116
- id: string
117
- label: string
118
- icon?: ReactNode
119
- variant?: 'default' | 'ghost'
120
- }
121
-
122
- interface SubHeaderTabsProps {
123
- tabs: SubHeaderTab[]
124
- activeId: string
125
- onSelect: (id: string) => void
126
- }
127
- ```
128
-
129
- **Behavior**:
130
- - Horizontal scrollable with `-webkit-overflow-scrolling: touch` and hidden scrollbar
131
- - Active tab: 2px bottom border (`border-purple-500`) + white/purple text
132
- - Inactive tab: gray text with hover transition
133
- - Buttons use `min-w-min` to prevent shrinking
134
-
135
- **Usage**:
136
-
137
- ```typescript
138
- <UnifiedHeader title="Organize">
139
- <SubHeaderTabs
140
- tabs={[
141
- { id: 'unorganized', label: 'Unorganized', icon: <FolderOpen className="w-4 h-4" /> },
142
- { id: 'relationships', label: 'Relationships', icon: <Waypoints className="w-4 h-4" /> },
143
- ]}
144
- activeId={activeTab}
145
- onSelect={setActiveTab}
146
- />
147
- </UnifiedHeader>
148
- ```
149
-
150
- **Content Offset with Tabs**: Use `pt-header-tabs` (6rem + safe area) instead of `pt-14` when SubHeaderTabs are present.
151
-
152
- ---
153
-
154
- ### FilterTabs
155
-
156
- **File**: `src/components/feed/FilterTabs.tsx`
157
-
158
- Inline pill-style filter controls rendered within page content (not in header).
159
-
160
- ```typescript
161
- export interface FilterTab {
162
- id: string
163
- label: string
164
- icon?: ReactNode
165
- }
166
-
167
- interface FilterTabsProps {
168
- tabs: FilterTab[]
169
- activeId: string
170
- onSelect: (id: string) => void
171
- hidden?: boolean
172
- className?: string
173
- }
174
- ```
175
-
176
- **Behavior**:
177
- - Container: `flex gap-1 mb-4 p-1 bg-gray-800/50 rounded-lg overflow-x-auto`
178
- - Active button: gradient background (`from-purple-600 to-blue-600`), white text, shadow
179
- - Inactive button: gray text, hover effects
180
- - Can be hidden with `hidden` prop
181
- - `whitespace-nowrap` on buttons prevents text wrapping
182
-
183
- **Usage**:
184
-
185
- ```typescript
186
- <FilterTabs
187
- tabs={[
188
- { id: 'all', label: 'All', icon: <Brain className="w-3.5 h-3.5" /> },
189
- { id: 'agent', label: 'Agent', icon: <Bot className="w-3.5 h-3.5" /> },
190
- ]}
191
- activeId={contentView}
192
- onSelect={setContentView}
193
- />
194
- ```
195
-
196
- ---
197
-
198
- ### Layout Routes with Outlet
199
-
200
- **Pattern**: Keep feeds mounted while showing detail views via TanStack Router layout routes.
201
-
202
- ```
203
- /memories.tsx ← Layout with feed + <Outlet />
204
- /memories/index.tsx ← Feed content (hidden when detail showing)
205
- /memories/$memoryId.tsx ← Detail view (renders via Outlet)
206
- ```
207
-
208
- ```typescript
209
- function MemoriesLayout() {
210
- const indexMatch = useMatch({ from: '/memories/', shouldThrow: false })
211
- const showingDetail = !indexMatch
212
-
213
- return (
214
- <>
215
- {/* Feed — hidden via CSS, stays mounted to preserve state */}
216
- <div style={{ display: showingDetail ? 'none' : undefined }}>
217
- <UnifiedHeader title="Memories">
218
- <SubHeaderTabs ... />
219
- </UnifiedHeader>
220
- <main className="pt-header-tabs">
221
- {/* Feed content */}
222
- </main>
223
- </div>
224
- {/* Detail — renders when child route matches */}
225
- {showingDetail && <Outlet />}
226
- </>
227
- )
228
- }
229
- ```
230
-
231
- **Key**: Use `display: none` (not unmount) to preserve scroll position, loaded items, and filter state.
232
-
233
- ---
234
-
235
- ## Anti-Patterns
236
-
237
- ### Forgetting `pt-14` Below Fixed Header
238
-
239
- ```typescript
240
- // Bad: Content renders behind the fixed header
241
- <UnifiedHeader title="Page" />
242
- <main>{content}</main>
243
-
244
- // Good: Offset content below header
245
- <UnifiedHeader title="Page" />
246
- <main className="pt-14">{content}</main>
247
-
248
- // Good (with tabs): Use pt-header-tabs
249
- <UnifiedHeader title="Page"><SubHeaderTabs ... /></UnifiedHeader>
250
- <main className="pt-header-tabs">{content}</main>
251
- ```
252
-
253
- ### Using SubHeaderTabs Outside UnifiedHeader
254
-
255
- ```typescript
256
- // Bad: Tabs render without proper fixed positioning
257
- <UnifiedHeader title="Page" />
258
- <SubHeaderTabs tabs={tabs} activeId={id} onSelect={fn} />
259
-
260
- // Good: Pass as children to UnifiedHeader
261
- <UnifiedHeader title="Page">
262
- <SubHeaderTabs tabs={tabs} activeId={id} onSelect={fn} />
263
- </UnifiedHeader>
264
- ```
265
-
266
- ---
267
-
268
- ## Checklist
269
-
270
- - [ ] `UnifiedHeader` used on every page (with or without title)
271
- - [ ] `pt-14` applied to content container (or `pt-header-tabs` when tabs present)
272
- - [ ] Tab state synced to URL via `validateSearch` + `navigate({ search })` for deep-linkability
273
- - [ ] Mobile menu items auto-close on navigation
274
- - [ ] Safe-area-inset-top applied via inline style on fixed header element
275
-
276
- ---
277
-
278
- **Status**: Stable
279
- **Last Updated**: 2026-03-14
280
- **Contributors**: Community