{"id":45836232,"url":"https://github.com/vamshi-ka/keeping-tabs","last_synced_at":"2026-02-26T23:01:50.286Z","repository":{"id":323658362,"uuid":"1093410698","full_name":"vamshi-ka/keeping-tabs","owner":"vamshi-ka","description":"Firefox extension for automatic tab numbering and keyboard navigation. Built for Zen Browser.","archived":false,"fork":false,"pushed_at":"2025-11-11T11:27:38.000Z","size":3197,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-11T13:09:34.507Z","etag":null,"topics":["browser-extension","firefox","firefox-extension","keyboard-shortcuts","productivity","tab-management","webextensions","zen-browser"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vamshi-ka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2025-11-10T10:35:53.000Z","updated_at":"2025-11-11T11:28:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vamshi-ka/keeping-tabs","commit_stats":null,"previous_names":["vamshi-ka/keeping-tabs"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/vamshi-ka/keeping-tabs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vamshi-ka%2Fkeeping-tabs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vamshi-ka%2Fkeeping-tabs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vamshi-ka%2Fkeeping-tabs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vamshi-ka%2Fkeeping-tabs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vamshi-ka","download_url":"https://codeload.github.com/vamshi-ka/keeping-tabs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vamshi-ka%2Fkeeping-tabs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29876342,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T22:37:10.609Z","status":"ssl_error","status_checked_at":"2026-02-26T22:37:09.019Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["browser-extension","firefox","firefox-extension","keyboard-shortcuts","productivity","tab-management","webextensions","zen-browser"],"created_at":"2026-02-26T23:01:48.956Z","updated_at":"2026-02-26T23:01:50.276Z","avatar_url":"https://github.com/vamshi-ka.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Keeping Tabs\n\n[![Mozilla Add-on](https://img.shields.io/amo/v/keeping-tabs?label=Firefox%20Add-on\u0026logo=firefox)](https://addons.mozilla.org/en-US/firefox/addon/keeping-tabs/)\n\nA lightweight Firefox extension that automatically numbers both pinned and unpinned tabs with separate visual styles, enabling lightning-fast keyboard navigation.\n\n## Personal Note\n\n```\n- Specifically built for zen browser.\n- Why I built this? I was frustrated that pinned tabs just took up the first numbers 1 through 8 for tab navigation.\n- And I wanted something to switch tabs easily without taking my fingers off the keyboard.\n- Hence, this was built for my personal use. I thought maybe if someone else is also facing this frustration, they can use this. \n- Makes my life so so easy, I can easily navigate by looking at the tab and just hitting the number.\n- I am not an expert at JS or understanding firefox extensions, I used the general logic of event listeners to get what I want through Claude code\n- Only this Personal Note section is not Claude code generated. So feel free to take this and do whatever you want with it and help me add features.\n- Another important Prerequisite - Touch Typing\n```\n\n## Features\n\n- **Dual Tab Numbering**: Numbers both pinned tabs `(1)-(9)` and unpinned tabs `[1]-[9]` for easy identification\n- **Keyboard Navigation**: Jump to any tab instantly with keyboard shortcuts\n- **Separate Navigation**: Pinned tabs use `Alt+1-9`, unpinned tabs use `Cmd+1-9` (Mac) or `Ctrl+1-9` (Windows/Linux)\n- **Smart Updates**: Tab numbers update automatically when you create, close, or move tabs\n- **Non-Intrusive**: Only numbers the first 9 tabs of each type to keep things clean\n\n## Installation\n\n### From Mozilla Add-ons (Recommended)\n\nInstall directly from the official Mozilla Add-ons store:\n\n**[Install Keeping Tabs](https://addons.mozilla.org/en-US/firefox/addon/keeping-tabs/)**\n\n1. Click the link above\n2. Click \"Add to Firefox\"\n3. Confirm the permission request\n4. Start using the extension immediately!\n\n### Manual Installation\n\n1. Download the latest `.xpi` file from [Releases](../../releases)\n2. Open Firefox and go to `about:addons`\n3. Click the gear icon (⚙️) in the top right\n4. Select \"Install Add-on From File...\"\n5. Select the downloaded `.xpi` file\n\n### From Source\n\n1. Clone this repository\n2. Open Firefox and go to `about:debugging#/runtime/this-firefox`\n3. Click \"Load Temporary Add-on\"\n4. Navigate to the repository folder and select `manifest.json`\n\n## Usage\n\n### Tab Numbering\n\nOnce installed, the extension automatically numbers your tabs with different styles:\n\n**Pinned tabs** (round brackets):\n```\n(1) Email\n(2) Calendar\n(3) Slack\n```\n\n**Unpinned tabs** (square brackets):\n```\n[1] GitHub - Your Repos\n[2] Stack Overflow - Questions\n[3] MDN Web Docs\n```\n\n### Keyboard Shortcuts\n\n**Unpinned Tabs:**\n\n- `Cmd+1` (Mac) or `Ctrl+1` (Windows/Linux) - Go to tab 1\n- `Cmd+2` through `Cmd+9` - Go to tabs 2-9\n\n**Pinned Tabs:**\n\n- `Alt+1` - Go to pinned tab 1\n- `Alt+2` through `Alt+9` - Go to pinned tabs 2-9\n\n## Demo\n\nWatch the extension in action:\n\n![Demo](./media/demo.gif)\n\n## Why Keeping Tabs?\n\nModern browsing often involves juggling multiple tabs. Built-in browser shortcuts (`Cmd+1`, `Cmd+2`, etc.) navigate to tabs by absolute position, including pinned tabs, which can be confusing when you have many pinned tabs.\n\n**Keeping Tabs** solves this by:\n\n- Clearly numbering only your active working tabs (unpinned)\n- Providing separate navigation for pinned tabs\n- Updating numbers dynamically as you work\n- Enforcing a \"keep it clean\" approach (max 9 numbered tabs)\n\n## Technical Details\n\n- **Manifest Version**: 2\n- **Permissions**: `tabs`, `\u003call_urls\u003e` (required for title modification)\n- **Browser Support**: Firefox 48+\n- **Architecture**: Background script with event-driven tab management\n\n### How It Works\n\n1. Monitors tab events (create, remove, move, pin/unpin, title changes)\n2. Filters unpinned tabs and numbers the first 9\n3. Injects JavaScript to modify `document.title` on each page\n4. Uses debouncing to prevent race conditions during rapid changes\n\n## Development\n\n### Prerequisites\n\n- Node.js and npm\n- `web-ext` CLI tool: `npm install -g web-ext`\n\n### Building\n\n```bash\n# Set up API credentials in .env file\necho \"WEB_EXT_API_KEY=your-key\" \u003e .env\necho \"WEB_EXT_API_SECRET=your-secret\" \u003e\u003e .env\n\n# Sign the extension\n./sign.sh\n```\n\n### Testing\n\n```bash\n# Load as temporary extension\nweb-ext run\n\n# Or manually:\n# 1. Go to about:debugging#/runtime/this-firefox\n# 2. Click \"Load Temporary Add-on\"\n# 3. Select manifest.json\n```\n\n### Debug Mode\n\nTo enable debug logging, edit `background.js`:\n\n```javascript\nconst DEBUG = true;  // Set to false for production\n```\n\n## Roadmap / Future Features\n\n- [ ] **Customizable Key Bindings**: Allow users to configure their own keyboard shortcuts\n- [ ] **Theme Support**: Customize number display format (e.g., `(1)`, `#1`, `1.`)\n- [ ] **Tab Limit Configuration**: Allow users to number more or fewer than 9 tabs\n- [ ] **Chrome/Edge Support**: Port to Manifest V3 for Chromium-based browsers\n- [ ] **Tab Groups Integration**: Support for Firefox tab groups\n- [ ] **Settings Page**: GUI for configuration instead of editing code\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details\n\n## Author\n\nBuilt with ☕ by [Vamshi Kodipaka](https://github.com/vamshikodipaka)\n\n## Acknowledgments\n\n- Inspired by the need for better tab management in modern browsers\n- Built using the Firefox WebExtensions API\n\n---\n\n**Star this repo if you find it useful!** ⭐\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvamshi-ka%2Fkeeping-tabs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvamshi-ka%2Fkeeping-tabs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvamshi-ka%2Fkeeping-tabs/lists"}