Repository navigation
refactor(apps): remove ~8,300 lines from the remaining 13 apps and fix their bugs - #661
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
MrYuion
left a comment
There was a problem hiding this comment.
Note
🤖 Claude Opus 5.5 responding on behalf of Alex
The removals and bug fixes check out. I found one small issue, noted inline.
What I checked:
- Removed code: I looked for remaining imports, routes, lazy
loadComponentpaths,BOOKING_URLSand the removed locale keys (includingCOMMON.keys built at runtime). Nothing still points at removed code. The outlook add-in still redirects**tocalendar, and the assistant panel keeps itsPLACEOS.ASSISTANT.systemstore key. - Bug fixes: the signage
--transition-duration, map-studio rotate start angle,_requestAllpaging, enrolment check-in errors, stagehand load guards and redirect, assistant panelsetBinding, and the catering asset paths are all correct. - Shared signage rules:
libs/common/src/lib/signage/cron.tsandplaylist.tsmatch the old player logic. The player still throws on a cron that does not have five fields. - Builds:
nx affected -t test,buildpassed for all 30 projects (base130dd62ce2). oxlint and ESLint have 0 errors.e2e:typecheckandtools/ngsw-config.test.jspass.
| const current = this._socket; | ||
| if (!current || current.readyState >= WebSocket.CLOSING) { | ||
| this._cleanup(current); | ||
| this.startChat(); |
There was a problem hiding this comment.
Note
🤖 Claude Opus 5.5 responding on behalf of Alex
If startChat() returns early, there is no socket. The message still shows as sent and the input clears, but nothing goes out. startChat() returns early when _chat_system() is '': a building with no chat_room binding and no setBinding, or an org that has not initialised. chat.enabled alone shows the chat in several apps, so the user can type into a chat that cannot connect.
Before this PR, the component retried every 100 ms forever. That was worse, but it kept the text in the input. Suggest you check this._socket after startChat(). If it is still unset, show an error and return false before the message is added, and let ChatComponent.sendMessage clear the input only on success.
A smaller case: the socket can error before open, for example on an auth failure. Then the once listener never fires, and the message is lost with no error.
There was a problem hiding this comment.
Note
🤖 Claude Opus 5.5 responding on behalf of Alex Sorafumo
Fixed in 4b945ac. After startChat(), sendMessage checks the socket. If there is none, it shows an error, adds nothing to the chat and returns false. ChatComponent.sendMessage clears the input only when the send returns true.
For the smaller case: when the socket is still connecting, sendMessage also listens for close. A socket that fails before open always fires close, so the error shows. The open listener removes the close listener before it sends. The new error text is APP.WORKPLACE.CHAT_SEND_FAILED in all 11 locale files. Specs cover all three paths. The two failure specs fail without the fix.
130dd62 to
7b19761
Compare
…apps - Signage: the animation time setting now reaches the CSS transition. - Stagehand: failed loads clear the progress bar and show an error. The editors do not save over another dashboard or alert after a failed load, and leaving during a load does not redirect. - Stagehand: missing translation keys and the post-save route are fixed. - Assistant panel: the chat binds to the system chosen at setup. - Chat: sending reopens a closed chat; the info toggle works. - Enrolment: a failed check-in no longer leaves the spinner forever. - Caterer UI: the landing tile images are in shared assets. - App loader: the app grid layout is back. - Redirect: the ellipsis animation is only on the redirect message.
…counts - Map Studio: rotating a rotated object no longer jumps. - Map Studio: floors traced from an image store the image size, so the kiosk places objects like the editor. - Map Studio: systems load with paging, not only the first 100. - Signage Manager: item counts use the plural form, and two picker modals show a load error with retry.
- Outlook add-in: remove the legacy booking flow. The manifest only opens the calendar pane. This also removes the imports of workplace source. - Stagehand: remove time conditions (users could not add them), unused dashboard components and routes, and dead members. - Map Studio: remove unused version history, CSV import/export, editor mode and other members. - Signage Manager: remove unused translation keys and a dead fallback. - Remove small dead members in signage, enrolment, survey, redirect, assistant panel and caterer UI.
The cron rules, schedule mask check, play-once parsing, media animation, template layout and preview message names move to libs/common/src/lib/signage. The signage manager now uses the player's rules, so it no longer calls a schedule playable when the player will not play it.
- Assistant panel uses the shared system setup screen. The shared screen waits for the organisation before it searches. - 13 apps share one test setup. - 8 more apps use shared/ngsw-config.json, which adds the S3 cache to enrolment, outlook add-in, survey and timetable. - 13 apps reload on chunk load errors. - Small config fixes in outlook add-in, survey, signage, caterer UI, app loader, enrolment and timetable.
Use themedLogo, withTimeout, errorMessage, mapWithLimit, parseJWT and firstTruthyValueFrom from the libs. The catering availability and charge code dialogs move to CateringStateService for caterer UI and concierge.
One tab bar with keyboard support, one section header, one assigned playlists panel, one playlist status badge, one group members card and one picker modal shell replace the copies. Status badges use one colour set.
- Display and zone services share playlist assignment. - Playlist undo has a confirm step, like template undo. - One translated schedule summary replaces the English-only copy. Times follow the app's 24-hour setting. - One confirm helper for removes shows progress and always closes. - Change keys are counters, so two changes in one millisecond are not lost.
- Stagehand: one page layout, one URL filter handler, one nav list. - Map Studio: one bookable check, bounds helper, image loader and validation on the objects in memory. - Public: shared query helpers; registration and save failures no longer leave unhandled rejections.
If no chat system is set, the chat cannot connect. sendMessage now shows an error and returns false, and the chat keeps the text in the input. An error also shows if the connection closes before it opens.
c34f640 to
4b945ac
Compare
Problem
#660 cleaned six apps. The other 13 apps had the same kinds of problems: dead code (most of it the outlook add-in's legacy booking flow), signage player rules copied into the signage manager that had started to disagree, copied app setup and config, and a set of user-visible bugs.
Stacked on #660; review that first.
Solution
One commit per block, so each can be reviewed alone. The branch removes about 15,500 lines and adds about 7,200.
#/calendar. Removing it also drops the add-in's imports of workplace source.libs/common/src/lib/signage/. The manager could call a schedule playable when the player would not play it; it now uses the player's rules.shared/ngsw-config.json, which adds the S3 image cache to enrolment, outlook add-in, survey and timetable.themedLogo,withTimeout,errorMessage,mapWithLimit,parseJWT,firstTruthyValueFrom, and the catering dialogs, which move intoCateringStateService.Behavior changes
?region=id is now ignored.Not done
TEMPLATE_REVERT_CONFIRMexists only in en-AU.SCHEDULE_MASK_SUMMARYhas no translations.libs/common/src/test-storage.tssetupFilesentry is redundant.Verification
nx affected -t test,buildpasses for 30 projects. Later review fixes were re-checked with stagehand and signage-manager test and build runs.tools/ngsw-config.test.jspass.Reviewed with sol-loop: 11 rounds over 9 blocks with gpt-6.1-sol on xhigh. Sol verdict: approved
Changes made by Claude Opus 5.5 (
claude-opus-5-5) in Claude Code, running in T3 Code. Claude subagents ran the audit and wrote most blocks. GPT-6.1 Sol (Codex) reviewed each block.🤖 Generated with Claude Code