Skip to content

feat(toolbar): move a donut profile up or down the list (#522) - #668

Merged
KnifeLemon merged 1 commit into
mainfrom
feat/profile-order
Oct 27, 2026
Merged

KnifeLemon merged 1 commit into
mainfrom
feat/profile-order

Conversation

@KnifeLemon

Copy link
Copy Markdown
Owner

What does this change?

Closes #522.

Filee opens the first profile in the list that has a file's extension, and new profiles are added after the built-in ones, so a profile with .jpg could never win over Images. Settings → Donut toolbar now has Move up / Move down arrows under the profile list. The list order still decides which profile wins.

  • The arrows are icon buttons like the ones in the merge-order window and the group editor (Icon.ArrowUp / Icon.ArrowDown, Button.icon), each with a tooltip and an automation name. Alt+↑ / Alt+↓ in the list do the same thing, and focus stays in the list. A disabled arrow is dimmed instead of showing a grey box.
  • A profile only trades places with one of its own kind (normal or mixed). A normal profile always wins over a mixed one in ProfileSelector anyway, and normal profiles stay above the mixed ones. Among mixed profiles the order matters too: the first match wins, and so does the catch-all.
  • With a search typed, a profile passes the next profile the list shows (e.g. search jpg, then one step up puts your profile right above Images). Hidden profiles keep their order.
  • The order is just the order of profiles.json, which was already saved as a list. No settings schema migration. No CurrentSchemaVersion bump, so nothing collides with feat(presets): Edit pictures, size, format and turn chosen each time (#584) #617 (49).
  • Reset to default puts back the donut's contents, not its place. The place the user chose is kept, so resetting never changes which profile opens another profile's files.
  • The warning under the extension chips (toolbar.ext_claimed_first) now ends with "Move this profile above “Images” to open them here." After the move it becomes the existing "This profile comes first in the list…" message, because the editor is rebuilt after each move. The German string also said "Dieses Profil steht weiter oben", which pointed at the wrong profile. It now names the other one.
  • A short caption under the list explains the rule and the shortcut.
  • New strings toolbar.profile_up, toolbar.profile_down and toolbar.profile_order_hint are in all 17 language files, and toolbar.ext_claimed_first is updated in all 17.

The ordering logic lives in Core (Filee.Core.Profiles.ProfileOrder: Neighbor / Move). The page view model mirrors the store's list.

Type of change

  • Bug fix
  • New feature or improvement
  • New format or engine
  • Translation
  • Documentation
  • Build, CI or dependencies

How was it tested?

  • dotnet format --verify-no-changes
  • dotnet test: all of Filee.Core.Tests (639 passed, 3 skipped), plus the toolbar, extension-editing, localization, automation-name and merge-order tests in Filee.App.Tests (242 passed)
    • Core ProfileOrderTests: a new profile moved above Images opens .jpg. A profile only trades places with its own kind. Profiles of the other kind or hidden by a search keep their place. The catch-all follows the mixed order. The order survives save and load, and reset keeps it.
    • App ToolbarPageTests: commands, CanExecute at the edges, moving while searching, the remark switching, the store and the list staying in step, the saved order; arrow buttons (names and tooltips), Alt+↑ / Alt+↓ from a focused list item, focus kept.
  • Rendered headless (Toolbar_profile_order_renders: en, de, ar, light and dark, before and after the move)

Screenshots (UI changes)

Rendered by RenderTests.Toolbar_profile_order_renders into tests/Filee.App.Tests/bin/<config>/net10.0/screenshots/toolbar-profile-order-{before,after}-{en,de,ar}[-dark].png.

Checklist

  • New UI strings are in all src/Filee.App/Assets/i18n/*.json files
  • New third-party code or binaries are listed in THIRD-PARTY-NOTICES.md (none)
  • The PR does one thing (unrelated changes go in a separate PR)

🤖 Generated with Claude Code

Filee opens the first profile in the list that has a file's extension, and
a new profile goes in after the built-in ones, so a profile with .jpg never
won over Images. The profile list in Settings → Donut toolbar now has Move
up / Move down arrows under it, and Alt+↑ / Alt+↓ in the list do the same.
A profile trades places only with one of its own kind (normal or mixed),
since a normal profile always wins over a mixed one anyway; with a search
typed, it passes the profile the list shows, not a hidden one.

The order is the order of profiles.json, so nothing new is saved and no
settings schema change is needed. "Reset to default" keeps the profile's
place. The remark under the extension chips now says to move the profile
above the other one, and turns into "this profile comes first" after the
move. A caption under the list explains that the higher profile opens.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the feature New features label Oct 27, 2026
@KnifeLemon
KnifeLemon merged commit f9528e9 into main Oct 27, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Menú circular

1 participant