Repository navigation
Add conditional undo for explicit reads - #3291
Merged
Merged
Conversation
kazemek21
force-pushed
the
kylez_NEXUS-4488_undo_explicit_read
branch
from
November 11, 2026 21:15
9d47714 to
89b7f44
Compare
kazemek21
marked this pull request as ready for review
November 11, 2026 22:02
kalvinnchau
reviewed
Nov 11, 2026
kalvinnchau
left a comment
Contributor
There was a problem hiding this comment.
🤖 Two P3 maintainability and regression-coverage findings. No functional or security defect demonstrated.
Co-authored-by: Codex (gpt-6-luna) <noreply@openai.com> Signed-off-by: Kyle Zemek <kylez@squareup.com> Co-authored-by: Codex (gpt-6.1-sol) <noreply@openai.com>
kazemek21
force-pushed
the
kylez_NEXUS-4488_undo_explicit_read
branch
from
November 11, 2026 22:43
89b7f44 to
e5d39bd
Compare
dr0uleau
approved these changes
Nov 11, 2026
joahg
added a commit
to joahg/buzz-app
that referenced
this pull request
Nov 12, 2026
* origin/main: (38 commits) Fix reminder counts with compact dock corner tabs (block#3126) Add conditional undo for explicit reads (block#3291) fix(composer): edit channel links as atomic chips (block#3312) fix(agents): show remote instruction limit (block#3325) NEXUS-4033: Offer session skills in the core task composer (block#2790) feat(github): name pasted repository and commit links (block#3268) Let plugins give standing instructions to every agent turn (block#3285) fix(relay): read a channel's creation once, not per metadata version (block#3244) fix(messages): remove unconfirmed sends from this device (block#3317) fix: expose proven non-delivery for artifacts (block#3300) feat(plugins): let plugins mark a person's name in @mention suggestions (block#3260) fix(mcp): strip metadata from images agents attach (block#3311) fix(identity): name a linked key that isn't here, and keep Restore after a failed backup check (block#3238) feat(changesets): show the files a local agent changed on its reply (block#3214) fix(identity): show a backed-up key as backed up, and drop dead retries (block#3223) fix(browser): open Builderlab account connections in the system browser (block#3287) Expose exact captured-message reads (block#3264) docs(agents): keep internal discussion out of public repo content (block#3258) fix(identity): clear a copied private key, name restore failures, fix storage copy (block#3236) fix(channels): list workspaces that load after `#` opens (block#3277) ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR
This supports retained readers that need to undo an explicit read action without overwriting newer unread intent. It offers Undo only for saved local-unread markers removed by that action.
How
Undo checks the current journal revision inside the storage transaction and revalidates access, visit, and captured-message evidence. It restores only markers removed by that exact saved action.
Boundary and risk
Undo never restores forced-message overlays or rewinds or publishes read frontiers. Results omit Undo if the completed read also cleared forced-message overlays, or if force work was queued while the read saved.
The handle expires after any later journal save, even if unrelated or quiet. This whole-journal lifetime is deliberately conservative. Older hosts may omit the optional handle.
Related PRs
This change is independent of #3264, #2918, #2939, #1666, and #2956.
Generated with Codex (gpt-6-luna) on behalf of kylez