@ucdjs/release-scripts 0.1.0-beta.56 → 0.1.0-beta.58

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.
Files changed (2) hide show
  1. package/dist/index.mjs +74 -40
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -466,7 +466,6 @@ const DEFAULT_CHANGELOG_TEMPLATE = dedent`
466
466
  <% } else { -%>
467
467
  ## <%= it.version %> (<%= it.date %>)
468
468
  <% } %>
469
-
470
469
  <% let hasCommits = false; %>
471
470
 
472
471
  <% it.groups.forEach((group) => { %>
@@ -483,10 +482,9 @@ const DEFAULT_CHANGELOG_TEMPLATE = dedent`
483
482
  <% }); %>
484
483
 
485
484
  <% if (!hasCommits) { %>
485
+ *No significant changes*
486
486
 
487
- ### Notes
488
-
489
- * No significant commits in this release.
487
+ ##### &nbsp;&nbsp;&nbsp;&nbsp;[View changes on GitHub](<%= it.compareUrl %>)
490
488
  <% } %>
491
489
  `;
492
490
  const DEFAULT_TYPES = {
@@ -1366,6 +1364,23 @@ async function selectVersionPrompt(workspaceRoot, pkg, currentVersion, suggested
1366
1364
  if (prereleaseVersion) return prereleaseVersion;
1367
1365
  return getNextVersion(pkg.version, answers.version);
1368
1366
  }
1367
+ async function confirmOverridePrompt(pkg, overrideVersion) {
1368
+ const response = await prompts({
1369
+ type: "select",
1370
+ name: "choice",
1371
+ message: `${pkg.name}: use override version ${farver.bold(overrideVersion)}?`,
1372
+ choices: [{
1373
+ title: "use override",
1374
+ value: "use"
1375
+ }, {
1376
+ title: "pick another version",
1377
+ value: "pick"
1378
+ }],
1379
+ initial: 0
1380
+ });
1381
+ if (!response.choice) return null;
1382
+ return response.choice;
1383
+ }
1369
1384
 
1370
1385
  //#endregion
1371
1386
  //#region src/core/workspace.ts
@@ -1872,12 +1887,6 @@ async function calculateVersionUpdates({ workspacePackages, packageCommits, work
1872
1887
  const processedPackages = /* @__PURE__ */ new Set();
1873
1888
  const newOverrides = { ...initialOverrides };
1874
1889
  const excludedPackages = /* @__PURE__ */ new Set();
1875
- const bumpRanks = {
1876
- major: 3,
1877
- minor: 2,
1878
- patch: 1,
1879
- none: 0
1880
- };
1881
1890
  logger.verbose(`Starting version inference for ${packageCommits.size} packages with commits`);
1882
1891
  for (const [pkgName, pkgCommits] of packageCommits) {
1883
1892
  const pkg = workspacePackages.find((p) => p.name === pkgName);
@@ -1893,35 +1902,50 @@ async function calculateVersionUpdates({ workspacePackages, packageCommits, work
1893
1902
  const effectiveBump = override?.type || determinedBump;
1894
1903
  const canPrompt = !isCI && showPrompt;
1895
1904
  if (effectiveBump === "none" && !canPrompt) continue;
1896
- let newVersion = override?.version || getNextVersion(pkg.version, effectiveBump);
1905
+ const autoVersion = getNextVersion(pkg.version, determinedBump);
1906
+ let newVersion = override?.version || autoVersion;
1897
1907
  let finalBumpType = effectiveBump;
1898
1908
  if (canPrompt) {
1899
1909
  logger.clearScreen();
1900
1910
  logger.section(`📝 Commits for ${farver.cyan(pkg.name)}`);
1901
1911
  formatCommitsForDisplay(allCommitsForPackage).split("\n").forEach((line) => logger.item(line));
1912
+ logger.item(farver.dim(`Auto bump: ${determinedBump} → ${autoVersion}`));
1902
1913
  logger.emptyLine();
1914
+ if (override) {
1915
+ const overrideChoice = await confirmOverridePrompt(pkg, override.version);
1916
+ if (overrideChoice === null) continue;
1917
+ if (overrideChoice === "use") {
1918
+ newOverrides[pkgName] = {
1919
+ type: override.type,
1920
+ version: override.version
1921
+ };
1922
+ if (override.version === pkg.version) excludedPackages.add(pkgName);
1923
+ versionUpdates.push({
1924
+ package: pkg,
1925
+ currentVersion: pkg.version,
1926
+ newVersion: override.version,
1927
+ bumpType: override.type,
1928
+ hasDirectChanges: allCommitsForPackage.length > 0,
1929
+ changeKind: override.version === pkg.version ? "as-is" : "manual"
1930
+ });
1931
+ continue;
1932
+ }
1933
+ newVersion = autoVersion;
1934
+ }
1903
1935
  const selectedVersion = await selectVersionPrompt(workspaceRoot, pkg, pkg.version, newVersion, {
1904
1936
  defaultChoice: override ? "suggested" : "auto",
1905
- suggestedHint: override ? "from override" : void 0
1937
+ suggestedHint: `auto: ${determinedBump} ${autoVersion}`
1906
1938
  });
1907
1939
  if (selectedVersion === null) continue;
1908
1940
  const userBump = calculateBumpType(pkg.version, selectedVersion);
1909
1941
  finalBumpType = userBump;
1910
1942
  if (selectedVersion === pkg.version) {
1911
1943
  excludedPackages.add(pkgName);
1912
- if (determinedBump !== "none") {
1913
- const nextOverride = {
1914
- type: "none",
1915
- version: pkg.version
1916
- };
1917
- if (!override || override.type !== nextOverride.type || override.version !== nextOverride.version) {
1918
- newOverrides[pkgName] = nextOverride;
1919
- logger.info(`Override set for ${pkgName}: suggested as-is (${pkg.version}) from auto ${determinedBump}`);
1920
- }
1921
- } else if (newOverrides[pkgName]) {
1922
- delete newOverrides[pkgName];
1923
- logger.info(`Override cleared for ${pkgName}.`);
1924
- }
1944
+ newOverrides[pkgName] = {
1945
+ type: "none",
1946
+ version: pkg.version
1947
+ };
1948
+ logger.info(`Override set for ${pkgName}: manual as-is (${pkg.version})`);
1925
1949
  versionUpdates.push({
1926
1950
  package: pkg,
1927
1951
  currentVersion: pkg.version,
@@ -1932,19 +1956,11 @@ async function calculateVersionUpdates({ workspacePackages, packageCommits, work
1932
1956
  });
1933
1957
  continue;
1934
1958
  }
1935
- if (bumpRanks[userBump] < bumpRanks[determinedBump]) {
1936
- const nextOverride = {
1937
- type: userBump,
1938
- version: selectedVersion
1939
- };
1940
- if (!override || override.type !== nextOverride.type || override.version !== nextOverride.version) {
1941
- newOverrides[pkgName] = nextOverride;
1942
- logger.info(`Override set for ${pkgName}: suggested ${userBump} (${selectedVersion}) from auto ${determinedBump}`);
1943
- }
1944
- } else if (newOverrides[pkgName] && bumpRanks[userBump] >= bumpRanks[determinedBump]) {
1945
- delete newOverrides[pkgName];
1946
- logger.info(`Override cleared for ${pkgName}.`);
1947
- }
1959
+ newOverrides[pkgName] = {
1960
+ type: userBump,
1961
+ version: selectedVersion
1962
+ };
1963
+ logger.info(`Override set for ${pkgName}: manual ${userBump} (${selectedVersion})`);
1948
1964
  newVersion = selectedVersion;
1949
1965
  }
1950
1966
  versionUpdates.push({
@@ -1961,13 +1977,27 @@ async function calculateVersionUpdates({ workspacePackages, packageCommits, work
1961
1977
  logger.clearScreen();
1962
1978
  logger.section(`📦 Package: ${pkg.name}`);
1963
1979
  logger.item("No direct commits found");
1964
- const newVersion = await selectVersionPrompt(workspaceRoot, pkg, pkg.version, pkg.version);
1980
+ logger.item(farver.dim(`Auto bump: none ${pkg.version}`));
1981
+ const newVersion = await selectVersionPrompt(workspaceRoot, pkg, pkg.version, pkg.version, {
1982
+ defaultChoice: "auto",
1983
+ suggestedHint: `auto: none → ${pkg.version}`
1984
+ });
1965
1985
  if (newVersion === null) break;
1966
1986
  if (newVersion === pkg.version) {
1967
1987
  excludedPackages.add(pkg.name);
1988
+ newOverrides[pkg.name] = {
1989
+ type: "none",
1990
+ version: pkg.version
1991
+ };
1992
+ logger.info(`Override set for ${pkg.name}: manual as-is (${pkg.version})`);
1968
1993
  continue;
1969
1994
  }
1970
1995
  const bumpType = calculateBumpType(pkg.version, newVersion);
1996
+ newOverrides[pkg.name] = {
1997
+ type: bumpType,
1998
+ version: newVersion
1999
+ };
2000
+ logger.info(`Override set for ${pkg.name}: manual ${bumpType} (${newVersion})`);
1971
2001
  versionUpdates.push({
1972
2002
  package: pkg,
1973
2003
  currentVersion: pkg.version,
@@ -2070,10 +2100,12 @@ async function calculateUpdates(options) {
2070
2100
  overrides
2071
2101
  }));
2072
2102
  } catch (error) {
2103
+ const formatted = formatUnknownError(error);
2073
2104
  return err({
2074
2105
  type: "git",
2075
2106
  operation: "calculateUpdates",
2076
- message: error instanceof Error ? error.message : String(error)
2107
+ message: formatted.message,
2108
+ stderr: formatted.stderr
2077
2109
  });
2078
2110
  }
2079
2111
  }
@@ -2429,6 +2461,8 @@ async function getReleaseBodyFromChangelog(workspaceRoot, packageName, packagePa
2429
2461
  "",
2430
2462
  `Expected version ${version} in ${changelogPath}.`
2431
2463
  ].join("\n");
2464
+ const lines = entry.content.trim().split("\n");
2465
+ if (lines[0]?.trim().startsWith("## ")) return lines.slice(1).join("\n").trim();
2432
2466
  return entry.content.trim();
2433
2467
  } catch {
2434
2468
  logger.verbose(`Could not read changelog entry for ${version} at ${changelogPath}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ucdjs/release-scripts",
3
- "version": "0.1.0-beta.56",
3
+ "version": "0.1.0-beta.58",
4
4
  "description": "@ucdjs release scripts",
5
5
  "type": "module",
6
6
  "license": "MIT",