- Add `webuntis` event type; event creation resolves URL from system `supplement_table_url`
- Consolidate settings: remove separate webuntis-url endpoints; use GET/POST /api/system-settings/supplement-table
- Scheduler: emit top-level `event_type` and unified `website` payload (`{ "type":"browser","url":"..." }`) for website/webuntis
- Preserve presentation payloads (page_progress/auto_progress) — presentation messages remain backwards-compatible
- Update defaults (`init_defaults.py`) and remove duplicate webuntis setting
- Docs & metadata: bump program-info to 2025.1.0-alpha.13; update README, copilot-instructions, DEV- and TECH-CHANGELOGs; add MQTT_EVENT_PAYLOAD_GUIDE.md and WEBUNTIS_EVENT_IMPLEMENTATION.md
6.5 KiB
6.5 KiB
TECH-CHANGELOG
This changelog documents technical and developer-relevant changes included in public releases. For development workspace changes, see DEV-CHANGELOG.md. Not all changes here are reflected in the user-facing changelog (program-info.json), and not all UI/feature changes are repeated here. Some changes (e.g., backend refactoring, API adjustments, infrastructure, developer tooling, or internal logic) may only appear in TECH-CHANGELOG.md. For UI/feature changes, see dashboard/public/program-info.json.
2025.1.0-alpha.13 (2025-10-19)
- 🗓️ Events/API:
- Implemented new
webuntisevent type. Event creation now resolves the URL from the system settingsupplement_table_url; returns 400 if unset. - Removed obsolete
webuntis-urlsettings endpoints. UseGET/POST /api/system-settings/supplement-tablefor URL and enabled state (shared for WebUntis/Vertretungsplan). - Initialization defaults: dropped
webuntis_url; updatedsupplement_table_urldescription to “Vertretungsplan / WebUntis”.
- Implemented new
- 🚦 Scheduler payloads:
- Unified Website/WebUntis payload: both emit a nested
websiteobject{ "type": "browser", "url": "…" };event_typeremains eitherwebsiteorwebuntisfor dispatch. - Payloads now include a top-level
event_typestring for all events to aid client dispatch.
- Unified Website/WebUntis payload: both emit a nested
- 🖥️ Frontend/Dashboard:
- Program info updated to
2025.1.0-alpha.13with release notes. - Settings → Events: WebUntis now uses the existing Supplement-Table URL; no separate WebUntis URL field.
- Event modal: WebUntis type behaves like Website (no per-event URL input).
- Program info updated to
- 📖 Documentation:
- Added
MQTT_EVENT_PAYLOAD_GUIDE.md(message structure, client best practices, versioning). - Added
WEBUNTIS_EVENT_IMPLEMENTATION.md(design notes, admin setup, testing checklist). - Updated
.github/copilot-instructions.mdandREADME.mdfor the unified Website/WebUntis handling and settings usage.
- Added
Notes for integrators:
- If you previously integrated against
/api/system-settings/webuntis-url, migrate to/api/system-settings/supplement-table. - Clients should now parse
event_typeand use the corresponding nested payload (presentation,website, …).webuntisandwebsiteshould be handled identically (nestedwebsitepayload).
2025.1.0-alpha.12 (2025-10-19)
- 🛠️ Backend: Seeded presentation defaults (
presentation_interval,presentation_page_progress,presentation_auto_progress) in system settings; applied on event creation. - 🗃️ Data model: Added
page_progressandauto_progressfields toEvent(with Alembic migration). - 🗓️ Scheduler: 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. - 🖥️ Dashboard: Settings → Events tab now includes Presentations defaults (interval, page-progress, auto-progress) with load/save via API; event modal applies defaults on create and persists per-event values on edit.
- 📖 Docs: Updated README and Copilot instructions for new scheduler behavior, UTC handling, presentation defaults, and per-event flags.
2025.1.0-alpha.11 (2025-10-16)
- ✨ Settings page: New tab layout (Syncfusion) with role-based visibility – Tabs: 📅 Academic Calendar, 🖥️ Display & Clients, 🎬 Media & Files, 🗓️ Events, ⚙️ System.
- 🛠️ Settings (Technical): API calls now use relative /api paths via the Vite proxy (prevents CORS and double /api).
- 📖 Docs: README updated for settings page (tabs) and system settings API.
2025.1.0-alpha.10 (2025-10-15)
- 🔐 Auth: Login and user management implemented (role-based, persistent sessions).
- 🧩 Frontend: Syncfusion SplitButtons integrated (react-splitbuttons) and Vite config updated for pre-bundling.
- 🐛 Fix: Import error ‘@syncfusion/ej2-react-splitbuttons’ – instructions added to README (optimizeDeps + volume reset).
2025.1.0-alpha.9 (2025-10-14)
- ✨ UI: Unified deletion workflow for appointments – all types (single, single instance, entire series) handled with custom dialogs.
- 🔧 Frontend: Syncfusion RecurrenceAlert and DeleteAlert intercepted and replaced with custom dialogs (including final confirmation for series deletion).
- 📖 Docs: README and Copilot instructions expanded for deletion workflow and dialog handling.
2025.1.0-alpha.8 (2025-10-11)
- 🎨 Theme: Migrated to Syncfusion Material 3; centralized CSS imports in main.tsx
- 🧹 Cleanup: Tailwind CSS completely removed (packages, PostCSS, Stylelint, config files)
- 🧩 Group management: "infoscreen_groups" migrated to Syncfusion components (Buttons, Dialogs, DropDownList, TextBox); improved spacing
- 🔔 Notifications: Unified toast/dialog wording; last alert usage replaced
- 📖 Docs: README and Copilot instructions updated (Material 3, centralized styles, no Tailwind)
2025.1.0-alpha.7 (2025-09-21)
- 🧭 UI: Period selection (Syncfusion) next to group selection; compact layout
- ✅ Display: Badge for existing holiday plan + counter ‘Holidays in view’
- 🛠️ API: Endpoints for academic periods (list, active GET/POST, for_date)
- 📅 Scheduler: By default, no scheduling during holidays; block display like all-day event; black text color
- 📤 Holidays: Upload from TXT/CSV (headless TXT uses columns 2–4)
- 🔧 UX: Switches in a row; dropdown widths optimized
2025.1.0-alpha.6 (2025-09-20)
- 🗓️ NEW: Academic periods system – support for school years, semesters, trimesters
- 🏗️ DATABASE: New 'academic_periods' table for time-based organization
- 🔗 EXTENDED: Events and media can now optionally be linked to an academic period
- 📊 ARCHITECTURE: Fully backward-compatible implementation for gradual rollout
- ⚙️ TOOLS: Automatic creation of standard school years for Austrian schools
2025.1.0-alpha.5 (2025-09-14)
- Backend: Complete redesign of backend handling for group assignments of new clients and steps for changing group assignment.
2025.1.0-alpha.4 (2025-09-01)
- Deployment: Base structure for deployment tested and optimized.
- FIX: Program error when switching view on media page fixed.
2025.1.0-alpha.3 (2025-08-30)
- NEW: Program info page with dynamic data, build info, and changelog.
- NEW: Logout functionality implemented.
- FIX: Sidebar width corrected in collapsed state.
2025.1.0-alpha.2 (2025-08-29)
- INFO: Analysis and display of used open-source libraries.
2025.1.0-alpha.1 (2025-08-28)
- Initial project setup and base structure.