Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[1.0.0] - 2026-11-04
Changed
- Cookie Import Pairing (
AUTH-02): Replaced QR device pairing with Matrix-style Google session cookie import. The CLI (gmessages-rag pair --cookies) and web dashboard (GET/POST /pair) accept a cURL command, JSON map/array, rawCookie:header, or semicolon pairs. The importer validates the required Google cookies and starts the Gaia emoji challenge.
Added
- Periodic Connection Windows (
SYNC-01, #102): NewSYNC_MODE=periodicconnects forSYNC_WINDOW_MINUTESeverySYNC_INTERVAL_MINUTES, drains tracked conversations incrementally withETLPipeline.SyncBatch, then disconnects without clearing the session cookie.GM_PING_INTERVAL_MINUTESandGM_ALERT_TIMEOUT_COUNTreduce ping wakeups while keeping disconnect detection inside the watchdog grace.SYNC_MODE=continuouspreserves the previous always-connected behavior. - Living Dossier State Reconciliation Engine (
PIPE-03, #78): Injectable OpenAI-compatible reconciler (internal/pipeline/dossier.go,internal/pipeline/dossier_state.go) that folds new sessions into the current dossier, anchors relative dates against session timestamps, applies chronological overrides, transitions past events, persists versioned state plus audit history, and exports Markdown underDOSSIER_DIR. - Google Contacts Dossier Enrichment (
PIPE-04, #78):internal/pipeline/contacts.gomerges theListContactsroster (names, avatars, nicknames, number labels) into the reconciled dossier state and Markdown; the daemon debouncer now runs reconciliation after sessionization.
[1.0.0-rc2] - 2026-11-02
Added
- Multi-Tab Dashboard & Diagnostic Panels (
UI-05, #59): Embedded interactive Diagnostic Test Bench and Runtime Tuner panels directly into the Web Management Dashboard via 3-tab navigation (Overview,Diagnostic Test Bench,Runtime Tuner). - Automated Chromedp Layout Audit & Visual Regression Harness (
TEST-04, #57): Pure-Gochromedpvisual regression and ergonomics audit (internal/web/layout_audit_test.go) validating zero horizontal overflow, touch targets, and dark/light theme rendering across mobile, tablet, and desktop breakpoints. - Dashboard Accessibility & Inline Error Recovery (
UI-04, #58): WCAG 2.1 AA focus rings,table-responsivemobile overflow wrappers,aria-live="polite"real-time status badges, and retryable network error banners. - GHCR Container Packaging & Release Pipeline (
CI-03): Added.github/workflows/release.ymlautomating container build and publishing to GitHub Container Registry (ghcr.io/spelech/gmessage-rag:v1.0.0-rc2) on release tags.
Fixed
- Daemon Lifecycle Context Propagation (
DAEMON-01,TEST-03): Propagated Cobracmd.Context()andSESSION_PATHenvironment overrides inrunServefor deterministic HTTP connection draining and testing. - Quality & Concurrency Invariants: Maintained statement coverage across all packages with 0 data races in
go test -race ./....
[1.0.0-rc1] - 2026-11-02
Added
- Single-Device Gaia Emoji Pairing (
AUTH-04): Google Account (Gaia) emoji challenge flow (libgm.Client.DoGaiaPairing) after cookie import, enabling pairing on single-screen mobile devices without a camera (PR #36, commitfd1f7a3). - Standardized 3-Stage Batch ETL Pipeline (
PIPE-06): Cursor-paginated message backfill pipeline (Extract,Transform,Load) ininternal/pipeline/etl.goguaranteeing bounded memory consumption and transactional batch persistence (PR #48, commitbadf3e9). - Google Contacts Synchronization (
PIPE-04): Contact roster enrichment vialibgm.Client.ListContactsandListTopContacts(internal/gm/contacts.go) integrating real names, avatars, and phone labels into Living Dossiers (PR #47, commit836834b). - Web Management Dashboard & Visualizer (
UI-01): Embedded SPA served on/and/dashboardproviding live daemon status, database connectivity metrics, tracked contact toggle table, and cookie-import pairing console (PR #46, commit8dfb444). - Context-Cortex Style Diagnostic Test Bench (
UI-02): Developer workbench at/testbenchand/api/v1/testbench/*for ad-hoc MCP tool execution,<untrusted_conversation_data>boundary verification, Hybrid RRF scoring analysis, and OCR simulations (PR #45, commit91e8fcc). - Parameter & Pipeline Runtime Tuner (
UI-03): Dynamic hot-reload tuner (internal/config/tuner.go,/api/v1/tuner) to inspect and update runtime variables (debouncer duration, RRF weight, backfill batch sizes) without restarting the container (PR #44, commit2407ed6). - Dashboard Usability & Accessibility Enhancement (
UI-04): Responsive table overflow wrapper, CSS clamp/minmax cards, WCAG 2.1 AA ARIA attributes, >=44px touch targets, and inline network error recovery banner in Web Management Dashboard (internal/web/assets/index.html). - Standardized Prometheus Metrics & Health Probes (
OBS-01): Prometheus metrics registry (/metrics) and health check handler (/healthz,/health) monitoring ingestion counters, session gauges, and database pool reachability (PR #41, commit151d981). - Default Gaia Emoji Pairing & QR Demotion (
AUTH-05): Made Google Account (Gaia) emoji challenge pairing the default path for CLIpairand webGET /pair; demoted legacy QR code scanning to--qrand?mode=qr(PR #50). - Action-Aware Smart Debouncer (
PIPE-05): Enhanced idle debouncer ininternal/pipeline/debouncer.golistening to participant typing indicators (UpdateEvents_TypingEvent) and outbound drafts to prevent splitting active conversation turns (PR #40, commit09c2323). - Full-Resolution Media Retrieval (
SEC-02): Opt-inPULL_FULL_SIZE_MEDIAflag callinglibgm.Client.GetFullSizeImagebefore Vision OCR for high-clarity document analysis (PR #38, commit8d5b7e4). - Inferred Read & Delivery Receipt Heuristics (
DB-06): Response-inferred delivery state tracking ininternal/db/receipts.goinferring preceding message delivery for SMS and cross-carrier RCS contacts lacking native receipts (PR #37, commit0c88b51). - Universal Push Alerting & Connection Watchdog (
NOTIF-01,NOTIF-02,TRANS-04): Apprise and ntfy push alerting for mobile session re-auth and 15-minute debounced connection watchdog eliminating cell drop alert fatigue (PR #35, commit796debd). - Streaming Media Decryption & Content-Addressed Storage (
SEC-01): AES-GCM media decryption with two-tier SHA-256 storage (/data/media/xx/yy/<hash>.<ext>) and duplicate avoidance (PR #34, commit1141504). - Controls-Grade Protobuf Disturbance Simulation Fixture (
HARN-01): In-memory Google Messages WebSocket simulation server (internal/gm/testing/mock_server.go) injecting synthetic disconnects, bursty media, and corrupt payloads for hermetic CI testing (Issue #29, commitecac8e2). - MCP 2026-07-28 Protocol Support (
MCP-00..06): Full adherence to the 2026-07-28 Model Context Protocol specification with Streamable HTTP (POST /mcp), Server-Sent Events (GET /sse), stdio transport, ping JSON-RPC method, and 6 core conversation/dossier tools (commit57dad5e). - Living Dossier Engine & History Snapshotting (
DB-05,PIPE-03): Continuous LLM state reconciliation, temporal statement normalization, versioned audit snapshots (contact_dossier_history), and Markdown exports (/data/dossiers/<contact>.md) (PR #28, commitaf3fed9). - PostgreSQL 17 + pgvector Halfvec HNSW Storage (
DB-01..04): Schema migrations, contiguous 2-hour window grouping, and Hybrid RRF search CTE fusing full-text BM25 and vector cosine similarity (commit789964c).
Changed
- Unified Daemon Orchestration (
DAEMON-01): Replaced split server entrypoints with a unified roothttp.ServeMuxincmd/gmessages-rag/serve.gorouting UI, REST API, Test Bench, MCP, Prometheus metrics, and health probes over a single port (Issue #42, commitc279ebd). - Graceful Lifecycle Shutdown: Integrated
os/signalcontext cancellation (SIGINT,SIGTERM) across HTTP server, background ETL sync, watchdog workers, and PostgreSQL connection pool with orderly 10-second drain (Issue #42, commitc279ebd). - Project Structure Alignment: Aligned CLI commands under
cmd/gmessages-rag/main.go,serve.go, andpair.gowith Cobra command architecture.
Fixed
- Dead Code and Code Smells Purge (
CLEANUP-01,REFACTOR-01): Removed orphaned types and duplicate models across feature branches, converted raw error returns to wrapped%wformats, eliminated unchecked file close calls, and addedgoleakgoroutine leak validation (Issue #42, commitc279ebd). - Timestamp Normalization: Handled inconsistent microsecond vs millisecond timestamp scales emitted across different Android Google Messages versions.
Security
- Fail-Closed Prompt Injection Boundaries (
GUARD-01): Wrapped all external SMS/RCS texts, transcripts, and OCR outputs inside<untrusted_conversation_data>XML guardrail tags across all MCP tool responses (commit57dad5e). - Send Message Tool Guard (
GUARD-02): Restricted outbound message sending behindENABLE_MCP_SEND_MESSAGE=trueto prevent unauthorized message dispatch. - POSIX 0600 Session Permissions (
AUTH-01): Enforced strict POSIX0600file modes for session credential storage at/data/auth/session.json. - CI Static Vulnerability Auditing & Race Detection (
SEC-03): Integratedgovulncheckstatic call-graph vulnerability scanning andgo test -raceconcurrency validation in automated CI gates (Issue #30, commit30b0cb6). - Docker Hardening (
DOCKER-01): Multi-stage Alpine container build running under unprivileged non-root user withPUID/PGIDpermission mapping and immutable volume mounts (Issue #42, commitc279ebd).