CodePulse v2.1.28 — Reliability & Security Fixes
Fixed SQLite migration bug, Dashboard stats for free users, aligned all timeouts to 6 minutes, and fail-closed hook error handling.
Bug Fixes
- Fixed: "Failed to persist license state" error: Every CodePulse installation hit this error on every license state change. The SQLite migration for the
usage_monthcolumn used an expression default (strftime(...)) which SQLite rejects inALTER TABLE ADD COLUMN. The migration failed silently, leaving the column missing. Fixed with a constant default followed by an UPDATE. - Fixed: Dashboard Quick Stats showing misleading zeros: Sessions Today and Commits Reviewed are premium-only metrics sourced from API cost tracking and commit review engine respectively. Free-tier users saw confusing "0" values. Now displays a lock icon with a gold "Upgrade" link to the pricing page instead.
- Fixed: Commit approval timeout too short:
APPROVAL_BRIDGE_TIMEOUTincreased from 120 seconds to 360 seconds (6 minutes). Mobile users on phone calls or temporarily away from their device had commits auto-denied with "Commit timed out - Denied (120)" before they could respond. - Fixed: Timeout layers misaligned: Three independent timeout values (CLI hook timeout, hook script HTTP timeout, bridge approval timeout) were out of sync at 120s, 120s, and 360s respectively. The CLI killed the hook process at 120s while the bridge waited alone for 240 more seconds with no one listening. All three layers now aligned at 360 seconds.
- Fixed: Hook crash silently auto-allows commands: When the hook script crashed for any reason, the outer catch swallowed errors silently with no output. Claude Code received nothing, treated it as "no decision," and auto-allowed the command — including git commits — without Telegram approval. Now outputs a PreToolUse deny response on crash (fail-closed), blocking the command safely while keeping Claude's context clean.