diff --git a/README.md b/README.md
index 444ab57..be337d6 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@
- Download latest release
+ Download latest release
@@ -82,7 +82,7 @@ Tools for human wellbeing should never be enclosed, never be scarce, and never s
- 
+ 
Break Screen - Always-on-top break overlay with activity suggestions
@@ -128,7 +128,7 @@ Tools for human wellbeing should never be enclosed, never be scarce, and never s
### 🧘 Break Activities
-Each break shows a randomized suggestion from a curated library of **70 activities** across four categories:
+Each break shows a randomized suggestion from a curated library of **72 activities** across four categories:
| Category | Examples |
|:---------|:---------|
@@ -273,7 +273,7 @@ Core Cooldown is **fully portable**. The executable carries everything it needs
That's it. No elevated permissions. No runtime dependencies. The first launch may take a moment while Windows initializes the WebView2 runtime.
-**[Download latest release →](../../releases/latest)**
+**[Download latest release →](https://git.lashman.live/lashman/core-cooldown/releases)**
@@ -379,7 +379,8 @@ A split-architecture desktop app: Rust backend for system integration and timer
| `config.rs` | Config struct with serde serialization, validation (clamping all values to safe ranges), portable file I/O |
| `timer.rs` | Timer state machine (`Running` / `Paused` / `BreakActive`), idle detection via Windows API, working hours enforcement |
| `stats.rs` | Daily break statistics, streak calculation, history queries |
-| `main.rs` | Entry point |
+| `main.rs` | Entry point, WebView2 Runtime detection |
+| `msvc_compat.rs` | MSVC CRT compatibility stubs for static WebView2Loader linking on MinGW |
@@ -392,7 +393,7 @@ A split-architecture desktop app: Rust backend for system integration and timer
| **Windows** | `BreakWindow` (standalone break modal), `MiniTimer` (floating mini mode) |
| **Components** | `TimerRing`, `Titlebar`, `ToggleSwitch`, `Stepper`, `ColorPicker`, `FontSelector`, `TimeSpinner`, `BackgroundBlobs` |
| **Stores** | `timer.ts` (reactive timer state from IPC events), `config.ts` (config with debounced auto-save) |
-| **Utilities** | `sounds.ts` (Web Audio synthesis), `activities.ts` (70 break activities), `animate.ts` (motion library) |
+| **Utilities** | `sounds.ts` (Web Audio synthesis), `activities.ts` (72 break activities), `animate.ts` (motion library) |
@@ -400,10 +401,10 @@ A split-architecture desktop app: Rust backend for system integration and timer
IPC contract
**Commands** (frontend → backend):
-`get_config` · `save_config` · `update_pending_config` · `reset_config` · `toggle_timer` · `start_break_now` · `cancel_break` · `snooze` · `get_timer_state` · `set_view` · `get_stats` · `get_daily_history`
+`get_config` · `save_config` · `update_pending_config` · `reset_config` · `toggle_timer` · `start_break_now` · `cancel_break` · `snooze` · `get_timer_state` · `set_view` · `get_stats` · `get_daily_history` · `get_cursor_position` · `save_window_position`
**Events** (backend → frontend):
-`timer-tick` · `break-started` · `break-ended` · `prebreak-warning` · `config-changed`
+`timer-tick` · `break-started` · `break-ended` · `prebreak-warning` · `config-changed` · `natural-break-detected`
@@ -478,7 +479,7 @@ All settings stored in `config.json` next to the executable. The settings panel
| `serde` / `serde_json` | Config and stats serialization |
| `chrono` | Date/time handling for schedules and statistics |
| `anyhow` | Error handling |
-| `winapi` | Windows idle detection (`GetLastInputInfo`) |
+| `winapi` | Windows idle detection (`GetLastInputInfo`), WebView2 check dialog |
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index 23fc897..749f4ff 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -17,7 +17,6 @@ tauri-plugin-notification = "2"
tauri-plugin-global-shortcut = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
-dirs = "5"
chrono = "0.4"
anyhow = "1"