@shivaedev/changesets 0.1.0 → 0.1.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.1 - 2026-10-18
4
+
5
+ ### Fixed
6
+
7
+ - Validate an in-progress merge against all incoming parents, including octopus merges, so releases already on main pass the commit hook while edits to released history still fail.
8
+
3
9
  ## 0.1.0 - 2026-10-18
4
10
 
5
11
  ### Added
@@ -1 +1 @@
1
- {"version":3,"file":"readHistory.d.ts","sourceRoot":"","sources":["../src/readHistory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAW,cAAc,EAAE,MAAM,WAAW,CAAC;AAOpD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;yBA0BtB,CAAC"}
1
+ {"version":3,"file":"readHistory.d.ts","sourceRoot":"","sources":["../src/readHistory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAW,cAAc,EAAE,MAAM,WAAW,CAAC;AAOpD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;yBA4BtB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { execFileSync, spawnSync } from "node:child_process";
2
+ import { existsSync, readFileSync } from "node:fs";
2
3
  import { posix } from "node:path";
3
4
  import { Effect, Schema } from "effect";
4
5
  import { attempt, ChangesetError } from "#error.ts";
@@ -9,8 +10,10 @@ function git(root, args) {
9
10
  }
10
11
  export const readHistory = Effect.fn("Changesets.readHistory")(function* (root, config, reference) {
11
12
  const base = yield* attempt(() => {
13
+ const mergeHead = git(root, ["rev-parse", "--path-format=absolute", "--git-path", "MERGE_HEAD"]).trim();
14
+ const heads = ["HEAD", ...(existsSync(mergeHead) ? readFileSync(mergeHead, "utf8").trim().split("\n") : [])];
12
15
  for (const candidate of reference === undefined ? ["origin/main", "main"] : [reference]) {
13
- const result = spawnSync("git", ["-C", root, "merge-base", candidate, "HEAD"], { encoding: "utf8" });
16
+ const result = spawnSync("git", ["-C", root, "merge-base", candidate, ...heads], { encoding: "utf8" });
14
17
  if (result.status === 0) {
15
18
  return result.stdout.trim();
16
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"readHistory.js","sourceRoot":"","sources":["../src/readHistory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"readHistory.js","sourceRoot":"","sources":["../src/readHistory.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shivaedev/changesets",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Explicit changesets and reproducible workspace releases with Effect",
5
5
  "homepage": "https://github.com/ShivaeDev/platform/tree/main/packages/changesets#readme",
6
6
  "bugs": {
@@ -23,47 +23,10 @@
23
23
  }
24
24
  },
25
25
  "exports": {
26
- "./applyRelease.ts": {
27
- "types": "./dist/applyRelease.d.ts",
28
- "source": "./src/applyRelease.ts",
29
- "import": "./dist/applyRelease.js",
30
- "default": "./dist/applyRelease.js"
31
- },
32
- "./check.ts": {
33
- "types": "./dist/check.d.ts",
34
- "source": "./src/check.ts",
35
- "import": "./dist/check.js",
36
- "default": "./dist/check.js"
37
- },
38
- "./planner.ts": {
39
- "types": "./dist/planner.d.ts",
40
- "source": "./src/planner.ts",
41
- "import": "./dist/planner.js",
42
- "default": "./dist/planner.js"
43
- },
44
- "./config.ts": {
45
- "types": "./dist/config.d.ts",
46
- "source": "./src/config.ts",
47
- "import": "./dist/config.js",
48
- "default": "./dist/config.js"
49
- },
50
- "./parser.ts": {
51
- "types": "./dist/parser.d.ts",
52
- "source": "./src/parser.ts",
53
- "import": "./dist/parser.js",
54
- "default": "./dist/parser.js"
55
- },
56
- "./error.ts": {
57
- "types": "./dist/error.d.ts",
58
- "source": "./src/error.ts",
59
- "import": "./dist/error.js",
60
- "default": "./dist/error.js"
61
- },
62
- "./model.ts": {
63
- "types": "./dist/model.d.ts",
64
- "source": "./src/model.ts",
65
- "import": "./dist/model.js",
66
- "default": "./dist/model.js"
26
+ "./*.ts": {
27
+ "source": "./src/*.ts",
28
+ "types": "./dist/*.d.ts",
29
+ "default": "./dist/*.js"
67
30
  },
68
31
  "./package.json": "./package.json"
69
32
  },
@@ -76,7 +39,6 @@
76
39
  "!src/**/*.test.ts",
77
40
  "!src/**/*.spec.ts",
78
41
  "!src/**/test-support",
79
- "docs",
80
42
  "CHANGELOG.md",
81
43
  "README.md"
82
44
  ],
@@ -84,14 +46,13 @@
84
46
  "@effect/platform-node": "4.0.4",
85
47
  "@effect/platform-node-shared": "4.0.4",
86
48
  "@effect/vitest": "4.0.4",
87
- "@shivaedev/effect-test": "0.5.0",
88
- "@shivaedev/quality": "0.23.0",
89
- "@shivaedev/test-story": "0.5.0",
49
+ "@shivaedev/effect-test": "0.6.0",
50
+ "@shivaedev/quality": "0.26.0",
51
+ "@shivaedev/test-story": "0.8.0",
90
52
  "@types/node": "24.19.2",
91
- "@typescript/native": "npm:typescript@7.0.2",
92
53
  "effect": "4.0.4",
93
54
  "happy-dom": "20.14.6",
94
- "typescript": "npm:@typescript/typescript6@6.0.2",
55
+ "typescript": "7.0.2",
95
56
  "vitest": "5.0.3"
96
57
  },
97
58
  "peerDependencies": {
@@ -1,4 +1,5 @@
1
1
  import { execFileSync, spawnSync } from "node:child_process";
2
+ import { existsSync, readFileSync } from "node:fs";
2
3
  import { posix } from "node:path";
3
4
  import { Effect, Schema } from "effect";
4
5
  import type { ChangesetConfig } from "#config.ts";
@@ -11,8 +12,10 @@ function git(root: string, args: readonly string[]): string {
11
12
  }
12
13
  export const readHistory = Effect.fn("Changesets.readHistory")(function* (root: string, config: ChangesetConfig, reference?: string) {
13
14
  const base = yield* attempt(() => {
15
+ const mergeHead = git(root, ["rev-parse", "--path-format=absolute", "--git-path", "MERGE_HEAD"]).trim();
16
+ const heads = ["HEAD", ...(existsSync(mergeHead) ? readFileSync(mergeHead, "utf8").trim().split("\n") : [])];
14
17
  for (const candidate of reference === undefined ? ["origin/main", "main"] : [reference]) {
15
- const result = spawnSync("git", ["-C", root, "merge-base", candidate, "HEAD"], { encoding: "utf8" });
18
+ const result = spawnSync("git", ["-C", root, "merge-base", candidate, ...heads], { encoding: "utf8" });
16
19
  if (result.status === 0) {
17
20
  return result.stdout.trim();
18
21
  }
@@ -1,7 +0,0 @@
1
- # Reproducible workspace releases
2
-
3
- A release should preserve what its authors asked for. A changeset names packages, explicit bumps and human release notes. One plan includes the highest requested bumps and every published dependent that must ship with them. Applying that plan produces a diff a maintainer can review without reconstructing intermediate commits.
4
-
5
- The release manifest preserves filenames and exact source text. Validation reproduces versions and changelog entries from those inputs and protects already released history. Files added after collection stay pending. A squash merge does not discard the evidence needed to validate a release.
6
-
7
- Explicit intent wins over inference, and preserving history wins over convenient edits. Repository policy stays in typed Effect hooks: starter pins and embedded version constants belong to the repository that owns them. npm publishing, release scheduling and approval policy stay outside this package.
package/docs/roadmap.md DELETED
@@ -1,16 +0,0 @@
1
- # Roadmap
2
-
3
- ## Built
4
-
5
- - Flat YAML changeset mappings with explicit package bumps and grouped Markdown release-note sections.
6
- - Whole-workspace planning with transitive published dependents and the explicit pre-1.0 breaking-change rule.
7
- - Version and changelog collection, reproducible release manifests and typed Effect hooks.
8
- - CLI stories over temporary Git workspaces for planning, apply and validation failures.
9
-
10
- ## Next
11
-
12
- - Adopt this package in the platform repository's authoring and release commands, replacing its package-local fragments.
13
-
14
- ## Open questions
15
-
16
- - Prerelease and release-channel policy remain outside the stable-version planner.