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-reconnectdefault changed from 5 → 10.watch --jsonnow emits a{"type":"reconnecting","attempt":N,"delay_secs":D,"reason":"..."}NDJSON line on each reconnect attempt.KakaoCredentialscarries an optionalrest_tokenfield for the ~138-char Cache.db bearer token required bytalk-pilsner.kakao.comendpoints.resolve_base_credentials()auto-populatesrest_tokenfrom Cache.db on startup — best-effort, non-blocking if Cache.db is locked.- REST client selects the correct token per endpoint:
rest_tokenfor pilsner,oauth_tokenfor katalk. auth_flow: Cache.db copy timeout no longer propagates as an error — gracefully falls back toOk(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.
watchnow persists incoming messages (MSG and SYNCMSG packets) to a local SQLite cache.readmerges local cache with LOCO-fetched messages, deduplicating by logId. Displays[read] Merged N messages from local cachewhen cache contributes new messages.readalso back-fills the cache with LOCO results so future reads benefit from previously fetched history.- New
get_messages(chat_id, limit)API onMessageDbfor 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-yfor 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
--forceoverride 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:
OpenKakaoErrorwithis_retryable()for smarter reconnect decisions across all command paths. - Recovery state persistence:
auth-statusshows 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-chats→read,chatsacross all examples. - Added missing
--unattended --allow-watch-side-effectsflags 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.
readnow passes the target chatId in the LOGINLISTchatIds/maxIdsarrays during connection. The server returns recent messages (including received ones) in the login response'schatLogfield, making the initial read faster and more complete.- New
sync_chat_idsfield onLocoClient(Vec<(i64, i64)>) allows commands to request specific chat data from LOGINLIST before the first SYNCMSG round-trip. - Messages from LOGINLIST
chatLogare automatically deduplicated against SYNCMSG results by logId. - Cache.db-free auto-relogin via
email_cmdwith 3-tier fallback for credential recovery.
v0.7.0
Polish, Error Model, Output Consistency.
OpenKakaoErroradopted across watch, send, read, and loco_helpers paths withis_retryable()support for smarter reconnect decisions.- Profile module split:
profile.rs(1784 lines) refactored into a 5-fileprofile/directory (mod.rs, hints.rs, graph.rs, probe.rs, app_state.rs). --jsonoutput added forsend,send-file, andwatch(NDJSON streaming).- Dead code cleanup: zero
#[allow(dead_code)]remaining, removed unused variants and functions. - All 165+ tests passing, zero clippy warnings.