Repository navigation
Releases: hiddenest/awake
Release list
v0.2.6
- Keep awake while Codex side chats and subagents are running.
- Detect Codex read/write rollout files opened with lsof
udescriptors. - Track all active Codex rollouts and tolerate long-running tool calls using rollout file activity.
- Recognize both Codex and ChatGPT desktop app names.
- Bump crate version to 0.2.6.
v0.2.5
v0.2.4
v0.2.3
Changes
- Add Cursor Agent support to awake status and polling targets.
- Detect active Cursor IDE agent sessions from agent transcripts.
- Detect standalone cursor-agent CLI sessions and cursor-agent --print tasks.
- Bump awake to 0.2.3.
Verification
- cargo fmt --check
- cargo test
- cargo build --release
v0.2.2
v0.2.1
v0.2.0
v0.1.5
Fix: Codex CLI detection and SQLite WAL read
Two issues prevented Codex from being detected as active:
1. CLI sessions were invisible
Codex polling only checked for the GUI app via lsappinfo. Terminal-only codex sessions (e.g. codex, codex exec, codex review) were never recognised, so caffeinate / pmset never activated when the GUI was closed.
Added CLI process detection using ps with a denylist of non-interactive subcommands (app-server, mcp-server, completion, help, etc.).
2. SQLite WAL journal was not read
sqlite_single_line opened databases with immutable=1, which skips the WAL journal entirely. Both Codex and OpenCode use WAL mode, so updated_at timestamps lagged behind by minutes until a checkpoint occurred — making active sessions appear stale and idle.
Switched to mode=ro so the WAL is read on every poll.
Changes
codex.rs: addcodex_cli_session_running()withis_interactive_codex_invocation()parser and 15 unit testsmod.rs: dropimmutable=1from SQLite URI, remove unusedgui_runtime_detail
Full Changelog: v0.1.4...v0.1.5
v0.1.4
Fix: Codex state database detection
newest_matching_file used strip_prefix("*") which returns None when the pattern has a prefix before the wildcard (e.g. state_*.sqlite). This caused Codex state database detection to silently fail on every poll.
Changes
- Replace
strip_prefix("*")withsplit_once('*')to properly match both prefix and suffix in glob patterns - Replace early-return
?operators withcontinueinside directory iteration loops in bothnewest_matching_fileandnewest_file_age_secs, so a single unreadable entry no longer aborts the entire search
Full Changelog: v0.1.3...v0.1.4