Repository navigation
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
|
Deployment failed for project frontend-templates with the following error: Learn More: https://vercel.com/placeos?upgradeToPro=build-rate-limit |
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
|
| this._error.set( | ||
| errorMessage(error) || 'Unable to read the Outlook event.', | ||
| ); | ||
| return this._event(); |
There was a problem hiding this comment.
There was a problem hiding this comment.
Fixed in 8fd207f. refresh() now returns null when Outlook cannot read the item. DeskLinkService._post() then stops and shows the read error. A refresh that a newer refresh overtakes also returns its own new read, not the old state.
| ...(saved?.ical_uid ? { ical_uid: saved.ical_uid } : {}), | ||
| }, | ||
| }).catch(() => booking); | ||
| await this._outlook.setProperty(DESK_BOOKING_PROPERTY, linked.id); |
There was a problem hiding this comment.
Desk stays reserved after error
add() creates the desk booking before saving its ID on the Outlook item. If that save fails, the pane reports an error but leaves the desk reserved. When reopened, it cannot find the booking through the missing link. Roll back the booking or make the link recoverable.
There was a problem hiding this comment.
Fixed in 8fd207f. When Outlook cannot store the booking ID on the item, add() cancels the new booking and shows the error. No booking stays reserved without a link.
|
|
||
| constructor() { | ||
| this._form.newForm('desk'); | ||
| this.link.load(); |
There was a problem hiding this comment.
There was a problem hiding this comment.
Fixed in 8fd207f. The event service has an item_version signal that changes on ItemChanged. The linked booking belongs to one item version, so it disappears as soon as the item changes, and Remove or Update cannot act on it. The desk search then loads the link for the new item. The adapter also adds the item event handlers again for the new item.
| [available]="map_desks()" | ||
| (onSelect)="selected_desk.set($event)" | ||
| /> | ||
| @if (selected_desk(); as desk) { |
There was a problem hiding this comment.
When the event time or available desks change, the map keeps showing selected_desk even if it is no longer in map_desks(). Its card still says “Available” and offers Add. Clear the selection when that desk leaves the available list so users do not try to book an outdated result.
There was a problem hiding this comment.
Fixed in 8fd207f. The map card and map highlight now use map_selection(), which shows the selected desk only while it is in map_desks(). If the desk becomes available again, the selection shows again.
Load teams-js only when the tab URL has `?host=teams`. Sign in through Teams SSO, then a sign-in window, then a Sign in button, because the Microsoft login page cannot load in the host frame. Add the app package template, a packaging script and docs/teams-app.md.
Add a task pane that reads the title, time and All day setting from the open Outlook event instead of asking for them again. - Rooms are added to the event as Exchange room resources, so Exchange books them when the invitation is sent. This replaces the old flow that created a second event. - Desks are reserved on "Add to event" and linked to the saved event in both directions. The pane flags a desk when the event time changes. - Each tab has list and map views. Filters apply in the pane, so a filter change does not start a new availability request. - space-map and desk-map accept an optional filtered list and are exported from their libraries. - The manifest has one PlaceOS button that opens the pane.
Replace the legacy Office SSO (getAccessToken) with nested app authentication through MSAL. The PlaceOS sign-in dialog stays as the fallback when the manifest has no client ID or Outlook does not support NestedAppAuth 1.1. The token scope is the same as the Teams app, so one Entra app registration serves both. - manifest.xml is now a template. manifest.ts makes the manifest for a PlaceOS host and adds the Entra client ID to the task pane URL. - The base rule matches the appointment organizer button. Remove AppDomains, FunctionFile and WebApplicationInfo. - Remove the Yeoman scaffold, the function file, ms-auth-login.html, the unused ms-auth route and the IE compatibility meta tag. - Uploads now start when a stored token is used.
Update ts-client to 6.8.0. The Outlook add-in and the Teams tab now exchange the Microsoft Entra SSO token for PlaceOS tokens (RFC 8693) instead of sending it as the bearer token. The exchange gives a refresh token, so the PlaceOS token renews. When the exchange fails, sign in falls back to the sign-in dialog or window.
- Stop a desk booking when Outlook cannot read the event, so it never uses old times. - Cancel a new desk booking when Outlook cannot store its link. - Hide and reload the linked desk when a pinned pane moves to a different item. - Add the item change handlers again after the item changes. - Hide a map selection when the desk is no longer available. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
95da5d0 to
a4af0e5
Compare
Add a Parking tab that books a parking space or sends a parking request for the Outlook event. The `features` setting turns on each option (`parking` and `parking-requests`). The tab is hidden when neither is on. - Desks and parking share one booking link service. Each type keeps its booking ID in its own item custom property. - A parking request is a parking booking with no space. The parking team assigns a space later. - The plate number starts with the saved plate number and is required when `parking.require_plate_number` is on. - The tab shows an assigned space up front when the booking rules block more parking for the user. - The "On this event" card is a shared component. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Problem
The Outlook add-in did not use the open calendar event. It asked for the title, date and time again, and booked rooms by creating a second event through PlaceOS. It had no map, and the workplace app could not open in Teams or the Outlook app bar. The PlaceOS Outlook and Teams development brief (goals G01–G09) asks for all of these.
Solution
Outlook calendar pane (
apps/outlook-addin/src/app/calendar/)enhancedLocation(type Room), so Exchange books it on Send. The pane shows each room as added, pending, confirmed or declined.BookingFormService, and links the booking and the event in both directions. The pane flags the desk when the event time changes and offers Update and Remove. Recurring events and multi-day all-day events are blocked with a message until the policy is agreed.space-mapanddesk-mapget an optionalavailableinput for the filtered list, and both are exported from their libraries.#/calendar, and it requires Mailbox 1.8. The old forms stay in place for now.Parking (
apps/outlook-addin/src/app/calendar/parking-search.component.ts)featuressetting turns on each option (parkingandparking-requests). With neither, the tab is hidden.parking.require_plate_numberis on.Workplace as a Teams / Microsoft 365 personal tab
@microsoft/teams-jsloads only when the tab URL has?host=teams. Sign in tries Teams SSO, then a sign-in window, then a Sign in button.apps/workplace/teams/has the manifest template, icons and a packaging script. Seedocs/teams-app.md.Verification
outlook-addin37,workplace421,events240,bookings435,common376. All pass.outlook-addinandworkplacepass.Not verified yet
index.htmlloads the production Office.js (lib/1), which has no preview APIs. In production the All day flag comes only from the saved event.frame-ancestors). Desk and parking bookings whose event is deleted need a cleanup job.microsoft.poc.placeos.com.Changes made by Claude Opus 5.5 (1M context) in Claude Code.
🤖 Generated with Claude Code