An offline-first, high-performance Chrome Extension for intelligent multi-window tab management, coupled with the Edge-Based Nonce Authentication Protocol (EBNAP) for hardware-level security.
Tab Session Guardian is a local-first browser productivity and resilience platform designed for secure tab session orchestration and reliable startup restoration. It runs with zero cloud dependency for core extension operations and avoids transmitting browsing session telemetry off-device.
- Software Layer β Manifest V3 Chrome Extension for multi-window tab capture/restore, live workspace tracking, hotkey-driven actions, and automated archive cleanup.
- Security Layer β EBNAP for edge-level nonce-based challenge-response identity verification in LAN/hardware integration scenarios (ESP32-focused).
- Intelligent Multi-Window Management β Save and restore complex window layouts with tab group awareness.
- Continuous Workspace Tracking β Debounced state persistence (300ms) across tab/window lifecycle events.
- Crash-Safe Startup Restoration β Restores last active state or startup-tagged session without startup window termination loops.
- 4-Day Auto-Purge Engine β Cleans ephemeral
Closed Windowsessions after 96 hours when no custom user tags exist. - Instant Popup UX β Responsive interaction pipeline with asynchronous storage access decoupling.
- Manifest V3 Security Posture β Strict CSP, guarded runtime messaging, and safe text rendering.
tabGards/
βββ manifest.json
βββ background.js
βββ content.js
βββ shared/
β βββ storage.ts
βββ the pop ui ui/
β βββ src/app/App.tsx
β βββ public/
β β βββ background.js
β β βββ content.js
β β βββ manifest.json
β βββ vite.config.ts
βββ the tab manager dashboared ui/
β βββ src/app/App.tsx
β βββ src/styles/index.css
β βββ vite.config.ts
βββ dist/
βββ index.html
βββ background.js
βββ content.js
βββ manifest.json
βββ dashboard/
βββ index.html
Run from repository root:
# Build Popup UI
npm run build --prefix "the pop ui ui"
# Build Dashboard UI
npm run build --prefix "the tab manager dashboared ui"| Output | Path |
|---|---|
| Unified extension bundle | dist/ |
| Popup entrypoint | dist/index.html |
| Dashboard entrypoint | dist/dashboard/index.html |
| Control | Implementation |
|---|---|
| Manifest V3 CSP | script-src 'self'; object-src 'self' |
| Background message guarding | sender.id !== chrome.runtime.id requests are rejected |
| XSS mitigation | Dynamic values rendered as safe text nodes (no dangerouslySetInnerHTML) |
For hardware integrations, EBNAP mitigates replay and spoofing risk in local/LAN environments.
- Entropy Source: ESP32 TRNG-generated 32-bit nonce component.
- Dynamic Nonce:
- Auth Validation: HMAC-SHA256 tag over secret + nonce + payload.
- Freshness Gate:
- Single-Use Defense: Sliding nonce cache blocks replay.
- Performance Target: Handshake RTT < 25 ms, peak RAM ~14.2 KB.
- Alarm Name:
tabguardian_closed_window_cleanup - Schedule: Every 60 minutes
- Purge Rule: Session is deleted only when all conditions are true:
- Tagged as
Closed Window(case-insensitive) - No custom user tags
- Session age > 96 hours
- Tagged as
- Exemption Rule: Any user tag customization promotes the session to persistent collection behavior.
- Debounce Window: 300 ms
- Event Triggers:
chrome.tabs.onUpdated,onRemoved,onCreated, andchrome.windows.onCreated - Storage Target:
tabguardian_last_active_state - Outcome: Reliable restore path for "Restore Last Active" startup behavior.
- Aesthetic: Dark cyberpunk glassmorphism
- Primary Palette:
- Background cards:
#0F1319 - Borders:
#1F2A38 - Accent neon purple:
#8B5CF6
- Background cards:
- Animation Style: GPU-friendly transitions and pulse-based interaction cues.
| Shortcut | Action |
|---|---|
Alt + Shift + S |
Instant multi-window session snapshot |
Alt + W |
Close active browser tab |
Alt + T |
Focus/open TabGuardian dashboard (content-script gateway) |
Ctrl + Shift + D |
Open dashboard command binding |
Alt + Shift + G |
Open extension popup |
If you prefer to load the compiled assets manually into any Chromium framework, follow these steps:
- Open your browser and navigate to
chrome://extensions/(oredge://extensions/) in your URL bar. - Enable the Developer mode toggle switch located in the top-right corner.
- Click the Load unpacked button located in the top-left toolbar.
- Open your extracted workspace folder, navigate to
browser_exten/Ui/, and select the newly generateddistdirectory.
β οΈ Implementation Warning: Automated command-line injection tools trigger external developer debugging hooks within Gecko architectures. This forces a permanent and visually disruptive "Browser is under remote control" warning banner across your top viewport.
For a completely clean, pristine, and warning-free installation inside Firefox, execute these manual activation steps:
- Open Mozilla Firefox normally from your desktop deployment or taskbar shortcut.
- In the URL address bar at the top, type exactly
about:debuggingand press Enter. - On the left-hand vertical menu pane, click on This Firefox.
- Locate the Temporary Extensions section block and click the Load Temporary Add-on... button.
- An OS-native file explorer window will pop up. Navigate directly into your compiled production folder within your extracted repository path:
\browser_exten\Ui\dist\
| Issue | Root Cause | Resolution |
|---|---|---|
| Chrome startup crash loop | Startup window was being removed too early, dropping to zero windows | Reused initial startup window and replaced placeholder tab safely |
| History βDelete Allβ leakage | Shared delete path affected unrelated storage domains | Isolated deletion pipelines for history, collections, and vault |
| Popup interaction freeze | Storage-bound click handlers blocked smooth UI updates | Decoupled selection state from async storage with in-memory derivation |
| Dropdown clipping/submergence | Layering and overflow constraints on card containers | Elevated layering (z-50), visible overflow, and click-capture backdrop |
# 1) Build both UIs
npm run build --prefix "the pop ui ui"
npm run build --prefix "the tab manager dashboared ui"
# 2) In Chrome, open: chrome://extensions
# 3) Enable Developer Mode
# 4) Click "Load unpacked" and select the dist/ folder| Status Checkpoint | State |
|---|---|
| Manifest compliance | β Manifest V3 |
| Distribution target | β
dist/ |
| Core startup restore path | β Implemented |
| Auto-cleanup scheduler | β Implemented |


