Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
19379169b9 | ||
|
|
8a104ad8d0 | ||
|
|
59c911dff4 | ||
|
|
127fc82b2a |
@@ -708,7 +708,9 @@ public partial class PopupWindow : Window
|
||||
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
await Task.Delay(3000);
|
||||
// Re-navigate background browser with fresh session, then refresh immediately
|
||||
await Application.Current.Dispatcher.InvokeAsync(
|
||||
() => App.BackgroundBrowser.ReloadAsync()).Task.Unwrap();
|
||||
await VM.RefreshAsync();
|
||||
await Application.Current.Dispatcher.InvokeAsync(InitSettings);
|
||||
});
|
||||
|
||||
@@ -1,23 +1,5 @@
|
||||
## What's new in beta.49
|
||||
|
||||
### Architecture
|
||||
- All data (usage, plan, overage, prepaid credits) now fetched via the persistent background WebView2 — the same always-live session as the macOS app, so Cloudflare cookies never expire between refreshes
|
||||
- HttpClient path kept only as a brief startup fallback before the browser is ready
|
||||
- Settings file simplified: only stores session signal, burn history, and user preferences — no more cached API responses
|
||||
## What's new in beta.63
|
||||
|
||||
### Bug fixes
|
||||
- Plan label (e.g. "Pro") now updates on every refresh, not just at login
|
||||
- Extra Usage Credits values now correct (were 100× too large)
|
||||
- Limit and balance now update live on every refresh
|
||||
- Refresh interval dropdown now shows "1 min", "2 min" etc. correctly
|
||||
- ComboBox no longer flashes bright blue when clicked
|
||||
- Buttons now show a visible pressed state
|
||||
- Footer "Updated X ago" counter now ticks every second; shows "X min, Y sec ago" past 60 s
|
||||
- Removed stray sparkline bars from the 5 h and 7 d limit cards
|
||||
- App window now shown on launch
|
||||
|
||||
### UI improvements
|
||||
- Gauge percentage larger, "used" label removed
|
||||
- Each limit card now shows an "after reset" or "today HH:MM" badge
|
||||
- Session Diary card redesigned to match macOS layout (stats row + sparkline, no Claude header)
|
||||
- Reset date moved inline with time remaining
|
||||
- After signing in, usage data now loads immediately instead of waiting 3 seconds
|
||||
- Background browser re-navigates to claude.ai right after login so the live session is ready for the first refresh
|
||||
|
||||
@@ -129,6 +129,20 @@ public sealed class WebViewFetchWindow : Window
|
||||
return await tcs.Task;
|
||||
}
|
||||
|
||||
// Re-navigate to claude.ai with the current session (call after sign-in).
|
||||
public async Task ReloadAsync()
|
||||
{
|
||||
if (_wv.CoreWebView2 == null) { await InitAsync(); return; }
|
||||
_readyForScript = false;
|
||||
var navDone = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||
EventHandler<CoreWebView2NavigationCompletedEventArgs>? h = null;
|
||||
h = (_, e) => { _wv.CoreWebView2.NavigationCompleted -= h; navDone.TrySetResult(e.IsSuccess); };
|
||||
_wv.CoreWebView2.NavigationCompleted += h;
|
||||
_wv.CoreWebView2.Navigate("https://claude.ai");
|
||||
await Task.WhenAny(navDone.Task, Task.Delay(15000));
|
||||
_readyForScript = navDone.Task.IsCompletedSuccessfully && navDone.Task.Result;
|
||||
}
|
||||
|
||||
// ── Shared init ───────────────────────────────────────────────────────────
|
||||
|
||||
private int _initGuard;
|
||||
|
||||
Reference in New Issue
Block a user