Skip to main content

9.0.3 in progress: chasing down a crash in TMS's own debug tooling

· 17 min read
Giovanni Solone
Co-founder of Marvellous Codeworks. Rescued The Great Suspender, built The Marvellous Suspender

TMS's debug page has an optional captureLogs toggle for exactly one purpose: when something goes wrong, turn it on, reproduce the issue, and send us the report. It is meant to make diagnosing problems easier, not to become the problem itself.

A few days ago, while stress-testing 9.0.3 in development with dozens of suspended tabs open and captureLogs enabled, the opposite happened: the extension itself crashed, memory exhausted, requiring a full reload to recover. That is not an acceptable outcome for a tool whose entire job is to run quietly in the background and get out of the way, let alone for an extension whose whole purpose is to lighten Chrome's memory load in the first place. What follows is the real, unedited shape of tracking that down: a first round of fixes that were genuinely necessary and genuinely not enough, followed by the investigation that found what actually needed fixing.

TL;DR
  • Stress-testing 9.0.3 in development, with lots of suspended tabs and TMS's captureLogs debug option on, hit a real out-of-memory crash.
  • We fixed several genuine bugs in the log buffer and debug page (PR #472), and the crash kept happening anyway.
  • The actual cause: TMS's log storage was quietly sending a copy of itself to every open suspended tab every time it was written, and none of those copies ever got cleaned up. The more you logged, the faster it filled up your memory, regardless of how many tabs you had open.
  • The real fix moves that log storage to a different, safer mechanism (IndexedDB) that doesn't have this problem at all, plus a batch of smaller hardening fixes found along the way (PR #473, in progress).
  • Affects only people who turn on captureLogs to help us debug something. If you've never touched that setting, none of this ever affected you.

9.0.3 in progress: a real fix for Drive backups disconnecting on Brave and Vivaldi

· 7 min read
Giovanni Solone
Co-founder of Marvellous Codeworks. Rescued The Great Suspender, built The Marvellous Suspender

9.0.2 shipped a fallback for connecting Google Drive backup on Brave and Vivaldi, browsers where Chrome's own chrome.identity.getAuthToken() doesn't work. That fallback fixed the immediate problem: the connect button no longer hung indefinitely. It did not fully fix the underlying issue, and reports kept coming in of Drive accounts flipping back to "disconnected" after just one or two automatic backups. 9.0.3 replaces the fallback's mechanism entirely.

TL;DR
  • Only affects Drive backup on Brave and Vivaldi. Chrome users aren't affected at all.
  • The 9.0.2 fallback used a token that expired every hour and needed the browser's help to silently renew it, Brave and Vivaldi don't support that renewal reliably, so accounts kept disconnecting on their own.
  • 9.0.3 replaces it with a long-lived token that renews itself directly, no browser dependency, no more surprise disconnects.
  • The token exchange goes through a small Cloudflare Worker we run (tms-oauth-proxy), so the OAuth client secret no longer ships inside the extension package.
  • If you already connected Drive on Brave/Vivaldi, you'll need to click Connect once more in Options → Backup after updating; after that, it just works.

9.0.2 also brings back the classic The Great Suspender artwork, as an option

· 2 min read
Giovanni Solone
Co-founder of Marvellous Codeworks. Rescued The Great Suspender, built The Marvellous Suspender

The new mascot and icon set that shipped with TMS 9 has not landed well with everyone, some of the feedback on 9.0.2 made that clear. While that discussion continues, 9.0.2 also ships a direct, no-strings-attached answer for anyone who just wants the old look back: a checkbox.

The Marvellous Suspender 9.0.2 - Always-suspend list, Drive OAuth fallback, favicon fix

· 13 min read
Giovanni Solone
Co-founder of Marvellous Codeworks. Rescued The Great Suspender, built The Marvellous Suspender

TMS 9.0.2 is ready: one new list-based feature and a handful of confirmed bug fixes. It'll be submitted for Chrome Web Store review in a few days, not today, I'm taking a short break first for family time and some mental rest, so bear with the wait. The bigger news is behind the scenes anyway: every open issue on the tracker got triaged into an actual plan.

The Marvellous Suspender 9.0.1: on-demand permissions, and closing the gaps from 9.0.0

· 4 min read
Giovanni Solone
Co-founder of Marvellous Codeworks. Rescued The Great Suspender, built The Marvellous Suspender

We said it was coming in the last post, and it's here. 9.0.1 is a direct response to issue #411 and everything we admitted needed fixing there: permissions requested too early, missing opt-outs, and a couple of things that were working as intended but never explained anywhere.

TMS 9 is public now: about that permissions dialog, and where your sessions went

· 8 min read
Giovanni Solone
Co-founder of Marvellous Codeworks. Rescued The Great Suspender, built The Marvellous Suspender

TMS 9 has now reached everyone on the Chrome Web Store's normal rollout schedule. Good news, mostly. But an update this size doesn't land quietly, and a few things landed in our inbox that deserve a direct answer instead of a buried reply in a GitHub thread.

Road to TMS 9: we made it, and it's rolling out Monday!

· 8 min read
Giovanni Solone
Co-founder of Marvellous Codeworks. Rescued The Great Suspender, built The Marvellous Suspender

Five weeks ago we opened this series with a new look for a new era. Google just cleared v9.0.0 for review, and starting Monday morning, August 3rd, the rollout to the Chrome Web Store begins. This is the last stop on the road.

Suspendy Guy in Hawaiian shirt, sunglasses, and sandals, holding a tropical cocktail

It's also pushing about 40°C outside as we write this, summer in full swing, and yes, 40°C in Italy is exactly as absurd as it sounds. Wherever you are, we hope you get a good stretch of vacation out of it. We won't really be taking one ourselves, but we'll admit to easing off the throttle a little.

Road to TMS 9: watching the Tab Health repair work, live, on Brave

· 3 min read
Giovanni Solone
Co-founder of Marvellous Codeworks. Rescued The Great Suspender, built The Marvellous Suspender

We spent the last few posts chasing a Chromium regression across three browsers: it broke grouped tabs on Chrome 149, reached Edge shortly after, and was finally fixed upstream in Chrome 150. That last post also introduced the plan for Brave, which does not follow Chrome's release schedule and might stay affected for a while: TMS 9's new Tab Health page can detect and repair the broken tabs on demand, without waiting for Brave to catch up.

This week we actually ran that repair on a Brave profile with tab groups in a broken state, and it is worth showing rather than just describing.

Chrome 150 fixes the Tab Groups bug, and here is what changed in TMS

· 6 min read
Giovanni Solone
Co-founder of Marvellous Codeworks. Rescued The Great Suspender, built The Marvellous Suspender

When Chrome 149 introduced a regression that silently discarded suspended tabs inside tab groups on every browser restart, TMS shipped a workaround in version 8.1.4. When the same regression reached Microsoft Edge, we addressed that too. We knew from the start that these were stopgap measures, the right fix had to come from the browser itself.

It is now here. Chrome 150.0.7871.47 ships the browser-side patch for crbug.com/522338670. Tab groups restore correctly without any intervention from TMS. We have verified this with a clean restart session and multiple group configurations, and everything behaves as expected.

Here is what that means for TMS, and what we decided to do with the workaround code.

Under the hood: replacing abandoned libraries in TMS 9

· 5 min read
Giovanni Solone
Co-founder of Marvellous Codeworks. Rescued The Great Suspender, built The Marvellous Suspender

TMS 9 is shaping up to be one of the most significant releases in the extension's history, if you have been following along, you already know about the automatic session backups and the Google Drive integration we covered in the previous posts. But not all of the work that goes into a release shows up in the changelog. Some of the most important changes happen completely out of sight, and this one is a good example of that. We replaced two third-party libraries that had been silently aging inside the extension, and we want to be transparent about what changed and why.