Faster voice announcements, Care/Frontdesk API, and console UI polish.
Deploy Ladill Queue / deploy (push) Successful in 28s

Poll displays every 1.2s with client-side TTS ack; expose service API for sibling apps; redesign tickets, counters, and staff console.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-06-29 21:51:13 +00:00
co-authored by Cursor
parent 051372672b
commit bc6bf0a07c
22 changed files with 813 additions and 140 deletions
@@ -11,13 +11,32 @@ use Illuminate\Http\Request;
trait ScopesApiToAccount
{
protected function isServiceRequest(Request $request): bool
{
return $request->attributes->get('service_caller') !== null;
}
protected function ownerRef(Request $request): string
{
if ($this->isServiceRequest($request)) {
$owner = trim((string) ($request->input('owner') ?? $request->query('owner', '')));
abort_if($owner === '', 422, 'The owner parameter is required.');
return $owner;
}
return (string) $request->user()->public_id;
}
protected function organization(Request $request): Organization
{
if ($this->isServiceRequest($request)) {
$organization = Organization::owned($this->ownerRef($request))->first();
abort_unless($organization, 404, 'Queue organization not found.');
return $organization;
}
$organization = app(OrganizationResolver::class)->resolveForUser($request->user());
abort_unless($organization, 404);
@@ -26,11 +45,19 @@ trait ScopesApiToAccount
protected function member(Request $request): ?Member
{
if ($this->isServiceRequest($request)) {
return null;
}
return app(OrganizationResolver::class)->memberFor($request->user(), $this->organization($request));
}
protected function authorizeAbility(Request $request, string $ability): void
{
if ($this->isServiceRequest($request)) {
return;
}
abort_unless(
app(QmsPermissions::class)->can($this->member($request), $ability),
403,