Skip to content

First rudimentary implementation of the visor logic#108

Merged
pragmatrix merged 2 commits intomasterfrom
visors
Feb 25, 2026
Merged

First rudimentary implementation of the visor logic#108
pragmatrix merged 2 commits intomasterfrom
visors

Conversation

@pragmatrix
Copy link
Owner

A start, but needs a proper Z buffer

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR implements rudimentary visor launcher functionality for the desktop system. A visor is a launcher mode where multiple instances are laid out horizontally, centered within a fixed-size panel, and positioned forward in 3D space (using a z-offset). The implementation adds a new LauncherMode enum with Band and Visor variants, updates layout logic to handle visor-specific centering and sizing, and introduces z-offset calculation for instances based on their parent launcher's mode.

Changes:

  • Added LauncherMode enum with Band and Visor variants to distinguish launcher behavior
  • Updated layout algorithm to center visor launcher children horizontally with fixed panel sizing
  • Implemented z-offset logic to position visor instances forward in 3D space (when multiple instances exist)
  • Added group() method to OrderedHierarchy for retrieving sibling nodes, supporting visor layout calculations

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
desktop/src/projects/configuration/types.rs Added LauncherMode enum and mode field to LaunchProfile
desktop/src/projects/mod.rs Set default profile mode to Visor in ProjectConfiguration::default()
desktop/src/projects/launcher_presenter.rs Added mode field and getter to LauncherPresenter
desktop/src/projects/configuration/toml_reader.rs Hardcoded mode to Visor when loading profiles from TOML
desktop/src/instance_presenter.rs Added z_offset parameter to set_rect for 3D positioning
desktop/src/desktop_system.rs Implemented visor-specific layout logic (centering, z-offset) and refactored layout algorithm
desktop/src/aggregates/ordered_hierarchy.rs Added group() method to retrieve sibling nodes with tests
desktop/src/desktop.rs Set primary launcher mode to Band in desktop_groups()
.github/copilot-instructions.md Added conventions about multiple exit points and enum import style

Ok(LaunchProfile { name, params, tags })
Ok(LaunchProfile {
name,
mode: LauncherMode::Visor,
Copy link

Copilot AI Feb 24, 2026

Choose a reason for hiding this comment

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

The mode is hardcoded to LauncherMode::Visor for all profiles loaded from TOML configuration files. This means users cannot configure the launcher mode through TOML. Consider adding a "mode" field to the TOML parser that defaults to Visor if not specified, allowing users to explicitly set the mode in their configuration files.

Copilot uses AI. Check for mistakes.
@pragmatrix pragmatrix merged commit 440405a into master Feb 25, 2026
4 of 8 checks passed
@pragmatrix pragmatrix deleted the visors branch February 25, 2026 04:47
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.

2 participants