Skip to content

Composer context: fixes before the lane (ERMAIN-1021) - #1406

Draft
bdart wants to merge 13 commits into
mainfrom
feature/ermain-1021-composer-context-fixes-before-the-lane-phase-0
Draft

bdart wants to merge 13 commits into
mainfrom
feature/ermain-1021-composer-context-fixes-before-the-lane-phase-0

Conversation

@bdart

@bdart bdart commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

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.

  • Outlook: the draft row comes from 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 shared AddinSelectionChip; the dead "Email thread" fallback is gone.
  • Word: the document row comes from 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.
  • Teams: a kit's attachment preview is kept; Remove all removes only the files beside a transcript ("3 files · 5/5", named "Remove all: 3 files"); transcript images draw as thumbnails.
  • Shared: pinActions on attachment groups, stagedCount on 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:

  • The Word row says "A comment is sent instead of the document"; the prototype keeps the document included while a comment is picked, though the send replaces it.
  • Recipient and appointment edits are re-read on Office events (the plan had accepted the under-claim).
  • Main moved the Teams preview into the library (Show Teams transcripts as conversations on every surface #1403); the Teams fixes moved along.

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.

bdart added 13 commits October 19, 2026 18:54
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.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant