### Core Daemon & Architecture - [x] Local daemon process with Unix socket IPC - [x] Configuration loading via Viper (files + `GINKGO_*` env) - [x] Request/response IPC protocol for CLI ↔ daemon - [x] Namespace scoping on requests and storage - [x] Event log append on create/update/delete - [x] Move from JSON to Protobuf - [x] Remote server over TCP/QUIC - [x] Background sync service (replication to remotes) - [x] Payload-based replication events with opaque payloads and namespace IDs - [x] Replication signatures (Ed25519) with trusted signer verification - [x] Per-namespace E2EE for replication payloads (enc_v1) - [ ] Notification scheduler and delivery - [x] Multi-user ACLs for shared namespaces - [ ] Connection warm-up: start a QUIC handshake on typing/TUI open, keep it alive with brief pings for instant note syncs. ### Storage & Search - [x] SQLite backend (modernc) with tables: entries, events, tags, note_tags - [x] Full‑text search (FTS5) on title/body/tags - [x] Regex search with FTS prefilter (longest-token narrowing) - [x] CAS updates with conflict detection and error surfacing - [x] Tag projections and queries (Any/All), tag stats - [ ] Postgres backend instead of sqlite for server (maybe) - [x] Keyset pagination cursors for list/search ### CLI - [x] `note add` one-liner and editor flow (applies default tags) - [x] `note edit` with CAS, conflict info, `--force` reopen, `--keep-tmp` - [x] `note show` using shared formatter - [x] `note list` with tag filters (`--tags-any/--tags-all`) - [x] `note search fts|regex` with tag filters - [x] `import --file` (JSON array or NDJSON); creates via daemon; skips conflicts - [x] Namespace override `-n/--namespace` on `note` command - [x] `completion generate` for bash/zsh/fish - [x] `config generate` TOML with defaults - [x] `config generate --overwrite` and `--update` (merge missing keys, comment deprecated) - [x] `daemon` command to start the local service - [x] `note delete` subcommand - [x] Namespace delete subcommand - [x] Export (Markdown/JSON/NDJSON) utilities - [x] `note list --json` machine-readable output - [x] Time range filters for list/search (absolute timestamps and relative expressions like `-1d`, `-1d to -3d`) - [x] Paging for list/search output with configurable page size - [x] Pipe list/search output through a pager and stream pages (stop on early quit) ### TUI & Rendering - [x] Bubble Tea interactive table for `note list --bubble` - [x] Alternate screen mode (cleans up on exit) - [x] Dynamic resize (adapts column widths and height) - [x] Enter to exit and print selected note via shared formatter - [x] Shared detail formatter reused by CLI and TUI - [x] Minimal Markdown-to-plaintext renderer placeholder - [x] Glamour-based Markdown rendering for note bodies (themeable styling) - [x] In-TUI actions - [x] Show - [x] Edit - [x] Delete - [x] Filter modal with tag/time inputs (inherits filter flags) - [x] Paged TUI browsing with prefetch buffer and reverse paging - [x] Configurable TUI buffer ratio - [x] Viewport anchoring on prepend (unsafe hack; relies on bubbles/table internals) - [x] Move TUI controls hint into a dedicated modal, triggered by `?` ### Android client - [ ] Architect ### Import/Export & Data Tooling - [x] JSON importer (array or NDJSON) via daemon (ID generated server-side) - [x] Test data generator script producing `testdata/sample_notes.json` - [ ] Export commands (Markdown directory, JSON/NDJSON) - [ ] Progress and summary metrics for large imports/exports ### DevOps & Tooling - [x] Makefile for build/install (binary symlink) and systemd wiring - [x] Systemd user unit for always-on daemon - [x] Service name `ginkgod` - [x] Pre-commit hooks: `go fmt`, `go vet` - [x] CI pipeline (lint, build, basic smoke tests) - [x] Release packaging (archives, checksums, install script) ### Testing - [x] Unit tests for CLI helpers and IPC - [x] Paging tests for daemon/db/cli/tui - [ ] Golden tests for search and tag filters (maybe) - [ ] E2E tests - [x] Harness - [x] note add - [ ] note show - [ ] note search - [ ] note edit / delete
Core Daemon & Architecture
GINKGO_*env)Storage & Search
CLI
note addone-liner and editor flow (applies default tags)note editwith CAS, conflict info,--forcereopen,--keep-tmpnote showusing shared formatternote listwith tag filters (--tags-any/--tags-all)note search fts|regexwith tag filtersimport --file(JSON array or NDJSON); creates via daemon; skips conflicts-n/--namespaceonnotecommandcompletion generatefor bash/zsh/fishconfig generateTOML with defaultsconfig generate --overwriteand--update(merge missing keys, comment deprecated)daemoncommand to start the local servicenote deletesubcommandnote list --jsonmachine-readable output-1d,-1d to -3d)TUI & Rendering
note list --bubble?Android client
Import/Export & Data Tooling
testdata/sample_notes.jsonDevOps & Tooling
ginkgodgo fmt,go vetTesting