Commit Graph

90 Commits

Author SHA1 Message Date
Your Name
a4fce3b7ab feat: receipt thumbnails, lightbox, and file picker for expenses 2026-02-20 15:25:18 +02:00
Your Name
7c8effb0a7 feat: receipt lightbox component with zoom and focus trap 2026-02-20 15:23:11 +02:00
Your Name
f337f8c28f feat: global shortcut for quick entry dialog 2026-02-20 15:20:27 +02:00
Your Name
96ef48000c feat: global quick entry dialog component 2026-02-20 15:18:34 +02:00
Your Name
c6f6b61503 feat: timesheet row persistence and copy last week 2026-02-20 15:17:01 +02:00
Your Name
f504241fc9 feat: entry template management in settings 2026-02-20 15:10:48 +02:00
Your Name
1e324ef0ca feat: entry template picker and save-as-template in entries view 2026-02-20 15:09:37 +02:00
Your Name
2292e4ff9e feat: entry templates pinia store 2026-02-20 15:07:18 +02:00
Your Name
fb41f67145 feat: cascade delete dialog for clients with dependency counts 2026-02-20 15:02:39 +02:00
Your Name
eb58794555 feat: smart timer safety net - save dialog on stop without project 2026-02-20 14:58:02 +02:00
Your Name
f0d8e066cb feat: timer save dialog for no-project and long-timer scenarios 2026-02-20 14:56:17 +02:00
Your Name
349b9eb95d feat: use batch save for invoice items 2026-02-20 14:55:17 +02:00
Your Name
4faac61901 fix: independent try/catch per onboarding detection call 2026-02-20 14:47:26 +02:00
Your Name
83a3ca1e93 feat: standardize error handling across all stores 2026-02-20 14:46:56 +02:00
Your Name
6c961b6c9f feat: use unified error handler in entries store 2026-02-20 14:43:10 +02:00
Your Name
8bcd81b4f0 feat: unified error handler with retry for transient errors 2026-02-20 14:42:30 +02:00
Your Name
6179c8fee8 feat: persistent notifications toggle in settings 2026-02-20 14:40:50 +02:00
Your Name
6df5485813 feat: toast undo button and hover/focus pause 2026-02-20 14:38:34 +02:00
Your Name
d83a832cb1 feat: toast auto-dismiss with undo and pause support 2026-02-20 14:38:08 +02:00
Your Name
2a1ed8d875 feat: add tour store for guided walkthrough state 2026-02-20 09:36:26 +02:00
Your Name
3dcbd4a888 chore: tidy up project structure and normalize formatting 2026-02-19 22:43:14 +02:00
Your Name
47eb1af7ab fix: mini timer renders via window label instead of hash routing
The mini timer window was blank because hash-based routing
(createWebHashHistory) doesn't work with Tauri's WebviewUrl path.
Now App.vue detects the mini timer by checking getCurrentWindow().label
=== 'mini-timer' and renders the MiniTimer component directly,
bypassing the router entirely.
2026-02-18 15:26:44 +02:00
Your Name
8c8de6a2a7 feat: load invoice templates from JSON files via backend
Templates are now loaded dynamically from data/templates/*.json
via the get_invoice_templates Tauri command instead of being
hardcoded in TypeScript. Preview and PDF renderer switch on
template.layout instead of template.id, allowing custom templates
to reuse built-in layouts with different colors.
2026-02-18 15:17:54 +02:00
Your Name
92749bdb63 fix: make template picker full-screen with fixed positioning so buttons are visible 2026-02-18 15:05:02 +02:00
Your Name
e3450ff92e feat: rewrite InvoicePreview with 15 unique typographic layouts 2026-02-18 14:50:49 +02:00
Your Name
efc9fce811 feat: rewrite PDF renderer with 15 unique typographic layouts 2026-02-18 14:45:38 +02:00
Your Name
c499acd17d feat: add two-step invoice flow with full-screen template picker 2026-02-18 14:43:55 +02:00
Your Name
056333c31c feat: update invoicePdf wrapper with new default template ID 2026-02-18 14:41:23 +02:00
Your Name
59e713f1ec feat: rewrite invoice template configs with design-doc IDs and colors 2026-02-18 14:39:01 +02:00
Your Name
ed8b0c0776 feat: add template_id to Invoice interface and updateInvoiceTemplate action 2026-02-18 14:38:14 +02:00
Your Name
0ecb4d80c1 feat: integrate template picker into invoice create and preview views 2026-02-18 13:35:11 +02:00
Your Name
d739033463 feat: add business identity settings for invoice branding 2026-02-18 13:34:44 +02:00
Your Name
cf4d64eced feat: add InvoicePreview.vue with all 7 header styles and 5 table styles 2026-02-18 13:30:27 +02:00
Your Name
98152984c1 feat: add InvoiceTemplatePicker split-pane component 2026-02-18 13:28:40 +02:00
Your Name
b05bd415fb feat: add config-driven jsPDF invoice renderer with all header and table styles 2026-02-18 13:26:11 +02:00
Your Name
185b20cab2 feat: add 15 invoice template configs and registry 2026-02-18 13:16:36 +02:00
Your Name
291429e1b8 refactor: migrate remaining dialogs to Vue Transition, remove old keyframes
Convert Settings, Invoices, IdlePrompt, AppTrackingPrompt, and
AppDiscard dialogs from animate-modal-enter CSS class to proper
<Transition name="modal"> wrappers for enter/leave animations.
Remove unused animate-modal-enter and animate-dropdown-enter keyframes.
2026-02-18 11:36:35 +02:00
Your Name
a3a6ab2fdf feat: add transitions and micro-interactions across all views
- Page transitions with slide-up/fade on route changes (App.vue)
- NavRail sliding active indicator with spring-like easing
- List enter/leave/move animations on Entries, Projects, Clients, Timer
- Modal enter/leave transitions with scale+fade on all dialogs
- Dropdown transitions with overshoot on all select/picker components
- Button feedback (scale on hover/active), card hover lift effects
- Timer pulse on start, glow on stop, floating empty state icons
- Content fade-in on Dashboard, Reports, Calendar, Timesheet
- Tag chip enter/leave animations in AppTagInput
- Progress bar smooth width transitions
- Implementation plan document
2026-02-18 11:33:58 +02:00
Your Name
c66e71f57d feat: add animation CSS classes, keyframes, and reduced-motion support 2026-02-18 11:22:32 +02:00
Your Name
31bb66dbfd feat: install @vueuse/motion and create spring presets 2026-02-18 11:19:52 +02:00
Your Name
55505b2b6b feat: add daily/weekly goals, streaks, and time rounding
Settings Timer tab now has daily/weekly goal hour inputs. Dashboard
shows goal progress bars and streak counter. Settings Billing tab
has rounding toggle with increment and method selectors. New
rounding.ts utility for nearest/up/down time rounding.
2026-02-18 10:51:56 +02:00
Your Name
8c56867764 feat: add budget progress indicators to Projects and Dashboard
Project edit dialog includes budget hours and amount fields. Project
cards show progress bars with color-coded status. Dashboard displays
budget alerts section for projects exceeding 75% of budget.
2026-02-18 10:51:47 +02:00
Your Name
5e608a98e6 feat: integrate tags in Timer and Entries views
Timer shows tag selector below description, saves tags on stop.
Entries table displays tag chips per row with color coding.
Tags loaded from store on mount.
2026-02-18 10:51:39 +02:00
Your Name
8eb2d135c8 feat: add data import from CSV and JSON
Import utility with CSV parser, Toggl/Clockify format mapping, and
generic CSV column mapping. Settings Data tab has import UI with
file picker, format selector, preview table, and import execution.
2026-02-18 10:46:33 +02:00
Your Name
bd3e0ba5a6 feat: enhance floating mini timer with controls and pop-out button
MiniTimer shows project color dot, name, elapsed time, stop button,
and expand-to-main button. Timer.vue has pop-out button when running.
2026-02-18 10:46:25 +02:00
Your Name
5ac890aad4 feat: add global keyboard shortcuts for timer toggle and show app
Register CmdOrCtrl+Shift+T (toggle timer) and CmdOrCtrl+Shift+Z
(show app) via tauri-plugin-global-shortcut. Shortcut keys are
configurable in Settings Timer tab. Shortcuts re-register on change.
2026-02-18 10:46:18 +02:00
Your Name
8d0f6c6c7d feat: add profitability tab and favorites strip
Reports view now has Hours/Profitability tabs with per-project revenue
table. Timer view shows favorites strip for quick project selection
and a Save as Favorite button next to the description input.
2026-02-18 10:46:10 +02:00
Your Name
46ce6d119d feat: add Calendar, Timesheet, and MiniTimer views
Calendar shows weekly time-block layout with hour rows, entry positioning,
current time indicator, and week navigation. Timesheet provides a weekly
grid with project/task rows, day columns, totals, and add-row functionality.
MiniTimer is a minimal always-on-top timer display for the floating window.
2026-02-18 10:39:08 +02:00
Your Name
838cb55c8e feat: add AppTagInput multi-select tag component 2026-02-18 10:35:18 +02:00
Your Name
72a86cf2c9 feat: add markdown rendering for entry descriptions 2026-02-18 10:35:12 +02:00