Skip to content

Overview

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.

DecisionValueDate
Target branchjmpicnic/component-consolidation off HEAD of jmpicnic/list-view-management-6202026-03-19
Integration methodManual file-by-file (no git merge)2026-03-19
Overlap resolutionCase-by-case semantic analysis per file2026-03-19
Pre-push gatenpm run lint, npx tsc --noEmit, npm run test must pass2026-03-19
CHANGELOG versionDeferred — evaluate against main CHANGELOG after completion2026-03-19
DecisionValueDate
cn() utility path@/types/canary/utils (NOT @/utils)2026-03-19
cn() import rewrite38+ files in worktree need @/utils@/types/canary/utils2026-03-19
use-mobile.ts hookGoes under src/types/canary/hooks/2026-03-19
DecisionValueDate
Stock shadcn/ui componentssrc/components/canary/primitives/ (peer of atoms/)2026-03-19
Custom shadcn-derived componentssrc/components/canary/atoms/ (first-class, with stories/tests)2026-03-19
Primitives not exportedInternal use only, not in canary.ts barrel2026-03-19
DecisionValueDate
canary.tsUnion of both branches minus ArdaDetailField, plus all worktree additions2026-03-19
extras.tsIdentical in both branches, no changes needed2026-03-19
index.tsIdentical in both branches, no changes needed2026-03-19
ArdaDetailFieldDrop from exports and delete underlying files; replaced by ReadOnlyField2026-03-19
ArdaBadge collisionAcceptable — canary and extras have different import paths; canary version is canonical long-term; extras version must not be used outside **/extras/** paths2026-03-19
DecisionValueDate
globals.cssWorktree version replaces main clone (Arda orange palette)2026-03-19
tokens.cssKept as separate file, updated to Arda orange, becomes single source of truth2026-03-19
globals.css ↔ tokens.cssglobals.css refactored to @import tokens.css (no duplicate values)2026-03-19
Legacy sidebar CSSDropped (canary sidebar organism replaces it)2026-03-19
sonner.tsx + next-themesDropped (dead code, Next.js-specific)2026-03-19
DecisionValueDate
Keep (production dep)radix-ui — bundled, replaces @radix-ui/react-tooltip2026-03-19
Keep (devDependency)@reduxjs/toolkit, react-redux, redux-persist, sonner2026-03-19
Dropnext-themes, react-icons, shadcn, pako, qr-scanner, react-dropzone2026-03-19
Conditional@storybook/addon-links (verify no linkTo usage first)2026-03-19
Remove@radix-ui/react-tooltip — superseded by radix-ui2026-03-19
No promotions neededAll devDependencies correctly classified (none reach published entry points)2026-03-19
DecisionValueDate
Shim statusDeprecated but kept in place — migration aid for ArdaGrid-based dev-witness pages2026-03-19
New codeMust use entity-data-grid directly, not the shim2026-03-19
DecisionValueDate
Extras layerFunctionally identical between branches except cn import path2026-03-19
Extras reconciliationKeep version used most, adapt other uses to match2026-03-19
DocumentTopicKey Decisions
grid-integration.mdRefactoring item-grid to use entity-data-grid as baseGap analysis complete; 5 open design questions under recall key grid-integration
primitives.mdWhere shadcn/ui primitives live in canary hierarchyOption A accepted: canary/primitives/ as peer of atoms/; includes organism import mapping
styles.mdglobals.css, tokens.css consolidation and dependency cleanupWorktree palette canonical; tokens.css inverted dependency; sonner.tsx + next-themes dropped
dependencies.mdNew npm dependencies evaluationPer-dependency keep/drop recommendations
test-coverage.mdStories, tests, VRT needed for consolidated componentsGap analysis + phased strategy aligned with implementation steps
canary-refactor.mdRole of src/canary-refactor/ in consolidationValidation harness, adapted after consolidation (not during)

All five open questions from grid-integration.md are resolved:

  1. Auto-publish lifecycle — Promote into entity-data-grid. Row-auto-publish is the only editing mode; cell-granular onEntityUpdated is replaced.
  2. Select vs Enum editor — Callil’s SelectCellEditor replaces jmpicnic’s EnumCellEditor. Promoted to canary atom with generalized options format.
  3. Pagination approach — Support both server-driven and client-side via a StaticConfig (design-time) property on the factory config.
  4. Actions column — Item-grid’s actionsColumn ColDef pattern. InitConfig (mount-time) property for future user/tenant configurability. Shim’s RowAction[] dropped.
  5. 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