# mark — Changelog

## v1.0.1 — 2026-06-22

- Add `--full` extended-help flag (suite convention, per `SUITE_STANDARDS.md` §3).
  Prints the root long-help followed by every subcommand's long-help in one
  shot — `mark --full` or `mark <subcmd> --full`. Now passes `suite-lint.sh`.

## v1.0.0 — 2026-06-22

Initial release. Privacy-first, CLI-native bookmark manager built in Rust.

- Single static-shaped binary (`mark`) — no daemon, no server, no telemetry.
- SQLite + FTS5 storage at `$XDG_DATA_HOME/mark/bookmarks.db`.
  Schema includes a `bookmarks` table plus an external-content FTS5 virtual
  table indexed on `url`, `title`, `description`, `notes`, kept in sync via
  insert/update/delete triggers.
- URL normalization for duplicate detection: lowercased scheme + host,
  `www.` stripped, trailing slash removed, query parameters sorted, and
  tracking parameters dropped (`utm_*`, `mc_*`, `fbclid`, `gclid`, `ref_`,
  `yclid`, `msclkid`).
- Subcommands:
  - `add <URL>` — title / tags / note / collection / pin / rate flags.
  - `rm <ID|URL>` — confirmation prompt, `--force` skips it.
  - `edit <ID|URL>` — title / note / collection / rate / pin, plus
    `--tags` (replace), `--tags-add`, `--tags-remove`.
  - `ls` — filter by tag (AND logic), collection, domain, pinned, dead,
    minimum rating; `--sort created|updated|rating|title`;
    `--url-only` / `--json` for piping.
  - `search <QUERY>` — FTS5 BM25-ranked full-text search; same filters.
  - `open <ID|QUERY>` — launches `xdg-open` (or `--print` to stdout).
  - `copy <ID|QUERY>` — URL → system clipboard.
  - `pin` / `unpin` / `tag` — single-field mutations.
  - `recent` — newest N bookmarks.
  - `stats` — totals, collection count, top tags, top domains, dead-link %.
  - `domains` — every unique domain with counts (sort by count or alpha).
  - `init` — write default config and create the database directory.
  - `backup` — timestamped `.db` (via SQLite `VACUUM INTO`), `.json`, or `.md`.
    `--max-backups` retains the most recent N `.db` snapshots.
  - `restore` — replace from `.db` or merge from `.json`.
  - `import` — Netscape HTML (Firefox / Chrome / Safari / Pocket), native
    JSON, CSV. Folder hierarchy → collection. `--dry-run` parses without
    writing.
  - `export` — JSON / Markdown / HTML (Netscape, re-importable) / CSV.
  - `completions <SHELL>` — bash / zsh / fish / elvish / powershell.
- TOML configuration at `$XDG_CONFIG_HOME/mark/config.toml`.
  Sections: `[database]`, `[backup]`, `[output]`.
- Mandatory tagline on every `--help`:
  `[ mark ] ─ an independent project by johlem.net`.
- 11 tests green (6 unit + 5 integration); zero compiler warnings.

### Deferred to later releases (per spec)

- **v1.1** — `mark check` (async dead-link audit), `mark tui` (ratatui),
  `mark sync --rclone / --rsync`, `mark archive` (Wayback Machine),
  `mark refresh` (title re-fetch), `mark dupes`, git-backed backups.
- **v1.2** — `age` encryption backend, YubiKey PIV backend, `urlrecon`
  hook on `mark add --check`, encrypted export bundles, secure tmpfs DB.
- **v2.0** — browser-extension messaging host, local read-only HTTP API,
  AI-assisted tagging suggestions, `mark similar` via embeddings.
