Your Name
361a1308b8
weekly comparison indicators and sparklines on dashboard
2026-02-20 15:32:07 +02:00
Your Name
81171bec1b
receipt thumbnails, lightbox, and file picker for expenses
2026-02-20 15:25:18 +02:00
Your Name
2b8f9415b3
receipt lightbox component with zoom and focus trap
2026-02-20 15:23:11 +02:00
Your Name
218277e899
global shortcut for quick entry dialog
2026-02-20 15:20:27 +02:00
Your Name
45764795b3
global quick entry dialog component
2026-02-20 15:18:34 +02:00
Your Name
44803a7f6d
timesheet row persistence and copy last week
2026-02-20 15:17:01 +02:00
Your Name
18d88bee6c
timesheet row persistence backend
2026-02-20 15:15:50 +02:00
Your Name
5c44327500
entry template management in settings
2026-02-20 15:10:48 +02:00
Your Name
304483e4f9
entry template picker and save-as-template in entries view
2026-02-20 15:09:37 +02:00
Your Name
eb8595f512
entry templates pinia store
2026-02-20 15:07:18 +02:00
Your Name
786085901f
entry templates CRUD backend
2026-02-20 15:06:50 +02:00
Your Name
15c858a2fb
cascade delete dialog for clients with dependency counts
2026-02-20 15:02:39 +02:00
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