@marktiderman/genesis 0.2.2 → 0.2.3
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.
- package/README.md +53 -0
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -28,3 +28,56 @@ Web bundlers never pull in React Native code unless a consumer explicitly
|
|
|
28
28
|
imports `@marktiderman/genesis/native` — `react-native` is an optional peer
|
|
29
29
|
dependency. Each granular package remains independently installable as an
|
|
30
30
|
escape hatch for rare subpaths not mirrored here.
|
|
31
|
+
|
|
32
|
+
## The Genesis version coordinate
|
|
33
|
+
|
|
34
|
+
`@marktiderman/genesis`'s own version is the **single canonical coordinate for
|
|
35
|
+
the whole Genesis system** — the one number that answers "which Genesis am I
|
|
36
|
+
on?" for a consuming repo. Pin one umbrella version and the entire set is
|
|
37
|
+
determined:
|
|
38
|
+
|
|
39
|
+
- **Sub-packages.** The umbrella depends on `@marktiderman/genesis-{core,ui,
|
|
40
|
+
design-system,switchboard,ui-native}` via `workspace:*`, which pnpm replaces
|
|
41
|
+
with the **exact** published version at pack time. So `@marktiderman/genesis@X`
|
|
42
|
+
resolves one reproducible, pinned set — not a caret range that drifts. Each
|
|
43
|
+
granular package keeps its own independent semver train; the umbrella version
|
|
44
|
+
is the coordinate that names a specific combination of them.
|
|
45
|
+
- **Vendored harness.** `scripts/harness/genesis-sync.sh` stamps
|
|
46
|
+
`GENESIS_SOURCE_VERSION` in a child's `.genesis/source` from this same umbrella
|
|
47
|
+
version (`GENESIS_SOURCE_SHA` stays the precise git-HEAD pointer). So a child's
|
|
48
|
+
harness stamp and its `@marktiderman/genesis` npm pin read the **same** number.
|
|
49
|
+
- **Plugin / marketplace.** `.claude-plugin/plugin.json`'s `version` tracks the
|
|
50
|
+
umbrella coordinate, kept in lockstep by `scripts/harness/sync-plugin-version.mjs`
|
|
51
|
+
(run automatically in the release "version packages" step).
|
|
52
|
+
|
|
53
|
+
The coordinate advances whenever any pinned sub-package is released. The deciding
|
|
54
|
+
option is changesets' `updateInternalDependents` (default `"out-of-range"`) — **not**
|
|
55
|
+
`updateInternalDependencies`: because the umbrella pins each sub-package via
|
|
56
|
+
`workspace:*`, which changesets resolves to the dependency's **exact** current
|
|
57
|
+
version, any sub-package release moves that dependency out of the umbrella's pinned
|
|
58
|
+
range, so `out-of-range` pulls the umbrella into the same release plan and bumps it.
|
|
59
|
+
(`updateInternalDependencies`, default `"patch"`, only sets the resulting bump
|
|
60
|
+
_type_ once the umbrella is already in the plan — it does not decide whether the
|
|
61
|
+
umbrella is bumped.) The `workspace:*` exact pin is what makes this automatic — a
|
|
62
|
+
caret range would let a patch stay in range and skip the umbrella — so `PKG-04`
|
|
63
|
+
enforces the exact pin. The release step then re-syncs the plugin stamp. One pinned
|
|
64
|
+
umbrella version therefore means every sub-component **and** the harness is already
|
|
65
|
+
"in the system," versioned and pinned together.
|
|
66
|
+
|
|
67
|
+
Because this auto-advance rests on a changesets **default** rather than an explicit
|
|
68
|
+
config key — a top-level `updateInternalDependents` is silently ignored in changesets
|
|
69
|
+
2.30.0 (the option is read only from the `___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH`
|
|
70
|
+
namespace) — the invariant is made upgrade-safe two ways instead: `@changesets/cli` is
|
|
71
|
+
pinned to `~2.30.0` so a minor bump can't silently flip the default, and `PKG-05`
|
|
72
|
+
empirically re-asserts the umbrella auto-bump on every run (it drives changesets' own
|
|
73
|
+
release-plan assembly with a synthetic sub-package-only changeset). A future changesets
|
|
74
|
+
change that broke the coordinate would fail CI loudly instead of shipping silently.
|
|
75
|
+
|
|
76
|
+
**Caveat — the release-PR window.** The umbrella version bumps via a changesets
|
|
77
|
+
"version packages" PR, not on the feature-PR merge itself. So there is a brief,
|
|
78
|
+
transient window — feature PR merged, "version packages" PR not yet merged — where
|
|
79
|
+
`main`'s `packages/genesis/package.json` still carries the _previous_ umbrella version.
|
|
80
|
+
A child that runs `genesis-sync.sh` during that window stamps the new harness contents
|
|
81
|
+
with that previous version number. Nothing is silently lost: `GENESIS_SOURCE_SHA` (git
|
|
82
|
+
HEAD) is always exact and is the precise pointer; only the human-readable coordinate can
|
|
83
|
+
lag by one release until the "version packages" PR merges.
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marktiderman/genesis",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
7
|
-
"description": "Genesis — one-install umbrella for the Genesis
|
|
7
|
+
"description": "Genesis — one-install umbrella and single version coordinate for the Genesis system. Re-exports @marktiderman/genesis-core, -ui, -design-system, -switchboard, and -ui-native (as /native) via subpath exports and exact-pins each to a reproducible set. Holds no code of its own; each granular package remains independently installable.",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
10
|
"url": "git+https://github.com/marktiderman/genesis.git",
|
|
@@ -68,11 +68,11 @@
|
|
|
68
68
|
}
|
|
69
69
|
},
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@marktiderman/genesis-core": "
|
|
72
|
-
"@marktiderman/genesis-ui": "
|
|
73
|
-
"@marktiderman/genesis-design-system": "
|
|
74
|
-
"@marktiderman/genesis-switchboard": "
|
|
75
|
-
"@marktiderman/genesis-ui-native": "
|
|
71
|
+
"@marktiderman/genesis-core": "1.0.0",
|
|
72
|
+
"@marktiderman/genesis-ui": "1.1.1",
|
|
73
|
+
"@marktiderman/genesis-design-system": "1.0.0",
|
|
74
|
+
"@marktiderman/genesis-switchboard": "1.0.0",
|
|
75
|
+
"@marktiderman/genesis-ui-native": "2.0.0"
|
|
76
76
|
},
|
|
77
77
|
"peerDependencies": {
|
|
78
78
|
"react": "^19.0.0",
|