Skip to content

feat(runtimes): universal runtime & package manager with live search - #38

Open
Rayiumir wants to merge 1 commit into
mainfrom
rayiumir-developer
Open

feat(runtimes): universal runtime & package manager with live search#38
Rayiumir wants to merge 1 commit into
mainfrom
rayiumir-developer

Conversation

@Rayiumir

Copy link
Copy Markdown
Contributor

Summary

Add a complete Tool Manager for the /runtimes page: native package-manager detection, live cross-manager search with precise phrase ranking, and install/update/uninstall for any discovered package.

Backend (Rust):

  • package_manager module: detection engine, manager registry, embedded catalog + resolver (with static fallback), 16-manager search normalizers, and a fresher that records index-refresh timestamps.
  • installer module: streaming managed/static installs with pkexec/sudo elevation and cancel support.
  • Live-search ranking is term-driven (exact > prefix > name-substring > description-substring) with separator normalization ("node js" == "nodejs"), and never surfaces loosely related packages.
  • Perf: has_internet() probes IP targets concurrently (was a sequential, DNS-dependent multi-second block on every page visit); catalog parsed once via LazyLock; per-tool status probes parallelized.

Frontend (React):

  • RuntimeManagerPage rewritten as the Tool Manager: debounced search, category browse, detail dialog with version picker + command preview, live install progress, network/refresh indicators.
  • Shared Badge capped to parent width (max-w-full, min-w-0) and result/catalog cards truncate long names/versions/manager labels with title tooltips to prevent badge overflow.
  • Remove orphaned curated panels (Php/Node/EnvVar) and their data, replaced by the universal feature.

Type of Change

  • Bug fix
  • New feature
  • Improvement
  • Performance optimization
  • Refactoring
  • Documentation update
  • CI / Build
  • Dependencies
  • Other

Add a complete Tool Manager for the /runtimes page: native package-manager
detection, live cross-manager search with precise phrase ranking, and
install/update/uninstall for any discovered package.

Backend (Rust):
- package_manager module: detection engine, manager registry, embedded
  catalog + resolver (with static fallback), 16-manager search normalizers,
  and a fresher that records index-refresh timestamps.
- installer module: streaming managed/static installs with pkexec/sudo
  elevation and cancel support.
- Live-search ranking is term-driven (exact > prefix > name-substring >
  description-substring) with separator normalization ("node js" == "nodejs"),
  and never surfaces loosely related packages.
- Perf: has_internet() probes IP targets concurrently (was a sequential,
  DNS-dependent multi-second block on every page visit); catalog parsed once
  via LazyLock; per-tool status probes parallelized.

Frontend (React):
- RuntimeManagerPage rewritten as the Tool Manager: debounced search, category
  browse, detail dialog with version picker + command preview, live install
  progress, network/refresh indicators.
- Shared Badge capped to parent width (max-w-full, min-w-0) and result/catalog
  cards truncate long names/versions/manager labels with title tooltips to
  prevent badge overflow.
- Remove orphaned curated panels (Php/Node/EnvVar) and their data, replaced by
  the universal feature.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Rayiumir
Rayiumir requested a review from itashia August 25, 2026 00:02
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