chore: cleaned historical changelog entries and added validation to release script

- Removed historical version entries from multiple package CHANGELOG files.
- Added changelog validation functions to release script.
- Prevented creation of empty version entries in changelog generation.
This commit is contained in:
can1357
2026-01-18 21:50:00 +01:00
parent 0c86c38d4d
commit 7469166ad1
6 changed files with 19 additions and 424 deletions
-120
View File
@@ -2,44 +2,12 @@
## [Unreleased]
## [5.6.70] - 2026-01-18
## [5.6.7] - 2026-01-18
### Fixed
- Added proper tool result messages for tool calls that are aborted or error out
- Ensured tool_use/tool_result pairing is maintained when tool execution fails
## [5.5.0] - 2026-01-18
## [5.4.2] - 2026-01-16
## [5.4.0] - 2026-01-15
## [5.3.1] - 2026-01-15
## [5.3.0] - 2026-01-15
## [5.2.1] - 2026-01-14
## [5.2.0] - 2026-01-14
## [5.1.1] - 2026-01-14
## [5.1.0] - 2026-01-14
## [5.0.1] - 2026-01-12
## [5.0.0] - 2026-01-12
## [4.9.0] - 2026-01-12
## [4.8.3] - 2026-01-12
## [4.8.0] - 2026-01-12
## [4.7.0] - 2026-01-12
## [4.6.0] - 2026-01-12
### Changed
@@ -49,40 +17,12 @@
- Fixed tool result ordering in Cursor mode by buffering results and emitting them at the correct position within assistant messages
## [4.5.0] - 2026-01-12
## [4.4.9] - 2026-01-12
## [4.4.8] - 2026-01-12
## [4.4.6] - 2026-01-11
## [4.4.5] - 2026-01-11
## [4.4.4] - 2026-01-11
## [4.3.2] - 2026-01-11
## [4.3.1] - 2026-01-11
## [4.3.0] - 2026-01-11
### Added
- Added `cursorExecHandlers` and `cursorOnToolResult` options for local tool execution with cursor-based streaming
- Added `emitExternalEvent` method to allow external event injection into the agent state
## [4.2.3] - 2026-01-11
## [4.2.2] - 2026-01-11
## [4.2.1] - 2026-01-11
## [4.2.0] - 2026-01-10
## [4.1.0] - 2026-01-10
## [4.0.1] - 2026-01-10
## [4.0.0] - 2026-01-10
### Added
@@ -94,16 +34,6 @@
- `minimal` thinking level now maps to `minimal` reasoning effort instead of being treated as `low`
## [3.37.1] - 2026-01-10
## [3.37.0] - 2026-01-10
## [3.36.0] - 2026-01-10
## [3.35.0] - 2026-01-09
## [3.34.0] - 2026-01-09
## [3.33.0] - 2026-01-08
### Fixed
@@ -111,16 +41,6 @@
- Ensured aborted assistant responses always include an error message for callers.
- Filtered thinking blocks from Cerebras request context to keep multi-turn prompts compatible.
## [3.32.0] - 2026-01-08
## [3.31.0] - 2026-01-08
## [3.30.0] - 2026-01-07
## [3.25.0] - 2026-01-07
## [3.24.0] - 2026-01-07
## [3.21.0] - 2026-01-06
### Changed
@@ -132,8 +52,6 @@
- Added `sessionId` option for provider caching (e.g., OpenAI Codex session-based prompt caching)
- Added `sessionId` getter/setter on Agent class for runtime session switching
## [3.20.1] - 2026-01-06
## [3.20.0] - 2026-01-06
### Breaking Changes
@@ -150,24 +68,6 @@
- `prompt()` and `continue()` now throw when the agent is already streaming; use steering or follow-up queues instead
## [3.15.1] - 2026-01-05
## [3.15.0] - 2026-01-05
## [3.14.0] - 2026-01-04
## [3.13.1337] - 2026-01-04
## [3.9.1337] - 2026-01-04
## [3.8.1337] - 2026-01-04
## [3.7.1337] - 2026-01-04
## [3.6.1337] - 2026-01-03
## [3.5.1337] - 2026-01-03
## [3.4.1337] - 2026-01-03
### Added
@@ -179,22 +79,6 @@
- Fixed abort handling to properly return aborted message state when stream is interrupted mid-response
## [3.3.1337] - 2026-01-03
## [3.1.1337] - 2026-01-03
## [3.0.1337] - 2026-01-03
## [2.3.1337] - 2026-01-03
## [2.2.1337] - 2026-01-03
## [2.1.1337] - 2026-01-03
## [2.0.1337] - 2026-01-03
## [1.500.0] - 2026-01-03
## [1.341.0] - 2026-01-03
### Added
@@ -204,8 +88,6 @@
- Implemented "wait" mode to defer queue processing until the entire turn completes.
- Added getter and setter methods for `interruptMode` on Agent class.
## [1.338.0] - 2026-01-03
## [1.337.1] - 2026-01-02
### Changed
@@ -216,8 +98,6 @@
Initial release under @oh-my-pi scope. See previous releases at [badlogic/pi-mono](https://github.com/badlogic/pi-mono).
## [0.31.1] - 2026-01-02
## [0.31.0] - 2026-01-02
### Breaking Changes
-78
View File
@@ -2,8 +2,6 @@
## [Unreleased]
## [5.6.70] - 2026-01-18
## [5.6.7] - 2026-01-18
### Added
@@ -35,24 +33,12 @@
- Simplified Codex system prompt instructions
- Removed bridge text override from Codex system prompt builder
## [5.4.2] - 2026-01-16
## [5.4.0] - 2026-01-15
## [5.3.1] - 2026-01-15
## [5.3.0] - 2026-01-15
### Changed
- Replaced detailed Codex system instructions with simplified pi assistant instructions
- Updated internal documentation references to use pi-internal:// protocol
## [5.2.1] - 2026-01-14
## [5.2.0] - 2026-01-14
## [5.1.1] - 2026-01-14
## [5.1.0] - 2026-01-14
### Added
@@ -66,8 +52,6 @@
- Fixed Gemini CLI provider retries with proper error handling, retry delays from headers, and empty stream retry logic
- Fixed numbered list items showing "1." for all items when code blocks break list continuity (via `start` property)
## [5.0.1] - 2026-01-12
## [5.0.0] - 2026-01-12
### Added
@@ -79,14 +63,6 @@
- Changed Google thinking token budgets: minimal (1024), low (2048→4096), medium (8192), high (16384), xhigh (24575)
- Changed `supportsXhigh()` to return true for all Anthropic models
## [4.9.0] - 2026-01-12
## [4.8.3] - 2026-01-12
## [4.8.0] - 2026-01-12
## [4.7.0] - 2026-01-12
## [4.6.0] - 2026-01-12
### Fixed
@@ -94,8 +70,6 @@
- Fixed thought signature handling in Google Gemini CLI and Vertex AI streaming to properly preserve signatures across text deltas
- Fixed Google schema sanitization stripping property names that match schema keywords (e.g., "pattern", "format") from tool definitions
## [4.5.0] - 2026-01-12
## [4.4.9] - 2026-01-12
### Fixed
@@ -128,10 +102,6 @@
- Fixed Cursor todo updates to bridge update_todos tool calls to the local todo_write tool
## [4.3.2] - 2026-01-11
## [4.3.1] - 2026-01-11
## [4.3.0] - 2026-01-11
### Added
@@ -157,10 +127,6 @@
- Fixed Cursor conversation history serialization so subagents retain task context and can call complete
## [4.2.3] - 2026-01-11
## [4.2.2] - 2026-01-11
## [4.2.1] - 2026-01-11
### Changed
@@ -172,12 +138,6 @@
- Fixed Cloud Code Assist tool schema conversion to avoid unsupported `const` fields
## [4.2.0] - 2026-01-10
## [4.1.0] - 2026-01-10
## [4.0.1] - 2026-01-10
## [4.0.0] - 2026-01-10
### Added
@@ -234,29 +194,17 @@
- Enabled type coercion in JSON schema validation to automatically convert compatible types
## [3.36.0] - 2026-01-10
## [3.35.0] - 2026-01-09
### Added
- Enhanced error messages to include retry-after timing information from API rate limit headers
## [3.34.0] - 2026-01-09
## [0.42.0] - 2026-01-09
### Added
- Added OpenCode Zen provider support with 26 models (Claude, GPT, Gemini, Grok, Kimi, GLM, Qwen, etc.). Set `OPENCODE_API_KEY` env var to use.
## [0.41.0] - 2026-01-09
## [0.40.1] - 2026-01-09
## [0.40.0] - 2026-01-08
## [0.39.1] - 2026-01-08
## [0.39.0] - 2026-01-08
### Fixed
@@ -281,20 +229,12 @@
- Fixed Codex SSE error events to surface message, code, and status. ([#551](https://github.com/badlogic/pi-mono/pull/551) by [@tmustier](https://github.com/tmustier))
- Fixed context overflow detection for `context_length_exceeded` error codes.
## [0.37.8] - 2026-01-07
## [0.37.7] - 2026-01-07
## [0.37.6] - 2026-01-06
### Added
- Exported OpenAI Codex utilities: `CacheMetadata`, `getCodexInstructions`, `getModelFamily`, `ModelFamily`, `buildCodexPiBridge`, `buildCodexSystemPrompt`, `CodexSystemPrompt` ([#510](https://github.com/badlogic/pi-mono/pull/510) by [@mitsuhiko](https://github.com/mitsuhiko))
## [0.37.5] - 2026-01-06
## [0.37.4] - 2026-01-06
## [0.37.3] - 2026-01-06
### Added
@@ -307,8 +247,6 @@
- Codex provider now always includes `reasoning.encrypted_content` even when custom `include` options are passed ([#484](https://github.com/badlogic/pi-mono/pull/484) by [@kim0](https://github.com/kim0))
## [0.37.1] - 2026-01-05
## [0.37.0] - 2026-01-05
### Breaking Changes
@@ -334,26 +272,12 @@
- Vertex AI dummy value for `getEnvApiKey()`: Returns `"<authenticated>"` when Application Default Credentials are configured (`~/.config/gcloud/application_default_credentials.json` exists) and both `GOOGLE_CLOUD_PROJECT` (or `GCLOUD_PROJECT`) and `GOOGLE_CLOUD_LOCATION` are set. This allows `streamSimple()` to work with Vertex AI without explicit `apiKey` option. The ADC credentials file existence check is cached per-process to avoid repeated filesystem access.
## [0.35.0] - 2026-01-05
## [0.34.2] - 2026-01-04
## [0.34.1] - 2026-01-04
## [0.34.0] - 2026-01-04
## [0.33.0] - 2026-01-04
## [0.32.3] - 2026-01-03
### Fixed
- Google Vertex AI models no longer appear in available models list without explicit authentication. Previously, `getEnvApiKey()` returned a dummy value for `google-vertex`, causing models to show up even when Google Cloud ADC was not configured.
## [0.32.2] - 2026-01-03
## [0.32.1] - 2026-01-03
## [0.32.0] - 2026-01-03
### Added
@@ -364,8 +288,6 @@
- **Gemini CLI rate limit handling**: Added automatic retry with server-provided delay for 429 errors. Parses delay from error messages like "Your quota will reset after 39s" and waits accordingly. Falls back to exponential backoff for other transient errors. ([#370](https://github.com/badlogic/pi-mono/issues/370))
## [0.31.1] - 2026-01-02
## [0.31.0] - 2026-01-02
### Breaking Changes
-22
View File
@@ -119,10 +119,6 @@
- Improved system prompt guidance for position-addressed vs content-addressed file edits
- Enhanced edit tool documentation with clear use cases for bash alternatives
## [5.4.0] - 2026-01-15
## [5.3.1] - 2026-01-15
## [5.3.0] - 2026-01-15
### Changed
@@ -185,8 +181,6 @@
- Implemented `xhigh` thinking level for Anthropic models with increased reasoning limits
## [4.9.0] - 2026-01-12
## [4.8.3] - 2026-01-12
### Changed
@@ -229,18 +223,12 @@
- Component `invalidate()` now properly rebuilds content on theme changes
- Force full re-render after returning from external editor
## [4.5.0] - 2026-01-12
## [4.4.9] - 2026-01-12
## [4.4.8] - 2026-01-12
### Changed
- Changed review finding priority format from numeric (0-3) to string labels (P0-P3) for clearer severity indication
- Replaced Type.Union with Type.Literal patterns with StringEnum helper across tool schemas for cleaner enum definitions
## [4.4.6] - 2026-01-11
## [4.4.5] - 2026-01-11
### Changed
@@ -521,8 +509,6 @@
- Ctrl+V clipboard image paste works on Wayland sessions
- Extension directories in `settings.json` respect `package.json` manifests
## [3.37.1] - 2026-01-10
## [3.37.0] - 2026-01-10
### Changed
@@ -980,8 +966,6 @@
- Changed status line to display usage statistics more efficiently by using centralized session statistics instead of recalculating from entries
## [3.13.1337] - 2026-01-04
## [3.9.1337] - 2026-01-04
### Changed
@@ -1024,8 +1008,6 @@
- Fixed potential text decoding issues in bash executor by using streaming TextDecoder instead of Buffer.toString()
## [3.6.1337] - 2026-01-03
## [3.5.1337] - 2026-01-03
### Added
@@ -1104,10 +1086,6 @@
- Renamed environment variables from `PI_*` to `OMP_*` prefix (e.g., `OMP_SMOL_MODEL`, `OMP_SLOW_MODEL`)
- Changed model role alias prefix from `pi/` to `omp/` (e.g., `omp/slow` instead of `pi/slow`)
## [2.3.1337] - 2026-01-03
## [2.2.1337] - 2026-01-03
## [2.1.1337] - 2026-01-03
### Added
-94
View File
@@ -2,100 +2,6 @@
## [Unreleased]
## [5.6.70] - 2026-01-18
## [5.6.7] - 2026-01-18
## [5.5.0] - 2026-01-18
## [5.4.2] - 2026-01-16
## [5.4.0] - 2026-01-15
## [5.3.1] - 2026-01-15
## [5.3.0] - 2026-01-15
## [5.2.1] - 2026-01-14
## [5.2.0] - 2026-01-14
## [5.1.1] - 2026-01-14
## [5.1.0] - 2026-01-14
## [5.0.1] - 2026-01-12
## [5.0.0] - 2026-01-12
## [4.9.0] - 2026-01-12
## [4.8.3] - 2026-01-12
## [4.8.0] - 2026-01-12
## [4.7.0] - 2026-01-12
## [4.6.0] - 2026-01-12
## [4.5.0] - 2026-01-12
## [4.4.9] - 2026-01-12
## [4.4.8] - 2026-01-12
## [4.4.6] - 2026-01-11
## [4.4.5] - 2026-01-11
## [4.4.4] - 2026-01-11
## [4.3.2] - 2026-01-11
## [4.3.1] - 2026-01-11
## [4.3.0] - 2026-01-11
## [4.2.3] - 2026-01-11
## [4.2.2] - 2026-01-11
## [4.2.1] - 2026-01-11
## [4.2.0] - 2026-01-10
## [4.1.0] - 2026-01-10
## [4.0.1] - 2026-01-10
## [4.0.0] - 2026-01-10
## [3.37.1] - 2026-01-10
## [3.37.0] - 2026-01-10
## [3.36.0] - 2026-01-10
## [3.35.0] - 2026-01-09
## [3.34.0] - 2026-01-09
## [3.33.0] - 2026-01-08
## [3.32.0] - 2026-01-08
## [3.31.0] - 2026-01-08
## [3.30.0] - 2026-01-07
## [3.25.0] - 2026-01-07
## [3.24.0] - 2026-01-07
## [3.21.0] - 2026-01-06
## [3.20.1] - 2026-01-06
## [3.20.0] - 2026-01-06
### Breaking Changes
-106
View File
@@ -2,8 +2,6 @@
## [Unreleased]
## [5.6.70] - 2026-01-18
## [5.6.7] - 2026-01-18
### Added
@@ -31,25 +29,11 @@
- Fixed backspace handling with additional codepoint support
- Fixed Alt+letter key combinations for better recognition
## [5.5.0] - 2026-01-18
## [5.4.2] - 2026-01-16
## [5.4.0] - 2026-01-15
## [5.3.1] - 2026-01-15
### Fixed
- Fixed rendering issues on Windows by preventing re-entrant renders
## [5.3.0] - 2026-01-15
## [5.2.1] - 2026-01-14
## [5.2.0] - 2026-01-14
## [5.1.1] - 2026-01-14
## [5.1.0] - 2026-01-14
### Added
@@ -72,16 +56,6 @@
- Fixed numbered list items showing "1." for all items when code blocks break list continuity
- Fixed width overflow protection in overlay compositing to prevent TUI crashes
## [5.0.1] - 2026-01-12
## [5.0.0] - 2026-01-12
## [4.9.0] - 2026-01-12
## [4.8.3] - 2026-01-12
## [4.8.0] - 2026-01-12
## [4.7.0] - 2026-01-12
### Fixed
@@ -100,31 +74,11 @@
- Rendering optimizations: only re-render changed lines
- Refactor input component to use keybindings manager
## [4.5.0] - 2026-01-12
## [4.4.9] - 2026-01-12
## [4.4.8] - 2026-01-12
## [4.4.6] - 2026-01-11
## [4.4.5] - 2026-01-11
## [4.4.4] - 2026-01-11
### Fixed
- Fixed Ctrl+Enter sequences to insert new lines in the editor
## [4.3.2] - 2026-01-11
## [4.3.1] - 2026-01-11
## [4.3.0] - 2026-01-11
## [4.2.3] - 2026-01-11
## [4.2.2] - 2026-01-11
## [4.2.1] - 2026-01-11
### Changed
@@ -135,15 +89,11 @@
- Fixed editor redraw glitch when canceling autocomplete suggestions
- Fixed `fd` tool detection to automatically find `fd` or `fdfind` in PATH when not explicitly configured
## [4.2.0] - 2026-01-10
## [4.1.0] - 2026-01-10
### Added
- Added persistent prompt history storage support via `setHistoryStorage()` method, allowing history to be saved and restored across sessions
## [4.0.1] - 2026-01-10
## [4.0.0] - 2026-01-10
### Added
@@ -168,36 +118,12 @@
- `matchesKey()` now correctly matches Kitty protocol sequences for unmodified letter keys
- Crash when pasting text with trailing whitespace exceeding terminal width through Markdown rendering
## [3.37.1] - 2026-01-10
## [3.37.0] - 2026-01-10
## [3.36.0] - 2026-01-10
## [3.35.0] - 2026-01-09
## [3.34.0] - 2026-01-09
## [3.33.0] - 2026-01-08
## [3.32.0] - 2026-01-08
### Fixed
- Fixed text wrapping allowing long whitespace tokens to exceed line width
## [3.31.0] - 2026-01-08
## [3.30.0] - 2026-01-07
## [3.25.0] - 2026-01-07
## [3.24.0] - 2026-01-07
## [3.21.0] - 2026-01-06
## [3.20.1] - 2026-01-06
## [3.20.0] - 2026-01-06
### Added
@@ -229,10 +155,6 @@
- Added `SymbolTheme` interface for customizing UI symbols including cursors, borders, spinners, and box-drawing characters
- Added support for custom spinner frames in the Loader component
## [3.14.0] - 2026-01-04
## [3.13.1337] - 2026-01-04
## [3.9.1337] - 2026-01-04
### Added
@@ -245,39 +167,11 @@
- Changed Editor component to use proper box borders with vertical side borders instead of horizontal-only borders
- Changed cursor style from block to thin blinking bar (▏) at end of line
## [3.8.1337] - 2026-01-04
## [3.7.1337] - 2026-01-04
## [3.6.1337] - 2026-01-03
## [3.5.1337] - 2026-01-03
## [3.4.1337] - 2026-01-03
## [3.3.1337] - 2026-01-03
## [3.1.1337] - 2026-01-03
## [3.0.1337] - 2026-01-03
## [2.3.1337] - 2026-01-03
## [2.2.1337] - 2026-01-03
## [2.1.1337] - 2026-01-03
## [2.0.1337] - 2026-01-03
## [1.500.0] - 2026-01-03
### Added
- Added `getText()` method to Text component for retrieving current text content
## [1.341.0] - 2026-01-03
## [1.338.0] - 2026-01-03
## [1.337.1] - 2026-01-02
### Added
+19 -4
View File
@@ -56,6 +56,18 @@ async function watchCI(): Promise<boolean> {
}
}
function hasUnreleasedContent(content: string): boolean {
const unreleasedMatch = content.match(/## \[Unreleased\]\s*\n([\s\S]*?)(?=## \[\d|$)/);
if (!unreleasedMatch) return false;
const sectionContent = unreleasedMatch[1].trim();
return sectionContent.length > 0;
}
function removeEmptyVersionEntries(content: string): string {
// Remove version entries that have no content (just whitespace until next ## [ or EOF)
return content.replace(/## \[\d+\.\d+\.\d+\] - \d{4}-\d{2}-\d{2}\s*\n(?=## \[|\s*$)/g, "");
}
async function updateChangelogsForRelease(version: string): Promise<void> {
const date = new Date().toISOString().split("T")[0];
@@ -67,11 +79,14 @@ async function updateChangelogsForRelease(version: string): Promise<void> {
continue;
}
// Replace [Unreleased] with version and date
content = content.replace("## [Unreleased]", `## [${version}] - ${date}`);
// Only create version entry if [Unreleased] has content
if (hasUnreleasedContent(content)) {
content = content.replace("## [Unreleased]", `## [${version}] - ${date}`);
content = content.replace(/^(# Changelog\n\n)/, `$1## [Unreleased]\n\n`);
}
// Add new [Unreleased] section after # Changelog header
content = content.replace(/^(# Changelog\n\n)/, `$1## [Unreleased]\n\n`);
// Clean up any existing empty version entries
content = removeEmptyVersionEntries(content);
await Bun.write(changelog, content);
console.log(` Updated ${changelog}`);