Skip to content

Commit 25d5422

Browse files
sodiumsunclaude
andcommitted
release workflow can no longer publish releases — internal artifact only
The Attach-to-release and website-notify steps are gone; user releases are cut exclusively from the private heard-v3 pipeline. This removes the whole class of 'the robot published the old app over v3'. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015291sbAoHDRCaem2jQda3B
1 parent 20320d7 commit 25d5422

1 file changed

Lines changed: 5 additions & 75 deletions

File tree

.github/workflows/release.yml

Lines changed: 5 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -352,8 +352,11 @@ jobs:
352352
zip -ry "Heard-${GITHUB_REF_NAME:-dev}.zip" Heard.app
353353
cp "Heard-${GITHUB_REF_NAME:-dev}.zip" Heard.zip
354354
355-
- name: Upload artifact (for workflow_dispatch / non-tag runs)
356-
if: "!startsWith(github.ref, 'refs/tags/')"
355+
# This workflow can ONLY produce an internal artifact. It must never
356+
# publish to GitHub Releases — that's how the old app kept shipping to
357+
# users over the intended v3 releases (v1.1.45-47). User releases are
358+
# cut exclusively from the private heard-v3 pipeline.
359+
- name: Upload artifact (internal only — never a public release)
357360
uses: actions/upload-artifact@v4
358361
with:
359362
name: heard-app
@@ -362,76 +365,3 @@ jobs:
362365
packaging/dist/Heard.zip
363366
packaging/dist/Heard-*.dmg
364367
packaging/dist/Heard.dmg
365-
366-
- name: Attach to release
367-
if: startsWith(github.ref, 'refs/tags/')
368-
uses: softprops/action-gh-release@v2
369-
with:
370-
files: |
371-
packaging/dist/Heard-*.zip
372-
packaging/dist/Heard.zip
373-
packaging/dist/Heard-*.dmg
374-
packaging/dist/Heard.dmg
375-
body: |
376-
### Install with one prompt (lazy mode)
377-
378-
Paste this into Claude Code, Codex, or your agent of choice.
379-
380-
**Fresh install** (no Heard yet on this machine):
381-
382-
> Install Heard so you narrate your responses to me. Run: `curl -L https://github.com/heardlabs/heard/releases/latest/download/Heard.zip -o /tmp/heard.zip && unzip -o /tmp/heard.zip -d /Applications && xattr -dr com.apple.quarantine /Applications/Heard.app && open /Applications/Heard.app` — a window will pop up and I'll fill it in.
383-
384-
**Upgrade from an older version** (Heard is currently running). The fresh-install command above races the still-shutting-down app and can leave a partial bundle; this version kills the running app, waits for it to release its file handles, then swaps in the new bundle cleanly:
385-
386-
> Upgrade Heard so I keep narrating your responses. Run: `killall Heard 2>/dev/null; while pgrep -x Heard >/dev/null; do sleep 0.2; done; rm -f ~/Library/Application\ Support/heard/daemon.sock ~/Library/Application\ Support/heard/daemon.pid; rm -rf /Applications/Heard.app && curl -L https://github.com/heardlabs/heard/releases/latest/download/Heard.zip -o /tmp/heard.zip && unzip -o /tmp/heard.zip -d /Applications && xattr -dr com.apple.quarantine /Applications/Heard.app && open /Applications/Heard.app` — Heard will quit and relaunch as the new version.
387-
388-
> _Note: starting in v0.8.2, the menu-bar "↑ Update to vX.Y.Z →" item does this swap for you in one click — no terminal needed. The upgrade prompt above is here for cases where the in-app updater isn't reachable (older versions, daemon stopped, etc.)._
389-
390-
---
391-
392-
### Install manually (menu bar app)
393-
394-
**Recommended — `Heard.dmg`:**
395-
396-
1. Download `Heard-${{ github.ref_name }}.dmg` below (or the unversioned `Heard.dmg`)
397-
2. Double-click the DMG — a window opens with `Heard.app` on the left and an `Applications` shortcut on the right
398-
3. Drag `Heard.app` onto `Applications`. Eject the disk image when done.
399-
4. Open Heard from `/Applications` (or Launchpad / Spotlight)
400-
5. The onboarding window walks you through four screens: API key (optional, for in-character persona rewrites), voice, the pause/continue hotkeys, and which agents to wire up
401-
6. Done — Heard is in the menu bar, hooks installed, ready to narrate
402-
403-
**Alternative — `Heard.zip`** (use this only if you specifically need an unsigned-style flow; the DMG is more reliable):
404-
405-
Download the zip, drag `Heard.app` into `/Applications`, then double-click. **Important:** unzipping inside Downloads and double-clicking from there triggers macOS App Translocation — Heard runs from a randomized temp folder and its hooks break. Always move the `.app` to `/Applications` *before* launching it.
406-
407-
### Voice — two options
408-
409-
- **Free local (Kokoro)** — skip the ElevenLabs key field in onboarding. Downloads a ~337 MB voice model on first synth call. Best on Macs with 12 GB+ RAM.
410-
- **Premium (ElevenLabs)** — paste your `sk_…` key on screen 2 of onboarding. Tiny daemon (~80 MB), pay-per-character (typically pennies a day), best voice quality.
411-
412-
### Hotkeys
413-
414-
Two combo hotkeys, both rebindable in Settings → Shortcuts:
415-
- **⇧⌥.** (`Shift+Option+.`) — Pause narration
416-
- **⇧⌥,** (`Shift+Option+,`) — Continue narration. If anything was buffered while paused, the persona asks whether to catch you up or start fresh.
417-
418-
macOS will ask once for Accessibility access — click Allow.
419-
420-
See the [README](https://github.com/heardlabs/heard#readme) for full docs and troubleshooting.
421-
422-
- name: Notify heard.dev of the published release
423-
if: startsWith(github.ref, 'refs/tags/')
424-
env:
425-
GH_TOKEN: ${{ secrets.WEBSITE_RELEASE_TOKEN }}
426-
run: |
427-
set -euo pipefail
428-
429-
VERSION="$GITHUB_REF_NAME"
430-
if [[ ! "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
431-
echo "::error::Unexpected release tag: $VERSION"
432-
exit 1
433-
fi
434-
435-
jq -n --arg version "$VERSION" \
436-
'{event_type: "heard-release", client_payload: {version: $version}}' \
437-
| gh api --method POST repos/heardlabs/heard-website/dispatches --input -

0 commit comments

Comments
 (0)