Skip to content

v0.1.0

Latest

Choose a tag to compare

@soldni soldni released this 30 Mar 02:04
· 1 commit to main since this release

Release Notes (0.1.0)

New Features

  • Initial release of keio CLI for bidirectional sync between Google Keep and local markdown directories.
  • Core commands: keio export and keio import for full round-trip sync of notes.
  • Dual backend support: official Google Keep Enterprise REST API and unofficial gkeepapi (any Google account).
  • Auth commands: keio auth setup, keio auth login, keio auth logout, keio auth status.
  • Conflict detection via HTML comment footer (<!-- keio:{...} -->) embedded in each exported markdown file.
  • Attachment download on export with inline markdown references (![](Note/image.png)).
  • --images flag for semi-automated manual image upload during import (opens browser + file explorer, polls for attachments).
  • Checklist/list note support: automatically detects and round-trips Google Keep list notes as markdown checklists.
  • --dry-run and --force flags for both export and import.
  • Incremental sync via gkeepapi state caching.
  • Title collision handling with [short_id] disambiguation on export.

Fixes

  • Fix import incorrectly skipping all tracked untitled notes as "duplicate local title". The duplicate title check now applies only to notes going through the create path; tracked notes with keep_name bypass it.
  • Fix keio export --dry-run downloading attachments from the API. Dry-run now returns early before any attachment network I/O.
  • Fix keio auth status showing the enterprise oauth-token.json path when using gkeepapi. It now shows gkeepapi-state.json.

Housekeeping

  • Add 27 new tests covering: tracked untitled note import, replace path, dry-run behavior, duplicate keep_name detection, _effective_title logic, content_hash_matches, remote_is_newer, untitled/list note export, checklist edge cases, backward-compatible kiko: footer parsing, CRLF normalization, and auth token_path per method.
  • Add comprehensive "Implementation Deep Dive" section to CLAUDE.md/AGENTS.md documenting import/export decision trees, content hash invariants, footer lifecycle, attachment reference parsing, gkeepapi child item mechanism, _effective_title resolution, filename sanitization, replace semantics, error propagation, and --dry-run/--images behavior.

Full Changelog: 64f2756...v0.1.0