What's Changed in v0.1.5
This release fixes a critical datetime comparison bug that was causing flaky tests, and adds comprehensive placeholder detection for improved developer experience.
🐛 Bug Fixes
Critical: DateTime Comparison Fix
The flaky test test_file_reservation_conflict_ttl_transition_allows_after_expiry was failing intermittently with:
TypeError: can't compare offset-naive and offset-aware datetimes
Root Cause: SQLite stores datetimes without timezone info (naive). When comparing Python datetime objects with SQLite DATETIME columns via SQLAlchemy, both must be naive to avoid comparison errors.
Fix: Added _naive_utc() helper function in app.py that:
- Converts timezone-aware datetimes to naive UTC for SQLite comparisons
- Ensures consistent datetime handling across 5 file reservation expiry operations
- Added
_ensure_utc_dt()incli.pyfor display/filtering operations
Placeholder Detection for Better DX
When hooks or integrations are configured with placeholder values like YOUR_PROJECT_PATH or YOUR_AGENT_NAME, users previously got cryptic NOT_FOUND errors. Now:
Server-side (app.py):
- Detects common placeholder patterns:
YOUR_*,PLACEHOLDER,<PROJECT>,{PROJECT},$PROJECT - Returns clear
CONFIGURATION_ERRORwith fix instructions - Applies to both
_get_project_by_identifier()and_get_agent()
Shell hooks (check_inbox.sh, codex_notify.sh):
- Detect placeholder patterns and silently exit instead of making failed API calls
- Consistent patterns across all hooks:
YOUR_*,PLACEHOLDER,<...>
Install scripts (integrate_*.sh):
- Use
YOUR_AGENT_NAMEplaceholder when server not running - Clear warnings about reconfiguration requirements
- Hooks silently skip until properly configured
🔧 Improvements
- Standardized patterns: All placeholder detection (server + shell hooks) now uses consistent patterns
- Cleaner code: Removed redundant variable assignments in Gemini integration script
📋 Commits Since v0.1.4
fix(datetime): use naive UTC datetimes for SQLite comparisonsfix(config): add placeholder detection and improve error messagesfix(scripts): add placeholder fallbacks and detection for unconfigured hooksfix(hooks): standardize placeholder detection patternsrefactor(gemini): remove redundant variable assignmentschore(release): bump version to 0.1.5
Full Changelog: v0.1.4...v0.1.5