Commit Graph

34 Commits

Author SHA1 Message Date
can1357 b60bef961c feat: introduced nix packaging and path-based binary resolution
- Add comprehensive Nix flake definitions, derivations, modules, and CI workflows.
- Update tests and executables to resolve binaries from PATH rather than absolute paths.
- Ensure byte reproducibility and zeroed timestamps in embedded dashboard archives.
- Add handling for Nix-managed installations in CLI update checks.
2026-08-13 03:52:47 +02:00
can1357 6baaeec785 style: organized imports in release tooling (biome) 2026-08-05 01:15:43 +02:00
can1357 2605243f38 fix: complete version comparator centralization 2026-08-05 01:11:56 +02:00
metaphorics 3a9b823630 fix(release): import the comparator without loading native bindings
Wave-4 review finding on #7586:
- release.ts took compareVersions from the pi-utils barrel, which pulls
  file-lock and procmgr into the graph; those import pi-natives, whose
  entrypoint calls loadNative() and throws in a checkout without the
  built addon
- that also meant scripts/release.test.ts never executed under
  test:scripts, so the guard wired into CI last round proved nothing
- take the dependency-free version subpath instead
2026-08-05 04:50:17 +09:00
metaphorics df3fa86f7d fix(release): reject prereleases and normalize the version prefix
Wave-2 review findings on #7586:
- the guard accepted `17.2.8-rc.1`, and the publish step passes no
  --tag, so a prerelease would have become the npm `latest` every
  unqualified install and `omp update` resolve
- `v17.2.8` passed the guard and reached Cargo.toml verbatim, which
  cargo rejects only after every manifest was rewritten; validation now
  returns the normalized version and callers write that
2026-08-05 02:48:59 +09:00
metaphorics 726698e2b0 fix(release): validate explicit versions and drop duplicate comparators
Review findings on #7586:
- validate an explicit release version before comparing; the shared
  comparator never throws, so 999.bad previously reached every manifest
- ci-release-notes imports the comparator by relative path: the
  release_github job runs without bun install
- route Bun cache pruning through compareVersions and delete
  compareSemverLikeVersions
- regression test for the release-version guard
2026-08-05 02:48:59 +09:00
metaphorics 954894f1d4 refactor: centralize version comparison in pi-utils 2026-08-05 02:48:59 +09:00
can1357 cbb471b666 chore: standardized code quality and formatting for tooling scripts
- Added `scripts/**/*.ts` to the linter and formatter inclusion list in `biome.json`.
- Replaced manual array index searches with standard `indexOf` operations.
- Cleaned up unused variables, obsolete helpers, and command-line flags.
- Applied consistent formatting and code style across tooling scripts.
2026-06-30 23:51:16 +02:00
can1357 b5544b3f19 feat(coding-agent): implemented path recovery for mismatched section tags
- Added `recoverSectionPathFromTag` to reconcile bare or mismatched `[basename#tag]` paths using existing session snapshots.
- Implemented `readSectionForPreview` to fallback to recovered file paths when the authored path is absent.
- Updated `computeHashlineSectionDiff` to use the path recovery logic during preview content acquisition.
- Removed obsolete regression test file `issue-1765-repro.test.ts`.
2026-06-28 17:28:53 +02:00
can1357 8f6fbafe08 chore: added support for semantic version bumping
- Added logic to automatically calculate versions based on major, minor, or patch keywords.
- Updated the release script input validation to accept semantic bumps in addition to explicit version strings.
- Improved version parsing by adding radix parameters to integer conversion.
2026-06-28 17:17:18 +02:00
can1357 36991a38e7 fix(scripts): added changelog baseline pinning for recover runs
- Added a `refs/clog` baseline and updated the fixer to prefer it over older `v*` tags when resolving the changelog diff floor.
- Constrained recovery scans to tags containing the baseline and added `--pin` to advance that baseline to `HEAD` after authoritative rewrites.
- Updated release tagging/tag lookup behavior and added a regression test covering recovered released bullets not being re-promoted.
2026-06-15 04:35:12 +02:00
roboomp 9acc24329f fix(ci): scope release runs to per-sha concurrency group
The workflow-wide concurrency group was `${{ github.workflow }}-${{ github.ref }}`
with `cancel-in-progress: true`, so the release-script's atomic
`refs/heads/main + v* tag` push shared the `CI-refs/heads/main` group with every
later main push. The newer run cancelled the older release run before
`release_binary` / `release_github` / `release_npm` could execute, and no
future run carried the tag at HEAD, so the tag stayed published-as-a-ref but
unreleased on GitHub and npm (v15.12.6 in the wild).

Release runs are now routed to a per-sha group with `cancel-in-progress: false`
when either:
  * the push subject starts with `chore: bump version to ` (the release-script
    commit convention from scripts/release.ts), or
  * `github.ref` is a `v*` tag (workflow_dispatch recovery from a tag ref).

Other events keep the cheap branch-wide cancel-in-progress for PR/main churn.
release.ts's retry hint now uses the same release commit subject so manual
retries also land in the per-sha group.

Added scripts/ci-concurrency.test.ts: a regression test with a minimal GHA
expression evaluator that asserts the resolved group / cancel-in-progress for
auto-release pushes, retry pushes, tag-ref dispatches, plain main pushes, PRs,
distinct release shas, and a benign `revert: chore: bump version to ...`
follow-up.

Fixes #2564
2026-06-14 12:23:23 +00:00
can1357 7ffafae1cc fix(release): pushed tag by commit id to dodge maintenance prune
- Pushed HEAD sha into the remote tag ref so the push has no dependency on a local tag.
- Avoided both "cannot be resolved to branch" and "src refspec does not match" prune races.
- Dropped the retry loop and explicit git lfs push; the atomic push uploads LFS objects.
2026-06-06 16:18:55 +02:00
can1357 b65d173dcd chore: bump version to 15.9.67 2026-06-06 16:03:53 +02:00
can1357 87718067e0 fix(release): uploaded LFS objects before atomic ref push
- Pushed LFS objects for main explicitly before tagging.
- Set GIT_LFS_SKIP_PUSH so the pre-push hook no-ops on the tag ref.
- Used explicit refspecs to avoid hook resolving tag refs to branches.
2026-06-06 16:03:39 +02:00
can1357 3692ec2788 feat(release): added changelog fixer step before release updates
- Runs changelog fixer against commits since the latest tag before updating changelogs for release.
- Logs promoted items, merged duplicate headings, and removed empty headings per file.
2026-06-02 11:22:36 +02:00
can1357 71fe258320 ci: migrated release trigger from tag-push to branch-push
- Removed `tags: ["v*"]` trigger; release now fires from the single atomic `main` push that carries the tag.
- Replaced `gate.skip` with `gate.is-release` and `gate.release-tag` so downstream jobs detect the tag via `git tag --points-at HEAD`.
- Passed `release-tag` explicitly to release steps (gh-release, curl, release notes) since `github.ref` is now `refs/heads/main`, not the tag.
- Fixed rust-cache key collision on macOS x64 by setting `RUSTFLAGS` (target-cpu) before cache restore and including the native source hash in the shared key.
2026-05-31 02:33:19 +02:00
can1357 1191fdedc0 fix(scripts): added fetch.pruneTags=false to git wrapper to
- Added fetch.pruneTags=false to git wrapper to prevent tag deletion during concurrent maintenance.
- Implemented atomic tag creation and push with retry logic to defend against tags being pruned by background git maintenance processes.
- Changed push strategy to use --atomic flag and retry up to 3 times on refspec mismatch errors.
2026-05-28 12:37:26 +02:00
can1357 dac28f66e4 feat: added windows native staging candidates before runtime paths
- Added Windows node_modules staging checks so non-compiled addons are copied into versioned native directories.
- Updated loader candidate resolution to prefer embedded/staged/versioned candidates before default runtime paths when staging is enabled.
- Added runtime version-sentinel export __piNativesV15_0_1 and load-time validation to avoid stale binary drift.
- Added typing and release-flow updates to expose staging options and keep per-release sentinel IDs aligned.
2026-05-14 23:24:14 +02:00
can1357 7313b68f79 deps(deps): updated @oh-my-pi catalog versions in root package
- Updated root package.json @oh-my-pi entries from workspace:* to pinned 14.1.1 versioned dependencies.
- Modified the release script to automatically rewrite @oh-my-pi/* catalog versions in package.json using the release version.
- Kept the update operation before Rust workspace version bump in the release workflow.
2026-04-14 19:25:44 +02:00
can1357 90f1672b2b fix(coding-agent): resolved duplicate -c in coding-agent git commands
- Added SHORT_LIVED_GIT_CONFIG constants and withShortLivedGitConfig helper for short-lived overrides.
- Updated runCommand to route git args through short-lived config normalization and avoid duplicate -c entries.
- Added scripts/release git() helper and replaced raw release git invocations with config-safe calls.
- Added git-process-config tests asserting status and stage spawn git with disabled core.fsmonitor/untrackedCache.
2026-04-11 08:54:27 +02:00
can1357 5339369abd style: replaced ASCII ellipsis with Unicode character for improved typography
- Replaced ASCII ellipsis characters (three dots '...') with Unicode ellipsis character ('...') throughout the codebase for improved typography.
- Adjusted string truncation logic to account for single-character Unicode ellipsis instead of three-character ASCII ellipsis, reducing reserved space from 3 to 1 character in truncation calculations.
- Updated truncation offsets in multiple files (session-manager, agent, executor, footer) to preserve 2 additional characters before ellipsis due to more compact Unicode representation.
2026-02-06 02:51:07 +01:00
can1357 acc799cd2e chore(ci): improved release process and expanded Rust toolchain support
- Updated release process to create new commits with descriptive messages instead of amending previous commits.
- Changed release push strategy from force push to regular push for better git history integrity.
- Extended check:rs script to verify minimal dependency versions and Windows MSVC target compilation.
- Added x86_64-pc-windows-msvc target to Rust toolchain configuration for cross-compilation support.
2026-02-05 08:28:56 +01:00
can1357 ad37a58b5f feat(scripts): added job-level status checking in CI watcher with auto log tailing for failures
- Added job-level status checking in CI watcher to fail fast on first job failure with detailed error reporting.
- Added automatic log tailing for failed CI jobs showing last 20 lines of output.
2026-02-01 20:34:12 +01:00
can1357 32bc2b8d02 fix: fixed LSP server display, file streaming, and slash command autocomplete; reorganized npm scripts
- Fixed LSP servers showing as 'unknown' in status display when server warmup fails by using index-based lookup to correctly extract server name and file types.
- Fixed Read tool loading entire file into memory when offset/limit was specified by implementing streaming line-by-line processing that only collects requested range.
- Fixed slash command autocomplete applying stale completions when typing quickly by adding staleness check before applying completion on Enter/Return.
- Reorganized npm scripts to follow consistent naming pattern with separate TypeScript and Rust variants for check, lint, fmt, and fix operations.
- Updated release script to properly handle Rust workspace version updates in Cargo.toml files and regenerate lockfiles.
2026-01-29 10:57:20 +01:00
can1357 7a081e1c7c feat: added React mutation testing package and coding-agent improvements
- Added new @oh-my-pi/react-edit-benchmark package for React source code mutation testing.
- Added --no-title flag to disable automatic session title generation in coding-agent.
- Changed default behavior of read tool to omit line numbers by default.
- Added environment variable support for edit tool configuration and fuzzy matching.
- Updated test files to use import.meta.dir for ES module compatibility.
- Added Prettier configuration and CI improvements for private package handling.
2026-01-19 16:16:55 +01:00
can1357 7469166ad1 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.
2026-01-18 21:50:00 +01:00
can1357 91e2d478fb chore: bump version to 3.33.0 2026-01-08 14:13:08 +01:00
can1357 4cc8270ad5 chore: bump version to 3.15.0 2026-01-05 04:52:31 +01:00
can1357 24170d4be2 feat: added watch subcommand to release script 2026-01-04 16:25:50 +01:00
can1357 5a9346ac0c refactor: use Bun shell API in release script 2026-01-04 16:21:36 +01:00
can1357 068a2965a9 refactor: simplified release script glob usage 2026-01-04 16:20:17 +01:00
can1357 994dc34f40 fix: release script now waits for all CI workflow runs 2026-01-04 16:18:35 +01:00
can1357 77bca78dd3 chore: migrated release script to TypeScript 2026-01-04 16:16:29 +01:00