Releases: Kyrzin/kybase
Releases · Kyrzin/kybase
Release list
v1.2 — Public share links + audit hardening
First tagged release since 1.0. Two things happened: a new feature — public share links — and six hardening passes driven by a multi-agent security audit.
✨ New: public read-only share links
Share any note with a link — no account needed on the reader's side.
- Share button on a note generates
/share/<token>(256-bit random token) with optional expiry; revoke any time. - Access tab in Settings lists everything that is currently public — the antidote to "shared and forgot". Permanent links sort to the top.
- Threat model in one sentence: a link is access — revoke the ones you no longer need.
- The public page is deliberately austere: rendered markdown only, wikilinks degrade to plain text (no probing for other notes' existence), hardened renderer shared with the app,
CSP default-src 'none',X-Robots-Tag: noindex, its own rate-limit bucket, and a single indistinguishable 404 for invalid/expired/revoked tokens. - Sharing is intentionally not exposed over MCP — an agent must not be able to silently publish your notes.
🔐 Security hardening (audit follow-ups)
- OAuth now issues revocable per-client tokens instead of handing out the master secret: 256-bit random, sha256-only at rest, 90-day sliding expiry, scoped to the MCP endpoint only. "Connected clients" section in Settings with one-click revoke.
- PKCE is S256-only;
redirect_urivalidation; rate limiting on failed auth attempts. X-Frame-Options, non-rootUSERin the Docker image, wildcard escaping in MCPget_notelookups.
🛠 Reliability & polish
- Embeddings fix: notes exceeding the local model's context window silently never got embedded (36 of 85 in the wild). Adaptive head-truncation + retry of pending embeddings on startup — semantic search now covers everything.
- Migration runner: schema applies itself on startup.
- Markdown export/import — your notes are never locked in.
- CI on every push and PR (tsc, lint, tests, production build); pagination on
GET /api/notes; atomic renames;[[Title#Section]]wikilink support; SECURITY.md and a backup recipe indocs/.
⚖️ License
Relicensed from PolyForm Noncommercial to AGPL-3.0 (commercial license available on request).
Upgrading: git pull && docker compose up -d --build — migrations apply automatically. See docs/upgrading.md.