|
|
c5d0d3b0ef
|
feat(bulk-customer-tag): Bulk-Add-Tag zu mehreren Customers [tsc:fail]
|
2026-05-23 08:57:43 +02:00 |
|
|
|
571b564508
|
feat(advanced-filters): AdvancedFilters für TimeEntries: status, project, user, bill [tsc:fail]
|
2026-05-23 08:56:08 +02:00 |
|
|
|
f9ccda43ec
|
feat(performance-memoization): React.memo + useMemo in heavy Lists (Customers, Projects, Ti [tsc:fail]
|
2026-05-23 08:54:17 +02:00 |
|
|
|
a2a81d0205
|
feat(hover-tooltips): Tooltip-Component (für Icon-Only-Buttons) [tsc:fail]
|
2026-05-23 08:52:26 +02:00 |
|
|
|
fb3a7d6c0e
|
feat(confirm-modal): Reusable Confirm-Modal statt window.confirm() [tsc:fail]
|
2026-05-23 08:52:18 +02:00 |
|
|
|
5cf7aa333f
|
feat(empty-state-illustrations): EmptyState erweitert: Emoji + bessere Hierarchie [tsc:fail]
|
2026-05-23 08:52:00 +02:00 |
|
|
|
902b2c536f
|
feat(loading-skeletons): Skeleton-Component für Tabellen während Loading [tsc:fail]
|
2026-05-23 08:51:45 +02:00 |
|
|
|
923700986f
|
feat(router-phase25): Mount /holidays + /role-permissions Routes [tsc:fail]
|
2026-05-23 08:48:40 +02:00 |
|
|
|
dc41a7463c
|
feat(api-client-phase25): API um holidays endpoints [tsc:fail]
|
2026-05-23 08:47:18 +02:00 |
|
|
|
3ed9379e83
|
feat(role-permissions-page): Admin-Page zum Anzeigen welche Permissions welche Rolle hat [tsc:fail]
|
2026-05-23 08:46:36 +02:00 |
|
|
|
1f83bb7148
|
feat(holiday-calendar): Holiday-Tabelle + Page für admin (Feiertage definieren) [tsc:fail]
|
2026-05-23 08:45:57 +02:00 |
|
|
|
6f74757aff
|
feat(working-hours-config): appSettings.workingHoursPerDay für Tagesziel-Anzeige [tsc:fail]
|
2026-05-23 08:43:29 +02:00 |
|
|
|
c848a2ad52
|
feat(export-improvements): Export-Button auch in Customers + Projects [tsc:fail]
|
2026-05-23 08:40:07 +02:00 |
|
|
|
667d626397
|
feat(project-archive-icon): Archive-Icon-Button pro Project (Soft-Archive via active=fal [tsc:fail]
|
2026-05-23 08:38:18 +02:00 |
|
|
|
f8aac22d93
|
feat(billing-history-table): Billing-Page bekommt Mock-Rechnungshistorie [tsc:fail]
|
2026-05-23 08:36:50 +02:00 |
|
|
|
fce954b096
|
feat(workspace-switcher-stub): Workspace-Switcher-Dropdown (Stub mit single workspace) [tsc:fail]
|
2026-05-23 08:35:42 +02:00 |
|
|
|
1e97fb28f2
|
feat(notification-bell): Bell-Icon in Nav mit unread count + dropdown letzte 10 Audit [tsc:fail]
|
2026-05-23 08:35:21 +02:00 |
|
|
|
5b41a4d49f
|
feat(drag-resize-widgets): Dashboard-Widgets: resizable via drag-Handle (CSS-resize) [tsc:fail]
|
2026-05-23 08:31:53 +02:00 |
|
|
|
3da3a1eb05
|
feat(animated-transitions): Page-Transitions mit fade-in beim Route-Change [tsc:fail]
|
2026-05-23 08:30:30 +02:00 |
|
|
|
778b7426f2
|
feat(command-bar-actions): CommandPalette mit Aktionen (z.B. 'New TimeEntry', 'Toggle D [tsc:fail]
|
2026-05-23 08:29:17 +02:00 |
|
|
|
602ccce46e
|
feat(custom-themes): 3 Color-Themes wählbar (Ember/Ocean/Forest) [tsc:fail]
|
2026-05-23 08:28:06 +02:00 |
|
|
|
62e135bc04
|
feat(workspace-logo): Logo-Feld auf appSettings + Anzeige in Nav [tsc:fail]
|
2026-05-23 08:27:37 +02:00 |
|
|
|
7651e9777b
|
feat(screen-recording-attach-stub): 'Screen-Recording aufnehmen' Stub-Button (kein echtes record [tsc:fail]
|
2026-05-23 08:23:47 +02:00 |
|
|
|
bfae276a1e
|
feat(ui-polish): Globale UI-Verbesserungen (hover-states, focus-rings, transi [tsc:fail]
|
2026-05-23 08:21:45 +02:00 |
|
|
|
2ef0824fb5
|
feat(project-favicons): Pro Project ein favicon (emoji oder initial) [tsc:fail]
|
2026-05-23 08:21:37 +02:00 |
|
|
|
1150dd635f
|
feat(popout-tracker): Active-Timer als Popup-Window (window.open) [tsc:fail]
|
2026-05-23 08:19:25 +02:00 |
|
|
|
61d337844c
|
feat(voice-input-stub): Voice-Input-Stub via Web Speech API für TimeEntry descriptio [tsc:fail]
|
2026-05-23 08:18:05 +02:00 |
|
|
|
8248eb910f
|
feat(router-phase21): Mount /templates Route + Nav-Link + UndoStack global [tsc:fail]
|
2026-05-23 08:16:43 +02:00 |
|
|
|
e5877d05d6
|
feat(time-entry-templates-page): UI-Page für TimeEntry-Templates CRUD [tsc:fail]
|
2026-05-23 08:14:55 +02:00 |
|
|
|
f7cc7eb8fe
|
feat(color-coded-customer-rows): Customer-Rows mit Hash-basierter Pastell-Background-Color [tsc:fail]
|
2026-05-23 08:13:58 +02:00 |
|
|
|
dc905cdf10
|
feat(smart-rounding-on-input): Bei Time-Entry-Submit: round endTime auf appSettings.roundin [tsc:fail]
|
2026-05-23 08:12:10 +02:00 |
|
|
|
2d04a9ae8c
|
feat(snippet-shortcuts): Snippet-Expander: ';daily' → 'Daily standup', ';mtg' → 'Meet [tsc:fail]
|
2026-05-23 08:10:14 +02:00 |
|
|
|
fb67391eb8
|
feat(keyboard-undo-stack): Ctrl+Z für letzte delete-Action (in-memory undo-stack) [tsc:fail]
|
2026-05-23 08:10:01 +02:00 |
|
|
|
3cfe79a523
|
feat(api-client-phase20): API: pinned-customers + budget-update Endpoints [tsc:fail]
|
2026-05-23 08:08:44 +02:00 |
|
|
|
fc54ffeb58
|
feat(budget-alerts): Toast-Warning bei Project-Budget >80% und >100% [tsc:fail]
|
2026-05-23 08:08:01 +02:00 |
|
|
|
6fed550736
|
feat(github-link-on-entries): GitHub-Link-Feld pro TimeEntry (z.B. PR-URL) [tsc:fail]
|
2026-05-23 08:06:13 +02:00 |
|
|
|
b50cec4fe5
|
feat(slack-integration-stub): Slack-Integration-Stub Card auf Integrations-Page [tsc:fail]
|
2026-05-23 08:03:40 +02:00 |
|
|
|
04a9f3e014
|
feat(recurring-time-entries): Template-System für wiederkehrende Entries (z.B. Daily-Stand [tsc:fail]
|
2026-05-23 08:02:18 +02:00 |
|
|
|
94a5b451dc
|
feat(time-budget-per-project): Budget-Feld (Stunden) pro Project + Anzeige used/total [tsc:fail]
|
2026-05-23 08:00:25 +02:00 |
|
|
|
002007a4c8
|
feat(router-phase19): Mount invitations + accept-invite public route [tsc:fail]
|
2026-05-23 07:49:19 +02:00 |
|
|
|
8b1755b085
|
feat(api-client-phase19): API erweitern um invitations, accept, presence [tsc:fail]
|
2026-05-23 07:48:04 +02:00 |
|
|
|
739e957d8d
|
feat(search-history): Letzte 10 Sucheinträge des Users persistieren (localStorage) [tsc:fail]
|
2026-05-23 07:46:30 +02:00 |
|
|
|
f695a65d9d
|
feat(invitation-flow): User-Invites: admin sendet email, recipient setzt Passwort [tsc:fail]
|
2026-05-23 07:44:43 +02:00 |
|
|
|
ac922348ba
|
feat(router-phase18): Mount + UI-Routen für api-keys, comments [tsc:fail]
|
2026-05-23 07:37:22 +02:00 |
|
|
|
f299a57da9
|
feat(api-client-phase18): API um apikeys + audit-filters + comments erweitern [tsc:fail]
|
2026-05-23 07:36:10 +02:00 |
|
|
|
dc9b42d601
|
feat(idle-detection): Idle-Detection: nach 5min Inaktivität Active-Timer pausieren [tsc:fail]
|
2026-05-23 07:34:24 +02:00 |
|
|
|
050a369615
|
feat(audit-log-filters): Audit-Log mit Filter (user, action, date-range) [tsc:fail]
|
2026-05-23 07:32:56 +02:00 |
|
|
|
e4e24c22cb
|
feat(api-key-management): API-Keys für users (für REST-Programmzugriff) [tsc:fail]
|
2026-05-23 07:31:45 +02:00 |
|
|
|
fd6e79c795
|
feat(api-client-phase17): API um bulk-rename, customer-merge erweitert [tsc:fail]
|
2026-05-23 07:29:02 +02:00 |
|
|
|
9a6cb779ee
|
feat(time-entry-quick-edit): Inline-Edit für TimeEntry-Description (Klick auf Description [tsc:fail]
|
2026-05-23 07:28:08 +02:00 |
|
|
|
738acb36a6
|
feat(smart-filter-suggestions): Saved-Views-Vorschläge basierend auf häufig benutzten Filter [tsc:fail]
|
2026-05-23 07:26:25 +02:00 |
|
|
|
90a66efc76
|
feat(customer-merge): Merge zwei Customers: source-Projects auf target umhängen, d [tsc:fail]
|
2026-05-23 07:24:24 +02:00 |
|
|
|
7d65d8bdab
|
feat(batch-rename-projects): Bulk-Select + rename Projects via Mutation [tsc:fail]
|
2026-05-23 07:21:57 +02:00 |
|
|
|
fb6adcf85a
|
feat(calendar-month-view): Monatsansicht für TimeEntries (Grid 6 weeks × 7 days) [tsc:fail]
|
2026-05-23 07:19:49 +02:00 |
|
|
|
fb3441cb5a
|
feat(api-client-phase16): API um time-entry-templates erweitert [tsc:fail]
|
2026-05-23 07:17:07 +02:00 |
|
|
|
c067da74f9
|
feat(dark-mode-improvements): Dark-Mode CSS-Polish (bessere Kontraste in Tables, Forms) [tsc:fail]
|
2026-05-23 07:16:21 +02:00 |
|
|
|
ce80e5d637
|
feat(recent-projects-quick-access): Recent-Projects-Widget für schnellen Project-Select [tsc:fail]
|
2026-05-23 07:15:09 +02:00 |
|
|
|
6f5c19e929
|
feat(smart-suggestions): Auto-suggest Description basierend auf letzten Einträgen [tsc:fail]
|
2026-05-23 07:12:53 +02:00 |
|
|
|
ace589baee
|
feat(pinned-customers): Star/Pin Customers an die Top der Liste [tsc:fail]
|
2026-05-23 07:10:42 +02:00 |
|
|
|
939d72a593
|
feat(router-phase15): Mount neue routes [tsc:fail]
|
2026-05-23 07:07:13 +02:00 |
|
|
|
2c1bb126b4
|
feat(api-client-phase15): API um phase15 endpoints erweitert [tsc:fail]
|
2026-05-23 07:05:41 +02:00 |
|
|
|
df033a7b84
|
feat(password-reset): Password-Reset-Flow (Request + Set new via token) [tsc:fail]
|
2026-05-23 07:04:26 +02:00 |
|
|
|
d7a4c1ff85
|
feat(saved-views): Saved-Filter-Views für TimeEntries (named presets) [tsc:fail]
|
2026-05-23 07:00:45 +02:00 |
|
|
|
f2c38740b3
|
feat(dashboard-customization): Dashboard-Widget-Order via drag (oder simpler: visibility-to [tsc:fail]
|
2026-05-23 06:54:03 +02:00 |
|
|
|
5a3619b2ed
|
feat(time-spent-widget): Time-Spent-Summary-Widget (Today/Week/Month total) sidebar [tsc:fail]
|
2026-05-23 06:52:08 +02:00 |
|
|
|
237166bff4
|
feat(quick-add-popover): Quick-Add Popover (TimeEntry) im Nav-Bar via 'N'-Taste [tsc:fail]
|
2026-05-23 06:51:43 +02:00 |
|
|
|
b1e58fd030
|
feat(markdown-editor): Markdown-Editor mit Live-Preview für notes [tsc:fail]
|
2026-05-23 06:50:18 +02:00 |
|
|
|
09c7c6a6de
|
feat(kpi-comparison): Dashboard KPI-Karten mit Vergleich zur Vorwoche [tsc:fail]
|
2026-05-23 06:47:56 +02:00 |
|
|
|
9c1256e131
|
feat(aria-improvements): Accessibility-Improvements (ARIA labels) in Nav + Forms [tsc:fail]
|
2026-05-23 06:46:21 +02:00 |
|
|
|
5b51057d2a
|
feat(in-app-changelog): Changelog-Modal mit Versions-History [tsc:fail]
|
2026-05-23 06:45:30 +02:00 |
|
|
|
c04a8de450
|
feat(breadcrumb-navigation): Breadcrumb-Komponente, top der Detail-Pages [tsc:fail]
|
2026-05-23 06:44:46 +02:00 |
|
|
|
419fcb2732
|
feat(undo-toast): Toast mit Undo-Action für deletes [tsc:fail]
|
2026-05-23 06:43:08 +02:00 |
|
|
|
d03cb2491b
|
feat(router-phase12): App + routes/index für /invoices [tsc:fail]
|
2026-05-23 06:41:11 +02:00 |
|
|
|
b829f10a41
|
feat(api-client-phase12): API um invoices erweitern [tsc:fail]
|
2026-05-23 06:39:11 +02:00 |
|
|
|
b9ac449153
|
feat(app-version-display): Version-Badge im Footer (aus package.json) [tsc:fail]
|
2026-05-23 06:38:32 +02:00 |
|
|
|
985f914260
|
feat(user-avatars): Avatar-Component (Initialen-Badge) + überall einsetzen [tsc:fail]
|
2026-05-23 06:37:40 +02:00 |
|
|
|
68158b7cb7
|
feat(time-rounding-rules): Settings-Option: Rundung für Time-Entries (5/15/30 min) [tsc:fail]
|
2026-05-23 06:36:29 +02:00 |
|
|
|
c0e8e3611e
|
feat(invoicing-stub): Invoices-Page (read-only stub generated from billable time-e [tsc:fail]
|
2026-05-23 06:35:10 +02:00 |
|
|
|
7486e687da
|
feat(api-client-phase11): API um phase11 endpoints erweitern [tsc:fail]
|
2026-05-23 06:31:22 +02:00 |
|
|
|
2a43f370b5
|
feat(pdf-export-stub): PDF-Export-Endpoint für Reports (Stub — generiert text mit . [tsc:fail]
|
2026-05-23 06:30:37 +02:00 |
|
|
|
c3bdf1e5f4
|
feat(project-cloning): Project-Clone Endpoint + UI-Button [tsc:fail]
|
2026-05-23 06:29:04 +02:00 |
|
|
|
785b16b924
|
feat(customer-archive): Soft-archive von Customers (toggle active=false) + Filter [tsc:fail]
|
2026-05-23 06:27:29 +02:00 |
|
|
|
864ef03ca4
|
feat(time-entry-csv-import): TimeEntries-CSV-Import (multipart) [tsc:fail]
|
2026-05-23 06:26:17 +02:00 |
|
|
|
e1ddeee598
|
feat(onboarding-tour): Onboarding-Tour-Component (intro.js-Style overlay) [tsc:fail]
|
2026-05-23 06:23:13 +02:00 |
|
|
|
54fa5ccc3b
|
feat(router-phase10): App + routes/index für /project-templates [tsc:fail]
|
2026-05-23 06:20:28 +02:00 |
|
|
|
5b1f87e2b9
|
feat(api-client-phase10): API um project-templates erweitern [tsc:fail]
|
2026-05-23 06:19:32 +02:00 |
|
|
|
5b48d79516
|
feat(keyboard-help-modal): Help-Modal mit Keyboard-Shortcuts (?-Hotkey) [tsc:fail]
|
2026-05-23 06:18:47 +02:00 |
|
|
|
1d68925198
|
feat(language-toggle): i18n-Stub mit DE/EN-Toggle (localStorage) [tsc:fail]
|
2026-05-23 06:17:36 +02:00 |
|
|
|
087ee2c83a
|
feat(project-templates): Wiederverwendbare Project-Templates (admin) [tsc:fail]
|
2026-05-23 06:16:21 +02:00 |
|
|
|
42f57beb08
|
feat(customer-tags): Tags-Feld bei Customers + Filter-by-Tag [tsc:fail]
|
2026-05-23 06:14:38 +02:00 |
|
|
|
ff82a45c65
|
feat(markdown-notes-time-entry): Markdown-Notes-Feld pro Time-Entry + Render in Liste [tsc:fail]
|
2026-05-23 06:13:06 +02:00 |
|
|
|
c438b8c95e
|
feat(router-phase9): App + routes/index für phase9 Routes [tsc:fail]
|
2026-05-23 06:08:29 +02:00 |
|
|
|
738dab80d5
|
feat(api-client-phase9): API um Webhooks endpoints erweitert [tsc:fail]
|
2026-05-23 06:06:54 +02:00 |
|
|
|
43ad957b4b
|
feat(integrations-page): Integrations-Page mit Slack/Discord/Webhook-Cards [tsc:fail]
|
2026-05-23 06:06:07 +02:00 |
|
|
|
584801185a
|
feat(billing-stub): Plans-Page mit Pricing-Tiers (UI only, kein Stripe) [tsc:fail]
|
2026-05-23 06:05:31 +02:00 |
|
|
|
c795bca6ed
|
feat(two-factor-auth-stub): 2FA-Setup-Page (TOTP-Stub, kein realer verify yet) [tsc:fail]
|
2026-05-23 06:04:42 +02:00 |
|
|
|
791e6069d6
|
feat(webhooks-config): Outgoing-Webhooks Tabelle + CRUD + UI [tsc:fail]
|
2026-05-23 06:04:08 +02:00 |
|
|
|
4deb4d35e9
|
feat(api-client-phase8): API um Phase-8 endpoints [tsc:fail]
|
2026-05-23 05:59:48 +02:00 |
|
|
|
23c95940e6
|
feat(project-stats-page): Project-Stats: Stunden total, monthly chart, top contributor [tsc:fail]
|
2026-05-23 05:59:05 +02:00 |
|
|
|
454b85b4e2
|
feat(account-deletion): User kann eigenes Account löschen (Profile-Page) [tsc:fail]
|
2026-05-23 05:57:27 +02:00 |
|