Skip to content

Compact Layout Experiments: Vertical Groups and "More Tabs"#1024

Draft
hossamkhero wants to merge 4 commits intoimputnet:mainfrom
hossamkhero:feat/more-tabs
Draft

Compact Layout Experiments: Vertical Groups and "More Tabs"#1024
hossamkhero wants to merge 4 commits intoimputnet:mainfrom
hossamkhero:feat/more-tabs

Conversation

@hossamkhero
Copy link

For your pull request to not get closed without review, please confirm that:

  • An issue exists where the maintainers agreed that this should be implemented
    (an approved feature request, or confirmed bug).
  • I tested that my contribution works locally, and does not break anything,
    otherwise I have marked my PR as draft.
  • If my contribution is non-trivial, I did not use AI to write most of it.
  • I understand that I will be permanently banned from interacting with this
    organization if I lied by checking any of these checkboxes.

Tested on (check one or more):

  • Windows
  • macOS
  • Linux

Disclaimer

This PR is not intended to be merged as-is.

This is more like a feature request. I had a few ideas around the compact layout, and instead of just describing them, I tried implementing rough versions of them (a lot of LLM slop) to see if they would actually make sense in practice, and also wanted to familiarize myself with the codebase and the development cycle, such as using quilt.

All of these features are meant to be optional and something users should be able to turn on and off. In this PR I mainly focused on prototyping the features themselves rather than wiring them fully into settings, and the long compile times really tired me out boss.

Motivation

I first started using Helium when the vertical tabs layout was introduced, but the compact layout caught my eye much more. Coming from Zen Browser, I was used to vertical tabs in compact mode where the sidebar stays hidden and only appears when hovering near the screen edge. In practice that workflow adds friction: you hover to open the sidebar, scroll to find a tab, then it hides again.

With Helium’s compact layout, I found it much nicer to just reach the tabs from the top. It takes very little screen space compared to classic mode, while still keeping tabs easily accessible. That made me start thinking about how to get even more out of that space with the following features.

Vertical Groups

Instead of tab groups opening horizontally in the compact/classic layout, they open a popup that contains the tabs of that group. The popup grows vertically and the tabs can be scrolled through, so the group does not take additional horizontal space.

This is still a rough PoC and several details are not handled yet, for example:

  • better UI when the active tab belongs to the group
  • split views
  • the opening animation (currently very basic)

The goal here was mainly to test the interaction model.

helium-vertical-group

More Tabs

A configurable number of non-pinned tabs is kept visible in the top bar. Any tabs beyond that limit are placed in a popup that contains the overflow tabs.

For example, if N = 10 and you already have 10 tabs open, opening the 11th tab keeps it in the top bar while the least recently used (LRU) tab moves into the "More Tabs" popup.

This keeps the most recently used tabs visible in the top bar while the rest remain accessible through the popup, which again, u can scroll through vertically.

again, still missing a lot of stuff like:

  • what about folder? (we might even need to introduce "pinned folders" cuz of that or something)
  • what about when the screen is too small? we can't show that number of tabs, so how would resizing go in here.

just to list a few.

helium-more-tabs-showcase.mov

@hossamkhero hossamkhero changed the title Feat/more tabs Compact Layout Experiments: Vertical Groups and "More Tabs" Mar 4, 2026
@hossamkhero hossamkhero marked this pull request as ready for review March 9, 2026 02:13
@greptile-apps
Copy link

greptile-apps bot commented Mar 9, 2026

Last reviewed commit: 2003c25

Comment on lines +1 to +3
helium/ui/layout/popup-strip-tab.patch
helium/ui/layout/vertical-folders.patch
helium/ui/layout/more-tabs.patch
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incorrect patch ordering — CI build will fail

The three new patches are placed at the very top of patches/series (lines 1–3), before all upstream-fixes and core Helium patches. However, every one of them depends on symbols and infrastructure that are introduced much later in the series:

  • helium/ui/layout/core.patch (line 320) — provides HeliumLayoutStateController
  • helium/ui/layout/compact.patch (line 323) — provides IsCompactTabGroupPopupMode(), CompactTabGroupPopupView, and related compact-layout APIs

Because quilt applies patches in series order, these three patches will be attempted against a source tree where none of the above exists yet, causing a build failure.

The patches need to be appended after helium/ui/layout/compact.patch (or helium/ui/layout/vertical.patch if they also depend on the vertical-layout infrastructure), regenerated with quilt against the correctly-ordered tree, and then re-added to the series in that position.

Rule Used: - Helium source code consists out of patches that ... (source)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i sus'd that, but idk, it worked with me

@driftlgtm
Copy link

Does any of your submitted PR code use AI-generated code?

@wukko
Copy link
Member

wukko commented Mar 19, 2026

Does any of your submitted PR code use AI-generated code?

have you read the pr description?

@wukko wukko marked this pull request as draft March 19, 2026 15:39
@driftlgtm
Copy link

Does any of your submitted PR code use AI-generated code?

have you read the pr description?

I have. Apologies for misunderstanding.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants