Commit Graph

110 Commits

Author SHA1 Message Date
Your Name
c60246413b client cascade delete with dependency counts 2026-02-20 15:01:33 +02:00
Your Name
36b9cbcc54 smart timer safety net - save dialog on stop without project 2026-02-20 14:58:02 +02:00
Your Name
a9e6984009 timer save dialog for no-project and long-timer scenarios 2026-02-20 14:56:17 +02:00
Your Name
8f86a7e5b6 use batch save for invoice items 2026-02-20 14:55:17 +02:00
Your Name
f059dd0a92 batch invoice items save with transaction 2026-02-20 14:54:37 +02:00
Your Name
8ed76a1249 independent try/catch per onboarding detection call 2026-02-20 14:47:26 +02:00
Your Name
ece4abde97 standardize error handling across all stores 2026-02-20 14:46:56 +02:00
Your Name
342579a78a use unified error handler in entries store 2026-02-20 14:43:10 +02:00
Your Name
1a7b361a16 unified error handler with retry for transient errors 2026-02-20 14:42:30 +02:00
Your Name
525a93e218 persistent notifications toggle in settings 2026-02-20 14:40:50 +02:00
Your Name
a391c539f4 toast undo button and hover/focus pause 2026-02-20 14:38:34 +02:00
Your Name
b42c3d49d7 toast auto-dismiss with undo and pause support 2026-02-20 14:38:08 +02:00
Your Name
9677f99337 enhancement round 2 implementation plan - 34 tasks
Phase 1: Toast auto-dismiss/undo, unified error handling, onboarding
resilience, invoice batch save, smart timer safety net.
Phase 2: Client cascade delete, entry templates, timesheet persistence,
global quick entry, receipt management.
Phase 3: Dashboard comparison, project health, heatmap, rounding
visibility, complete export with auto-backup.
2026-02-20 14:29:25 +02:00
Your Name
7c69abd135 enhancement round 2 design - 15 feature proposals
Covers smart timer safety net, toast undo system, unified error
handling, onboarding resilience, invoice save reliability, global
quick entry, entry templates, timesheet persistence, client cascade,
receipt management, weekly comparison, project health cards, time
heatmap, rounding preview, and export scheduling. All features
designed for WCAG 2.2 AAA compliance.
2026-02-20 14:22:01 +02:00
Your Name
8330da5608 add tour store for guided walkthrough state 2026-02-20 09:36:26 +02:00
Your Name
5e313f3cea tidy up project structure and normalize formatting 2026-02-19 22:43:14 +02:00
Your Name
81f9386136 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
4f44ce48d2 mini timer window blank due to hash routing mismatch
The app uses createWebHashHistory but the mini timer window was
opened with WebviewUrl::App("/mini-timer") which sets the URL path,
not the hash fragment. Vue Router never matched the route, so the
Dashboard rendered in a 300x64 window (appearing blank). Now loads
root URL and sets window.location.hash via eval. Also shows/focuses
the main window when closing the mini timer.
2026-02-18 15:23:20 +02:00
Your Name
f78bfa81ec 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
fd2b24ebc2 load invoice templates from JSON files in data/templates directory 2026-02-18 15:12:30 +02:00
Your Name
1a7554e390 delete invoice_items before invoice to prevent FK constraint failure 2026-02-18 15:07:43 +02:00
Your Name
f329e20aa0 make template picker full-screen with fixed positioning so buttons are visible 2026-02-18 15:05:02 +02:00
Your Name
960fa5c791 rewrite InvoicePreview with 15 unique typographic layouts 2026-02-18 14:50:49 +02:00
Your Name
7de92d122e rewrite PDF renderer with 15 unique typographic layouts 2026-02-18 14:45:38 +02:00
Your Name
68a575fc3f add two-step invoice flow with full-screen template picker 2026-02-18 14:43:55 +02:00
Your Name
53f2449438 update invoicePdf wrapper with new default template ID 2026-02-18 14:41:23 +02:00
Your Name
9373d207a2 rewrite invoice template configs with design-doc IDs and colors 2026-02-18 14:39:01 +02:00
Your Name
f3b6bb0b21 add template_id to Invoice interface and updateInvoiceTemplate action 2026-02-18 14:38:14 +02:00
Your Name
b09e6d0fb6 add template_id column to invoices table and update_invoice_template command 2026-02-18 14:37:26 +02:00
Your Name
3b1e9a2004 add invoice templates v2 implementation plan 2026-02-18 14:32:38 +02:00
Your Name
cc3598f407 add invoice templates v2 complete redesign design doc 2026-02-18 14:28:41 +02:00
Your Name
41ddba5d13 integrate template picker into invoice create and preview views 2026-02-18 13:35:11 +02:00
Your Name
1eadc82db7 add business identity settings for invoice branding 2026-02-18 13:34:44 +02:00
Your Name
5308006578 add InvoicePreview.vue with all 7 header styles and 5 table styles 2026-02-18 13:30:27 +02:00
Your Name
efeba209cf add InvoiceTemplatePicker split-pane component 2026-02-18 13:28:40 +02:00
Your Name
978b3baec3 add config-driven jsPDF invoice renderer with all header and table styles 2026-02-18 13:26:11 +02:00
Your Name
6ea47e534f add 15 invoice template configs and registry 2026-02-18 13:16:36 +02:00
Your Name
873876a7ed add invoice templates implementation plan
9-task plan covering template config types, jsPDF renderer,
HTML preview component, template picker UI, Invoices.vue
integration, business identity settings, and polish passes.
2026-02-18 13:12:37 +02:00
Your Name
a57bdc9867 add invoice templates design document
15 visually distinct templates across 4 tiers (Professional
Essentials, Creative & Modern, Warm & Distinctive, Premium &
Specialized) with template config schema, picker UI design,
shared renderer architecture, and business identity support.
2026-02-18 13:07:39 +02:00
Your Name
1bb6619a17 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
85ef68c461 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
1bb1debad0 add animation CSS classes, keyframes, and reduced-motion support 2026-02-18 11:22:32 +02:00
Your Name
76f0c3cfd2 install @vueuse/motion and create spring presets 2026-02-18 11:19:52 +02:00
Your Name
6d17e488c3 add motion system design for animations and micro-interactions 2026-02-18 11:07:57 +02:00
Your Name
dff9ca60ff 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
16c46d4c42 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
7bef8f8723 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
17b6913677 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
278dac1f69 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
3792f38420 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