Update popup dismissal is not persisted when version cache is missing

Resolved 💬 0 comments Opened Jun 9, 2026 by eddieparc Closed Jun 12, 2026

Summary

The update/release-notes popup dismissal can be lost when version.json does not exist yet. In that path, dismiss_version returns Ok(()) without writing dismissed_version, so the same release can be shown again on the next startup.

Fix branch

I pushed a tested fix here:

https://github.com/eddieparc/codex/tree/codex/fix-update-dismissal

Commit: dcf9fc318cd5f79bb857486cd61072038b179ab3

The change makes dismiss_version create a minimal VersionInfo when the cache file is missing, setting both latest_version and dismissed_version to the dismissed version.

Verification

  • RED: with the previous behavior restored, updates::tests::dismiss_version_creates_cache_file_when_missing fails with No such file or directory when reading version.json.
  • GREEN: RUSTFLAGS="-C debug-assertions=no" just test -p codex-tui dismiss_version_creates_cache_file_when_missing passes.
  • just fmt passes.
  • I attempted to open a PR from eddieparc:codex/fix-update-dismissal, but this repository currently limits PR creation to collaborators for this account (CreatePullRequest permission failure / no push permission).

View original on GitHub ↗