Commit Graph

87 Commits

Author SHA1 Message Date
3902f3bd61 global quick entry dialog component 2026-02-20 15:18:34 +02:00
5fa4a9521f timesheet row persistence and copy last week 2026-02-20 15:17:01 +02:00
2c31f94e8f entry template management in settings 2026-02-20 15:10:48 +02:00
5eef5accf0 entry template picker and save-as-template in entries view 2026-02-20 15:09:37 +02:00
0a18c4cf2e entry templates pinia store 2026-02-20 15:07:18 +02:00
115b22ca47 cascade delete dialog for clients with dependency counts 2026-02-20 15:02:39 +02:00
a6d1c6fba5 smart timer safety net - save dialog on stop without project 2026-02-20 14:58:02 +02:00
68826529e4 timer save dialog for no-project and long-timer scenarios 2026-02-20 14:56:17 +02:00
0ff3260e8d use batch save for invoice items 2026-02-20 14:55:17 +02:00
ad8184bb65 independent try/catch per onboarding detection call 2026-02-20 14:47:26 +02:00
79211cac83 standardize error handling across all stores 2026-02-20 14:46:56 +02:00
c6e241ba09 use unified error handler in entries store 2026-02-20 14:43:10 +02:00
7bb62ee6aa unified error handler with retry for transient errors 2026-02-20 14:42:30 +02:00
039cfd518a persistent notifications toggle in settings 2026-02-20 14:40:50 +02:00
4e1ca8fd27 toast undo button and hover/focus pause 2026-02-20 14:38:34 +02:00
98b78106d2 toast auto-dismiss with undo and pause support 2026-02-20 14:38:08 +02:00
c187c67b06 add tour store for guided walkthrough state 2026-02-20 09:36:26 +02:00
9f44a1a697 tidy up project structure and normalize formatting 2026-02-19 22:43:14 +02:00
99be86a860 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
ffbbfe0df1 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
aa031f6103 make template picker full-screen with fixed positioning so buttons are visible 2026-02-18 15:05:02 +02:00
391c4cf49c rewrite InvoicePreview with 15 unique typographic layouts 2026-02-18 14:50:49 +02:00
e8a57397c0 rewrite PDF renderer with 15 unique typographic layouts 2026-02-18 14:45:38 +02:00
85aec09d1a add two-step invoice flow with full-screen template picker 2026-02-18 14:43:55 +02:00
b78c796d55 update invoicePdf wrapper with new default template ID 2026-02-18 14:41:23 +02:00
2278534afe rewrite invoice template configs with design-doc IDs and colors 2026-02-18 14:39:01 +02:00
6320b6d13c add template_id to Invoice interface and updateInvoiceTemplate action 2026-02-18 14:38:14 +02:00
098751b741 integrate template picker into invoice create and preview views 2026-02-18 13:35:11 +02:00
2aa3b2950b add business identity settings for invoice branding 2026-02-18 13:34:44 +02:00
c63e8577d6 add InvoicePreview.vue with all 7 header styles and 5 table styles 2026-02-18 13:30:27 +02:00
e35077aeb3 add InvoiceTemplatePicker split-pane component 2026-02-18 13:28:40 +02:00
bd9166a2f5 add config-driven jsPDF invoice renderer with all header and table styles 2026-02-18 13:26:11 +02:00
1ca757f8e1 add 15 invoice template configs and registry 2026-02-18 13:16:36 +02:00
69130dcd86 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
bb40e381da 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
71f1702340 add animation CSS classes, keyframes, and reduced-motion support 2026-02-18 11:22:32 +02:00
2a60f71c56 install @vueuse/motion and create spring presets 2026-02-18 11:19:52 +02:00
1e2d775e63 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
731ed0219c 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
13c2e04d70 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
8d910495f3 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
03080e3d6b 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
21c98f1cb2 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
c28c7371bb 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
c0cfd8848a 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
ca57ff2d6d add AppTagInput multi-select tag component 2026-02-18 10:35:18 +02:00
be48a44a6a add markdown rendering for entry descriptions 2026-02-18 10:35:12 +02:00
997e4b2a80 add duplicate, copy previous day/week, and repeat entry 2026-02-18 10:35:06 +02:00
3b7b02abaf add theme customization with accent colors and light mode 2026-02-18 10:34:59 +02:00
28ec9e66f7 add favorites table, CRUD commands, and Pinia store 2026-02-18 02:02:57 +02:00