/ docs / simple-tab-groups-feature-report.md
simple-tab-groups-feature-report.md
  1  # Simple Tab Groups Extension: Feature Overview and Issue Analysis
  2  
  3  ## Overview of Simple Tab Groups (STG)
  4  
  5  **Simple Tab Groups** is a Firefox extension that allows users to organize tabs into named **groups**, similar to the old Firefox “Panorama” (Tab Groups) feature. It works by hiding and showing sets of tabs: when you switch to a tab group, only that group’s tabs are visible in the tab bar, while tabs from other groups are hidden in the background. This enables a cleaner browser workspace and easy switching between different contexts (e.g. work, research, personal) without opening separate browser profiles. STG is inspired by the legacy Tab Groups add-on and aims to replicate its functionality under Firefox’s WebExtensions API constraints.
  6  
  7  **How it works:** STG adds a toolbar button (default shortcut **F8** to open) that opens a dropdown **group menu**. From this menu, users can create new tab groups, switch to another group, or manage groups. Only tabs in the active group are shown; when you switch groups, STG uses Firefox’s `tabs` and `tabHide` APIs to hide the previous group’s tabs and reveal the chosen group’s tabs. The extension can also operate across multiple windows – each Firefox window can have a different group active. If you select a group that’s already open in another window, STG will bring that window to the foreground with the group displayed. You can even select a specific tab within a group from another window via the STG menu, and that window will come forward. (In essence, each window can host one group at a time, but you can run several groups concurrently by using multiple windows.)
  8  
  9  **Core use cases:** STG’s high-level goal is to help users with many tabs by **decluttering the tab bar**. Instead of hundreds of tabs in one long strip, users can categorize tabs into logical groups (for example: “Project A”, “News Articles”, “Travel Planning”, etc.) and switch the entire context with one click. This reduces memory usage and distraction by unloading hidden tabs until their group is activated. The extension is **not a cloud sync or multi-device solution** out of the box – it focuses on local tab management (more on sync requests later). It is also **not a session manager replacement** in the traditional sense; STG manages tab visibility but relies on Firefox to restore the last active group on startup (so Firefox’s “Restore Previous Session” must be enabled). Users still depend on Firefox or manual backups to avoid data loss when closing windows or restarting the browser.
 10  
 11  Below, we break down STG’s features into implemented functionality versus requested or pending features, using information from the project’s GitHub issues. We also highlight certain user-reported problems, workarounds, and partial implementations as discussed in the issue tracker.
 12  
 13  ---
 14  
 15  ## Implemented Features and Functionality in STG
 16  
 17  ### Tab Group Creation, Switching, and Organization
 18  
 19  - **Creating and Naming Groups:** Users can create a new group via the toolbar menu (“Create New Group”) and give it a custom name. Each group acts like a container of tabs. Newly created groups start empty until you add tabs to them. Groups are persistent across sessions (saved in extension storage and auto-backed up to file).
 20  
 21  - **Adding Tabs to Groups:** There are multiple ways to put tabs into a group:
 22    - Drag & drop tabs between groups in the STG interface (toolbar popup and “Manage Groups” page).
 23    - Right-click a tab in Firefox’s tab bar and use **“Move Tab to Group”**, with a submenu listing all groups plus “create new group with this tab”.
 24    - Moving a tab to another group hides it from the current view and associates it with the target group.
 25  
 26  - **Group Switching:** Clicking a group’s name in the STG dropdown will switch to that group, hiding all other groups’ tabs and revealing that group’s tabs.  
 27    - **Performance note:** switching can become slow with extremely large groups (e.g. 1000+ tabs), due to the hide/unhide operations.
 28  
 29  - **State & Convenience Behavior:**
 30    - Remembers last active tab per group when switching.
 31    - Optional auto-**mute** for inactive groups.
 32    - Middle-click tab entries in the STG menu to close them.
 33  
 34  - **Keyboard Navigation:** Arrow-key navigation in the STG popup/search:
 35    - Up/Down to move, Right to drill down, Left to go back, Enter to activate.
 36  
 37  - **“Manage Groups” Page (Panorama-like View):**
 38    - A dedicated page that shows groups as tiles, supports drag/reorder, bulk operations, and includes a search/filter bar across groups and tabs.
 39  
 40  - **Sorting, Deleting, Undo:**
 41    - Alphabetical sorting via context action.
 42    - Manual reorder via drag.
 43    - Delete group closes tabs; **Undo Remove Group** allows one-step immediate restore.
 44  
 45  - **Group Icons and Colors:**
 46    - Per-group icon and color.
 47    - Option to set group icon from a tab’s favicon.
 48  
 49  - **Sticky Groups:**
 50    - A *sticky group* can keep its tabs from being automatically moved out by rules (see container/rule system).
 51  
 52  - **“Other Tabs” Handling:**
 53    - A UI section for tabs not assigned to groups (with actions to move to current group or new group).
 54    - Reports exist that this menu item can disappear in some versions (open issue).
 55  
 56  ---
 57  
 58  ### Integration with Containers and Automatic Tab Rules
 59  
 60  - **Assign Group to a Container:** Link a group to a Firefox Multi-Account Container so new tabs created in that group open in that container by default.
 61  
 62  - **Auto-Move Tabs by Container:** Configure rules to move tabs in a given container into a designated group automatically.
 63  
 64  - **Custom URL Rules (Regex):** Rules that match tab URLs/domains to auto-move tabs into a chosen group.
 65  
 66  - **Firefox Multi-Account Containers Compatibility Caveats:**
 67    - Reports exist of tabs losing their container assignment on restore in some edge cases.
 68    - Recommendation: test if container isolation is a critical requirement for your workflow.
 69  
 70  - **Temporary Containers Integration:** Optional action to open a new tab in a Temporary Container within the current group.
 71  
 72  - **Private Browsing:** STG explicitly does **not** support Private Browsing windows.
 73  
 74  ---
 75  
 76  ### Backup, Restore, and Sync Functionality
 77  
 78  - **Automatic Backups to File:** STG periodically writes JSON backups, typically into the system Downloads folder (e.g. an `STG-backups` directory). These backups are often the primary recovery mechanism if tabs disappear or data becomes inconsistent.
 79  
 80  - **Manual Backup/Restore:** Export/import JSON from Options to snapshot or restore a complete STG state.
 81  
 82  - **Session Restore Interactions:**
 83    - Best results when Firefox is set to **Restore Previous Session**.
 84    - Risk: closing windows in certain orders can lead to hidden tabs not being restored properly; backups provide the safety net.
 85  
 86  - **Known Update/Startup Edge Cases:**
 87    - Some reports of STG appearing broken after Firefox updates until startup cache is cleared and/or backup is restored.
 88  
 89  - **No Native Cloud Sync (Current):**
 90    - STG does not provide real-time cross-device sync via Firefox Sync or cloud.
 91    - Workaround: automate backups and manually transfer the JSON between devices.
 92  
 93  - **Backup Location Requests (Open):**
 94    - Users frequently request the ability to choose backup directory instead of Downloads.
 95  
 96  ---
 97  
 98  ### Additional Features and Plugin Functionality
 99  
100  - **Group Notes:** Add text notes per group (helpful for context/to-dos).
101  
102  - **Sidebar Support:** STG can be used as a Firefox Sidebar panel for persistent group overview.
103  
104  - **Keyboard Shortcuts & Gesture Support:** Customizable shortcut for popup; compatible with Gesturefy via runtime message actions.
105  
106  - **Import/Export Compatibility:** Import from older tab-group tools; export groups to bookmarks folders.
107  
108  - **Theme Support:** Dark theme and appearance options.
109  
110  - **Conflict Warnings:** Can conflict with other extensions that hide/manipulate tabs.
111  
112  ---
113  
114  ## Open Issues and Unimplemented Feature Requests
115  
116  Below are notable open or unimplemented user-facing feature requests seen in the STG issue tracker. These represent potential opportunities if you’re building a new tab-grouping extension.
117  
118  - **Cross-Device Cloud Sync**
119    - Most requested feature: sync groups/tabs across devices (Firefox Sync or external cloud like GitHub Gist).
120    - Current workaround is manual backup transfer.
121  
122  - **View Multiple Groups Concurrently**
123    - Users want multi-group visible in the same window (beyond “one group per window” model).
124    - Today: approximate by using multiple windows.
125  
126  - **Better Group Color Automation**
127    - Option to auto-assign random colors to new groups.
128  
129  - **Custom Backup Directory**
130    - Choose backup folder path instead of forcing Downloads.
131  
132  - **Pinned Tabs Per Group**
133    - Preserve and restore pinned tabs within each group; avoid pinned tabs “disappearing” on group/window cycles.
134  
135  - **Archive / Hibernate Tab Groups**
136    - An archive concept to hide old groups without deleting them.
137    - Related: group folders/hierarchy for organizing many groups.
138  
139  - **Auto-Remove Empty Groups**
140    - Option to delete group when its last tab is closed (instead of leaving empty groups).
141  
142  - **Compatibility with Firefox Native Tab Groups**
143    - Emerging conflicts as Mozilla experiments with native grouping; STG may need adaptation to coexist.
144  
145  - **Compatibility with Firefox Forks (e.g., Floorp)**
146    - Some reports that STG breaks on certain forks/versions.
147  
148  - **Performance Limits With Massive Tab Counts**
149    - Switching very large groups can be slow and memory intensive; mitigation includes discarding tabs and splitting into smaller groups.
150  
151  ---
152  
153  ## Practical Takeaways for Designing Your Own Firefox Extension
154  
155  - STG demonstrates that a strong tab-grouping experience in Firefox is achievable using `tabHide` + `tabs` APIs, but:
156    - **Session restore edge cases** and **backup ergonomics** become critical.
157    - **Cross-device sync** remains a major unmet demand and a strong differentiation opportunity.
158    - **UI scalability** (archiving, folders, filtering, sidebar) matters a lot for power users.
159    - **Container correctness** (especially on restore) is vital for users who rely on isolation.
160  
161  If you want, I can turn this into:
162  - a “requirements spec” style list for your extension (must/should/could),
163  - a feature matrix comparing STG to your planned architecture, or
164  - a prioritized roadmap based on unmet user demands.