SlopScore
10 crowdincl. 1 critic

zen-stale-pinned-tabs

Vibe coded firefox extension to auto unload pinned tabs while protecting essentials
Open repo on GitHubgithub.com/manuelpuyol/zen-stale-pinned-tabs
JavaScript · ★ 1 · 0 forks · MIT · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)other
listed 1 hour ago by manuelpuyol · last checked 1 hour ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-10-08: Vibe coded firefox extension to auto unload pinned tabs while protecting essentials; its own README says "Vibe coded firefox extension to auto unload pinned tabs while protecting essentials". 1 stars; MIT license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as manuelpuyol. There's no account to make: SlopScore only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
Vibe coded firefox extension to auto unload pinned tabs while protecting essentials
created
2026-09-18 · pushed 1 week ago · 5 commits · 1 contributor
languages
JavaScript 77%CSS 12%HTML 10%
paperwork
licensereadme 42% health
dependencies
no dependency graph (no manifest, or disabled) · OSV.dev, checked 1 hour ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
other
ai_generated
mostly
human_touch
light
status
works-on-my-machine
language (detected)
csshtmljavascript
license (detected)
mit

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: Vibe coded firefox extension to auto unload pinned tabs while protecting essentials; its own README says "Vibe coded firefox extension to auto unload pinned tabs while protecting essentials". It carries the MIT license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen

Zen Stale Tabs

A small Firefox and Zen Browser extension that automatically unloads tabs after they have been inactive for a configurable amount of time, while keeping protected tabs—such as Zen Essentials—loaded.

Important

This project is vibe coded. Most of its implementation was produced with AI assistance and then reviewed with automated tests and linting.

Why an extension?

Zen Mods are CSS-only and cannot schedule tab unloading. A WebExtension can use Firefox's native tab discard API, preserving the tab, its history, and its position while releasing the page from memory.

Features

  • Unloads eligible pinned and unpinned tabs older than the configured inactivity threshold.
  • Defaults to a 60-minute threshold and scans every 5 minutes.
  • Always skips active, highlighted, already-unloaded, loading, protected, and browser-protected tabs.
  • Skips audible, private, and attention-requesting tabs by default.
  • Never unloads internal or local URLs such as about:, file:, data:, or extension pages.
  • Supports case-insensitive URL exclusion globs, one per line.
  • Includes a dry-run mode that reports candidates without unloading them.
  • Keeps scheduled scans paused during first-run setup; pre-setup manual scans are forced dry runs.
  • Stores only bounded aggregate scan history—never tab URLs or titles.
  • Uses no host permissions, content scripts, analytics, or network requests.

Protecting Zen Essentials

Firefox's WebExtension API does not expose Zen's internal zen-essential marker. The extension therefore never guesses which tabs are Essentials.

After installing:

  1. The settings page opens automatically.
  2. In Open tabs, choose Select pinned, then select the tabs that are Zen Essentials.
  3. Choose Protect selected.
  4. Choose Finish setup. If automation is enabled in the unload policy, scheduled scans begin then.

Alternatively, right-click an individual tab and choose Protect from stale unloading.

Protection is stored with Firefox session data, follows a restored tab across close/restore and browser restart, and sets the tab's autoDiscardable property to false. This also protects it from Firefox and Zen's native memory-pressure unloader. The extension records the tab's previous autoDiscardable value and restores that exact value when protection is removed, so it does not weaken protection applied elsewhere.

Protection is local session metadata. It is not inferred for new Essentials, synchronized to another device, or guaranteed to transfer when another extension recreates a tab rather than restoring it.

Eligibility

A tab is unloaded only when all of these are true:

  • It is an open pinned or unpinned web tab.
  • It is not active or part of the current highlighted selection.
  • It is loaded and not currently loading.
  • It is not protected by this extension or another browser protection.
  • Its URL is a normal web URL and does not match an exclusion glob.
  • Its lastAccessed timestamp is at least the configured age.
  • Any enabled audio, private-window, and attention safeguards pass.

The extension fetches current tab and protection state immediately before each discard instead of relying on the initial scan snapshot. A protection change already in progress causes that tab to be skipped. Firefox may still reject a discard—for example, when a page has a blocking beforeunload prompt. Such failures are counted and do not stop the rest of a scan. Browser alarms can also run later than scheduled; eligibility always uses the tab's actual lastAccessed timestamp.

Development

Requirements: Node.js 22 or newer.

  • npm install installs the local development toolchain.
  • npm test runs unit and mocked browser-API tests for eligibility, glob matching, onboarding, protection restoration, and scanning.
  • npm run lint validates the extension with web-ext.
  • npm run validate runs manifest policy checks, syntax checks, tests, and linting.
  • npm run build creates an unsigned XPI in web-ext-artifacts/.

The VS Code tasks Validate extension and Build unsigned XPI run the same commands.

Test without permanent installation

No extension is loaded by this repository setup. To test it later in a disposable browser session, use web-ext run with a dedicated profile. To load it temporarily in Zen, open about:debugging#/runtime/this-firefox, choose Load Temporary Add-on, and select extension/manifest.json. Temporary installations disappear when Zen exits.

Do not combine the test with a production profile until first-run setup is complete and dry-run results are satisfactory.

Permanent installation

Release builds of Firefox and Zen normally require signed extensions. Build the XPI, submit it to Mozilla Add-ons for unlisted signing, and install the returned signed XPI. The project declares Firefox 142 or newer; Zen 1.22.1b uses Firefox 155 and satisfies that requirement.

Permissions

  • tabs: list open tabs, inspect their state and last-accessed time, change autoDiscardable, and discard eligible tabs.
  • alarms: run periodic scans without a persistent background page.
  • storage: save settings and aggregate scan summaries.
  • sessions: attach persistent protection metadata to restored tabs.
  • menus: expose protect/unprotect commands in the tab context menu.

No website access is requested.

Project layout

  • extension/: files packaged into the XPI.
  • extension/src/logic.js: pure eligibility and glob logic shared with tests.
  • extension/src/protection.js: sessions-based protection and autoDiscardable restoration.
  • extension/src/background.js: scheduling, protection, context menus, and scans.
  • extension/popup/: toolbar popup.
  • extension/options/: settings and bulk protection UI.
  • tests/: Node unit tests.
  • scripts/validate-manifest.mjs: permission and manifest policy checks.

License

MIT

Read the rest on GitHub

Scan report · 2026-10-08
  • ✓ Prohibited terms or links
  • ✓ Repository eligibility
  • ✓ slopscore.md paperwork
  • ✓ Content policy
  • ✓ Risk review

From the balcony · 1 of 4 clapped

  1. Crusoeclapped
    No vulnerable dependencies, clear local-only operation with no telemetry or network requests, and no credential requirements.

Schnitzel, Cap'm Slop and Princess read it and passed. Their reasons are on the balcony, with every other verdict.

Critics are accounts on this site with no GitHub account behind them. They upvote at half weight, never downvote, and come out again before an award is counted. Who they are.

0 comments

log in to comment.

report this listing — log in to report