Skip to content

Sidebar and detail column both drive navigation, which destabilises the toolbar #33

Description

@andrei-chernikov

What I found

The app runs two navigation mechanisms at the same time, and they compete for the same window chrome. All three points below are read from main, not from a fork:

  1. SidebarView.swift drives selection: List(selection: $appState.selectedSidebarItem).
  2. ServiceView.swift and ToolView.swift additionally wrap every row in NavigationLink(destination:). Inside a NavigationSplitView sidebar this pushes onto the detail column's navigation stack, and that stack brings its own title bar on top of the split view's chrome.
  3. ContentView.swift builds detail from Defaults[.startPage], not from the selection, so the declared detail content and the visible content come from two different sources.

Consequences

  • The system-inserted sidebar toggle changes position when switching sections, because each detail view declares its own toolbar with a different placement: .automatic in ScanHistoryView, none in LogView, id: in FileView, URLView and FileBatchView.
  • An extra frame / title bar appears on some screens.
  • The window title is squeezed into the sidebar titlebar area and gets clipped, which invites AppKit workarounds like hiding the title outright. I had exactly such a workaround in a branch of mine and removed it, because it papers over this instead of fixing it.

I observed the symptoms in a Debug build based on main with my own feature branches on top, so the screenshots would not be clean evidence — the code structure above is the part I can point at directly.

Separately: Liquid Glass is not adopted

The project targets macOS 14.5 and uses no Liquid Glass API — no glassEffect, no GlassEffectContainer; the only material in the project is .regularMaterial in UploadProgressView.swift. On macOS 26 the system styles standard controls automatically while hand-drawn elements keep the old look, so a window mixes both appearances. Worth deciding deliberately rather than by accident.

Suggested direction

Pick one navigation mechanism — selection-driven detail, dropping the NavigationLink wrappers — give the detail column a real navigationTitle, and normalise toolbar placements across the detail views. Happy to prepare a PR if you want it done this way.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions