when a loading tab was suspended its webview was destroyed while events
were still queued, and a finished load from the dying webview could
overwrite the tab's stored URL with an intermediate redirect URL. on
switch-back the tab then reloaded the wrong page and stayed blank.
each webview instance now gets a generation (epoch): events carry it and
are dropped when they don't match, and suspending a tab invalidates its
epoch. verified tab cycling still restores pages normally.
- the chrome webview and tab webviews used separate WebKit data managers
pointing at the same profile directory, so both raced on the same
hsts-storage.sqlite ('database is locked' / 'table soup_hsts_policies
already exists' on every launch). one WebContext is now created and
handed to every webview
- add --clear-cache: deletes the WebKit HTTP cache and service workers
(cookies, local storage and logins are kept)
- verified live on sway/wayland: youtube.com loads without the consent
wall and watch pages play video with hardware GL
- README: document the new flag
- tab webviews now share a WebContext backed by the profile dir
(~/.local/share/RustyWolf); WebKitGTK keeps cookies in memory unless a
persistent store is set, which made youtube.com re-show the consent
wall on every launch and made logins impossible to keep
- default user agent is WebKit's native one instead of the malformed
fake-Chrome + RustyWolf string that pushed sites into Chromium-only
code paths; --ua-chrome adds a clean Chrome UA as fallback
- --private keeps using an ephemeral in-memory session
- README: document --ua-chrome and the persistent profile
- Linux: the chrome webview is promoted into the GTK titlebar slot via
gtk_window_set_titlebar, so the window keeps GTK's client-side shadow,
edge-resizing and snap behaviour while drawing its own titlebar
- custom minimize / maximize-restore / close buttons in the tab strip row,
with hover states and tooltips; window state is synced on resize
- drag the window from the grip next to the tabs or from the empty tab
strip area; double-click toggles maximize
- '+' new tab button now sits right next to the last tab instead of the
far right edge
- window is created hidden and shown after the titlebar is installed,
avoiding Gtk's realized-window warning on startup
- non-Linux builds keep native decorations and hide the custom controls
- tab row height 34 -> 38 (chrome height 84 -> 88)
- single design-token block (colors/spacing/radii/type) drives every chrome surface
- tab strip and toolbar merged into one cohesive surface instead of stacked bars
- inline SVG icons replace text glyphs (back/forward/reload, ads, downloads, properties, new tab, KIR pin, close) with tooltips and aria labels
- tabs: rounded shapes, favicon letter badges, masked title truncation, hover close/pin, clear active/hover/suspended states
- URL bar: pill with site-info indicator (HTTPS lock / HTTP warning / internal page), focus glow, select-all on focus
- right-side controls grouped into one capsule; adblock and downloads show clear on/off states
- downloads panel and permission prompt restyled; properties page matches the same tokens
- behavior unchanged: all existing buttons, IPC commands and shortcuts (Ctrl+L/T/W, F5, Ctrl+R) work as before