Skip to content

Add Native Subsplit Support#1149

Open
CryZe wants to merge 30 commits into
LiveSplit:masterfrom
CryZe:native-subsplits
Open

Add Native Subsplit Support#1149
CryZe wants to merge 30 commits into
LiveSplit:masterfrom
CryZe:native-subsplits

Conversation

@CryZe

@CryZe CryZe commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add native segment-group editing to the run editor, including group selection, naming, icons, movement, and creation/removal
  • render the run editor from the presentation-ready row model exposed by livesplit-core
  • expose and localize the Flat, Current Group Expanded, and All Groups Expanded display modes
  • update the livesplit-core submodule to the merged native subsplit implementation from Add Native Subsplit Support livesplit-core#934

Why

This brings native subsplit support to the web and desktop frontends while keeping group structure, visibility, and presentation decisions in livesplit-core so other frontends can consume the same model.

Validation

  • npm run build:core
  • npm run lint
  • npx prettier@3.8.1 --check on the affected frontend sources
  • npm run publish

CryZe added 26 commits July 4, 2026 22:35
This makes the run editor show segment groups as editable headers with indented split rows, allowing users to create, remove, and rename groups directly from the splits table instead of editing a flat list only.

This also wires the subsplit display mode into the settings UI as a localized combobox and updates the staged livesplit-core submodule with backend-controlled group action availability.
This updates the staged livesplit-core submodule to include the fix for moving whole subsplit groups as coherent sections in the run editor.
This updates the staged livesplit-core submodule to include single-segment subsplit groups and hierarchical scrolling before the timer has a current split.
This makes the run editor draw the same section boundary before an ungrouped segment that follows a segment group as it already draws before group headers.

This also updates the staged livesplit-core submodule with renderer state for hierarchical section separators.
This makes the run editor show automatic segment group names as placeholder text while keeping manually entered group names as explicit input values.

This also wires the subsplit display mode setting labels through the frontend localization table and updates the staged livesplit-core submodule with simpler group name bindings.
This keeps the full segment group selected when editing a group header in the run editor instead of collapsing the selection to the major split.

This also updates the staged livesplit-core submodule with regression coverage for the same selection behavior.
This lets the run editor display and edit explicit segment group icons while showing inherited major-split icons as faint placeholders.

This also updates the staged livesplit-core submodule with group icon support and refined current-group-expanded scrolling behavior.
This makes the Run Editor read each native segment group from its dedicated state list instead of reconstructing group bounds and properties from per-segment metadata. It also keeps explicit names visible when they happen to match their major split's current name.

This updates the Cargo lock for the new core dependency and advances the staged livesplit-core submodule with invariant-preserving structural edits, a multi-group movement guard, and correct group-header icon layout.
@CryZe
CryZe marked this pull request as ready for review July 21, 2026 16:27
CryZe added 2 commits July 22, 2026 12:09
Move segment and group row rendering, selection state, and table-specific controls into focused modules. This keeps the large Run Editor view from accumulating another independent editing subsystem while preserving the existing behavior.
Expire mouse-focus suppression after its originating event so later keyboard navigation always activates the focused segment. Route Ctrl, Command, and Shift group-header selection through livesplit-core so complete group selection follows the same backend rules in every frontend.
Advance livesplit-core to the generalized gap-separator setting. The frontend settings UI now receives the accurate localized label and description while existing serialized layouts continue loading through the core compatibility alias.
@CryZe
CryZe force-pushed the native-subsplits branch from bfe15fb to 8f0821e Compare July 22, 2026 12:52
Handle group-header textbox selection on mouse-down just like segment textboxes, while suppressing only the focus event that will actually occur. This preserves Ctrl, Command, and Shift selection without a timer or stale focus token, keeps keyboard focus exclusively selecting its group, and prevents a successfully deselected group from retaining an editable textbox.
@CryZe
CryZe force-pushed the native-subsplits branch from 8f0821e to 800c0d4 Compare July 22, 2026 15:04
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.

1 participant