Skip to content

fix(security): harden CLI and automate npm releases (0.1.1) - #2

Merged
hyochan merged 3 commits into
mainfrom
codex/release-automation
Nov 3, 2026
Merged

hyochan merged 3 commits into
mainfrom
codex/release-automation

Conversation

@hyochan

@hyochan hyochan commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

Summary

CLI hardening, automated npm releases, and the 0.1.1 mascot/version bump.

Hardening

  • Terminal output: strip C1 control characters and bidi overrides from terminal output; escape them in --json output so the JSON value is unchanged.
  • Config discovery: gitdog.json lookup stops at the Git repository root or the home directory.
  • Session lock: the lock records its owner PID; a lock left by a dead process is removed under a recovery gate (re-read before removal), instead of blocking until manual cleanup.
  • API key files: keys create --out resolves the real path and refuses a location Git would track, failing closed when Git cannot verify it; checked before a key is issued.
  • test:dev: the development deployment and report directory come from GITDOG_DEV_DEPLOYMENT / GITDOG_TEST_REPORT_DIR.

Release automation

  • release.yml runs on a published GitHub Release tagged vVERSION: validates tag/version/commit (must be on main), tests, packs once, smoke-tests the archive, then publishes that archive through npm trusted publishing with provenance from the npm environment (tags v* only). Existing versions are never republished; the published tarball and provenance are verified against the tag and commit.

Verification

bun run typecheck, bun run lint, bun run test (94 pass), bun audit --production, npm pack --dry-run; CI green.

🤖 Generated with Claude Code

hyochan and others added 2 commits November 3, 2026 17:15
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y paths

- Strip C1 control characters and bidi overrides from terminal output and
  escape them in --json output so untrusted ticket content cannot drive or
  spoof the terminal.
- Stop gitdog.json discovery at the repository root or home directory so a
  file in a shared parent directory cannot select the project.
- Record the owner PID in the session lock and recover locks left by dead
  processes, claiming them atomically.
- Refuse keys create --out paths that Git would track, before issuing a key.
- Read the development deployment and report directory for test:dev from
  the environment instead of committing them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@hyochan hyochan added 🏟️ ui 🐛 bug Something isn't working 📖 documentation Improvements or additions to documentation 📘 release Released version labels Nov 3, 2026
@hyochan hyochan changed the title fix(security): harden CLI output, config discovery, locks and key paths (0.1.1) feat(cli): automate npm releases and refine mascot Nov 3, 2026
@hyochan hyochan changed the title feat(cli): automate npm releases and refine mascot fix(security): harden CLI and automate npm releases (0.1.1) Nov 3, 2026
@hyochan hyochan added the 🚀 cd Cloud Deploy label Nov 3, 2026
@hyochan
hyochan merged commit be8c59d into main Nov 3, 2026
1 check passed
@hyochan
hyochan deleted the codex/release-automation branch November 3, 2026 09:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🐛 bug Something isn't working 🚀 cd Cloud Deploy 📖 documentation Improvements or additions to documentation 📘 release Released version 🏟️ ui

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant