Team-Hub

Euer zentraler Ort für Kundendaten, Aufträge und Teamverwaltung. Hier findest du eine Übersicht aller Funktionen und Tipps für die tägliche Arbeit.

Rollen im Komplizen Hub

Je nach Rolle siehst du unterschiedliche Bereiche und hast verschiedene Berechtigungen.

Externer Komplize

  • Sieht nur zugewiesene Aufträge und deren Organisationen
  • Kann eigene Zeiten erfassen
  • Kann Aufgaben erstellen und bearbeiten
  • Kann Rechnungsnummern zu eigenen Anteilen hinterlegen
  • Findet gemeinsame freie Zeit mit anderen Komplizen
  • Pflegt Kundenstimmen über die eigene Arbeit
  • Kein Zugriff auf Produkte oder Netzwerk-Explorer

Interner Komplize

  • Voller Zugriff auf alle Organisationen, Personen und Aufträge
  • Kann Komplizen Aufträgen und Organisationen zuweisen
  • Zugriff auf Produkte und Netzwerk-Explorer
  • Kann interne Zeiten erfassen (IT, Marketing, etc.)
  • Kann Abrechnungszyklen erstellen und verwalten

Admin

  • Alles, was interne Komplizen können
  • Neue Komplizen anlegen und verwalten
  • Produkte erstellen und bearbeiten
  • Systemeinstellungen konfigurieren (Akquise-%, Verwaltungs-%)
  • Kontaktrollen verwalten

Was ist neu

Jede neue Version entspricht einem produktiven Rollout. Aktuelle Releases zuerst. Technische Hinweise (Migrationen, Infra) richten sich an die Komplizen, die den Rollout fahren.

v31

Reisen über Mitternacht werden richtig abgerechnet, dein Kalender zeigt, wer bei dir gebucht hat, und die Seitenleiste ist aufgeräumt. Freie Komplizen bekommen mehr Möglichkeiten.

🧾 Reisekosten

  • Reisen über Mitternacht ohne Übernachtung. Endet deine Reise am Folgetag, kannst du jetzt das Häkchen „Mit Übernachtung“ entfernen. Dann gibt es einmalig 14 €, wenn die Reise insgesamt länger als 8 Stunden dauert, und zwar für den Tag mit den meisten Stunden. Bisher zählte so eine Reise immer als Reise mit Übernachtung. Unsere Steuerberatung hat die Regel bestätigt. Bestehende Reisen bleiben unverändert.

📅 Buchungen

  • Du siehst, wer bei dir gebucht hat. In deinem Kalender heißt der Termin jetzt zum Beispiel „Kennenlerngespräch mit Petra Probst“. In der Beschreibung stehen Name, Organisation, E-Mail, Telefon, das Anliegen und die Antworten aus dem Buchungsformular. Geh mit diesen Kontaktdaten bitte genauso sorgsam um wie im Hub. Die Einladung für den Gast bleibt, wie sie war.
  • Gemeinsame Zeit auch für freie Komplizen. Freie Komplizen können jetzt ebenfalls im Tab „Gemeinsame Zeit“ suchen, wann ihr alle zusammen frei seid.

💶 Umsatz

  • Genau die Beträge aus dem Wertvertrag. Die Umsatz-Seite zeigt jetzt „Deine Anteile“ und „davon Akquise“. Der höhere „Wert deiner Arbeit“ ist weg, damit keine Zahl mehr verspricht, was der Vertrag nicht zuweist.

💬 Kundenstimmen

  • Freie Komplizen pflegen ihre eigenen. Freie Komplizen sehen und bearbeiten jetzt Kundenstimmen über ihre eigene Arbeit. Stimmen über andere bleiben für sie verborgen, und veröffentlichen dürfen weiterhin nur Admins.

🧭 Navigation & Suche

  • Seitenleiste in Gruppen. Die Einträge stehen jetzt unter Kunden, Arbeit, Angebot, Finanzen und Team, und die Leiste lässt sich scrollen. Die Einstellungen findest du ganz unten. Offene Abrechnung und Abrechnungszyklen sind ein Eintrag „Abrechnung“ mit zwei Tabs.
  • Aufgeräumte Schnellsuche. Die Suche oben im Hub zeigt keine abgerechneten und abgebrochenen Aufträge mehr.
🛠 Migrationen & Rollout. 27 Migrationen. Reihenfolge: 1. Sicherung ssh root@production-ssh.va-os.io /opt/va-os-backup/backup.sh all --release (muss mit all services backed up enden), 2. make db-apply-pending ENV=prod aus einem sauberen Stand von main, 3. hub-api, hub-web und Temporal (prod) in Coolify redeployen. Die Migrationen müssen vor dem Redeploy laufen, sonst fehlt der API die Spalte overnight_stay.
20261021150000–170500 Token-System: Schema, Monatsberechnung, Konten, Abschluss. 20261021180000–180300 Kundenstimmen für freie Komplizen. 20261102100000–100100 business_trips.overnight_stay, Standardwert true.
Das Token-System kommt unsichtbar mit: VITE_FEATURE_TOKENS bleibt auf hub-web-prod aus, das Einschalten ist TASK-354. Der Temporal-Worker enthält bereits tokenExpiryWorkflow, der Zeitplan token-expiry wird erst mit TASK-354 angelegt.
Nicht Teil des Hub-Redeploys: die Prod-Tunnel und LimeSurvey brauchen ihre aktualisierten Images von Hand (TASK-346).
Enthaltene PRs: #671–#675, #677–#680, #689, #691–#695.
v30

Dein Profil zeigt jetzt, was du kannst: Kompetenzen, Weiterbildungen und Zertifikate. Dazu Kundenstimmen im Hub und eine Suche nach gemeinsamer freier Zeit.

🌱 Kompetenzen

  • Was du kannst – und was du lernen willst. Im Profil gibt es den neuen Tab „Kompetenzen". Dort wählst du je Kompetenz Grundkenntnisse, Erfahren oder Experte und kannst zusätzlich „Will ich lernen" setzen. So sieht das Team bei neuen Anfragen schnell, wer passt.
  • Eine gemeinsame Liste. Die Kompetenzen sind nach unseren Auftragsrollen gruppiert und werden von den Admins in den Einstellungen gepflegt, damit alle dieselben Begriffe nutzen.
  • Aufgeräumte Auftragsrollen. Co-Facilitator gehört jetzt zu Facilitator, aus Projektleitung wird Koordination, und Trainer und Coach sind neu. Bestehende Zuordnungen in Aufträgen sind übernommen.

🎓 Weiterbildungen & Zertifikate

  • Jetzt im Tab „Kompetenzen". Deine Weiterbildungen sind von der einfachen Liste im Profil hierher umgezogen, in derselben Reihenfolge. Neu: Zertifikate mit „Gültig bis", ein Nachweis zum Hochladen und der Schalter „Auf der Webseite zeigen".
  • Nachweise bleiben privat. Hochgeladene Dateien können nur du und die Admins öffnen.
  • Nachweis zur Kompetenz. Bei einer Kompetenz verweist du über „Nachweis" auf deine Weiterbildungen und Zertifikate. Abgelaufene Zertifikate sind markiert und verschwinden von der Webseite.
  • Ab und zu eine kurze Nachfrage. Etwa alle zwei Monate fragt der Hub beim Anmelden, ob dein Profil noch aktuell ist. Ausschalten kannst du das im Tab „Kompetenzen".

💬 Kundenstimmen

  • Neue Seite „Kundenstimmen". Zitate von Kund*innen pflegen wir jetzt im Hub, verknüpft mit Komplizen, Personen, Organisationen und Aufträgen. Die zehn Kundenstimmen von der Website sind schon drin.
  • Erst mit Freigabe veröffentlichen. Auf die Website darf eine Kundenstimme erst, wenn das Datum der Zustimmung eingetragen ist. Veröffentlichen und sortieren dürfen nur Admins. Die Website holt sie sich in einem nächsten Schritt aus dem Hub.

📅 Buchungen

  • Gemeinsame Zeit finden. Unter Buchungen gibt es den Tab „Gemeinsame Zeit": Komplizen und Dauer wählen, und der Hub zeigt pro Tag, wann alle zusammen frei sind. Wer möchte, sucht auch außerhalb der Kernarbeitszeiten, montags bis freitags von 7 bis 22 Uhr.

📁 Nextcloud

  • Ordner mit Punkt am Anfang. Beginnt der Name eines Kunden oder Auftrags mit einem Punkt, legt der Hub den Nextcloud-Ordner jetzt ohne diesen Punkt an. Vorher war so ein Ordner in Nextcloud unsichtbar.

🤖 Via

  • Via handelt nur mit deinen Rechten. Fragt jemand Via im Chat, darf Via im Hub nichts, was die fragende Person selbst nicht dürfte – auch nicht, wenn Via für eine Admin-Person handelt. Die Zuordnung von Chat-Konten zu Komplizen ist dafür vorbereitet.
🛠 Migrationen & Rollout. 25 Migrationen, verträglich mit dem alten Code. Reihenfolge: 1. Sicherung ssh root@production-ssh.va-os.io /opt/va-os-backup/backup.sh all --release (muss mit all services backed up enden), 2. make db-apply-pending ENV=prod aus einem sauberen Stand von main, 3. hub-api, hub-web und Temporal (prod) in Coolify redeployen, 4. Kundenstimmen-Import apps/api-ts/scripts/import-website-testimonials.ts --apply gegen Prod.
20261008160000–160200 Auftragsrollen zusammenführen (nach Name, idempotent). 20261008180000–180500 Kompetenzkatalog + member_skills, Seed von 39 Kompetenzen. 20261009100000 is_admin_komplize() false bei agent_key_id. 20261009110000–110100 members.kchat_user_id + Admin-Feld-Guard. 20261015100000–100700 testimonials, Publish-Guard, website_public_testimonials() (booking_public, jetzt 12 Funktionen). 20261021100000–100300 member_qualifications + Backfill aus further_education, privater Bucket qualifications, website_public_team() liest daraus, set_member_skills mit Nachweisen. 20261021120000 member_profile_checks.
Zwischen Migration und Redeploy schreibt der alte Code noch further_education; eine Profiländerung genau in diesem Fenster erreicht die Website nicht. Deshalb direkt nacheinander fahren. Nach dem Rollout /api/public/team mit dem Stand vor dem Release vergleichen.
Nextcloud: bestehende Punkt-Ordner werden beim nächsten Update des Kunden umbenannt; den Kunden vor seinen Aufträgen aktualisieren.
Enthaltene PRs: #644, #646, #647, #648, #649, #650, #651, #652, #653, #654, #655, #656, #657, #658, #660, #661, #662, #663 (dazu #664 Backlog).
Backlog: TASK-323, TASK-72, TASK-324, TASK-326, TASK-75, TASK-318, TASK-319, TASK-330.
v29

Eine klarere Meldung, wenn ein Eintrag nicht da ist, Abrechnungen ohne geratene Sätze – und unsere Daten werden jetzt jede Nacht verschlüsselt gesichert.

🔍 Nicht gefunden

  • Eine Meldung statt zwei. Öffnest du einen Link zu einer Aufgabe, Organisation, Person oder einem Auftrag, den es nicht (mehr) gibt oder den du nicht sehen darfst, steht dort jetzt „… nicht gefunden oder kein Zugriff“. Bisher hieß es manchmal „Kein Zugriff“, obwohl der Eintrag einfach nicht existierte, oder nur „Ein Fehler ist aufgetreten“.
  • Warum beides in einer Meldung? Der Hub verrät bewusst nicht, ob es einen Eintrag gibt, den du nicht sehen darfst. Fehlt dir etwas, das du sehen solltest, frag eine Person mit Admin-Rechten.
  • Via versteht es auch. Vertippt sich jemand bei einer Aufgabe, meldet Via jetzt „nicht gefunden“ statt einer fehlenden Berechtigung.

🧾 Abrechnung

  • Keine geratenen Sätze mehr. Fehlt der Akquise- oder Verwaltungssatz in den Einstellungen oder ist er ungültig, lässt sich eine Abrechnung nicht abschließen – statt wie bisher still mit 15 % und 5 % zu rechnen. So kam es im Sommer zu falschen Akquise-Anteilen.
  • Klare Meldung, was fehlt. Beim Abschließen und in den Einstellungen siehst du jetzt den genauen Grund, zum Beispiel „Systemeinstellung ‚Akquise‘ fehlt“, statt nur „Ungültige Eingabe“.
  • Einstellungen bleiben stimmig. Akquise und Verwaltung können zusammen nicht mehr als 100 % ergeben – auch nicht, wenn zwei Admins gleichzeitig ändern. Änderst du beide Werte auf einmal, speichert der Hub sie in der richtigen Reihenfolge.

🔐 Datensicherung

  • Jede Nacht gesichert. Die Datenbanken von Hub, Passwort-Tresor, Umfragen, Statistik, Statusseite und Automatisierung werden jede Nacht verschlüsselt an einem zweiten Ort gesichert. Dass sich eine Sicherung auch wiederherstellen lässt, haben wir getestet. Für dich ändert sich nichts.
🛠 Migrationen & Rollout. Zwei Migrationen, verträglich mit dem alten Code. Reihenfolge: 1. Sicherung ssh root@production-ssh.va-os.io /opt/va-os-backup/backup.sh all --release (muss mit all services backed up enden), 2. make db-apply-pending ENV=prod aus einem sauberen Stand von main, 3. hub-api und hub-web in Coolify redeployen.
20261007190000_system_settings_distribution_sum_fn.sql + 20261007190100_…_trigger.sql – Trigger auf system_settings: akquise_percentage + administration_percentage ≤ 100, unter Advisory-Lock (SQLSTATE 23514). Vorher prüfen, dass die Prod-Werte das erfüllen (aktuell 20/5).
Finalisierung: fehlende/ungültige Verteilungs-Einstellungen → 400 VALIDATION_ERROR mit field = Schlüssel, kein 15/5-Fallback mehr.
API: Einzel-GETs (Aufgaben, Aufträge, Organisationen, Personen, Interaktionen, Interaktionszyklen) antworten bei fehlendem oder unsichtbarem Datensatz mit 404 NOT_FOUND statt 403.
Backup-Standard: infrastructure/backup/ läuft bereits per Cron auf dem Prod-Host; R2-Bucket va-os-db-backups nur in den Terraform-State importiert, nichts anzuwenden.
Enthaltene PRs: #632, #631, #633, #634, #635, #640 (dazu #630, #636, #638, #641 Backlog).
Backlog: TASK-307, TASK-316, TASK-225.1.
v28

Unter „Umsatz“ siehst du jetzt, was deine Arbeit wirklich eingebracht hat – und Admins haben alle Abrechnungen an einem Ort im Blick.

📈 Dein Umsatz

  • Wert deiner Arbeit. Ganz oben steht jetzt, was deine Arbeit eingebracht hat: bei Stunden ihr voller abgerechneter Wert, bei Pauschalen dein Anteil am Rechnungsbetrag. Bisher stand dort nur dein Anteil daran – das hat besonders bei Angestellten zu wenig gezeigt.
  • Akquise extra. Was du für gewonnene Aufträge bekommst, steht in einer eigenen Kachel. So zählt nichts doppelt.
  • Angestellt oder frei – so wie es damals war. Bei jeder Abrechnung steht, ob du sie als Angestellte:r oder frei gemacht hast. Das wird beim Abschließen festgehalten und ändert sich später nicht mehr. Angestellt heißt: Der Wert bleibt vollständig bei Vitale Arbeitskultur. Frei heißt: Du siehst deinen Anspruch, den du in Rechnung stellst, und was davon Akquise und Verwaltung finanziert.
  • „Firmen-Marge“ entfällt. Die Zahl stimmte nicht immer – zum Beispiel, wenn die Akquise an jemand anderen ging. Sie ist durch die klarere Aufteilung oben ersetzt.

🧾 Abrechnungszyklen (für Admins)

  • Alle Abrechnungen auf einer Seite. Unter „Abrechnungszyklen“ siehst du alle Zyklen über alle Aufträge – bisher ging das nur Auftrag für Auftrag. Du kannst nach Status, Zeitraum, Abschlussdatum und Auftrag oder Kunde filtern. Beim ersten Öffnen siehst du die letzten drei Monate.
  • Auffälligkeiten auf einen Blick. Rot markiert ist, wo Zahlen nicht zusammenpassen: Die Anteile ergeben nicht den Rechnungsbetrag, ein Akquise-Anteil fehlt oder passt nicht zum Satz. „Eigener Satz“ ist dagegen kein Fehler – ein Wertvertrag darf eigene Sätze festlegen.
  • Direkt öffnen. Ein Klick auf eine Zeile öffnet den Zyklus, ohne die Liste zu verlassen.
🛠 Migrationen & Rollout. Fünf Migrationen, alle verträglich mit dem alten Code – also zuerst migrieren, dann hub-api und hub-web in Coolify redeployen:
20261004120000_invoice_cycle_shares_recipient_is_internal.sql – neue Spalte recipient_is_internal auf Anteilen, Backfill aus dem heutigen is_internal (exakt, niemand hat gewechselt).
20261004120100_…_freeze_recipient_fn.sql + 20261004120200_…_trigger.sql – Trigger setzt den Status beim Anlegen und hält ihn danach fest.
20261004190000_invoice_cycle_overview_view.sql – View für die Zyklenübersicht, nur für Admins sichtbar.
20261004200000_…_freeze_recipient_guard_fn.sql – Empfänger eines bestehenden Anteils kann nicht mehr geändert werden.
API: /me/revenue-summary liefert member_work_value + member_akquise statt member_generated; neu GET /billing/invoice-cycles (Admin).
Rollout: make db-apply-pending ENV=prod aus einem sauberen Stand von main.
Enthaltene PRs: #621, #624, #625 (dazu #622, #623 Backlog, #627 DNS für process-engine-Staging, #620 Verknüpfung).
Backlog: TASK-312, TASK-314; Folgeaufgaben TASK-313, TASK-315 (Milestone m-13).
v27

Die offene Abrechnung wird zur Arbeitsliste: Du kannst nach Pauschal oder Zeit & Aufwand filtern und einen Zeitraum der Reihe nach abrechnen.

🧾 Offene Abrechnung

  • Nach Art der Position filtern. Oben auf der Seite wählst du „Alle“, „Pauschal“ oder „Zeit & Aufwand“. Die Summen in den Kacheln rechnen dann nur noch mit dem, was du gerade siehst.
  • Einen Zeitraum abrechnen. Im Feld „Abgerechnet bis vor“ trägst du zum Beispiel den 30.09. ein. Dann siehst du nur noch Aufträge, die noch nicht bis dahin abgerechnet sind – oben die, die am längsten warten. Aufträge ohne „Abgerechnet bis“-Datum stehen ganz oben.
  • Die Liste leert sich von selbst. Sobald du Zeiten einer Abrechnung zuordnest oder eine Pauschale vollständig abgerechnet ist, verschwinden die Posten aus der Liste. Ist ein Auftrag fertig abgerechnet, trage im Auftrag das neue „Abgerechnet bis“-Datum ein – dann fällt er aus der Liste für diesen Zeitraum.
  • Jeder Auftrag zeigt sein Datum. Neben dem Kundennamen steht, bis wann der Auftrag zuletzt abgerechnet wurde.
  • Filter merken. Deine Auswahl steht in der Adresse der Seite. Lädst du neu oder legst dir ein Lesezeichen an, ist der Filter wieder da.
🛠 Migrationen & Rollout. Keine DB-Migrationen in diesem Release. hub-api und hub-web in Coolify redeployen (Prod-Auto-Deploy ist aus).
Neue optionale Query-Parameter an GET /billing/open-items: type=pauschal|zeit, invoiced_before=YYYY-MM-DD; ohne Parameter unverändert.
Außerdem: Staging-Auto-Deploy repariert – der GitHub-Webhook (…/events/manual) bekam seit der Tunnel-Härtung ein 403 von Cloudflare (#617, per Terraform bereits live; betrifft Prod nicht).
Enthaltene PRs: #616, #617 (dazu #615, Backlog).
Backlog: TASK-310.
v26

Ein Wartungs-Release: Im Hub ändert sich für dich nichts, aber Via darf wieder Aufgaben anlegen.

🤖 Via

  • Via kann wieder Aufgaben anlegen. Seit Mai wurde Via beim Anlegen einer Aufgabe abgewiesen – eine alte Sperre war versehentlich zurückgekommen. Sie ist jetzt weg. Via darf weiterhin nur eigene Aufgaben anlegen und bearbeiten, nicht die von anderen.
  • Fehler werden sichtbar. Klappt bei Via etwas nicht, steht jetzt im Protokoll, woran es lag. So finden wir solche Probleme künftig schneller.

🔐 Sicherheit

  • Keine Test-Zugangsdaten mehr im Code. Die Schlüssel der Testumgebung sind erneuert und liegen nur noch im Passwort-Tresor.
🛠 Migrationen & Rollout. Zwei Migrationen, danach kein Service-Redeploy nötig (keine Laufzeitänderung an hub-api/web; va-agent-mcp läuft nur auf Staging):
20260929120000_restore_agent_task_writes_guard.sql – bricht ab, falls die feinen Agent-Policies auf tasks/task_members/task_orders fehlen oder verändert sind.
20260929120100_restore_agent_task_writes.sql – entfernt die am 2026-05-17 wieder eingespielten pauschalen agent_no_*-Policies auf diesen drei Tabellen.
Rollout: make db-apply-pending ENV=prod.
Enthaltene PRs: #609, #610 (dazu #608, #611, Backlog).
Backlog: TASK-305, TASK-300, TASK-245.
v25

Wer deinen Verfügbarkeits-Link im Messenger oder per Mail bekommt, sieht in der Vorschau gleich deinen Namen und dein Foto.

📅 Verfügbarkeit teilen

  • Vorschau mit Name und Foto. Stehst du auf der Website, zeigt die Link-Vorschau „Verfügbarkeit von …“, dein Profilfoto und den Hinweis „Alle Verfügbarkeiten der nächsten 12 Wochen für eine reibungslose Terminfindung.“ Ohne Website-Profil bleibt die Vorschau allgemein.
  • Dein Link sieht jetzt etwas anders aus. Er enthält deinen Namen. Der geheime Teil ist derselbe — bereits verschickte Links funktionieren weiter. Wer eine Vorschau mit Foto möchte, kopiert den Link einfach neu aus dem Profil.
  • Der Name im Link verrät nichts. Ohne den geheimen Teil zeigt die Seite keine Zeiten an.
🛠 Migrationen & Rollout. Keine DB-Migrationen. hub-api-prod redeployen (Link wird zu /verfuegbarkeit/<slug>/#…). Website-Seiten je Komplize kamen vorab mit va-web #85.
Enthaltene PRs: #605 (dazu #604, Release-Notes v23/v24).
Backlog: TASK-301.
v24

Du kannst Kund*innen, mit denen du regelmäßig arbeitest, einen geheimen Link schicken, unter dem sie deine freien Zeiten Woche für Woche sehen.

📅 Verfügbarkeit teilen

  • Ein Link pro Komplize. In deinem Profil unter „Zeiten“ findest du die Karte „Verfügbarkeit teilen“. Dort erstellst du deinen Link und kopierst ihn jederzeit wieder heraus.
  • Was deine Kund*innen sehen. Deinen Namen, die Kalenderwoche und pro Tag die Zeitfenster, in denen du frei bist — bis zu zwölf Wochen im Voraus. Keine Termine, keine Titel, keine Details und keine Buchung.
  • Keine kleinen Schnipsel. Freie Zeit unter 30 Minuten taucht nicht auf. Grundlage sind deine Arbeitszeiten, Abwesenheiten und dein verbundener Kalender — dieselben Regeln wie bei der Online-Buchung.
  • Lieber nichts als etwas Falsches. Hat sich dein Kalender länger nicht abgeglichen, zeigt die Übersicht keine freien Zeiten an, bis der Abgleich wieder läuft.
  • Du behältst die Kontrolle. „Erneuern“ macht den alten Link sofort ungültig, „Abschalten“ schließt die Übersicht ganz. Die Seite ist nirgends verlinkt und wird von Suchmaschinen nicht erfasst.
🛠 Migrationen & Rollout. 20260929100000 — Tabelle booking_availability_links (ein geheimer Schlüssel pro Komplize, nur service_role); 20260929100100 — booking_member_free_windows (freie Fenster, Kalender-Abdeckung fail-closed, Mindestlänge 30 Min.); 20260929100200 — booking_public_availability (öffentliche Wochenansicht, 12 Wochen); 20260929100300 — Rechte; 20260929100400 — Prüfung der öffentlichen Fläche (jetzt 11 Funktionen). Danach hub-api-prod und hub-web-prod redeployen, Proxy-Worker va-booking-proxy neu ausrollen (Route /availability), va-web #84 (Seite /verfuegbarkeit).
Enthaltene PRs: #602; Promote #603.
Backlog: TASK-301.
v23

Die Online-Buchung ist auf der Website live, und die öffentliche Schnittstelle dahinter ist besser abgesichert.

🗓 Online-Buchung

  • Kennenlerngespräch auf der Startseite. Besucher*innen buchen ein 30-minütiges Kennenlerngespräch direkt auf vitale-arbeitskultur.de. Die Bestätigung kommt per Mail, mit Kalendereintrag und einem eigenen kMeet-Raum.
  • Deine Dienste auf deiner Profilseite. Auf den Profilseiten stehen die Dienste des jeweiligen Komplizen als Karten, etwa eine Auftragsklärung. Die Beschreibung klappt man bei Bedarf auf.
  • Eigene Kalender verbinden. Neben dem Vitale-Postfach kannst du auch einen Google-Kalender, einen anderen Microsoft-365-Kalender oder einen CalDAV-Kalender verbinden. So bietet die Buchung nur Zeiten an, in denen du wirklich frei bist.

🔐 Sicherheit

  • Die öffentliche Schnittstelle kennt keine internen Schlüssel mehr. Der Teil des Hubs, den die Website erreicht, startet jetzt ohne die internen Zugangsdaten und verweigert den Start, falls doch welche ankommen. Im Alltag merkst du davon nichts.
🛠 Migrationen & Rollout. Keine DB-Migrationen. booking-api startet über env -u ohne die internen Secrets (Coolify rendert alle App-Variablen in jeden Service), Start-Guard für API_SURFACE=public, Healthcheck in Exec-Form. hub-api-prod redeployen. Buchung live über va-web #82/#83; Kalender-Verbindungen (Google, externes M365, CalDAV) per Env in hub-api-prod konfiguriert.
Enthaltene PRs: #598, #599, #601; Promote #600.
Backlog: TASK-299, TASK-211.
v22

Eine Sicherheitslücke rund um die eigenen Kontodaten ist geschlossen. Im Alltag merkst du davon nichts.

🔐 Sicherheit

  • Rolle, Status und Anmelde-Adresse ändern nur Admins. Mit etwas technischem Geschick konnte man diese Angaben am eigenen Konto bisher an der Hub-Oberfläche vorbei ändern — etwa ein deaktiviertes Konto wieder aktivieren. Das geht jetzt nicht mehr, auch nicht, wenn zwei Änderungen gleichzeitig eintreffen.
  • Für dich ändert sich nichts. Dein Profil — Texte, Bild, Anschrift, Arbeitsfelder — pflegst du wie gewohnt selbst. Admins können weiterhin alles ändern.
🛠 Migrationen & Rollout. 20260928130000 — Selbst-Update-Regel auf members hält alle Admin-Felder fest; 20260928130100–20260928130200 — Trigger members_guard_admin_fields vergleicht alten und neuen Stand der Zeile (kein Snapshot-Wettlauf). Kein Redeploy nötig.
Enthaltene PRs: #595 (dazu #594, Release-Notes v20/v21); Promote #596.
Backlog: TASK-297.
v21

Wenn du im Hub ein Profil änderst, das auf der Website steht, ist die Änderung nach wenigen Minuten online — ohne dass jemand etwas anstoßen muss.

🌐 Website

  • Profiländerungen gehen von selbst online. Sobald du ein veröffentlichtes Profil im Hub speicherst, baut sich die Website neu. Nach ein bis drei Minuten siehst du deine Änderung unter „Über uns“ und auf der Profilseite.
  • Mehrmals speichern ist kein Problem. Speicherst du kurz hintereinander mehrere Änderungen, wartet der Hub eine Minute ab und lässt die Website dann einmal neu bauen — mit allem zusammen.
  • Wenn es einmal hakt, bleibt die Website, wie sie war. Klappt der Neubau nicht, versucht der Hub es noch zweimal. Die Website zeigt in der Zwischenzeit weiter die letzte fehlerfreie Fassung, nie eine halbe.
🛠 Migrationen & Rollout. Keine DB-Migrationen. Neue Umgebungsvariable WEBSITE_DEPLOY_HOOK_URL in hub-api-prod (Cloudflare-Pages-Deploy-Hook von va-web, Branch main; auf Staging bewusst leer), danach hub-api-prod redeployen. Außerdem: Kalender-Abgleich reicht 92 statt 91 Tage, Tests der Ereignis-Verarbeitung laufen jetzt in CI mit.
Enthaltene PRs: #591, #593; Promote #592.
Backlog: TASK-296.
v20

Die Komplizen-Profile auf der Website kommen jetzt aus dem Hub. Dazu Sicherheitskorrekturen und weitere Vorbereitungen für das Buchungstool, das weiterhin ausgeschaltet ist.

🌐 Website & Profile

  • Dein Website-Profil pflegst du jetzt im Hub. „Über uns“ und deine Profilseite zeigen, was in deinem Hub-Profil steht: Funktion, Kurz- und Langvorstellung, Tätigkeitsfelder, Weiterbildungen, Referenzen, LinkedIn und Bild. Die Pflege über das Website-Redaktionssystem gibt es nicht mehr.
  • Admins entscheiden, wer auf der Website erscheint. Im Komplizen-Profil gibt es dafür den Reiter „Webseite“: ein Schalter, die Adresse der Profilseite und die Reihenfolge. Ins Kernteam kommen Admins und interne Komplizen, externe Komplizen stehen darunter bei „Weitere Trainer*innen und Coaches“.
  • Veröffentlicht wird nur, was auf der Website steht. Das sind Name, Bild und die Profilangaben oben. Telefonnummer, Anschrift, Geburtsdatum oder Bankdaten bleiben im Hub. Als E-Mail erscheint immer vorname.nachname@vitale-arbeitskultur.de, nicht die Adresse, mit der du dich anmeldest.
  • Die bisherigen Website-Texte sind übernommen. Wo im Hub schon eine andere Fassung stand, gilt jetzt die der Website; die ältere Hub-Fassung ist gesichert.

🔐 Sicherheit

  • Rechnungszyklen löschen dürfen nur Admins. Über einen Umweg war das bisher auch anderen möglich. Diese Korrektur ist schon seit dem 27.09. aktiv.
  • Eine Hintertür in der Datenbank ist zu. Einige interne Abfragen ließen sich grundsätzlich auch ohne Anmeldung auslösen; das geht nicht mehr. Externe Komplizen sehen in Auswertungen zu Aufträgen nur noch ihre eigenen. Aktiv seit dem 28.09.
  • Niemand kann sich selbst auf der Website veröffentlichen. Schalter, Adresse und Reihenfolge lassen sich nur von Admins ändern — auch nicht auf Umwegen an der Hub-Oberfläche vorbei.

📅 Buchungstool — weiterhin ausgeschaltet

  • Letzte Korrekturen vor dem Start. Aus der Prüfung vor dem Einschalten: klarere Rechte, wer Gastgeber*in eines Termins sein darf, besser geschützte öffentliche Seite, und eine Bestätigungsmail geht auch bei Störungen nicht doppelt raus.
  • Externe Komplizen sehen ihre eigenen Ausnahmen. Urlaube und abweichende Zeiten in der eigenen Verfügbarkeit lassen sich jetzt auch von externen Komplizen öffnen.
  • Termine bis zu 90 Tage im Voraus. Bisher wurden die Kalender nur drei Wochen voraus abgeglichen — danach hätte die Buchungsseite keine Termine gezeigt. Jetzt reicht der Abgleich so weit wie die Buchung.
🛠 Migrationen & Rollout. Seit v19 in drei Schritten:
Hotfix 27.09. (Promote #580): 20260927090000–20260927090100 — Admin-Prüfung für delete_invoice_cycle.
Hotfix 28.09. (Promote #584): 20260927100000–20260927100800 — Buchungs-Korrekturen (Host-Rechte, öffentliche Slot-Funktionen ohne Komplizen-Kennungen, Outbox merkt sich versandte Mails); 20260928100000–20260928100300 — keine Funktion für anon ausführbar, orders_for_komplize eingeschränkt, Prüfung.
v20 (Promote #590): 20260928110000 — Buchungshorizont höchstens 90 Tage; 20260928120000–20260928120300 — Website-Felder, Schutz der Selbstbearbeitung, website_public_team() nur für die öffentliche Fläche, Prüfung. Danach hub-api-prod und hub-web-prod redeployt, die sieben Website-Profile per import-website-profiles.ts übernommen (mit Sicherung), dann va-web#80 gemergt.

Enthaltene PRs: #579, #581, #582, #583, #585 (Hotfixes); #586, #587, #588, #589 (v20). Website: va-web#80.
Backlog: TASK-281, TASK-293, TASK-294, TASK-296; va-web TASK-011.
v19

Anfragen über das Kontaktformular der Website landen wieder im Posteingang statt im Spam. Dazu: neue Konten nur noch per Einladung, Anleitungen in der Hilfe — und das Buchungstool ist vorbereitet, aber noch nicht eingeschaltet.

📨 Kontaktformular der Website

  • Anfragen kommen wieder im Posteingang an. Bisher liefen die Nachrichten über einen Newsletter-Dienst. Dessen Kennzeichen — etwa ein Abmeldelink in jeder Mail — haben Microsoft dazu gebracht, sie als Spam einzusortieren. Jetzt verschickt der Hub die Anfragen selbst, über denselben Weg wie unsere übrigen Systemmails.
  • „Antworten“ erreicht direkt die Person, die geschrieben hat. Die Mail kommt vom „Website-Kontaktformular“, aber wenn du auf Antworten klickst, steht automatisch die Adresse der anfragenden Person im Empfängerfeld.
  • Keine Anfrage geht mehr verloren. Der Hub hebt jede Anfrage auf, bevor er die Mail verschickt. Klappt der Versand einmal nicht, versucht er es selbstständig erneut, bis die Mail durch ist. Wer das Formular abschickt, bekommt die Bestätigung trotzdem sofort.

🔐 Anmeldung

  • Neue Konten gibt es nur noch per Einladung. Bisher konnte sich theoretisch jede Person selbst ein Konto anlegen — sehen konnte sie damit nichts, aber es war eine offene Tür. Die ist jetzt zu. Für dich ändert sich nichts: Anmelden per Link aus der Mail funktioniert wie gewohnt.

✨ Kleinere Verbesserungen

  • Anleitungen in der Hilfe. Über das Fragezeichen findest du zu vielen Seiten jetzt Schritt-für-Schritt-Anleitungen, direkt dort, wo du sie brauchst.
  • Datum und Uhrzeit auf Deutsch. Datumsfelder zeigen Tag, Monat, Jahr in deutscher Reihenfolge, Uhrzeiten im 24-Stunden-Format.

📅 Buchungstool — vorbereitet, noch nicht sichtbar

  • Es ist schon mit ausgeliefert, aber ausgeschaltet. Damit der nächste Schritt schnell gehen kann, liegt alles Nötige bereits bereit. Im Hub siehst du davon noch nichts, und auf der Website kann noch niemand buchen. Eingeschaltet wird es mit dem nächsten Release, sobald die letzten Punkte geklärt sind.
🛠 Migrationen & Rollout. 46 Datenbank-Migrationen (20260728200000 bis 20260926100600): Buchung (ausgeschaltet), Rechte für den künftigen Assistenten-Zugang, Paperless-Zuordnung, Kontaktanfragen. Neu in Produktion: der öffentliche Container booking-api unter booking-api.va-os.io, ein Zeitplan für den Versand der Kontaktanfragen, dazu Mail-Zugang und Zeitplan-Schlüssel in der Umgebung. Ablauf Schritt für Schritt: infrastructure/releases/v19-runbook.md.

Ausgeschaltet ausgeliefert: Buchungstool (kein Menüpunkt, keine Dienste, keine Buchungs-Zeitpläne) und der Hub-Zugang für den Assistenten (kein Dienst in Produktion). Vor dem Einschalten der Buchung stehen noch Korrekturen aus (TASK-293).

Enthaltene PRs: #565, #566, #567, #568, #569, #570, #572, #573, #574; Promote #571. Website: va-web#77.
Backlog-Milestone: v19 — Booking dark + contact form (m-12).
v18

Vier gemeldete Fehler aus dem Alltag: Die offene Abrechnung zeigt endlich alle Aufträge statt nur der ersten Seite, ein hängender Timer lässt sich wieder loswerden, und Admins können die Rolle von Komplizen umstellen.

🧾 Offene Abrechnung

  • Es fehlten Zeiten — jetzt nicht mehr. Die Seite blätterte durch die einzelnen Zeiteinträge, 25 pro Seite, und gruppierte erst danach nach Auftrag. Aufträge, deren Einträge weiter hinten lagen, tauchten gar nicht auf; andere wurden mittendrin abgeschnitten. Wer die erste Seite ansah, sah einen Ausschnitt und wusste es nicht.
  • Eine Zeile je Position statt einer Zeile je Eintrag. Du siehst jetzt pro Position, wie viele Zeiteinträge dahinterstehen und was sie zusammen wert sind. Alle Aufträge sind immer sichtbar, eine Blätterleiste gibt es nicht mehr.
  • Die Summen stimmen mit dem überein, was dasteht. Je Auftrag wird summiert und darunter der offene Gesamtbetrag — beides aus genau den Zahlen, die in der Tabelle stehen.
  • Positionen ohne Stundensatz fallen auf. Zeiteinträge, für die kein Satz hinterlegt ist, bringen zwar Stunden, aber kein Geld. Sie werden jetzt getrennt ausgewiesen, statt stillschweigend als null Euro mitzulaufen.

⏱ Timer

  • Ein Timer, der sich nicht stoppen ließ. Wenn der Hub in einem zweiten Fenster offen war und du den Timer dort bereits beendet hattest, blieb die Leiste unten stehen — und der Stopp-Knopf tat nichts. Kein Hinweis, keine Reaktion.
  • Jetzt bekommst du eine Rückmeldung. Schlägt das Stoppen fehl, erscheint eine Meldung, und die Anzeige räumt sich selbst auf. Neu laden musst du nichts mehr.

🔐 Rollen

  • Admins können Rollen umstellen. Auf der Detailseite eines Komplizen gibt es im Bearbeitungsmodus das Feld „Rolle" mit drei Möglichkeiten: Externer Komplize, Komplize und Admin. Bisher ließ sich das nur direkt in der Datenbank ändern.
  • Die Rolle steht auch in der Leseansicht. Eine Plakette neben dem Status, kein Rätselraten mehr.
  • Die eigene Rolle ist gesperrt. Sonst könnte sich der letzte Admin mit einem Klick aussperren, und niemand käme mehr an Systemeinstellungen und Abrechnung.
  • Wer auf extern gestellt wird, verliert die Admin-Rechte mit. Sie bleiben nicht im Hintergrund stehen und greifen später wieder.

⚙️ Systemeinstellungen

  • Akquise- und Verwaltungsanteil lassen sich wieder speichern. Der Versuch endete bisher mit einer Fehlermeldung. Grund war kein Programmfehler, sondern dass die beiden Werte in der produktiven Datenbank schlicht fehlten. Sie sind am 31.07. eingetragen worden — 20 % Akquise, 5 % Verwaltung —, der Abrechnungslauf war damit sofort wieder möglich.
🛠 Migrationen & Rollout. Keine Datenbank-Migrationen in diesem Release. Prod-Deploy läuft nicht automatisch: Hub-Service nach dem Promote manuell neu ausrollen. Keine neuen Umgebungsvariablen.

Zu wissen: Der Akquisesatz von 20 % wurde bewusst ohne Migration gesetzt, weil er nur für wenige Monate gilt. Er ist damit nicht aus supabase/migrations/ reproduzierbar — wer die produktive Datenbank neu aufbaut, landet bei 15 % und muss den Wert von Hand nachziehen (TASK-222). Staging läuft weiter mit 15 %; Abrechnungsbeträge sind zwischen den beiden Umgebungen deshalb nicht vergleichbar.

Offen und getrennt zu entscheiden: Die 17 bereits abgeschlossenen Abrechnungszyklen auf Prod haben mit 15 % statt 20 % Akquise gerechnet, weil der Wert fehlte und das Programm auf einen Standardwert zurückfiel. Der Satz wird beim Abschließen eingefroren und lässt sich nicht nachträglich ändern — das ist eine kaufmännische Frage (TASK-225).

Enthaltene PRs: #468 (Projektanleitung umgebaut), #469 (Rollen umstellen), #470 (Anteile auf Prod festgehalten), #471 (offene Abrechnung), #472 (Timer-Stopp).
Backlog-Milestone: v18-abrechnung-rollen (m-8) mit TASK-221, TASK-222, TASK-223, TASK-224 und TASK-225.
v17

Schwerpunkt Zeiterfassung: Du kannst Zeiten jetzt als Tabelle nacherfassen, statt jeden Eintrag einzeln zu tippen. Zeiten lassen sich schon auf beauftragte Aufträge buchen, freie Komplizen können interne Zeiten erfassen — und dieselbe Stunde kann nicht mehr versehentlich doppelt gebucht werden.

🕓 Zeiten als Tabelle nacherfassen

  • Ganze Wochen auf einmal eintragen. In der Zeiterfassung gibt es jetzt „Importieren“: Du lädst eine Vorlage herunter, füllst sie in Excel aus und lädst sie wieder hoch. Gedacht für vergessene Wochen, Nacherfassung nach einer Reise oder den Umzug aus einem anderen Programm.
  • Die Vorlage ist schon ausgefüllt. Sie enthält für jeden deiner bebuchbaren Aufträge und jede interne Tätigkeit eine eigene Zeile — du trägst nur noch Datum, Von und Bis ein, dazu bei Bedarf eine Beschreibung.
  • Zeilen, die du nicht brauchst, lässt du einfach stehen. Ohne Datum und Uhrzeit werden sie beim Import übersprungen. Und wenn du gegen dieselbe Position mehrfach buchen willst, kopierst du die Zeile so oft, wie du sie brauchst. Kein Aufräumen nötig.
  • Erst prüfen, dann übernehmen. Nach dem Hochladen siehst du eine Vorschau: wie viele Zeilen importierbar sind, welche einen Fehler haben (mit der Zeilennummer, die auch Excel anzeigt) und wie viele übersprungen werden. Erst wenn keine Zeile mehr einen Fehler hat, lässt sich der Import starten — es landet also nie die Hälfte im Hub.

🕓 Zeiterfassung im Alltag

  • Zeiten schon auf beauftragte Aufträge buchen. Bisher ging das erst, wenn ein Auftrag auf „Laufend“ stand. Vorbereitung und Abstimmung fallen aber schon nach der Beauftragung an — deshalb kannst du jetzt auch auf Aufträge im Status „Beauftragt“ buchen.
  • Interne Zeiten auch für freie Komplizen. Tätigkeiten ohne Auftragsbezug wie Vertrieb, Marketing oder Weiterbildung stehen jetzt auch freien Komplizen offen. Welche Tätigkeiten freigegeben sind, legt die Administration in den Einstellungen fest. Interne Zeiten sind wie bisher nicht abrechenbar.

⏱ Keine doppelt gebuchten Stunden mehr

  • Zeiten dürfen sich nicht überschneiden. Eine Zeit, die in einen bereits erfassten Zeitraum hineinreicht, wird abgelehnt — mit einem Hinweis, welcher Eintrag im Weg steht. So landet dieselbe Stunde nicht zweimal in einer Abrechnung. Das gilt überall: beim Timer, beim manuellen Erfassen, in der Wochenansicht und beim Import.
  • Direkt anschließende Zeiten sind selbstverständlich in Ordnung. Ein Eintrag von 9 bis 11 Uhr und der nächste ab 11 Uhr passen zusammen.
  • Deine bestehenden Zeiten bleiben, wie sie sind. Die Prüfung greift nur bei neuen Einträgen. Und beim Bearbeiten nur dann, wenn du die Zeiten selbst änderst — eine Beschreibung anpassen oder einen Eintrag löschen geht immer.

🧾 Reisekosten

  • Du siehst, wann abgerechnet und ausgezahlt wurde. Jede Reisekosten-Position zeigt jetzt ihren Stand — in der Detailansicht wie in der Liste. Damit musst du nicht mehr nachfragen, ob eine Auslage schon durch ist.
🛠 Migrationen & Rollout. Dieses Release enthält drei Datenbank-Migrationen. Reihenfolge beachten: erst den Hub-Service ausrollen, dann migrieren — nicht umgekehrt. Der bisher laufende Code schreibt bei jeder Zeitbuchung noch in die Kategorie-Spalte; wird sie vorher entfernt, schlagen alle Zeitbuchungen fehl. Nach dem Deploy also aus solutions/hub:
make db-apply-pending ENV=prod
In der kurzen Spanne zwischen Deploy und Migration lassen sich interne Zeiten nicht buchen und die Tätigkeiten-Liste bleibt leer; Buchungen auf Aufträge laufen normal weiter. Die beiden Schritte deshalb direkt nacheinander fahren.

Die einzelnen Migrationen:
20260721100000_drop_time_entries_category.sql — entfernt die abgelöste Kategorie-Spalte bei Zeiteinträgen; interne Tätigkeiten hängen jetzt allein an der Tätigkeiten-Tabelle.
20260725100000_internal_activities_visible_to_external.sql — Freigabe-Kennzeichen je interner Tätigkeit (Startbelegung: Vertrieb, Marketing, Weiterbildung).
20260725110000_harden_time_entries_insert_policy.sql — schärft die Schreibregel für Zeiteinträge nach.
Prod-Deploy läuft nicht automatisch: Hub-Service nach dem Promote manuell neu ausrollen. Keine neuen Umgebungsvariablen.
Enthaltene PRs: #449 (Marken-Design-System als Projekt-Skill), #450 (Kategorie-Spalte abgelöst), #451 (beauftragte Aufträge bebuchbar), #452 (interne Zeiten für freie Komplizen), #453 und #454 (Reisekosten-Status), #456 (Deliberation: Sitzungen wieder öffnen), #457 (Überschneidungs-Sperre), #458 (CSV-Import).
Backlog-Milestone: v17-zeiterfassung (m-7) mit TASK-101, TASK-133, TASK-192, TASK-193, TASK-194 und TASK-195.
v16

Schwerpunkt Handy: Der Hub lässt sich jetzt unterwegs auf dem Smartphone voll bedienen — Formulare, Reiter, Tabellen und die Anmeldung sind für kleine Bildschirme gemacht. Außerdem heißt der Hub jetzt Komplizen Hub und lässt sich als App auf den Startbildschirm legen.

📱 Der Hub auf dem Handy

  • Kein Verrutschen mehr beim Tippen. Sobald du auf dem iPhone in ein Eingabefeld getippt hast, zoomte die Seite bisher hinein und blieb verrutscht. Das ist behoben — die Ansicht bleibt ruhig, egal in welches Feld du tippst.
  • Formulare einspaltig statt gequetscht. Eingabefelder stehen auf schmalen Bildschirmen untereinander und in voller Breite, nichts wird mehr abgeschnitten.
  • Übersichtliche Reiter. In Aufträgen, Organisationen, Personen und Co. zeigen die Reiter unterwegs nur noch ein Symbol — der aktive Reiter behält seine Beschriftung, damit du immer weißt, wo du bist.
  • Buttons brauchen weniger Platz. Die gelben Aktions-Buttons in den Kopfzeilen (etwa „Neuer Auftrag“ oder „Speichern“) zeigen auf dem Handy nur noch ihr Symbol und laufen nicht mehr über den Rand.
  • Wochen-Zeiterfassung nutzbar. Die Zuordnungs-Spalte bleibt beim seitlichen Scrollen stehen, sodass du die Zeile nicht mehr verlierst.
  • Reisekosten als Karten. Die Reisekosten-Liste erscheint auf dem Handy als übersichtliche Karten statt als breite Tabelle; die Verpflegungs-Tabelle lässt sich seitlich wischen (mit dezentem Hinweis am Rand).
  • Netzwerk-Ansicht nur auf Großgeräten. Der Beziehungs-Browser, der sich auf dem Handy ohnehin kaum bedienen lässt, wird dort ausgeblendet — auf Tablet und Rechner bleibt er.
  • Lange Titel überdecken nichts mehr. Auf Detailseiten (Auftrag, Person, Organisation, Komplize, Interaktionszyklus) stand ein langer Titel bisher quer über den Aktions-Buttons. Jetzt rutschen die Buttons auf dem Handy sauber unter den Titel, und der Titel bricht um statt abgeschnitten zu werden.

🔐 Anmeldung

  • Code erneut anfordern. Kommt die Anmelde-Mail nicht an, kannst du den Code jetzt direkt erneut senden (mit kurzer Wartezeit, damit nichts blockiert). Das E-Mail-Feld ist beim Öffnen gleich aktiv, und bei zu vielen Versuchen bekommst du einen klaren Wartehinweis statt einer verwirrenden Fehlermeldung.
  • Aufgeräumte Anmeldeseite. Logo über dem Titel, angenehm platziert — auch auf dem Handy.

📲 Als App installieren

  • Zum Startbildschirm hinzufügen. Der Hub lässt sich jetzt wie eine App auf den Startbildschirm deines Handys legen — mit eigenem Icon und Namen — und öffnet sich dann im Vollbild. Die Anmeldung läuft dort über die Code-Eingabe.

✨ Neuer Name

  • Aus „Team-Hub“ wird „Komplizen Hub“. Der Hub trägt jetzt überall — Anmeldung, Menü, App-Name — den Namen Komplizen Hub. An den Funktionen ändert sich dadurch nichts.
🛠 Migrationen & Rollout. Keine Datenbankänderungen in diesem Release — reine Oberflächen-Arbeit. Hub-Service einfach neu ausrollen. Keine neuen Umgebungsvariablen.
Enthaltene PRs: #439 (Layout: Grids, Dialoge, Timesheet, Reisekosten-Karten), #440 (Anmelde-Politur & App-Installierbarkeit), #442 (Rand-Überläufe), #444 (Handy-Härtung Runde 2), #445 (Name & Logo, Anmelde-Feinschliff), #446 (Detail-Header stapeln).
Backlog-Milestone: hub-mobile (m-6), TASK-190 und TASK-191.
v15

Schwerpunkt Struktur & Korrektheit: der Hub wird im Inneren aufgeräumt, damit neue Funktionen künftig schneller und mit weniger Fehlern kommen. Sichtbar für dich sind vor allem zwei Dinge — korrekte Uhrzeiten auf der Reisekostenabrechnung und eine noch verlässlichere Rechnungserstellung.

🧳 Geschäftsreisen

  • Korrekte Uhrzeiten auf der Abrechnung. Abfahrt und Rückkunft standen im exportierten Reisekosten-Dokument bisher in UTC — also je nach Jahreszeit ein bis zwei Stunden zu früh. Jetzt erscheinen sie in deutscher Zeit, passend zum Rest des Dokuments.
  • Reise + Aufträge werden gemeinsam gespeichert. Beim Anlegen einer Reise mit verknüpften Aufträgen kann kein halbfertiger Zustand mehr entstehen — entweder beides wird gespeichert oder nichts.

📄 Abrechnung

  • Verlässlicher abschließen. Wenn jemand die Umsatzverteilung eines Auftrags genau in dem Moment ändert, in dem ein anderer die Abrechnung abschließt, rechnet der Hub jetzt nicht mehr mit veralteten Werten. Statt eines stillen Fehlers bekommst du einen klaren Hinweis, die Verteilung neu zu laden und es erneut zu versuchen.

💬 Interaktionen

  • Eigener Menüpunkt „Interaktionen“ mit zwei Tabs. Der frühere Menüpunkt „Interaktionszyklen“ heißt jetzt „Interaktionen“ und hat zwei Ansichten: Interaktionen (alle einzelnen Interaktionen) und Interaktionszyklen (wie bisher).
  • Verwaiste Interaktionen sind wieder auffindbar. Eine Interaktion, die an nichts hängt — kein Auftrag, keine Person, kein Zyklus — war bisher nirgends sichtbar. In der neuen Interaktionen-Liste tauchen jetzt alle auf; du kannst filtern (Kanal, Richtung, Suche) und direkt bearbeiten.

🧪 unter der Haube

  • Großer Frühjahrsputz im Code. Der umfangreichste Teil des Hub-Rechnungscodes wurde in kleine, einzeln testbare Bausteine zerlegt, doppelter und toter Code entfernt. Für dich ändert sich nichts an den Abläufen — aber Änderungen daran sind künftig sicherer und schneller.
  • Mehr automatische Tests. Die kniffligen Rechenkerne (Anteile, Nachkorrekturen, Reisekosten) sind jetzt direkt durch Tests abgesichert, sodass Umbauten nichts verschieben.
🛠 Migrationen & Rollout. Vor dem Produktiv-Deploy werden sieben additive, rückwärtskompatible Datenbankänderungen angewendet — eine neue Spalte plus Funktionen für den Abrechnungs- und Reise-Ablauf: 20260711120000…120400 (Abrechnungs-Race, TASK-175) und 20260712100000/100100 (atomares Anlegen von Reisen, TASK-163). Keine neuen Umgebungsvariablen.
Enthaltene PRs: #400 / #406 / #409 (Zerlegung der Abrechnung), #410 (Race-Absicherung), #414 (Geschäftsreisen), #416 / #417 / #419 / #421 / #424 (Aufräumen der API-Basis).
Backlog-Milestone: hub-optimization (m-5), Welle 3 (Struktur & Korrektheit).
v14

Schwerpunkt Tempo: keine neuen Funktionen, dafür lädt der Hub spürbar schneller und lässt sich flüssiger bedienen — auch dann, wenn mit der Zeit viele Einträge zusammenkommen. An der Oberfläche und an den Funktionen ändert sich nichts.

⚡ Schneller & flüssiger

  • Der Hub startet spürbar schneller. Aufwändige Teile wie der große Text-Editor und die Kartenansicht laden erst, wenn du sie wirklich öffnest — der Start ist dadurch leichter und der Hub schneller da. Auch nach einem Update ist er zügiger bereit.
  • Ansichten reagieren flotter. Detailansichten und Listen — etwa die Abrechnungs-Details, die Interaktionen oder die Geschäftsreisen — sind jetzt schneller da.
  • Suchen bleibt flüssig. In langen Listen wie Aufgaben oder Organisationen ruckelt das Tippen im Suchfeld nicht mehr.
  • Auch bei vielen Einträgen flott. Der Hub bleibt schnell, wenn die Datenmengen wachsen — ein Bremsklotz, der sich sonst mit der Zeit bemerkbar gemacht hätte, ist beseitigt.

🧪 unter der Haube

  • Reine Tempo-Verbesserungen. An Funktionen, Abläufen und Berechtigungen ändert sich nichts. Automatische Tests stellen sicher, dass die Beschleunigung nichts verschiebt.
🛠 Migrationen & Rollout. Vor dem Produktiv-Deploy werden zwei Datenbankänderungen angewendet: gezielte Index-Optimierung (20260708120000_index_tuning_wave2.sql) und effizientere Zugriffsprüfungen (20260708140000_rls_initplan_caching.sql). Beide sind additiv bzw. rückwärtskompatibel — kein Risiko, keine neuen Umgebungsvariablen.
Enthaltene PRs: #393 (Index-Optimierung), #394 (Web-Ladezeit), #395 (Zugriffs-Caching), #396 (API-Parallelisierung).
Backlog-Milestone: hub-optimization (m-5), Welle 2 (Performance). TASK-157 (Zugriffs-Kaskade für externe Nutzer) ist bewusst auf eine Messung an Produktiv-Datenmengen verschoben.
v13

Schwerpunkt Sicherheit & Verlässlichkeit: keine neuen Funktionen, dafür eine gründliche Durchsicht des ganzen Hubs. Eine Datenschutz-Lücke ist geschlossen, das Abrechnungs-Festschreiben ist gegen technische Aussetzer abgesichert, die Suche und Fehlermeldungen funktionieren wieder korrekt — und ein neues Test-Sicherheitsnetz sorgt dafür, dass solche Fehler künftig vor dem Rollout auffallen.

🔐 Sicherheit

  • Datenschutz-Lücke bei Budget-Zahlen geschlossen. Die Budget- und Verbrauchs-Auswertung der Aufträge (geplante vs. verbrauchte Stunden, Budget-Status) war technisch ohne Anmeldung abrufbar — für alle Aufträge, unabhängig vom Zugriffsrecht. Das ist behoben: Die Auswertung richtet sich jetzt strikt nach deinen Zugriffsrechten, ohne Anmeldung ist nichts mehr sichtbar. In der Oberfläche ändert sich nichts.
  • Zugänge von Via wirken sofort ab. Wird ein Agent-Schlüssel von Via widerrufen, verlieren auch bereits ausgestellte Zugänge innerhalb von Sekunden ihre Gültigkeit — bisher galt das nur für einen Teil der Zugänge, der Rest blieb bis zu einer Stunde nutzbar. Der Notaus-Schalter greift jetzt zuverlässig.

🧾 Abrechnung & Wertvertrag

  • Festschreiben ist gegen technische Aussetzer abgesichert. Falls beim Abschließen einer Abrechnung eine Datenbank-Abfrage kurz aussetzt, bricht der Vorgang jetzt sauber mit einer Fehlermeldung ab — statt still mit unvollständigen Zahlen weiterzurechnen und Anteile falsch zuzuordnen. Eine festgeschriebene Abrechnung ist unveränderlich, deshalb ist dieser Schutz besonders wichtig.
  • Fehlgeschlagenes Festschreiben zerstört keine Entwurfs-Version mehr. Schlug ein Abschluss unterwegs fehl, konnte die editierbare Wertvertrag-Version des Auftrags trotzdem gesperrt zurückbleiben und beim nächsten Bearbeiten eine „Geister-Version“ erzeugen. Jetzt gehören Sperre und Abschluss untrennbar zusammen: Scheitert der Abschluss, bleibt dein Entwurf ein Entwurf.

🔎 Suche & Formulare

  • Suche mit Komma oder Klammer funktioniert wieder. Eine Suche wie „Planung, Q3“ oder „Workshop (intern)“ führte bisher zu einem Serverfehler statt zu Treffern. Das ist behoben — Sonderzeichen im Suchbegriff sind kein Problem mehr.
  • Klare Meldung statt Serverfehler. Fehlerhafte Eingaben liefern jetzt eine verständliche „Ungültige Eingabe“-Rückmeldung statt eines generischen Serverfehlers.

✨ Oberfläche & Aktualität

  • Kein falsches „Gespeichert“ mehr. Wenn ein Speichern-Vorgang serverseitig scheitert (z. B. bei einem kurzen Verbindungsabbruch), zeigt der Hub jetzt zuverlässig einen Fehler an — vorher konnte fälschlich „gespeichert“ erscheinen, obwohl nichts gespeichert wurde.
  • Listen aktualisieren sich sofort. Nach dem Anlegen, Ändern oder Löschen eines Auftrags sind die zugehörigen Listen (z. B. die Aufträge bei einer Person, offene Abrechnungsposten, der Pauschal-Fortschritt) sofort aktuell — statt bis zu fünf Minuten veraltet zu bleiben.
  • Löschen fragt überall nach. Das Löschen eines Zeiteintrags im Wochen-Erfassungsfenster verlangt jetzt — wie überall sonst — eine kurze Bestätigung, damit ein Fehlklick keine Daten kostet.

🧪 Qualität & unter der Haube

  • Neues Test-Sicherheitsnetz. Die abrechnungs- und geldnahen Bereiche (Rechnungszyklen, Reisekosten, Zeiterfassung, Umsatz-Auswertungen, Personen/Organisationen) sind jetzt umfassend mit automatischen Tests abgedeckt. Diese laufen ab sofort bei jeder Änderung automatisch mit — dadurch fallen Fehler vor dem Rollout auf, nicht danach.
  • Sicherere Datenbank-Updates. Datenbank-Änderungen werden beim Rollout jetzt „ganz oder gar nicht“ angewendet; ein Aussetzer mittendrin hinterlässt keinen halb fertigen Zustand mehr.
🛠 Migrationen & Rollout. Vor dem Produktiv-Deploy müssen einmal mehrere Datenbankänderungen angewendet werden: Absicherung der Budget-Auswertung gegen anonymen Zugriff (20260705120000_order_budget_health_security_invoker.sql) und die atomare Versions-Sperre beim Abrechnungs-Abschluss (20260705130000/130100/130200, Drop + Neudefinition + Grant der Abschluss-Funktion). Weil dabei die alte Abschluss-Funktion abgelöst wird, sollten Migration und Deploy eng nacheinander erfolgen — am besten in einem ruhigen Moment ohne laufendes Festschreiben; die neue Funktion ist rückwärtskompatibel, ein kurzer Versatz ist unkritisch. Keine neuen Umgebungsvariablen.
Enthaltene PRs: #373 (Audit-Bericht), #374 (Integrationstests in CI), #375–#380 (Test-Sicherheitsnetz), #381 (Money-Path-Absicherung), #382 (Agent-Widerruf), #383 (Budget-View-Sicherheit), #384 (API-Fehlerpfade/Suche), #385 (Web-Korrektheit), #386 (atomare Migrationen), #387 (atomare Versions-Sperre).
Backlog-Milestone: hub-optimization (m-5).
v12

Schwerpunkt Wertvertrag & Umsatztransparenz: Für jeden Auftrag legt eine Matrix fest, wer welchen Anteil am Umsatz bekommt (Akquise, Pauschal-Positionen, Verwaltung — inklusive Vitale Arbeitskultur selbst). Abrechnungen teilen jeden Euro strikt und nachvollziehbar auf, und jede:r Komplize sieht rollengerecht den eigenen Beitrag.

💶 Wertvertrag

  • Verteilungs-Matrix je Auftrag. Im Auftrag legst du unter „Wertvertrag“ fest, wer welchen Anteil bekommt: eine Spalte für Akquise, je eine für jede Pauschal-Position und eine für Verwaltung. Zeilen sind die beteiligten Komplizen und Vitale Arbeitskultur selbst. Jede Spalte muss genau 100 % ergeben. Stunden-Positionen sind bewusst nicht Teil der Matrix — sie werden nach gebuchten Stunden verteilt.
  • Festschreiben & Versionen. Mit „Festschreiben“ wird eine Verteilung verbindlich. Änderst du sie danach, entsteht automatisch eine neue Version — die alte bleibt als Nachweis erhalten. Jede Abrechnung merkt sich, welche Version zum Zeitpunkt galt.
  • Automatischer Ausgleich bei Änderungen. Wird eine Position über mehrere Abrechnungen verteilt abgerechnet und du änderst zwischendurch die Verteilung, gleicht die nächste Abrechnung den Unterschied automatisch mit Korrekturposten aus — so entspricht die Gesamtverteilung am Ende immer dem aktuellen Stand. Das gilt für alle Spalten (Akquise, Verwaltung, Pauschal).
  • Abrechnungs-Fortschritt sichtbar. Bei jeder Pauschal-Position siehst du direkt in der Matrix, wie viel Prozent schon abgerechnet wurde und wie viel Euro noch offen ist.
  • Externe können mitlesen. Bist du extern und einem Auftrag als Team-Mitglied oder Eigner zugeordnet, kannst du dessen Wertvertrag jetzt einsehen (nur lesen) — bearbeiten bleibt den internen Komplizen vorbehalten.

🧾 Abrechnung & Umsatz

  • Jeder Euro genau einmal zugeordnet. Eine Abrechnung teilt den Betrag strikt auf: 15 % Akquise an den Auftragseigner, 5 % Verwaltung an Vitale Arbeitskultur, 80 % Wertschöpfung (Stunden nach Aufwand, Pauschalen über den Wertvertrag). Die Anteile erscheinen als übersichtliche Matrix, Korrekturposten aus Versionswechseln in einem eigenen Block darunter.
  • „Verbleibt bei Vitale Arbeitskultur“. Die Abrechnung weist eigens aus, wie viel des Betrags bei Vitale Arbeitskultur bleibt.
  • Rollengerechte Umsatz-Sicht. Unter „Umsatz“ siehst du als Externe:r deinen rechnungsrelevanten Claim und die Firmen-Marge („was wir durch dich verdient haben“). Als interne:r Komplize siehst du deinen generierten Umsatz und deinen Anteil am Gesamtumsatz des Jahres — klar als „vor Kosten und Steuern“ gekennzeichnet.
🛠 Migrationen & Rollout. Vor dem Produktiv-Deploy müssen einmal mehrere Datenbankänderungen angewendet werden (Wertvertrag-Versionen, erweiterte Abrechnungs-Anteile inkl. Vitale-Arbeitskultur-Zeile und Korrektur-Kennzeichnung sowie eine Neudefinition der Abrechnungs-Abschluss-Funktion). Weil dabei die alte Abschluss-Funktion abgelöst wird, sollten Migration und Deploy eng nacheinander erfolgen — am besten in einem ruhigen Moment ohne laufendes Abrechnung-Festschreiben. Keine neuen Umgebungsvariablen.
Enthaltene PRs: #357, #359, #361, #362, #363, #364, #366, #367.
Backlog-Milestone: v12 — Wertvertrag & Umsatztransparenz (m-4).
v11

Schwerpunkt Komfort & Übersicht: nicht-auftragsbezogene Zeit lässt sich jetzt als „interne Tätigkeit“ erfassen (Administration, Vertrieb, Weiterbildung …), Personen zeigen ihre Kontaktdaten schon beim Überfahren, die Benachrichtigungen sind aufgeräumter, und Checklisten in Aufgaben werden endlich richtig dargestellt.

🕓 Zeiterfassung

  • Interne Tätigkeiten erfassen. Zeit, die zu keinem Auftrag gehört — Administration, Vertrieb, Weiterbildung und mehr — buchst du jetzt direkt auf eine interne Tätigkeit, statt sie wegzulassen oder einem unpassenden Auftrag zuzuordnen. Im Zeiterfassungs-Fenster wählst du dafür „Intern“ statt „Auftrag“. Admins pflegen die Liste der Tätigkeiten in den Einstellungen: anlegen, umbenennen, Farbe wählen, deaktivieren.
  • Interne Zeiten sauber getrennt. Interne Tätigkeiten zählen als Arbeitszeit, fließen aber nicht in den Auftragsumsatz. Im Monatsbericht erscheinen sie in einem eigenen Abschnitt „Interne Tätigkeiten“ (Stunden, ohne Umsatz), und die Wochenstunden zeigen die Aufteilung Auftrag/Intern.

👥 Personen & Kontakte

  • Schnellvorschau für Personen. Fährst du mit der Maus über einen Personen-Namen (in Organisationen, Aufträgen, Personenliste), erscheint eine kleine Karte mit Foto, Rolle, Organisation und Kontaktdaten — ohne erst auf die Detailseite zu wechseln. Auf dem Handy öffnet sie sich per langem Tippen; ein Klick führt weiterhin zur Detailseite.
  • Aufgeräumte Kontaktlisten. In Auftrags- und Organisations-Kontakten sind die kleinen E-Mail-/Anruf-Symbole pro Zeile entfallen — diese Infos zeigt jetzt die Vorschau-Karte. Die Zeilen wirken dadurch ruhiger und übersichtlicher.

🔔 Benachrichtigungen

  • Einzeln als gelesen markieren. Du kannst eine Benachrichtigung jetzt direkt als gelesen markieren, ohne sie zu öffnen und wegzunavigieren — über ein kleines Häkchen pro Eintrag.
  • Aufgeräumtere Darstellung. Lange Nachrichten werden auf zwei Zeilen gekürzt (den vollen Text siehst du, wenn du mit der Maus darüber gehst), und die Zeitangaben sind einheitlich ausgeschrieben („vor 2 Stunden“, „vor 3 Tagen“) statt gemischter Abkürzungen.

✅ Aufgaben

  • Checklisten werden richtig dargestellt. Abgehakte Punkte in einer Aufgaben-Beschreibung sehen jetzt klar anders aus als offene — mit Häkchen und durchgestrichenem Text. Vorher sahen beide gleich aus, was Checklisten praktisch unbrauchbar machte.
🛠 Migrationen & Rollout. Vor dem Produktiv-Deploy muss einmal eine Datenbankänderung angewendet werden: eine neue Tabelle für die internen Tätigkeiten (20260604100000_internal_activities.sql) und eine Verknüpfung der Zeiteinträge darauf (20260604100100_time_entries_internal_activity_id.sql). Bestehende interne Zeiten werden dabei automatisch übernommen — kein Datenverlust. Keine neuen Umgebungsvariablen; danach kann der Hub einfach neu bereitgestellt werden.
Enthaltene PRs: #336, #337, #338, #339, #341, #344, #346, #347.
Backlog-Milestone: v11 — User Polish & Feedback (m-3).
v10

Schwerpunkt Abrechnung: abgerechnete Zeiten lassen sich jetzt aufrunden (global oder pro Auftrag), offene Abrechnungsposten sind für Admins gesammelt sichtbar, der Abrechnungs-Export ist als Nachweis lesbar, und eine neue Abrechnung startet direkt im Vormonat. Dazu mehr Komfort in der Zeiterfassung — Filter merken sich, und Einträge lassen sich mit einem Klick direkt in der Tabelle bearbeiten.

🧾 Abrechnung

  • Zeiten werden aufgerundet. Abgerechnete Zeiten kannst du jetzt auf die Viertelstunde oder die ganze Stunde aufrunden lassen. Den Standard stellst du einmal in den Einstellungen ein (Voreinstellung: Viertelstunde); einzelne Aufträge dürfen davon abweichen. Aufgerundet wird je Komplize, Position und Tag — die erfassten Originalzeiten bleiben unangetastet, nur der abgerechnete Wert ist gerundet. Bereits abgeschlossene Abrechnungen ändern sich dadurch nicht.
  • Übersichtlicherer Abrechnungs-Export. Der Export einer Abrechnung zeigt jetzt bei jeder Position die abgerechneten Stunden (nur bei Zeit-&-Material, bei Pauschalen bleibt die Spalte leer) und unter den Zeiteinträgen eine Gesamt-Summe über Dauer und Betrag. Die Einträge sind nach Datum sortiert — als Nachweis ohne Nacharbeit lesbar.
  • Neue Abrechnung startet im Vormonat. Beim Anlegen einer neuen Abrechnung ist der Zeitraum direkt auf den ersten bis letzten Tag des Vormonats vorbelegt. Du kannst ihn weiterhin frei ändern, musst die Daten aber nicht mehr jedes Mal von Hand eintippen.
  • Offene Abrechnung im Blick. Admins sehen jetzt unter „Offene Abrechnung“ alle abrechenbaren Zeiten und Pauschalpositionen, die noch nicht abgerechnet sind — übersichtlich nach Auftrag gruppiert. Abgebrochene Aufträge bleiben außen vor; die angezeigten Werte spiegeln die jeweils gültige Aufrundung wider.

🕓 Zeiterfassung

  • Filter und Ansicht merken sich. Die Zeiterfassung merkt sich jetzt — wie Aufträge und Aufgaben — deine Filter, den aktiven Tab (Liste/Woche) und den gewählten Zeitraum. Beim nächsten Öffnen ist alles wie zuvor, statt zurückgesetzt.
  • Direkt in der Tabelle bearbeiten. Kleine Korrekturen brauchen kein Bearbeiten-Fenster mehr: In der Liste klickst du Beschreibung, Dauer oder Start-/Endzeit direkt an und änderst sie inline (Enter speichert, Escape bricht ab). In der Wochenansicht gilt das für Dauer und Beschreibung. Änderst du die Dauer, zieht die Endzeit nach; änderst du eine Zeit, rechnet sich die Dauer neu. Laufende Timer bleiben wie bisher geschützt.

🧪 Qualität

  • Automatische Tests für die Hub-Oberfläche. Der Hub hat ein Test-Gerüst für die Web-Oberfläche bekommen. Für dich unsichtbar, aber jede der obigen Funktionen ist durch automatische Tests abgesichert — weniger Risiko, dass eine spätere Änderung etwas wieder kaputt macht.
🛠 Rollout-Hinweis. Vor dem Produktiv-Deploy muss einmal eine Datenbankänderung angewendet werden. Sie ergänzt eine neue Grundeinstellung für die Aufrundung von Zeiten und zusätzliche Angaben für Abrechnungen und Aufträge.
Es gibt keine neuen Umgebungsvariablen. Danach kann der Hub einfach neu bereitgestellt werden.
Enthaltene PRs: #321, #322, #323, #324, #325, #326, #327, #328, #329, #330, #331, #332, #333.
Backlog-Milestone: v10 — Abrechnung (m-2).
v9

Auftrags-Duplikate sind jetzt entweder ganz fertig oder gar nicht (kein halber Auftrag mehr beim Fehler in der Mitte), neue Aufträge gehören automatisch dir, externe Termine bekommen ein Land, und in der Wochenansicht löscht „alles auf 0“ die Einträge nach Rückfrage. Parallel haben wir den Hub innen aufgeräumt — Milestone „Hub Refactor“ ist durch.

📋 Aufträge

  • Duplikate sind jetzt atomar. Wenn du einen Auftrag duplizierst, entsteht entweder die komplette Kopie (Positionen, Team, Kontakte, Umsatzverteilung) oder gar nichts. Bisher konnten bei einem Fehler in der Mitte halbe Aufträge stehen bleiben — ein neuer Auftrag mit Positionen, aber ohne Umsatzverteilung. Die Kopier-Logik läuft jetzt als eine einzige Datenbank-Transaktion; ein Problem an irgendeiner Stelle räumt alles Vorherige wieder weg.
  • Neue Aufträge gehören automatisch dem Ersteller. Beim Anlegen eines Auftrags wird das Feld „Eigner“ jetzt auf dich vorbelegt. Du kannst es weiterhin manuell ändern, musst aber nicht mehr daran denken, dass du sonst direkt nach dem Anlegen keinen Zugriff auf den eigenen Auftrag hast.
  • Externe Komplizen dürfen wieder Team-Mitglieder zuweisen. Wenn du als externer Komplize Zugriff auf einen Auftrag hast (über Mitgliedschaft, Eignerschaft oder Org-Kaskade), kannst du dort jetzt auch andere Komplizen ergänzen oder entfernen — bisher waren die Schreibrechte zu eng und nur Interne kamen durch.

📍 Termine

  • Externe Termine bekommen ein Land. Beim Anlegen oder Bearbeiten eines externen Termins am Auftrag lässt sich jetzt das Land auswählen — Voraussetzung dafür, dass wir auch Auslands-Termine sauber führen und später korrekt abrechnen können. Ohne Auswahl bleibt das Feld leer (kein Zwang für deutsche Termine).

🕓 Zeiterfassung

  • Wochenansicht: „alles auf 0“ löscht den Tag. Wenn du in der Wochenansicht alle Stunden eines bestehenden Eintrags auf 0 setzt, fragt der Hub einmal nach und entfernt dann die Einträge — vorher blieb eine Null-Stunde-Zeile stehen, die in der Auswertung schlecht zu lesen war.

🧪 Hub-Innenleben (Refactor)

Größere Aufräum-Phase, die nach außen kaum sichtbar ist, aber den Boden für die nächsten Features ebnet. Milestone „Hub Refactor“ (m-1) abgeschlossen.

  • Auftrags-Logik in Services zerlegt. Die größten Hub-Handler (Aufträge, Abrechnungszyklen, Reisekosten, Statistiken) sind in dünne Routing-Schicht + reine Service-Funktionen aufgeteilt. Jeder Service ist isoliert testbar und der Code-Review-Aufwand bei Änderungen sinkt erheblich.
  • Autorisierung an einer einzigen Stelle. Wer was sehen und ändern darf, lebt jetzt in einem einzigen Policy-Modul, das gegen die Datenbank-Regeln (RLS) abgeglichen wird. Vorher waren die Regeln über mehrere Handler dupliziert und konnten auseinanderdriften.
  • Validation-Schemata getrennt. Die monolithische Validation-Datei (~1000 Zeilen) ist in feature-orientierte Module zerlegt — Entwickler finden die für ihr Feature relevanten Regeln, statt sich durch alles zu scrollen.
  • Typen-Quelle einer Wahrheit. Die Web-Typen für Aufträge werden jetzt direkt aus den Datenbank-Typen abgeleitet, statt parallel von Hand gepflegt. Eine neue Spalte heißt: Migration anlegen + Generator laufen lassen, nicht mehr drei Stellen synchronisieren.
  • Deprecated-Endpoints markieren sich selbst. Die alten deutschen API-Pfade (z. B. /komplizen, /interaktionen) liefern jetzt einen Deprecation-Header in der Antwort und verweisen auf die kanonische englische Variante — externe Integrationen können selbst erkennen, dass sie umziehen müssen.
  • Branded IDs an der Sicherheits-Grenze. Die Compile-Time-Typen für Auftrag-/Aufgabe-/Personen-IDs werden jetzt strikt am Eingang des Policy-Moduls erzwungen — ein versehentliches Order-ID an Task-Access-Check ist ab sofort schon vor dem Build ein Fehler statt eines Laufzeit-Mysteriums.
  • Frontend-Hooks sauberer typisiert. ~37 unsichere Type-Behauptungen (id!) in den React-Query-Hooks entfernt — die richtige Behandlung „ID gerade noch nicht da“ passiert jetzt im Typ, nicht im Vertrauen.

🚦 Stabilität im Hintergrund

  • Staging-Web-Deploy entstör­t. Der Web-Container-Build auf staging war seit dem Type-SoT-Pilot gebrochen — eine projekt-übergreifende Import-Beziehung war im Container nicht erreichbar. Der Build-Kontext wurde so umgestellt, dass die Type-Datei mitkopiert wird; der Web-Stack auf staging aktualisiert sich jetzt wieder bei jedem Merge.
  • E2E-Tests robuster. Mehrere kleine Stolpersteine in der Playwright-Suite behoben (OTP-Klick, Auftrag-Kundennummer-Reset) — die Suite läuft wieder verlässlich und kann ihren Job als Regression-Bremse machen.
🛠 Migrationen & Rollout. Drei DB-Migrationen müssen vor dem Prod-Hub-Redeploy angewendet werden — make db-apply-pending ENV=prod: 20260527162348_order_members_external_write.sql (RLS-Policies für externe Team-Mitglieder-Verwaltung), 20260528135404_external_appointments_country_id.sql (Spalte country_id auf externen Terminen + Index), 20260528193000_duplicate_order_function.sql (neue PL/pgSQL-Funktion duplicate_order für die atomare Auftrags-Duplikation).
Keine neuen Umgebungsvariablen. Nach den Migrationen einfach Hub-Service redeployen.
Enthaltene PRs: #301, #302, #303, #304, #305, #306, #307, #308, #309, #310, #311, #312, #313, #314, #315, #316, #317, #318.
v8

Stunden-Positionen dürfen offen bleiben („unbegrenztes Kontingent“), die Zeiterfassung zeigt deine eigene Position-Bezeichnung, und neu angelegte Kunden landen in SevDesk wieder als Rechnungsanschrift — Rechnungen lassen sich wieder schreiben.

📋 Aufträge & Budget

  • Stunden-Positionen mit offenem Kontingent. Eine Stunden-Position darf jetzt amount = 0 haben — das bedeutet „keine harte Obergrenze“. Sobald ein Auftrag mindestens eine solche Position hat, fallen Budget-Status und „X % verbraucht“ für den ganzen Auftrag bewusst auf „—“ zurück: keine schiefen Über-Budget-Warnungen mehr für Aufträge, die so nicht funktionieren. Gilt nur für Stunde — Pauschal-Positionen brauchen weiterhin einen festen Betrag.
  • Budget-Anzeige rechnet wieder korrekt. Nebenher gefangen: die Budget-Health-Sicht hat das Auftragsvolumen für jede gebuchte Stunde nochmal aufaddiert — Aufträge mit vielen Zeiteinträgen sahen entsprechend „zu groß“ aus. Behoben.

🕓 Zeiterfassung

  • Deine eigene Position-Bezeichnung ist sichtbar. Wenn du einer Auftragsposition eine eigene Bezeichnung gegeben hast (Feld label), zeigt die Zeiterfassung jetzt diese statt nur des generischen Produktnamens — in der Stoppuhr, der Schnellerfassung, der manuellen Erfassung, dem Wochen-Stundenzettel, der Zeitliste und den „Zuletzt erfasst“-Kacheln. Wenn du keine Bezeichnung gesetzt hast, bleibt der Produktname als Fallback.

🧾 Rechnungen (SevDesk)

  • Neue Kunden landen wieder als „Rechnungsanschrift“. Wenn der Hub einen Kunden in SevDesk anlegt, ist die Adresse jetzt korrekt als Rechnungsanschrift markiert — vorher kam sie als Arbeitsadresse rein, und SevDesk ließ dich darauf keine Rechnung schreiben. Bestehende falsche Adressen wurden bereits per Backfill korrigiert; ab jetzt entsteht das Problem nicht mehr.

🧪 Qualität im Hintergrund

  • Reset-Skript wieder auf der Höhe des Schemas. Das interne reset.ts (für lokale Dev-Resets) kannte die neueren Tabellen rund um Interaktionen / Interaktionszyklen / Aufgaben / Invoice-Cycle noch nicht und ist auf Staging mit Fremdschlüssel-Fehlern stehengeblieben. Reihenfolge entlang der echten Abhängigkeiten korrigiert; Postgres-Fehlercode 42P01 statt Text-Match für „Tabelle existiert nicht“.
  • Strengerer DB-Check für Positionen. Der Constraint für order_products.amount erlaubt 0 jetzt explizit nur für Stunde — Pauschal-Positionen mit Betrag 0 wären betriebswirtschaftlich Unsinn und werden auf DB-Ebene abgewiesen.
  • Temporal-Worker startet jetzt laut. Wenn die SevDesk-Adresskategorie nicht konfiguriert ist, fährt der Worker beim Start nicht mehr stillschweigend hoch — er bleibt mit einer klaren Konfig-Fehlermeldung stehen. Reduziert die Chance, dass derselbe Bug zweimal passiert.
🛠 Migrationen & Rollout. Zwei DB-Migrationen: 20260521144631_order_products_unlimited_amount.sql (lockert den amount-Check und ersetzt die Budget-Health-Sicht) und 20260522090000_tighten_order_products_amount_check.sql (verschärft den Check direkt danach so, dass amount = 0 nur für Stunde erlaubt ist). Nach dem Deploy einmal make db-apply-pending ENV=prod. Außerdem in Coolify (prod, Temporal-Worker) die Umgebungsvariable SEVDESK_INVOICE_ADDRESS_CATEGORY_ID=47 setzen — sonst startet der Worker nach diesem Release nicht.
Enthaltene PRs: #292, #293, #294, #295, #296.
v7

Das Dashboard wird zu deinem Sprungbrett in den Tag: oben deine eigenen offenen Aufträge und Interaktionszyklen, frische Tastenkürzel beschleunigen die Wege, und die Zeiterfassung setzt den Timer mit einem Klick dort fort, wo du aufgehört hast.

🎯 Dashboard

  • Oben steht jetzt, was du auf dem Tisch hast. Direkt unter den überfälligen Aufgaben siehst du zwei Karten mit deinen aktiven Aufträgen und deinen aktiven Interaktionszyklen — gefiltert auf alles, wo du Inhaberin oder Mitglied bist, sortiert nach jüngster Aktivität, mit „Alle anzeigen“ zur vollen Liste. Die alte Zeile mit Organisationen-/Personen-/Kontakte-Zählern ist raus; die findest du weiterhin in der Sidebar.
  • Umsatz-Karte mit integrierter Monatsvorschau. Die separate „6-Monats-Vorschau“-Karte ist in die Umsatzpipeline reingewachsen — eine Karte, ein Blick, weniger Scrollen.
  • „Schnelle Aufgabe“ weist gleich zu. Beim Anlegen kannst du direkt einen oder mehrere Komplizen auswählen — Default ist dein eigener Account, weitere lassen sich als Chips ergänzen oder entfernen.
  • Überfällige Aufgaben kompakter. Die Karte zeigt vier Aufgaben auf einen Blick, der Rest ist scrollbar. Mehr Platz fürs Wichtige.

🕓 Zeiterfassung

  • Timer per Klick fortsetzen (wie bei Clockify). Im Uhren-Symbol oben in der Leiste ist jetzt der Tab „Zuletzt“ der erste Anlaufpunkt: bis zu sechs Karten mit deinen letzten Aufträgen und internen Kategorien, je ein Klick startet einen frischen Timer mit demselben Kontext. Spart pro Eintrag den Auswahl-Dreischritt aus Auftrag → Position → Beschreibung.

⌨️ Tastenkürzel

  • Erste Tastenkürzel-Welle. ⌘K springt in die globale Suche, ? öffnet eine Übersicht aller Shortcuts. Mit g gefolgt von einem Buchstaben springst du in die Bereiche (g d Dashboard, g a Aufträge, g o Organisationen, g p Personen, g t Aufgaben, g k Komplizen, g z Zeiterfassung). Auf Listen-Seiten öffnet n das „Neu …“-Formular.

🔍 Klarheit bei Fehlern und Zuständen

  • Verständliche Fehlermeldungen beim Löschen. Statt „Fehler beim Löschen“ siehst du jetzt den konkreten Grund (z. B. „Es gibt noch aktive Kontakte“), damit du sofort weißt, was zu tun ist.
  • Komplizen-Liste bricht nicht mehr still ab. Wenn der Server unter Last ist oder ein Filter nichts ergibt, siehst du das jetzt explizit — vorher konnte die Liste leer wirken, obwohl im Hintergrund noch geladen wurde.
  • Sauberer 404 auf Org-Detail. Wer auf einen nicht mehr existierenden Org-Link klickt, sieht eine ordentliche „Nicht gefunden“-Seite statt einer halb gerenderten Detail-Ansicht.
  • Kontaktrolle-Auswahl wartet zuverlässig. Die Auswahl der Rolle blockt jetzt sauber, solange der Server lädt — und der Timeout ist großzügiger, damit kein Speichern stillschweigend ins Leere läuft.

📱 Mobil

  • Organisations-Detail aufgeräumt für schmale Bildschirme. Karten und Tabs nutzen die Breite besser, weniger horizontales Scrollen.
  • Auftrags-Detail: Buttons werden mobil zu Icons. Die Header-Buttons (Bearbeiten, Archivieren, …) kollabieren auf kleinen Bildschirmen zu Icon-Buttons — mehr Platz für den Titel, gleicher Funktionsumfang.

🌀 Visuelles

  • Lade-Spinner mit Vitale-Handschrift. Der Page-Loader dreht sich jetzt wieder sichtbar und nutzt einen Ensō-Pinselstrich — kurzer ruhiger Moment, der zum Brand passt, statt eines neutralen Standard-Spinners.

🤖 Via

  • Spaltenfilter auch auf verknüpften Aufgaben-Routen. Wenn Via Aufgaben mit ihren Aufträgen oder Komplizen abfragt, sieht sie nur noch die wirklich benötigten Felder — gleiche Strenge wie bei den direkt abgefragten Auftrags-/Komplizen-Listen. Wichtig für DSGVO-Datensparsamkeit.

🧪 Qualität im Hintergrund

  • End-to-End-Tests melden sich jetzt wie echte Komplizen an. Statt einer Test-Abkürzung läuft die Anmeldung im automatisierten Test über denselben OTP-/E-Mail-Pfad wie für dich — wir testen also wirklich das, was du benutzt.
🛠 Migrationen & Rollout. Eine DB-Migration: 20260405000000_agent_role.sql (sortiert die Agent-Rolle nach dem Baseline und ist idempotent — sichere Wiederholung erlaubt). Nach dem Deploy einmal make db-apply-pending ENV=prod.
Enthaltene PRs: #272, #273, #274, #275, #276, #277, #278, #279, #280, #281, #282, #283, #284, #285, #286, #287.
v6

Via wird im Hub einsatzfähig: sie sieht, was du siehst, kann Aufgaben und Aufträge im Hub anlegen und verknüpfen — und jede Schreib-Aktion landet sauber attribuiert im Audit-Log.

🤖 Via im Hub

  • Via handelt jetzt in deinem Namen. Wenn du Via etwas im Hub fragst („zeig mir meine offenen Aufträge“, „häng die Aufgabe an den Auftrag X“), läuft die Anfrage unter deiner Identität — Via sieht damit genau das, was du selbst auch sehen würdest, und nicht mehr (und nicht weniger). Keine Treffer aus fremden Projekten, keine Lücken bei eigenen.
  • Via kann Aufträge finden und Aufgaben dranhängen. Frei-Text-Suche über Aufträge mit den wichtigsten Eckdaten (Name, Status, Organisation, beteiligte Komplizen). Mehrwortige Suchen (z. B. „kultur diagnose“) werden intelligent zerlegt, damit Bindestrich-Schreibweisen wie „Kultur-Diagnose 2026 …“ trotzdem gefunden werden.
  • Via kann Aufgaben anlegen und Komplizen zuweisen. Beim Anlegen kann Via direkt mit E-Mail-Adressen zuweisen — fehlerhafte Adressen blockieren nichts, sie werden in der Antwort aufgelistet, der Rest läuft. Bestehende Aufgaben lassen sich nachträglich an einen Auftrag knüpfen.
  • Lese-Zugriff auf Organisationen. Via kann Organisationen suchen und die wichtigsten Stammdaten (Name, Adresse, Website) abrufen — z. B. um Reisen zu planen oder bei der Vorbereitung eines Termins schnell den Kontext zu liefern.

🛡 Nachvollziehbarkeit

  • Audit-Log markiert agentengetriebene Schreib-Aktionen. Jeder Eintrag im Hub-Aktivitäts-Log, der über Via entstand, trägt jetzt zwei Marker: wer (welcher Komplize hat es ausgelöst) und worüber (welcher Agent-Schlüssel war der Kanal). Damit lässt sich später jederzeit nachvollziehen, dass z. B. „Via für Sven“ eine Aufgabe an einen Komplizen verknüpft hat — wichtig für DSGVO/AI-Act-Audits.
  • Sicherheitsschicht für agenten-ausgestellte Tokens. Wenn ein Agent-Schlüssel widerrufen wird oder das hinterlegte Agent-Mitglied deaktiviert wird, werden auch bereits ausgestellte Impersonations-Tokens innerhalb weniger Sekunden ungültig — nicht erst nach 1 Stunde wie zuvor.
🛠 Migrationen & Rollout. Keine DB-Migrationen in diesem Release. Hub-Service einfach redeployen. Enthaltene PRs: #265, #266, #267, #268.
Va-Agent-Gegenstück: va-agent#31 (Mac-Mini-Deploy parallel).
v5

Aufräum-Release: keine neuen Funktionen, aber die Anmeldung läuft sauber auf OTP, und das Hub-Team kann ab jetzt mit viel mehr Vertrauen Änderungen schicken — automatisierte Qualitätsprüfungen fangen ganze Klassen von Fehlern vor dem Merge ab.

🔐 Anmeldung

  • Anmeldung ist jetzt komplett OTP-only. Im Code steckten noch Reste vom alten Passwort-Flow (zum Testen). Die sind raus — sowohl die hinterlegten Test-Passwörter als auch der Pfad, der sie genutzt hat. Für dich ändert sich nichts: weiter Magic-Link / 6-stelliger Code aus der E-Mail.

🧪 Im Hintergrund: Qualität & Stabilität

  • Jede Code-Änderung läuft jetzt durch 5 Prüfungen vor dem Merge: Geheimnis-Scan (verhindert versehentlich eingecheckte Passwörter), API-Typ-Check, API-Unit-Tests, Web-Typ-Check und Web-Lint. Bisher war ein Teil davon nur „nett gemeint“ und nicht zwingend; jetzt ist alles harter Pflichtbestandteil.
  • API-Tests sind jetzt offline-fähig. Bisher mussten unsere Backend-Tests gegen das Staging-System reden, was sie unzuverlässig machte. Jetzt laufen die wichtigen Tests komplett im Container und sind in Sekunden grün/rot — was Refactorings deutlich sicherer macht.
  • Frontend-Lint-Lücke geschlossen. Im Web-Code waren 18 Regelverstöße aufgelaufen (kein User-Effekt, aber Stolperfallen für Komplizen, die am Hub mitentwickeln). Alle behoben, und ab jetzt blockt CI neue Regressionen automatisch.

🛠 Aufräumen unter der Haube

  • Erstes Service-Pattern etabliert. Die Settings-Logik (Admin-Einstellungen ändern) ist als Beispiel aus dem dicken Request-Handler herausgezogen und sauber separat getestet. Macht den Code wartbarer und ist die Vorlage für ähnliche Aufräumarbeiten an größeren Bereichen (Aufträge, Abrechnungszyklen, Reisekosten) in den nächsten Releases.
🛠 Migrationen & Rollout. Keine DB-Migrationen in diesem Release. Hub-Service einfach redeployen. Enthaltene PRs: #258, #259, #260, #261.
Backlog-Milestone: Hub Foundation (m-0). Hintergrund: KI-Code-Review-Bericht vom 2026-05-10 (P0/P1-Items).
v4

Schwerpunkt: Bezeichnungen und Rollen rund um Aufträge werden flexibler, das Dashboard wird ein Sprungbrett in die Listen, und die Wochen-Zeiterfassung zeigt wieder die richtigen Tage.

📋 Aufträge

  • Optionale Bezeichnung pro Position. Jede Auftragsposition hat jetzt ein Freitextfeld „Bezeichnung (optional)“. Bleibt es leer, wird wie bisher der Produktname verwendet. So lässt sich am Angebot/Rechnung ein kundenfreundlicher Text einstellen, ohne ein neues Produkt anlegen zu müssen. Sichtbar in Positions-Liste, Abrechnungszyklus, Zeiterfassung, Umsatzverteilung und Kanban-Karten.
  • Rollen-Verwaltung in den Einstellungen. Admins können Komplizen- und Personen-Rollen an Aufträgen (z. B. „Auftragseigner“, „Begleiter“) jetzt direkt unter Einstellungen → Auftrags-Rollen anlegen, umbenennen und löschen — bisher ging das nur über Datenbank-Migrationen. Rollen, die noch in Aufträgen verwendet werden, sind gegen Löschen geschützt.

🕓 Zeiterfassung

  • Aufträge gruppiert nach Kunde im Dropdown. Die Auftrags-Auswahl in der Zeiterfassung (FilterBar und Auftrags-Picker) zeigt Aufträge gebündelt unter ihrem Kunden — gesucht wird wie gewohnt, aber die Liste ist deutlich schneller zu überblicken. Aufträge ohne Kunden landen am Ende unter „Ohne Kunde“.
  • Wochenheader zeigt wieder die richtigen Tage. Bei der Wochen-Ansicht stand seit dem letzten Release in unserer Zeitzone (CEST) der falsche Tag im Header — z. B. wurde Sonntag als „Mo“ angezeigt, alle Spalten um einen Tag versetzt. Behoben; auch der „Heute“-Marker landet wieder in der richtigen Spalte.

💬 Interaktionen

  • Draft-Autosave. Lange Interaktions-Texte gehen nicht mehr verloren, wenn man das Formular versehentlich schließt oder die Seite verlässt. Der Entwurf wird im Browser zwischengespeichert (inkl. ausgewählter Komplizen und Verknüpfungen) und beim erneuten Öffnen vorgeschlagen. Speichern oder explizites Verwerfen räumt den Entwurf weg.

📊 Dashboard

  • Stat-Karten sind anklickbar. Die Zahlen auf dem internen Dashboard (Organisationen, Personen, Aktive Kontakte) verlinken jetzt direkt in die jeweilige Liste — bei Bedarf vorgefiltert (z. B. Aktive Kontakte → /persons?status=Aktiv). Springt von einer Zahl direkt zu den Datensätzen dahinter.
🛠 Migrationen & Rollout. Zwei neue DB-Migrationen müssen vor dem Prod-Hub-Redeploy angewendet werden — make db-apply-pending ENV=prod:
  • 20260509120200_order_role_admin_crud.sql — UPDATE/DELETE-RLS-Policies auf order_member_roles und order_person_roles, damit die neue Rollen-Verwaltung in den Einstellungen serverseitig erlaubt ist
  • 20260509200000_order_products_label.sql — Neue nullable Spalte label auf order_products für die optionale Positions-Bezeichnung
Enthaltene PRs: #244, #245, #246, #247, #248, #249, #253.
v3

Schwerpunkt: Kommentare sind auf einen Blick sichtbar (Chips), Aufgaben können wie Interaktionen verknüpft werden, Aufträge lassen sich duplizieren, Listen merken sich ihre Filter.

💬 Kommentare & Erwähnungen

  • Ungelesen-Chips überall. Wenn jemand dich erwähnt (oder du „Alle Kommentare“ eingeschaltet hast), siehst du das nicht mehr nur in der Glocke oben, sondern direkt am Eintrag — in Listen, Boards und Detailseiten. Funktioniert für Aufträge, Aufgaben, Organisationen, Interaktionszyklen und Interaktionen.
  • Persönliche Benachrichtigungseinstellung. Unter Einstellungen → Benachrichtigungen kannst du wählen zwischen „Nur Erwähnungen“ (Standard, wie bisher) und „Alle Kommentare“. Bei „Alle Kommentare“ bekommst du Bell + Chip für jeden Kommentar an Entitäten, in denen du beteiligt bist (Ersteller, zugewiesen, vorheriger Kommentator).
  • Bell + Chip räumen gemeinsam auf. Wenn du die Kommentare einer Entität öffnest, verschwindet sowohl der Chip als auch die zugehörige Glocken-Benachrichtigung — kein doppeltes Wegklicken mehr.
  • Schöne @-Erwähnungen beim Tippen und Bearbeiten. Im Kommentar-Editor erscheinen Erwähnungen jetzt als Chip (@Anna Berater) statt als kryptisches @[Anna Berater](kmp_…). Backspace löscht den Chip als Ganzes.

✅ Aufgaben

  • Verknüpfungen für Aufgaben. Aufgaben unterstützen jetzt die gleichen vier Verknüpfungstypen wie Interaktionen: Personen, Organisationen, Aufträge und Interaktionszyklen — alles über einen kombinierten Picker im Aufgaben-Formular und in der Detailansicht.
  • Checklisten im Notizen-Editor. Neuer „Checkliste“-Eintrag im Slash-Menü und im Floating-Toolbar (Bullet-, Ordered-, Checklist-Buttons). [ ] am Zeilenanfang erzeugt automatisch eine Checkbox.
  • „Neu“-Formulare reset. Das „+“-Sheet für neue Aufgaben und Interaktionen zeigte nach dem Speichern noch die alten Werte. Wird jetzt sauber zurückgesetzt — beim Öffnen und nach dem Speichern.

📋 Aufträge

  • Auftrag duplizieren. Neuer „Duplizieren“-Button in der Auftragsdetailansicht. Kopiert die strukturellen Felder (Kunde, Owner, Abrechnungsart), Team, Kontakte, Positionen und Umsatzverteilung. Status wird auf Ungeklärt zurückgesetzt, der Name bekommt „ (Kopie)“ angehängt. Notizen, Belege, Termine, Kommentare, Abrechnungsdaten und Zeiteinträge werden bewusst nicht mitkopiert (du wirst vor der Bestätigung darauf hingewiesen).
  • Detailseiten-Layout aufgeräumt. Mehrere Layout-Probleme bei mittleren Bildschirmbreiten (KD-Nummer brach auf drei Zeilen, Buttons kollidierten mit Überschriften, „Gespeichert ✓“ überlappte Section-Headings). Außerdem sind Positionen und Interaktionen jetzt eigene Cards direkt unter Kontakte/Team — statt in den Tabs versteckt. Die Tab-Leiste schrumpft dadurch auf Zeiten/Reisekosten (+ Umsatzverteilung/Abrechnung für Admins) — übersichtlicher, vor allem mobil.

🔍 Listen & Filter

  • Filter, Sortierung, Suche und Board/Tabellen-Wahl bleiben gemerkt. Auf allen Hub-Listen (Aufträge, Aufgaben, Personen, Organisationen, Interaktionen, Zyklen, Komplizen, Produkte, Reisekosten). URL-Parameter haben weiterhin Vorrang — Deep-Links funktionieren wie gewohnt.
  • „Meine Aufträge / Aufgaben“-Toggle entkoppelt vom expliziten Komplizen-Filter. Die beiden können sich nicht mehr gegenseitig in die Quere kommen. „Mine“ zählt jetzt im Filter-Badge mit.

🔧 Sonstige Fixes

  • Aufgaben mit Status „Zu löschen“ tauchen nicht mehr im Suchpicker auf (gleiches Verhalten wie bei Organisationen / Personen / Aufträgen).
  • UI-Feinschliff an Hintergrund + Schriftgröße in einigen Bereichen.
🛠 Migrationen & Rollout. Drei neue DB-Migrationen müssen vor dem Prod-Hub-Redeploy angewendet werden — make db-apply-pending ENV=prod:
  • 20260501100000_task_links_persons_orgs_zyklen.sql — Junction-Tabellen für Aufgaben-Verknüpfungen
  • 20260501110000_comment_reads_and_prefs.sql — comment_reads, neue Notification-Mode-Spalte, unread_comment_counts RPC
  • 20260502120000_comment_mentions_rls_and_backfill.sql — fehlende RLS-Policies auf comment_mentions + Backfill bestehender @-Erwähnungen, damit Chips für Altdaten ohne erneutes Speichern aufleuchten
Enthaltene PRs: #227, #228, #229, #230, #231, #232, #233, #234, #235.
v2

Schwerpunkt: Eine echte universelle Suche und ein Fix, der das Anlegen neuer Aufträge gegen frische Kunden wieder freigibt.

🔍 Universelle Suche

  • Eine Suche für alle Entitäten. Suche deckt jetzt Organisationen, Personen, Aufträge, Aufgaben, Interaktionszyklen und Komplizen in einer Eingabe ab.
  • Geteilter Search-Picker in Formularen (Verknüpfungen, Auswahl, etc.) — überall die gleiche dynamische Vorschlagsliste mit Tastaturnavigation, statt langer vorgeladener Listen. Macht das Verknüpfen merklich schneller.

📋 Aufträge

  • Anlegen gegen frische Kunden funktioniert wieder. Wenn eine Person oder Organisation gerade erst zum Kunden gemacht wurde, blieb die Kundennummer leer und das Anlegen eines Auftrags wurde blockiert („Person hat keine Kundennummer“). Der Customer-Sync läuft jetzt im richtigen Modus — beim Übergang in Kunde wird der SevDesk-Kontakt angelegt und die Kundennummer zurückgeschrieben.
  • Die Fehlermeldung „Person hat keine Kundennummer“ wird im Auftragsformular jetzt korrekt am Personen-Feld angezeigt (vorher unsichtbar).

🧹 Aufräumen

  • Domain hub.vitale-arbeitskultur.de ist abgeschaltet — der Hub ist nur noch unter hub.va-os.io erreichbar (DNS, Docs, CORS bereinigt).
  • Backlog-Hygiene: Task-70 abgeschlossen, leere Konfigurationsfelder entfernt.
🛠 Rollout. Reiner Code-Release, keine Migrationen. Enthaltene PRs: #219, #220, #222, #223, #224.

v1 (2026-04-27) und davor: ohne Release Notes — diese Konvention startet hier.

Dashboard

Das Dashboard zeigt dir die wichtigsten Kennzahlen und Aktivitäten auf einen Blick. Du siehst aktuelle Statistiken, kannst schnell Aufgaben erstellen und die letzten Änderungen im System verfolgen.

Was kannst du hier tun?

  • Schnelle Aufgabe erstellen — direkt mit Priorität und Fälligkeitsdatum
  • Schnellzugriff nutzen — springe direkt zu Aufträgen, Organisationen oder Einstellungen
  • Aktivitäten verfolgen — sieh die letzten Änderungen im System
  • Top-Kunden einsehen — Überblick über die umsatzstärksten Kunden (nur intern)
Die Aktivitäten aktualisieren sich automatisch, wenn du die Seite im Fokus hast.

Organisationen

Hier verwaltest du alle Organisationen — Kunden, Interessenten, Partner und Lieferanten.

Was kannst du hier tun?

  • Neue Organisation anlegen — über den Button oben rechts
  • Suchen und filtern — nach Name, Status oder Beziehungspflege
  • Details öffnen — Kontakte, Aufträge, Kommentare und Notizen einsehen
  • Komplizen zuweisen — im Detail einer Organisation Komplizen als Betreuer zuweisen (nur intern)
Kundennummer und Rechnungs-E-Mail werden erst sichtbar, wenn der Status-Grund "Kunde" gewählt ist. Löschen setzt den Status auf "Zu löschen" — die Organisation wird nicht sofort entfernt.

Siehe auch: Personen, Aufträge, Interaktionen

Personen

Alle Kontaktpersonen an einem Ort. Personen werden über Kontaktrollen mit Organisationen verknüpft.

Was kannst du hier tun?

  • Neue Person anlegen — über den Button oben rechts
  • Suchen — nach Name oder E-Mail
  • Organisationen einsehen — im Detail einer Person alle verknüpften Organisationen sehen
Eine Person kann mit mehreren Organisationen verknüpft sein — jeweils mit einer eigenen Kontaktrolle. Personen mit aktiven Kontaktverknüpfungen können nicht gelöscht werden.

Siehe auch: Organisationen, Komplizen

Aufträge

Aufträge bilden den Kern eurer Projektarbeit. Hier verwaltest du den gesamten Lebenszyklus — von der Anfrage bis zur Abrechnung.

Was kannst du hier tun?

  • Neuen Auftrag anlegen — über den Button oben rechts
  • Board- oder Tabellenansicht — wechsle zwischen Kanban-Board und Tabelle
  • Auftrag öffnen — Details, Positionen, Teammitglieder, Zeiten und Abrechnung einsehen
  • Positionen verwalten — Produkte mit Mengen und Preisen hinzufügen
  • Wertvertrag pflegen — im Tab „Wertvertrag“ legst du fest, wer welchen Anteil am Umsatz bekommt. Die Tabelle hat eine Spalte je Bereich (Akquise, jede Pauschal-Position, Verwaltung) und eine Zeile je beteiligter Person — plus eine Zeile für Vitale Arbeitskultur selbst. Jede Spalte muss genau 100% ergeben; vorher lässt sich nichts speichern. Vorbelegt ist: Akquise geht an den Auftragseigner, alles andere an VA (nur intern)
  • Festschreiben & Versionen — mit „Festschreiben“ machst du die Verteilung verbindlich. Abrechnungen verwenden immer die festgeschriebene Version. Möchtest du später etwas ändern, legst du über „Neue Version erstellen“ eine Folgeversion an — die alten Abrechnungen bleiben unangetastet (nur intern)
Aufträge durchlaufen 6 Status-Stufen: Ungeklärt → Geklärt → Beauftragt → Laufend → Abzurechnen → Abgerechnet. Zeiterfassung ist nur bei Aufträgen im Status "Laufend" möglich. Stundenbasierte Positionen sind nicht Teil des Wertvertrags — sie werden nach den gebuchten Stunden abgerechnet. Änderst du den Wertvertrag, nachdem eine Position bereits teilweise abgerechnet wurde, gleicht die nächste Abrechnung den Unterschied automatisch über Korrekturposten aus — am Ende stimmt die Aufteilung mit der neuesten Version überein.

Siehe auch: Zeiterfassung, Abrechnungen, Produkte

Aufgaben

Aufgaben helfen euch, Arbeit zu organisieren. Du kannst sie auf einem Kanban-Board oder in einer Tabelle verwalten, priorisieren und Komplizen zuweisen.

Was kannst du hier tun?

  • Neue Aufgabe erstellen — über den Button oben rechts
  • Per Drag & Drop verschieben — im Board-Modus Aufgaben zwischen Status-Spalten ziehen
  • Komplizen zuweisen — im Aufgabendetail Teammitglieder hinzufügen
  • Mit Aufträgen verknüpfen — Aufgaben einem oder mehreren Aufträgen zuordnen
4 Status-Stufen: Offen → In Arbeit → Blockiert → Erledigt. Alle Übergänge sind erlaubt. Aufgaben werden beim Löschen endgültig entfernt — es gibt keinen Papierkorb.

Siehe auch: Aufträge, Komplizen

Zeiterfassung

Erfasse Arbeitszeiten per Timer oder manueller Eingabe. In der Listenansicht siehst du alle Einträge, in der Wochenansicht kannst du schnell Zeiten für die ganze Woche eintragen.

Was kannst du hier tun?

  • Timer starten — über den Timer-Button in der Kopfzeile, funktioniert von jeder Seite aus
  • Manuellen Eintrag erstellen — über "Erfassen" einen Eintrag mit Datum und Dauer anlegen
  • Wochenansicht nutzen — im Tab "Woche" Zeiten direkt in ein Raster eintragen
  • Interne Zeiten erfassen — Zeiten ohne Auftragsbezug einer Kategorie zuordnen, z.B. IT, Marketing oder Weiterbildung (nur intern)
  • Zeiten per Tabelle importieren — über "Importieren" mehrere Einträge auf einmal nacherfassen (siehe unten)
Es kann immer nur ein Timer gleichzeitig laufen. In der Wochenansicht: Pfeiltasten zum Navigieren, Enter zum Bearbeiten, Escape zum Abbrechen.

Zeiten dürfen sich nicht überschneiden

Eine Zeit, die in einen bereits erfassten Zeitraum hineinreicht, wird abgelehnt — du bekommst einen Hinweis, welcher Eintrag im Weg steht. Der Grund: dieselbe Stunde soll nicht zweimal gebucht werden, weil sie sonst doppelt in einer Abrechnung landet. Direkt aneinander anschließende Zeiten sind natürlich in Ordnung — ein Eintrag von 9 bis 11 Uhr und der nächste ab 11 Uhr passen zusammen.

Zeiten per Tabelle nacherfassen

Wenn du eine ganze Woche nachtragen musst oder Zeiten aus einem anderen Programm übernimmst, ist der Import der schnellere Weg. Er läuft in vier Schritten:

  1. Vorlage herunterladen — sie enthält für jede Stunden-Position deiner beauftragten und laufenden Aufträge sowie für jede interne Tätigkeit schon eine eigene Zeile. Pauschal-Positionen fehlen bewusst: dagegen werden keine Stunden gebucht.
  2. In Excel ausfüllen — nur Datum, Von und Bis eintragen, dazu optional eine Beschreibung. Datum als 24.07.2026, Uhrzeit als 09:00.
  3. Datei hochladen — du bekommst eine Vorschau, die jede Zeile prüft.
  4. Importieren — sobald keine Zeile mehr einen Fehler hat.

Die Vorlage ist gleichzeitig deine Nachschlageliste: Zeilen, die du nicht brauchst, lässt du einfach stehen — ohne Datum und Uhrzeit werden sie beim Import übersprungen. Und wenn du gegen dieselbe Position mehrfach buchen willst, kopierst du die Zeile so oft, wie du sie brauchst.

Der Import ist alles-oder-nichts: solange eine Zeile einen Fehler hat, wird nichts geschrieben. So kann nicht die Hälfte deiner Zeiten drin sein, ohne dass du erkennst, welche. Die Vorschau nennt dir für jede Zeile den Grund — mit der Zeilennummer, die auch Excel anzeigt.

Zwei Dinge kann der Import nicht: Zeiten für andere Komplizen anlegen (er schreibt immer auf dich selbst) und Zeiten in einem Zeitraum, der schon abgerechnet ist.

Siehe auch: Aufträge, Abrechnungen

Interaktionszyklen

Interaktionszyklen bilden aktive Beziehungsphasen mit Organisationen ab — vom Erstkontakt bis zum Auftrag. Weise Komplizen zu und verknüpfe Personen und Aufträge.

Was kannst du hier tun?

  • Neuen Zyklus anlegen — eine Organisation auswählen und starten
  • Komplizen und Personen zuweisen — im Detail des Zyklus Komplizen und Kontaktpersonen verknüpfen
  • Aufträge verknüpfen — Aufträge, die aus diesem Zyklus entstanden sind, zuordnen
3 Status: Aktiv, Inaktiv, Archiviert. Archivierte Zyklen werden aus der Standardliste ausgeblendet.

Siehe auch: Interaktionen, Organisationen

Interaktionen

Einzelne Kontaktpunkte dokumentieren — E-Mails, Anrufe, Meetings oder Chatnachrichten. Verknüpfe sie mit Personen, Organisationen, Aufträgen und Zyklen.

Was kannst du hier tun?

  • Neue Interaktion erstellen — über den Button oben rechts oder den +-Button in der Kopfzeile
  • Filtern — nach Kanal, Richtung, Status oder verknüpften Entitäten
  • Verknüpfungen hinzufügen — Komplizen, Personen, Organisationen, Aufträge und Zyklen zuordnen
Kanäle: E-Mail, Anruf, Meeting, Chat. Das Medium (Schriftlich/Mündlich) wird automatisch abgeleitet. Interaktionen werden beim Löschen endgültig entfernt.

Siehe auch: Interaktionszyklen, Organisationen, Aufträge

Abrechnungen

Hier werden Umsatzanteile aus Abrechnungszyklen verwaltet. Interne Komplizen erstellen Zyklen im Auftragsdetail, externe Komplizen sehen ihre Anteile und hinterlegen Rechnungsnummern.

Was kannst du hier tun?

  • Rechnungsnummer eintragen — zu jedem Anteil deine externe Rechnungsnummer hinterlegen (extern)
  • Abrechnungszyklen verwalten — im Auftragsdetail Zyklen anlegen, Zeiteinträge zuordnen und abschließen (intern)
  • Aufteilung nachvollziehen — jeder abgerechnete Euro wird genau einmal zugeordnet: 15% Akquise an den Auftragseigner, 5% Verwaltung an Vitale Arbeitskultur, 80% Wertschöpfung (Stunden nach Aufwand, Pauschalen über den Wertvertrag). Die Zeile „Verbleibt bei Vitale Arbeitskultur“ zeigt den VA-Anteil (intern)
  • Deine Umsatz-Sicht — im Bereich „Umsatz“ siehst du deine eigenen Zahlen: genau die Beträge, die dir der Wertvertrag in den Abrechnungen zuordnet, nichts hochgerechnet. Hast du frei mitgearbeitet, ist das der Betrag, den du in Rechnung stellst. Als Angestellte:r siehst du zusätzlich deinen Anteil am Gesamtumsatz des Jahres (vor Kosten und Steuern)
Abgeschlossene Zyklen können nicht mehr bearbeitet werden — Anteile und Beträge sind dann eingefroren. Die Akquise- und Verwaltungsprozentsätze werden in den Einstellungen konfiguriert. Auch interne Komplizen erhalten jetzt für ihre gebuchten Stunden einen Wertschöpfungsanteil — das macht den von jedem erzeugten Umsatz sichtbar (keine Auszahlung, interne Komplizen sind angestellt).

Siehe auch: Aufträge, Zeiterfassung, Einstellungen

Komplizen

Das Teamverzeichnis aller Komplizen — intern und extern. Hier findest du Kontaktdaten, Rollen und Profil-Informationen.

Was kannst du hier tun?

  • Profil ansehen — Klicke auf einen Komplizen, um Details zu sehen
  • Eigene Zeiten und Kalender pflegen — im eigenen Profil im Tab „Zeiten"
  • Eigene Kompetenzen eintragen — im eigenen Profil im Tab „Kompetenzen"
  • Neuen Komplizen anlegen — über den Button oben rechts (nur Admin)
  • Komplizen bearbeiten — Profildaten, Bankverbindung und HR-Informationen pflegen (nur Admin)
Externe Komplizen sehen nur eingeschränkte Informationen (Name, E-Mail) anderer Komplizen.

Kalender verbinden

  1. Öffne dein eigenes Profil und den Tab „Zeiten". Zeitfenster sagen, wann du grundsätzlich arbeitest; verbundene Kalender blockieren bereits belegte Zeiten.
  2. Microsoft: „Microsoft-Konto verbinden" öffnet die Microsoft-Anmeldung. Du kannst mehrere Geschäfts- und Privatkonten verbinden und anschließend die Kalender auswählen, die berücksichtigt werden sollen.
  3. Google: „Google Kalender verbinden" öffnet die Zustimmung bei Google. Der Hub liest nur Frei/Belegt-Zeiten.
  4. CalDAV: Nutze ein Anwendungspasswort, suche die Kalender und wähle einen aus. Die Verbindung ist für interne Kalender vorgesehen, weil CalDAV keine vergleichbar eingeschränkte Freigabe kennt.
  5. Kontrolliere den Status. „Aktiv" bedeutet, dass der Abgleich läuft; bei „Fehler" steht die Ursache direkt an der Verbindung.

Kompetenzen eintragen

Im Profil zeigst du, was du kannst und was du lernen möchtest. So sieht das Team bei einer neuen Anfrage schnell, wer passt — und wer sich gerade in eine Richtung entwickeln will.

  1. Öffne dein eigenes Profil, wechsle auf den Tab „Kompetenzen" und klicke auf „Bearbeiten".
  2. Die Kompetenzen sind nach unseren Auftragsrollen gruppiert (etwa Facilitator, Trainer, Coach), dazu kommt „Allgemein". Klappe eine Gruppe auf.
  3. Wähle je Kompetenz deine Stufe: Grundkenntnisse, Erfahren oder Experte. Ein zweiter Klick auf die gewählte Stufe nimmt sie wieder heraus.
  4. „Will ich lernen" kannst du zusätzlich setzen — auch ganz ohne Stufe. Daran sehen andere, wo du gern mehr machen würdest, selbst wenn du gerade erst anfängst.
  5. Mit „Speichern" unten sicherst du Profil und Kompetenzen zusammen.
Alle Komplizen — auch freie — können die Kompetenzen im Team sehen; so funktioniert die gemeinsame Suche nach passenden Leuten. Ändern können sie nur du selbst und die Admins.

Die Liste der Kompetenzen pflegen die Admins in den Einstellungen. Fehlt dir eine, sag ihnen Bescheid. Die Liste ist bewusst vorgegeben statt frei eintippbar, damit alle dieselben Begriffe nutzen und die Suche später funktioniert.

Weiterbildungen & Zertifikate

Deine Weiterbildungen standen bisher als einfache Liste im Profil. Jetzt findest du sie im Tab „Kompetenzen" unter „Weiterbildungen & Zertifikate" — die bisherigen Einträge sind übernommen, in derselben Reihenfolge.

  1. Klicke im Tab „Kompetenzen" auf „Bearbeiten" und dann bei „Weiterbildungen & Zertifikate" auf „Hinzufügen".
  2. Wähle, ob es eine Weiterbildung oder ein Zertifikat ist, und trage Titel, Anbieter und das Abschlussdatum ein. Bei Zertifikaten mit Ablaufdatum kommt „Gültig bis" dazu.
  3. Wenn du magst, lade einen Nachweis hoch (PDF oder Bild). Den können nur du und die Admins öffnen — alle anderen sehen nur, dass es den Eintrag gibt.
  4. „Auf der Webseite zeigen" entscheidet, ob der Eintrag auf deiner Profilseite auf vitale-arbeitskultur.de erscheint. Mit den Pfeilen legst du die Reihenfolge fest.

Jeder Eintrag wird sofort gespeichert, nicht erst mit „Speichern" unten. Das hat einen Grund: Bei einer Kompetenz kannst du über „Nachweis" auf deine Weiterbildungen und Zertifikate verweisen — dafür müssen sie schon da sein. So sieht das Team, worauf deine Einschätzung beruht.

Ist ein Zertifikat abgelaufen, steht „abgelaufen" daneben, und es verschwindet automatisch von der Webseite. Deine Kompetenz bleibt trotzdem stehen. Trag einfach das neue Datum ein, wenn du es verlängert hast. Änderungen an Einträgen, die auf der Webseite stehen, sind dort nach wenigen Minuten sichtbar.

Nachfrage beim Anmelden

Ein Profil hilft nur, wenn es stimmt. Deshalb fragt der Hub dich beim Anmelden etwa alle zwei Monate, ob deine Kompetenzen, Weiterbildungen und Zertifikate noch aktuell sind. Wann genau, ist bewusst zufällig — so kommt die Frage nicht bei allen am selben Tag.

  • Ja, ist aktuell — fertig, die nächste Frage kommt in etwa zwei Monaten.
  • Aktualisieren — du landest direkt im Tab „Kompetenzen" deines Profils, schon im Bearbeiten-Modus.
  • Später erinnern — der Hub fragt in einer Woche noch einmal.
  • Nicht mehr fragen — schaltet die Nachfrage ab. Im Tab „Kompetenzen" deines Profils kannst du sie jederzeit wieder einschalten.

Siehe auch: Rollen, Aufträge

Einstellungen

Richte dir den Komplizen Hub so ein, wie du ihn magst. Wähle dein bevorzugtes Design und starte die Einführungstour bei Bedarf neu.

Was kannst du hier tun?

  • Design wechseln — zwischen Hell, Dunkel und System-Einstellung wählen
  • Tour neu starten — die Einführungstour von Anfang an durchlaufen
  • Kontaktrollen verwalten — Rollen für Ansprechpartner bei Organisationen (nur intern)
  • Abrechnungseinstellungen — Akquise- und Verwaltungsprozentsätze konfigurieren (nur Admin)
  • Kompetenzkatalog pflegen — Kompetenzen je Auftragsrolle anlegen, umbenennen, sortieren und archivieren (nur Admin). Eine Kompetenz, die schon jemand eingetragen hat, lässt sich nur archivieren: Wer sie hat, behält sie, neu wählen kann sie niemand mehr.

Produkte Nur intern

Euer Leistungskatalog — alle Dienstleistungen und Produkte mit Preisen und Einheiten. Produkte werden Aufträgen als Positionen zugeordnet.

Was kannst du hier tun?

  • Neues Produkt anlegen — über den Button oben rechts (nur Admin)
  • Produkt bearbeiten — Preis, Einheit und Geschäftsbereich anpassen (nur Admin)
Einheiten bestimmen die Abrechnungsart: "Stunde" = Zeiterfassung möglich, "Pauschal" oder "Jahr" = Festpreis.

Siehe auch: Aufträge, Abrechnungen

Kundenstimmen

Zitate von Kund*innen über unsere Arbeit. Wir pflegen sie jetzt im Hub. Die Website zeigt im nächsten Schritt, was hier veröffentlicht ist — auf der Startseite, bei Organisationsentwicklung und im Profil der Komplizen, um die es geht. Bis dahin zeigt sie noch ihre bisherige Liste.

Was kannst du hier tun?

  • Neue Kundenstimme anlegen — über den Button oben rechts: Zitat, Name, Rolle, Unternehmen, Foto und Logo
  • Komplizen verknüpfen — die Kolleg*innen, um die es in der Kundenstimme geht
  • Person, Organisation oder Auftrag verknüpfen — bei Personen und Organisationen taucht die Kundenstimme dann auch dort im Tab „Kundenstimmen" auf
  • Freigabe eintragen — das Datum, an dem die Person der Veröffentlichung zugestimmt hat, und bei Bedarf eine Notiz dazu
  • Veröffentlichen und sortieren — „Auf der Website zeigen" und die Reihenfolge (nur Admin)

Gut zu wissen

  • Ohne Freigabe keine Veröffentlichung. Erst wenn ein Freigabedatum eingetragen ist, lässt sich eine Kundenstimme auf die Website stellen. So ist jederzeit nachvollziehbar, wer wann zugestimmt hat.
  • Der veröffentlichte Text bleibt stabil. Name, Rolle und Unternehmen stehen in der Kundenstimme selbst. Ändert jemand die Person im Adressbuch, ändert sich das Zitat auf der Website nicht still mit.
  • Profil-Links nur für sichtbare Komplizen. Steht eine verknüpfte Kollegin selbst nicht auf der Website, gibt es dort keinen Link zu ihr. Die Kundenstimme erscheint trotzdem.
  • Löschen. Entwürfe kann jede*r löschen, der sie sehen darf. Eine veröffentlichte Kundenstimme nur Admins, weil sie damit von der Website verschwindet.
  • Die Website aktualisiert sich selbst. Sobald die Website die Kundenstimmen aus dem Hub holt, wird sie nach dem Speichern einer veröffentlichten Kundenstimme innerhalb weniger Minuten neu erstellt.
Freie Komplizen sehen und pflegen nur die Kundenstimmen, mit denen sie verknüpft sind — also die über ihre eigene Arbeit. Was Kund*innen über andere sagen, bleibt für sie verborgen. Legen sie eine neue an, sind sie automatisch damit verknüpft und bleiben es auch, damit sie ihre eigenen Kundenstimmen nicht aus den Augen verlieren. Veröffentlichen bleibt auch hier Sache der Admins.

Siehe auch: Komplizen, Organisationen

Buchungen

Buchbare Dienste — Titel, Dauer, Puffer, Vorlauf und die Frage, wer gebucht wird. Dienste pflegen Admins zentral; die Zeitfenster pflegt jeder Komplize selbst im eigenen Profil im Tab „Zeiten". Freie Komplizen sehen hier nur „Gemeinsame Zeit".

Was kannst du hier tun?

  • Neuen Dienst anlegen — über den Button oben rechts (nur Admin)
  • Komplizen zuordnen — im Tab „Komplizen"; bei „Einer von mehreren" zusätzlich Priorität und Gewichtung (nur Admin)
  • Verfügbarkeit prüfen — im Tab „Verfügbarkeit" siehst du dieselben Termine, die auch die Buchungsseite anbietet
  • Gemeinsame Zeit finden — im Tab „Gemeinsame Zeit" wählst du Komplizen und eine Dauer und siehst pro Tag, wann alle zusammen frei sind. Mit „Kernarbeitszeiten berücksichtigen" ausgeschaltet sucht der Hub montags bis freitags von 7 bis 22 Uhr, etwa für einen Abendtermin
  • Buchungen betreuen — im Tab „Buchungen" Termine einsehen, verschieben oder absagen
Auch freie Komplizen können gemeinsame Zeit suchen. Sie sehen dabei nur, wann alle frei sind — nie, was in den Kalendern der anderen steht. Die Dienste selbst bleiben internen Komplizen vorbehalten.
Die drei Zuordnungsarten: Einzeln = genau eine Person. Einer von mehreren = gebucht wird jemand aus der Gruppe. Alle gemeinsam = der Termin kommt nur zustande, wenn jede zugeordnete Person Zeit hat.
Puffer müssen ins Zeitfenster passen: Wer bis 17 Uhr freigibt und 15 Minuten Nachbereitung einplant, ist ab 16:45 nicht mehr buchbar. Zeigt die Verfügbarkeit nichts an, fehlen meist die Zeitfenster der zugeordneten Komplizen — ein Hinweis dazu steht direkt über dem Kalender.

So richtest du einen Dienst ein

  1. Lege Titel, Dauer, Raster, Puffer, Vorlauf und Buchungshorizont fest.
  2. Wähle die Zuordnungsart und ordne im Tab „Komplizen" die buchbaren Personen zu. Ohne Zuordnung gibt es keine Termine.
  3. Bei Online-Terminen lässt du den Meeting-Link leer, wenn jede Buchung einen eigenen kMeet-Raum erhalten soll. Ein eingetragener Link gilt für alle Buchungen dieses Dienstes.
  4. Prüfe im Tab „Verfügbarkeit", ob passende Termine erscheinen. Dort lassen sich Termine auch intern buchen.

So betreust du eine Buchung

  1. Öffne den Dienst und den Tab „Buchungen". Aktive Termine stehen sofort in der Liste; ersetzte Termine werden über „Frühere Termine anzeigen" sichtbar.
  2. Beim Verschieben wählst du einen freien neuen Zeitpunkt. Beim Absagen wird der Slot wieder frei. Beide Vorgänge senden aktualisierte Kalendereinträge an Gast und Host.
  3. „Bestätigt" bedeutet: Die Buchung ist angelegt und der Zeitpunkt reserviert. Zusagen oder Absagen aus dem persönlichen Kalender werden derzeit nicht in den Hub zurückgespielt.

Siehe auch: Meine Zeiten, Komplizen

Meine Zeiten

Wann du für Buchungen zur Verfügung stehst. Gilt für alle Dienste, denen du zugeordnet bist. Zu finden im eigenen Profil im Tab „Zeiten" — oder direkt über das Benutzermenü oben rechts.

Was kannst du hier tun?

  • Wochenzeiten pflegen — pro Wochentag beliebig viele Fenster, etwa vormittags und nach der Mittagspause
  • Ausnahmen eintragen — ohne Uhrzeiten ist der Tag komplett blockiert, mit Uhrzeiten ersetzt die Ausnahme die Wochenzeiten dieses Tages
  • Zeitzone setzen — alle Uhrzeiten gelten in dieser Zone
Ohne Zeitfenster bist du in keinem Dienst buchbar — auch dann nicht, wenn du zugeordnet bist. Interessierte sehen die Termine automatisch in ihrer eigenen Zeitzone.

Siehe auch: Buchungen

Tokens ZUKUNFT

Für interne Arbeit — also alles, was nicht für einen Kundenauftrag ist, etwa Vertrieb, Marketing oder IT — bekommst du Tokens: ein Token für jede volle Stunde. Das gilt für die Tätigkeiten, die Tokens bringen; wenn du angestellt bist, zählen nur die Stunden über deinem monatlichen Soll (Einzelheiten unten). Deine Tokens kannst du später einlösen, zum Beispiel gegen Geld, gegen Unterstützung durch Kolleg*innen (etwa IT-Hilfe) oder für eine Weiterbildung. Dein Konto findest du im eigenen Profil im Tab „Tokens".

Wie viele Tokens bekommst du?

  • Wenn du frei mitarbeitest: Jede Stunde auf einer internen Tätigkeit, die Tokens bringt, zählt. Welche das sind, legen die Admins fest — Urlaub und Krankheit gehören nicht dazu.
  • Wenn du angestellt bist: Deine vereinbarten Wochenstunden sind schon durch dein Gehalt abgedeckt. Tokens gibt es für die Stunden darüber hinaus. Dafür zählt alles, was du im Monat erfasst hast — Kundenaufträge, interne Arbeit, auch Urlaub und Krankheit. Es gibt aber höchstens so viele Tokens, wie du in dem Monat intern gearbeitet hast. Überstunden nur in Kundenaufträgen bringen also keine Tokens, weil die Tokens interne Arbeit belohnen sollen.
  • Dein Soll im Monat: deine Wochenstunden mal die Arbeitstage des Monats (Montag bis Freitag), geteilt durch fünf. Feiertage werden nicht abgezogen — so bleibt die Rechnung einfach und für alle gleich.
  • Nur volle Stunden: Gezählt wird einmal am Monatsende über alle deine Stunden zusammen. Was danach übrig bleibt, etwa eine halbe Stunde, verfällt und wird nicht in den nächsten Monat mitgenommen.
Beispiel: Du bist angestellt mit 30 Wochenstunden, der Monat hat 22 Arbeitstage. Dein Soll sind 132 Stunden. Du hast 136,5 Stunden erfasst, davon 3 Stunden intern. Über dem Soll liegen 4,5 Stunden — weil du aber nur 3 Stunden intern gearbeitet hast, bekommst du 3 Tokens.

Wann kommen die Tokens auf dein Konto?

  • Einmal im Monat. Anfang des Folgemonats sehen sich die Admins alle Stunden an und schließen den Monat ab. Erst dann werden die Tokens gutgeschrieben.
  • Die Admins können anpassen. Sie können mehr oder weniger Tokens geben, als die Rechnung ergibt — etwa für einen Einsatz am Wochenende. Dafür schreiben sie immer einen Kommentar dazu.
  • Gezählt wird der Tag, an dem eine Zeit beginnt. Eine Zeit, die am Monatsletzten vor Mitternacht beginnt, gehört zu diesem Monat.
  • Laufende Timer zählen noch nicht. Stoppe deinen Timer — solange in einem Monat noch einer läuft, kann der Monat nicht abgeschlossen werden.
  • Danach ist der Monat fest. Zeiten in einem abgeschlossenen Monat kannst du nicht mehr anlegen, verschieben, verlängern oder löschen, damit die Tokens zu den Stunden passen. Die Beschreibung darfst du weiter ändern. Hast du etwas vergessen, sag den Admins Bescheid — sie können es im laufenden Monat nachbuchen.

Einlösen und Verfall

  • Einlösen über die Admins. Sprich die Admins an. Sie buchen die Tokens von deinem Konto ab und schreiben dazu, wofür: Auszahlung, Arbeitszeit/Unterstützung, Weiterbildung oder Sonstiges, immer mit einer kurzen Notiz.
  • Kein Minus. Es kann nie mehr abgebucht werden, als auf deinem Konto ist.
  • Alles bleibt sichtbar. Jede Gut- und Abbuchung steht mit Datum und Notiz in deinem Konto. Fehler werden nicht gelöscht, sondern mit einer Korrektur ausgeglichen — so bleibt nachvollziehbar, was passiert ist.
  • Verfall nach dem Ausscheiden. Wenn du nicht mehr aktiv bei uns bist, bleiben deine Tokens noch sechs Monate stehen. In dieser Zeit kannst du sie einlösen; das Datum steht in deinem Konto. Danach verfallen sie. Wirst du vorher wieder aktiv, läuft keine Frist mehr.
  • Zum Geld: Wie eine Auszahlung steuerlich behandelt wird, klären wir gerade. Voraussichtlich läuft sie bei Angestellten über die Gehaltsabrechnung; freie Komplizen stellen sie in Rechnung.

Für Admins Nur Admin

  • Monatsabschluss unter „Tokens" in der Navigation: Monat wählen (voreingestellt ist der Vormonat). Pro Komplize siehst du erfasste Stunden, Soll, anrechenbare Stunden und die berechneten Tokens. Ein Klick auf den Pfeil zeigt die Stunden je Tätigkeit, ein Klick auf eine Tätigkeit die einzelnen Einträge mit Beschreibung.
  • Anpassen über den Stift: Weicht dein Wert von der Berechnung ab, ist ein Kommentar Pflicht. Ändern sich danach noch Stunden, bleibt deine Anpassung stehen und die Zeile zeigt „Berechnung hat sich geändert".
  • Abschließen mit „Monat abschließen": Der Hub rechnet ein letztes Mal, schreibt die Tokens gut und sperrt den Monat. Das lässt sich nicht rückgängig machen.
  • Einlösungen und Korrekturen im Profil der Person, Tab „Tokens", Button „Tokens buchen".
  • Welche Tätigkeiten zählen legst du in den Einstellungen bei den internen Tätigkeiten fest (Münz-Symbol). Freie Komplizen bekommen nur Tokens für Tätigkeiten, die sie auch buchen dürfen.
  • Wochenstunden pflegst du im Profil: „Bearbeiten", dann Tab „HR", Feld „Wochenstunden-Ziel". Sie bestimmen das Soll und können deshalb nur von Admins geändert werden. Fehlen sie, berechnet der Hub für diese Person keine Tokens — die Zeile zeigt „Keine Wochenstunden hinterlegt"; du kannst trotzdem von Hand Tokens geben (mit Kommentar).

Siehe auch: Zeiterfassung, Komplizen, Einstellungen

Netzwerk-Explorer Nur intern

Visualisierung aller Beziehungen im System. Wähle eine Organisation oder Person und sieh sofort alle Verbindungen — Kontakte, Aufträge, Komplizen und Zyklen.

Was kannst du hier tun?

  • Entität auswählen — klicke auf einen Knoten im Graphen, um Details zu sehen
  • Suchen — über das Suchfeld eine bestimmte Organisation oder Person finden
Der Explorer zeigt nur Entitäten an, die mindestens eine Verknüpfung haben.

Siehe auch: Organisationen, Komplizen

Hilfe im Komplizen Hub

Auf jeder Seite im Komplizen Hub findest du neben der Überschrift ein (?)-Symbol. Dort erhältst du Erklärungen und Tipps zur jeweiligen Seite, zugeschnitten auf deine Rolle.