Skip to content

v0.23.0-rc.4

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Aug 10:06
· 14 commits to main since this release

0.23.0-rc.4 (2026-08-31)

⚠ BREAKING CHANGES

  • voicemail is removed; every recording is a meeting. The Cmd+Shift+V mic-only hotkey, the voicemail-todos prompt, and the voicemails/ directory no longer exist. Existing voicemail_* recordings are renamed voicemail_* → Memo_* by an automatic migration on upgrade.

Features

  • 09-01: block updates during active recordings (5d42617)
  • 09-01: pin stable bootstrap to release assets (2689f2c)
  • 09-02: gate release binaries on macOS 13 metadata (097b029)
  • 09-02: target shipped Swift builds at macOS 13 (17b44d1)
  • 09-03: make dependency setup core-first (4805d34)
  • 09-03: make optional activation non-blocking (daf09d1)
  • 10-01: add independent intelligence selections (7244fe9)
  • 10-01: expose conversation identity status (f853191)
  • 10-01: migrate legacy conversation identity (97561ab)
  • 10-01: pause summary provider failures (1a9529d)
  • 10-01: persist conversation pause state (2fee8dd)
  • 10-01: pin conversation identity at creation (d95ab65)
  • 10-01: pin summary identity in durable tasks (2825762)
  • activation: complete core activation journey (#153) (a4e6ee3)
  • add agent runtime diagnostics (#143) (84ef0df)
  • add AI connector integrations (f200a37)
  • add CLIProxyAPI gateway connection (#137) (e421f79)
  • add conversation-only agent connections (#138) (b17d306)
  • add resumable activation entry (#128) (9c2a4ad)
  • add tool-free Claude summaries (#140) (a34f540)
  • add tool-free Codex summaries (#139) (79ded45)
  • add voice input workflow and streamline agent console (f20c585)
  • add Yulu HTTP MCP server (2e6f450)
  • agent-connections: guide native runtime setup (#152) (3f2f67f)
  • agent-console: ship agent-native workspace (0420ef3)
  • agent-native provisioning & cross-platform foundation (v0.5 milestone) (#37) (b18164d)
  • agent: delegate recording pipeline to Hermes (#87) (62e6411)
  • align v0.23.0 release guidance (#169) (d99850c)
  • app: add visible Yulu shell (#159) (19dd4be)
  • ask: dispatch pinned cited conversations (4b5fe06)
  • audio: decouple transcription engines from Agents (c0cffe6)
  • build shared Agent Connection Center contract (#134) (8c02011)
  • calendar: adopt Agent Calendar Connector (#156) (f28459b)
  • calendar: adopt proven calendar sources (#155) (dc4f05c)
  • captions: redesign realtime subtitles and translation (5dee237)
  • complete guided core activation (#131) (b4f139a)
  • config: add transcription.realtime_enabled (no daemon restart) (5a18900)
  • config: transcription.diarization.* block in config.example.json (3db009a)
  • connect Claude pinned conversations (#136) (32d68e1)
  • connect Codex pinned conversations (#135) (3fcb3c8)
  • console: localize pinned provider recovery (9897da0)
  • console: show pinned sources and paused recovery (87b4a5b)
  • diarize: calendar-attendee prior resolution in transcribe.py (a0c9cd9)
  • diarize: config-selected diarize backend construction held off the ASR dict (d2f3dd5)
  • diarize: daemon DIARIZE RPC + request_diarize client (7c31b3e)
  • diarize: pure N-speaker merge core + .speakers.json sidecar (3c0f067)
  • diarize: SherpaDiarizeBackend + DiarizeBackend protocol + model resolution (681c48c)
  • diarize: speaker-count strategy — calendar prior + reconcile (over-split fix) (73a91ab)
  • diarize: tri-state yulu-managed probe_diarization() folded into doctor (33f5f6e)
  • diarize: wire ASR->diarize->merge into transcribe.py pipeline (1347e1d)
  • doctor: check_yulu_ui — dist artifacts + plist + /healthz + log (a3872fa)
  • eval: torch-free DER/WDER/SER harness + constructed-corpus + RTTM + UI-copy (92b9049)
  • harden phase14 settings and diarization readiness (950b22c)
  • harden pinned agent work lifecycle (#141) (6aa7630)
  • harden RC4 migration and DMG acceptance (#168) (d429e68)
  • onboarding: add versioned onboarding home (#150) (49334ed)
  • onboarding: adopt proven conversations (#154) (a51537e)
  • onboarding: adopt proven Sharing (#157) (a750903)
  • onboarding: migrate exact existing outcomes (#158) (a166ee7)
  • prompts: {{speaker_transcript}}/{{speaker_list}} summary prompt vars (7ee94d5)
  • prove summary provider readiness (#130) (62ad167)
  • providers: complete shared connection readiness copy (0551812)
  • providers: expose independent xAI readiness probes (ba3ff11)
  • providers: mark real readiness as successful (5c018cf)
  • provision: co-locate sherpa-onnx on the daemon interpreter (cp314 verified) + engine-aware models check (44c04d4)
  • provision: idempotent diarization ONNX model provisioning in the models step (b1d1032)
  • reader: expose pinned summary recovery (00886cd)
  • reader: state pinned provider pause recovery (7be35af)
  • recognize core activation evidence (#127) (2b7227e)
  • recordings: keep capture and transcription continuous (#97) (f1fabf9)
  • recordings: regenerate summaries through durable tasks (09fe1b2)
  • recordings: restore atomic meeting actions (#95) (1d783fa)
  • recover blocked activation work (#132) (ebb8f58)
  • release: publish the app only as a verified DMG (#167) (c6098a9)
  • remove voicemail entirely, unify into meeting (#46) (5030f4c)
  • require explicit cloud transcription readiness (#129) (2368742)
  • runtime: expand standard application data paths (#161) (2100096)
  • runtime: migrate Capture and Python paths (#163) (69d3f9a)
  • runtime: migrate Host durable state (#162) (98846cc)
  • runtime: migrate legacy state transactionally (#165) (0f2381b)
  • runtime: ship immutable self-contained app (#160) (a2322bb)
  • runtime: take background ownership with SMAppService (#164) (d9abe4a)
  • search: bound conversation meeting sources (30f43e1)
  • sessions: bound local conversation history (38790f9)
  • sessions: resolve conversation identity server-side (ecd402a)
  • settings: 3-column MasterDetail settings UI + full section editing + app-wide i18n (P1–P4) (#50) (98c6e31)
  • settings: add resource provisioning actions (886d2b1)
  • settings: add shared AI Providers readiness (80bdc03)
  • settings: auto-detect gog accounts (0930499)
  • settings: declarative registry + config-write correctness (P0) (#49) (f1b53c9)
  • settings: explain missing capabilities (38da715)
  • settings: realtime transcription toggle in Transcription section (ca12535)
  • settings: select watched calendars from gog (a81d924)
  • setup: build + install yulu_ui (Node 20+ guard, idempotent npm ci, healthz verify) (b0c0c4b)
  • setup: seed transcription.realtime_enabled=true in default config (b98aa45)
  • sharing: add manual recording share actions (#149) (911457c)
  • sharing: establish provable sharing configuration (#148) (423cc9e)
  • statusagent: menu sync to recordings + open web inbox + CI compile (07bdc88)
  • stt: support Hermes transcription provider (a3c7c32)
  • summary: commit automatic xAI summaries (c35ffbf)
  • summary: pause failed xAI summaries (70512b4)
  • ui: add liquid glass redesign (ca9bb04)
  • ui: apply Yulu brand system and streamline workflows (#85) (5a07539)
  • ui: recordings reader — markdown summary, transcript dedup, rename/tags/delete, real status (#44) (8aace30)
  • unify agent connection onboarding (#142) (48ead34)
  • unify Yulu audio credentials and native interface (#115) (5415429)
  • uninstall: pkill yulu_ui/dist/server.js leftover Node process (6b397f8)
  • update: replace the signed app safely with Sparkle (#166) (449904b)
  • voicemail: cmd_new starts realtime transcriber + promotes on stop (c56ad35)
  • voicemail: promote realtime transcript with speaker-tag stripping (17b258e)
  • xai: add explicit Keychain API key lifecycle (360c209)
  • xai: add strict stateless text client (2d58abf)
  • xai: guide capability setup (#151) (fb90a4c)
  • yulu cli: logs ui (tail ui.log) + status block (curl healthz) (0cf437e)
  • yulu_ui/backend: JobRegistry + jobs pubsub channel + paths.scriptDir (9989155)
  • yulu_ui/backend: jobRunner — transcribe spawn, summarize queue/direct (ff86c17)
  • yulu_ui/routers: unified recordings router (merge dirs + dispatch by stem) (616c852)
  • yulu_ui/routers: voicemails+meetings transcribe/summarize mutations (9988eb8)
  • yulu_ui/tokens: adopt canonical Ayu Light + Dark palette (324ef73)
  • yulu_ui/web: App + RootLayout + providers tree (router child routes deferred to B.11) (747cf9f)
  • yulu_ui/web: AudioPlayer wavesurfer.js wrapper (2dc6141)
  • yulu_ui/web: CategoryChip (summary/cleanup/voicemail) (9c8d0ef)
  • yulu_ui/web: CommandEditor (string[] with drag-reorder + add/remove) (12da2fc)
  • yulu_ui/web: consolidated /health page (summary + Daemons/Logs tabs) (758d9d3)
  • yulu_ui/web: consolidated /settings page (6 sections + anchor redirects) (7d8a5a9)
  • yulu_ui/web: converge routing to /inbox + /inbox/:stem; single Recordings sidebar entry (3ad3c30)
  • yulu_ui/web: DaemonCard (status pill + meta + actions) (65a746e)
  • yulu_ui/web: DbStatsRow with size/rows + optional action button (3d16d90)
  • yulu_ui/web: drag-resize sidebar + master-list columns (867bae7)
  • yulu_ui/web: EditableTable base (click-to-edit cells) (0ef0312)
  • yulu_ui/web: EditableTable bulk select + delete with confirm (798624c)
  • yulu_ui/web: EmptyState component (581e5c0)
  • yulu_ui/web: FilterChips multi-select chip group (ae2f71b)
  • yulu_ui/web: GlobalSearch popover (keyword only, ⌘K, ↑↓↵esc) (388b83c)
  • yulu_ui/web: Glossary page (EditableTable + add + bulk delete) (8c83b78)
  • yulu_ui/web: Health/Daemons page (grid of 8 cards + 5s polling) (c2114fd)
  • yulu_ui/web: Health/Logs page (dropdown + LogTail + pause/clear) (2e4c180)
  • yulu_ui/web: HotkeyCapture component (66bbea2)
  • yulu_ui/web: InboxLayout with j/k keyboard nav across list (7b1993c)
  • yulu_ui/web: InlineEditRow (6 variants: text/number/select/toggle/path/readonly) (b257767)
  • yulu_ui/web: integrate ReprocessButtons in Voicemail + Meeting readers (3b1712d)
  • yulu_ui/web: Logo component (inline SVG matching assets/logo.svg) (6837bb5)
  • yulu_ui/web: LogTail (auto-scroll + WS-driven append + 2000-line cap) (db0ec00)
  • yulu_ui/web: MasterDetail (220px list + outlet, inline skeleton) (7bc78df)
  • yulu_ui/web: MeetingReader with Realtime tab (9836f9f)
  • yulu_ui/web: Meetings filters (All/Summarized/Last 30d/Has realtime) (e6558ce)
  • yulu_ui/web: Meetings list view with WS auto-refresh + index empty (b4ac438)
  • yulu_ui/web: migrate emoji to lucide-react icons (3bb2ee5)
  • yulu_ui/web: Pill component (5-state machine, WS-driven) (7d2ae36)
  • yulu_ui/web: Placeholder component for phase route stubs (0fea2c8)
  • yulu_ui/web: PromptReader (form with dirty tracking + Save/Delete) (91d3040)
  • yulu_ui/web: Prompts :id reader route (edit + create mode + delete) (6824a62)
  • yulu_ui/web: Prompts list with filters + new prompt button + index empty (15fd8ae)
  • yulu_ui/web: RecordingReader — merged voicemail+meeting reader (cc29b45)
  • yulu_ui/web: RecordingsList — unified /inbox list (0645db8)
  • yulu_ui/web: ReprocessButton (4 visual states) (b210a41)
  • yulu_ui/web: RestartBanner with per-daemon + restart-all actions (7ddfbdc)
  • yulu_ui/web: scaffold all 13 placeholder routes + child route registration (0a3db7f)
  • yulu_ui/web: Search filters (type/in dropdowns + since chips) (fb4648e)
  • yulu_ui/web: Search input + URL state + debounced query (a67caf5)
  • yulu_ui/web: Search result row → /inbox/<kind>/:stem cross-nav (15015c2)
  • yulu_ui/web: Search results column with [hit] snippet rendering (9a3662f)
  • yulu_ui/web: Settings/Audio page with restart banner (a2852a0)
  • yulu_ui/web: Settings/Hotkey & UI page (HotkeyCapture + ThemeToggle) (3433d49)
  • yulu_ui/web: Settings/Integrations page (calendar cards + Test connection) (edbd351)
  • yulu_ui/web: Settings/LLM page (CommandEditor + Test popover) (9578a89)
  • yulu_ui/web: Settings/Storage page (DbStatsRow + log paths) (a703bd4)
  • yulu_ui/web: Settings/Transcription page (eb4e574)
  • yulu_ui/web: SettingsPage wrapper (banner + body) (5480caf)
  • yulu_ui/web: Sidebar restructure — Logo + Inbox/Knowledge + bottom Settings/Health (f4354e8)
  • yulu_ui/web: Sidebar with nav + count badges + ThemeToggle (f830c5a)
  • yulu_ui/web: TestPopover for test command/connection output (f6122a7)
  • yulu_ui/web: ThemeProvider + useTheme + localStorage persist (dde3b85)
  • yulu_ui/web: ThemeToggle segmented control (31318a1)
  • yulu_ui/web: TopBar (breadcrumb + filters slot via route handle) (bbc66cb)
  • yulu_ui/web: TopBar multi-segment breadcrumb + GlobalSearch slot + ThemeToggle (a7b017c)
  • yulu_ui/web: TranscriptView with vocab + speaker highlight (0c30eb4)
  • yulu_ui/web: tRPC client with shared AppRouter type (ff9e6f6)
  • yulu_ui/web: useConfirm hook (window.confirm wrapper) (b1338a9)
  • yulu_ui/web: useDaemonHealthState aggregation hook (9cea011)
  • yulu_ui/web: useDebounced hook (4d808c2)
  • yulu_ui/web: useHotkeys hook (skips editable elements) (b3f2199)
  • yulu_ui/web: usePersistedSize + ResizableSplit (2774959)
  • yulu_ui/web: useSettingsRestartTracker (daemons by key, reducer-based) (887c8c4)
  • yulu_ui/web: VoicemailReader (:stem nested route + tabs + AudioPlayer) (ca1a85a)
  • yulu_ui/web: Voicemails filters (All/Summarized/Last 7d) in list column (308f0df)
  • yulu_ui/web: Voicemails list view with WS auto-refresh + index empty (f248cad)
  • yulu_ui/web: voicemails URL state (?seek init + ?snippet scroll-to-match) (11d5b59)
  • yulu_ui/web: WsProvider + useWsChannel + nextBackoff (d0f6bd0)
  • yulu_ui: inboxWatcher emits sidebar-counts on fs events (337546c)
  • yulu_ui: integrations.test router (Python detector probe) (4656b70)
  • yulu_ui: llm.test router (spawn config.llm.command with stdin) (a896b79)
  • yulu_ui: logTailer publishes new log lines on logs WS channel (5d85427)
  • yulu_ui: serveStaticFile + SPA fallback + /assets/* on Node server (97f072a)
  • yulu_ui: system.audioDevices via system_profiler JSON (6dbd634)
  • yulu_ui: system.dbStats + system.logPaths (b0e3592)
  • yulu_ui: system.pickFile + system.openInFinder via osascript/open (1bd5c61)
  • yulu_ui: voicemails.list/meetings.list return firstWords (9b4c1ba)

Bug Fixes

  • 09-01: support default bootstrap on macOS Bash 3.2 (05a8429)
  • 10-01: fail closed on summary mismatch (1726616)
  • allow installed agent diagnostics to finish (#143) (cf42929)
  • allow long xAI recording summaries (8702727)
  • artifacts: clear stale marker after validated commit (04f1641)
  • artifacts: preserve committed transcripts (d3899ad)
  • audio: keep dual-track capture on a continuous timeline (73be113)
  • audio: restore meeting half-duplex playback mix (dba4723)
  • audio: self-heal stuck sys-tap so meetings start after a voicemail (#43) (9aff28f)
  • audio: serialize recorder state (edda3c0)
  • ci: align native addons with bundled Node (#160) (eb48ce0)
  • ci: isolate bundled Host smoke media config (#163) (d9ec4ec)
  • ci: run bundled Host smoke with Node deps (#159) (6a7b391)
  • close phase 11 activation review gaps (78fed41)
  • console: distinguish selected and pinned providers (0125850)
  • console: localize pinned session identity (4f01087)
  • console: show xAI boundary on new drafts (7113622)
  • conversation: bound evidence and pause retrieval failures (222cef3)
  • conversation: enforce pinned xAI identity (20d0101)
  • conversation: retry persisted snapshot atomically (cf206af)
  • diarize: count-keyed pipeline cache so per-call override can't bleed into auto (d2a6214)
  • diarize: install soundfile with sherpa runtime (5abfced)
  • diarize: tighten calendar speaker priors (9635113)
  • end recording processing before sharing (#147) (09e2fe0)
  • enforce runtime-owned OAuth classes (#143) (ab356eb)
  • harden agent runtime probes (#143) (18570a5)
  • harden dual-track post processing (6df4d62)
  • harden recording and release status fixes (5365dbe)
  • improve echo cleanup and settings refresh (11ee3b7)
  • install: add agent-native install and uninstall plans (#61) (c4fb18a)
  • installer: align runtime dependency checks (#91) (a8a7a7d)
  • isolate doctor host health by runtime (#143) (8a1ea45)
  • keep realtime chunks out of recordings (33f1ce5)
  • make realtime transcription robust for arbitrarily-long recordings (#42) (f05e641)
  • migrate existing xAI credential source (43eb4fe)
  • packaging: validate nested capture outputs (#159) (94ededb)
  • play original recording audio by default (d549fd8)
  • preserve recording permissions on upgrade (88e46f9)
  • prevent pkg installer postinstall hangs (990fb14)
  • providers: localize credential recovery errors (b639f16)
  • reader: gate summary on committed transcript (f9c4347)
  • reader: wrap provider recovery actions (4fdec9c)
  • recognize release installs in doctor (2bd3173)
  • recording: resume interrupted captures and clean playback (501d12f)
  • recover recording reprocess flows (dcad5d4)
  • reinstall incomplete ui dependencies (fe0fbcd)
  • release: grant tag publish attestation permissions (0ade731)
  • remove CLIProxyAPI product integration (#144) (742e6b6)
  • repair 10 fresh-user-facing bugs in the v0.6.0 release (#41) (53fa35c)
  • restore exec bits on release extract; harden setup & packaging (#31) (82b0ab2)
  • restore explicit pipeline baseline (#146) (0a5190b)
  • restore xAI transcription and summary recovery (331fd99)
  • runtime: isolate development app smoke (#162) (82079ed)
  • runtime: pin Node 24 native addon provenance (#160) (a26baa6)
  • runtime: resolve bundled native helpers (#160) (a5f1e34)
  • search: bound complete highlighted excerpts (d7cfcef)
  • search: cap serialized conversation evidence (ff6b94a)
  • search: choose anchors independent of word order (bdde201)
  • search: honor isolated runtime sockets (21c0ad7)
  • search: include decision owner context (dcac3bd)
  • search: keep natural recall privacy bounded (ca0f30f)
  • search: normalize natural questions for FTS (e8a632a)
  • search: require anchored natural recall (0be021a)
  • sessions: rebuild retries without duplicate question (6135039)
  • settings: keep retired LLM fields out of search (852d173)
  • setup: remove retired calendar token path (#155) (16f473f)
  • ship realtime recording and installer updates (76b4b6a)
  • stabilize meeting-detector signature; persistent record dialog (#35) (61ed4a9)
  • stabilize recording and summaries (acda808)
  • stabilize recording workflow (0468e95)
  • stt: use calendar attendees for speaker names (51d095e)
  • summary: route from claimed task snapshot (04a99f3)
  • suppress delayed dual-track playback echo (5747b3c)
  • transcription: harden realtime and batch reliability (#105) (8a0adc0)
  • transcription: localize provider projection (a8fe305)
  • transcription: recover realtime xAI connections (#107) (0a61057)
  • transcription: reuse live transcripts and glossary for summaries (c7e7738)
  • ui: improve mobile responsive layouts (c7286f5)
  • ui: keep recorder window in saving state after stop (a98ed47)
  • ui: preserve settings array drafts (f4823c9)
  • ui: refresh vulnerable production dependencies (012226a)
  • voice-chat: honor bounded ask source limit (2ec95c2)
  • xai: bound chunked text responses (c9faf2c)
  • xai: classify realtime entitlement denial (#151) (e41fb47)
  • xai: prevent implicit credential fallback (86312bd)
  • xai: prove realtime setup readiness (#151) (fabe29f)
  • xai: restore failed readiness guidance (#151) (46f75e5)
  • xai: retain failed readiness history (#151) (7ec5f3f)
  • yulu_ui/logTailer: survive logrotate rotation (reopen on inode change) (fa90c6c)
  • yulu_ui/web: AudioPlayer A→B→A playback regression (4a8e79c)
  • yulu_ui/web: clear pending reconnect timer in ensureOpen + type cleanup (595865b)
  • yulu_ui: use app.notFound for SPA fallback (matches multi-segment paths) (83e48aa)

Yulu v0.23.0-rc.4

This release candidate is the public acceptance build for Yulu's complete
drag-to-Applications experience on Apple Silicon Macs.

  • transcription — choose local processing or direct xAI with Grok
    CLI-compatible OAuth; Yulu never silently switches engines or credentials.
  • summary — pin direct xAI, Codex, or Claude Code per recording, with durable
    provider/model evidence and explicit same-provider retry.
  • conversation — use direct xAI or a locally installed Codex, Claude Code,
    Hermes, or OpenClaw runtime without importing that runtime's OAuth tokens.
  • Calendar — connect the optional Calendar Source from its own Settings
    surface; Calendar readiness is not required for core recording.
  • manual Sharing — recording processing ends after transcript and summary.
    Sharing starts only from a recording detail page after explicit confirmation.

Install only from the GitHub Release DMG: open
yulu-macos-arm64-v0.23.0-rc.4.dmg, drag Yulu.app to /Applications, and
launch it there. The App guides fresh installs and upgrades through permissions,
Core Activation, optional capabilities, privacy disclosures, and visible
recovery actions. No proxy service or Agent runtime is an installation dependency.

This is a prerelease. Stable v0.23.0 is published only from this exact source
commit after the public DMG passes the required clean-install and upgrade
acceptance in #170.