Skip to content

Add support for additional tools and utilities with version fetching#27

Open
Ngha-Boris wants to merge 1 commit into
mainfrom
add-version
Open

Add support for additional tools and utilities with version fetching#27
Ngha-Boris wants to merge 1 commit into
mainfrom
add-version

Conversation

@Ngha-Boris
Copy link
Copy Markdown
Collaborator

Add Version Fetching for Missing Open-Source & Proprietary Software

Summary

This PR adds dynamic version fetching for 50+ additional software packages, including both open-source projects (via GitHub API) and proprietary software (via Homebrew API). It also implements lazy loading to prevent performance degradation from excessive API calls.

Changes Made

1. Enhanced Version API (src/app/api/versions/route.ts)

New Helper Functions

  • staticVersion() - Returns hardcoded versions when no API is available
  • githubReleases() - Enhanced to support custom tag filters

Added Version Sources (50+ packages)

Open Source (GitHub):

  • Browsers: zen-browser, brave, firefox
  • Terminals: alacritty, kitty, hyper
  • Tools: git, curl, zsh, oh-my-zsh, jq, htop, tmux
  • Databases: mysql, mariadb
  • Runtimes: nvm, ruby, php, kotlin, java
  • Cloud CLIs: aws-cli, azure-cli
  • Web Servers: apache
  • Data Science: jupyter, tensorflow, pandas, numpy, matplotlib
  • IDEs: vim

2. Performance Optimization (src/components/package-manager.tsx)

Implemented Lazy Loading

  • Before: All 50+ version fetches fired simultaneously on page load
  • After: Versions only fetched when user clicks/focuses on a version dropdown
  • Added handleVersionDropdownOpen() function
  • Added hasFetchedVersions state to prevent duplicate calls

Updated Dynamic Version List

Extended dynamicVersionTools array to include all newly supported packages.

3. App Definition Updates

Added linuxCommandTemplate and macosCommandTemplate to support version-specific installations:

  • browsers.ts: brave, firefox
  • tools.ts: git, curl, zsh, oh-my-zsh
  • terminals.ts: alacritty, kitty, hyper
  • utilities.ts: jq, htop, tmux
  • databases.ts: mysql, mariadb
  • runtimes.ts: ruby, php, kotlin, nvm
  • data-science.ts: jupyter, tensorflow, pandas, numpy, matplotlib
  • web-servers.ts: apache
  • cloud-clis.ts: aws-cli, azure-cli
  • ides.ts: vim

Benefits

  1. More Accurate Scripts - Users can now pin specific versions for 50+ additional tools
  2. Better UX - Version dropdowns populate dynamically with real, current versions
  3. Improved Performance - Lazy loading prevents browser freezing from 50+ simultaneous API calls
  4. Fallback Handling - Static versions ensure graceful degradation when APIs fail

Testing

  • Verify GitHub API rate limits aren't exceeded with lazy loading
  • Confirm version-specific install commands generate correctly
  • Validate lazy loading triggers on dropdown interaction
  • Check that static versions display correctly for apps without APIs

Technical Notes

  • GitHub API calls use per_page=10 with filtering for stable releases only
  • All version templates support ${VERSION}, ${VERSION_NO_V}, and ${VERSION_MAJOR} placeholders
  • Rate limiting preserved: 30 requests/minute per IP

@vercel
Copy link
Copy Markdown

vercel Bot commented May 22, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sudo-start Ready Ready Preview, Comment May 22, 2026 12:50pm

@Ngha-Boris Ngha-Boris requested a review from chojuninengu May 22, 2026 12:50
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