Skip to content

fix(control): readable errors, calendar loading and call page fixes - #524

Open
MrYuion wants to merge 4 commits into
refactor/control-cleanupfrom
fix/control-tester-findings
Open

MrYuion wants to merge 4 commits into
refactor/control-cleanupfrom
fix/control-tester-findings

Conversation

@MrYuion

@MrYuion MrYuion commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator

Browser testing of the stack found more bugs. Error notifications read Error: [object Object], because driver and API errors are plain objects. The meeting list was always empty: nothing loaded the calendar list. Escape did not close custom tooltips. A failed call layout or presentation change left the select on the rejected value. The Help button covered End Call during a call. The old room's chat socket stayed open on bootstrap. A failed hang-up rethrew into an unhandled rejection.

Changes

  • Error text: errorText() uses the error's message, then the realtime msg, then the code or status.
  • Calendars: the meeting list loads the calendar list and selects the first calendar. The load is untracked, so the panel and call views do not open the list twice.
  • Escape: custom tooltips close on Escape. This is in libs/components, so it applies in every app.
  • Call selects: go back to the codec value when a change fails.
  • Help button: space is reserved above the call actions only, so the dialpad is not cut off.
  • Chat socket: closes when voice control turns off.
  • Hang-up: shows the error without rethrowing. Fixed the English and French message.

Testing

  • Unit tests: control 250 pass, components 298 pass. Each new test fails on the old code.
  • All 17 apps that depend on libs/components build.
  • Tested in the running app at 1280x800 and 1024x768: readable errors for each failure type, one meeting list per route, Escape on all topbar tooltips plus map-kiosk, select reset, help spacing (pixel diff without help matches the parent), socket close and reopen.
  • E2E (mock): 180 pass, 18 fail. The lighting spec that Escape broke now passes. The remaining 18 (bootstrap host visibility, app routing timing) fail on every branch in this stack and do not reach these changes. They were not run on develop itself.

Known

  • The local PlaceOS stack returns HTTP 500 for /api/staff/v1/calendars, so on that backend the meeting list stays empty. Mock mode shows meetings.

Merge order

5 of 5. Based on refactor/control-cleanup.


Changes made by Claude Opus 5.5 (1M context) in Claude Code, running in T3 Code.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Oct 1, 2026

Copy link
Copy Markdown

Deployment failed for project frontend-templates with the following error:

Resource is limited - try again in 24 hours (more than 100, code: "api-deployments-free-per-day").

Learn More: https://vercel.com/placeos?upgradeToPro=build-rate-limit

@greptile-apps

greptile-apps Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

[Medium risk] Fixes error handling and UI behavior in the video call interface.

This PR appears safe to merge; no outstanding finding remains.

What we checked:

  • Later call choice stays selected: No. Each change gets a request number, and an older failure cannot reset the select after a newer change starts.
  • New chat survives an old close: No. The close handler passes its own socket to a check that leaves a newer socket alone.

Summary

Control users now get readable errors, a meeting list that loads its calendars, and call settings that reset when a change fails. The PR also closes tooltips with Escape, ends the voice chat connection when voice control turns off, and makes room for Help during calls.

  • Loads calendars when the meeting picker opens and selects a default only when needed.
  • Shows readable error details across meeting, routing, and call actions.
  • Keeps call settings in sync with the latest successful choice.
  • Adds keyboard closing for tooltips and cleans up voice chat connections.

Reviews (2) · Last reviewed commit: "fix(control): keep later call choices an..."

Comment thread apps/control/src/app/video-call/video-call-page.component.ts
Comment thread apps/control/src/app/ui/voice-assistant.service.ts
- Show the error message (or code) in error notifications instead of
  `[object Object]`. Driver and API errors are plain objects.
- Load the calendar list when the meeting list opens, and select the
  first calendar. Nothing loaded calendars, so the list was always empty.
- Close custom tooltips on Escape (shared components library).
- Reset the call layout and presentation selects to the codec value when
  a change fails.
- Leave room for the Help button above the call controls.
- End the assistant chat connection when voice control turns off, so the
  previous room's socket does not stay open on bootstrap.
…pace

- Load calendars untracked in `selectMeeting()`. The join effects in the
  panel and call views tracked the calendar list and opened the meeting
  list a second time when it loaded.
- Show the `msg` text of realtime driver errors, not only the code.
- Reserve space above the call actions only, not the whole call page.
  The page padding cut off the dialpad on smaller screens.
Show the error and stay on the call when hang-up fails, instead of
rethrowing into an unhandled rejection. Fix the English and French
"could not hang up" message.
- A failed layout or presentation change only resets the select when no
  newer change has started.
- A chat socket that closes late only clears itself, not a newer chat
  (shared ChatService).
@MrYuion
MrYuion force-pushed the refactor/control-cleanup branch from 829ea71 to 54e1b7b Compare October 1, 2026 15:23
@MrYuion
MrYuion force-pushed the fix/control-tester-findings branch from 9acf9e1 to ef12dc5 Compare October 1, 2026 15:23
@vercel

vercel Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
frontend-templates Ignored Ignored Preview Oct 1, 2026 3:23pm UTC

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