feat: add initial flatpak/homebrew support
This commit is contained in:
309
PACKAGE_SUBMISSION_SUMMARY.md
Normal file
309
PACKAGE_SUBMISSION_SUMMARY.md
Normal file
@@ -0,0 +1,309 @@
|
||||
# Package Submission Setup Summary
|
||||
|
||||
This document summarizes all the package manager integrations that have been set up for Termix.
|
||||
|
||||
## Overview
|
||||
|
||||
Termix now has complete package manager support for all three major platforms:
|
||||
|
||||
- **Windows**: Chocolatey
|
||||
- **Linux**: Flatpak (Flathub)
|
||||
- **macOS**: Homebrew Cask
|
||||
|
||||
## Files Created
|
||||
|
||||
### Chocolatey (Windows)
|
||||
|
||||
```
|
||||
chocolatey/
|
||||
├── termix.nuspec # Package manifest
|
||||
└── tools/
|
||||
├── chocolateyinstall.ps1 # Installation script
|
||||
└── chocolateyuninstall.ps1 # Uninstallation script
|
||||
```
|
||||
|
||||
### Flatpak (Linux)
|
||||
|
||||
```
|
||||
flatpak/
|
||||
├── com.karmaa.termix.yml # Flatpak manifest (x64 & arm64)
|
||||
├── com.karmaa.termix.desktop # Desktop entry file
|
||||
├── com.karmaa.termix.metainfo.xml # AppStream metadata
|
||||
├── flathub.json # Flathub configuration
|
||||
├── prepare-flatpak.sh # Helper script
|
||||
└── README.md # Detailed documentation
|
||||
```
|
||||
|
||||
### Homebrew (macOS)
|
||||
|
||||
```
|
||||
homebrew/
|
||||
├── termix.rb # Homebrew Cask formula
|
||||
└── README.md # Detailed documentation
|
||||
```
|
||||
|
||||
### Documentation
|
||||
|
||||
```
|
||||
PACKAGE_MANAGERS.md # Complete guide for all package managers
|
||||
PACKAGE_SUBMISSION_SUMMARY.md # This file
|
||||
```
|
||||
|
||||
### Modified Files
|
||||
|
||||
```
|
||||
.github/workflows/electron-build.yml # Added 3 new submission jobs
|
||||
```
|
||||
|
||||
## GitHub Actions Integration
|
||||
|
||||
### New Jobs Added to Workflow
|
||||
|
||||
1. **submit-to-chocolatey** (Lines 551-654)
|
||||
- Platform: Windows
|
||||
- Trigger: `artifact_destination == 'submit'`
|
||||
- Actions:
|
||||
- Downloads Windows x64 MSI
|
||||
- Calculates SHA256 checksum
|
||||
- Updates package manifest with version/checksum
|
||||
- Packs Chocolatey package
|
||||
- Automatically pushes to Chocolatey (if API key configured)
|
||||
- Creates artifact for backup
|
||||
|
||||
2. **submit-to-flatpak** (Lines 656-844)
|
||||
- Platform: Linux (Ubuntu)
|
||||
- Trigger: `artifact_destination == 'submit'`
|
||||
- Actions:
|
||||
- Downloads x64 and arm64 AppImages
|
||||
- Calculates SHA256 checksums for both architectures
|
||||
- Generates PNG icons from SVG
|
||||
- Updates manifest and metainfo with version/checksums/date
|
||||
- Creates complete submission artifact
|
||||
- Includes detailed submission instructions
|
||||
|
||||
3. **submit-to-homebrew** (Lines 846-1059)
|
||||
- Platform: macOS
|
||||
- Trigger: `artifact_destination == 'submit'`
|
||||
- Actions:
|
||||
- Downloads macOS universal DMG
|
||||
- Calculates SHA256 checksum
|
||||
- Updates Cask formula with version/checksum
|
||||
- Verifies Ruby syntax
|
||||
- Creates submission artifact
|
||||
- Includes instructions for both official and custom tap
|
||||
|
||||
## Setup Required
|
||||
|
||||
### Chocolatey (Automated)
|
||||
|
||||
Add GitHub secret to enable automatic submission:
|
||||
|
||||
- **Secret name**: `CHOCOLATEY_API_KEY`
|
||||
- **Get from**: https://community.chocolatey.org/account
|
||||
- **Location**: Repository Settings → Secrets and variables → Actions
|
||||
|
||||
### Flatpak (Manual)
|
||||
|
||||
No secrets required. Process:
|
||||
|
||||
1. Run workflow with "submit" option
|
||||
2. Download `flatpak-submission` artifact
|
||||
3. Fork https://github.com/flathub/flathub
|
||||
4. Copy files and create PR
|
||||
|
||||
### Homebrew (Manual)
|
||||
|
||||
No secrets required. Two options:
|
||||
|
||||
**Option 1: Official Homebrew**
|
||||
|
||||
1. Run workflow with "submit" option
|
||||
2. Download `homebrew-submission` artifact
|
||||
3. Fork https://github.com/Homebrew/homebrew-cask
|
||||
4. Add to `Casks/t/termix.rb` and create PR
|
||||
|
||||
**Option 2: Custom Tap**
|
||||
|
||||
1. Create repository: `Termix-SSH/homebrew-termix`
|
||||
2. Add `Casks/termix.rb` from artifact
|
||||
3. Users install with: `brew tap termix-ssh/termix && brew install --cask termix`
|
||||
|
||||
## How to Use
|
||||
|
||||
### For Each Release:
|
||||
|
||||
1. **Prepare Release**
|
||||
- Ensure version in `package.json` is updated
|
||||
- Create GitHub release with tag format: `release-X.Y.Z-tag`
|
||||
- Example: `release-1.8.0-tag`
|
||||
|
||||
2. **Run Build Workflow**
|
||||
- Go to Actions → "Build Electron App"
|
||||
- Click "Run workflow"
|
||||
- Select options:
|
||||
- **Platform**: `all` (or specific platform)
|
||||
- **Artifact destination**: `submit`
|
||||
|
||||
3. **Automated Submissions**
|
||||
- **Chocolatey**: Automatically pushed (if API key configured)
|
||||
- Package appears on Chocolatey within hours
|
||||
- Users can install with: `choco install termix`
|
||||
|
||||
4. **Manual Submissions**
|
||||
- **Flatpak**: Download `flatpak-submission` artifact
|
||||
- Follow instructions in `SUBMISSION_INSTRUCTIONS.md`
|
||||
- Submit PR to flathub/flathub
|
||||
- Review time: 1-5 days
|
||||
|
||||
- **Homebrew**: Download `homebrew-submission` artifact
|
||||
- Follow instructions in `SUBMISSION_INSTRUCTIONS.md`
|
||||
- Option 1: Submit PR to Homebrew/homebrew-cask
|
||||
- Option 2: Push to custom tap
|
||||
- Review time (official): 24-48 hours
|
||||
|
||||
## Version Management
|
||||
|
||||
All package managers automatically use the version from `package.json`:
|
||||
|
||||
- Current version: **1.8.0**
|
||||
- Version format: Semantic versioning (X.Y.Z)
|
||||
- All checksums calculated automatically
|
||||
- Download URLs constructed automatically
|
||||
|
||||
## Important Notes
|
||||
|
||||
### Release Tag Format
|
||||
|
||||
The workflows expect GitHub release tags in this format:
|
||||
|
||||
```
|
||||
release-{VERSION}-tag
|
||||
```
|
||||
|
||||
Examples:
|
||||
|
||||
- ✅ `release-1.8.0-tag`
|
||||
- ✅ `release-2.0.0-tag`
|
||||
- ❌ `v1.8.0`
|
||||
- ❌ `1.8.0`
|
||||
|
||||
If your tag format is different, update these lines in the workflows:
|
||||
|
||||
- **Chocolatey**: Line 597
|
||||
- **Flatpak**: Lines 724-725
|
||||
- **Homebrew**: Line 900
|
||||
|
||||
### Code Signing Requirements
|
||||
|
||||
All builds require proper code signing:
|
||||
|
||||
- **Windows MSI**: Already signed via electron-builder
|
||||
- **Linux AppImage**: No signing required
|
||||
- **macOS DMG**: Must be signed and notarized (already configured)
|
||||
|
||||
### File Naming Conventions
|
||||
|
||||
The workflows expect these file naming patterns:
|
||||
|
||||
- Windows: `termix_windows_x64_{version}_msi.msi`
|
||||
- Linux x64: `termix_linux_x64_{version}_appimage.AppImage`
|
||||
- Linux arm64: `termix_linux_arm64_{version}_appimage.AppImage`
|
||||
- macOS: `termix_macos_universal_{version}_dmg.dmg`
|
||||
|
||||
These are already configured in `electron-builder.json`.
|
||||
|
||||
## Testing Locally
|
||||
|
||||
### Chocolatey
|
||||
|
||||
```powershell
|
||||
cd chocolatey
|
||||
choco pack termix.nuspec
|
||||
choco install termix -s . -y
|
||||
```
|
||||
|
||||
### Flatpak
|
||||
|
||||
```bash
|
||||
cd flatpak
|
||||
flatpak-builder --user --install --force-clean build-dir com.karmaa.termix.yml
|
||||
flatpak run com.karmaa.termix
|
||||
```
|
||||
|
||||
### Homebrew
|
||||
|
||||
```bash
|
||||
cd homebrew
|
||||
brew install --cask ./termix.rb
|
||||
brew uninstall --cask termix
|
||||
```
|
||||
|
||||
## User Installation Commands
|
||||
|
||||
Once approved on all platforms:
|
||||
|
||||
```bash
|
||||
# Windows (Chocolatey)
|
||||
choco install termix
|
||||
|
||||
# Linux (Flatpak)
|
||||
flatpak install flathub com.karmaa.termix
|
||||
|
||||
# macOS (Homebrew - Official)
|
||||
brew install --cask termix
|
||||
|
||||
# macOS (Homebrew - Custom Tap)
|
||||
brew tap termix-ssh/termix
|
||||
brew install --cask termix
|
||||
```
|
||||
|
||||
## Update Strategy
|
||||
|
||||
### Chocolatey
|
||||
|
||||
- Updates pushed automatically when you run workflow with "submit"
|
||||
- Users update with: `choco upgrade termix`
|
||||
|
||||
### Flatpak
|
||||
|
||||
- After initial approval, you get a repository: `flathub/com.karmaa.termix`
|
||||
- For updates: commit new version/checksum to that repo
|
||||
- Flathub auto-builds and publishes
|
||||
- Users update with: `flatpak update`
|
||||
|
||||
### Homebrew (Official)
|
||||
|
||||
- Homebrew bot auto-updates within hours of new releases
|
||||
- Detects new releases via GitHub releases
|
||||
- Users update with: `brew upgrade --cask termix`
|
||||
|
||||
### Homebrew (Custom Tap)
|
||||
|
||||
- Manually update the cask file in your tap repo
|
||||
- Users update with: `brew upgrade --cask termix`
|
||||
|
||||
## Resources
|
||||
|
||||
- [Chocolatey Documentation](https://docs.chocolatey.org/)
|
||||
- [Flatpak Documentation](https://docs.flatpak.org/)
|
||||
- [Flathub Submission](https://docs.flathub.org/docs/for-app-authors/submission)
|
||||
- [Homebrew Cask Cookbook](https://docs.brew.sh/Cask-Cookbook)
|
||||
- [AppStream Guidelines](https://www.freedesktop.org/software/appstream/docs/)
|
||||
|
||||
## Support
|
||||
|
||||
For issues:
|
||||
|
||||
- **Build/Workflow**: https://github.com/Termix-SSH/Termix/issues
|
||||
- **Chocolatey**: https://community.chocolatey.org/packages/termix
|
||||
- **Flatpak**: https://github.com/flathub/com.karmaa.termix/issues
|
||||
- **Homebrew**: https://github.com/Homebrew/homebrew-cask/issues (or your custom tap)
|
||||
|
||||
---
|
||||
|
||||
**Next Steps:**
|
||||
|
||||
1. Add `CHOCOLATEY_API_KEY` to GitHub secrets
|
||||
2. Run workflow with "submit" option for your next release
|
||||
3. Download artifacts and follow submission instructions
|
||||
4. Monitor submission PRs and respond to feedback
|
||||
Reference in New Issue
Block a user