Skip to content

Releases: base698/amythest

v1.5.0 — inline STL model viewer, presentation views

Choose a tag to compare

@base698 base698 released this 07 Oct 21:47

Amythest 1.5.0

Linked 3D models render in the note viewer, and the MCP surface gains private, expiring presentation views. Each tarball contains both binaries (amythest server, amy client).

Inline STL models

An ![[model.stl]] embed used to be a download link. It is now an interactive canvas — drag to orbit, scroll to zoom, double-click to reset — with the file name and triangle count underneath.

No 3D library was added. An STL is a flat list of triangles with face normals, so parsing is a loop over a DataView and drawing is a single shader; a scene graph would have cost more than the rest of the bundle. The viewer is a 7KB chunk, loaded only on pages that actually embed a model, the same way mermaid is.

Details that matter on real files:

  • The binary/ASCII sniff uses the triangle-count arithmetic, not the solid header — plenty of binary exporters write that header too.
  • Zero-length face normals are replaced with the triangle's geometric normal, since they otherwise shade as black facets.
  • The mesh colour follows --accent with a rim light from --fg, so a model reads against both light and dark backgrounds and repaints on theme change.

Failures degrade rather than break: no WebGL, a fetch error, an oversized file, or a mesh with no triangles all restore the plain download link with a note, so a reader never loses access to the file.

Private expiring presentation views

present_content is an authenticated MCP tool for showing indexed vault content without publishing it. Opening assets makes an immutable copy bundle under the data directory — outside the vault and the search index — reachable at a random, expiring URL; opening a note returns its existing canonical URL instead. No source file is changed and no public share is created. The site's existing access boundary still applies. See docs/presentations.md.

Install

tar xzf amythest-1.5.0-<os>-<arch>.tar.gz
install -m 0755 amythest amy ~/bin/

SHA-256 checksums in checksums.txt.

v1.4.0 — markdown kanban boards, herdr plugin, themeable fonts

Choose a tag to compare

@base698 base698 released this 26 Sep 02:16

Amythest 1.4.0

Kanban boards become ordinary markdown notes you can edit by hand, amy gets a herdr plugin, and typography joins the theme system. Each tarball contains both binaries (amythest server, amy client).

Kanban boards are markdown notes

Board files were markdown wrappers around a JSON blob, followed by a derived rendering that went stale the moment you touched it. A board is now a note:

---
kanban: 4
name: personal
displayName: Personal
meta:
  k_abc: {created: …, updated: …}
---

# In progress

## Fix the deploy pipeline ^k_abc
due:: 2026-09-10
priority:: p1
labels:: #infra #urgent

Free-form markdown description.

### Comments

- **2026-09-01T10:00:00Z — ada:** looks good

# H1 headings are columns, ## H2 headings are cards (the trailing ^block-id is the stable card id), key:: value lines are the card's fields, labels are #tags, and the body is whatever markdown you want. Timestamps, attachments, audit entries and comment ids live in the frontmatter meta map so card bodies stay human.

  • Hand edits are first-class. Retitle a heading, move a card by moving it under another column, or add a brand-new ## card — the server picks it all up. A hand-added card gets a stable id that is persisted on the next write. Unknown column headings fail with the list of valid ones.
  • Migration is automatic. Opening or listing a board converts it in place, from the previous JSON-in-markdown format (both the current and the predecessor marker style) or the short-lived whole-file YAML. Nothing to run.
  • cmd/kanban-migrate-check is a read-only dry run that parses, re-renders and deep-compares a vault's boards without writing.

v4 reserves # and ## for structure, so headings inside card descriptions are demoted to ### once, during migration.

amy — herdr plugin

herdr/ registers amy with herdr: a board pane running the full TUI in a split, and a quick-capture popup that takes one line and files it in today's daily note. Install with herdr plugin install base698/amythest/herdr, then bind the actions:

[[keys.command]]
key = "prefix+a"
type = "plugin_action"
command = "amythest.quick-capture"

Opening the board is idempotent — it focuses a running board rather than splitting a second one, preferring the invoking workspace. amy capture also works headless (amy capture "call the vet"), so agents and scripts can file a task without the TUI.

amy — tasks while reading, and files that aren't task lists

  • Act on tasks in the note reader. Checkbox lines in a note were plain text; t now grabs them, j/k walk between them, space toggles and D runs the two-stage cancel-then-delete. Previously a task you were looking at could only be changed by going back to the tasks view and finding it again.
  • H stops collecting tasks from a file, setting tasks: false in its frontmatter. The indexer always honored that opt-out but it had no terminal affordance, so a watchlist — a file whose checkboxes are a list, not a queue of work — kept filling the task views. The note stays readable, linked and searchable.

Themes — typography

Both surfaces read their type from two new theme tokens, font-body and font-mono. The stock look is unchanged; omarchy now uses a terminal mono stack across the notes site and the kanban board. Custom themes can set fonts like any other token:

themes:
  typewriter:
    light:
      font-body: '"Courier Prime", "Courier New", monospace'

Install

tar xzf amythest-1.4.0-<os>-<arch>.tar.gz
install -m 0755 amythest amy ~/bin/

SHA-256 checksums in checksums.txt. Boards migrate on first open; no manual step.

v1.3.1 — themeable fonts

Choose a tag to compare

@base698 base698 released this 04 Sep 14:59

Amythest 1.3.1

Fonts join the theme system. Each tarball contains both binaries (amythest server, amy client); server + assets upgrade needed for this one.

Changed

  • Typography is themeable. Both the notes site and the kanban board read their type from two new theme tokens, font-body and font-mono. The stock look is unchanged.

  • Omarchy goes full terminal: the synthwave theme now sets a mono stack (JetBrains Mono → Cascadia Code → Fira Code → system mono) across the whole UI — as a proper rice should.

  • Custom themes in amythest.yaml can set fonts like any other token (quoted names supported, generated CSS stays injection-proof):

    themes:
      typewriter:
        light:
          font-body: '"Courier Prime", "Courier New", monospace'
          accent: "#6b4f2a"

Install

tar xzf amythest-1.3.1-<os>-<arch>.tar.gz
install -m 0755 amythest amy ~/bin/

SHA-256 checksums in checksums.txt.

v1.3.0 — themes: omarchy + custom palettes (web & amy)

Choose a tag to compare

@base698 base698 released this 03 Sep 20:58

Amythest 1.3.0

Themes, everywhere. The stock light/dark look stays the default on both surfaces; omarchy — a synthwave sunset — ships as the first alternate, and custom palettes are a few yaml lines away. Each tarball contains both binaries (amythest server, amy client).

Web UI

  • Theme picker at the bottom of the sidebar: default and omarchy built in, plus anything you define. The choice persists per browser (localStorage) and rides along with the existing ◐ light/dark toggle — every theme has a light and a dark face.

  • Omarchy: light is a warm dawn; dark is the night drive — deep purple ground, hot pink accent, sunset-orange highlights. The kanban board is themed too.

  • Custom palettes in amythest.yaml, served as generated CSS on /gen/themes.css (token allowlist, injection-safe; a single-mode theme covers both modes):

    themes:
      hotrod:
        light: {accent: "#d40000", mark: "#ffe08a"}
        dark:  {accent: "#ff2800", bg: "#140000"}

    Tokens: bg, bg-alt, fg, fg-muted, fg-faint, accent, accent-soft, border, highlight, mark.

  • The SPA navigation morph now carries the palette (and keeps carrying dark mode).

amy

  • T opens the theme picker — moving the cursor previews each theme live across the whole UI, enter keeps it for the session, esc restores.

  • Same built-ins (default, omarchy); persist with theme: omarchy in cli.yaml, override ad hoc with AMY_THEME.

  • Custom palettes in cli.yaml inherit every field they don't set:

    theme: hotrod
    themes:
      hotrod:
        accent: "#ff2800"
        due: "#ffaa00"

    Fields: header/status fg+bg, accent, title, dim, due, blocked, link, border, search fg+bg, danger fg+bg, p0–p2. Values are ANSI-256 indexes or hex.

Install

tar xzf amythest-1.3.0-<os>-<arch>.tar.gz
install -m 0755 amythest amy ~/bin/

SHA-256 checksums in checksums.txt. Server upgrade required for the web picker; amy themes work standalone.

v1.2.1 — az boards: scrolling, fuzzy filter, @Me, comments

Choose a tag to compare

@base698 base698 released this 02 Sep 19:50

Amythest 1.2.1

A patch release hardening the Azure Boards views from 1.2.0 against real, busy boards. Server unchanged — upgrading the amy binary alone is enough. Each tarball contains both binaries (amythest server, amy client).

Fixed

  • Board columns scroll instead of overrunning. Rows wider than the column used to wrap (breaking the row budget) and clipped cards were unreachable. Every card/work item now renders as a single width-capped row, and each column is a scroll window that follows the cursor with ↑/↓ N more markers. Applies to Azure boards and regular kanban boards alike.
  • Work item comments show on the card. az boards work-item show never returns comment text, so the card claimed comments existed but showed none. The discussion is now fetched from the ADO REST comments endpoint — AZURE_DEVOPS_EXT_PAT (Basic) when set, else an AAD token via az account get-access-token — and rendered with author, date, and HTML stripped. Posting with c refreshes the thread.
  • work-item show no longer fails. The API rejects the default --expand all combined with --fields; the detail fetch now passes --expand none.
  • Zero-row queries are an empty board, not a parse error. az boards query writes zero bytes (not []) when the WIQL matches nothing.

Added

  • / fuzzy-filters boards live. Results narrow keystroke by keystroke across all columns; each query token subsequence-matches within a single word (trrfrm → "terraform", dply pipln → "deploy pipeline"). Enter keeps the filter, / then esc clears it.
  • f shows only your work items on Azure boards, via WIQL [System.AssignedTo] = @Me — exact regardless of display-name formatting, cached separately from the full board.

Install

tar xzf amythest-1.2.1-<os>-<arch>.tar.gz
install -m 0755 amythest amy ~/bin/

SHA-256 checksums in checksums.txt.

v1.2.0 — beams gem intro + Azure Boards virtual boards

Choose a tag to compare

@base698 base698 released this 02 Sep 18:51

Amythest 1.2.0

An amy-focused release: the client opens with a rendered text-effect intro, and the boards screen learns to host Azure Boards. Each tarball contains both binaries (amythest server, amy client); pure Go, no runtime dependencies. The server is unchanged since 1.1.0 — upgrading the amy binary alone is enough.

amy — gem intro

  • The today view's amethyst now arrives on purple beams: a pre-rendered ttfx (TerminalTextEffects) pass baked into the binary (13KB), playing at startup before the built-in shimmer takes over. No external tooling needed.
  • AMY_GEM_FX=off disables it; AMY_GEM_FX="<effect> [flags]" runs any live ttfx effect instead when the ttfx binary is on PATH (or AMY_TTFX=/path). Regenerate the embedded frames with mise run gemfx.

amy — Azure Boards virtual boards

  • Define virtual boards in ~/.config/amythest/cli.yaml (amy source init azboards scaffolds it): org + project + System.AreaPath + work item type, with an optional explicit column list. Everything runs through the az CLI with the azure-devops extension — no tokens in yaml, ever.
  • Virtual boards appear in the boards screen (3) marked [azure] and open a familiar column UI where columns are System.State values:
    • h/l/j/k navigate, enter opens the work item detail (HTML description flattened for the terminal).
    • m moves a card between columns — a real state transition via az boards work-item update --state.
    • c posts a discussion comment, o opens the work item in the browser, / searches across columns.
  • Caching: board lists are held for 60s and item details for 5min so navigation doesn't re-invoke az; any move or comment invalidates, and r forces a refresh.
  • Logged-out is a first-class state: when az isn't authenticated the board shows the exact fix (az devops login --organization <org>, or AZURE_DEVOPS_EXT_PAT) instead of an error trail, and the sources screen (0) reports the same in its health row.
  • Columns are discovered from observed states (ADO's default progression ordered first) when not configured.

Install

tar xzf amythest-1.2.0-<os>-<arch>.tar.gz
install -m 0755 amythest amy ~/bin/

SHA-256 checksums in checksums.txt. Azure Boards prerequisites: brew install azure-cli && az extension add --name azure-devops, then az login and az devops login --organization <org>.

Amythest 1.1.0

Choose a tag to compare

@base698 base698 released this 01 Sep 20:23

Amythest 1.1.0

Notes browsing grows up, the dataview engine reaches the terminal, amy learns to speak to external ticketing systems, and the server gains production-service hardening. Each tarball contains both binaries (amythest server, amy client); pure Go, no runtime dependencies.

amy — notes browser & dataview

  • Browse layer: tab in the notes view flips between search and a folder tree with recursive counts, Recent / Untagged / Tags virtual folders, modified/title sort, and filter prefixes (t:tag, f:folder, plain title text, g: → server full-text search).
  • Preview pane: the selected note renders beside search results and the browse tree on wide terminals (debounced, cached); p toggles.
  • Reader upgrades: b opens a navigable backlinks panel, tags show in the header, and ```tasks query blocks render as live results (the dashboard-note dataview experience) with inline errors.
  • Note editing: e opens the note in $EDITOR and saves through the new PUT /api/note — whole-file hash lock, frontmatter preserved, conflicts keep your edit in the temp file.
  • Bases view (6): the vault's .base files as tables — groups, v cycles views, enter opens the row's note, e edits a frontmatter property in place. Backed by new JSON APIs (/api/bases, /api/base with row-parallel note slugs, /api/notes).

amy — multiple sources

  • New internal/source seam: external ticketing systems merge into the Today view and get a dedicated browsing view (5), with per-source health on 0.
  • Jira ships as the first provider — stub mode (amy source init jira, demo fixtures) works before credentials exist; the HTTP client is a documented skeleton (env-only JIRA_EMAIL/JIRA_API_TOKEN). Issue actions: open in browser, manual comment, pull onto a board as a card carrying a Source: jira:KEY reference, send to a herdr agent. No state ever writes back. Azure DevOps is the sketched second provider.

Server & web

  • Service hardening (all opt-in, defaults unchanged):
    • Health probes: /probes/liveness + /probes/readiness (named-check registry; 503 lists failing checks), configurable paths, /health kept as alias.
    • Structured logging: AMYTHEST_LOG_FORMAT=json|text, level/output/source knobs, per-request correlation IDs (X-Request-Id, configurable) echoed and attached to a context logger, one access-log line per request (probes at debug), documented logging.Wrap handler seam, secrets never logged.
    • Auth: AMYTHEST_AUTH_MODE=off|static|jwt with AMYTHEST_AUTH_PROTECT=mcp|ui|all. JWT mode validates bearer tokens against a JWKS: signature by kid, exp/nbf with leeway, iss/aud when configured, algorithm allowlist, key-rotation refresh, optional scope gate, probes always exempt, fail-fast startup on bad config.
  • Task recurrence editing API (/api/tasks/recurrence) with full Obsidian notation incl. every N weeks on <day> and … when done; 🏁 parsed as a field boundary.
  • Explorer tree groups date-named notes (Daily Notes, journals) into collapsible month folders; mobile web gets a collapsible ☰ navigation drawer.
  • Quick-add task API (/api/tasks/add, daily note created on demand) powering amy's +.

Tooling

  • .mise.toml: pinned toolchain (go 1.27, node 26) and build / test / run / deploy tasks — mise run deploy builds natively and restarts the service.

Install

tar xzf amythest-1.1.0-<os>-<arch>.tar.gz
install -m 0755 amythest amy ~/bin/

SHA-256 checksums in checksums.txt. Config reference for the new hardening settings is in the README.

Amythest 1.0.0

Choose a tag to compare

@base698 base698 released this 24 Aug 19:14

Amythest 1.0.0

First release. Amythest is a self-hosted notes, tasks, and kanban server for an Obsidian-style markdown vault — plus amy, an interactive terminal client. Each tarball contains both binaries (amythest server, amy client); pure Go, no runtime dependencies.

amythest — the server

  • Notes: markdown vault rendering with wikilinks, tags, graph/content index, and FTS5 full-text search. ⌘K search modal with slash commands (/today jumps to today's daily note; registry is one entry per new command). Raw-note API for programmatic clients.
  • Tasks: Obsidian Tasks-compatible engine over your vault — emoji metadata (📅 due, ⏳ scheduled, 🛫 start, 🔁 recurrence, ✅/❌, priorities), a query language (not done, due before tomorrow, path includes, group by, …), and write APIs for toggle, due date, 🔁 recurrence, priority, triage, cancel → purge (two-stage delete), and quick-add (daily note created on demand). All writes are optimistic-locked against the file hash and atomically committed under a vault lock. Recurrence understands the full notation, including every N weeks on <day> and completion-relative … when done.
  • Kanban: boards live as markdown files inside the vault. Six-lane workflow (triage → backlog → ready → in progress → verify → done), cards with markdown descriptions and live checkboxes, comments, attachments, labels/priority/due/blocked, cross-board moves with a crash-safe journal, done-archive with restore, and per-board file locking.
  • Integrations: share/text capture, base tables, and an MCP server (bearer token) exposing notes, tasks, and kanban tools to AI agents.
  • Single static binary with the web UI embedded. Binds loopback by default — pair with Tailscale Serve or any TLS proxy. Prometheus metrics at /metrics.

amy — the terminal client

  • Today view: everything due — overdue and due-today vault tasks merged with due or focused kanban cards — beside a shimmering ASCII amethyst. x reveals what you finished today, and completions can be undone in place.
  • Views: 1 today · 2 tasks · 3 boards · 4 notes, with vim-style / n N search everywhere.
  • Doing things: space toggles tasks and card checklist items (Obsidian ✅ done-dates, recurrence-aware with catch-up feedback), d archives a card, m opens a move picker (lanes and other boards), D deletes with confirmation (tasks cancel first, then purge; cards delete permanently — archive included), + quick-adds a task (daily note by default, any searched note otherwise) or a card into the focused column.
  • Editing: e edits a task's due date and 🔁 repeat rule in two prompts, or opens a whole card in $EDITOR (title, status, priority, due, labels, blocked, description — only changed fields are sent). c comments on cards.
  • Notes: search the vault, read notes with soft wrapping, follow [[wikilinks]] with tab/enter.
  • Agent hand-off: a sends any note or kanban card — metadata, body, comments — to a running herdr coding agent as framed context.
  • Config via ~/.config/amythest/cli.yaml + env; session cache shared with the bundled API scripts.

Install

Download the tarball for your platform, then:

tar xzf amythest-1.0.0-<os>-<arch>.tar.gz
install -m 0755 amythest amy ~/bin/   # or anywhere on PATH

Server quickstart and configuration (vault path, kanban env vars, amy endpoint setup) are in the README. SHA-256 checksums in checksums.txt.