Repository navigation
Conversation
Every ModalBase used the same title id, so a file preview opened over a Teams conversation left two dialogs labelled by whichever heading came first. Each dialog now takes its own id.
…sewhere (ERMAIN-1021) - A group can pin its action beside the disclosure, so a collapsed card can still be removed in one click; unpinned groups are unchanged. - An upload shown under a display name keeps the image family when its stored filename is an image, so it draws as a thumbnail. - The staged count can read files shown elsewhere against the limit.
…red selection chip (ERMAIN-1021) - resolveOutlookActionFacet reports what became of the draft, and a pure previewOutlookSend runs it on render-time inputs. The draft row now says when the draft is unchanged and not re-sent, or not sent while scheduling, instead of always claiming it is included. - The + menu restores every message of an unticked thread, uploads it on a follow-up chat once rebuilt, and reads attachment rows from the thread card's own ticks. - Attachment boxes under an unticked message read unticked; ticking one brings the message back with only that attachment. - A dropped email's Remove sits in its card header, named after the email. The dead Email thread fallback item is gone. - The compose selection uses the shared selection chip.
…cked (ERMAIN-1021) - previewWordSend follows the Send's order (passage, document, comments) on render-time inputs, sharing the document facet choice with resolveWordActionFacet. - The document row says a comment is sent instead of the document when the Send carries a comment thread in its place. - The document's x and Include are disabled while the composer is locked (archived chat or a delegated run that is writing).
…pt, image thumbnails (ERMAIN-1021) - The Teams attachment preview is installed only when no component kit registered one. - Remove all next to a transcript removes only the files shown there, and the count reads every staged file against the limit. - A transcript's image uploads keep their preview URL and stored name under the display name, so they draw as thumbnails.
German, Spanish, French and Polish for the draft row states, the named Remove of a dropped email, the thread message count plural and the Word comment-instead row.
A standalone Playwright harness at the task-pane width: the pinned Remove beside a collapsed card, unticked thread attachments, display- named image thumbnails, the staged count and stacked dialog names.
The muted draft row sat on the secondary fill at 4.39:1; a superseded row now uses the primary fill (4.63:1 light, 6.99:1 dark). The draft row and Word's "sent instead" sentences wrap instead of truncating, since in de, es, fr and pl the cut fell on "not sent". The document name label keeps its truncation and gains a title. An unticked thread message dimmed its whole card, so its unticked attachment rows were faded twice (0.3) and their checkboxes nearly vanished. Only the header dims now; each row keeps its own 0.5.
…AIN-1021) Storybook gains a dropped email opened in the add-in's scroll region and a thread message re-ticked through one attachment. The harness now checks the pinned header's divider, that the sticky header keeps Remove on top of scrolled rows, Remove's contrast in light and dark, the re-ticked row opacities, the staged count's fit at the task-pane width, and the web app's Archive all chats confirmation named over Preferences. The full-stack archive-all test asserts both dialog names while stacked.
…op a repeated type label (ERMAIN-1021)
With files staged elsewhere (a Teams transcript's), the count reads
"3 files · 5/5" and Remove all is named "Remove all: 3 files".
A pinned group action now also shows on a group that cannot collapse.
A row whose display name already says its type ("Image") no longer
repeats it as the type label.
…e + menu (ERMAIN-1021) The draft row re-reads recipients (RecipientsChanged) and appointment fields (time, attendees, location) when the host reports an edit, so it says "included" again when the next send would attach the draft. The + menu offers the thread row only when there is a file or the whole thread is unticked, treats a policy-excluded attachment as not read, and leaves excluded siblings alone on restore. Removing a dropped email hands focus back to the composer; the German Remove name starts with the visible label.
…t row (ERMAIN-1021) When previewWordSend finds no facet for an included document, the row reads "Document not included" instead of naming the document. A row replaced by a selection or a comment uses the muted superseded look and data-state="superseded", as Outlook's draft row does.
Main moved the Teams attachment preview and its grouping into the frontend library (#1403). The phase-0 Teams fixes move with them: Remove all takes only the files shown beside a transcript and counts every staged file, and transcript images keep their upload under the display name so they draw as thumbnails.
bdart
added this pull request to stack #1415
October 20, 2026 10:15
This branch has not been deployed
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.
Phase 0 of the composer context chips (ERMAIN-1021): today's rows, cards and menus now state what the send carries, before phase 1 moves them into one composer lane. No new UX; what is sent is unchanged.
previewOutlookSend()(the send resolver): "unchanged, not re-sent" and "not sent while scheduling" in the muted superseded look, and back to included after a recipient or appointment edit the host reports. The "+" menu restores a fully unticked thread and reads the thread card's own ticks. A dropped email's Remove sits in the collapsed header, is named after the email and hands focus back to the composer. The compose selection uses the sharedAddinSelectionChip; the dead "Email thread" fallback is gone.previewWordSend(): replaced by a selection or a comment (muted,data-state="superseded"), or "Document not included" when no facet carries it. × and Include are disabled while the composer is locked.pinActionson attachment groups,stagedCounton the flat preview, stacked dialogs named by their own titles.Decision defaults: muted superseded look for "Unchanged, not re-sent" and "Not sent while scheduling" (decision 4 / prototype); other decisions wait for their phase.
Deviations:
Next: phase 1 lane (ERMAIN-1022). Follow-ups ERMAIN-1035 (draft body read only at bind time) and ERMAIN-1036 (failed send keeps the draft de-dup marker). Native Word PC check pending.