Merged
Conversation
Replaces single Preview button with Student Preview and Teacher Preview buttons that pass the appropriate fakeUser parameter to the runtime URL. Adds PreviewUserType to distinguish between student and teacher previews in the useAuthoringPreview hook.
The AI authoring page was correctly saving tags but was not updating the AI prompt categories array with the labels of the tags.
The Cypress tests would fail randomly when a document was created and took a while before it was actually opened on the right side of clue
…-preview feat: Add separate student and teacher preview buttons [CLUE-301]
…categorization-authoring fix: Setting of AI prompt categories in authoring [CLUE-342]
…me-toolbar-icon fix: Update iframe interactive tile icon from placeholder icon
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
I also found an issue with the cypress tests trying to open the shared variable dialog. This test failing routinely locally but it used to pass remotely, so I'm pushing up this change to see if it still passes remotely.
…ating-new-docs CLUE-386 Cypress: wait for new doc to open before continuing
…ow (CLUE-397) Rating buttons (Yes/No/Not Sure) now appear below every comment text, allowing any user to rate any comment. Ratings are stored per-user in Firestore with security rules enforcing own-key-only writes. The old Ada-specific agree button flow in comment-textbox has been removed. Key changes: - Move rating buttons below comment text (associated with comment, not author) - Fix doubled Firestore root path in useUpdateCommentRating hook - Add simplified path fallback for comments stored at non-prefixed paths - Update Cypress tests to cover new rating button interactions - Update design and implementation plan docs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…er (CLUE-429) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…handling, fix tab layout - Restrict Firestore rating updates to requester own entry via platform_user_id - Await fallback updateRating call to prevent unhandled promise rejections - Add commentId and ratingValue to rate log payload for analytics - Remove blank space in tab bar when comment panel is open - Update plan docs to reflect stricter security rules Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extend the Read Aloud feature to include comment threads from the chat
panel. When the comments panel is open on the left pane, Read Aloud now
reads all tiles in document order, announces "Comments" as a section
header, then reads each comment thread with "{author name} said:
{content}" attribution. When a tile is selected, it reads the tile
content followed by that tile's comment thread, then stops. When no
tiles are selected and the chat panel is open, a comments-only mode
reads just the comments.
Per-comment queue items (CommentReadAloudItem) replace the earlier
per-thread approach, enabling individual comment highlighting as each
is read aloud. Clicking a comment during active reading jumps to it
via jumpToItem(). Clicking a comment when idle sets a pendingCommentId
so the next Read Aloud start jumps directly to that comment without
selecting the associated tile.
Key changes:
Queue and service architecture:
- Add CommentReadAloudItem and SectionHeaderReadAloudItem types with
type guards (read-aloud-queue-items.ts)
- Add buildReadAloudQueue() pure function that composes tile, section
header, and per-comment items with pre-built speech text
- Add buildThreadHeaderText() and pushCommentItems() helpers
- Add replaceQueue() with position reconciliation by stable key
(associatedTileId for tiles, commentId for comments)
- Add buildTargetedSubQueue() for workspace tile clicks during comment
reading, with isTargetedOverride flag to prevent reactive rebuilds
- Add pendingCommentId and lastProgrammaticSelectionTime to service
for comment selection and programmatic tile selection tracking
- Add TOOLBAR_READ_ALOUD_COMMENT_TRANSITION log event
Pane and state fixes:
- Thread explicit pane prop through EditableDocumentContent →
DocumentToolbar → ToolbarComponent so left-pane documents without
a section prop correctly report pane="left"
- Move isDocumentsView from ChatPanel local useState to persistentUI
volatile property for cross-component observability
- Extract sortCommentsInDocumentOrder() into chat-comment-thread.ts
as a shared utility
Reactive queue rebuilding:
- Add MobX reaction in ReadAloudButton that rebuilds the queue when
document structure, comments, panel state, or Documents View toggle
changes (debounced 800ms, structural comparison)
- Immediate rebuild on hookComments change (React Query, not MobX)
- Stop Read Aloud when toggling to Documents View
Comment UI integration:
- Add per-comment .reading CSS class with pale yellow background
- Add pendingCommentId .pending CSS class with charcoal outline
- Add click handlers on individual comments for jump-to and pending
selection
- Add scroll-into-view for currently-reading comments
- Pass readingCommentId, pendingCommentId, and onCommentClick through
ChatThread → ChatThreadItem → CommentCard
- Clear pendingCommentId on workspace tile click via MobX reaction,
with timestamp guards to ignore programmatic selections
- When starting from a pending comment, skip tile selection so the
comment remains the visual focus
Tests:
- Add comprehensive tests for buildReadAloudQueue() covering
sequential, targeted, comments-only, and edge cases (473 lines)
- Add pendingCommentId and replaceQueue tests to service test suite
- Update ReadAloudButton test for comments integration
CLUE-398 Close spec: expand tile drag handle hit area
- Fix lint warning: break long line in editable-document-content.tsx - Consolidate confusing buildTileSpeechText tests into one clear test that verifies text tile titles are excluded due to hiddenTitle - Add isReadingPane(pane) method to ReadAloudService and use it across all callers for improved readability
ReadAloudButton's comment hooks call useFirestore() unconditionally, which crashes in the doc-editor context where db.stores is undefined. Skip rendering ReadAloudButton when DISABLE_FIREBASE_SYNC is set since Read Aloud with comments is not relevant in the authoring context.
Extend buildTileSpeechText() to extract readable content from sketch tiles (text annotations via depth-first traversal) and table tiles (column headers + row values with "blank" for empty cells). Add extractSketchText() for recursive object traversal with punctuation-aware joining, and extractTableText() for column/row speech composition. Both use structural type checks to avoid .tsx imports in the service layer. Add 27 unit tests covering sketch text extraction, table text extraction, and queue builder integration with comments.
… joining
Expand the punctuation-aware regex in extractSketchText() to recognize
sentence-ending punctuation (.!?…...) followed by trailing closing
characters ("')]). Previously, `She said "hello!"` would incorrectly
get a period appended before the next text object.
…oud-for-comments feat: Add Read Aloud support for comments [CLUE-418]
- Replace `any` types with `IAttribute` in extractTableText and `DrawingContentModelType` in buildTileSpeechText per reviewer suggestion - Expand punctuation test to cover multiple text objects with ! and ?
…for-sketch-comments feat: Add Read Aloud support for sketch text and table data [CLUE-417]
…lbar-events Clue 429 cleanup rollbar events
…ai-comments Resolve conflict in comment-card.tsx: use master's CommentItem component with branch's renderRatingButtons replacing renderAgreeWithAi. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove unnecessary RowListType cast (type guard suffices) - Use DEFAULT_PROGRAM_ZOOM constant instead of hardcoded values - Move dataflow delete tool to app-config.json, remove fallback infrastructure - Update misleading comment in tileSnapshotForCopy Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…mbs-up-or-down-on-non-ai-comments Clue 397 comment thumbs up or down on non ai comments
…es-cannot-be-resized-in-questions-and-cant-be-deleted Clue 415 program tiles cannot be resized in questions and cant be deleted
Resolved conflicts in: - document-file-menu.tsx (combined useMemo from master with group doc option) - document-file-menu.test.tsx (combined both test suites - basic menu ops and group doc visibility) - document-utils.ts (kept GroupDocument import, removed duplicate imports) - document-group.ts (kept inline byGroup with GroupDocument handling, added upperWords) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Member
Author
|
@tealefristoe the changes in this PR don't need to be reviewed. They are showing all the changes to master since the group-documents branch was started. They also include the merge conflicts that were resolved. But it is really hard to see them, so I think it is fine to skip this. However the main point is that the tests are passing. This PR includes all of the changes from #2753 and the tests are passing. |
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.
CLUE-341 Merge branch 'master' into
group-documentsresolved conflicts in: