Skip to content

Feature/global search - #293

Merged
Timmoth merged 3 commits into
stagingfrom
feature/global-search
May 17, 2026
Merged

Feature/global search#293
Timmoth merged 3 commits into
stagingfrom
feature/global-search

Conversation

@Timmoth

@Timmoth Timmoth commented May 17, 2026

Copy link
Copy Markdown
Owner

Adds a search palette in the header (right of the rackpeek logo) for
jumping
straight to a resource by name, IP, tag, or label — addressing the user
request for "intent-based navigation" as the inventory grows.

  • New <GlobalSearch> component in Shared.Rcl/Components/ wired into
    MainLayout — visible on every page.
  • GlobalSearchService ranks resources against the query with weighted
    field priorities (name 100 > ip 50 > tag 25 > label 10) and match-shape
    modifiers (equality > prefix > substring > subsequence). No external
    dependencies; ~20 lines of scoring logic.
  • Top 8 results render in a dropdown showing {name} · {kind} · via {matched-field}: {value}, so the user sees why each result appeared.
  • Click navigates to the resource detail page via NavigationManager
    (resolves the URL via the existing Resource.GetResourceUrl).
  • Keyboard: ↑/↓ to highlight, Enter to navigate, Esc to clear.
  • Clicking outside the input closes the dropdown (@onfocusout with a
    150ms delay so result clicks still register).
  • Inventory is re-queried on each keystroke so new/edited/deleted
    resources show up without a page refresh. The repo's already in-memory,
    so the cost is negligible.

Searchable kinds: every hardware sub-kind (server, switch, firewall,
router, accesspoint, ups, desktop, laptop), system, service.

@Timmoth
Timmoth merged commit 8276b64 into staging May 17, 2026
3 checks passed
@Timmoth
Timmoth deleted the feature/global-search branch May 17, 2026 13:38
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