Skip to content

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

Merged
chojuninengu merged 1 commit into
mainfrom
add-version
Jun 16, 2026
Merged

Add support for additional tools and utilities with version fetching#27
chojuninengu merged 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

vercel Bot commented May 22, 2026

Copy link
Copy Markdown

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

@chojuninengu chojuninengu 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.

Image Image

@chojuninengu
chojuninengu merged commit 91ac732 into main Jun 16, 2026
5 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