Skip to content

About

WebExtension for restoring, saving, window and tab states

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

Tab Session Garrison

Keyboard-first session management for Firefox. Save and restore windows and tabs — with fast multi-select, full keyboard navigation, and tab-group awareness for wrangling large numbers of saved sessions.

Tab Session Garrison — nine sessions selected, with the Open all / Delete summary panel

Tab Session Garrison is a personal fork of Tab Session Manager by Sienori, focused on power-user controls: selecting, navigating, restoring, and deleting sessions without leaving the keyboard — and clearing out the noise that builds up when you auto-save constantly.


Features

Everything Tab Session Manager does — save and restore the state of windows and tabs, automatic timed saving, tagging, search, import/export, and native tab-group save/restore — plus:

Selection & bulk actions

  • Multi-select sessions with Ctrl/Cmd-click, Shift-click ranges, or the keyboard
  • Full keyboard navigation of the list — move, extend, select-all, restore, and delete without touching the mouse
  • Bulk delete with a single "undo all" — clear out dozens of stale auto-saves at once, and still get them back if you misclick
  • Bulk restore — open every selected session at once, each in its own new window (with a confirm so a stray keypress doesn't flood your screen)
  • An "N selected" summary panel — with Open all and Delete actions — so you always know what a bulk action will hit

Bulk restore — a confirm before opening every selected session in its own window

Bulk delete — a confirm before removing the selection

Tab groups

  • Group indicators — every session shows its Firefox tab groups at a glance: colored, named chips grouped by window in the detail pane, and colored dots on each list row
  • Add a session to your current window as a tab group — drop a saved session's tabs into the window you're in, tidied into one named group (and it preserves the session's own groups when it already has them)
  • Phantom-group masking — older auto-saves that captured stray groups from other windows are cleaned up at display time, non-destructively

Tab-group chips and dots

Reliability & polish

  • Durable auto-save — fixes an upstream bug where periodic auto-save could silently stop after the browser suspended or restarted; the alarm now self-heals
  • Session types at a glance — every session shows how it was saved, each with its own icon and tint: Manual Save (green bookmark), Regularly (blue clock), Window closed (amber window), Browser exited (red power). The saves you deliberately keep finally stand out from the auto-save noise (see How a session gets its type)
  • Restore respects your settings — with Save tab groups turned off, restoring a session no longer recreates (and thereby re-saves) the tab groups you opted out of; tabs come back flat (upstream #1635)
  • A cohesive visual identity — its own green session-stack logo and a boxed "card" layout across the popup and options pages, with one consistent green accent, pill buttons, and dark theme by default. In Settings, the section you're scrolled to is spotlighted while the rest dims, so a long settings page stops feeling like a wall

Fast on large profiles

The popup was reworked to stay responsive when you've got hundreds — or thousands — of saved sessions:

  • Instant list interactions — selecting, searching, and arrow-keying no longer walk the whole list on every keystroke; per-row array scans were replaced with Map / Set lookups
  • Off-screen rows cost nothing — content-visibility lets the browser lay out and paint only the rows actually on screen, deferring the rest until you scroll to them
  • Near-instant bulk delete — deleting dozens of sessions used to rewrite the whole (favicon-heavy) undo history once per session; it's now a single batched write with one screen update
  • A session index — the list and search read a small index kept alongside your sessions, instead of decoding every full session (every tab and favicon) each time the popup opens. On a 3,500-session profile that's under 1 MB read instead of ~38 MB decoded twice; the full record is loaded only for the session you select. Auto-save's background bookkeeping reads the same index

How a session gets its type

Every session is one of four types, shown as a coloured pill:

Pill Meaning
📑 Manual Save (green) You saved it yourself — the Save button or the keyboard shortcut
Regularly (blue) The timed auto-save
Window closed (amber) Captured automatically when you closed a window
Browser exited (red) Captured automatically when Firefox last quit

The three automatic types carry a stored marker, so they're always exact. Manual Save is stamped on every save you make from now on. For older sessions saved before this feature — and for anything imported that arrived without a type — it's inferred from the absence of an auto-save marker. In practice that inference is accurate: a session you manually saved in Tab Session Manager and imported here still reads as a Manual Save. The type pills are descriptors, not labels, so they can't be removed — but your own custom tags still can.

The four colour-coded session types in the list

Keyboard & selection reference

Input Action
Click Select one session
Ctrl/Cmd + Click Toggle one session in/out of the selection
Shift + Click Select the range from the anchor to the clicked row
↑ / ↓ Move the selection
Shift + ↑ / ↓ Extend the selection
Space Toggle the focused row
Ctrl/Cmd + A Select all visible sessions (respects filter/search)
Delete / Backspace Delete the selection (confirms when more than one)
Esc Collapse back to a single selection
Enter / Shift + Enter Restore the selection — one session directly, or several each in their own new window (confirms first)

Status

This is a personal fork, built and used on Firefox (Linux). A few things to know:

  • Firefox only, for now. This fork targets Firefox and nothing else; Chrome/Edge may come later. If you need those today, the original Tab Session Manager is on the Firefox, Chrome, and Edge stores.
  • Not on the add-on stores. You install it yourself (below).
  • Local-only by design. No cloud sync, no accounts — the upstream Google Drive sync isn't offered here. Everything lives in your browser, on your machine.
  • No telemetry. Sessions are stored by the browser, on your machine.

Installing

Get it on addons.mozilla.org — the listed, Mozilla-reviewed build. Firefox keeps it up to date automatically.

Each release's AMO-signed .xpi is also attached to GitHub Releases (install via about:addons → ⚙ → Install Add-on From File). It's the same add-on, so it still gets updates from AMO.

Upgrading from a pre-0.3.0 self-signed build? Nothing to do — it's the same add-on id, so your install moves to the AMO build on its next update check and keeps all your sessions and settings.

Try a local build (temporary)

  1. Build it (see Developing), or use an existing dev/firefox build.
  2. Firefox → about:debugging#/runtime/this-firefox → Load Temporary Add-on → pick manifest.json inside dev/firefox.

Temporary add-ons unload when Firefox restarts. The cut-a-release procedure (version bump, build, AMO submission, GitHub mirror) lives in RELEASING.md.


Developing

Node 22+ / npm 10+. The production build is deterministic — see BUILD.md.

git clone https://github.com/superuser-miguel/Tab-Session-Garrison
cd Tab-Session-Garrison
npm install
npm run watch-dev      # rebuilds on save; output lands in dev/firefox

Load dev/firefox/manifest.json via about:debugging (see Installing).


Roadmap

In progress

  • Backup overhaul — the original backup was a single confusing toggle that dumped one unpruned file per auto-save (tens of thousands of them, forever). Replacing it with a clear three-tier engine, all under the download folder, that never deletes your history and uses zip compression to manage space instead:
    • Complete — a full, compressed snapshot of every session, kept indefinitely for disaster recovery (built)
    • Session — one file per saved session, updated in place (next)
    • Incremental — append-only point-in-time history of auto-saves; recent snapshots stay as loose, browsable files and older ones roll up into zips once a date/size threshold is hit (next)
    • Restore-from-backup UI — browse and restore snapshots without hand-importing files (after the engine)
  • Tab Groups polish — group save/restore, on-demand grouping, and visual indicators are in; still hardening edge cases (restoring into windows that already have groups, multi-window merges)

Planned

  • Firefox Split View — investigated (Jul 2026): Firefox does expose split state (each tab carries a splitViewId), and Tab Session Garrison already captures it when you save. Restoring a split isn't possible yet — Firefox has no API to create a split from an extension (bug 2016928 / WECG #967). Once that ships, restore drops in with no re-work
  • fzf-style search — today's search is a plain substring filter over tab titles, shown in sort order with no ranking. Rebuild it as a fuzzy finder in the spirit of fzf: subsequence matching (ghb → GitHub), results ranked by match quality (word-boundary/prefix/contiguity bonuses) so the best hit floats to the top, matched characters highlighted so you see why a session matched, and URLs searched, not just titles. Per-field weighted scoring (name > hostname > tab title), a cheap subsequence prefilter before the expensive scoring pass, and a natural first candidate for off-thread (Web Worker) search-as-you-type — its search text already lives in the session index
  • Rename saved windows — give each window in a saved session its own editable name, right where you'd expect it: the pencil / right-click menu already on every window header in the detail pane (today that menu only offers "add current tab"). Firefox has no reliable window-name API to capture from, so an in-app rename is the robust answer — and it's the natural home for defaulting a window's name to its tab group's name when the window is a single group
  • Trash can — deleted sessions go to a recoverable trash instead of vanishing once the undo window passes; restore or empty it on your terms
  • UI refresh — largely shipped: the popup and options pages now share a green "card" system, pill buttons, dark-by-default theming, and a scroll-focus Settings view. Still to come: a fixed "window" frame for the settings focus view, finishing the theme-follows-Firefox popup, and reworking the Import Sessions screen so a large import is a scrollable list you can remove individual entries from before committing (instead of all-or-nothing)
  • Import a URL list into a tab group — paste a plain list of URLs and turn it into a saved session (optionally opened as one named tab group), OneTab-style
  • Save & close (stash) — a one-gesture "send this window to a session" that saves the current window and closes its tabs to clear clutter and free memory — OneTab's signature move — with an optional restore-and-remove mode for a true one-shot stash
  • Pin & lock sessions — star a session to keep it at the top, and lock it so it can't be deleted by accident (OneTab star/lock); pairs naturally with the Trash can
  • Share a session as a link list — copy or export a saved session as a plain URL / Markdown list (the reverse of the URL-list import), generated locally with no server
  • Duplicate cleanup — collapse the near-identical snapshots that pile up from frequent auto-saving
  • Own branding — the logo and icons are now its own (a green session-stack mark); a full visual identity and fresh screenshots are still to come
  • Chrome / Edge — possibly, further down the line

Credit

Tab Session Garrison stands entirely on Tab Session Manager by Sienori (forked at v7.3.0) — all of the core functionality is theirs. If you want a polished, signed, cross-browser, actively maintained session manager, install the original. This fork just adds keyboard ergonomics and tab-group niceties on top.

License

Tab Session Garrison is free software, licensed under the GNU General Public License v3.0 or later.

It's a fork of Tab Session Manager © 2017– Sienori, originally released under the Mozilla Public License 2.0. Because the upstream code carries no "Incompatible With Secondary Licenses" notice, MPL-2.0 permits this fork to be distributed under the GPL. Sienori's copyright and the original MPL-2.0 text are preserved in LICENSE.MPL, and the MPL-covered portions remain available under MPL-2.0 as well.

  • Upstream code: © 2017– Sienori — MPL-2.0 (see LICENSE.MPL)
  • This fork's changes: © 2026 superuser-miguel — GPL-3.0-or-later

About

WebExtension for restoring, saving, window and tab states

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages