c2e5c1d9dc
- /photo full-screen slideshow (crossfade, blurred backdrop or fill, shuffle, date) - admin Photos tab: add shared-album links (check, sync now, status/stale warnings), slideshow options, browser-resized uploads - 6-hourly album sync scraping the share page (Library API no longer exposes user albums), caches 1920px + 64px copies in /data/photos - /api/health/photos -> 503 when an album has not synced for 48h - history/restore covers photo settings; min admin password length 6 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E9NnVEico3WvFxLyjy1iW3
28 lines
808 B
TypeScript
28 lines
808 B
TypeScript
import { readAuth, readSettings } from "../../_lib/store";
|
|
|
|
export const dynamic = "force-dynamic";
|
|
|
|
export async function GET() {
|
|
const { calendars } = await readSettings();
|
|
let adminConfigured = false;
|
|
try {
|
|
adminConfigured = Boolean((await readAuth()).passwordHash);
|
|
} catch {
|
|
adminConfigured = false;
|
|
}
|
|
|
|
return Response.json(
|
|
{
|
|
status: "ok",
|
|
service: "hobbs-family-organizer",
|
|
version: "1.2.0",
|
|
calendarConfigurationValid: calendars.some((calendar) => calendar.enabled),
|
|
calendarsEnabled: calendars.filter((calendar) => calendar.enabled).length,
|
|
adminConfigured,
|
|
authenticationEnabled: Boolean(process.env.ORGANIZER_ACCESS_TOKEN),
|
|
checkedAt: new Date().toISOString(),
|
|
},
|
|
{ headers: { "Cache-Control": "no-store" } },
|
|
);
|
|
}
|