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
SuperDooper
1c7433ebea
Windows beta release win-v0.0.1-beta.46
2026-05-08 20:19:52 +00:00
SuperDooper
a39ef800e8
Windows beta release win-v0.0.1-beta.45
2026-05-08 20:05:58 +00:00
SuperDooper
76dec8b85d
Windows beta release win-v0.0.1-beta.44
2026-05-08 20:00:55 +00:00
SuperDooper
2f04f8581c
Windows beta release win-v0.0.1-beta.42
2026-05-08 19:41:45 +00:00
SuperDooper
788c066a1e
Windows beta release win-v0.0.1-beta.41
2026-05-08 19:39:07 +00:00
SuperDooper
31280d4ab2
Windows beta release win-v0.0.1-beta.40
2026-05-08 19:33:28 +00:00
SuperDooper
7b1c5bbf8e
Windows beta release win-v0.0.1-beta.39
2026-05-08 19:19:11 +00:00
SuperDooper
f2ba44bbaa
Windows beta release win-v0.0.1-beta.38
2026-05-08 19:07:16 +00:00
SuperDooper
de1fffe0e3
Windows beta release win-v0.0.1-beta.37
2026-05-08 19:00:02 +00:00
SuperDooper
e80f07d1b9
Windows beta release win-v0.0.1-beta.36
2026-05-08 17:40:07 +00:00
SuperDooper
63ef2005a4
Update release notes for 1.1.4-beta.5
2026-05-08 19:31:20 +02:00
SuperDooper
5ad7bb26f0
Bump version to 1.1.4-beta.5
2026-05-08 19:31:18 +02:00
SuperDooper
132a2a8f8d
Consolidate bootstrap into single fetchBootstrap() call
2026-05-08 19:31:06 +02:00
SuperDooper
9bcbb2ae7d
Update release notes for 1.1.4-beta.4
2026-05-08 19:26:58 +02:00
SuperDooper
c9384f6424
Bump version to 1.1.4-beta.4
2026-05-08 19:26:57 +02:00
SuperDooper
e4693fc18f
Fix fetchUserEmail return type and capabilities subscript
2026-05-08 19:26:48 +02:00
SuperDooper
84a8592bae
Windows beta release win-v0.0.1-beta.35
2026-05-08 17:24:24 +00:00
SuperDooper
bdd2038364
Update release notes for 1.1.4-beta.3
2026-05-08 19:22:51 +02:00
SuperDooper
fd61face77
Bump version to 1.1.4-beta.3
2026-05-08 19:22:50 +02:00
SuperDooper
1f58a81a26
Parse plan label from bootstrap on every refresh via fetchUserEmail
2026-05-08 19:22:41 +02:00
SuperDooper
b49ac23863
Update release notes for 1.1.4-beta.2
2026-05-08 19:19:50 +02:00
SuperDooper
01d268c3e5
Bump version to 1.1.4-beta.2
2026-05-08 19:19:49 +02:00
SuperDooper
871d5245ac
Parse plan label from capabilities array instead of plan_type
2026-05-08 19:14:53 +02:00
SuperDooper
0524f9b791
Parse plan label from bootstrap API instead of hardcoding
2026-05-08 19:09:06 +02:00
SuperDooper
d55bad01db
Revert workflow to git push now that ruleset is fixed
2026-05-08 17:09:27 +02:00
SuperDooper
7bc72e240b
Revert workflow to git push now that ruleset is fixed
2026-05-08 17:09:26 +02:00
SuperDooper
d77ed23d09
Fix: use GitHub API to update files instead of git push to protected main
2026-05-08 17:06:06 +02:00
SuperDooper
6136b0ded0
Fix: use GitHub API to update files instead of git push to protected main
2026-05-08 17:06:00 +02:00
SuperDooper
aba7168448
Windows beta release win-v0.0.1-beta.33
2026-05-08 15:03:42 +00:00
SuperDooper
a8c2083397
fix: remove hardcoded orgId from cookie primer URL
2026-05-08 16:54:48 +02:00
SuperDooper
ad23446ed4
chore: release notes for v1.1.4-beta.1
2026-05-08 16:52:17 +02:00
SuperDooper
d8b75d279c
chore: bump version to 1.1.4-beta.1
2026-05-08 16:52:16 +02:00
SuperDooper
2658ff7f6a
Windows beta release win-v0.0.1-beta.32
2026-05-08 14:51:18 +00:00
SuperDooper
e10d79e5a6
fix: fetch org ID dynamically from bootstrap instead of hardcoding it
2026-05-08 16:49:44 +02:00
SuperDooper
88daa27630
Windows beta release win-v0.0.1-beta.31
2026-05-08 14:47:27 +00:00
SuperDooper
b7c4958a74
Windows beta release win-v0.0.1-beta.30
2026-05-08 14:38:16 +00:00
SuperDooper
f46b13d967
Windows beta release win-v0.0.1-beta.29
2026-05-08 14:30:44 +00:00
SuperDooper
c449882ec6
Windows beta release win-v0.0.1-beta.28
2026-05-08 14:26:00 +00:00
SuperDooper
3c1a2ef1be
Windows beta release win-v0.0.1-beta.27
2026-05-08 14:17:00 +00:00
SuperDooper
c238db963b
Windows beta release win-v0.0.1-beta.25
2026-05-08 14:07:31 +00:00
SuperDooper
63c9a8582d
Windows beta release win-v0.0.1-beta.24
2026-05-08 14:02:59 +00:00