Add AltStore source and separate update workflow from release pipeline

- Create standalone update-altstore.yml workflow (workflow_dispatch + workflow_call)
  that gets version from latest GitHub release tag instead of project.pbxproj
- Replace inline update_altstore job in release.yml with workflow_call reference
- Add altstore-source.json with app metadata and initial version entry
- Update README with revised features, TestFlight install link, and new logo assets
This commit is contained in:
Arkadiusz Fal
2026-02-09 21:37:39 +01:00
parent 13f7a0f0ca
commit 3905fd8b18
6 changed files with 126 additions and 13 deletions

View File

@@ -105,4 +105,7 @@ jobs:
tag: ${{ env.VERSION_NUMBER }}-${{ env.BUILD_NUMBER }}
prerelease: true
bodyFile: CHANGELOG.md
update_altstore:
needs: ['release']
uses: ./.github/workflows/update-altstore.yml

55
.github/workflows/update-altstore.yml vendored Normal file
View File

@@ -0,0 +1,55 @@
name: Update AltStore source
on:
workflow_dispatch:
workflow_call:
jobs:
update_altstore:
name: Update AltStore source
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
ref: main
- name: Get version info from latest release
run: |
TAG=$(gh release view --json tagName --jq '.tagName')
echo "TAG=${TAG}" >> $GITHUB_ENV
echo "VERSION_NUMBER=${TAG%-*}" >> $GITHUB_ENV
echo "BUILD_NUMBER=${TAG##*-}" >> $GITHUB_ENV
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Get IPA size from release
run: |
SIZE=$(gh release view "${{ env.TAG }}" --json assets --jq '.assets[] | select(.name == "Yattee.ipa") | .size')
echo "IPA_SIZE=${SIZE:-0}" >> $GITHUB_ENV
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update altstore-source.json
run: |
DATE=$(date -u +"%Y-%m-%dT%H:%M:%S+00:00")
jq --arg version "${{ env.VERSION_NUMBER }}" \
--arg build "${{ env.BUILD_NUMBER }}" \
--arg date "$DATE" \
--arg url "https://github.com/yattee/yattee/releases/download/${{ env.TAG }}/Yattee.ipa" \
--argjson size "${{ env.IPA_SIZE }}" \
'.apps[0].versions = [{
version: $version,
buildVersion: $build,
date: $date,
localizedDescription: "",
downloadURL: $url,
size: $size,
minOSVersion: "18.0"
}] + [.apps[0].versions[] | select(.version != $version or .buildVersion != $build)]' \
altstore-source.json > altstore-source.tmp && mv altstore-source.tmp altstore-source.json
- name: Commit and push
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add altstore-source.json
git diff --cached --quiet && echo "No changes to commit" && exit 0
git commit -m "Update AltStore source for ${{ env.VERSION_NUMBER }} (${{ env.BUILD_NUMBER }})"
git push

View File

@@ -1,28 +1,37 @@
<div align="center">
<!-- TODO: new logo asset -->
<img src="https://r.yattee.stream/icons/yattee-150.png" width="150" height="150" alt="Yattee logo">
<img src="Assets/yattee-logo.png" width="150" height="150" alt="Yattee logo">
<h1>Yattee</h1>
<p>Privacy-focused video player for iOS, macOS, and tvOS</p>
<p>Privacy-focused video player for iPhone, iPad, Mac, and Apple TV</p>
[![AGPL v3](https://shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0.en.html)
[![GitHub issues](https://img.shields.io/github/issues/yattee/yattee)](https://github.com/yattee/yattee/issues)
[![GitHub pull requests](https://img.shields.io/github/issues-pr/yattee/yattee)](https://github.com/yattee/yattee/pulls)
[![Matrix](https://img.shields.io/matrix/yattee:matrix.org)](https://matrix.to/#/#Yattee:matrix.org)
[![Discord](https://invidget.switchblade.xyz/pSnNKhZHEG)](https://yattee.stream/discord)
<!-- TODO: new screenshot assets -->
![Screenshot](https://r.yattee.stream/screenshots/all-platforms.png)
</div>
## Install
<a href="https://yattee.stream/beta2">
<img src="https://developer.apple.com/assets/elements/icons/testflight/testflight-64x64_2x.png" height="40" alt="TestFlight">
</a>
[Join the TestFlight beta](https://yattee.stream/beta2)
<!-- App Store link coming soon -->
<!-- TODO: new screenshot assets -->
## Features
**Playback**
- 4K video with custom MPV-based player
- 4K video with custom MPV-based player (H.264, H.265, VP9, AV1)
- Picture in Picture, background audio, fullscreen
- Playback queue, history, resume from last position
- Chapter navigation, playback speed, subtitles and captions
- Gesture controls (seek, volume, brightness)
- Seek preview with storyboards
**Content Sources**
- YouTube via Invidious, Piped, or self-hosted Yattee Server
@@ -40,19 +49,21 @@
**Library**
- Subscriptions with per-channel notifications
- Bookmarks, playlists, watch history
- Search across all configured sources
- Bookmarks with tags and notes, playlists, watch history
- Unified search across all configured sources
- Import/export subscriptions (JSON, CSV, OPML)
**Downloads & Sync**
- Offline video and audio downloads
- iCloud sync for bookmarks, subscriptions, and history across devices
- Offline video and audio downloads with quality selection
- iCloud sync for bookmarks, subscriptions, history, and settings across devices
- Handoff continuity between iPhone, iPad, Mac, and Apple TV
**Platforms**
**Apple Ecosystem**
- iOS 18+ / macOS 15+ / tvOS 18+
- Native SwiftUI on every platform
- Customizable home layout, accent colors, and player controls
- Customizable home layout, accent colors, player controls, and app icon
- Clipboard URL detection and deep linking (`yattee://`)
- Remote control between devices on your network
## Yattee Server
@@ -83,6 +94,8 @@ Check out the [yattee-server](https://github.com/yattee/yattee-server) repositor
Browse the [issues](https://github.com/yattee/yattee/issues) list or open a new one to discuss your idea. Every contribution is welcome.
See [AGENTS.md](AGENTS.md) for developer setup and project architecture.
Join [Discord](https://yattee.stream/discord) or the [Matrix channel](https://matrix.to/#/#yattee:matrix.org) if you need advice or want to discuss the project.
## Translations

42
altstore-source.json Normal file
View File

@@ -0,0 +1,42 @@
{
"name": "Yattee",
"subtitle": "Privacy-focused video player",
"description": "Yattee is a privacy-focused video player for iPhone, iPad, Mac, and Apple TV. Watch YouTube via Invidious, Piped, or self-hosted Yattee Server. Supports PeerTube, local files, SMB shares, and WebDAV. Features include 4K playback, Picture in Picture, background audio, SponsorBlock, DeArrow, playback queue, subscriptions, bookmarks, downloads, and iCloud sync.",
"iconURL": "https://raw.githubusercontent.com/yattee/yattee/main/Assets/yattee-icon-512.png",
"headerURL": "",
"website": "https://github.com/yattee/yattee",
"tintColor": "#5B8DF5",
"apps": [
{
"name": "Yattee",
"bundleIdentifier": "stream.yattee.app",
"developerName": "Yattee",
"subtitle": "Privacy-focused video player",
"localizedDescription": "Yattee is a privacy-focused video player for iPhone, iPad, Mac, and Apple TV.\n\nPlayback\n- 4K video with custom MPV-based player (H.264, H.265, VP9, AV1)\n- Picture in Picture, background audio, fullscreen\n- Playback queue, history, resume from last position\n- Chapter navigation, playback speed, subtitles and captions\n- Gesture controls (seek, volume, brightness)\n- Seek preview with storyboards\n\nContent Sources\n- YouTube via Invidious, Piped, or self-hosted Yattee Server\n- PeerTube instances (federated video)\n- Local files, SMB network shares, WebDAV servers\n\nIntegrations\n- SponsorBlock (configurable skip categories)\n- DeArrow (crowdsourced titles and thumbnails)\n- Return YouTube Dislike\n\nLibrary\n- Subscriptions with per-channel notifications\n- Bookmarks with tags and notes, playlists, watch history\n- Unified search across all configured sources\n- Import/export subscriptions (JSON, CSV, OPML)\n\nDownloads & Sync\n- Offline video and audio downloads with quality selection\n- iCloud sync for bookmarks, subscriptions, history, and settings across devices\n- Handoff continuity between iPhone, iPad, Mac, and Apple TV\n\nApple Ecosystem\n- Customizable home layout, accent colors, player controls, and app icon\n- Clipboard URL detection and deep linking (yattee://)\n- Remote control between devices on your network",
"iconURL": "https://raw.githubusercontent.com/yattee/yattee/main/Assets/yattee-icon-512.png",
"tintColor": "#5B8DF5",
"category": "entertainment",
"screenshots": [],
"versions": [
{
"version": "2.0.0",
"buildVersion": "250",
"date": "2026-02-09T00:00:00-00:00",
"localizedDescription": "Yattee v2 rewrite",
"downloadURL": "https://github.com/yattee/yattee/releases/download/2.0.0-250/Yattee.ipa",
"size": 0,
"minOSVersion": "18.0"
}
],
"appPermissions": {
"entitlements": [
"com.apple.developer.icloud-container-identifiers",
"com.apple.developer.icloud-services",
"com.apple.developer.ubiquity-kvstore-identifier",
"aps-environment"
]
}
}
],
"news": []
}

BIN
assets/yattee-icon-512.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

BIN
assets/yattee-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB