What's new in v0.26.2
Floating subtitles, now on Chrome and Edge. The Electron-only feature shipped in v0.26.0 (discussion #118) now works the same way in the browser extension (issue #226).
🎉 New — Subtitle mode in the browser extension
The same translucent, draggable, resizable subtitle bar from the desktop app now floats over your meeting tab in Chrome and Edge. Click the Subtitle button in the side panel during an active session and the overlay appears on top of the meeting; the side panel keeps its full chrome (Settings / Logs / Subtitle toggle) so you can keep operating the app while the bar floats over the conversation.
- Works on the same nine meeting sites Sokuji already supports — Google Meet, Microsoft Teams (live/microsoft/cloud), Zoom, Gather (both versions), Whereby, Discord, Slack.
- Floats on the meeting page, not in the side panel — implemented via a transparent in-page overlay so it sits over the meeting UI itself, not in a separate window.
- Drag from any edge or corner — same 8-direction resize affordances as Electron, with a 1-to-1 cursor lock that stays accurate when the cursor wanders outside the bar.
- Lock toggle — when on, the cursor doesn't change over the edges and the bar can't be moved or resized.
- Auto-cleanup — closing the side panel, switching tabs, reloading the meeting page, or reloading the extension dismisses the overlay cleanly.
- Settings carried over — same font-size buttons, display modes, background opacity, colors, etc., as the desktop subtitle bar.
✨ Improved — Subtitle font-size range and default height
- Minimum subtitle font size lowered from 16 px to 12 px — two extra clicks at the small end of the range.
- The extension overlay's default height bumped from 80 px to 140 px so it fits at least two lines of the default font without scrolling.
🐛 Fixes
- Electron: subtitle mode no longer shrinks the main window on exit. When you exited subtitle mode after moving / resizing the subtitle bar, the window would sometimes restore to subtitle size instead of its pre-subtitle bounds. Fixed.
- Extension: language pair in the subtitle bar now matches your actual selection. Previously, switching to certain providers (Local Inference, OpenAI Translate, Volcengine ST/AST2, OpenAI Compatible) would leave the bar showing the provider's hardcoded defaults — for Local Inference, that meant a permanent "JA → EN" regardless of the language pair you actually picked. Fixed.
- Refresh prompt for stale meeting tabs. If you reloaded the extension while a meeting tab was already open and then clicked Subtitle, the (now-orphaned) tab had no receiver for the inject message and the button silently failed. The button now shows a toast: "Refresh the meeting tab and try again."
🌏 Localization
- Three new strings (subtitle-takeover hint, exit-button label/title, refresh-page hint) translated into all 30 supported locales.
🔧 Internal
- New
SubtitleSurfaceabstraction withElectronSubtitleSurfaceandExtensionContentScriptSubtitleSurfaceimplementations;settingsStore.enterSubtitleMode/exitSubtitleModeroute through the active surface. - Dedicated
subtitleStoreextracted fromsettingsStorefor subtitle UI state (font size, colors, display modes, overlay bounds). Independent of the main panel's display modes. - Side panel ↔ iframe communication uses a long-lived
chrome.runtime.Portto mirror session items, session lifecycle, and provider / language config. - TOCTOU race in
enterSubtitleMode/exitSubtitleModeclosed by claiming the flag synchronously before awaiting the surface.
Full Changelog: v0.26.1...v0.26.2