Sunset VueForge: extract it to its own repository and remove it here - #19
Merged
Merged
Conversation
VueForge is no longer developed. Its eight packages -- core, layouts, icons, theme, codeblock, playground, playground-core, playground-vite-plugin -- moved to codemonster-ru/vueforge with their commit history intact via git subtree split, the same mechanism this repo already used to split packages/razor into codemonster-ru/ui-razor. That repository's tooling was verified independently: install, build, lint, typecheck, and test all pass for all eight packages before anything was removed here. Two packages (vueforge-layouts, vueforge-icons) carry only 1-2 commits of history in the new repo rather than their full history, because they were renamed this week to free their names for CodeMonster UI's own packages, and git subtree split does not follow a rename across differently-named prefixes. The fuller history is not lost -- it stays in this repository's own git log -- it just is not linear in the new repository. What left the working tree, and why each piece is safe to remove: - The eight package directories and examples/vue, the frozen VueForge showcase pinned to commit fd79369. That showcase was the proof that CodeMonster UI reproduced VueForge pixel for pixel; the migration it proved is complete and permanent, so continuing to rebuild and compare against it forever protects nothing further. - The whole migration apparatus: migration/*.json, the codemod, and the vueforge-baseline/mapping/coverage checkers. It answered "does the migration map state what actually happened," a question that stops needing an answer once there is no more migrating to do. - Six completed verification records under docs/verification/ and the whole docs/design-audit/ directory -- VueForge's own phase-by-phase design-system audit trail, unrelated to the CodeMonster migration specifically. All of it is marked Complete or dated, historical, and self-contained; nothing living referenced any of it. - docs/core, docs/layouts, docs/icons, docs/codeblock, docs/playground, and the 1.x-to-2.x migration guide moved to the new repository instead of being deleted, on the same reasoning already used for the packages: documentation for a product belongs with the product. What stayed, on purpose, because it protects something real rather than something historical: - visual-baselines/vueforge-cross-platform and packages/tokens/parity/ vueforge-2-token-parity.json. Both are committed data whose pixels or values were captured once from VueForge, and both are still the live baseline the Vue and Razor adapters are compared against today -- proving the two platforms agree with each other, not with VueForge. Their provenance stays named honestly; nothing about what they protect depended on VueForge staying in this repository. - check:consumer-tree-shaking's forbidden-output markers and validateNoVueForgeImports in code-monster-ui-package-contracts.mjs. Both guard against a CodeMonster bundle accidentally retaining VueForge internals. That risk does not disappear because the packages are uninstalled right now -- it reappears the moment anyone reintroduces the dependency. Three real bugs surfaced along the way, none of them about VueForge: - package.json's verify script was missing "npm run " before its first step, a mechanical slip from an earlier edit this session that would have made every future `npm run verify` fail outright. - The check:frozen-showcase guard's own acknowledgedChanges list had gone stale, describing a path that no longer differed -- caught by the staleness check built into the guard itself. - component-palette-contract.spec.ts hardcoded 'layouts/src' as VueForge core's sibling to scan for color literals. On this repository's own main branch that path now belongs to CodeMonster's ui-layouts, so the test had been silently checking the wrong package's CSS and passing by coincidence. Fixed in the extracted copy, since the file was about to leave this repository anyway. Two scripts (check-package-contracts.mjs, check-packed-consumer.mjs) were built entirely around the VueForge release train and became either dead code or fully redundant with an existing, independent CodeMonster-only equivalent once that train was gone; both were rewritten or removed rather than left as unreachable code. check-documentation-contracts.mjs lost roughly 400 lines of a parallel component-doc-contract system that existed only to check VueForge's own Vf* components against docs/core and docs/layouts -- CodeMonster's Cm* components already have their own, separate check. ARCHITECTURE.md described Vf*/vf- as this repository's naming convention, which had already been wrong for weeks; it now points at the actual authoritative naming document instead of duplicating a stale copy of it. Known remaining gap, unrelated to this change: check:component-documentation verifies a component name appears in the guides by substring, so CmIcon counts as documented because the string "CmIcon" appears inside "CmIconButton". CmIcon has no real documentation entry of its own. Left for a follow-up since it predates this branch and fixing it well means writing real docs, not just tightening a regex.
scripts/visual/compare-showcase.mjs imports pngjs directly and always has, but nothing in this repository declared it -- it only worked because packages/vueforge-icons declared ^7.0.0 and npm hoisted it to root node_modules. Removing that package left the import resolving to nothing on a clean install, which is exactly how CI caught it and a local npm install (as opposed to npm ci) did not: incremental installs do not prune packages whose only declaring package.json disappeared. Checked every other dependency the eight removed packages declared for the same failure mode. Ten more (shiki, the two @shikijs/* packages, resvg-js, tsup, sass, jiti, unplugin-dts, vite-plugin-lib-inject-css, @types/jsdom) were declared only by those packages and are not referenced anywhere that survives; pngjs was the only one both orphaned and still imported. Verified against a genuinely clean install this time: rm -rf node_modules, npm ci, npm run verify. The lockfile diff touches only the removed packages' entries and pngjs's new root declaration -- no shared package changed version.
compare-showcase.mjs requires an exact match on referenceCommit between the baseline manifest and the current one, for every comparison it runs, not just the removed showcase flow. The baseline (visual-baselines/vueforge-cross- platform/manifest.json) still honestly carries fd79369 as where its pixels came from, by design; the manifest capture-cross-platform-cases.mjs generates had stopped carrying that field at all when the vueforge capture mode was removed, so the two disagreed and every comparison failed before a single pixel was checked. Nothing local catches this: check:verify-coverage already declares the three visual:cross-platform:* steps CI-only, specifically because they need a pinned browser and two live servers verify cannot assume exist. Confirmed against CI's actual failure rather than guessed at, then verified the fix by running the full sequence locally with a real Chrome and a real baseline comparison -- razor-render, serve, capture, compare -- both platforms report 0 changed, 0 missing, 0 unexpected.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
VueForge is sunset — no further development. Its eight packages, with commit history intact, now live in
codemonster-ru/vueforge. This removes them, the frozen showcase they were compared against, and the migration apparatus from this repository's working tree — all three kept in this repository's own git history, per the decision behind this branch.The extraction, verified before anything was removed
git subtree spliton each of the eight package directories, assembled into a fresh repository withgit subtree add— the same mechanism this repo already uses to splitpackages/razorintocodemonster-ru/ui-razor. Before removing anything here, the new repository's install/build/lint/typecheck/test were run independently and passed for all eight packages.Two packages carry truncated history.
vueforge-layoutsandvueforge-iconswere renamed this week to free their names for CodeMonster UI's own packages, andgit subtree splitdoes not follow a rename across differently-named prefixes — so the new repo has 1-2 commits for those two instead of their full history. Nothing is lost: the fuller history stays in this repository's own log, just not linearly in the new one.Documentation moved with the code, not just the packages:
docs/core,docs/layouts,docs/icons,docs/codeblock,docs/playground, and the 1.x-to-2.x migration guide are in the new repo too, on the same reasoning already used for the packages — documentation for a product belongs with the product.What left the working tree, and why each piece is safe to lose
examples/vue, pinned tofd793696) — it proved CodeMonster UI reproduced VueForge pixel for pixel. That proof is complete and permanent; continuing to rebuild and compare against it forever protects nothing further.migration/*.json, the codemod, thevueforge-baseline/mapping/coveragecheckers) — it answered "does the migration map state what actually happened," a question that stops needing an answer once there's no more migrating to do.docs/design-audit/directory — VueForge's own phase-by-phase design audit trail, markedCompleteor dated, self-contained, referenced by nothing living.What stayed, on purpose
Two things look VueForge-shaped but protect something real, not something historical, so they're untouched:
visual-baselines/vueforge-cross-platformandpackages/tokens/parity/vueforge-2-token-parity.json— committed data captured once from VueForge, still the live baseline Vue and Razor are compared against today. That comparison proves the two current platforms agree with each other, not with VueForge; nothing about it depended on VueForge staying in this repository.Three real bugs, none of them about VueForge
package.json'sverifyscript was missingnpm runbefore its first step — a mechanical slip from an earlier edit this session that would have made every futurenpm run verifyfail outright. Caught by running it.check:frozen-showcase's ownacknowledgedChangesentry had gone stale, describing a path that no longer differed frommain— caught by the staleness check built into that guard specifically for this.component-palette-contract.spec.tshardcoded'layouts/src'as VueForge core's sibling to scan for color literals. On this repository'smainthat path now belongs to CodeMonster'sui-layouts, so the test had been silently checking the wrong package's CSS and passing by coincidence. Fixed in the extracted copy — the file was leaving this repository anyway, so fixing it here would have been fixing something about to be deleted.Scripts rewritten or removed, not left as dead code
check-package-contracts.mjsandcheck-packed-consumer.mjswere built entirely around the VueForge release train; once that train was gone they became either ~400 lines of unreachable code or fully redundant with an existing, independent CodeMonster-only equivalent. Both were trimmed or removed rather than left in place with an empty array quietly making every function inside them unreachable.check-documentation-contracts.mjslost a parallel ~400-line component-doc-contract system that existed only to check VueForge's ownVf*components againstdocs/core/docs/layouts— CodeMonster'sCm*components already have their own separate, already-working check.ARCHITECTURE.mddescribedVf*/vf-as this repository's naming convention, which had already been wrong for weeks; it now points at the actual authoritative naming document instead of carrying a stale duplicate.Known remaining gap — unrelated to this change
check:component-documentationverifies a component name appears in the guides by substring, soCmIconcounts as documented because the string"CmIcon"appears inside"CmIconButton".CmIconhas no real documentation entry of its own. Left for a follow-up: it predates this branch, and fixing it well means writing real docs, not just tightening a regex.Checks
npm run verifypasses in full.