[PR #318] feat: Add multi-repository support #351

Closed
opened 2025-11-20 04:14:19 -05:00 by saavagebueno · 0 comments
Owner

Original Pull Request: https://github.com/community-scripts/ProxmoxVE-Local/pull/318

State: closed
Merged: Yes


Feature: Multi-Repository Support

This PR adds comprehensive multi-repository support, allowing users to manage multiple GitHub repositories as script sources, configure which repositories are active, and filter scripts by repository.

Key Features

Repository Management

  • Multiple Repository Support: Add and manage multiple GitHub repositories as script sources
  • Enable/Disable Repositories: Control which repositories are active and synced
  • Default Repositories: System includes Main (ProxmoxVE) and Dev (ProxmoxVED) repositories that cannot be deleted
  • Repository Priority: Repositories are processed in priority order during sync operations
  • Repository Filtering: Scripts from disabled repositories are automatically excluded from the Available Scripts tab

Repository Filter Buttons

  • Visual Filtering: When multiple repositories are enabled, filter buttons appear in the filter bar
  • Toggle Visibility: Click repository buttons to toggle showing/hiding scripts from that repository
  • Smart Display: Filter buttons only appear when more than one repository is enabled
  • Visual Feedback: Active repository buttons are highlighted with primary styling

Enhanced Help Documentation

  • New Repository Management Section: Added comprehensive top-level "Repositories" section to Help Modal
  • Repository Structure Guide: Documents required repository structure (JSON files in frontend/public/json/, script files in ct/, install/, tools/, vm/ subdirectories)
  • Enable/Disable Behavior: Explains what enabling/disabling repositories does
  • Filter Button Usage: Documents how repository filter buttons work

Implementation Details

Backend Changes

  • src/server/api/routers/scripts.ts: Filters getScriptCardsWithCategories to only include scripts from enabled repositories
  • Repository service integration for fetching enabled repositories

Frontend Changes

  • src/app/_components/FilterBar.tsx: Added repository filter buttons UI with toggle functionality
  • src/app/_components/ScriptsGrid.tsx: Added client-side repository filtering logic
  • src/app/_components/DownloadedScriptsTab.tsx: Added repository filtering support
  • src/app/_components/HelpModal.tsx: Added comprehensive Repository Management documentation section

Data Model

  • Added selectedRepositories field to FilterState interface for tracking selected repository filters
  • Filter state integrates with existing filter persistence system

User Experience

  • Seamless Integration: Repository filtering works alongside existing filters (search, types, categories, etc.)
  • Intuitive Controls: Clear visual indication of which repositories are active and selected
  • Flexible Workflow: Users can enable/disable repositories in settings and filter by repository in the UI
  • Comprehensive Documentation: Help modal provides complete guide to repository management and filtering

Repository Structure Requirements

For a repository to work with this system, it must follow this structure:

  • JSON files: Located in frontend/public/json/ folder at repository root
  • Script files: Organized in subdirectories (ct/, install/, tools/, vm/)

This feature enables users to manage multiple script sources, customize their script library, and efficiently filter scripts by repository source.

**Original Pull Request:** https://github.com/community-scripts/ProxmoxVE-Local/pull/318 **State:** closed **Merged:** Yes --- ## Feature: Multi-Repository Support This PR adds comprehensive multi-repository support, allowing users to manage multiple GitHub repositories as script sources, configure which repositories are active, and filter scripts by repository. ### Key Features #### Repository Management - **Multiple Repository Support**: Add and manage multiple GitHub repositories as script sources - **Enable/Disable Repositories**: Control which repositories are active and synced - **Default Repositories**: System includes Main (ProxmoxVE) and Dev (ProxmoxVED) repositories that cannot be deleted - **Repository Priority**: Repositories are processed in priority order during sync operations - **Repository Filtering**: Scripts from disabled repositories are automatically excluded from the Available Scripts tab #### Repository Filter Buttons - **Visual Filtering**: When multiple repositories are enabled, filter buttons appear in the filter bar - **Toggle Visibility**: Click repository buttons to toggle showing/hiding scripts from that repository - **Smart Display**: Filter buttons only appear when more than one repository is enabled - **Visual Feedback**: Active repository buttons are highlighted with primary styling #### Enhanced Help Documentation - **New Repository Management Section**: Added comprehensive top-level "Repositories" section to Help Modal - **Repository Structure Guide**: Documents required repository structure (JSON files in `frontend/public/json/`, script files in `ct/`, `install/`, `tools/`, `vm/` subdirectories) - **Enable/Disable Behavior**: Explains what enabling/disabling repositories does - **Filter Button Usage**: Documents how repository filter buttons work ### Implementation Details #### Backend Changes - `src/server/api/routers/scripts.ts`: Filters `getScriptCardsWithCategories` to only include scripts from enabled repositories - Repository service integration for fetching enabled repositories #### Frontend Changes - `src/app/_components/FilterBar.tsx`: Added repository filter buttons UI with toggle functionality - `src/app/_components/ScriptsGrid.tsx`: Added client-side repository filtering logic - `src/app/_components/DownloadedScriptsTab.tsx`: Added repository filtering support - `src/app/_components/HelpModal.tsx`: Added comprehensive Repository Management documentation section #### Data Model - Added `selectedRepositories` field to `FilterState` interface for tracking selected repository filters - Filter state integrates with existing filter persistence system ### User Experience - **Seamless Integration**: Repository filtering works alongside existing filters (search, types, categories, etc.) - **Intuitive Controls**: Clear visual indication of which repositories are active and selected - **Flexible Workflow**: Users can enable/disable repositories in settings and filter by repository in the UI - **Comprehensive Documentation**: Help modal provides complete guide to repository management and filtering ### Repository Structure Requirements For a repository to work with this system, it must follow this structure: - **JSON files**: Located in `frontend/public/json/` folder at repository root - **Script files**: Organized in subdirectories (`ct/`, `install/`, `tools/`, `vm/`) This feature enables users to manage multiple script sources, customize their script library, and efficiently filter scripts by repository source.
saavagebueno added the pull-request label 2025-11-20 04:14:19 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SVI/ProxmoxVE-Local#351