Polish: per-route titles and a way to sign out

There was no sign-out control anywhere. Easy to miss when you develop
permanently signed in, and a stranded feeling for anyone on a shared machine.
Clearing the identity provider's session is sufficient — PIG holds no session
of its own — and the auth listener returns to sign-in without a reload. A hard
redirect follows regardless, so a failed provider call cannot leave a
half-signed-out interface.

Every route now sets its own document title. A single static title makes
browser history and a wall of tabs useless: every entry reads "pig" and nobody
can tell the margin view from the pipeline.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-12 19:49:32 -07:00
parent 46d7d80f1b
commit d154a78d48
7 changed files with 78 additions and 2 deletions
+2
View File
@@ -9,6 +9,7 @@ import { useState } from 'react';
import { useMutation, useQuery } from '@tanstack/react-query';
import { Search, Server, Zap } from 'lucide-react';
import { compactNumber, get, money, percent, post, shortDate } from '@/lib/api';
import { usePageTitle } from '@/lib/title';
import {
Badge,
Button,
@@ -42,6 +43,7 @@ interface AvailabilityRow {
type MatchRow = AvailabilityRow & { score: number; rationale: string[] };
export function Capacity() {
usePageTitle('Capacity');
const [tab, setTab] = useState<'available' | 'match'>('available');
return (