Repository navigation
murmur 0.3.0
Sixty-two commits since v0.2.1 — the taste sources the radio can finally
read (NetEase, Spotify, Bilibili and QQ Music, each signed into by scanning
a code or by lending Chrome's own profile), /sources as a list to tick with
every result landing in the card, real-world topics the host can bring up
unprompted, a memory that recalls and forgets on a stated contract, a coda
that knows the song happened and a prefetch that runs two picks deep, a
first run that is one step table you can walk back through, and MIT on the
licence line.
One thing to know on the way in: the first launch folds an older profile
back to faded, so a returning listener's taste starts over.
What's Changed
- fix(engine): music decodes at the device's real sample rate, not a fixed 48 kHz [spec 03-02] by @wine-fall in #194
- chore(test): a real ~/.murmur on the developer's machine never decides a test by @wine-fall in #195
- feat(music): the way into a track, not a label on it [spec 03-02] by @wine-fall in #199
- feat(director): a coda — the beat that knows the song happened [spec 04] by @wine-fall in #200
- feat(memory): recall & forgetting — memory v1.5 [spec 05-01] by @wine-fall in #196
- fix(prompts): the clock is bearings, not a line [spec 04] by @wine-fall in #201
- docs(roadmap): the login the catalogue asks for, and an order to read the lines by by @wine-fall in #204
- feat(talk): real-world topics — an off-loop pool the host can mention [spec 13] by @wine-fall in #203
- docs(roadmap): line 2 is delivered, so it leaves the roadmap by @wine-fall in #205
- docs(license): MIT — the model's terms were never murmur's to carry by @wine-fall in #206
- feat(rwt): real-world topics ride memory — profile taste, ledger footprint, no policy file [spec 13] by @wine-fall in #209
- test(director): the boot stretch hands the keyboard over by @wine-fall in #208
- chore(src): one folder per part, and the prompts one module per Brain task by @wine-fall in #211
- chore(skills): let Codex choose the review model by @wine-fall in #215
- chore(skills): pin Astra for Codex review by @wine-fall in #216
- feat(taste): listening-taste — five sources, the digest, named search, typed auth, invitations [spec 14] by @wine-fall in #214
- chore(skills): prefer the latest Codex reviewer by @wine-fall in #217
- docs(readme): the demo plays at the top, with sound by @wine-fall in #207
- fix(memory): fold at startup, keep bootstrapped identity, forget the topic keys [spec 05-01] by @wine-fall in #218
- feat(sources): NetEase over the plaintext API, Spotify without a developer app [spec 14] by @wine-fall in #220
- chore(status): three debts the card was keeping to itself by @wine-fall in #168
- feat(memory): the fold's output contract — cited facts, code-owned dates, refused folds [spec 05-01] by @wine-fall in #219
- docs(spec14): the taste sources as they shipped — plaintext NetEase, a bundled Spotify id by @wine-fall in #222
- feat(sources): one browser, opened and read — Chrome, and failures that say which [spec 14] by @wine-fall in #223
- docs(blog): no dead air, the latency budget of an always-on voice agent by @wine-fall in #226
- docs(gtm): the storefront says what ships — no local-first, an OG card, npm keywords by @wine-fall in #227
- fix(first-run): /back on the seed questions, and the slice-B consent before the persona wait [spec 06] by @wine-fall in #229
- fix(sources): the menu card carries its own status and names — nothing left under the overlay [spec 14] by @wine-fall in #232
- fix(setup): the guide sets the language it speaks, and the look-ahead follows [spec 03-03] by @wine-fall in #233
- feat(first-run): the taste sources are offered as one consent card, and a yes runs /sources there [spec 14] by @wine-fall in #234
- fix(first-run): /quit reaches the latch as it arrives, and the persona call can be cut or time out [spec 06] by @wine-fall in #235
- fix(first-run): the first run is one step table, and /back walks all of it [spec 06] by @wine-fall in #236
- refactor(music): the pick task drops the borrowed play data [spec 03-01] by @wine-fall in #230
- fix(sources): a profile Chrome has never opened is told apart from an absent Chrome [spec 14] by @wine-fall in #237
- feat(sources): the /sources menu is a list to tick, and every result lands in the card [spec 14] by @wine-fall in #238
- fix(cards): the way back is named on the card, and every /sources result says what happened [spec 06] by @wine-fall in #239
- fix(sources): a Chrome profile that does not exist yet is a sign-in, not an obstacle [spec 14] by @wine-fall in #240
- fix(sources): murmur names the Chrome profile it reads, and pins it to the mount [spec 14] by @wine-fall in #241
- feat(sources): NetEase and Bilibili sign in by scanning a code [spec 14] by @wine-fall in #242
- fix(cards): the way back catches the eye, and a consent's two keys read as peers [spec 10] by @wine-fall in #243
- fix(sources): a typed /quit leaves while a code is still on screen [spec 14] by @wine-fall in #244
- fix(first-run): only a host that left skips the consent cards [spec 06] by @wine-fall in #245
- feat(tui): the mouse wheel reads back through the program log [spec 10] by @wine-fall in #246
- fix(cards): a sign-in code is a card to read, not a line in the log [spec 10] by @wine-fall in #247
- feat(sources): a sign-in card picks the road and the Chrome profile [spec 14] by @wine-fall in #248
- fix(cards): the engine numbers the question, not the client [spec 10] by @wine-fall in #249
- fix(music): YouTube plays anonymously, Bilibili searches anonymously [spec 14] by @wine-fall in #250
- fix(music): a resolved stream carries the headers its CDN demands [spec 03-01] by @wine-fall in #251
- feat(music): a curated list of channels is one more place to look for a song [spec 14] by @wine-fall in #254
- fix(taste): the digest reads what they watched, not what they collected [spec 14] by @wine-fall in #252
- feat(sources): QQ Music joins the taste sources, read-only [spec 14] by @wine-fall in #253
- feat(sources): QQ Music signs in by WeChat scan [spec 14] by @wine-fall in #257
- feat(sources): QQ Music searches and plays [spec 14] by @wine-fall in #258
- chore(channels): add JLRS-LeoFM to the curated Bilibili channels [spec 14 §2.9] by @wine-fall in #259
- feat(channels): a chapter is a song [spec 14] by @wine-fall in #260
- fix(sources): end the /sources hang — a yt-dlp ceiling and an Esc that lands [spec 14] by @wine-fall in #262
- fix(sources): the sign-in card carries the results so far [spec 14] by @wine-fall in #261
- fix(sources): the list card tells state from action [spec 10] by @wine-fall in #263
- fix(director): prime the next pick at air time, and name a due switch [spec 04] by @wine-fall in #265
- fix(tui): the spotlight card is fitted to the screen before it is drawn [spec 10] by @wine-fall in #267
- feat(director): the music prefetch runs two picks deep [spec 04] by @wine-fall in #266
- chore(deps): the repo is pinned to pnpm 12.4.2 by @wine-fall in #274
- chore(release): 0.3.0 by @wine-fall in #275
Full Changelog: v0.2.1...v0.3.0