{"id":43098460,"url":"https://github.com/pararang/tab-audit","last_synced_at":"2026-04-27T01:02:11.555Z","repository":{"id":335682054,"uuid":"1146693568","full_name":"pararang/tab-audit","owner":"pararang","description":"A Chrome extension that automatically audits and closes browser tabs to free memory. Keep your browser organized and save memory by closing inactive, duplicate, or excess tabs based on customizable rules.","archived":false,"fork":false,"pushed_at":"2026-04-26T05:10:24.000Z","size":361,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-26T06:23:42.791Z","etag":null,"topics":["chrome-extension","vibe-coding"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pararang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-31T14:24:13.000Z","updated_at":"2026-04-26T05:10:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pararang/tab-audit","commit_stats":null,"previous_names":["pararang/tab-audit"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/pararang/tab-audit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pararang%2Ftab-audit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pararang%2Ftab-audit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pararang%2Ftab-audit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pararang%2Ftab-audit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pararang","download_url":"https://codeload.github.com/pararang/tab-audit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pararang%2Ftab-audit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32318417,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"ssl_error","status_checked_at":"2026-04-26T23:26:25.802Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome-extension","vibe-coding"],"created_at":"2026-01-31T17:03:28.643Z","updated_at":"2026-04-27T01:02:11.548Z","avatar_url":"https://github.com/pararang.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tab Auditor\n\n[![CI](https://github.com/pararang/tab-audit/workflows/CI/badge.svg)](https://github.com/pararang/tab-audit/actions)\n[![codecov](https://codecov.io/gh/pararang/tab-audit/branch/main/graph/badge.svg)](https://codecov.io/gh/pararang/tab-audit)\n\n\u003e [!WARNING]\n\u003e This extension was developed with assistance from artificial intelligence tools. DYOR.\n\nA Chrome extension that automatically audits and closes browser tabs to free memory. Keep your browser organized and save memory by closing inactive, duplicate, or excess tabs based on customizable rules.\n\n## Features\n\n- **Idle Tab Cleanup** - Automatically close tabs that haven't been accessed for a specified time\n- **Duplicate Tab Detection** - Identify and close duplicate tabs (keeps the most recently accessed)\n- **Domain Whitelist/Blacklist** - Always protect important domains or automatically close specific domains\n- **Max Tab Limit** - Enforce a maximum number of tabs by closing the oldest inactive ones\n- **Activity Tracking** - Robust tab activity detection that resets the idle timer when you interact with tabs\n- **Notifications** - Get notified when tabs are automatically closed\n- **Manual Cleanup** - Trigger cleanup on demand from the popup\n\n## Installation\n\n### From GitHub Releases (Recommended)\n\n1. Download the latest `tab-audit.zip` from [GitHub Releases](https://github.com/pararang/tab-audit/releases).\n2. Extract the ZIP file to a folder on your computer.\n3. Load in Chrome:\n   - Open Chrome and navigate to `chrome://extensions/`\n   - Enable **Developer mode** (toggle in the top-right corner).\n   - Click **Load unpacked** and select the folder where you extracted the ZIP.\n\n### From Source\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/pararang/tab-audit.git\n   cd tab-audit\n   ```\n\n2. Install dependencies:\n\n   ```bash\n   npm install\n   ```\n\n3. Build the extension:\n\n   ```bash\n   npm run build:prod\n   ```\n\n4. Load in Chrome:\n   - Open Chrome and navigate to `chrome://extensions/`\n   - Enable **Developer mode** (toggle in the top-right corner).\n   - Click **Load unpacked** and select the `dist/` folder inside the project.\n\n### From Chrome Web Store\n\nComing soon!\n\n## Configuration\n\nThe extension starts **disabled by default** to prevent unexpected tab closures during auditing. Configure the following settings:\n\n| Setting           | Description                                    | Default |\n| ----------------- | ---------------------------------------------- | ------- |\n| **Enabled**       | Whether automatic auditing is active           | `false` |\n| **Idle Timeout**  | Minutes before a tab is considered idle        | `30`    |\n| **Max Tabs**      | Maximum number of tabs allowed (0 = unlimited) | `50`    |\n| **Whitelist**     | Domains to always protect from auditing        | `[]`    |\n| **Blacklist**     | Domains to automatically close (unless active) | `[]`    |\n| **Notifications** | Show notifications when tabs are closed        | `true`  |\n\n### Cleanup Rules (in order)\n\n1. **Whitelist check** - Skip any tab on the whitelist\n2. **Blacklist check** - Close any tab on the blacklist (unless active)\n3. **Idle timeout** - Close tabs idle beyond the configured timeout\n4. **Duplicate tabs** - Close duplicate tabs (keeps the most recently accessed)\n5. **Max tabs** - Close oldest inactive tabs if over the limit\n\n### Domain Matching\n\nDomain entries in the whitelist and blacklist support:\n\n- **Exact match**: `google.com` matches `google.com`\n- **Subdomain match**: `google.com` matches `mail.google.com`, `docs.google.com`, etc.\n- **Partial match not supported**: `google.com` does NOT match `fakegoogle.com`\n\n## Development\n\n### Prerequisites\n\n- Node.js 18+\n- npm\n\n### Setup\n\n```bash\nnpm install\n```\n\n### Build Commands\n\n```bash\n# Development build\nnpm run build\n\n# Production build (minified)\nnpm run build:prod\n\n# Watch mode (rebuilds on file changes)\nnpm run dev\n\n# Package for Chrome Web Store\nnpm run package\n```\n\n### Release Process\n\nAutomated releases are triggered by pushing tags:\n\n```bash\n# Create and push a new version tag\ngit tag v1.0.0\ngit push origin v1.0.0\n```\n\nThis will:\n- Run tests and build the extension\n- Create `tab-audit.zip` package\n- Generate GitHub release with downloadable files\n- Include release notes automatically\n\n### Lint \u0026 Format\n\n```bash\n# Lint code\nnpm run lint\n\n# Lint and auto-fix\nnpm run lint:fix\n\n# Check formatting\nnpm run format:check\n\n# Format code\nnpm run format\n```\n\n### Testing \u0026 Coverage\n\n```bash\n# Run tests in watch mode\nnpm run test\n\n# Run tests once\nnpm run test:run\n\n# Run tests with coverage\nnpm run test:coverage\n```\n\n**Coverage Requirement: Minimum 85%**\n\n- All new code must be tested\n- Coverage must not decrease from baseline\n- Mock files (`__mocks__`) are excluded from coverage\n- Run `npm run test:coverage` before committing\n\n### Project Structure\n\n```\nsrc/\n├── background/       # Service worker (main logic)\n│   └── index.ts      # Tab cleanup rules, activity tracking\n├── popup/            # Browser action popup UI\n├── options/          # Extension options page\n├── shared/           # Shared code\n│   ├── settings.ts   # Settings interface and storage\n│   ├── types.ts      # TypeScript interfaces\n│   ├── constants.ts  # Shared constants\n│   └── utils.ts      # Utility functions\n└── manifest.json     # Chrome extension manifest (V3)\n```\n\n### Debugging\n\n1. Open `chrome://extensions/`\n2. Find \"Tab Auto Clean\"\n3. Click \"Service worker\" to open the background script console\n4. Check for errors and logs\n\n## Contributing\n\nThis project uses **bd** (bead) for task and issue tracking. All work should be tracked through bd.\n\n### Task Tracking with bd\n\n```bash\n# List all open issues\nbd list\n\n# Create a new issue\nbd create \"Brief description of the task\"\n\n# Update issue status\nbd update \u003cissue-id\u003e --status in_progress\n\n# Close/resolve an issue\nbd close \u003cissue-id\u003e\n\n# Search for issues\nbd search \"keyword\"\n\n# Show issue details\nbd show \u003cissue-id\u003e\n```\n\n### Workflow\n\n1. Before starting work, check `bd list` for available tasks\n2. Update issue status to `in_progress` when you begin\n3. Make small, atomic commits after each logical change\n4. Use conventional commits: `feat:`, `fix:`, `refactor:`, etc.\n5. Work directly on the `main` branch for development tasks\n6. Run linter and formatter before committing\n7. Write descriptive commit messages explaining \"why\" not just \"what\"\n8. Close issues with `bd close \u003cissue-id\u003e` when complete\n\n## License\n\nMIT\n\n## Privacy\n\nTab Auditor:\n\n- Runs entirely locally in your browser\n- Does not collect or transmit any data to external servers\n- Uses Chrome's local storage for settings only\n- Does not access or analyze tab contents\n- Minimal permissions: `tabs`, `storage`, `notifications`, `alarms`, `activeTab`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpararang%2Ftab-audit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpararang%2Ftab-audit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpararang%2Ftab-audit/lists"}