Skip to content

Amythest 1.1.0

Choose a tag to compare

@base698 base698 released this 01 Sep 20:23
· 38 commits to main since this release

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.