diff --git a/README.md b/README.md
index a4d49cb..e2eb9ee 100644
--- a/README.md
+++ b/README.md
@@ -123,3 +123,18 @@ Die Gemeinschaftsfinanzierung zeigt je Person zusätzlich Prozentwerte. **Kosten
### v3.27 – gerichtete Personentransfers und verfügbare Liquidität
Transfers zwischen persönlichen Konten unterschiedlicher Eigentümer werden in personenbezogenen Auswertungen aus den Kontoeigentümern als Sender → Empfänger abgeleitet. Der globale Schalter blendet Transferdetails nur noch ein oder aus; Kontoliquidität und verfügbare Beträge bleiben immer inklusive Transfers. In der persönlichen Statistik werden wirtschaftlich verfügbar und liquid verfügbar getrennt ausgewiesen.
+
+### v3.28 – kompakte Akkordeons in Planung und Bewegungen
+
+**Benötigt pro Konto** zeigt geschlossen nur Konto, Eigentum/Funktion und den resultierenden Fehlbetrag bzw. Überschuss. Die Zusammensetzung aus echten Ein-/Ausgängen und Transfers wird erst beim Aufklappen sichtbar. **Bewegungen** werden ebenfalls als einzelne Akkordeons dargestellt: Bezeichnung, Betrag sowie kompakte Badges bleiben sichtbar; Personen, Fälligkeit, Monatswert, Klassifikation, geplante Betragsänderungen und Bearbeitungsaktionen liegen im Detailbereich.
+
+### v3.29 – gebündelte Navigation und Stammdaten
+
+Die Hauptnavigation bleibt bei fünf Punkten, die fachlichen Unterseiten sind aber neu gruppiert:
+
+- **Planung**: Kontenbedarf, Jahresplanung und Szenarien.
+- **Auswertung**: Statistik und Auszüge.
+- **Mehr → Stammdaten**: Konten, Personen und Kategorien auf einer gemeinsamen Verwaltungsseite mit Tabs.
+- **Mehr → Einstellungen & Daten**: Benachrichtigungen sowie Backup/Import und Datenstand auf getrennten Tabs.
+
+Die Kategorienverwaltung wurde vollständig aus der Statistik entfernt. Kategorieauswertungen bleiben dort erhalten. Der bisherige reine Kategorie-Zähler in der Statistik wurde durch einen zur aktuellen Konto-/Personenauswahl passenden Saldo- bzw. Nettoflusswert ersetzt. Die Änderung betrifft nur Navigation und UI-Struktur; das JSON-Datenmodell bleibt bei `version: 11`.
diff --git a/public/sw.js b/public/sw.js
index 2c6a552..d605803 100644
--- a/public/sw.js
+++ b/public/sw.js
@@ -1,4 +1,4 @@
-const SHELL_CACHE='fixfin-shell-v3.27';
+const SHELL_CACHE='fixfin-shell-v3.29';
const DATA_CACHE='fixfin-data-v1';
const APP_SHELL=['/','/manifest.webmanifest','/icons/icon-192.png','/icons/icon-512.png','/icons/apple-touch-icon.png'];
diff --git a/src/main.jsx b/src/main.jsx
index f22311b..51d5646 100644
--- a/src/main.jsx
+++ b/src/main.jsx
@@ -541,30 +541,33 @@ function Icon({ name }) {
const PAGE_META={
dashboard:{label:'Übersicht',description:'Monatliche Salden und die wichtigsten Hinweise auf einen Blick.'},
movements:{label:'Bewegungen',description:'Eingänge, Ausgänge und interne Transfers verwalten.'},
- planning:{label:'Planung',description:'Kontobedarf und Rücklagen für die laufende Planung.'},
- year:{label:'Jahr',description:'Jahresplanung zwischen wirtschaftlicher Sicht und Kontoliquidität.'},
- stats:{label:'Statistik',description:'Kategorien, Verteilungen und Kennzahlen aus der Planung.'},
- statements:{label:'Auszüge',description:'Schlanke Kontoauszüge aus den geplanten Kontobewegungen.'},
- accounts:{label:'Konten & Personen',description:'Konten und Personen für deine Bewegungen verwalten.'},
+ planning:{label:'Kontenbedarf',description:'Liquiditätsbedarf und Rücklagen für die laufende Planung.'},
+ year:{label:'Jahresplanung',description:'Fälligkeiten und Liquidität über das gesamte Jahr planen.'},
scenarios:{label:'Szenarien',description:'Was-wäre-wenn-Varianten ohne Änderung der echten Planung.'},
- data:{label:'Daten',description:'Backup, Import und Pushover-Einstellungen.'},
+ stats:{label:'Statistik',description:'Verteilungen, Personenanteile und wirtschaftliche Kennzahlen auswerten.'},
+ statements:{label:'Auszüge',description:'Schlanke Kontoauszüge aus den geplanten Kontobewegungen.'},
+ accounts:{label:'Stammdaten',description:'Konten, Personen und Kategorien zentral verwalten.'},
+ data:{label:'Einstellungen & Daten',description:'Benachrichtigungen, Backup, Import und Datenstand verwalten.'},
};
const NAV_GROUPS={
+ planning:{label:'Planung',items:[
+ {tab:'planning',icon:'planning',label:'Kontenbedarf',description:'Liquiditätsbedarf & Rücklagen'},
+ {tab:'year',icon:'calendar',label:'Jahresplanung',description:'Fälligkeiten & Jahresliquidität'},
+ {tab:'scenarios',icon:'flask',label:'Szenarien',description:'Was-wäre-wenn-Planungen'},
+ ]},
analytics:{label:'Auswertung',items:[
- {tab:'year',icon:'calendar',label:'Jahr',description:'Jahresplan & Liquidität'},
- {tab:'stats',icon:'chart',label:'Statistik',description:'Kategorien & Kennzahlen'},
+ {tab:'stats',icon:'chart',label:'Statistik',description:'Kennzahlen & Verteilungen'},
{tab:'statements',icon:'statement',label:'Auszüge',description:'PDF- & Excel-Kontoauszüge'},
]},
more:{label:'Mehr',items:[
- {tab:'accounts',icon:'wallet',label:'Konten & Personen',description:'Zuordnungen verwalten'},
- {tab:'scenarios',icon:'flask',label:'Szenarien',description:'Was-wäre-wenn-Planungen'},
- {tab:'data',icon:'data',label:'Daten',description:'Backup, Import & Pushover'},
+ {tab:'accounts',icon:'wallet',label:'Stammdaten',description:'Konten, Personen & Kategorien'},
+ {tab:'data',icon:'data',label:'Einstellungen & Daten',description:'Benachrichtigungen, Backup & Import'},
]},
};
const MAIN_NAV=[
{tab:'dashboard',icon:'dashboard',label:'Übersicht'},
{tab:'movements',icon:'transfer',label:'Bewegungen'},
- {tab:'planning',icon:'planning',label:'Planung'},
+ {menu:'planning',icon:'planning',label:'Planung'},
{menu:'analytics',icon:'chart',label:'Auswertung'},
{menu:'more',icon:'more',label:'Mehr'},
];
@@ -629,14 +632,14 @@ function App() {
Liquiditätsplanung: Transfers zählen hier immer als echte Kontobewegungen. Eine Überweisung zu Depot, Bausparer oder Gemeinschaftskonto reduziert deshalb den Monatssaldo des Quellkontos, ohne zur Kostenstatistik zu werden.
0} positive={totalFundingNeed===0}/>
-
Benötigt pro Konto
Liquiditätsbedarf je Konto: echte Ausgaben plus Transfers raus, gedeckt durch echte Eingänge plus Transfers rein.
Eigentum bestimmt, wem Geld wirtschaftlich gehört. Die Kontofunktion bestimmt, ob eine Umbuchung z. B. Rücklage, Investment oder Bausparen ist.
{unconfiguredAccounts>0&&
{unconfiguredAccounts} {unconfiguredAccounts===1?'Konto braucht':'Konten brauchen'} noch eine Eigentumszuordnung.Bestehende Konten wurden absichtlich nicht automatisch geraten. Bitte einmal bearbeiten, Eigentum festlegen und die passende Kontofunktion wählen.
Personen können Konten besitzen und einzelnen Bewegungen gemeinsam zugeordnet werden.
{unassigned>0&&
{unassigned} bestehende {unassigned===1?'Bewegung ist':'Bewegungen sind'} noch ohne Person.Diese Altbestände bleiben erhalten und können beim Bearbeiten zugeordnet werden. Neue Bewegungen benötigen mindestens eine Person.
Eigentum bestimmt, wem Geld wirtschaftlich gehört. Die Kontofunktion bestimmt, ob eine Umbuchung z. B. Rücklage, Investment oder Bausparen ist.
{unconfiguredAccounts>0&&
{unconfiguredAccounts} {unconfiguredAccounts===1?'Konto braucht':'Konten brauchen'} noch eine Eigentumszuordnung.Bestehende Konten wurden absichtlich nicht automatisch geraten. Bitte einmal bearbeiten, Eigentum festlegen und die passende Kontofunktion wählen.
Personen können Konten besitzen und einzelnen Bewegungen gemeinsam zugeordnet werden.
{unassigned>0&&
{unassigned} bestehende {unassigned===1?'Bewegung ist':'Bewegungen sind'} noch ohne Person.Diese Altbestände bleiben erhalten und können beim Bearbeiten zugeordnet werden. Neue Bewegungen benötigen mindestens eine Person.
{x.name}{categoryNameLocal(x.categoryId)}{!isIncome&&x.pushoverReminder&&Reminder am 1.}{(x.amountChanges||[]).length>0&&{x.amountChanges.length} geplant}{x.endDate&&bis {formatDate(x.endDate)}}
{isIncome?'+':'−'}{formatMoney(currentAmount(x))}
-
-
Personen{personLabelLocal(x)}
-
Konto{accountNameLocal(x.accountId)}
-
Intervall{intervals[x.interval||'monthly'].label}
-
Fälligkeit{dueText(x)}
-
Ø / Monat{formatMoney(monthlyEquivalent(x))}
-
-
- )}
- >};
+ return
{isIncome?'Fixe Eingänge':'Fixe Ausgänge'}
Nur Basisinfos bleiben sichtbar. Details und Aktionen öffnen sich je Bewegung per Akkordeon.
;
}
@@ -995,7 +989,8 @@ function StatementsPage({data,includeTransfers,onTransfersChange}){
return
Kontoauszug erstellen
Nur die geplanten Bewegungen des gewählten Kontos. Keine Stammdaten, Szenarien oder Systemeinstellungen.
PDF · XLSX
Kontoauszug{account} · {selectedPerson} · {year}
PDF: Jahreswerte und monatlich gruppierte Kontobewegungen {includeTransfers?'inklusive Transfers':'ohne Transfers'}. Bei Person-Filter werden gemeinsam zugeordnete Bewegungen anteilig ausgewiesen. Excel: genau zwei Blätter, Kontoauszug und Monatsübersicht.