feat(nextcloud-status): Dashboard-Kachel, Anleitung und Changelog

- Kachel mit Zählern und roten/gelben Clouds, nur mit Modulzugriff sichtbar (geteilte Widget-Typen, Modulzuordnung, Katalog)
- Anleitung für Anwender und Administratoren, Eintrag im Changelog

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-10-02 15:00:31 +02:00
parent 6698ef1a92
commit 87a7b7cbcd
18 changed files with 564 additions and 27 deletions
@@ -21,14 +21,26 @@ describe('widget-module-map (quick-260922-m1h)', () => {
}
});
// quick-260924-i8v: Proxmox ist die erste modulgebundene Kachel; alle
// uebrigen bleiben Plattform-Kacheln ohne Modulbezug.
it('nur proxmox traegt einen Modulbezug, alle uebrigen Kacheln sind Plattform-Kacheln', () => {
for (const type of WIDGET_TYPES.filter((t) => t !== 'proxmox')) {
// quick-260924-i8v: Proxmox ist die erste modulgebundene Kachel,
// quick-261002-k67 ergaenzt Nextcloud-Status; alle uebrigen bleiben
// Plattform-Kacheln ohne Modulbezug.
it('nur proxmox und nextcloud-status tragen einen Modulbezug, alle uebrigen Kacheln sind Plattform-Kacheln', () => {
expect(Object.keys(WIDGET_MODULE_MAP).sort()).toEqual(['nextcloud-status', 'proxmox']);
for (const type of WIDGET_TYPES.filter((t) => t !== 'proxmox' && t !== 'nextcloud-status')) {
expect(getModuleSlugForWidgetType(type)).toBeUndefined();
}
});
it("die Nextcloud-Status-Kachel gehoert zum Modul 'nextcloud-status' (T-k67-04)", () => {
expect(getModuleSlugForWidgetType('nextcloud-status')).toBe('nextcloud-status');
});
it('WIDGET_TYPES endet mit nextcloud-status (zwoelf Typen, Reihenfolge unveraendert)', () => {
expect(WIDGET_TYPES).toHaveLength(12);
expect(WIDGET_TYPES.at(-1)).toBe('nextcloud-status');
expect(WIDGET_TYPES.at(-2)).toBe('reminder');
});
it("die Proxmox-Kachel gehoert zum Modul 'proxmox' (T-I8V-01)", () => {
expect(getModuleSlugForWidgetType('proxmox')).toBe('proxmox');
});