Dashboard (dashboard/src/dashboard.tsx, settings.tsx, apiAcademicPeriods.ts): - Refactor loadHolidayStatus to useCallback with stable empty-deps reference; removes location.pathname dependency that caused overlapping API calls at mount and left the banner unresolved via request-sequence cancellation - Add key prop derived from severity:text to Syncfusion MessageComponent to force remount on state change, fixing stale banner that ignored React prop/children updates - Correct German transliterated text to proper Umlauts throughout visible UI strings (fuer -> für, oe -> ö, ae -> ä etc. across dashboard and settings views) Backend (server/init_academic_periods.py): - Refactor to idempotent two-phase flow: seed default periods only when table is empty; on every run activate exactly the non-archived period covering date.today() - Enforces single-active invariant by deactivating all periods before promoting match - Emits explicit warning when no period covers current date instead of doing nothing Deployment (docker-compose.prod.yml): - Add init_academic_periods.py to server startup chain after migrations and defaults; eliminates manual post-deploy step to set an active academic period Release docs: - program-info.json: bump to 2026.1.0-alpha.16; fix JSON parse error caused by typographic curly quotes in the new changelog entry - TECH-CHANGELOG.md: detailed alpha.16 section with root-cause motivation for both dashboard refactoring decisions (unstable callback ref + Syncfusion stale render) - DEV-CHANGELOG.md: document dashboard refactor, Syncfusion key fix, Umlaut changes, and program-info JSON regression and fix - README.md: add Latest Release Highlights section for alpha.16 - .github/copilot-instructions.md: sync file map, prod bootstrap note, backend and frontend pattern additions for academic period init and Syncfusion remount pattern
4.7 KiB
4.7 KiB
DEV-CHANGELOG
This changelog tracks all changes made in the development workspace, including internal, experimental, and in-progress updates. Entries here may not be reflected in public releases or the user-facing changelog.
Unreleased (development workspace)
- Programminfo GUI regression/fix:
dashboard/public/program-info.jsoncould not be loaded in Programminfo menu due to invalid JSON in the new alpha.16 changelog line (malformed quote in a text entry). Fixed JSON entry and verified file parses correctly again. - Dashboard holiday banner fix:
dashboard/src/dashboard.tsx—loadHolidayStatusnow uses a stableuseCallbackwith empty deps, preventing repeated re-creation on render.useEffectdepends only on the stable callback reference. - Dashboard Syncfusion stale-render fix:
MessageComponentin the holiday banner now receiveskey={${severity}:${text}}to force remount when severity or text changes; without this Syncfusion cached stale DOM and the banner did not update reactively. - Dashboard German text: Replaced transliterated forms (ae/oe/ue) with correct Umlauts throughout visible dashboard UI strings —
Präsentation,für,prüfen,Ferienüberschneidungen,verfügbar,Vorfälle,Ausfälle. - TV power intent (Phase 1): Scheduler publishes retained QoS1 group-level intents to
infoscreen/groups/{group_id}/power/intentwith transition+heartbeat semantics, startup/reconnect republish, and poll-based expiry (max(3 × poll_interval_sec, 90s)). - TV power validation: Added unit/integration/canary coverage in
scheduler/test_power_intent_utils.py,scheduler/test_power_intent_scheduler.py, andtest_power_intent_canary.py. - Monitoring system completion: End-to-end monitoring pipeline is active (MQTT logs/health → listener persistence → monitoring APIs → superadmin dashboard).
- Monitoring API: Added/active endpoints
GET /api/client-logs/monitoring-overviewandGET /api/client-logs/recent-errors; per-client logs viaGET /api/client-logs/<uuid>/logs. - Dashboard monitoring UI: Superadmin monitoring page is integrated and displays client health status, screenshots, process metadata, and recent error activity.
- Bugfix: Presentation flags
page_progressandauto_progressnow persist reliably across create/update and detached-occurrence flows. - Frontend (Settings → Events): Added Presentations defaults (slideshow interval, page-progress, auto-progress) with load/save via
/api/system-settings; UI uses Syncfusion controls. - Backend defaults: Seeded
presentation_interval("10"),presentation_page_progress("true"),presentation_auto_progress("true") inserver/init_defaults.pywhen missing. - Data model: Added per-event fields
page_progressandauto_progressonEvent; Alembic migration applied successfully. - Event modal (dashboard): Extended to show and persist presentation
pageProgress/autoProgress; applies system defaults on create and preserves per-event values on edit; payload includespage_progress,auto_progress, andslideshow_interval. - Scheduler behavior: Now publishes only currently active events per group (at "now"); clears retained topics by publishing
[]for groups with no active events; normalizes naive timestamps and compares times in UTC; presentation payloads includepage_progressandauto_progress. - Recurrence handling: Still queries a 7‑day window to expand recurring events and apply exceptions; recurring events only deactivate after
recurrence_end(UNTIL). - Logging: Temporarily added filter diagnostics during debugging; removed verbose logs after verification.
- WebUntis event type: Implemented new
webuntistype. Event creation resolves URL from systemsupplement_table_url; returns 400 if not configured. WebUntis behaves like Website on clients (shared website payload). - Settings consolidation: Removed separate
webuntis_url(if present during dev); WebUntis and Vertretungsplan sharesupplement_table_url. Removed/api/system-settings/webuntis-urlendpoints; use/api/system-settings/supplement-table. - Scheduler payloads: Added top-level
event_typefor all events; introduced unified nestedwebsitepayload for bothwebsiteandwebuntisevents:{ "type": "browser", "url": "…" }. - Frontend: Program info bumped to
2025.1.0-alpha.13; changelog includes WebUntis/Website unification and settings update. Event modal shows no per-event URL for WebUntis. - Documentation: Added
MQTT_EVENT_PAYLOAD_GUIDE.mdandWEBUNTIS_EVENT_IMPLEMENTATION.md. Updated.github/copilot-instructions.mdandREADME.mdfor unified Website/WebUntis handling and system settings usage.
Note: These changes are available in the development environment and may be included in future releases. For released changes, see TECH-CHANGELOG.md.