SeaMeet Desktop is here — Record everything, miss nothing. Download free →

Recovery, Storage, and Troubleshooting

Chapter 6: Recovery, Storage, and Troubleshooting

Chrome will interrupt the extension. It's not a question of if — service workers sleep on idle, tabs get closed, Chrome reclaims memory under pressure. This chapter is how the extension survives, and what to do when the seams show.

The recovery model in one paragraph

Every recording writes its audio chunks and metadata to IndexedDB (the browser's local database) as it happens. If Chrome kills the extension mid-recording, the chunks stay behind. Next time you open the side panel, they appear in a saved on this device list with an Upload all button — signed-in users can retry the interrupted upload from where it left off, thanks to resumable multi-part uploads. Anonymous users can Download the audio to their computer or sign in and upload it later. Nothing is silently lost.

This section is a summary; the release notes for versions 1.6–1.9 have the full history of the classes of bug this replaced.

The "saved on this device" list

Opens at the top of the side panel when there are any locally staged recordings. Each row shows:

  • The meeting title (or "Untitled — <date>" for recordings that never got a title).
  • The captured duration.
  • The status (Ready to upload / Uploading / Failed / Finalized).
  • Buttons: Upload (signed-in) or Download / Delete.

Upload all at the top of the list drains the queue. It exits as soon as the replay sweep signals completion rather than waiting the full four-minute deadline, so it feels responsive.

When Chrome kills the extension mid-recording

Any of these can happen and are handled:

  • The tab you're recording is closed. The service worker gets a tabs.onRemoved event and triggers a normal Stop + upload drain before Chrome can put the service worker to sleep.
  • The recording tab crashes. The mic content-script relay dies; after 5 seconds of no PCM frames the side panel shows a "microphone signal was lost" warning. The recording is stopped and the chunks captured up to that point are staged for recovery.
  • The service worker is recycled by Chrome. On next cold-start the extension pings the offscreen document; if it responds, the recording continues seamlessly, if not, the offscreen is abandoned and the panel returns to setup with the staged chunks intact.
  • The offscreen document is reclaimed under memory pressure. Its pagehide handler force-stops the recording. A 30-second mic-signal-stall backstop inside the offscreen also stops the recording if every external signal is lost.
  • The browser is closed while recording. The recording appears in the "saved on this device" list next time you open Chrome.

The one case that used to be silently lossy — a Google Meet meeting ending in a single-page-app navigation — is handled by the service worker watching for the tab leaving the meeting-code URL directly, independent of the content script.

When an upload fails

Uploads use resumable multi-part transfer. If a part fails, only that part retries. If the whole upload dies mid-transfer:

  1. The staged chunks stay in IndexedDB.
  2. The recording appears in the "saved on this device" list with Failed status.
  3. Signed-in: Upload on that row resumes the transfer from the last successful part. For long meetings, this is not a full re-upload.
  4. Anonymous: Download saves the audio to your computer as a .webm file; you can play it locally or upload it later after signing in.

Storage management

Local recordings are not auto-deleted after 30 days any more. If you treat the extension as a standalone recorder — recording meetings, keeping the files locally, never signing in — old recordings used to disappear silently. That's fixed.

Only two categories are auto-cleaned safely:

  • Finalized orphans — the upload confirmed the recording is safely in R2, and the local copy is now redundant.
  • 0-byte orphans — the recording died before any audio was captured; nothing to recover.

At 500 MB of staged local recordings, a yellow storage warning appears at the top of the side panel. It's advisory — no data is deleted — but it's a nudge to sign in and upload, or download and clear.

To clear a specific recording: click Delete on its row in the "saved on this device" list. If the recording has unuploaded live notes, the deletion prompts for confirmation.

Common problems

"The extension icon is greyed out on chrome://, edge://, or the Chrome Web Store."

Chrome forbids extensions from running on chrome:// pages, edge:// pages, and the Chrome Web Store itself. This is a browser-wide restriction; nothing SeaMeet can do. Open the meeting in a normal tab.

"Tab capture failed with 'Cannot access a chrome:// URL' or 'Extension not allowed for this tab'."

The tab was open before you installed the extension. Chrome refuses to attach tab-capture to a tab that has no permission grant. Reload the tab and try again.

"Recordings show as 0:00 in the recovery list."

This was a bug in older versions — the duration was written only at stop time, so an interrupted recording had none. It's now persisted during the recording, so this only happens if the recording ended before the first duration update. Falls back to when unknown.

"The uploaded file plays but shows unknown / infinite duration."

Recordings up to 100 MB have their duration metadata rewritten before upload completes, so this is fixed for those. Larger or resumed recordings keep the Part-1 patch fallback — the file plays, but a small number of players may not seek correctly. Try VLC as a workaround.

"The Meet meeting ended but the recording kept going."

This class of bug was fixed in 1.9. If it happens on 1.9 or later, please report — with the version number from chrome://extensions/ and a note on the meeting platform.

"The captions stopped in the middle of the meeting."

The live speech-to-text auto-reconnects a few times; when it exhausts, the "Retry captions" banner appears above the transcript. Click it. The recording keeps going the whole time — no audio is lost.

"A recording from a Meet call has the wrong title (the tab title)."

This was fixed in 1.8 — extension recordings now start as "Untitled — <date>", matching the web app's default-name guard, so the AI-generated meeting title correctly replaces it after upload. If you see this on 1.8 or later, the AI rename usually catches up within a minute.

When to file a bug

  • The recording did not appear in the "saved on this device" list after an interruption.
  • Upload all claims success but the recording is not in your web library.
  • The extension crashes Chrome (rather than just failing gracefully).
  • Any silent data loss.

File on the desktop app repo (seasalt-ai/seameet-app-desktop) with the extension version, the browser version, and if possible, a screenshot of the side panel.

Quick Reference

SymptomTry
Extension didn't recordReload the tab, then retry
Recording missing after crashCheck "saved on this device" list in the side panel
Upload stuckClick Upload again on the row — resumable multi-part
Captions stoppedClick Retry captions in the banner above the transcript
Storage warning at 500 MBSign in and Upload all, or Download and Delete
Meeting kept recording after endUpdate to 1.9+ if you're not already

Last updated: 2026-08-27

← Chapter 5: Sign In and Sync to the Web App

Published: