Your Name
5300ceeb12
feat: auto-backup UI and window close hook
2026-02-20 15:41:38 +02:00
Your Name
875d3ca23b
feat: comprehensive export with all tables and auto-backup command
2026-02-20 15:40:02 +02:00
Your Name
fa7b70aa61
feat: rounding visibility in invoices and reports
2026-02-20 15:37:20 +02:00
Your Name
773ba1d338
feat: rounding visibility indicators on entry rows
2026-02-20 15:36:07 +02:00
Your Name
a41ce44f13
feat: time-of-day heatmap in reports patterns tab
2026-02-20 15:32:20 +02:00
Your Name
ace66a6093
feat: project health badges and attention section
2026-02-20 15:32:14 +02:00
Your Name
3fd389da11
feat: weekly comparison indicators and sparklines on dashboard
2026-02-20 15:32:07 +02:00
Your Name
159bb927af
feat: receipt thumbnails, lightbox, and file picker for expenses
2026-02-20 15:25:18 +02:00
Your Name
29f29e3368
feat: receipt lightbox component with zoom and focus trap
2026-02-20 15:23:11 +02:00
Your Name
991866f017
feat: global shortcut for quick entry dialog
2026-02-20 15:20:27 +02:00
Your Name
d4fa17d315
feat: global quick entry dialog component
2026-02-20 15:18:34 +02:00
Your Name
cb1c6c9b5d
feat: timesheet row persistence and copy last week
2026-02-20 15:17:01 +02:00
Your Name
a3ea37baa1
feat: timesheet row persistence backend
2026-02-20 15:15:50 +02:00
Your Name
54f75c15ed
feat: entry template management in settings
2026-02-20 15:10:48 +02:00
Your Name
14c45c67e5
feat: entry template picker and save-as-template in entries view
2026-02-20 15:09:37 +02:00
Your Name
15c8db6572
feat: entry templates pinia store
2026-02-20 15:07:18 +02:00
Your Name
dcfcdaf1b0
feat: entry templates CRUD backend
2026-02-20 15:06:50 +02:00
Your Name
6e05ddcf89
feat: cascade delete dialog for clients with dependency counts
2026-02-20 15:02:39 +02:00
Your Name
529461f12c
feat: client cascade delete with dependency counts
2026-02-20 15:01:33 +02:00
Your Name
fb38d98612
feat: smart timer safety net - save dialog on stop without project
2026-02-20 14:58:02 +02:00
Your Name
115bdd33db
feat: timer save dialog for no-project and long-timer scenarios
2026-02-20 14:56:17 +02:00
Your Name
4589fea5ce
feat: use batch save for invoice items
2026-02-20 14:55:17 +02:00
Your Name
522efbf230
feat: batch invoice items save with transaction
2026-02-20 14:54:37 +02:00
Your Name
43bd3b9b41
fix: independent try/catch per onboarding detection call
2026-02-20 14:47:26 +02:00
Your Name
35e97cbe7b
feat: standardize error handling across all stores
2026-02-20 14:46:56 +02:00
Your Name
25c6c55eb2
feat: use unified error handler in entries store
2026-02-20 14:43:10 +02:00
Your Name
1f21cd61c3
feat: unified error handler with retry for transient errors
2026-02-20 14:42:30 +02:00
Your Name
3968a818c5
feat: persistent notifications toggle in settings
2026-02-20 14:40:50 +02:00
Your Name
85b39e41f6
feat: toast undo button and hover/focus pause
2026-02-20 14:38:34 +02:00
Your Name
24b3caf0da
feat: toast auto-dismiss with undo and pause support
2026-02-20 14:38:08 +02:00
Your Name
6ed462853c
docs: 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
dea742707f
docs: 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
a3c0d43f67
feat: add tour store for guided walkthrough state
2026-02-20 09:36:26 +02:00
Your Name
78026c8bf0
chore: tidy up project structure and normalize formatting
2026-02-19 22:43:14 +02:00
Your Name
b8239c6e1b
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
4462d832d2
fix: 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
edccc12c34
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
5680194ef4
feat: load invoice templates from JSON files in data/templates directory
2026-02-18 15:12:30 +02:00
Your Name
08d61b40a0
fix: delete invoice_items before invoice to prevent FK constraint failure
2026-02-18 15:07:43 +02:00
Your Name
6e00b8b8a3
fix: make template picker full-screen with fixed positioning so buttons are visible
2026-02-18 15:05:02 +02:00
Your Name
f46424141d
feat: rewrite InvoicePreview with 15 unique typographic layouts
2026-02-18 14:50:49 +02:00
Your Name
fd4cc29d53
feat: rewrite PDF renderer with 15 unique typographic layouts
2026-02-18 14:45:38 +02:00
Your Name
f40cc97668
feat: add two-step invoice flow with full-screen template picker
2026-02-18 14:43:55 +02:00
Your Name
a313477cd7
feat: update invoicePdf wrapper with new default template ID
2026-02-18 14:41:23 +02:00
Your Name
c5380568ca
feat: rewrite invoice template configs with design-doc IDs and colors
2026-02-18 14:39:01 +02:00
Your Name
886a2b100e
feat: add template_id to Invoice interface and updateInvoiceTemplate action
2026-02-18 14:38:14 +02:00
Your Name
cca06e851b
feat: add template_id column to invoices table and update_invoice_template command
2026-02-18 14:37:26 +02:00
Your Name
9e9c0c78f1
docs: add invoice templates v2 implementation plan
2026-02-18 14:32:38 +02:00
Your Name
5e47700c93
docs: add invoice templates v2 complete redesign design doc
2026-02-18 14:28:41 +02:00
Your Name
162acccc2c
feat: integrate template picker into invoice create and preview views
2026-02-18 13:35:11 +02:00
Your Name
06dc063125
feat: add business identity settings for invoice branding
2026-02-18 13:34:44 +02:00
Your Name
3cadb42f8b
feat: add InvoicePreview.vue with all 7 header styles and 5 table styles
2026-02-18 13:30:27 +02:00
Your Name
673da2aab8
feat: add InvoiceTemplatePicker split-pane component
2026-02-18 13:28:40 +02:00
Your Name
3928904c40
feat: add config-driven jsPDF invoice renderer with all header and table styles
2026-02-18 13:26:11 +02:00
Your Name
f1a5428dd5
feat: add 15 invoice template configs and registry
2026-02-18 13:16:36 +02:00
Your Name
50734dee03
docs: 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
a527a5ceca
docs: 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
32ee6284da
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
04d4220604
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
bd0dbaf91d
feat: add animation CSS classes, keyframes, and reduced-motion support
2026-02-18 11:22:32 +02:00
Your Name
5630751adc
feat: install @vueuse/motion and create spring presets
2026-02-18 11:19:52 +02:00
Your Name
6b7dcc7317
docs: add motion system design for animations and micro-interactions
2026-02-18 11:07:57 +02:00
Your Name
c7b9822e48
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
87b1853f39
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
787f8bbacf
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
7e7e04e4d4
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
f6955d1bd7
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
af95a53c4e
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
e143b069db
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
28d199bddc
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
b650e981fc
feat: add AppTagInput multi-select tag component
2026-02-18 10:35:18 +02:00
Your Name
32d22bf877
feat: add markdown rendering for entry descriptions
2026-02-18 10:35:12 +02:00
Your Name
ba185a1ac9
feat: add duplicate, copy previous day/week, and repeat entry
2026-02-18 10:35:06 +02:00
Your Name
318570295f
feat: add theme customization with accent colors and light mode
2026-02-18 10:34:59 +02:00
Your Name
2ddd2ce5d8
feat: add global-shortcut plugin and mini timer window commands
2026-02-18 02:06:07 +02:00
Your Name
f0885921ae
feat: add goals, profitability, timesheet, and import commands
2026-02-18 02:04:10 +02:00
Your Name
1ee4562647
feat: add favorites table, CRUD commands, and Pinia store
2026-02-18 02:02:57 +02:00
Your Name
85c20247f5
feat: add project budgets and rounding override columns
2026-02-18 02:02:13 +02:00
Your Name
26f1b19dde
feat: add tags table, CRUD commands, and Pinia store
2026-02-18 02:01:04 +02:00
Your Name
afa8bce2c9
fix: dynamic currency symbols and integrated datetime picker
...
- Replace all hardcoded prefix="$" with :prefix="getCurrencySymbol()"
in Settings, Projects, and Invoices views
- Replace hardcoded ($) labels with dynamic currency symbol
- Extend AppDatePicker with showTime prop + hour/minute v-models
for integrated date+time selection
- Simplify Entries.vue to use single AppDatePicker with showTime
instead of separate hour/minute inputs
2026-02-17 23:53:45 +02:00
Your Name
5ad901ca4f
fix: add viewport margin to all modal dialogs
2026-02-17 23:41:59 +02:00
Your Name
137be610f8
feat: replace native datetime-local with custom date picker + time inputs
2026-02-17 23:41:24 +02:00
Your Name
519bdabe61
feat: replace all hardcoded en-US and $ formatting with locale-aware helpers
2026-02-17 23:39:31 +02:00
Your Name
fe0b20f247
feat: replace native number inputs with AppNumberInput across all views
2026-02-17 23:36:02 +02:00
Your Name
8112fe8fd6
feat: add locale and currency settings with searchable dropdowns
2026-02-17 23:35:27 +02:00
Your Name
a13dff96c8
fix: apply default hourly rate from settings when creating new projects
2026-02-17 23:35:24 +02:00
Your Name
7d43f02e59
feat: add AppNumberInput component with press-and-hold repeat
2026-02-17 23:33:13 +02:00
Your Name
06d646c8de
feat: add searchable prop to AppSelect for filtering long option lists
2026-02-17 23:33:11 +02:00
Your Name
7fed47e54f
feat: add comprehensive locale utility with 140+ locales and 120+ currencies
2026-02-17 23:31:04 +02:00
Your Name
21f762edd9
docs: add UI improvements batch implementation plan
2026-02-17 23:22:40 +02:00
Your Name
93bc6713b4
docs: add UI improvements batch design (locale, datetime picker, number input, etc.)
2026-02-17 23:17:00 +02:00
Your Name
e3f7e2f470
feat: add Clients view with card grid, dialogs, and billing details
2026-02-17 22:57:08 +02:00
Your Name
c949a08981
feat: add Client billing fields to store, /clients route, and reorder NavRail
2026-02-17 22:54:31 +02:00
Your Name
5ab96769ac
feat: add client billing fields to database and Rust backend
2026-02-17 22:52:51 +02:00
Your Name
29a0510192
docs: add Clients view and NavRail reorg implementation plan
2026-02-17 22:48:22 +02:00
Your Name
0901673c28
docs: add Clients view and NavRail reorg design
2026-02-17 22:44:50 +02:00
Your Name
3dbe4b4ac8
fix: make custom dropdowns and date pickers respect UI zoom setting
...
Teleported panels read zoom from #app and apply it to their own style,
with position coordinates divided by the zoom factor so they align
correctly with the zoomed trigger elements.
2026-02-17 22:35:42 +02:00
Your Name
40f87c9e04
feat: replace all native selects and date inputs with custom components
2026-02-17 22:27:51 +02:00
Your Name
b9aace912b
feat: add AppDatePicker custom calendar component
2026-02-17 22:24:47 +02:00
Your Name
8cdd30b9e4
feat: add AppSelect custom dropdown component
2026-02-17 22:22:43 +02:00