Changelog
v0.8.82
2026-10
- Clip and transcript titles no longer end in " - YouTube" (existing ones display cleanly too).
- After creating a clip, if the browser couldn't copy the link automatically, you now see the link to copy instead of a false "copied".
v0.8.81
2026-10
- Fixed an invisible caption area below the video in panel mode that showed a "drag to move" tooltip and blocked clicks on the page underneath (such as YouTube's buttons below the video).
v0.8.80
2026-09
- Steadier on weak networks: a stuck or silently dead connection is detected within seconds and reconnected, instead of sitting on "connecting".
- When you go offline, captions show "offline" and resume the moment the network returns, instead of giving up after a long outage.
- Fixed opening the popup on a bad network sometimes switching off "Save transcript".
- Clip creation now reports network problems instead of spinning forever.
v0.8.79
2026-09
- Captions no longer drift later during long sessions: fixed a cumulative timing error in the server's audio pacing (previously up to several seconds per hour).
- After a network hiccup or reconnect, the audio backlog is now caught up automatically so captions return to real time sooner.
- Fewer spurious disconnects from a single missed heartbeat.
v0.8.78
2026-09
- Shared clips now play with a little lead-in and tail so the first and last words aren't cut, and captions stay up through short pauses instead of flickering.
- Security hardening: web sign-ins are now server-side sessions that end immediately on logout or account suspension (you'll need to sign in again once).
v0.8.77
2026-09
- Keep recoverable gateway reconnects out of the extension error list and show a failure only after retries are exhausted.
v0.8.76
2026-09
- Add clip-selection diagnostics for the exact blocking boundary and pending captions after a reconnect.
v0.8.75
2026-09
- Fix long-connection epoch switches occasionally getting stuck connecting, starting a duplicate transcription session, or writing a later session into an earlier transcript archive.
v0.8.74
2026-09
- Ads, seeking, and pausing now switch caption segments on one long-lived connection instead of rebuilding the connection to the server: segment switches are faster and steadier, with fewer reconnect-induced caption gaps.
v0.8.73
2026-09
- Internal gateway change: one connection can now host multiple sequential transcription sessions (groundwork for keeping the connection alive across epoch switches). Backward-compatible; no user-visible behavior change.
v0.8.72
2026-09
- Internal diagnostics: an unverified caption now logs its capture interval and the crossed timeline gap, only when the debug flag is on. No user-visible behavior change.
v0.8.71
2026-09
- Reconnects no longer replay a growing audio backlog: anything older than a real-time latency budget (~3s) is dropped and playback resumes at the live edge, so one network blip no longer lags every later caption. The skipped span becomes one explicit caption gap (shown with an approximate duration when clipping); captions on each side stay clippable, but a clip cannot cross the real gap.
v0.8.70
2026-09
- Internal gateway observability: every connection close is now attributed with a structured reason (deliberate epoch reseal vs. send stall, backlog, provider, or transport drop) to diagnose frequent reconnects. No user-visible behavior change.
v0.8.69
2026-09
- Fix a blank caption line (a silence/music segment with no source text) being wrongly and permanently shown as ‘translating…’. With no source there is nothing to translate, so such empty rows no longer claim the translating marker.
v0.8.68
2026-09
- Fix a caption remaining permanently pending when it spans a short unobserved player-state change. Its start and end now use the separately observed positions on each side without interpolating inside the gap. Long observation gaps, unproven pause resumes, and confirmed seeks remain non-crossable.
v0.8.67
2026-09
- Fix short unobserved player-state changes being treated as non-crossable interruptions. They no longer restart transcription, and independently mapped captions on either side can form a clip without inventing timing inside the gap. Long observation gaps, confirmed seeks, dropped audio, and abandoned partials remain blocked.
v0.8.66
2026-09
- Refine clip validation across reconnects: an ordinary unexpected reconnect no longer invalidates finalized, independently video-mapped captions on either side, so those clips can be created. Confirmed local frame loss, queue overflow, an abandoned partial, or a real playhead jump remains a hard boundary with an accurate message.
v0.8.65
2026-09
- Complete connection lifecycle cleanup: a new WebSocket no longer inherits the previous connection's stall timer, and start/stop operations from the popup, keyboard shortcut, and tab closure now share one serialized path with consistent startup-failure cleanup.
v0.8.64
2026-09
- Fix repeated live-caption reconnects during brief network jitter by aligning the send queue with the stall watchdog and resetting retry attempts only after a stable connection. Content audio resuming after an ad or pause is now buffered while the previous provider session seals instead of being discarded, with safer stale-script retirement and serialized start/stop commands.
v0.8.63
2026-09
- Fix a startup race where a late capture-start response could overwrite an already-ready session with a stale connecting status. The connection message now appears only during the real handshake, while sessions started during an ad explicitly wait for video content. Stale page scripts also retire quietly after an extension reload instead of repeatedly throwing runtime.sendMessage errors.
v0.8.62
2026-09
- The popup now always shows the installed version. Version checks and extension downloads bypass caches so installed clients promptly discover releases and fresh downloads cannot reuse an older package.
v0.8.61
2026-09
- Tighten end-to-end continuity proof for clip epochs: abrupt disconnects always create a non-crossable boundary; an ad/preview handoff becomes crossable only after the old session finishes, the new session is ready, and the gateway confirms its audio backlog reached the provider. Rapid mute/resume keeps the gate closed until its resume operation executes, late captions use capture-time evidence to retain their original video, and legacy performance-clock snapshots no longer enter the Unix timeline.
v0.8.60
2026-09
- Clip timing now uses explicit transcription epochs for ads, preview seeks, playback seeks, and reconnects. A boundary becomes crossable only after the provider finishes the old epoch; provisional captions stay out of the clip ledger, while unsafe boundaries block only selections that cross them. Ordinary pause/resume remains on one content timeline, and ad audio cannot leak into the next caption epoch.
v0.8.59
2026-09
- Fix two spurious driftseek boundaries after leaving clip preview, which could strand one caption across sections and block later clips. Restoring the original playhead now passes through content-resuming, isolating asynchronous seek events and muting capture until the player confirms the source position; real-jump errors are also reported accurately.
v0.8.58
2026-09
- Fix every caption having capture timing but still failing as after-last: when the page predates a system sleep and audio capture is created afterward, their performance epochs can differ by the entire sleep. Video and audio now share the cross-context Unix clock, with clock-offset diagnostics added.
v0.8.57
2026-09
- Unify clip timing around the standard player-ad state model: one coordinator owns content playback, ads, content resumption, and clip preview. After the ad flag clears, the ad clock remains isolated and transcription stays muted until the source position and resume trajectory are reconciled; delayed callbacks reconstruct the correct resume point.
v0.8.56
2026-09
- Fix mid-roll ads splitting the source-video timeline and preventing one clip across captions before and after the ad: the last content position is frozen during the ad, and sampling waits for YouTube to restore the source-video clock instead of mistaking the ad currentTime for a seek.
v0.8.55
2026-09
- Fix all existing captions becoming unclippable after the 0.8.54 upgrade: legacy timeline anchors are now migrated safely. YouTube's noisy seeking events and a briefly stalled media clock during pause/resume no longer invalidate continuity, while real playhead jumps remain blocked.
v0.8.54
2026-09
- Fix pause/resume clip failures in the time-mapping model: media events and periodic samples now share one observation path, so delayed resume callbacks are no longer mistaken for seeks. Local timing before and after a pause stays stable, and a spanning clip is enabled only after subsequent playback confirms the connection; real seeks and unproven gaps remain blocked. Clip-mode pauses and preview seeks also no longer pollute later caption timing.
v0.8.53
2026-09
- Fix clips still failing across a pause-then-resume (the 'avoid sentences spanning a seek' error): YouTube fires a seeking event on pause/resume/buffer too, which was taken as a real seek and shredded the continuous timeline into pieces. The event no longer splits the timeline — only a real position jump (backward, or forward faster than real time) counts as a seek — so a pause/resume stays one section and a pause-spanning clip works.
v0.8.52
2026-09
- Systematic rewrite of the video timeline into an event-driven model: the video's own play/pause/rate/seek events and ad state define the timeline directly — a continuous unsought stretch is one section, pauses and ads are just rate-0 keyframes, and only a real seek splits a section. It no longer infers the mapping from dense sampling and pause/ad heuristics, fixing at the root the recurring failures to clip across a pause, ad, seek, reload, or player swap.
v0.8.51
2026-09
- Fix clips failing across an ad (especially mid-roll): the ad isn't sampled and content resumes in place, which used to read as a seek and split the section. A playhead frozen in place across a gap is now bridged as continuous content (like a pause/stall/sleep), so a clip spanning an ad or pause works.
v0.8.50
2026-09
- A swap of the video element for the same video (quality change, resume re-init, theater/miniplayer) no longer resets the timeline: it keeps the timeline and lets the playhead-continuity check decide, so a clip spanning such a swap (e.g. across a pause) is no longer wrongly rejected as discontinuous.
v0.8.49
2026-09
- Fix two accuracy issues in pause coalescing: keep the pause start fixed and extend only its end (so a caption in the last pre-pause moment isn't compressed), and treat a same-position long gap as a pause (not a break) when restoring, so a pause-spanning clip stays continuous after a reload or player rebuild.
v0.8.48
2026-09
- Fix clips failing across a long pause: paused sampling is coalesced into one marker and the timeline is now bounded by sample count rather than wall-clock time, so a long pause no longer ages the pre-pause captions out of the buffer — a selection spanning the pause clips normally.
v0.8.47
2026-09
- Mute upstream audio during ads: ad audio is no longer transcribed into captions, so there are no more unclippable 'ad captions' — including a pre-roll already playing when capture starts.
v0.8.46
2026-09
- More precise ad boundaries: a MutationObserver now watches the player's ad class, so ad start/end is detected instantly instead of up to a 100ms poll later.
v0.8.45
2026-09
- Harden ad detection: besides the player's ad class, a visible ad control is used as a backstop (only when actually on screen, so leftover hidden markup can't wedge it on), making it more resilient to a YouTube redesign.
v0.8.44
2026-09
- Fix the timeline being shredded into a new section every 0.1s during ads/seeks (which made almost nothing clippable): ads and seeks now just pause sampling instead of breaking every tick, with a single clean break when content resumes — and if content actually kept playing (a false ad-positive) the gap is bridged so those captions still map.
v0.8.43
2026-09
- Fix pause/buffer resume fragmenting the timeline into many sections (which made spanning selections unclippable): only a real seek — the playhead jumping backward or forward faster than real time — starts a new section now; resuming from a standstill after a pause is no longer mistaken for a jump.
v0.8.42
2026-09
- Fix captions from earlier in a session becoming unclippable after YouTube swaps its <video> element (theater/miniplayer/quality changes) mid-watch: the timeline now folds its existing anchors into a fallback layer on reset instead of discarding them.
v0.8.41
2026-09
- Fix clips failing when they span a pause-then-resume: capture timestamps relied on the audio output clock, which freezes while paused, shifting every later timestamp out of alignment with the video timeline. They are now stamped from the pause-immune audio-context clock instead.
v0.8.40
2026-09
- Clips still work for captions from before a page reload: video-timeline anchors are now persisted and restored on reload, so earlier lines no longer fail to map. Also, the brief re-buffer when resuming from pause no longer splits a continuous video into two sections, so a selection spanning a pause can be clipped.
v0.8.39
2026-09
- Fix cross-session translation pairing after reconnects and stale clip text when the correct translation arrives later.
- Recover missing timing only between verified anchors in the same session and continuous section, using video samples for speed changes and pauses. Unknown timing and seek boundaries remain pending rather than producing incorrect clips.
v0.8.38
2026-09
- Backgrounding no longer fragments clips: when a hidden tab throttles sampling to ~1Hz, a continuously playing stretch is bridged instead of being flagged discontinuous; a real seek, or a sleep/suspend that froze the playhead, still breaks the section correctly.
v0.8.37
2026-09
- Fix an edge case in clip timing: a verified exact position is no longer dragged forward by the monotonic guard — it always keeps its precise value (only estimated lines are aligned).
v0.8.36
2026-09
- More precise clip timing: an unverified caption is now placed from the model's own audio timestamps plus the audio→video offset learned from any verified line (keeping real durations and pauses), instead of a fixed-latency guess; the offset is carried forward so lines still map exactly even after the sample window ages out or the whole screen is unverified.
v0.8.35
2026-09
- Fix clips failing after a long watch and some captions being unselectable as the start: every caption is now placed by its player-time estimate the moment it appears, verified lines use exact timing and the rest use the estimate, so none are dropped or made unselectable once they age out of the sample window; generation is refused only when the timing genuinely collapses (e.g. lines produced while paused).
v0.8.34
2026-09
- To isolate the fix: keep the video-timeline sample buffer at 10 minutes and retain only the retry-verification of every unverified caption (including off-screen ones).
v0.8.33
2026-09
- Fix clips failing after a long watch: the video-timeline sample buffer now keeps 30 minutes (was 10), and verification is retried for every not-yet-verified caption (not only on-screen ones) — lines that missed their window during a brief timeline break and then scrolled off can verify later.
v0.8.32
2026-09
- More accurate message: a cross-section selection (a seek or backgrounding) is no longer mislabelled as over 10 minutes — it now correctly says to select within one continuous section.
v0.8.31
2026-09
- Fix broken clip duration: when the estimate fallback kicked in and the estimates had collapsed (e.g. lines recorded while paused, all sharing one time), it produced a clip with many lines crammed into a fraction of a second. Detect the collapse and show a wait message instead.
v0.8.30
2026-09
- Fix source/translation misalignment: when the engine segments the two streams differently, sequence-based pairing could drift by a whole line. Pair by shared audio-time overlap instead (a source utterance and its translation carry the same audio range), realigning them; sequence/position remain as fallback.
v0.8.29
2026-09
- Internal diagnostics: optional debug logging to pin down why capture timing fails to verify in long sessions (off by default; no user-facing change).
v0.8.28
2026-09
- Fix: after a long watch / with many captions, making a clip often failed with 'no finalized captions with verified timing'. When nothing in the window has verified capture timing, fall back to the display-time estimate so clipping still works (slightly less precise); precise timing is still used when available.
v0.8.27
2026-09
- Nicer clip selection: after the start line, move down to preview the duration live (m:ss); the range is marked with a red rail, rounded ends and endpoint handles, and the duration shows in a pill.
v0.8.26
2026-09
- Fix a misleading toast: a discontinuous selection and a genuinely-too-long one both showed the same '10 minutes' message. Now each reason is reported accurately — discontinuous (a seek or backgrounding splits it), over 10 minutes, or too many captions.
v0.8.25
2026-09
- Fully fix missing clip captions: 'finalized' was coupled to capture-timing verification, so unverified lines never even reached interpolation. Decouple them — a bilingually-final line is selectable and, if unverified, interpolated from neighbours; whole stretches after a pause are no longer missing.
v0.8.24
2026-09
- Fix missing clip captions: a line whose capture timing couldn't be verified (e.g. right after a pause) is no longer dropped — it's interpolated between verified neighbours in the same section, so clips no longer have large caption gaps.
v0.8.23
2026-09
- Clip timeline reworked: each line is anchored to the source video's real seconds via the capture clock (correlated through AudioContext, unaffected by port/ASR latency) and mapped per video section — pauses, speed changes and seeks no longer stretch or misalign it, and selections spanning a seek are rejected. Also fixes cross-device login authorization, unauthorized transcript writes, reconnect timestamps and cross-day quota.
v0.8.22
2026-09
- Sturdier clip timing: when a clip has any audio anchors, an unmapped line's (possibly stale) display estimate is no longer trusted — it's placed by interpolating between its mapped neighbours, so a bad value lands in the right spot, not just in order
v0.8.21
2026-09
- Fix: a single mis-mapped line could reorder the clip and truncate its span (captions fully out of sync). Selected lines are chronological, so enforce non-decreasing starts — a bad value is clamped up instead of collapsing the clip
v0.8.20
2026-09
- Steadier clip timing: map all lines at build with one shared offset (consistent within a clip, no per-line drift) and guard the offset calibration against garbage samples
v0.8.19
2026-09
- Fix: 0.8.18 mis-anchored the audio clock so clips were always 1s — audioMs counts from the engine session start, not our anchor; self-calibrate the offset from each final's arrival (minimum). Clip durations are correct again
v0.8.18
2026-09
- First-principles caption timing: build an audio-position↔video-time map while streaming and anchor each line to its true video time — latency-free and robust to pauses/seeks; no more fixed-latency guess
v0.8.17
2026-09
- Fix: clip re-timing anchored the first line's start to its display time (so a long first line shifted the whole clip). Anchor by the averaged audio→video offset (t−endMs) across lines instead, removing the intermittent desync
v0.8.16
2026-09
- Clip captions are re-timed by the engine's real audio timestamps (true inter-line durations, anchored to the first line), removing the per-sentence drift a fixed latency guess caused; falls back to the estimate when timestamps are absent
v0.8.15
2026-09
- Leaving clip mode (cancel or make) restores the playhead to where you opened it instead of the last previewed line; also guards against re-entering clip mode
v0.8.14
2026-09
- Fix: a still-translating last line could enter a clip with an empty translation after auto-pause — only fully-formed lines (source + translation ready) are now selectable
v0.8.13
2026-09
- Entering clip mode auto-pauses the video so the frame is steady while you select; playback resumes on exit if it was playing
v0.8.12
2026-09
- Clipping now happens right in the caption panel: after ✂, the caption lines become tappable in place — tap the first and last to make a clip; no separate list panel
v0.8.11
2026-09
- Clip by transcript: after ✂, tap the first and last caption line to bound the clip — faster and more precise than a timeline, and limited to translated lines
v0.8.10
2026-09
- Range bar back to the standard full-video timeline: shows the whole video, the untranslated region is dimmed, and handles/selection are clamped inside the captioned span
v0.8.9
2026-09
- The clip range is now confined to the translated region — the track is the captioned span, so handles and the selection can't be dragged past where captions exist
v0.8.8
2026-09
- The clip picker now embeds into the page (injected right under the video, in the layout) instead of floating over the title; style-isolated, with a floating fallback off-YouTube
v0.8.7
2026-09
- Caption-aware range bar: per-sentence tick marks, snap-to-sentence handles, a playhead marker, pause-while-dragging preview, and a draggable selection
v0.8.6
2026-09
- The clip range panel now sits directly under the video at its width; drag-preview seeking is frame-throttled with fastSeek for smoothness
v0.8.5
2026-09
- The clip range bar now maps to the full video timeline (with the captioned span highlighted) and seeks the video as you drag a handle to preview
v0.8.4
2026-09
- The caption panel now fades in/out on start/stop instead of hard cutting; respects reduced-motion
v0.8.3
2026-09
- Fix: clips could miss the last lines (translation still settling); capture each line as soon as it appears
v0.8.2
2026-09
- Pick clip start/end by dragging handles on a track; the share page now plays only the clipped segment (scrubbing out snaps back)
v0.8.1
2026-09
- Clip polish: skip ad segments, pick the main player, clip from immersive mode too, and a server-side max clip length
v0.8.0
2026-09
- New: one-click shareable bilingual clips — hit ✂ in the caption overlay to turn the last ~60s into a share link (video served by YouTube; YouTube only for now)
v0.7.10
2026-09
- Daily free quota raised from 5 to 10 minutes
v0.7.9
2026-09
- Saved transcripts are now named by the video/page title in the dashboard (older ones still show by time); exports use the title as the filename too
v0.7.8
2026-09
- Fix: the 'Save transcript' toggle wasn't persisted until Start (lost on reopening the popup) — now saved the moment you toggle it
v0.7.7
2026-09
- More resilient reconnect: backoff capped at 15s with jitter and a ~1.5-minute retry window, so brief outages (Wi-Fi handoff, sleep/wake) recover automatically instead of failing
v0.7.6
2026-09
- The popup now detects your plan: Pro users can tick 'Save transcript'; others see an upgrade prompt and the option is disabled
v0.7.5
2026-09
- Daily free quota adjusted from 15 to 5 minutes
v0.7.4
2026-09
- Fix: 'Cannot read properties of undefined (reading getMessage)' when starting translation (the offscreen audio context has no chrome.i18n)
v0.7.3
2026-09
- Fix: the popup no longer shows an empty red bar at the top — the update notice appears only when a new version exists
v0.7.2
2026-09
- Language picker expanded to all 22 supported languages (hubbed through Chinese/English)
- Unsupported language pairs are flagged in the popup instead of being silently rejected
- The whole UI follows the browser language (EN/中文) — popup, on-page caption overlay, side panel and error messages — and picks a smart default translation direction
v0.7.1
2026-09
- Daily quota now meters real translation time — silent/idle streaming no longer counts
- Clearer copy: translation is free for all; only saving transcripts is Pro
v0.7.0
2026-09
- Rebranded as Tabtongue with a new icon and popup
- Gateway URL moved to advanced; added a 'Get API Key' link
v0.6.0
2026-09
- Pro: save transcripts — replay and export source/translation in the dashboard
v0.5.0
2026-09
- Account login + daily free quota (15 min/day)
v0.4.6
2026-09
- Auto-reconnect when the upstream drops; fixed pairing after reconnect