Bug: Windows in a stacked group are hidden without a trace

Open
#564 0 comments 0 reactions 0 assignees View on GitHub

@mattchristenson is already working on this.

Since Sep 30, 2026.

  • #568 by @mattchristenson — open

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.

stack of three, first window focused: main vs fix

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/K move 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from forge-ext/forge

All issues in forge-ext/forge

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.