Consolidate changes from the callil-consolidation-worktree (branch jmpicnic/callil-consolidation, 86 commits) into the main ux-prototype clone (branch jmpicnic/list-view-management-620, 11 commits). Both branches diverge from the same main commit (9709107).
The worktree merges work from architect “callil” (sidebar, app-header, item-details, item-grid organisms) with work from architect “jmpicnic” (entity-data-grid, cell atoms, data-grid molecule). Integration is manual and file-by-file with semantic analysis per file.
| Decision | Value | Date |
|---|
| Target branch | jmpicnic/component-consolidation off HEAD of jmpicnic/list-view-management-620 | 2026-03-19 |
| Integration method | Manual file-by-file (no git merge) | 2026-03-19 |
| Overlap resolution | Case-by-case semantic analysis per file | 2026-03-19 |
| Pre-push gate | npm run lint, npx tsc --noEmit, npm run test must pass | 2026-03-19 |
| CHANGELOG version | Deferred — evaluate against main CHANGELOG after completion | 2026-03-19 |
| Decision | Value | Date |
|---|
cn() utility path | @/types/canary/utils (NOT @/utils) | 2026-03-19 |
cn() import rewrite | 38+ files in worktree need @/utils → @/types/canary/utils | 2026-03-19 |
use-mobile.ts hook | Goes under src/types/canary/hooks/ | 2026-03-19 |
| Decision | Value | Date |
|---|
| Stock shadcn/ui components | src/components/canary/primitives/ (peer of atoms/) | 2026-03-19 |
| Custom shadcn-derived components | src/components/canary/atoms/ (first-class, with stories/tests) | 2026-03-19 |
| Primitives not exported | Internal use only, not in canary.ts barrel | 2026-03-19 |
| Decision | Value | Date |
|---|
canary.ts | Union of both branches minus ArdaDetailField, plus all worktree additions | 2026-03-19 |
extras.ts | Identical in both branches, no changes needed | 2026-03-19 |
index.ts | Identical in both branches, no changes needed | 2026-03-19 |
ArdaDetailField | Drop from exports and delete underlying files; replaced by ReadOnlyField | 2026-03-19 |
ArdaBadge collision | Acceptable — canary and extras have different import paths; canary version is canonical long-term; extras version must not be used outside **/extras/** paths | 2026-03-19 |
| Decision | Value | Date |
|---|
| globals.css | Worktree version replaces main clone (Arda orange palette) | 2026-03-19 |
| tokens.css | Kept as separate file, updated to Arda orange, becomes single source of truth | 2026-03-19 |
| globals.css ↔ tokens.css | globals.css refactored to @import tokens.css (no duplicate values) | 2026-03-19 |
| Legacy sidebar CSS | Dropped (canary sidebar organism replaces it) | 2026-03-19 |
| sonner.tsx + next-themes | Dropped (dead code, Next.js-specific) | 2026-03-19 |
| Decision | Value | Date |
|---|
| Keep (production dep) | radix-ui — bundled, replaces @radix-ui/react-tooltip | 2026-03-19 |
| Keep (devDependency) | @reduxjs/toolkit, react-redux, redux-persist, sonner | 2026-03-19 |
| Drop | next-themes, react-icons, shadcn, pako, qr-scanner, react-dropzone | 2026-03-19 |
| Conditional | @storybook/addon-links (verify no linkTo usage first) | 2026-03-19 |
| Remove | @radix-ui/react-tooltip — superseded by radix-ui | 2026-03-19 |
| No promotions needed | All devDependencies correctly classified (none reach published entry points) | 2026-03-19 |
| Decision | Value | Date |
|---|
| Shim status | Deprecated but kept in place — migration aid for ArdaGrid-based dev-witness pages | 2026-03-19 |
| New code | Must use entity-data-grid directly, not the shim | 2026-03-19 |
| Decision | Value | Date |
|---|
| Extras layer | Functionally identical between branches except cn import path | 2026-03-19 |
| Extras reconciliation | Keep version used most, adapt other uses to match | 2026-03-19 |
| Document | Topic | Key Decisions |
|---|
| grid-integration.md | Refactoring item-grid to use entity-data-grid as base | Gap analysis complete; 5 open design questions under recall key grid-integration |
| primitives.md | Where shadcn/ui primitives live in canary hierarchy | Option A accepted: canary/primitives/ as peer of atoms/; includes organism import mapping |
| styles.md | globals.css, tokens.css consolidation and dependency cleanup | Worktree palette canonical; tokens.css inverted dependency; sonner.tsx + next-themes dropped |
| dependencies.md | New npm dependencies evaluation | Per-dependency keep/drop recommendations |
| test-coverage.md | Stories, tests, VRT needed for consolidated components | Gap analysis + phased strategy aligned with implementation steps |
| canary-refactor.md | Role of src/canary-refactor/ in consolidation | Validation harness, adapted after consolidation (not during) |
All five open questions from grid-integration.md are resolved:
- Auto-publish lifecycle — Promote into entity-data-grid. Row-auto-publish is the only editing mode; cell-granular
onEntityUpdated is replaced.
- Select vs Enum editor — Callil’s
SelectCellEditor replaces jmpicnic’s EnumCellEditor. Promoted to canary atom with generalized options format.
- Pagination approach — Support both server-driven and client-side via a StaticConfig (design-time) property on the factory config.
- Actions column — Item-grid’s
actionsColumn ColDef pattern. InitConfig (mount-time) property for future user/tenant configurability. Shim’s RowAction[] dropped.
- AG Grid theme — Item-grid’s
themeQuartz with design-system token mapping is canonical. DataGrid molecule retrofitted.
These are execution tasks (not design decisions) to be planned once open items are resolved:
- cn import rewrite: 38+ files from
@/utils to @/types/canary/utils
- Organism import rewrite: All callil organisms/molecules rewrite
@/components/ui/* to @/components/canary/primitives/* or atoms/* (see mapping in primitives.md)
- Move callil organisms: sidebar, app-header, item-details, item-grid into main clone’s
src/components/canary/organisms/
- Move shadcn primitives: 14 stock files from
src/components/ui/ to src/components/canary/primitives/
- Promote custom atoms: avatar, badge, button, card, dialog, input-group from
src/components/ui/ to src/components/canary/atoms/
- Update canary.ts barrel: Add all worktree export groups, remove ArdaDetailField
- Delete ArdaDetailField: Remove
src/components/canary/atoms/detail-field/ directory
- Update package.json: Add kept dependencies, omit dropped ones
- Update tokens.css: Arda orange palette, add new tokens
- Refactor globals.css: Import tokens.css, drop legacy sidebar CSS, drop duplicate
:root