fix(ui): aggregate comments across body + headers/footers/notes (SD-2938)#3148
Closed
caio-pizzol wants to merge 1 commit intomainfrom
Closed
fix(ui): aggregate comments across body + headers/footers/notes (SD-2938)#3148caio-pizzol wants to merge 1 commit intomainfrom
caio-pizzol wants to merge 1 commit intomainfrom
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3ca21ed799
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
3ca21ed to
1bc7f58
Compare
…938)
ui.comments.observe() collapsed to one section as the user moved focus
between the body and a header/footer/footnote/endnote. Each section
editor owns its own converter.comments store, and the controller's
snapshot was sourced from whichever editor was routed at the time —
losing the rest.
The fix adds an `in?: StoryLocator | 'all'` option to
CommentsListQuery (mirroring the trackChanges pattern), extends
CommentAddress with an optional `story`, and stamps that field on
non-body results. The controller now reads from the host editor with
`{ in: 'all' }`, so snapshots stay stable across focus changes.
Action routing reuses the same locator: resolve, reopen, reply,
delete, and scrollTo look the comment up in the cached snapshot and
dispatch on the editor that owns it. Body comments still route the
same way they did before — story is omitted, fallback path is
unchanged. createFromSelection / createFromCapture stay routed
because they operate on the live selection.
Event fan-out is intentionally conservative: existing
commentsUpdate/commentsLoaded refresh + the explicit
refreshAndNotify after UI mutations handle the main bug. Multi-story
listener wiring is left for a follow-up if it's needed.
1bc7f58 to
4f55e8e
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
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.
ui.comments.observe()collapsed to one section as the user moved focus between the body and a header/footer/footnote/endnote. Each section editor owns its ownconverter.commentsstore, and the controller's snapshot was sourced from whichever editor was routed at the time, losing the rest. Originally surfaced while testing the selection-capture vanilla example against a docx with a header.The fix adds an
in?: StoryLocator | 'all'option toCommentsListQuery(mirroring thetrackChangespattern), extendsCommentAddresswith an optionalstorylocator, and stamps that field on non-body results. The controller now reads from the host editor with{ in: 'all' }, so snapshots stay stable across focus changes.Action routing reuses the same locator:
resolve,reopen,reply,delete, andscrollTolook the comment up in the cached snapshot and dispatch on the editor that owns it. Body comments still route the same way they did before, withstoryomitted, fallback unchanged.createFromSelectionandcreateFromCapturestay routed because they operate on the live selection.Event fan-out is intentionally conservative for now: the existing
commentsUpdate/commentsLoadedrefresh plus the explicitrefreshAndNotifyafter UI mutations handle the main bug. Multi-story listener wiring is left for a follow-up if external/imported non-body changes prove to be missed in practice.Linear: SD-2938.
Verified: 34 wrapper tests, 28 controller tests, 212 UI tests, 3314 doc-api adapter tests, 1388 document-api tests all pass. New coverage: 5 adapter tests for cross-story listing + 7 controller tests for cross-section action routing and
scrollTo.