Repository navigation
Releases
Releases · limina1/tendrl-engine
tendrl-engine v0.20.1
tendrl-engine v0.20.0
- fix(publish): expect rate limits — adaptive per-relay pace, send only what's missing, toast that lasts
- fix(publish): confirmed operations get their live progress toast; broadcast summary outlives a long broadcast
- fix(publish): windowed, paced, retrying broadcast with read-back verification and a progress bar
- feat(highlighters): live preview — the selected passage takes the style as you pick it
- feat(highlighters): drawer comment + annotate icons
- feat(highlighters): engine — highlight annotations (30041, insertion-shaped) + attached comments
- feat(highlighters): marks — fill / underline / bold / italic in the highlighter's ink; pointer tooltip attribution
- feat(highlighters): delete your highlights from the drawer
- fix(highlighters): focus a drawer entry imperatively — the effect froze the reader; verify recipe
- feat(highlighters): drawer — label filter, alpha, click-to-focus flash, recolour, adopt
- feat(highlighters): capture picker — your highlights / use another's, standard colours + HSV
- feat(highlighters): web — highlighter types + API, colour painting, overlapping highlights blend
- feat(highlighters): engine — highlighter tag, overlapping spans, restyle + supersede, per-author listing
- docs(zettel): highlighters carry no behaviour — annotation requests act, highlights focus
- docs(zettel): highlighters — decisions: supersede pointer, global alpha, opt-in annotation, no NIP-32
- docs(zettel): highlighters — reference label, recolour from the highlights drawer
- docs(zettel): highlighters — label + colour on the 9802, discovered from existing highlights
- docs(zettel): highlighters are events, picked up like writing styles
- docs(zettel): idea — highlighters (function + colour pairs)
- docs: CLAUDE.md entries for section edit / merge requests / Composer v2; commands.org verify recipe
- feat(merge-requests): owner review — list, diff, merge, decline
- feat(edit): Edit from the event menu — section in its publication, whole publication, or one article
- feat(composer): Composer v2 — one rendered editor, Type + Style, outline and tags rail
- feat(compose): multi-value tags — {name, values} on the wire, emitted verbatim
- feat(section-edit): atomic kinds — 30023 / 30818 / 30817 republish own, fork under the same d with NIP-54 fork markers + 818
- feat(section-edit): edit one section in place — republish own, fork into own index, or fork + kind-818
- feat(merge-requests): port the pure kind-818 core from feat/annotations-table
tendrl-engine v0.19.0
- docs: CLAUDE.md module entry for transcript.rs (narration transcript review)
- feat(narrate): transcript review step — skip, keep or replace flagged spans before narrating
- feat(narration): reviewed transcripts drive estimate and generate
- feat(narration): transcript review — flag what a section should not read as-is
- fix(narration): AsciiDoc spans, hard breaks and footnote markers are not read aloud
- fix(publication): read a mixed index in a-tag order, not leaves-then-indexes
- feat(narration): player above the pager, TOC speaker badge, T slugs on recordings, ASCII Blossom auth
- feat(narration): a partial narration still gets its root; sections chip (teal) on an index's menu
- docs: attached-events feature note, provenance-first decision, network/reader/audiobook links, commands recipe, CLAUDE.md module entry
- fix(network): the ungated provenance round honours relays switched off for the session
- feat(attached): attached events in the menu, provenance-first fetch, audiobook view, per-chapter player, profile narration tabs
- fix(identity): NIP-07 signer re-registers when the engine restarts or the channel drops
- feat(network): local-first, reactive display — ingest announcements; background profile fetch no longer holds a request
- docs(relays): kasten notes for the five-flag relay model + session choices; tester worksheet
- docs(zettel): history feature note, WebView-stays-the-player decision, two fix notes; index/fix-index/mobile/audiobook links
- feat(relays): one flat relay list with five flags, search kinds, session-scoped fetch choices
tendrl-engine v0.17.0
- feat(narration): playback-speed multiplier on the voice preview (shared with the player)
- feat(narration): language dropdown from the model's voices; lang stamped from the voice when unset
- feat(narration): hear a voice before narrating — provider clip + a paid sample of your own text
- feat(narration): split long sections into NKBIP-07 pieces; BUD-06 preflight; narrate from the tools row
- feat(narration): inspect recordings — event viewer, sources, root row, per-section narrate, Media Session
- feat(narration): publications read aloud — ppq TTS → Blossom → kind-32176 trees
- docs(zettel): audiobook — confirmed A/E/K binding, transcript default, nested walk, MP3-only probe
- docs(zettel): idea-audiobook-blossom — research + proposed workflow for TTS narration on Blossom via NKBIP-07
- docs: zero-config quick start for testers; start.sh runs on defaults without config.toml
- fix(walkthrough): chained cards keep their slot; overlay shows the first clickable queued card
- fix(walkthrough): first-run walk is mode-agnostic and never dies silently (F1–F3)
- docs(zettel): walkthrough & onboarding fix map — workflow breaks, popups, terminology, explainability, seven fix sets
- feat(emacs): nostrdown markup prettify shows resolved labels; event buffers get kind-default formats and
mre-render
tendrl-engine v0.16.0
- feat(web): Edit in the event menu reopens a replaceable event in the composer
- feat(web): event composer chrome twinned with the event menu, body scrolls
- feat(event-templates): identifier is minted or pasted, never derived from the title
- feat(web): mobile drawer '+ event' row opens the generic event composer
- feat(event-templates): compose any event kind from a declarative template
- feat(web/layers): soft line breaks — a paragraph-internal newline flows, as the three formats define
- docs(zettel): layers-default-on decision, M2 checklist, reader + m-tag notes; verify recipe
- feat(web/layers): Org + AsciiDoc decorated-source bases, on by default; untagged fallback; vitest
- feat(mimetype): kind-defined content formats + format fields on the single-event endpoints
- docs(zettel): rendering layers idea, m-tag decision, composer formatting; verify recipe
- chore(scripts): declare the content format on every publish path
- feat(web/compose): format selector — document default + per-section override, sent on every publish
- feat(web/layers): opt-in rendering layers — registry, store, Markdown decorated-source base, reader picker
- feat(mimetype): tag-or-nothing content formats — m on every 30041, inherited down the tree
- chore(release): publish-release.sh pushes the tag to github AND origin (Nostr/ngit) before the GitHub release
tendrl-engine v0.15.1
- feat(wm): tendrl-open-chat — SPC c / SPC b o a / M-x opens the assistant chat on both shells
tendrl-engine v0.14.0
- docs(kasten): decision — no OS keyring backend, nsec signing to be phased out
- docs(plan): assistant-slot bunker verified live against nak bunker
- feat(signing): bunker + Amber for the assistant slot — any identity, any transport
- feat(signing): NIP-46 bunker as a signing source + named sign_as — plan Phase 2
- docs(kasten): decision — buffers re-read shared engine state on mount
- docs(commands): headless GUI-drive gotchas for the context-set check
- feat(context): engine-owned context set — plan Phase 1
- docs(plan): 5b — annotations buffer on the phone: one at a time, view switch in-header
- docs(plan): D7 — the annotations table is one buffer with views; arrangement is the WM's
- docs(plan): D9 — post-it treatment resolved: B structure, A skin, C narrow layout
- docs(plan): annotations table (D7) + create-annotation form (D8); load takes a spell
- docs(kasten): feat-mcp, context-set-as-collection, load-on-demand; promotion = copy the index
- fix(modal): read the event kind before onclose() nulls the prop
- docs: insertions spec, engine-owned context set, assistant signing — design pass
- fix(reader): restore the scroll position in scroll mode, not just the section
- chore: bump version to 0.13.4
- chore: bump version to 0.13.3
- chore: bump version to 0.13.2
- chore: bump version to 0.13.1
- docs(kasten): where buffer state lives — decision zettel, reader/discussions/ui-patterns updates
- feat(emacs): tendrl.el — fetch an event into a read-only buffer, raw JSON kept apart
- docs: mirror the ngit issue tracker in bugs.org; ngit + headless-CDP recipes
- fix(web): typed-but-unsent text survives a buffer switch
- fix(reader): remember the reading place across buffer switches
- fix(web): a highlight over a wikilink keeps the link
- docs(nostrdown): formalize target forms — pointer / handle in the grammar, classification order, reach and tag per form
- docs(nostrdown): spec revision 2 — roles not scopes, the modifier rule, revision notes
- chore(release): v0.13.0 — NIP-42 relay auth
- docs(nip42): plan, decision zettel, verify recipe, module map
- feat(web): relay auth pill is real — NIP-42 opt-in, passive auth statuses
- feat(nip42): relay auth — opt-in per relay, signed as the user, never prompted
- feat(nostrdown): ref scope follows the target form — entity refs may leave the document
- feat(emacs): M-x nostrdown entry point — turn the layer on and resolve now
- feat(emacs): nostrdown-mode — {{ }} reference layer over Org/Markdown/AsciiDoc
tendrl-engine v0.12.2
- feat(kasten): nanoid-pinned d-tags, direct relay publisher, NIP-19-aware MCP event lookup
- fix(nostrdown): index the NIP-54-normalized d-tag as a {{ref:}} sibling handle
- fix(event-menu): wrap the Actions row instead of overflowing the modal
tendrl-engine v0.12.1
- feat(reader): one-strip chrome — § · paged|scroll · tree · T · M
- feat(reader): NoteView — short-form events by id render as their own card, not a section
- fix(discussions): follow relay hints when resolving a comment's root/parent
- fix(spells): keep the result feed when leaving and returning to the profile buffer
- feat(spells): local-first runs — sync newer at the head, load older at the foot
- fix(android): _exit on activity destroy — exit()'s atexit pass aborted inside libonnxruntime
tendrl-engine v0.12.0
- feat(git): NIP-34 repositories — profile tab, repository buffer, issues + threads