OpenKakao

Changelog

Release notes for OpenKakao.

Changelog

v0.9.4

Watch auto-reconnect backoff + Pilsner REST token + test coverage expansion.

  • watch --reconnect-delay <sec>: configurable initial reconnect backoff (default 2s, doubles each attempt).
  • watch --reconnect-max-delay <sec>: cap on reconnect backoff (default 60s).
  • watch --max-reconnect default changed from 5 → 10.
  • watch --json now emits a {"type":"reconnecting","attempt":N,"delay_secs":D,"reason":"..."} NDJSON line on each reconnect attempt.
  • KakaoCredentials carries an optional rest_token field for the ~138-char Cache.db bearer token required by talk-pilsner.kakao.com endpoints.
  • resolve_base_credentials() auto-populates rest_token from Cache.db on startup — best-effort, non-blocking if Cache.db is locked.
  • REST client selects the correct token per endpoint: rest_token for pilsner, oauth_token for katalk.
  • auth_flow: Cache.db copy timeout no longer propagates as an error — gracefully falls back to Ok(None) so commands work even when KakaoTalk is locking the directory.
  • Added 14 new unit tests: 11 for export.rs (ExportFormat parsing, resolve_author, JSON/CSV/TXT format) + 3 JSON output parsing tests (doctor, auth-status, cache-stats). 257 tests total, zero warnings.

v0.9.3

Local message cache integration.

  • watch now persists incoming messages (MSG and SYNCMSG packets) to a local SQLite cache.
  • read merges local cache with LOCO-fetched messages, deduplicating by logId. Displays [read] Merged N messages from local cache when cache contributes new messages.
  • read also back-fills the cache with LOCO results so future reads benefit from previously fetched history.
  • New get_messages(chat_id, limit) API on MessageDb for ordered message retrieval.
  • 3 new integration tests for get_messages (20 total message_db tests).

v0.9.2

Edit command + completion promise.

  • edit <chat_id> <log_id> <message>: edit messages via LOCO REWRITE command. Returns -203 on macOS (dtype=2 platform restriction) — implemented for future Android support.
  • --completion-promise: global flag that prints [DONE] to stdout after any command completes successfully. Designed for LLM agent integration where the caller needs a reliable completion signal.
  • E2E verified: MemoChat + Christine (send/completion-promise pass, edit blocked by macOS -203 as expected).
  • 240 tests passing, zero clippy warnings.

v0.9.1

React command + SYNCACTION handler.

  • react <chat_id> <log_id>: add reaction to a message via LOCO ACTION command (type=1 = like).
  • SYNCACTION push handler in watch: real-time reaction events from other users now appear in watch output.
  • CI fix: version integration test now uses env!("CARGO_PKG_VERSION") instead of a hardcoded string.
  • 240 tests passing, zero clippy warnings.

v0.9.0

Delete, mark-read, and protocol capture.

  • delete <chat_id> <log_id>: delete a message via LOCO DELETEMSG. Works in DM chats (creates feedType:14 deletion marker). Requires -y for non-interactive use.
  • mark-read <chat_id> <log_id>: mark messages as read up to a logId via NOTIREAD (fire-and-forget).
  • watch --capture: output unknown LOCO push packets as structured NDJSON for protocol reverse engineering.
  • SYNCDLMSG handler: delete events from other users now trigger hooks/webhooks in watch mode.
  • SYNCREWR handler: edit event placeholder (pending protocol confirmation).
  • probe --capture-pushes: extended timeout (10s) idle listen mode for capturing push packets.
  • Open-chat safety checks for delete (same --force override as send).

v0.8.0

Stability, security, quality, tests, and performance.

  • 230+ tests across unit, integration, and CLI smoke tests.
  • Security hardening: zeroize sensitive memory, validate outbound messages, enforce HTTPS for remote webhooks.
  • Error model: OpenKakaoError with is_retryable() for smarter reconnect decisions across all command paths.
  • Recovery state persistence: auth-status shows failure history, cooldowns, and last recovery source.
  • Performance: rate limiting for unattended sends, hook/webhook execution, and open-chat reads.

v0.7.2

Documentation overhaul.

  • Comprehensive website docs update for v0.7.1 features: MemoChat usage, LOCO error codes, watch state recovery, timestamp validation, rate limiting guidance, encryption fragility warning, and changelog page.
  • Legacy command naming cleanup: loco-read, loco-chatsread, chats across all examples.
  • Added missing --unattended --allow-watch-side-effects flags to automation examples.
  • Expanded credential loading order with detailed descriptions and token type guidance.
  • LOGINLIST sync documentation in protocol pages (commands.mdx, connection.mdx).

v0.7.1

LOGINLIST chatLog sync for faster reads.

  • read now passes the target chatId in the LOGINLIST chatIds/maxIds arrays during connection. The server returns recent messages (including received ones) in the login response's chatLog field, making the initial read faster and more complete.
  • New sync_chat_ids field on LocoClient (Vec<(i64, i64)>) allows commands to request specific chat data from LOGINLIST before the first SYNCMSG round-trip.
  • Messages from LOGINLIST chatLog are automatically deduplicated against SYNCMSG results by logId.
  • Cache.db-free auto-relogin via email_cmd with 3-tier fallback for credential recovery.

v0.7.0

Polish, Error Model, Output Consistency.

  • OpenKakaoError adopted across watch, send, read, and loco_helpers paths with is_retryable() support for smarter reconnect decisions.
  • Profile module split: profile.rs (1784 lines) refactored into a 5-file profile/ directory (mod.rs, hints.rs, graph.rs, probe.rs, app_state.rs).
  • --json output added for send, send-file, and watch (NDJSON streaming).
  • Dead code cleanup: zero #[allow(dead_code)] remaining, removed unused variants and functions.
  • All 165+ tests passing, zero clippy warnings.

On this page