SuperDooper
b9fd5a27ec
Beta release v1.3.3-beta.3
2026-05-11 20:58:09 +02:00
SuperDooper
60336cffa7
Windows beta badge win-v0.0.1-beta.54
2026-05-11 18:55:00 +00:00
SuperDooper
953c46077c
Windows beta release win-v0.0.1-beta.54
2026-05-11 18:54:58 +00:00
SuperDooper
3796139178
Bump version to 1.3.3-beta.3 (build 79)
2026-05-11 20:53:46 +02:00
SuperDooper
554eb80c0c
Diagnostics: remove cookie stats from copied text
2026-05-11 20:51:31 +02:00
SuperDooper
a22bf3a309
Diagnostics: remove stale Cookie Store section
2026-05-11 20:51:10 +02:00
SuperDooper
eaab3eb539
Windows beta badge win-v0.0.1-beta.53
2026-05-11 18:51:04 +00:00
SuperDooper
323aa174da
Windows beta release win-v0.0.1-beta.53
2026-05-11 18:51:02 +00:00
SuperDooper
1977b51b74
Bump version to 1.3.3-beta.2 (build 78)
2026-05-11 20:49:57 +02:00
SuperDooper
64a3f15ac5
Diagnostics: remove email from copied text
2026-05-11 20:48:46 +02:00
SuperDooper
8fbd1c42c3
Diagnostics: remove email from copy output, add privacy note
2026-05-11 20:48:21 +02:00
SuperDooper
0bf19c3dc8
README: collapse Win Stable placeholder inline to fix 3-row badge layout
2026-05-11 20:46:50 +02:00
SuperDooper
d56a714bb9
README: add Win Stable badge placeholder
2026-05-11 20:44:55 +02:00
SuperDooper
88f409971a
CI: update macOS beta badge label to macOS_Beta
2026-05-11 20:43:55 +02:00
SuperDooper
9bac2540e8
CI: update stable badge regex for macOS_Stable label
2026-05-11 20:43:51 +02:00
SuperDooper
792c5a26e9
README: rename version badges to macOS Stable / macOS Beta / Win Beta
2026-05-11 20:43:48 +02:00
SuperDooper
421727bfb5
README: add Windows platform badge to top line
2026-05-11 20:42:53 +02:00
SuperDooper
21b2905bcf
README: add current Windows beta badge
2026-05-11 20:42:13 +02:00
SuperDooper
38d6f2a582
CI: fix BETA_BADGE handling for new badge layout
2026-05-11 20:41:50 +02:00
SuperDooper
7ea5554506
README: add Windows beta badge, move version badges to new line
2026-05-11 20:41:42 +02:00
SuperDooper
87c5992889
Windows beta release win-v0.0.1-beta.52
2026-05-11 18:35:53 +00:00
SuperDooper
2235a627b5
Bump version to 1.3.3-beta.1 (build 77)
2026-05-11 20:34:15 +02:00
SuperDooper
d6c138f1a2
Bug template: update diagnostics copy note
2026-05-11 20:28:38 +02:00
SuperDooper
432819639e
Diagnostics: remove email, redact IDs on copy
2026-05-11 20:28:12 +02:00
SuperDooper
52db469c13
Remove org ID from diagnostics output
2026-05-11 20:24:56 +02:00
SuperDooper
40c86aaaf2
Windows beta release win-v0.0.1-beta.51
2026-05-11 13:09:31 +00:00
SuperDooper
46b09934d7
Windows beta release win-v0.0.1-beta.50
2026-05-11 12:20:21 +00:00
SuperDooper
a79a23ac24
update bug report template: add diagnostics instructions and Windows field
2026-05-11 14:19:06 +02:00
superdooper86
a338f4e5fe
release 1.3.2: anchor primer WebView in hidden window for reliable startup fetch
...
Every launch now loads claude.ai in a real (off-screen, invisible) NSWindow so
WebKit doesn't throttle JS execution. The nav delegate fires adoptPrimerWebView
once the page loads, replacing the old 1.5 s sleep-then-refresh approach.
2026-05-11 14:01:07 +02:00
superdooper86
9af0d6401c
release 1.3.1: remove API response bodies from diagnostics panel
2026-05-11 13:45:09 +02:00
superdooper86
206e97780d
release 1.3.0: multi-org support, WKWebView JS fetch, diagnostics panel
2026-05-11 13:30:09 +02:00
superdooper86
60b6c60c0a
beta.25: read plan label from active org (lastActiveOrg) not first membership
2026-05-11 13:23:23 +02:00
superdooper86
9ed8916075
beta.24: read lastActiveOrg cookie via JS, expose bootstrap body and lastActiveOrg in diagnostics
2026-05-11 13:15:08 +02:00
superdooper86
30ad89e458
beta.23: use WKWebView JS fetch for all API calls (avoids URLSession 403 fingerprinting)
2026-05-11 13:07:01 +02:00
superdooper86
4378463600
beta.22: manual cookie join, anthropic-client-platform header, ephemeral session, expose usage 403 body
2026-05-11 12:52:46 +02:00
SuperDooper
84bdfbd786
beta.21: diagnostics view, cookie polling, detailed error messages
2026-05-11 12:40:50 +02:00
SuperDooper
beba7586f9
beta.21: diagnostics view, cookie polling, detailed error messages
2026-05-11 12:40:48 +02:00
SuperDooper
a4dff4bde9
beta.21: add DiagnosticsView.swift
2026-05-11 12:40:47 +02:00
SuperDooper
d0b33e8f43
beta.21: diagnostics view, cookie polling, detailed error messages
2026-05-11 12:40:38 +02:00
SuperDooper
6a5a3c9cd1
beta.21: diagnostics view, cookie polling, detailed error messages
2026-05-11 12:40:36 +02:00
SuperDooper
91829b0ed9
beta.20: URLSession with browser headers (sec-fetch-*, Chrome UA, Origin/Referer)
2026-05-11 12:32:34 +02:00
SuperDooper
caffc996ff
beta.20: URLSession with browser headers (sec-fetch-*, Chrome UA, Origin/Referer)
2026-05-11 12:32:33 +02:00
SuperDooper
566258e9c8
beta.19: fix tuple label mismatch in APIFetchDelegate
2026-05-11 12:22:14 +02:00
SuperDooper
dc2a8e2307
beta.19: fix tuple label mismatch in APIFetchDelegate
2026-05-11 12:22:13 +02:00
SuperDooper
f48b53fd8e
beta.18: navigate-and-read API fetch replaces callAsyncJavaScript
2026-05-11 12:20:22 +02:00
SuperDooper
ccfee938b7
beta.18: navigate-and-read API fetch replaces callAsyncJavaScript
2026-05-11 12:20:21 +02:00
SuperDooper
28d952bcbd
beta.18: navigate-and-read API fetch replaces callAsyncJavaScript
2026-05-11 12:20:19 +02:00
SuperDooper
fd82177a7d
beta.17: adopt login WebView for API calls, add diagnostics
2026-05-11 12:00:30 +02:00
SuperDooper
112210a99b
beta.17: adopt login WebView for API calls, add diagnostics
2026-05-11 12:00:29 +02:00
SuperDooper
f4a83940b1
beta.17: adopt login WebView for API calls, add diagnostics
2026-05-11 12:00:28 +02:00
SuperDooper
377888a427
beta.17: adopt login WebView for API calls, add diagnostics
2026-05-11 12:00:26 +02:00
SuperDooper
e24113a78b
beta.17: adopt login WebView for API calls, add diagnostics
2026-05-11 12:00:24 +02:00
SuperDooper
0aa8837b2f
beta.16: anchor background WebView in hidden NSWindow to prevent WebKit throttling
2026-05-11 11:47:09 +02:00
SuperDooper
373ca1dc14
beta.16: anchor background WebView in hidden NSWindow to prevent WebKit throttling
2026-05-11 11:47:08 +02:00
SuperDooper
7a4c21768f
beta.16: anchor background WebView in hidden NSWindow to prevent WebKit throttling
2026-05-11 11:47:06 +02:00
SuperDooper
7b26629dc7
beta.16: anchor background WebView in hidden NSWindow to prevent WebKit throttling
2026-05-11 11:47:05 +02:00
SuperDooper
36af325e2d
beta.15: only detect auth when back on claude.ai, not on OAuth provider pages
2026-05-11 11:42:26 +02:00
SuperDooper
e2ef8b6f2a
beta.15: only detect auth when back on claude.ai, not on OAuth provider pages
2026-05-11 11:42:25 +02:00
SuperDooper
7a4975fa3e
beta.15: only detect auth when back on claude.ai, not on OAuth provider pages
2026-05-11 11:42:24 +02:00
SuperDooper
238614a94b
beta.14: fix httpShouldHandleCookies=false so Cookie header is actually sent
2026-05-11 11:29:40 +02:00
SuperDooper
b11507221f
beta.14: fix httpShouldHandleCookies=false so Cookie header is actually sent
2026-05-11 11:29:38 +02:00
SuperDooper
b6fef53264
beta.14: fix httpShouldHandleCookies=false so Cookie header is actually sent
2026-05-11 11:29:37 +02:00
SuperDooper
ec6ae6621a
beta.14: fix httpShouldHandleCookies=false so Cookie header is actually sent
2026-05-11 11:29:35 +02:00
SuperDooper
a950392a6f
beta.13: wait for apiWebView didFinish before making JS fetch calls
2026-05-11 11:20:51 +02:00
SuperDooper
8087cc029d
beta.13: wait for apiWebView didFinish before making JS fetch calls
2026-05-11 11:20:50 +02:00
SuperDooper
11f9e0c9b6
beta.13: wait for apiWebView didFinish before making JS fetch calls
2026-05-11 11:20:49 +02:00
SuperDooper
8e7328b2c5
beta.12: route all API calls through background WKWebView
2026-05-11 11:02:34 +02:00
SuperDooper
709eb12382
beta.12: route all API calls through background WKWebView
2026-05-11 11:02:33 +02:00
SuperDooper
e866324a48
beta.12: route all API calls through background WKWebView
2026-05-11 11:02:32 +02:00
SuperDooper
a62584221b
beta.12: route all API calls through background WKWebView
2026-05-11 11:02:30 +02:00
superdooper86
58b947e515
fix: add KVO on webView.url to catch SPA pushState navigation
...
didFinish only fires for cross-document (full page) navigations. After
loading https://claude.ai/login the SPA redirects authenticated users
via history.pushState to /new — this changes the URL visually but never
fires didFinish, so auth was never detected.
KVO on webView.url fires for every URL change including SPA pushState,
covering the case where the app routes client-side after the initial
page load. Both KVO and didFinish now call the same checkCurrentURL
helper so detection is not missed regardless of navigation type.
2026-05-11 10:46:11 +02:00
superdooper86
ad2ff3a7b6
fix: revert to URL-based auth detection; remove browser headers
...
Every JS/cookie-based detection approach failed. Reverting to the
simplest reliable mechanism: if the WebView navigates to any non-login,
non-auth URL, the server redirected us after sign-in — fire onAuthenticated.
Also removing the browser headers added in beta.6. The 1.1.4 version
worked without them and they may be triggering server-side bot detection.
All-cookies approach (beta.8) is kept.
2026-05-11 10:35:30 +02:00
superdooper86
b8826ace9b
fix: NSNumber cast and use .page world in callAsyncJavaScript auth check
...
callAsyncJavaScript returns JS numbers as NSNumber (Double-backed).
'val as? Int' silently returns nil for 200.0, so onAuthenticated never
fired. Fixed with 'val as? NSNumber then .intValue == 200'.
Also switched content world from .defaultClient to .page so the fetch
runs in the same JS context as the loaded page.
2026-05-11 10:22:59 +02:00
superdooper86
ac7ffe81af
fix: use WebView JS fetch for auth detection; send all cookies to API
...
Cookie domain filtering was wrong — the session token domain is unknown
and was never found by claude.ai/anthropic.com filters.
LoginView: replace getAllCookies domain check with callAsyncJavaScript
that fetches /api/bootstrap directly from the WebView. The WebView uses
its own full session (all cookies, any domain) so auth is detected
correctly regardless of where the token lives.
UsageViewModel: claudeCookieHeader now sends all cookies from the app's
WKWebsiteDataStore instead of filtering by domain. checkInitialSignInState
likewise checks for any cookie.
2026-05-11 10:06:33 +02:00
superdooper86
aaed64484c
fix: include anthropic.com cookies in all auth checks and API requests
...
Claude session cookies are on anthropic.com, not claude.ai. The login
window was not detecting auth (Cancel stayed, no Done) and API calls
were sent without the actual session token.
- claudeCookieHeader: include anthropic.com cookies so the token is
sent to the usage/bootstrap endpoints
- checkInitialSignInState: detect anthropic.com cookies on startup
- didFinish in LoginView: fire auth when anthropic.com cookies found
- signOut: clear anthropic.com data alongside claude.ai
- notAuthenticated catch: set isSignedIn = false so Settings stays
in sync with the main panel
2026-05-11 09:49:57 +02:00
superdooper86
e939bdb88b
fix: add browser headers to all API requests to resolve 403 on usage endpoint
...
Claude's usage/prepaid/overage endpoints require Origin, Referer, and
User-Agent headers to pass CORS/auth checks. Without them, bootstrap
succeeds (more permissive) but usage returns 403 -> 'Not signed in'.
Added claudeAPIRequest(for:) helper that sets all required browser-like
headers on every request. Bootstrap, usage, prepaid, overage, and the
orgs fallback all go through it.
2026-05-11 09:36:35 +02:00
superdooper86
de71ec2794
fix: load /login instead of root so premature auth detection is prevented
...
Loading https://claude.ai as the start URL caused didFinish to fire on
the landing page while stale/tracking cookies were already in
WKWebsiteDataStore. The 'any claude.ai cookie' check then fired
immediately, closing the login sheet before the user could sign in.
Loading /login ensures the URL-guard catches the initial page load and
only checks cookies after the real post-login redirect.
2026-05-11 09:25:45 +02:00
SuperDooper
d2eac62897
chore: bump to v1.2.1-beta.4
2026-05-11 08:58:05 +02:00
SuperDooper
8c64fc50ad
fix: checkInitialSignInState uses any claude.ai cookie, not specific names
2026-05-11 08:58:04 +02:00
SuperDooper
b2c138f665
fix: detect auth by any claude.ai cookie, not specific cookie names
2026-05-11 08:58:02 +02:00
SuperDooper
ecbae7d7ca
chore: release notes for v1.2.1-beta.3
2026-05-10 23:40:31 +02:00
SuperDooper
37a039e1d3
chore: bump to v1.2.1-beta.3
2026-05-10 23:40:30 +02:00
SuperDooper
8f3ead2f65
fix: replace stale 'No API key configured' with correct signed-out message
2026-05-10 23:40:29 +02:00
SuperDooper
94430e00ba
chore: release notes for v1.2.1-beta.2
2026-05-10 23:28:40 +02:00
SuperDooper
7b0368b001
chore: bump to v1.2.1-beta.2
2026-05-10 23:28:39 +02:00
SuperDooper
4629aeffbc
fix: load claude.ai instead of /login so already-signed-in users are detected
2026-05-10 23:28:38 +02:00
SuperDooper
73b251a1e9
chore: release notes for v1.2.1-beta.1
2026-05-10 23:14:48 +02:00
SuperDooper
7bab6a0df0
chore: bump to v1.2.1-beta.1
2026-05-10 23:14:47 +02:00
SuperDooper
db6380fa66
fix: detect sign-in state from cookies on startup, add orgs API fallback for org ID
2026-05-10 23:14:45 +02:00
SuperDooper
85ac329d36
chore: release notes for v1.2.0
2026-05-08 23:19:24 +02:00
SuperDooper
a0fb6eabcf
chore: bump to v1.2.0
2026-05-08 23:19:23 +02:00
SuperDooper
13387888b2
chore: release notes for 1.1.4-beta.7
2026-05-08 23:10:35 +02:00
SuperDooper
44be1649a1
chore: bump to 1.1.4-beta.7
2026-05-08 23:10:34 +02:00
SuperDooper
1160712e1b
fix: remove ScrollView from main panel so popover auto-sizes to content
2026-05-08 23:10:22 +02:00
SuperDooper
526752dc36
chore: release notes for 1.1.4-beta.6
2026-05-08 23:04:54 +02:00
SuperDooper
a2d983b555
chore: bump to 1.1.4-beta.6
2026-05-08 23:04:53 +02:00
SuperDooper
0d807c2285
fix: Session Diary — remove Claude icon/header, split stats left/right
2026-05-08 23:04:52 +02:00
SuperDooper
1c42433145
Windows beta release win-v0.0.1-beta.49
2026-05-08 20:46:42 +00:00
SuperDooper
c0ac2e5a66
Windows beta release win-v0.0.1-beta.48
2026-05-08 20:39:17 +00:00
SuperDooper
405e65f9f7
Windows beta release win-v0.0.1-beta.47
2026-05-08 20:28:41 +00:00