Repository navigation
SupportOS v1.7.0 — The Activity-Intelligence Release
What's new
SupportOS stops treating conversations as rows with two timestamps and starts treating them as event histories with a lifecycle.
🕰️ Conversation activity engine
A normalized local event log derived honestly from the Help Scout mirror — messages, notes, lineitem action records, observed changes, local writes — deduplicated with stable keys and honestly sourced. Help Scout exposes no historical change log, so observations are labeled as observations (source: sync, observed: true) and conversations with incomplete thread history report unknown instead of guessing.
🎯 Derived activity fields + deterministic response states
14 indexed activity timestamps per conversation (first response, waiting-since, last status/tag/field change…) power a deterministic response-state machine: Needs First Response / Customer Waiting / Agent Waiting / Recently Responded / Never Responded / Closed / Snoozed / Unknown — one SQL CASE shared by the list, the views and the detail view. No LLM anywhere in the classification.
📅 Date & activity filters (DST-safe)
14 activity fields × 16 date modes in your IANA timezone, with calendar-day and rolling-window semantics labeled distinctly. Verified against the 23h spring-forward day, the 25h fall-back day, Lord Howe's 24.5h day and Kathmandu's 5:45 offset — which caught and fixed a real dayjs timezone-plugin DST bug before release.
💾 Saved Inbox Views
Structured condition trees (AND/OR groups, 21 condition kinds) compiled to parameterized SQL at open time — a view saved with "today" always means the day it's opened. Save-time compile checks, dry-run preview, versioned definitions.
🚩 Priority & custom ticket states
A local SupportOS priority (None→Urgent, optional Help Scout custom-field mapping off by default) and a configurable state layer (New / Investigating / Waiting on Customer / Waiting on Engineering / Ready to Verify / Resolved + your own) with full transition history, per-state lifecycle metrics and bottleneck ranking — layered on Help Scout status, never replacing it.
Verification
- 344/344 tests (+56): DST boundaries across four zone shapes, response-state SQL/JS equivalence, event derivation + dedup across re-syncs and rebuilds, view compilation for every condition kind (incl. injection-shaped values), saved-view dynamic re-resolution, the v1.4→v1.7 in-place upgrade path
- Black-box audit extended to 335 checks (0 HIGH / 0 MEDIUM): hostile filters, hostile view definitions, injection-shaped payloads, timeline chronology, rebuild idempotency
- Human-like browser pass on the real v1.6.0 demo database upgraded in place (314 conversations → 672 derived events): all 14 pages walked with zero console errors
Full changes: CHANGELOG
Installers attach when the desktop workflow finishes. Source: clone and npm run build — or try the 2-minute demo (LOCAL_DEMO_MODE=true, no credentials needed).