Expose Erato in Outlook organizer appointment compose - #929
Merged
bdart merged 4 commits intoAug 9, 2026
Merged
Conversation
Expose the add-in in appointment organizer windows (activation rule, ribbon button, unified-manifest context). The surface rides two config-defined action facets: sends and context chips are gated on GET /me/facets, fields are re-read from the live item at send time (local-offset times + timezone), identity is a page-load-scoped mint (never seriesId, which merges series occurrences), attachments stay out of email context, and sticky scheduling never claims appointment-compose turns.
Resolves the CodeQL insecure-randomness finding on the Math.random mints; matches the existing generateDroppedKey convention.
bdart
enabled auto-merge (squash)
August 9, 2026 19:29
bdart
deleted the
feature/ermain-551-outlook-appointment-compose-expose-erato-and-support
branch
August 9, 2026 19:39
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.
Makes the appointment organizer window a first-class add-in surface and hardens the appointment↔email partition throughout.
What's in here
Surface
ItemIs Appointment/Edit) +AppointmentOrganizerCommandSurfacebutton in both override generations of the local XML manifest;meetingDetailsOrganizercontext in the unified manifest.Facet pipeline
outlook_review_appointment,outlook_rewrite_appointment_selection) delivered as a configuration package (companion PR: EratoLab/erato-subscription-content#6). Sends and the context chips are gated onGET /me/facets, so the UI never claims context a send wouldn't carry.ItemChanged, so bind-time state goes stale; reads are bounded with per-field fallback so a wedged host degrades instead of losing the send. Start/end go out as local-offset ISO plus atimezonearg.getComposeBodyType()failures on a compose→read race no longer reject the send.Identity & isolation
seriesId, which Office.js sets to the parent series id on every occurrence (two occurrences would share a chat and pass the insert gate). Minted identities don't count as navigation evidence.emailItemalias).isMessageReadwidened toSupportedOutlookItem, deleting eight compound guards;itemKindis now required in the facet resolver; dedup markers renamed to…DraftFingerprintto match their broadened semantics.