Repository navigation
CodexRelay 0.1.1
0.1.1 — 2026-09-02
CodexRelay 0.1.1 is a stability and workflow release focused on safer approvals, clearer Telegram feedback, reliable project discovery, and release replacement detection.
Same-version replacement detection
- The updater now detects a rebuilt DMG even when the release tag remains
v0.1.1, using the architecture-specific asset update time and the local app build time. - The UI can offer the replacement package as a repair build instead of incorrectly reporting that no update exists.
- Added regression tests for newer and older same-version assets.
What changed since 0.1.0
Telegram task feedback
- Added an ephemeral progress message while Codex is processing a request.
- Progress stages are updated in place and throttled to avoid message spam.
- Progress messages are removed when the task finishes or fails.
- Telegram API support now includes editing and deleting messages.
- Added the Telegram command-menu entry for the current command set.
- Approval results are reported explicitly for both accepted and declined requests.
Safer approval behavior
- Added project-scoped “auto-allow within this project” handling.
- Auto-allow is fail-closed: network access, out-of-project paths, and unsupported permission shapes still require an explicit approval.
- Approval scope checks resolve paths before comparing them with the selected project root.
- Approval state remains bound to the current project and paired Telegram identity.
Project scanning and macOS permissions
- “Scan Projects” now synchronizes the active list with the current filesystem instead of only appending new records.
- Moved, renamed, missing, or no-longer-matching projects inside configured scan roots are hidden from the active list.
- Database records remain recoverable; project files are never deleted by scanning.
- Projects manually registered outside configured scan roots are preserved.
- Added access preflight checks when registering a project, during application startup, and before starting a task.
- macOS privacy-permission failures now produce actionable status messages instead of surfacing stale path errors during execution.
Codex continuity and persistence
- Extended the App Server integration to report turn progress.
- Preserved project-specific approval settings when starting or resuming Codex threads.
- Hardened task, turn, checkpoint, and project-state persistence and recovery paths.
- Fixed transient SQLite writer lock contention during concurrent startup/UI operations with bounded retry and backoff.
- Replaced the raw database-lock error shown to users with an actionable status message.
- Added regression coverage for approval scope, project reconciliation, persistence, task lifecycle, and Telegram progress behavior.
UI and diagnostics
- Improved pairing completion and project-status feedback in the menu-bar/settings UI.
- Reduced stale or raw filesystem error text shown in the compact panel.
- Updated user-facing documentation to describe synchronized scanning, permission preflight, and same-version repair updates.
Verification
- Ruff: passed
- Mypy strict: passed
- Pytest: 108 passed
- arm64 App build: passed
- Intel App build: passed on GitHub Actions
- App bundle version: 0.1.1
- Code-signature verification: passed
- DMG image builds: passed
- SHA-256 checksums: verified for both architecture-specific DMGs
Compatibility and known limits
- macOS Apple Silicon and Intel builds are supported.
- The distributed app remains ad-hoc signed and is not Apple-notarized.
- Codex CLI must already be installed and authenticated on the Mac.
- Telegram currently supports one-to-one private chats only.
- The first release line still allows one active task globally.
Latest same-version maintenance rebuild — 2026-09-04
- Rebuilt both macOS DMGs from commit b4c012f while keeping the release tag and version at v0.1.1.
- Included conversation selection, persistent conversation locking and hand-off, database migrations, Telegram routing improvements, Codex preflight continuity, and related UI/state updates.
- Verification for this rebuild: Ruff passed, Mypy strict passed, and Pytest 108 passed.
- This replacement is intentionally published under the same version so the updater's same-version repair detection can be tested.