Compare commits

...
3 changed files with 20 additions and 22 deletions
+3 -1
View File
@@ -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);
});
+3 -21
View File
@@ -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
+14
View File
@@ -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;