Skip to content

scttfrdmn/autopsy

Repository files navigation

Autopsy

Version License TypeScript ESLint Code Style

Postmortem analysis for your tabs β€” Find what to close

A lightweight Chrome extension that helps you identify which tabs to close through real-time activity tracking, smart status indicators, and comprehensive tab analysis.


πŸ” Smart Analysis

Real-time network activity tracking Monitor requests, bytes transferred, and timing for each tab

Intelligent status indicators

  • ● Active β€” Network activity in last 10 seconds
  • β—† Recent β€” Active in last 5 minutes
  • β–  Idle β€” Active in last hour
  • βœ• Dead β€” No activity for over an hour

Per-instance age tracking Accurate tab ages that persist across browser restarts

Memory usage insights Identify resource-heavy tabs and processes


🎯 Bulk Operations

  • Close duplicates β€” Remove duplicate URLs, automatically keeps newest
  • Bulk pin/unpin β€” Manage multiple tabs at once
  • Select by domain β€” Quick domain-wide selection with one click
  • Move to new window β€” Organize selected tabs across windows

πŸ“Š Advanced Grouping

  • Group by domain β€” Organize tabs by website
  • Group by window β€” See tabs per browser window
  • Group by status β€” View by activity level (active, recent, idle, dead)
  • Collapsible groups β€” Clean, organized view

⌨️ Keyboard Navigation

Full keyboard support for power users

  • Arrow Up/Down β€” Navigate between tab rows
  • Space β€” Toggle selection on focused row
  • Enter β€” Activate/switch to focused tab
  • Escape β€” Clear focus, then search, then selection
  • Cmd/Ctrl+F β€” Focus search input
  • Cmd/Ctrl+A β€” Select all visible tabs
  • Delete/Backspace β€” Close selected tabs
  • ? β€” Open help modal with all shortcuts

Accessible design

  • Focus indicators meet WCAG 2.1 AA standards
  • Works seamlessly in flat and grouped views
  • No keyboard traps, fully navigable

πŸ“ Data Export

  • CSV export β€” Export to spreadsheet for analysis
  • JSON export β€” Programmatic processing and backup
  • Full metrics included β€” Age, status, network stats, groups

🎨 Customization

  • Dark/Light themes β€” Respects system preference or manual override
  • Responsive width β€” Small (600px), Medium (800px), Large (1000px)
  • Resizable columns β€” Drag column borders to adjust widths, persists across sessions
  • Accessible design β€” WCAG AA compliant with shape variants

⚑ Lightweight Design

  • Built with Preact (3KB vs React's 40KB)
  • Efficient background service worker
  • Total extension size: <50KB
  • Minimal resource footprint β€” doesn't contribute to the problem!

πŸ“Έ Screenshots

Click to view screenshots

Main Interface

Main Interface Real-time status tracking with smart indicators and comprehensive metrics

Keyboard Navigation

Keyboard Navigation Navigate with arrow keys, select with Space, activate with Enter

Keyboard Shortcuts Help

Help Modal Built-in help modal with all keyboard shortcuts

Domain Grouping

Group by Domain Organize tabs by website with collapsible groups

Status Grouping

Group by Status Group by activity level (Active, Recent, Idle, Inactive)

Bulk Operations

Bulk Operations Select multiple tabs and perform actions in bulk

Light Theme

Light Theme WCAG AA compliant light theme with improved contrast

Column Resizing

Column Resizing Drag column borders to adjust widths with hover indicators and persistent sizing


πŸš€ Installation

Chrome Web Store

Install from Chrome Web Store β†’

v0.22.0 adds resizable columns with drag handles between column headers.

Development Mode

  1. Clone the repository:

    git clone https://github.com/scttfrdmn/autopsy.git
    cd autopsy
  2. Install dependencies:

    npm install
  3. Build the extension:

    npm run build
  4. Load in Chrome:

    • Open Chrome and navigate to chrome://extensions/
    • Enable "Developer mode" (toggle in top right)
    • Click "Load unpacked"
    • Select the dist folder from this project

Development with Hot Reload

npm run dev

Then load the dist folder as an unpacked extension. Vite will rebuild on changes.


πŸ’» Usage

  1. Click the Autopsy icon in your Chrome toolbar
  2. View your tabs with real-time status indicators
  3. Click column headers to sort (Age, Status, Memory, etc.)
  4. Drag column borders to resize columns (Title, Age, Activity, Requests, Data)
  5. Click a row to focus that tab
  6. Click the Γ— button to close a tab
  7. Use bulk operations to manage multiple tabs at once
  8. Group tabs by domain, window, or status
  9. Export data to CSV or JSON for analysis

πŸ—οΈ Architecture

Background Service Worker (src/background/worker.ts)

  • Tracks tab creation times with per-instance fingerprinting
  • Monitors network requests (count, timing, bytes)
  • Lightweight in-memory storage
  • Automatic cleanup when tabs close

Popup UI (src/popup.tsx)

  • Preact-based interface (minimal bundle size)
  • Aggregates data from Chrome APIs and background worker
  • Smart sorting and filtering
  • Professional, accessible design

Type Safety

Full TypeScript support with strict mode and Chrome extension types.


πŸ”’ Privacy & Security

All data stays local on your device.

  • βœ… No cloud sync
  • βœ… No tracking or telemetry
  • βœ… No external servers
  • βœ… Open source and auditable

Data stored locally:

  • Tab creation timestamps
  • Per-instance tab metadata
  • User preferences (theme, width)
  • Network activity statistics (in memory)

See our Privacy Policy for details.


πŸ› οΈ Development

Tech Stack

  • TypeScript 5.3 β€” Type-safe development
  • Preact β€” Lightweight React alternative
  • Vite β€” Fast build tooling
  • Chrome Extension Manifest V3 β€” Modern extension platform
  • ESLint + Prettier β€” Code quality and formatting

Scripts

npm run dev       # Development mode with hot reload
npm run build     # Production build
npm run lint      # Run ESLint
npm run lint:fix  # Fix ESLint issues
npm run format    # Format code with Prettier

Project Structure

autopsy/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ background/
β”‚   β”‚   └── worker.ts          # Service worker
β”‚   β”œβ”€β”€ popup.tsx              # Main UI component
β”‚   β”œβ”€β”€ popup.css              # Styles
β”‚   └── types/
β”‚       └── index.ts           # TypeScript definitions
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ manifest.json          # Extension manifest
β”‚   └── icon*.png              # Extension icons
β”œβ”€β”€ dist/                      # Build output
└── package.json

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ“§ Contact

Support: info@autopsy.tools Issues: GitHub Issues Source: GitHub Repository


πŸ™ Acknowledgments

  • Built with Preact
  • Bundled with Vite
  • Icons designed with surgical/medical inspection theme
  • Inspired by the need for better tab management

Don't let tab hoarding slow you down. Perform the autopsy. πŸ”¬