Cchaitanyagirichore(release): 0.4.6
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
build(mac): sign + notarize the macOS app so folder access is granted once macOS binds a TCC grant (Documents/Desktop/Downloads) to a STABLE code signature. Unsigned builds can't durably remember the grant — and App Translocation re-randomizes the path each launch — so the privacy prompt reappears on every agent action. Signing makes it a single one-time prompt. - electron-builder.yml: hardened runtime, entitlements (node-pty + child `claude` agents inherit our TCC responsibility), extendInfo usage strings, afterSign notarize hook; drop `identity: null` for cert auto-discovery - build/entitlements.mac.plist: hardened-runtime entitlements (allow-jit, disable-library-validation, user-selected file access, inherit) - build/notarize.cjs: afterSign hook — notarizes via notarytool only when APPLE_* creds are present, else no-ops so unsigned contributor builds work - release.yml: pass CSC_* + APPLE_* secrets to the mac packaging step (all optional; absent → unsigned build, CI still green) - build/SIGNING.md: maintainer runbook — Apple setup, GitHub secret names, local signed-build + verification commands - .gitignore: never commit signing secrets (*.p12, *.p8, .env.signing) - add @electron/notarize dev dep; bump to 0.1.3 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> | 3 个月前 | |
feat(realtime): mic permission gate + macOS TCC for voice session (rt-8, Realtime Michael P1) Phase-1 mic permissions for the Realtime Michael voice loop: - src/main/index.ts: broaden the renderer media-permission gate (request + check handlers) from Free-Flow-only to `freeflowEnabled || realtimeVoiceEnabled` via a `micFeatureLive()` helper. Deliberately NOT gated on OpenAI-key presence: `apikey:openai` is shared with the CLI engines, so a CLI-only user must not get the mic gate opened. Surgical edit confined to the permission-handler region (Kevin's rt-1 IPC registration region untouched). - config: new `realtimeVoiceEnabled?` flag (default off) mirrored in src/main/config.ts + src/preload/index.ts so the renderer session can flip it on at start() (before getUserMedia) and off at stop(). Absence ⇒ mic denied, matching the freeflowEnabled stance — no half-open mic. - macOS TCC: broaden NSMicrophoneUsageDescription (electron-builder.yml) and the audio-input entitlement comment (build/entitlements.mac.plist) to cover the OpenAI realtime voice path, not just Free Flow/Groq. Gate goes live once rt-2's session sets realtimeVoiceEnabled at start/stop (asked Jim — his ACK promised it; rt-2 landed session-local state instead). Device picker (enumerateDevices, mic/speaker) is the next rt-8 increment. typecheck node+web green. hire.ts PROVIDERS + v0.3.1 guardrails untouched. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> | 2 个月前 | |
fix(brand): draw the Dock icon full bleed so the silhouette stops reading as debris The macOS icon showed two dark tabs hard against the left and right of the tile — reported, fairly, as "the edge of someone else's head." They are Michael's OWN outermost silhouette columns: the far edge of the hair (sprite rows 3-11) and the outer shoulder (rows 19-24), with the face between them. Nothing foreign, and nothing wrong with the sprite. The cause was the framing. make-logo emits two: `mark` at full bleed for the site and README, and `icon` with a 112/1024 margin for the .icns. That margin put a band of brand yellow between the tile edge and the figure, and the gap is what isolated those columns into floating tabs. Same pixels, different frame — which is why docs/logo.svg always looked right and only the Dock icon did not. FRAMES.icon is now 0. Not a single sprite pixel is cropped: cropping the outer columns was tried first and was wrong, because it cut away real hair and shoulder. docs/logo.* are byte-identical after this change, which is the proof that framing was the whole problem. Also fixes ROOT, which was pinned to a different clone — running the generator from this repo would have read that repo's sprite and written its assets. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 19 天前 | |
release(v0.4.3): Michael's portrait becomes the brand mark The logo was a pair of script initials on a gradient tile, drawn with the Lobster webfont — which had to be installed for the design source to render correctly. It is now Michael, in the app's own pixel art, on the brand yellow. The SVG is the source of truth. docs/logo.svg is authored as pure vector (every sprite pixel a run-merged rect; no fonts, gradients or filters) and every raster in build/ and docs/ is generated from that same geometry by tools/make-logo.cjs — including a real multi-resolution .icns (16..1024, with the macOS drop shadow) and a .ico carrying six sizes. Nothing is a downscale of a 512px image any more, and the site, the app and the three platform icons cannot drift apart. Also in this release: - Site CTA buttons are brighter by default. .btn.primary took its fill from --accent, which also colours accent TEXT and so has to stay dark enough to read on a white page; the light theme's #E5A00D made the download button read brown. Fills now use their own --accent-fill / --accent-fill-hover tokens, starting at what used to be the hover colour. - docs/llms.txt advertised 0.4.1 two releases after the fact. tools/check-release-links.cjs now checks it, so it cannot drift silently again. - README's version badge and status note had been stuck at 0.4.0. Appearance only — no functional change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> | 24 天前 | |
fix(brand): draw the Dock icon full bleed so the silhouette stops reading as debris The macOS icon showed two dark tabs hard against the left and right of the tile — reported, fairly, as "the edge of someone else's head." They are Michael's OWN outermost silhouette columns: the far edge of the hair (sprite rows 3-11) and the outer shoulder (rows 19-24), with the face between them. Nothing foreign, and nothing wrong with the sprite. The cause was the framing. make-logo emits two: `mark` at full bleed for the site and README, and `icon` with a 112/1024 margin for the .icns. That margin put a band of brand yellow between the tile edge and the figure, and the gap is what isolated those columns into floating tabs. Same pixels, different frame — which is why docs/logo.svg always looked right and only the Dock icon did not. FRAMES.icon is now 0. Not a single sprite pixel is cropped: cropping the outer columns was tried first and was wrong, because it cut away real hair and shoulder. docs/logo.* are byte-identical after this change, which is the proof that framing was the whole problem. Also fixes ROOT, which was pinned to a different clone — running the generator from this repo would have read that repo's sprite and written its assets. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 19 天前 | |
fix(brand): draw the Dock icon full bleed so the silhouette stops reading as debris The macOS icon showed two dark tabs hard against the left and right of the tile — reported, fairly, as "the edge of someone else's head." They are Michael's OWN outermost silhouette columns: the far edge of the hair (sprite rows 3-11) and the outer shoulder (rows 19-24), with the face between them. Nothing foreign, and nothing wrong with the sprite. The cause was the framing. make-logo emits two: `mark` at full bleed for the site and README, and `icon` with a 112/1024 margin for the .icns. That margin put a band of brand yellow between the tile edge and the figure, and the gap is what isolated those columns into floating tabs. Same pixels, different frame — which is why docs/logo.svg always looked right and only the Dock icon did not. FRAMES.icon is now 0. Not a single sprite pixel is cropped: cropping the outer columns was tried first and was wrong, because it cut away real hair and shoulder. docs/logo.* are byte-identical after this change, which is the proof that framing was the whole problem. Also fixes ROOT, which was pinned to a different clone — running the generator from this repo would have read that repo's sprite and written its assets. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 19 天前 | |
build(mac): make notarization best-effort so it never blocks the release Signing is what delivers the actual goal — a stable code identity macOS binds the folder-access (TCC) grant to, so users are prompted once. Notarization only clears the Gatekeeper "unidentified developer" prompt and depends on live Apple servers + the APPLE_* credentials, which can fail independently. Wrap the notarize+staple step in try/catch: on failure, log loudly and ship the signed (un-notarized) build instead of failing the whole cross-platform release. Notarization resumes automatically once the credentials are valid — no further code change. Docs softened to match (signed; may need a one-time right-click → Open until notarized). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> | 3 个月前 | |
chore(release): 0.4.6 Turns the 0.4.7-rc rehearsal line into the shippable 0.4.6. Four things merged (feat/telemetry-message-count #343, fix/release-drop-white-screen #344, feat/arabic-ui-rtl-213 #345, and the command-name validation hardening), the version bumped 0.4.7-rc.2 -> 0.4.6 (package.json + lock; __APP_VERSION__ and the model-catalog gating both follow pkg.version, and no model has a numeric version gate so visibility is unchanged), and both note surfaces rewritten for the whole 0.4.5 -> 0.4.6 story: - build/release-notes.md (the update toast, baked into latest*.yml via releaseInfo.releaseNotesFile): 5 bullets, 267/280 chars, none clipped. - RELEASE.md (the GitHub release body): a new "What's new in 0.4.6" section, 0.4.5 demoted to "Still new in 0.4.5", and the stale 0.4.4 drop deck replaced with a clean 0.4.6 drop that uses the framework's own styling and self-hosted fonts — no remote fetch, so the drop-loader/font fix in this release protects it. The (v0.4.7) activation-funnel comments are corrected to (v0.4.6) since the funnel ships in this release. Suite 745/745, both typechecks clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LDbmAwrgtGskFGCRkYZBx4 | 10 天前 |