Bug: Windows in a stacked group are hidden without a trace
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- javascript
- Domain
- desktop
Research direction
The focus handler calls updateStackedFocus() and updateTabbedFocus() without the window, causing early returns; locate these in the extension JS source. Run the reproduction scenario scenarios/17_stack_tab_switching.py from forge-repro to observe the bug. Implement an i3-style title list bar per acceptance criteria; done means N title rows show for N windows with fixed-order Super+J/K navigation.
Written by the indexing model from the issue text.
Description
Problem. A stacked group (Super+Shift+S) places each window one header height lower than the one before, and relies on the windows' own title bars peeking out above the focused one. Only the windows before the focused one peek out. Every window after it is completely covered, with nothing showing that it exists. With focus on the first window of a stack of three, the stack looks like a single window.

Cause. A 2022 change, "Improve stacking order when focused" (07ac521), was meant to move the focused window to the end of the stack on every focus change, so every title would show above it. But the focus handler calls updateStackedFocus() and updateTabbedFocus() without the window, so both return immediately. The behaviour never took effect. (Enabling it as designed would also reorder the stack on every focus, which breaks Super+J/K: they would bounce between two windows.)
Desired outcome. An i3-style stack:
- a list of every window's title at the top of the group, one row per window, in a fixed order;
- the focused window below the list, with its row highlighted;
- every other window one click on its row, or
Super+J/K, away.
Acceptance criteria.
- A stack of N windows shows N title rows. None is hidden, whichever window is focused.
- The focused window is on top, below the list. No window covers the list.
- The focused window's row is highlighted, and follows focus changes (keys, clicks, Alt+Tab).
- Clicking a row focuses that window; the close button on a row closes it.
Super+J/Kmove through the stack in list order, and the order doesn't change.- Switching stacked ↔ tabbed changes the bar between a list and tabs, with no leftover bar.
- With title bars turned off (
showtab-decoration-enabled), stacks keep today's cascade.
Reproduction: scenarios/17_stack_tab_switching.py (17.3, 17.6).
- Dominant language
- JavaScript
- Stars
- 1.3k
- Forks
- 112
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from forge-ext/forge
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Bug: Changing a setting while Forge is disabled (e.g. screen locked) throws errors; old handlers keep runningPossibly taken @mattchristenson claimed this 41 days ago. Open
Difficulty 3/5 1-2 days Newbie friendliness 35/100
-
Bug: Windows overlap while resizing, until slower apps catch upPossibly taken @mattchristenson claimed this 41 days ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 30/100
-
Bug: Tabbed and stacked groups that contain a split show windows on top of each otherPossibly taken @mattchristenson claimed this 41 days ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 20/100
Similar issues
-
ai core enhancement good first issue testing
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
cli: `studio --request <missing file>` answers with a raw ENOENT/EISDIR instead of a clear errorPossibly taken A pull request linked to this issue is open or already merged. Openbug good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
laaielichter/Ai-edit-studio#81 ·
Maintainers usually reply within 1 day
-
TEDAPI/v1r mode: /aggregates drops the generator meter (GENERATOR is in meterAggregates)Possibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
jasonacox/pypowerwall#472 ·
Maintainers usually reply within 1 day