Skip to content

fix: improve ui/ux - #213

Merged
Exeloo merged 2 commits into
fix/improve-performancefrom
fix/improve-ui-ux
Nov 5, 2026
Merged

Exeloo merged 2 commits into
fix/improve-performancefrom
fix/improve-ui-ux

Conversation

@Exeloo

@Exeloo Exeloo commented Oct 30, 2026

Copy link
Copy Markdown
Member

What does this PR do?

This PR improve the UI/UX of the app. It add titles, more error messages, keybinds, ...

How do you test this PR?

@Exeloo
Exeloo requested a review from Tchips46 as a code owner October 30, 2026 09:30
@github-actions github-actions Bot added documentation Improvements or additions to documentation apps:editor Related to Editor app packages:project Related to Project package packages:sdk Related to SDK package packages:ui Related to UI package plugins:command-palette Related to Command palette plugin plugins:ecs Related to ECS plugin plugins:packages Related to Packages plugin plugins:scene Related to Scene plugin plugins:settings-ui Related to Settings ui plugin labels Oct 30, 2026
@Exeloo
Exeloo added this pull request to stack #212 October 30, 2026 09:31

@Tchips46 Tchips46 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Review: ui/ux (3fd47f3)

Line numbers are at this PR's head.

Must fix

1. wordStarts breaks palette abbreviations (plugins/command-palette/src/palette/fuzzy.ts:~95, used by rankActions in palette-model.ts:74-84)

  • The matching table picks one best alignment, and only afterwards rejects it if it jumps into the middle of a later word. No other alignment is tried.

  • When the category starts with the same letter as the title, the category's letter wins and the match is rejected. I ran this file's fuzzyMatch with { wordStarts: true }:

    • rst no longer finds Run: Restart;
    • fnd no longer finds File: Find in files.

    Both matched before. The test passes only because View: Reset layout has no earlier r.

  • Fix: apply the rule inside the table. From a letter that is not at a word start, allow only jumps from the same word: keep a second running max, reset at each isBoundary(text, j). Then remove the check that runs afterwards, and add expect(fuzzyMatch('rst', 'Run: Restart', { wordStarts: true })).toBeDefined().

Should fix

2. The recorder refuses plain keys even when a when keeps them out of typing (plugins/command-palette/src/keymap/RecordDialog.svelte:64, docs/docs/editor/settings.mdx:39)

  • plugins/file-manager/nanoforge.manifest.json:111 binds plain Delete with when: "focusedWidget == 'file-manager.files' && !textInputFocus", which takes nothing from typing.
  • Example: a Mac user can't bind Backspace with that same when, and someone who removed the default can't record it back: Save is disabled, and the message is wrong.
  • Fix: const typing = $derived(strokes.length > 0 && !/!textInputFocus/.test(when) && blocksTyping(strokes[0]!));, and add the exception to the docs line.

Nice to have

  • Dead branch (plugins/scene/src/service/scene-service.ts:~560): this.app comes from sceneApps(), which already filters on !!app.entryFile, so the "has no entry file" message can never show. Keep only the !code case.
  • The discard loop in plugins/settings-ui/src/dialogs/settings/SettingsDialog.svelte:~155 runs right before close() unmounts the dialog and drops its local draft. It only fires extra change events: const discard = () => close();.
  • nameTaken (packages/project/src/workspace/workspace-queries.ts:20): project.name falls back to the folder name when the root has no package.json, so in a folder pong, a library named pong is refused as "the project's own name". Rare.

@Exeloo
Exeloo force-pushed the fix/improve-ui-ux branch from 3fd47f3 to 1e41fbb Compare November 1, 2026 13:21
@github-actions github-actions Bot added the packages:kernel Related to Kernel package label Nov 1, 2026
- palette: word starts are checked inside the match, so abbreviations
  whose first letter also starts the category are found again
- shortcut recorder: a plain key is accepted when its condition needs
  !textInputFocus (outsideTyping in the keybinding helpers)
- scene: drop the unreachable no entry file problem
- settings: closing without saving no longer discards change by change
- shared library names: the project's own name clashes only when the
  project has a root package.json (else it is just the folder's name)
@Exeloo
Exeloo force-pushed the fix/improve-ui-ux branch from 1e41fbb to 05a0e3d Compare November 5, 2026 11:55
@Exeloo
Exeloo merged commit 587f38c into main Nov 5, 2026
8 checks passed
@Exeloo
Exeloo deleted the fix/improve-ui-ux branch November 5, 2026 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

apps:editor Related to Editor app documentation Improvements or additions to documentation packages:kernel Related to Kernel package packages:project Related to Project package packages:sdk Related to SDK package packages:ui Related to UI package plugins:command-palette Related to Command palette plugin plugins:ecs Related to ECS plugin plugins:packages Related to Packages plugin plugins:scene Related to Scene plugin plugins:settings-ui Related to Settings ui plugin

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants