v0.3.1: Time tracking, file attachments, external sync, email attachments
Major features:
- Time tracking with focus timer, time sessions model, and time summary UI
- File attachments system: model, repository, blob sync, Tauri commands, frontend UI
- External sync: iCal and vCard import support with dedicated command layer
- Email attachment extraction pipeline via IMAP
Supporting changes:
- Migrations 035-038 (time_tracking, attachments, external_sync, sync_trigger_fixes)
- Sync service: blob sync, improved pull/push/apply, scheduler enhancements
- OAuth credential improvements, expanded search and task repos
- Frontend: new JS modules (focus-timer, time-tracking, time-summary, attachments, import-external)
- Weekly review enhancements, day planning updates, project render improvements
- Android target scaffolding, Apple project config updates
- Cleaned up todo docs and removed completed archive
- Co-Authored-By
- Claude Opus 4.6 <noreply@anthropic.com>
190 files changed,
+11769 insertions,
-1506 deletions
| 1905 |
1905 |
|
"goingson-core",
|
| 1906 |
1906 |
|
"goingson-db-sqlite",
|
| 1907 |
1907 |
|
"goingson-plugin-runtime",
|
|
1908 |
+ |
"ical",
|
| 1908 |
1909 |
|
"icalendar",
|
| 1909 |
1910 |
|
"keyring",
|
| 1910 |
1911 |
|
"lettre",
|
|
1912 |
+ |
"libsqlite3-sys",
|
| 1911 |
1913 |
|
"mailparse",
|
| 1912 |
1914 |
|
"notify",
|
| 1913 |
1915 |
|
"notify-debouncer-mini",
|
| 1914 |
1916 |
|
"open",
|
|
1917 |
+ |
"openssl",
|
| 1915 |
1918 |
|
"parking_lot",
|
| 1916 |
1919 |
|
"rand 0.8.5",
|
| 1917 |
1920 |
|
"reqwest 0.12.28",
|
| 2313 |
2316 |
|
"cc",
|
| 2314 |
2317 |
|
]
|
| 2315 |
2318 |
|
|
|
2319 |
+ |
[[package]]
|
|
2320 |
+ |
name = "ical"
|
|
2321 |
+ |
version = "0.11.0"
|
|
2322 |
+ |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2323 |
+ |
checksum = "9b7cab7543a8b7729a19e2c04309f902861293dcdae6558dfbeb634454d279f6"
|
|
2324 |
+ |
dependencies = [
|
|
2325 |
+ |
"thiserror 1.0.69",
|
|
2326 |
+ |
]
|
|
2327 |
+ |
|
| 2316 |
2328 |
|
[[package]]
|
| 2317 |
2329 |
|
name = "icalendar"
|
| 2318 |
2330 |
|
version = "0.16.17"
|
| 3507 |
3519 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 3508 |
3520 |
|
checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
|
| 3509 |
3521 |
|
|
|
3522 |
+ |
[[package]]
|
|
3523 |
+ |
name = "openssl-src"
|
|
3524 |
+ |
version = "300.5.5+3.5.5"
|
|
3525 |
+ |
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3526 |
+ |
checksum = "3f1787d533e03597a7934fd0a765f0d28e94ecc5fb7789f8053b1e699a56f709"
|
|
3527 |
+ |
dependencies = [
|
|
3528 |
+ |
"cc",
|
|
3529 |
+ |
]
|
|
3530 |
+ |
|
| 3510 |
3531 |
|
[[package]]
|
| 3511 |
3532 |
|
name = "openssl-sys"
|
| 3512 |
3533 |
|
version = "0.9.112"
|
| 3515 |
3536 |
|
dependencies = [
|
| 3516 |
3537 |
|
"cc",
|
| 3517 |
3538 |
|
"libc",
|
|
3539 |
+ |
"openssl-src",
|
| 3518 |
3540 |
|
"pkg-config",
|
| 3519 |
3541 |
|
"vcpkg",
|
| 3520 |
3542 |
|
]
|
| 5591 |
5613 |
|
"serde_json",
|
| 5592 |
5614 |
|
"thiserror 2.0.18",
|
| 5593 |
5615 |
|
"tokio",
|
|
5616 |
+ |
"tokio-stream",
|
| 5594 |
5617 |
|
"tracing",
|
| 5595 |
5618 |
|
"unicode-normalization",
|
| 5596 |
5619 |
|
"urlencoding",
|
| 10 |
10 |
|
resolver = "2"
|
| 11 |
11 |
|
|
| 12 |
12 |
|
[workspace.package]
|
| 13 |
|
- |
version = "0.3.0"
|
|
13 |
+ |
version = "0.3.1"
|
| 14 |
14 |
|
edition = "2021"
|
| 15 |
15 |
|
license-file = "LICENSE"
|
| 16 |
16 |
|
|
| 74 |
74 |
|
strum = "0.26"
|
| 75 |
75 |
|
strum_macros = "0.26"
|
| 76 |
76 |
|
|
|
77 |
+ |
# iCalendar parsing
|
|
78 |
+ |
ical = "0.11"
|
|
79 |
+ |
|
| 77 |
80 |
|
# CSV
|
| 78 |
81 |
|
csv = "1.3"
|
| 79 |
82 |
|
|
| 61 |
61 |
|
tracing = { workspace = true }
|
| 62 |
62 |
|
tracing-subscriber = { workspace = true }
|
| 63 |
63 |
|
|
|
64 |
+ |
# iCalendar parsing (for .ics import)
|
|
65 |
+ |
ical = { workspace = true }
|
|
66 |
+ |
|
| 64 |
67 |
|
# Export/Backup
|
| 65 |
68 |
|
csv = { workspace = true }
|
| 66 |
69 |
|
icalendar = { workspace = true }
|
| 98 |
101 |
|
workspace = true
|
| 99 |
102 |
|
features = ["image-png", "tray-icon"]
|
| 100 |
103 |
|
|
|
104 |
+ |
# Android: bundle SQLite (system SQLite not accessible via NDK)
|
|
105 |
+ |
# and vendor OpenSSL (native-tls deps need it for cross-compilation)
|
|
106 |
+ |
[target.'cfg(target_os = "android")'.dependencies]
|
|
107 |
+ |
libsqlite3-sys = { version = "0.30", features = ["bundled"] }
|
|
108 |
+ |
openssl = { version = "0.10", features = ["vendored"] }
|
|
109 |
+ |
|
| 101 |
110 |
|
[dev-dependencies]
|
| 102 |
111 |
|
tempfile = "3"
|
| 103 |
112 |
|
|
| 1 |
1 |
|
{
|
| 2 |
2 |
|
"$schema": "https://schema.tauri.app/config/2",
|
| 3 |
3 |
|
"productName": "GoingsOn",
|
| 4 |
|
- |
"version": "0.3.0",
|
|
4 |
+ |
"version": "0.3.1",
|
| 5 |
5 |
|
"identifier": "com.goingson.app",
|
| 6 |
6 |
|
"build": {
|
| 7 |
7 |
|
"beforeBuildCommand": "./src-tauri/frontend/build-css.sh",
|
| 12 |
12 |
|
argon2 = { workspace = true, features = ["std"] }
|
| 13 |
13 |
|
serde_json = { workspace = true }
|
| 14 |
14 |
|
tracing = { workspace = true }
|
|
15 |
+ |
tokio = { workspace = true, features = ["macros"] }
|
| 15 |
16 |
|
|
| 16 |
17 |
|
[dev-dependencies]
|
| 17 |
18 |
|
tokio = { workspace = true, features = ["rt-multi-thread", "macros"] }
|