Skip to content

Better entity search, site navigation, performance and settings fix - #33

Merged
MathiasReichardt merged 14 commits into
mainfrom
feature/better-entity-search
Oct 9, 2026
Merged

MathiasReichardt merged 14 commits into
mainfrom
feature/better-entity-search

Conversation

@MathiasReichardt

@MathiasReichardt MathiasReichardt commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Search

  • One global search in the toolbar replaces the search in each property tree.
    • It searches the whole entity, including collapsed embedded entities.
    • It opens the places that contain hits; Enter / Shift+Enter step through them.
  • Options for what to search: property values, property names, titles & classes, link relations, embedded entity relations and actions. Plus case-sensitive and regex modes.
  • The raw view is searched as plain JSON text.
  • New showSearch user setting, plus an app.config.json key that can only turn the search off.

Navigating embedded entities

  • Expand/collapse all buttons for each level of embedded entities.
  • +/- expand or collapse all top level embedded entities. The tooltips show the keys.
  • Floating page navigation at the bottom right:
    • previous/next embedded entity (Arrow up/down)
    • top/bottom (Home/End)
    • Enter toggles the current entity, which is outlined.
  • style header so clearer where entity starts

Raw view

  • Opens 2 levels deep instead of fully, so switching views no longer freezes with many embedded entities.
  • New "Expand 2 levels" button; +/- expand or collapse everything.
  • Page navigation with top/bottom only.
  • UI/Raw toggle:
    • The active view looks pressed in, instead of a check mark.
    • Clicking it releases the focus, so the keys work right away.

Settings

  • Fixed: site settings panels collapsed when clicking inside them while editing.
  • Fixed: editing global headers failed with "site url not present".
  • Site hosts:
    • Checked while typing; the interceptor matches host and port only.
    • Invalid hosts are never stored.
    • Hosts are matched case-insensitively.
  • "Add site" opens the new site and focuses its host field. If a site without a host already exists, it focuses that one instead of throwing.
  • Add hide button for header values

Tests

  • Unit and e2e tests for all of the above. E2e: 34 tests, all passing.

Mathias Reichardt added 7 commits October 3, 2026 00:22
- Move the search from each property tree into one search box in the toolbar
  - Searches the entity data, so collapsed embedded entities are searched too
  - Opens nested properties and embedded entity panels that contain a hit
  - Hits are listed in render order; previous/next buttons, Enter / Shift+Enter
- Add search options, saved with the user settings
  - Property values, property names, titles & classes, link relations,
    embedded entity relations, actions
  - Case-sensitive and regex modes; invalid regexes are flagged
  - Relations match by raw name and by mapped display text
- Mark matching substrings and the current hit; debounce typing
- Keep the query on navigation
- Search the raw view as plain text over the formatted JSON
- Add showSearch user setting and app.config.json key; config can only disable it
- Remove the property-controls switch from the toolbar; it stays in the settings
- Fix jumping to the wrong row when properties share a name
- Hide the property tree header when no top-level property can be expanded
- Add unit and e2e tests for the search
  - Add icon buttons right of the embedded items, next to the counter; they open or close only that level's panels
    - Nested embedded levels keep their state and have their own buttons
  - Property tree expand/collapse buttons now show only the icon; the label moved to a tooltip
  - Add e2e tests, including nested embedded entities in the test data
  - Floating footer at the bottom right, shown only when the top-level entity has embedded entities
    - Collapsed to a small handle; expands on hover or focus
    - Previous/next entity (Arrow up/down) on the left, top/bottom (Home/End) on the right
    - Top/bottom make the first/last embedded entity current
    - Previous/next step through top-level embedded entities and links; nested ones are skipped
    - Keys are ignored while text fields, toggles, menus, tree or dialogs handle them, and with modifier keys
    - Clicked footer buttons release focus, so Enter does not repeat them
  - Outline the current embedded entity
    - Clicking or tabbing into an entity makes it current; clicking elsewhere clears it
    - Enter expands/collapses the current entity; top-level panel headers show this in a tooltip
    - Reset on navigation
  - Bottom spacer so the footer never covers the last content
  - Add unit and e2e tests
- Track sites by an id that survives edits; each edit replaced the site record, which rebuilt and collapsed its panel and dropped focus
- Keep a renamed site in place
- Remove header rows by key, since the panel is no longer rebuilt
- Add accessible name to settings button
- Add e2e test
- Store global header edits in the global settings; they failed with "site url not present"
- Validate site hosts while typing; interceptor matches only host name and non-default port
  - Reject scheme, path, credentials, invalid ports and duplicates, with a corrected-host suggestion
  - Store only valid hosts, on leaving the field; panel title shows the stored host
  - Placeholder "Host or IP, optional port" instead of a hint
- Match site hosts case-insensitively
- Add site opens and focuses the new site; focus an existing site without host instead of failing
- Add unit and e2e tests
…ed entities

  - Apply to top level embedded entities only, outside inputs, like the arrow keys
  - Accept Shift with +, which needs it on US layouts
  - Show the keys in the top level expand/collapse all tooltips
- Open the raw tree 2 levels deep; the fully opened tree rendered slowly for many embedded entities
  - "Expand 2 levels" button, left of "Expand all"
  - +/- expand or collapse all, as in the UI view
  - Fix "Collaps all" tooltip
- Show back to top / to bottom navigation in the raw view
- UI/Raw toggle: active view shown pressed in instead of a check mark
- Release the toggle's focus after a click, so the page shortcuts work right away
- Add e2e test
Mathias Reichardt added 7 commits October 3, 2026 02:10
… content

- Grey header with hover/focus tint, divider under open headers
- Larger tree-style chevron left of the header: right when closed, down when open
- Expand/collapse all buttons and item count on the left
- Header actions take a target: global, or a site with its url
  - A missing site url could otherwise reach the global headers, which go to every request
- Stored settings unchanged
- Add reducer tests for global and site headers
- Eye button per header masks the value, e.g. while screen sharing; it is still stored as plain text
  - Crossed-out eye while hidden
  - Masked with CSS, so browsers do not offer to save it as a password
  - The hidden state is stored with the header and kept when the header is renamed
- Headers stored by earlier versions load as not hidden and keep being sent
- Fix "Overrriden" typo in the global settings description
- Add reducer and e2e tests
…th /

- jumping to a hit selects its top level embedded entity for page navigation
- Enter, Page up/down jump to a hit and leave the search box, so item keys work
- Page up/down outside the search box step through hits while a search is active
- / focuses the search box, Esc leaves it
- tooltips name the new keys
- Esc closes the search options men
@MathiasReichardt
MathiasReichardt merged commit 24fdb94 into main Oct 9, 2026
2 checks passed
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