-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrelease-notes.html
More file actions
487 lines (405 loc) Β· 42.7 KB
/
Copy pathrelease-notes.html
File metadata and controls
487 lines (405 loc) Β· 42.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CoolDock Release Notes</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
line-height: 1.6;
max-width: 800px;
margin: 0 auto;
padding: 20px;
background-color: #f5f5f7;
color: #1d1d1f;
}
div[data-sparkle-version] {
background: white;
border-radius: 12px;
padding: 24px;
margin-bottom: 24px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
h2 {
color: #1d1d1f;
font-size: 24px;
margin-top: 0;
border-bottom: 2px solid #0066cc;
padding-bottom: 8px;
}
h3 {
color: #484848;
font-size: 20px;
margin-top: 24px;
}
ul {
padding-left: 20px;
}
li {
margin: 8px 0;
}
strong {
color: #0066cc;
}
em {
color: #666;
font-style: italic;
}
div.sparkle-installed-version {
opacity: 0.7;
position: relative;
}
div.sparkle-installed-version::after {
content: "Current Version";
position: absolute;
top: 12px;
right: 12px;
background: #0066cc;
color: white;
padding: 4px 8px;
border-radius: 4px;
font-size: 12px;
}
div.sparkle-installed-version~div {
display: none;
}
</style>
</head>
<body>
<!-- newest <div data-sparkle-version="X.Y.Z"> goes first -->
<div data-sparkle-version="2.0.9">
<h2>CoolDock 2.0.9 - Folders, Finder And Focus Fixed! ππ―</h2>
<h3>π Folders That Look Right Everywhere</h3>
<ul>
<li><strong>Same Colour, Any Location:</strong> Folder colours now start from the stock folder icon, so a USB drive, iCloud, tagged or custom-icon folder gets exactly the colour you picked - Red is really red and Brown is finally brown!</li>
<li><strong>Stack View Keeps Your Colour:</strong> A coloured folder in stack view now tints the tile behind its files instead of dropping the colour!</li>
<li><strong>Stacks Show Subfolders:</strong> The stack preview includes subfolders like the macOS Dock, so a folder that holds only folders no longer looks broken!</li>
<li><strong>Icon Changes Show Right Away:</strong> Changing a folder's Finder icon or tag updates the dock without restarting CoolDock!</li>
</ul>
<h3>π±οΈ Dock And Drag</h3>
<ul>
<li><strong>Finder Opens A Window Again:</strong> Clicking Finder with all its windows closed now opens a new window, just like the native Dock!</li>
<li><strong>Profile Swipes Stay Out Of Your Drags:</strong> Rearranging with β-drag, dragging from the widget picker or the Applications gallery no longer switches profiles and cancels the drag - a plain swipe still switches one profile per press!</li>
<li><strong>Drag Running Apps To Pin Them:</strong> β-drag a running app between your pinned apps and it is pinned right where you dropped it!</li>
</ul>
<h3>β¨οΈ Widgets And Typing</h3>
<ul>
<li><strong>No More Stolen Focus:</strong> Switching Spaces no longer pulls the keyboard back into the Search widget after you have moved to another app!</li>
<li><strong>Habit Tracker Keeps Up With Your Typing:</strong> Text fields no longer lose focus after every keystroke, and the editor sizes itself to its content so nothing is cut off at the top or bottom!</li>
<li><strong>Clocks Keep Ticking:</strong> Flip clock digits always settle on the latest time, and clocks keep their seconds after a profile switch!</li>
</ul>
<h3>π Activation</h3>
<ul>
<li><strong>Cleaner License Screen:</strong> The activation step scrolls, has a clear full-width Activate button and activated state, offers Check Again when a version is blocked, and tucks the storage and privacy details into a disclosure!</li>
</ul>
<h3>What's Next?</h3>
<p>We're always working on making CoolDock more powerful and intuitive! More features and improvements are on the way based on your feedback!</p>
<p style="margin-top: 20px;"><em>Thank you for being part of the CoolDock community! Your feedback drives every improvement we make.</em></p>
</div>
<div data-sparkle-version="2.0.8">
<h2>CoolDock 2.0.8 - Faster Hover, Snappier Clicks, Lighter Everything! β‘π±οΈ</h2>
<h3>β‘ Hover And Labels Without The Lag</h3>
<ul>
<li><strong>Hovering No Longer Redraws The Whole Dock:</strong> Each tile now owns its own hover state, so moving the pointer across the dock updates only the tile under it instead of invalidating every widget on every transition - the main cause of hover and click lag on large docks!</li>
<li><strong>Labels Driven By The Pointer, Not The View Tree:</strong> App, folder and pinned-window labels are resolved from cached tile frames - the pointer is converted once per dock window instead of once per icon, and no tile has to rebuild for a label to appear!</li>
<li><strong>Labels That Keep Up:</strong> App and folder name labels appear the instant you hover and sit exactly over the icon - moving quickly across Live Dock icons no longer cancels the pending label or makes it chase the pointer. Window previews keep their short dwell so expensive preview work still isn't started for every icon!</li>
<li><strong>No Timer For Plain Labels:</strong> The 60 Hz position tracker now runs only for interactive window-preview panels - a plain name label follows its icon from the cached frame and only moves when the frame really changed!</li>
<li><strong>Labels Remember Their Place:</strong> Hover anchors are no longer discarded when the label hides, so the next hover positions correctly right away - and pinned-window tiles register a real anchor like app launchers do!</li>
</ul>
<h3>π― Dock Reveal And Slide</h3>
<ul>
<li><strong>Edge Reveal Reverses In Place:</strong> A fixed dock (bottom edge, top edge or over the native Dock) that is interrupted mid-hide now slides back from where it is, with a duration scaled to the remaining travel, instead of rewinding to fully hidden and replaying the whole animation - rapid edge re-entry no longer hitches!</li>
<li><strong>Snappier Slide Timing:</strong> The fixed dock slides straight off and on screen with ExtraDock's proven timing (hide 0.18 s, reveal 0.22 s), without the shrink-and-fade that floating placements keep!</li>
<li><strong>Edge Reveal Without The Poll:</strong> Show and hide fire exactly when your configured delay expires instead of waiting on a 5 Hz timer, and moving the pointer inside a stable reveal zone no longer triggers a full layout refresh!</li>
<li><strong>Fullscreen Games Detected:</strong> Borderless full-display game surfaces on a normal Space now count as fullscreen, so the dock hides over them while maximized windows still do not!</li>
</ul>
<h3>π±οΈ App Launcher Clicks</h3>
<ul>
<li><strong>Click A, Then B, Get B:</strong> A delayed window restore or launch completion for the first app can no longer steal focus after you have moved on - activation happens immediately on click, and an app that quit and relaunched is never activated by a stale completion!</li>
<li><strong>No Surprise New Windows:</strong> Clicking a running app whose windows could not all be enumerated in time no longer sends a reopen event - only an app with no windows at all is reopened!</li>
<li><strong>Clicks Land Where They Should:</strong> After a fast show/hide the dock kept stale hit targets, so clicks fell through or the empty reserve band swallowed them - every present and dismiss path now updates the click-through gate in step!</li>
</ul>
<h3>πͺ Windows And Reserve Dock Space</h3>
<ul>
<li><strong>A Hung App Can't Stall The Dock:</strong> Window scans, launch restores, reserve-space passes and observer registration now run with per-element timeouts, a total deadline and window/app caps - and heavy apps make progress across passes instead of being skipped!</li>
<li><strong>Reserve Work Off The Main Thread:</strong> The per-window read, write and verify traversal runs on a dedicated worker, and results are applied only while they are still current, so animations keep flowing while windows are nudged out of the dock band!</li>
<li><strong>Windows Always Come Back:</strong> Toggling Reserve Dock Space off, on and off again no longer lets an old restoration fight a new reservation, and windows interrupted mid-restoration are kept with their original frames and retried until they are back!</li>
<li><strong>Lighter Window Previews:</strong> Hovering an icon fetches only that app's windows, refreshes are single-flight, an older full snapshot can no longer overwrite fresher per-app data, and thumbnails are keyed by process so two apps sharing a window ID stop suppressing each other!</li>
</ul>
<h3>ποΈ Galleries And Contacts</h3>
<ul>
<li><strong>Applications Gallery Off The Render Path:</strong> The gallery snapshot is built off the main thread, no longer persists configuration during render, skips identical requests, and loads icons asynchronously behind placeholders - visible icons never wait behind speculative warming, and superseded batches are cancelled!</li>
<li><strong>No Stale Icons:</strong> A cancelled icon load can no longer publish an outdated image into the cache or the view!</li>
<li><strong>Faster Trash:</strong> Trashed folders are no longer sized recursively or re-checked on every render, and thumbnail prefetch stays within the visible page plus one!</li>
<li><strong>Contacts That Don't Stutter:</strong> The chooser no longer decodes every contact's photo up front, rows load their own details, deleted contacts are not re-queried on every render, and the Quick Contacts row opens at its final width instead of jumping!</li>
</ul>
<h3>π Startup, Media And Diagnostics</h3>
<ul>
<li><strong>Leaner Launch:</strong> Live-service sync no longer runs twice on the licensed path, repeated licensed signals no longer re-run the restore sequence, and badge tracking rescans only when the tracked set actually changed!</li>
<li><strong>Media Parsing Off The Main Thread:</strong> Now Playing JSON and artwork decoding and the helper's output read no longer hitch media widgets!</li>
<li><strong>Smoother Widget Drags:</strong> Inserting or reordering widgets on a large dock uses a one-time index map, and the dock bar no longer re-renders on every running-app count change!</li>
<li><strong>Hover Diagnostics In Exports:</strong> Export Diagnostics now includes content-free hover counters (pointer samples, target transitions, presentations, anchor misses, average and maximum processing time) and dock slide animation timing, so a missed hover can be told apart from a slow main thread!</li>
</ul>
<h3>What's Next?</h3>
<p>We're always working on making CoolDock more powerful and intuitive! More features and improvements are on the way based on your feedback!</p>
<p style="margin-top: 20px;"><em>Thank you for being part of the CoolDock community! Your feedback drives every improvement we make.</em></p>
</div>
<div data-sparkle-version="2.0.7">
<h2>CoolDock 2.0.7 - Every Player Gets Its Due, Every App Stays Reachable! π§π</h2>
<h3>β¨ What's New</h3>
<ul>
<li><strong>Custom Media Players And Cider:</strong> Now Playing widgets follow any app that publishes to macOS Now Playing - Cider, Pandora clients and similar - keeping that app's own title, artwork, progress and icon. Play/pause and supported previous/next go to that exact app, never to Music, Spotify or a browser that happens to be open!</li>
<li><strong>Player-Aware Menus:</strong> Media widget context menus now offer only the transport actions the current player actually supports!</li>
</ul>
<h3>π¬ YouTube And Browser Media</h3>
<ul>
<li><strong>The Playing Tab Wins:</strong> The tab that is actually playing supplies the title, artwork and timeline - a paused foreground tab, another window or another browser can no longer take it over, and non-YouTube web media no longer picks up YouTube titles or thumbnails!</li>
<li><strong>Exact-Tab Transport:</strong> Play, pause and seek go to the browser tab that was authorized, and stop cleanly if that tab closes, navigates away or browser Automation is revoked!</li>
<li><strong>Video Preview Stays In Sync:</strong> The floating YouTube preview follows the source through loading and seeks, applies the latest play/pause state once the player is ready, keeps its position when the timeline is unknown, and resynchronizes small seeks while paused!</li>
</ul>
<h3>π΅ Playback Recovery</h3>
<ul>
<li><strong>Starts Right, Recovers Right:</strong> Launching CoolDock while Music is already playing, or recovering from an empty system reader, now reaches valid playback data - system media reads are bounded and fall back to another reader when the preferred one fails!</li>
<li><strong>Found On Any Output:</strong> Custom players are discovered even when the local audio output is idle, such as Bluetooth or remote routes!</li>
<li><strong>Clean Song Transitions:</strong> Old tracks no longer reappear after quitting or switching players, while explicit changes - previous/next, A to B to A - show immediately!</li>
<li><strong>Controls Without Metadata:</strong> Transport stays available for an authorized player even while system metadata is temporarily unavailable!</li>
</ul>
<h3>π₯οΈ Dock Layout And Mail</h3>
<ul>
<li><strong>Dock Comes Back After Fullscreen And Sleep:</strong> If the dock went missing from the current desktop after leaving a fullscreen app or waking your Mac, it now re-registers itself on the active Space and reappears on its own - wake recovery rechecks the dock's Space even when macOS sends no Space-change notification!</li>
<li><strong>Show All Fits For Real:</strong> Adaptive fitting now measures actual row widths, your widget spacing, running-app spacing and the panel's own screen margins, so dense app and folder rows no longer extend past the display - remaining overflow scrolls, including on narrower displays in All Displays mode, and your chosen tile size is preserved in Scroll mode!</li>
<li><strong>Top-Edge Targets Line Up:</strong> A top dock's content frame now accounts for its top margin, so hit targets and expansion anchors match the visible bar instead of sitting 2 points above it!</li>
<li><strong>Mail Refresh Can't Be Swallowed:</strong> A manual Refresh during an older in-progress read now queues a fresh pass, repeated clicks coalesce, and cancelled or replaced work can no longer consume a newer refresh or leave the widget stuck on "unavailable"!</li>
</ul>
<h3>What's Next?</h3>
<p>We're always working on making CoolDock more powerful and intuitive! More features and improvements are on the way based on your feedback!</p>
<p style="margin-top: 20px;"><em>Thank you for being part of the CoolDock community! Your feedback drives every improvement we make.</em></p>
</div>
<div data-sparkle-version="2.0.6">
<h2>CoolDock 2.0.6 - Mail Comes Back, Menus Get Smarter! π¬ποΈ</h2>
<h3>β¨ What's New</h3>
<ul>
<li><strong>Smart App Menus:</strong> Right-click any app - pinned, running, inside a folder or in the Applications gallery - and get actions it actually supports: New Message for any mail client that handles mailto (it composes in that app, not your default client), New Document in TextEdit and Pages, New Spreadsheet in Numbers and New Presentation in Keynote!</li>
<li><strong>Open Recent, Per App:</strong> Document apps gain an Open Recent submenu built from macOS's own recent-file lists - up to eight files, identical names told apart by their folder, missing files filtered out. Reads happen off the main thread when the menu opens and are cached for 30 seconds, so menus stay snappy!</li>
<li><strong>Connect Apple Music And Spotify:</strong> Now Playing widgets get optional Connect controls for Apple Music and Spotify in Settings β Privacy, plus Configure Player Accessβ¦ in their context menu - for when system Now Playing can't provide the details!</li>
</ul>
<h3>π¬ Mail Widgets Recover</h3>
<ul>
<li><strong>Counts And Previews Load Separately:</strong> A failed preview no longer wipes your unread count - you'll see "Preview unavailable" instead of a false "No unread mail", and partial counts are marked as partial!</li>
<li><strong>One Refresh Pipeline:</strong> Automatic, manual and settings-driven refreshes are coalesced, so a stale or abandoned attempt can no longer hide a working widget or throttle it for 90 seconds!</li>
<li><strong>Bounded Mail Scripting:</strong> Previews fetch at most 50 indexed messages with per-step timeouts, account and mailbox counts survive one bad mailbox with partial results, and a transient failure retries once behind a fresh Automation check!</li>
<li><strong>Safer Direct-Store Reads:</strong> Mail's database is read through a normal read-only transaction instead of copying live files, read errors fall back to Automation, and the "today" count uses Mail's real timestamps!</li>
<li><strong>Mail In Diagnostics:</strong> Export Diagnostics now includes a Mail section with backend, access state, failure phase and timing - never message content, mailbox names or accounts!</li>
</ul>
<h3>π Automation Connect Prompts Fixed</h3>
<ul>
<li><strong>Connect Really Asks macOS:</strong> The Finder, Mail, Notes and browser Connect buttons could report success without ever showing a permission prompt. They now request Automation access the proper way, so the macOS consent dialog appears and the grant sticks!</li>
<li><strong>Stopped Apps Launch First:</strong> Connect opens the target app if it isn't running, shares one request when you click repeatedly, honours cancellation, and never fabricates a grant when the app fails to start. Passive reads still never prompt or launch anything!</li>
<li><strong>Privacy Pane Feedback:</strong> Automation actions show progress while a request is in flight, ignore repeat clicks, and route a denial straight to Automation settings!</li>
</ul>
<h3>π₯οΈ Dock, Badges And Weather</h3>
<ul>
<li><strong>Dock Survives Hide Others And Cmd+H:</strong> Opt+Cmd-clicking the desktop (Finder's Hide Others) or pressing Cmd+H no longer makes the dock vanish - the dock, its expansion panel and tooltips stay on screen and clickable!</li>
<li><strong>Steadier Notification Badges:</strong> Badge reads are coalesced and bounded, temporary failures keep the last good count instead of clearing it, and an older scan can no longer overwrite newer counts!</li>
<li><strong>Running Dots Reconcile:</strong> The regular app poll now reconciles the running-app monitor against macOS, so a missed launch or quit event no longer leaves a stale dot!</li>
<li><strong>Weather Location Recovery:</strong> Weather discards stale permission checks, retries through its recovery path on polling, and the help text now distinguishes the system-wide Location Services switch from CoolDock's own permission!</li>
<li><strong>App Folder Gallery:</strong> The first page fills every complete row of the viewport instead of a fixed count!</li>
<li><strong>Diagnostics Tell More:</strong> Exports now include badge scan health, running-monitor health, per-launcher running/badge flags and configuration-aware Weather state - still with no app names, bundle IDs or values!</li>
</ul>
<h3>What's Next?</h3>
<p>We're always working on making CoolDock more powerful and intuitive! More features and improvements are on the way based on your feedback!</p>
<p style="margin-top: 20px;"><em>Thank you for being part of the CoolDock community! Your feedback drives every improvement we make.</em></p>
</div>
<div data-sparkle-version="2.0.5">
<h2>CoolDock 2.0.5 - Diagnostics, Layout Rescue And More AI Widgets! π©Ίπ€</h2>
<p>This update includes everything from 2.0.4 as well - if you skipped it, it is all here.</p>
<h3>π New In 2.0.5</h3>
<ul>
<li><strong>Export Diagnostics:</strong> Choose Help β Export Diagnosticsβ¦ (or Settings β General β Diagnostics) to save a single report with a redacted snapshot of your dock, screens, widgets and permissions, the last 30 minutes of recorded events and recent app logs - perfect for support when a dock or widget library disappears. Nothing is uploaded!</li>
<li><strong>Privacy-First Reports:</strong> API keys, tokens, account details, URLs, paths, window titles and personal content never make it into a diagnostics report - every log message is reduced to a reviewed template with its values stripped!</li>
<li><strong>Layout Menu In The Menu Bar:</strong> The menu bar extra gains a Layout menu with every layout preset, the six Fixed edge/alignment positions as a submenu, and Check for Updates⦠under Help - no need to open Settings!</li>
<li><strong>Reset Layout:</strong> Layout β Reset Layout rescues a stuck or vanished dock: it rebuilds a single floating dock on the display under your pointer, clears hiding, edge reservation and stale fullscreen or Mission Control state, and keeps all your widgets and profiles!</li>
</ul>
<h3>β¨ New In 2.0.4</h3>
<ul>
<li><strong>More AI Usage Widgets:</strong> Cursor Personal, Antigravity, GLM / Z.ai, Grok, OpenCode, GitHub Copilot, Gemini API and Perplexity join the AI usage family - each with its own connection path and honest readings, never an invented quota!</li>
<li><strong>Smarter Claude Usage:</strong> CoolDock now prefers Claude Code's own /usage command and falls back to OAuth, so token and rate-limit states are clearer and there are fewer dead ends!</li>
<li><strong>Codex Open Finds ChatGPT:</strong> Open resolves the unified Codex/ChatGPT app first, then legacy installs, then the web - so a click always lands somewhere useful!</li>
<li><strong>Click To Refresh:</strong> Usage widgets answer a click with real feedback - refreshing, cooling down or connect - instead of doing nothing!</li>
</ul>
<h3>π₯οΈ Spaces And Displays</h3>
<ul>
<li><strong>Spaces Stay Put:</strong> CoolDock checks real Space membership before reshuffling panels, so the dock is far less likely to vanish when you switch desktops or leave Mission Control or fullscreen!</li>
<li><strong>Sidecar-Friendly:</strong> Fullscreen on one display (an iPad Sidecar, say) no longer hides CoolDock on every display - only on the display that is actually fullscreen!</li>
<li><strong>Tighter Top-Edge Reveal:</strong> The reveal zone follows the dock's content width, so hovering menus and status items outside the bar won't pop the dock open by accident!</li>
<li><strong>All Displays Replicas Recover:</strong> If macOS recycles a display's runtime ID, CoolDock recreates that screen's dock copy instead of leaving a ghost!</li>
</ul>
<h3>π Permissions, Calendar And Mail</h3>
<ul>
<li><strong>Permissions That Tell The Truth:</strong> Widgets seed their real authorization state at launch without prompting, so no more false "denied" flashes when access was already granted!</li>
<li><strong>Calendar And Mail:</strong> Mail gating uses the real data-access state, unread scans tolerate damaged messages, and permission warnings deep-link into Settings β Privacy and highlight the right card!</li>
<li><strong>Folders And Dock Replace:</strong> Folder reorder and remove persist cleanly, and the dock-replace plus auto-hide setups work like before again!</li>
</ul>
<h3>π Bug Fixes</h3>
<ul>
<li><strong>Add / Move Widgets:</strong> Drag-and-drop onto the dock works again, with proper drop targets on tile edges, gaps and bar ends; running-app clusters can no longer steal the insertion, and Escape clears the session!</li>
<li><strong>Claude Keychain Spam:</strong> Background polls no longer spawn a security subprocess, which ends the repeated Keychain prompts after a token rotation!</li>
<li><strong>Claude Rate Limit / Token Invalid:</strong> 401 and 403 are handled separately, rejected tokens are skipped, and rate-limit deadlines survive a relaunch without being hammered by clicks!</li>
<li><strong>Keychain Unlock Recovery:</strong> A locked or unreadable Keychain is treated as locked, and recovery stays available from Claude setup or the Privacy storage modes (file storage path preserved)!</li>
<li><strong>Claude Code Hooks Check Node:</strong> Before writing a Node path into the Claude Code hooks, CoolDock verifies that Node actually launches and falls back to the one your login shell finds - a broken Homebrew Node no longer silently breaks every hook!</li>
<li><strong>Codex Widget Click:</strong> Open and refresh paths are fixed, and unavailable or not-found states show clear feedback instead of silence!</li>
<li><strong>Running Indicator:</strong> Quitting an app from CoolDock (WhatsApp, say) clears the running dot, and a relaunch shows a correct indicator again!</li>
</ul>
<h3>What's Next?</h3>
<p>We're always working on making CoolDock more powerful and intuitive! More features and improvements are on the way based on your feedback!</p>
<p style="margin-top: 20px;"><em>Thank you for being part of the CoolDock community! Your feedback drives every improvement we make.</em></p>
</div>
<div data-sparkle-version="2.0.4">
<h2>CoolDock 2.0.4 - More AI Widgets, Steadier Spaces! π€π₯οΈ</h2>
<h3>β¨ What's New</h3>
<ul>
<li><strong>More AI Usage Widgets:</strong> Cursor Personal, Antigravity, GLM / Z.ai, Grok, OpenCode, GitHub Copilot, Gemini API and Perplexity join the AI usage family - each with its own connection path and honest readings, never an invented quota!</li>
<li><strong>Smarter Claude Usage:</strong> CoolDock now prefers Claude Code's own /usage command and falls back to OAuth, so token and rate-limit states are clearer and there are fewer dead ends!</li>
<li><strong>Codex Open Finds ChatGPT:</strong> Open resolves the unified Codex/ChatGPT app first, then legacy installs, then the web - so a click always lands somewhere useful!</li>
<li><strong>Click To Refresh:</strong> Usage widgets answer a click with real feedback - refreshing, cooling down or connect - instead of doing nothing!</li>
</ul>
<h3>π₯οΈ Spaces And Displays</h3>
<ul>
<li><strong>Spaces Stay Put:</strong> CoolDock checks real Space membership before reshuffling panels, so the dock is far less likely to vanish when you switch desktops or leave Mission Control or fullscreen!</li>
<li><strong>Sidecar-Friendly:</strong> Fullscreen on one display (an iPad Sidecar, say) no longer hides CoolDock on every display - only on the display that is actually fullscreen!</li>
<li><strong>Tighter Top-Edge Reveal:</strong> The reveal zone follows the dock's content width, so hovering menus and status items outside the bar won't pop the dock open by accident!</li>
<li><strong>All Displays Replicas Recover:</strong> If macOS recycles a display's runtime ID, CoolDock recreates that screen's dock copy instead of leaving a ghost!</li>
</ul>
<h3>π Permissions, Calendar And Mail</h3>
<ul>
<li><strong>Permissions That Tell The Truth:</strong> Widgets seed their real authorization state at launch without prompting, so no more false "denied" flashes when access was already granted!</li>
<li><strong>Calendar And Mail:</strong> Mail gating uses the real data-access state, unread scans tolerate damaged messages, and permission warnings deep-link into Settings β Privacy and highlight the right card!</li>
<li><strong>Folders And Dock Replace:</strong> Folder reorder and remove persist cleanly, and the dock-replace plus auto-hide setups work like before again!</li>
</ul>
<h3>π Bug Fixes</h3>
<ul>
<li><strong>Add / Move Widgets:</strong> Drag-and-drop onto the dock works again, with proper drop targets on tile edges, gaps and bar ends; running-app clusters can no longer steal the insertion, and Escape clears the session!</li>
<li><strong>Claude Keychain Spam:</strong> Background polls no longer spawn a security subprocess, which ends the repeated Keychain prompts after a token rotation!</li>
<li><strong>Claude Rate Limit / Token Invalid:</strong> 401 and 403 are handled separately, rejected tokens are skipped, and rate-limit deadlines survive a relaunch without being hammered by clicks!</li>
<li><strong>Keychain Unlock Recovery:</strong> A locked or unreadable Keychain is treated as locked, and recovery stays available from Claude setup or the Privacy storage modes (file storage path preserved)!</li>
<li><strong>Claude Code Hooks Check Node:</strong> Before writing a Node path into the Claude Code hooks, CoolDock verifies that Node actually launches and falls back to the one your login shell finds - a broken Homebrew Node no longer silently breaks every hook!</li>
<li><strong>Codex Widget Click:</strong> Open and refresh paths are fixed, and unavailable or not-found states show clear feedback instead of silence!</li>
<li><strong>Running Indicator:</strong> Quitting an app from CoolDock (WhatsApp, say) clears the running dot, and a relaunch shows a correct indicator again!</li>
</ul>
<h3>What's Next?</h3>
<p>We're always working on making CoolDock more powerful and intuitive! More features and improvements are on the way based on your feedback!</p>
<p style="margin-top: 20px;"><em>Thank you for being part of the CoolDock community! Your feedback drives every improvement we make.</em></p>
</div>
<div data-sparkle-version="2.0.3">
<h2>CoolDock 2.0.3 - Windows Make Room, Displays Stay Put! πͺπ₯οΈ</h2>
<h3>β¨ What's New</h3>
<ul>
<li><strong>Fixed, On Either Edge:</strong> The "Fixed Bar on Top" layout is now simply "Fixed", with a six-position Screen Position grid - top or bottom edge, aligned left, center or right. Your current layout is kept exactly as it was!</li>
<li><strong>Weather For Any Place, On Every Weather Widget:</strong> Current, Detailed, Forecast, Today, Condition, Hourly, Wind and Sun Cycle can each track a city of your choice - right-click the widget, choose Customize Locationβ¦, then Custom Place. No location permission needed!</li>
<li><strong>Also After Dragging:</strong> Decide whether a window you drag into the dock band is pushed back out (the default) or left where you put it, just like the native Dock!</li>
</ul>
<h3>π₯οΈ Choose Where The Dock Lives</h3>
<ul>
<li><strong>A New Screens Pane:</strong> The display picker moved from General to its own Settings β Screens pane, with three ways to place the dock!</li>
<li><strong>One Display:</strong> The default, and the way CoolDock has always worked - pick a monitor and the dock stays there, using the built-in display only while that monitor is away!</li>
<li><strong>Attached Displays:</strong> Attach one or more displays in priority order. The dock shows on the first one that's connected and stays hidden while none of them is - on your monitor at the office, out of the way at home!</li>
<li><strong>All Displays:</strong> A copy of the dock on every connected screen, each with its own edge reveal, fullscreen hiding and floating spot. Galleries and pickers open next to the copy you clicked!</li>
<li><strong>Remembered Displays:</strong> Displays you've used stay listed while unplugged, with when they were last seen - rename them (the name follows the physical panel, not the port) or forget them!</li>
<li><strong>Identify Displays:</strong> One click flashes each display's name on its own screen, so you always know which is which!</li>
</ul>
<h3>πͺ Reserve Dock Space, Rebuilt</h3>
<ul>
<li><strong>Reacts Instead Of Scanning:</strong> Windows are moved out of the dock band the moment they open, zoom, tile or come back from the Dock - no more background sweep every two seconds!</li>
<li><strong>Never Fights Your Mouse:</strong> Nothing moves while you hold a mouse button; adjustments wait for release. Menus, Mission Control, fullscreen and Space switches are left alone too!</li>
<li><strong>Restored Windows Keep Their Size:</strong> Bringing a minimized window back from the CoolDock bar no longer shrinks or shifts it!</li>
<li><strong>Everything Goes Back:</strong> Switching Window Space back to Overlay returns every window CoolDock moved to its original frame!</li>
<li><strong>Polite With Stubborn Apps:</strong> A window that refuses the new frame is left alone after a few tries instead of being nudged forever!</li>
</ul>
<h3>π Your Dock Stays On The Display You Chose</h3>
<ul>
<li><strong>Recognized By The Panel, Not The Port:</strong> Displays are identified by their hardware identity, so unplugging and replugging through a different port, dock or adapter brings the dock back to the same monitor!</li>
<li><strong>No Hopping On Wake:</strong> Sleep, wake and clamshell no longer bounce the dock to the built-in display and back!</li>
<li><strong>Identical Monitors Told Apart:</strong> Two of the same model are listed as separate displays and the dock sticks to the physical panel you picked!</li>
<li><strong>Remembered Per Display:</strong> A floating dock remembers its spot on each display separately!</li>
</ul>
<h3>π€ Claude Code And Codex Usage Widgets</h3>
<ul>
<li><strong>No More Keychain Prompts:</strong> The Claude Code widget reads your sign-in the same way Claude Code itself does, so the keychain dialog no longer appears - not even after a token rotation!</li>
<li><strong>The Freshest Sign-In Wins:</strong> A stale credentials file no longer hides a valid keychain login, which fixes the widget sitting on "Token expired"!</li>
<li><strong>Session Bar Stays Put:</strong> The 5-hour session gauge no longer disappears at rollover, and a rate-limited widget waits politely (even across a relaunch) instead of hammering the API!</li>
<li><strong>Codex Shows Its Own Numbers:</strong> The Codex widget now reads the same windows and percentages Codex's usage panel shows, falls back to the latest recorded snapshot when Codex is closed, and notes "Paused until β¦" when your account is paused!</li>
<li><strong>Last Reading Kept:</strong> Offline or right after launch, both widgets show their last reading dimmed with when it was taken instead of "Loadingβ¦"!</li>
</ul>
<h3>π€οΈ Weather</h3>
<ul>
<li><strong>Clear Help When macOS Can't Find You:</strong> If Location Services is off or macOS can't determine a location, the widget shows a Help button that explains what happened and opens Location Settings or Apple Weather for you!</li>
<li><strong>Steadier Loading:</strong> Location and weather-provider requests retry before giving up, and several weather widgets no longer multiply the same network requests!</li>
</ul>
<h3>π‘ Good To Know</h3>
<ul>
<li><strong>Accessibility Access:</strong> Reserve Dock Space still needs Accessibility access. If the permission is revoked, Settings shows a banner and the feature resumes on its own once it's granted again!</li>
<li><strong>Floating Docks:</strong> Reserve Dock Space isn't available while the dock is floating.</li>
<li><strong>All Displays Mode:</strong> Reserve Dock Space keeps windows clear on the main dock's display only, and the bars on every display expand together while a panel is open.</li>
</ul>
<h3>What's Next?</h3>
<p>We're always working on making CoolDock more powerful and intuitive! More features and improvements are on the way based on your feedback!</p>
<p style="margin-top: 20px;"><em>Thank you for being part of the CoolDock community! Your feedback drives every improvement we make.</em></p>
</div>
<div data-sparkle-version="2.0.2">
<h2>CoolDock 2.0.2 - A Friendlier, More Private Start! π‘οΈβ¨</h2>
<h3>π‘οΈ A Smoother, More Private Start</h3>
<ul>
<li><strong>Clear storage choices:</strong> Onboarding now makes it easy to understand and choose where your sensitive data is stored!</li>
<li><strong>No surprise system prompts:</strong> Permission requests are handled more thoughtfully, so setup feels calmer and more predictable!</li>
</ul>
<h3>π§ Helpful Permission Guidance</h3>
<ul>
<li><strong>Know what a widget needs:</strong> Widgets now clearly explain when a permission is missing and offer a simple way to get everything working again!</li>
</ul>
<h3>β¨ Everyday Improvements</h3>
<ul>
<li><strong>Smoother dock movement:</strong> Dock positioning and dragging now feel more natural and dependable!</li>
<li><strong>A more reliable upgrade:</strong> Data migration, licensing, and updates have all been strengthened for a smoother experience!</li>
<li><strong>Polished throughout:</strong> Additional fixes and refinements make CoolDock more stable in everyday use!</li>
</ul>
<h3>What's Next?</h3>
<p>We're always working on making CoolDock more powerful and intuitive! More features and improvements are on the way based on your feedback!</p>
<p style="margin-top: 20px;"><em>Thank you for being part of the CoolDock community! Your feedback drives every improvement we make.</em></p>
</div>
<div data-sparkle-version="2.0.1">
<h2>CoolDock 2.0.1 - Your License, Always Reachable πβ¨</h2>
<h3>π Bug Fixes</h3>
<ul>
<li><strong>A locked keychain no longer locks you out:</strong> If your login keychain could not be unlocked - the classic case is a forgotten keychain password after a macOS password reset - CoolDock could not reach your license and the unlock dialog got in the way. It now keeps working instead!</li>
<li><strong>No more repeated unlock prompts:</strong> CoolDock reads your saved secrets without provoking the keychain dialog, so a locked keychain degrades gracefully rather than interrupting you!</li>
<li><strong>Your 1.9.x secrets come across:</strong> CoolDock checks once, quietly, for secrets left behind by the old Cooldock and offers to bring them over - and it only reports the move as done when nothing was left behind!</li>
</ul>
<h3>β¨ What's New</h3>
<ul>
<li><strong>Choose where your secrets live:</strong> Settings β Privacy now lets you keep secrets in the macOS Keychain (the default and the most protected option) or, if your keychain simply cannot be unlocked, in an encrypted file on this Mac instead!</li>
</ul>
<p style="margin-top: 20px;"><em>Thank you for being part of the CoolDock community! Your feedback drives every improvement we make.</em></p>
</div>
<div data-sparkle-version="2.0.0">
<h2>CoolDock 2.0 - Now From Appit Studio! ππ</h2>
<p>Cooldock is now CoolDock, made by Appit Studio. This is a one-time manual update: download CoolDock 2.0 from <a href="https://www.dock.cool">dock.cool</a>, drag it over your existing Cooldock in Applications, and launch it. Your dock, widgets, profiles and license carry over automatically. Future releases arrive through Check for Updates as usual!</p>
<h3>β¨ What's New</h3>
<ul>
<li><strong>A New Home:</strong> CoolDock now updates from Appit Studio's own update feed - this is the only release that needs a manual download!</li>
<li><strong>Appit Studio Licensing:</strong> New customers activate with an Appit Studio license key; existing Polar keys keep working exactly as before, with the same activation and the same seat!</li>
<li><strong>Beta Channel:</strong> Opt in to beta updates from Settings β Updates to try new features early!</li>
<li><strong>Consistent App Name:</strong> The app presents itself as CoolDock everywhere in macOS - Finder, the menu bar, notifications and System Settings!</li>
</ul>
<h3>π‘ Good To Know</h3>
<ul>
<li><strong>Your Settings Come Along:</strong> On first launch CoolDock imports your existing dock configuration, widget order, profiles, layout scenario and appearance - nothing to set up again!</li>
<li><strong>Permissions Are Asked Once More:</strong> Because the app has a new identity, macOS treats it as a new app. Widgets that need Accessibility, Screen Recording, Calendar, Contacts or similar access ask for permission again the first time they run, and you may see a one-time keychain prompt for your license - choose Always Allow!</li>
<li><strong>Launch at Login:</strong> Switch it on again in Settings β General after the update!</li>
</ul>
<h3>What's Next?</h3>
<p>We're always working on making CoolDock more powerful and intuitive! More features and improvements are on the way based on your feedback!</p>
<p style="margin-top: 20px;"><em>Thank you for being part of the CoolDock community! Your feedback drives every improvement we make.</em></p>
</div>
</body>
</html>