Back to Plate

sync shadcn button hover micro merge

docs/plans/2026-06-02-sync-shadcn-button-hover-micro-merge.md

53.0.813.0 KB
Original Source

sync shadcn button hover micro merge

Objective: Apply the upstream shadcn Button secondary hover micro-overlap fix to Plate, record it in sync-shadcn plan/status, and verify with focused checks plus Browser.

Flow mode: planning mode with micro-overlap direct merge exception. The Button row qualifies because it is one local copied primitive file, one class-token change, no route/data/dependency/generated output, and no product judgment.

Goal plan: docs/plans/2026-06-02-sync-shadcn-button-hover-micro-merge.md

Primary template: docs/plans/templates/sync-shadcn.md

Applied packs:

  • browser: apps/www visible component changed

Sync source:

  • upstream repo: shadcn-ui/ui
  • upstream clone: ../shadcn
  • upstream app: ../shadcn/apps/v4
  • Plate docs app: apps/www
  • durable state: docs/sync/shadcn/status.json
  • durable policy: docs/sync/shadcn/decisions.md
  • run artifacts: docs/sync/shadcn/runs/2026-06-02-4a4dc8e-to-cd54e09/

Completion threshold: Complete when apps/www/src/components/ui/button.tsx uses upstream's color-mix secondary hover class, the micro auto-merge is recorded in docs/sync/shadcn/runs/2026-06-02-4a4dc8e-to-cd54e09/plan.md, inventory.md, classification-summary.json, and status.json, focused lint and typecheck pass, Browser proof runs on a visible route, and node .agents/skills/autogoal/scripts/check-complete.mjs docs/plans/2026-06-02-sync-shadcn-button-hover-micro-merge.md passes.

Verification surface:

  • Upstream focused diff for apps/v4/styles/*/ui/button.tsx.
  • Plate source audit of apps/www/src/components/ui/button.tsx.
  • pnpm --filter www exec eslint src/components/ui/button.tsx --fix.
  • pnpm --filter www typecheck.
  • Browser proof against the local docs app.
  • Status JSON parse and partial sync semantics.

Constraints:

  • Do not run build:registry.
  • Do not change package/lockfile.
  • Do not advance lastSyncedCommit.
  • Do not pull upstream style variants/generated output; only the shared Plate Button class fix.

Boundaries: Allowed edits: apps/www/src/components/ui/button.tsx, docs/sync/shadcn/runs/2026-06-02-4a4dc8e-to-cd54e09/plan.md, docs/sync/shadcn/runs/2026-06-02-4a4dc8e-to-cd54e09/inventory.md, docs/sync/shadcn/runs/2026-06-02-4a4dc8e-to-cd54e09/classification-summary.json, docs/sync/shadcn/status.json, and this goal plan.

Output budget strategy: Use focused source/diff reads only. No patch artifacts.

Blocked condition: No blocker.

Sync state:

  • base commit: 4a4dc8eb0fc793d8e9225e780183ad605f15d2c2
  • previous planned commit: efdec3ca4523e5edd8a714f633002a7addc203a1
  • target commit: cd54e0927f3853a777f700a0bbf34507cf697b9c
  • range kind: micro-overlap partial sync
  • run directory: docs/sync/shadcn/runs/2026-06-02-4a4dc8e-to-cd54e09
  • planning status: micro-merge implemented
  • implementation status: done for Button only
  • user review status: remaining non-micro slices still need review
  • baseline status: lastSyncedCommit unchanged

Current verdict:

  • verdict: micro-overlap merge applied
  • confidence: high
  • recommended next owner: sync-shadcn for remaining non-micro slices
  • reason: Button fix is one copied primitive class-token change; larger package/registry/docs slices remain review-gated

Completion rule: Do not close until Browser proof and autogoal check pass.

Start Gates:

GateAppliesEvidence
autogoal loaded and active goal checked/createdyesActive goal created for Button hover micro merge.
sync-shadcn skill/rule readyesMicro-overlap direct merge exception from repaired rule used.
Output budget strategy recorded before broad upstream commandsyesFocused Button diff only; no broad patch.
docs/sync/shadcn/status.json readyesExisting baseline/plan/partial syncs inspected.
docs/sync/shadcn/decisions.md readyesSettled exclusions from prior run remain in force; no product surface changed.
Prior migration plans/solution notes checkedyesMemory and existing latest plan used; not a new broad scan.
../shadcn clone exists and was fetched/pulled intentionallyyesExisting latest run target cd54e0927f3853a777f700a0bbf34507cf697b9c used; no new upstream target required.
Base and target refs resolved to exact SHAsyesBase 4a4dc8eb0fc793d8e9225e780183ad605f15d2c2; target cd54e0927f3853a777f700a0bbf34507cf697b9c.
Base ancestry or ref problem provenyesProven in existing latest plan; this run uses that run artifact.
Planning-only vs implementation mode decidedyesPlanning with micro-overlap direct merge exception.
User-review boundary recordedyesNon-micro slices remain review-gated in docs/sync/shadcn/runs/2026-06-02-4a4dc8e-to-cd54e09/plan.md.

Work Checklist:

  • Objective, threshold, verification surface, constraints, boundaries, and blocked condition are filled from the active goal.
  • Upstream range recorded with exact base SHA, target SHA, commit dates, and target subject.
  • Run directory reused under docs/sync/shadcn/runs/.
  • Complete upstream inventories already saved: upstream-name-status.tsv, upstream-numstat.tsv, and upstream-commits.txt.
  • Focused Button diff inspected and summarized; no .patch files were written into the repo.
  • Visual screenshots are N/A for pre-plan comparison; Browser route proof is used for touched visible component.
  • Every changed upstream apps/v4 row remains classified in inventory.md; Button source rows updated to smart-merge.
  • Decision counts reconcile to the upstream TSV row count.
  • Added, modified, and deleted groups are summarized with actionable rows separated from exclusions/no-ops.
  • Recommended merge slices are ordered and include class, files, why, and verification.
  • Micro-overlap direct merge is recorded with upstream file, Plate file, change, why direct, and verification.
  • Settled exclusions and Plate forks are recorded with policy evidence.
  • Real needs-question rows remain isolated; settled policy is not re-asked.
  • docs/sync/shadcn/status.json update semantics are recorded: partial sync added, lastSyncedCommit unchanged.
  • Planning-mode final handoff will list the micro auto-merge and keep remaining slices review-gated.
  • Workspace authority recorded for each verification command or artifact.
  • Output budget discipline followed; large evidence stayed in artifacts.
  • Final handoff shape is filled before closeout.

Completion Gates:

GateAppliesRequired actionEvidence
Named verification thresholdyesProve Button class, sync artifacts, lint/typecheck/browserSource updated; lint/typecheck passed; Browser proof passed on http://localhost:3003/docs/installation/plate-ui.
Upstream range artifacts existyesVerify existing run artifacts are non-emptyExisting latest run artifacts remain present; row count checked in prior plan.
Inventory completenessyesReconcile inventory row count with upstream TSVSummary remains 790 rows; decision counts total 790.
Decision accountingyesVerify decision counts cover every upstream rowUpdated counts: adopt 1, smart-merge 31, plate-fork 14, exclude 616, no-op 126, needs-question 2.
Status JSON parse and semanticsyesParse status and verify synced baseline unchangedFinal parse command verifies lastSyncedCommit is unchanged and latest partialSyncs entry records Browser proof.
Source-backed Plate mappingyesRecord upstream Button source rows and Plate owner pathapps/v4/styles/*/ui/button.tsx -> apps/www/src/components/ui/button.tsx.
Visual comparison screenshotsnoFull visual comparison not needed for one hover classN/A: browser smoke proof is enough.
Planning-only no implementation editsyesRecord qualifying micro-overlap direct mergeButton hover class is recorded as micro auto-merge.
Accepted implementation verificationyesRun focused checks for touched Plate surfaceeslint and typecheck passed; browser pending.
Browser surface changedyesCapture browser proof on visible routeBrowser proof: 14 rendered Button slots, 5 secondary variants with the new color-mix hover class, and no console warnings/errors on http://localhost:3003/docs/installation/plate-ui.
Package manifests, lockfile, or install graph changednoNo package/lock touchedN/A.
Agent rules or skills changednoNo agent files touched in this runN/A.
CI-controlled generated outputyesVerify no generated registry/template output manually editedNo generated registry/template output touched.
Baseline advancementyesKeep synced baseline unchangedlastSyncedCommit unchanged; partial sync added.
User review boundaryyesKeep remaining non-micro slices review-gatedPlan still recommends larger slices for review.
Output budget disciplineyesBroad output artifacted/cappedNo patch artifacts; focused reads only.
Goal plan completeyesRun completion checkernode .agents/skills/autogoal/scripts/check-complete.mjs docs/plans/2026-06-02-sync-shadcn-button-hover-micro-merge.md passed.

Phase / pass table:

PhaseStatusEvidenceNext
Intake and baseline readdonelatest plan/status readcomplete
Upstream range evidencedoneexisting latest run artifacts reusedcomplete
Classification and local mappingdoneButton rows mapped to Plate Buttoncomplete
Plan artifact and status updatedoneplan/inventory/summary/status updatedcomplete
User review stopdoneremaining slices review-gatedcomplete
Accepted implementationdonemicro direct merge implementedcomplete
Verification and baseline decisiondoneeslint/typecheck passed; Browser proof passed; status parse/checker passedcomplete
Closeoutdonefinal response after checkercomplete

Decision counts:

DecisionCountNotes
adopt-upstream1shadcn package bump audit remains pending.
smart-merge31Includes 16 Button source style rows micro-merged into Plate Button.
plate-fork14Plate-owned docs/home/sidebar surfaces.
exclude-upstream616Rhea/create/theme/home cards/generated adds/shadcn release content.
delete-plate-residue0No deletion slice.
no-op126Generated/upstream-only style output not manually synced.
needs-question2/r/registries.json route and directory content.

Recommended merge slices:

OrderSliceClassFilesWhyVerification
1Button secondary hover micro-mergesmart-mergeapps/www/src/components/ui/button.tsxOne copied primitive class-token fix from upstream.eslint, typecheck, browser proof.
2shadcn 4.10.0 package/registry contract auditadopt-upstreamapps/www/package.json, lockfileBigger non-micro slice remains review-gated.Future accepted run.

Questions:

  • N/A for Button. Existing registry-directory question remains in the latest plan.

Findings:

  • The upstream Button source style rows were misclassified as no-op in the first latest plan; they overlap Plate's copied Button primitive and now classify as smart-merge.

Decisions and tradeoffs:

  • Pull the color-mix hover class only. Do not pull upstream style variants or generated registry JSON.

Error attempts:

Error / failed attemptCountNext different moveResolution
Script quoting failed while updating artifacts1Use line-based rewrite instead of regex-with-backticksFixed; artifacts written.

Verification evidence:

  • pnpm --filter www exec eslint src/components/ui/button.tsx --fix passed.
  • pnpm --filter www typecheck passed, including docs source parity and registry source checks.
  • Browser proof on http://localhost:3003/docs/installation/plate-ui passed: 14 rendered Button slots, 5 secondary variants with the new color-mix hover class, and no console warnings/errors.

Final handoff:

  • Range: 4a4dc8e..cd54e09
  • Plan artifact: docs/sync/shadcn/runs/2026-06-02-4a4dc8e-to-cd54e09/plan.md
  • Inventory artifact: docs/sync/shadcn/runs/2026-06-02-4a4dc8e-to-cd54e09/inventory.md
  • Decision counts: updated, total 790
  • Micro auto-merges: Button secondary hover class
  • Recommended first slice: remaining non-micro slice is [email protected] package/registry contract audit
  • Review request: remaining slices still need review before implementation
  • Question: N/A for Button
  • Status JSON: partial sync added, baseline unchanged
  • Verification: eslint/typecheck/Browser/status parse/check-complete
  • Baseline: unchanged

Timeline:

  • 2026-06-02 Created micro-merge goal plan and applied Button hover class.

Reboot status:

QuestionAnswer
Where am I?Button micro-merge implemented and verified.
Where am I going?Closeout.
What is the goal?Apply and verify Button secondary hover micro-overlap fix.

Open risks: None for the Button micro-merge; larger non-micro shadcn slices remain review-gated.