diff --git a/.gitignore b/.gitignore index 5034730a8..cff1a8163 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ coverage apps/macos/.build/ apps/shared/ClawdisKit/.build/ bin/clawdis-mac +bin/docs-list apps/macos/.build-local/ apps/macos/.swiftpm/ Core/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 6532b0bde..ab9050b7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,14 +1,12 @@ # Changelog -## 2.0.0 — Unreleased +## 2.0.0-beta1 — 2025-12-19 + +First Clawdis release post rebrand. This is a semver-major because we dropped legacy providers/agents and moved defaults to new paths while adding a full macOS companion app, a WebSocket Gateway, and an iOS node. ### Bug Fixes - macOS: Voice Wake / push-to-talk no longer initialize `AVAudioEngine` at app launch, preventing Bluetooth headphones from switching into headset profile when voice features are unused. (Thanks @Nachx639) -## 2.0.0-beta1 — 2025-12-14 - -First Clawdis release post rebrand. This is a semver-major because we dropped legacy providers/agents and moved defaults to new paths while adding a full macOS companion app, a WebSocket Gateway, and an iOS node. - ### Breaking - Renamed to **Clawdis**: defaults now live under `~/.clawdis` (sessions in `~/.clawdis/sessions/`, IPC at `~/.clawdis/clawdis.sock`, logs in `/tmp/clawdis`). Launchd labels and config filenames follow the new name; legacy stores are copied forward on first run. - Pi only: `inbound.reply.agent.kind` accepts only `"pi"`, and the agent CLI/CLI flags for Claude/Codex/Gemini were removed. The Pi CLI runs in RPC mode with a persistent worker. diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 33921c7e4..90bc6ff24 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -1,11 +1,12 @@ --- -summary: "Step-by-step npm release checklist for the Clawdis CLI" +summary: "Step-by-step release checklist for npm + macOS app" read_when: - Cutting a new npm release + - Cutting a new macOS app release - Verifying metadata before publishing --- -# Release Checklist (npm) +# Release Checklist (npm + macOS) Use `pnpm` (Node 22+) from the repo root. Keep the working tree clean before tagging/publishing. @@ -29,14 +30,22 @@ Use `pnpm` (Node 22+) from the repo root. Keep the working tree clean before tag - [ ] `pnpm run build` (last sanity check after tests) - [ ] (Optional) Spot-check the web gateway if your changes affect send/receive paths. -5) **Publish** +5) **macOS app (Sparkle)** +- [ ] Build + sign the macOS app, then zip it for distribution. +- [ ] Generate the Sparkle signature and update `appcast.xml`. +- [ ] Keep the app zip (and optional dSYM zip) ready to attach to the GitHub release. +- [ ] Follow `docs/mac/release.md` for the exact commands and required env vars. + +6) **Publish (npm)** - [ ] Confirm git status is clean; commit and push as needed. - [ ] `npm login` (verify 2FA) if needed. - [ ] `npm publish --access public` (use `--tag beta` for pre-releases). - [ ] Verify the registry: `npm view clawdis version` and `npx -y clawdis@X.Y.Z --version` (or `--help`). -6) **Post-publish** +7) **GitHub release + appcast** - [ ] Tag and push: `git tag vX.Y.Z && git push origin vX.Y.Z` (or `git push --tags`). -- [ ] Create/refresh the GitHub release for `vX.Y.Z` with **title `clawdis X.Y.Z`** (not just the tag); body should inline the product-facing bullets from the changelog (no bare links) **and must not repeat the title inside the body**; attach the `npm pack` tarball + checksums if you generated them. +- [ ] Create/refresh the GitHub release for `vX.Y.Z` with **title `clawdis X.Y.Z`** (not just the tag); body should inline the product-facing bullets from the changelog (no bare links) **and must not repeat the title inside the body**. +- [ ] Attach artifacts: `npm pack` tarball (optional), `Clawdis-X.Y.Z.zip`, and `Clawdis-X.Y.Z.dSYM.zip` (if generated). +- [ ] Commit the updated `appcast.xml` and push it (Sparkle feeds from main). - [ ] From a clean temp directory (no `package.json`), run `npx -y clawdis@X.Y.Z send --help` to confirm install/CLI entrypoints work. - [ ] Announce/share release notes. diff --git a/package.json b/package.json index bce3432f7..222b16883 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "clawdis", - "version": "2.0.0", + "version": "2.0.0-beta1", "description": "WhatsApp gateway CLI (Baileys web) with Pi RPC agent", "type": "module", "main": "dist/index.js", diff --git a/scripts/docs-list.ts b/scripts/docs-list.ts index 7ccbb39e0..06270dc20 100644 --- a/scripts/docs-list.ts +++ b/scripts/docs-list.ts @@ -4,6 +4,13 @@ import { readdirSync, readFileSync } from 'node:fs'; import { dirname, join, relative } from 'node:path'; import { fileURLToPath } from 'node:url'; +process.stdout.on('error', (error) => { + if ((error as NodeJS.ErrnoException).code === 'EPIPE') { + process.exit(0); + } + throw error; +}); + const docsListFile = fileURLToPath(import.meta.url); const docsListDir = dirname(docsListFile); const DOCS_DIR = join(docsListDir, '..', 'docs');