Commit Graph

24 Commits

Author SHA1 Message Date
Your Name
7c7e1e8207 close button and CSV import parsing for Clockify/Harvest
Close button did nothing when "close to tray" was disabled - the
onCloseRequested handler lacked an explicit destroy call for the
non-tray path.

Clockify CSV import threw RangeError because locale-dependent date
formats (MM/DD/YYYY, DD.MM.YYYY, 12h time) were passed straight
to the Date constructor. Added flexible date/time parsers that
handle all Clockify export variants without relying on Date parsing.

Added dedicated Clockify mapper that prefers Duration (decimal)
column and a new Harvest CSV importer (date + decimal hours, no
start/end times).

Bump version to 1.0.1.
2026-02-21 14:56:53 +02:00
Your Name
55941a4d41 complete export/import cycle and remove sample data
Export now includes invoice_payments and recurring_invoices tables.
Import restored to use ID-based lookups and all fields for clients,
projects, tasks, and time entries. Added missing import support for
timeline_events, calendar_sources, calendar_events, invoice_payments,
and recurring_invoices. Export uses native save dialog instead of blob
download. Removed sample data seeding (seed.rs, UI, command).
2026-02-21 01:34:26 +02:00
Your Name
c4703dfe98 tooltips, two-column timer, font selector, tray behavior, icons, readme
- Custom tooltip directive (WCAG AAA) on every button in the app
- Two-column timer layout with sticky hero and recent entries sidebar
- Timer font selector with 16 monospace Google Fonts and live preview
- UI font selector with 15+ Google Fonts
- Close-to-tray and minimize-to-tray settings
- New app icons (no-glow variants), platform icon set
- Mini timer pop-out window
- Favorites strip with drag-reorder and inline actions
- README with feature documentation
- Remove tracked files that belong in gitignore
2026-02-21 01:15:57 +02:00
Your Name
5146d9e2a0 export with all tables and auto-backup command 2026-02-20 15:40:02 +02:00
Your Name
18d88bee6c timesheet row persistence backend 2026-02-20 15:15:50 +02:00
Your Name
786085901f entry templates CRUD backend 2026-02-20 15:06:50 +02:00
Your Name
c60246413b client cascade delete with dependency counts 2026-02-20 15:01:33 +02:00
Your Name
f059dd0a92 batch invoice items save with transaction 2026-02-20 14:54:37 +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
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
b09e6d0fb6 add template_id column to invoices table and update_invoice_template command 2026-02-18 14:37:26 +02:00
Your Name
b3f310d8e4 add global-shortcut plugin and mini timer window commands 2026-02-18 02:06:07 +02:00
Your Name
006d2028c1 add goals, profitability, timesheet, and import commands 2026-02-18 02:04:10 +02:00
Your Name
6ca526b348 add favorites table, CRUD commands, and Pinia store 2026-02-18 02:02:57 +02:00
Your Name
4ebfe3a442 add project budgets and rounding override columns 2026-02-18 02:02:13 +02:00
Your Name
f5e2aec698 add tags table, CRUD commands, and Pinia store 2026-02-18 02:01:04 +02:00
Your Name
c1984b7ec4 add client billing fields to database and Rust backend 2026-02-17 22:52:51 +02:00
Your Name
5072f96948 window dragging - use startDragging() API instead of data attribute 2026-02-17 21:36:30 +02:00
Your Name
4d02b88ebe persist window position and size between runs 2026-02-17 21:33:32 +02:00
Your Name
1b00cf294a portable storage - data directory next to exe 2026-02-17 21:33:26 +02:00
Your Name
8b1dc78132 initialize Tauri backend with SQLite database 2026-02-17 18:03:12 +02:00