Skip to content

Roadmap #1

@iMithrellas

Description

@iMithrellas

Core Daemon & Architecture

  • Local daemon process with Unix socket IPC
  • Configuration loading via Viper (files + GINKGO_* env)
  • Request/response IPC protocol for CLI ↔ daemon
  • Namespace scoping on requests and storage
  • Event log append on create/update/delete
  • Move from JSON to Protobuf
  • Remote server over TCP/QUIC
  • Background sync service (replication to remotes)
  • Payload-based replication events with opaque payloads and namespace IDs
  • Replication signatures (Ed25519) with trusted signer verification
  • Per-namespace E2EE for replication payloads (enc_v1)
  • Notification scheduler and delivery
  • 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

  • SQLite backend (modernc) with tables: entries, events, tags, note_tags
  • Full‑text search (FTS5) on title/body/tags
  • Regex search with FTS prefilter (longest-token narrowing)
  • CAS updates with conflict detection and error surfacing
  • Tag projections and queries (Any/All), tag stats
  • Postgres backend instead of sqlite for server (maybe)
  • Keyset pagination cursors for list/search

CLI

  • note add one-liner and editor flow (applies default tags)
  • note edit with CAS, conflict info, --force reopen, --keep-tmp
  • note show using shared formatter
  • note list with tag filters (--tags-any/--tags-all)
  • note search fts|regex with tag filters
  • import --file (JSON array or NDJSON); creates via daemon; skips conflicts
  • Namespace override -n/--namespace on note command
  • completion generate for bash/zsh/fish
  • config generate TOML with defaults
  • config generate --overwrite and --update (merge missing keys, comment deprecated)
  • daemon command to start the local service
  • note delete subcommand
  • Namespace delete subcommand
  • Export (Markdown/JSON/NDJSON) utilities
  • note list --json machine-readable output
  • Time range filters for list/search (absolute timestamps and relative expressions like -1d, -1d to -3d)
  • Paging for list/search output with configurable page size
  • Pipe list/search output through a pager and stream pages (stop on early quit)

TUI & Rendering

  • Bubble Tea interactive table for note list --bubble
    • Alternate screen mode (cleans up on exit)
    • Dynamic resize (adapts column widths and height)
    • Enter to exit and print selected note via shared formatter
  • Shared detail formatter reused by CLI and TUI
  • Minimal Markdown-to-plaintext renderer placeholder
  • Glamour-based Markdown rendering for note bodies (themeable styling)
  • In-TUI actions
    • Show
    • Edit
    • Delete
  • Filter modal with tag/time inputs (inherits filter flags)
  • Paged TUI browsing with prefetch buffer and reverse paging
  • Configurable TUI buffer ratio
  • Viewport anchoring on prepend (unsafe hack; relies on bubbles/table internals)
  • Move TUI controls hint into a dedicated modal, triggered by ?

Android client

  • Architect

Import/Export & Data Tooling

  • JSON importer (array or NDJSON) via daemon (ID generated server-side)
  • 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

  • Makefile for build/install (binary symlink) and systemd wiring
  • Systemd user unit for always-on daemon
  • Service name ginkgod
  • Pre-commit hooks: go fmt, go vet
  • CI pipeline (lint, build, basic smoke tests)
  • Release packaging (archives, checksums, install script)

Testing

  • Unit tests for CLI helpers and IPC
  • Paging tests for daemon/db/cli/tui
  • Golden tests for search and tag filters (maybe)
  • E2E tests
    • Harness
    • note add
    • note show
    • note search
    • note edit / delete

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions