tendrl

io.github.limina1.tendrl
by liminal 🦠 liminal@gitcitadel.com

Read, write and navigate knowledge on Nostr.

A Nostr client prioritizing reading and navigating linked knowledge: Notes, books, wikis.

First release: Aug 11, 2026, 9 total releases.

Most recent release: Sep 22, 2026.

Website Repo

Appears in 3 app stacks.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Sep 22, 2026 0.15.1
    - feat(wm): tendrl-open-chat β€” SPC c / SPC b o a / M-x opens the assistant chat on both shells
  • Sep 16, 2026 0.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
    More…
    - 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
  • Sep 12, 2026 0.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
  • Sep 11, 2026 0.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
  • Sep 11, 2026 0.12.0
    - feat(git): NIP-34 repositories β€” profile tab, repository buffer, issues + threads
  • Aug 18, 2026 0.10.0
    - three columns - fix(server): bind the listener before constructing the engine - feat(mobile): drawer commands opens the SPC leader as a touch sheet - feat(relay): unified relay management UI β€” active/inactive toggle + modal opt-in - docs(zettel): fold the highlight-capture rework into the kasten - feat(relay): persistent active/inactive relay state (park/unpark) - feat(mobile): + highlight drawer button opens the general highlighter - feat(relay): make the search class actually serve search; flatten it to a row toggle - feat(highlights): context entry in the general highlighter - feat(relay): new default relays + mercury resolve claims, seed-version upgrades
    More…
    - fix(highlights): center the capture card on both shells - fix(highlights): mobile-first capture β€” selectionchange trigger, bottom sheet, editable text, explicit NIP-84 context - fix(relay): bound websocket connect; make cold-cache feed pull non-blocking
  • Aug 15, 2026 0.9.1
    - feat(reading): per-device reading typography β€” face, size, measure, leading, justify - feat(wm): SPC w v vertical split and SPC w x window kill - perf(search): detach profile backfill, batch existence, drop to the index - feat(relays): route resolution through kind claims - feat(relays): per-relay resolve-kind claims (storage, API, editor) - docs(zettel): mark the relay row layout fix shipped - fix(web): wrap the relay panel's rows and header instead of shrinking them - docs(zettel): correct the media-query claim in the relay row fix - docs(zettel): spec kind-scoped relay routing + relay row mobile fix
  • Aug 12, 2026 0.9.0
    - chore(release): 0.8.2 -> 0.9.0 - feat(nostrdown)!: global wikilinks resolve to kind-30818 only - perf(resolve): revert chunked backfill (relay-cost multiplier); concurrent wiki topic chunks - fix(android): retry the splash->engine navigate until the webview reports the engine origin - feat(stats): local DB inventory + count:kind / count:by - perf(reader): chunked wiki backfill with live progress; write-only apply - perf(embed): inference off the async runtime; per-tick budget for mobile - docs(zettel): A/B benchmark numbers for the perf sweep - docs(zettel): record the perf sweep's outcome in the eval report - perf(android): boot off the UI thread β€” splash-first WebView, capped LMDB map, small HNSW floor
    More…
    - perf(reader): equality-guarded status poll, stable effect keys, parse/highlight caches, visible-first resolve - perf(resolve): batch resolve_refs β€” one tree + sibling index per publication per request - perf(sections): three-phase load_sections β€” concurrent local pass, one batched relay REQ, early exit - perf(relay): bounded-concurrent read fanout; one REQ per relay in backfill - perf(tick): dirty-set embed sync, gated sections pass, batched checks, cheap saves - build(release): [profile.release] in both workspace roots; drop forced APK-clean - docs(zettel): performance audit 2026-08 β€” eval report, fix-* issue layer, engine-substrate base - fix(release): generate the Android keystore as real JKS, not JDK-default PKCS12 - feat(release): Android release pipeline β€” signed APK on the engine version train - fix(release): tarball lives in target/portable/, not target/portable/release/; reject non-version positional args - fix(release): tarball lives in target/portable/, not target/portable/release/; reject non-version positional args - feat(release): publish-release.sh β€” GitHub releases from tag + CHANGELOG + portable tarball
  • Aug 11, 2026 0.8.2
    - docs(zettel): buffer-mgmt UI β€” PaneTabs overflow pattern, SPC b o, mobile bar/drawer rework - feat(search): tag-filter values match their NIP-54 slug automatically - feat(web): mobile ☰ menu-edge preference β€” right by default, drawer follows - feat(web): mobile drawer activity/wiki/history rows; ☰ moves to the bottom bar - fix(web): mobile bar slots are work + search, not chat + work - docs(commands): phone-browser demo of the SPA mobile shell over LAN - feat(web): buffer-management UI β€” overflow-aware tab strip, SPC b o chords, mobile drawer statuses - feat(scripts): make-android-icon.sh β€” lab SVG export β†’ installed icon set - refactor(design): accordion sidebar for the icon lab - feat(design): icon-generation lab β€” identifier exports + settings loader
    More…
    - feat(mobile): Android app icon from the phototropic decay mark