podman-desktop icon indicating copy to clipboard operation
podman-desktop copied to clipboard

Navigation history & breadcrumbs

Open vancura opened this issue 1 month ago • 5 comments

The navigation redesign was approved at the UX Check In meeting on 2025-11-13 with a hybrid approach combining:

Browser-style history buttons

  • Back/forward buttons positioned in the title bar near the search functionality
  • Similar to Slack and VS Code patterns for familiarity
  • Dedicated history navigation separate from structural navigation

Hierarchical breadcrumbs

  • Shows current location in application hierarchy (where you ARE)
  • Remains in traditional page location below the title bar
  • No longer shows navigation path (where you’ve BEEN)

Key design decisions

  • Compatible with both Podman Desktop and Kortex
  • Long-press/hold on buttons reveals navigation history dropdown → Phase 2
  • Phased implementation starting with basic functionality before advanced features

Wireframes

Image Image Image Image

Phases

Phase 1 (approved for immediate implementation):

  • Basic back/forward button functionality
  • Hierarchical breadcrumbs in traditional page location
  • Telemetry to monitor usage patterns and inform future decisions
  • Consider starting with only the “back” button for the simplest possible implementation

Phase 2 (based on Phase 1 telemetry and usage data):

  • History dropdown menu accessible via long-press on buttons
  • Keyboard shortcuts (similar to Slack/VS Code patterns)
  • Advanced navigation features informed by user behavior

Phase 3 (future consideration):

  • Additional features based on continued telemetry analysis

Phase 1 constraints

The following items are explicitly out of scope for Phase 1:

  • Form state restoration (complex implementation, potential stale data issues)
  • Keyboard shortcuts (deferred to Phase 2)
  • History dropdown menu (deferred to Phase 2)
  • Extension API integration (requires epic-level planning)

Phase 1 decisions:

  • History resets on app restart (simpler implementation, consistent with browser behavior)
  • History limit: 20 entries (adjustable based on telemetry)
  • Deleted resources: Show placeholder page with "This resource no longer exists" message and link to list view
  • Stopped machines: Allow navigation (machine is still a valid resource, just in a different state)
  • Search queries: Preserve when navigating back

Critical technical questions requiring resolution

1. History persistence behavior

  • Should navigation history reset on app launch or persist across sessions?
  • Current recommendation: Reset on launch (simpler implementation, browser-like behavior)
  • Requires validation through user research

2. History retention limits

  • How many pages should be retained in navigation history?
  • Unlimited history would create unwieldy dropdown menus
  • Need to define reasonable limit (10 pages? 20 pages? 50 pages?)

3. Deleted resource handling

  • What happens when navigating back to a deleted container’s detail page?
  • What happens with stopped Podman machines?
  • Options: Show empty placeholder page, display “resource no longer exists” message, or prevent navigation

4. Form state restoration

  • When navigating back to pages with forms/search queries, should the state be restored or reset?
  • What happens when users navigate back after submitting forms?
  • Some users expect browser-like behavior, but it is complex to implement

5. Visual glitches and edge cases

  • @benoitf raised concerns about potential visual issues during navigation

Current API integration problems discussed on the UX meeting:

  • Extensions (AI Lab, Kubernetes) currently maintain separate breadcrumb systems
  • Extensions don’t contribute to application-wide navigation history
  • No unified API for extensions to register navigation events

References

vancura avatar Nov 21 '25 09:11 vancura

@jiridostal Hey, could you please help us prioritize this ticket implementation?

vancura avatar Nov 25 '25 16:11 vancura

@vancura Sure thing. Do you consider this proposal as ready to be implemented? If yes, I'll go ahead and include it in the planning.

jiridostal avatar Nov 27 '25 09:11 jiridostal

@jiridostal I feel like we'd need a finished design first. Which could be done as part of this ticket, but I think would do better as a separate, smaller, issue for the first phase. I agreed to help @vancura with that, but can I ask one of you to create the issue for the phase 1 design, please?

Once created, it would need to be assigned to a sprint - I suppose we could add it to the current one.

MariaLeonova avatar Nov 27 '25 10:11 MariaLeonova

@MariaLeonova: #15100

vancura avatar Nov 27 '25 11:11 vancura

Just added the "Phase 1 constraints" to the description above. /cc @MariaLeonova

vancura avatar Dec 05 '25 13:12 vancura