Skip to content

v1.4.0 #35

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 31 commits into from
Jun 7, 2025
Merged
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
1f906e8
feat: windows version supports network storage
nini22P Mar 7, 2025
92f66d5
feat: supports add any directory to the storage list
nini22P Mar 7, 2025
3e1082b
fix: content:// uri issue
nini22P Mar 8, 2025
d9a4c21
fix: external subtitle android content uri check
nini22P Mar 13, 2025
5b8e2c2
feat: add Local Storage changed to add Folder
nini22P Mar 13, 2025
01170b0
Update ci
nini22P Mar 18, 2025
2c32037
move codes
nini22P Mar 25, 2025
5387d05
update default theme color
nini22P Apr 20, 2025
e40daed
feat: window installer
nini22P Apr 21, 2025
2886825
update ci
nini22P Apr 21, 2025
b66a6b7
feat: check update script
nini22P Apr 22, 2025
1908dca
feat: close running processes during update or uninstall on Windows
nini22P Apr 23, 2025
cc3bb80
feat: add license for inno setup
nini22P May 9, 2025
94d5ddc
update ci
nini22P May 30, 2025
0e3d3e2
fix: l10n generate
nini22P Jun 2, 2025
8dbb2ac
move control_bar code
nini22P Jun 2, 2025
a1c0fb5
feat: improve rate menu
nini22P Jun 2, 2025
155bebb
fix: backward and forward issue
nini22P Jun 2, 2025
9f5f50f
rename to IRIS
nini22P Jun 3, 2025
e982e2b
remove dark theme widget
nini22P Jun 4, 2025
40e7162
update ci
nini22P Jun 4, 2025
a519f8c
rename widgets, fix get cover
nini22P Jun 5, 2025
cf22d4b
feat: full scrren state move to ui state
nini22P Jun 5, 2025
25e7c4d
feat: add msix and privacy.md
nini22P Jun 6, 2025
94152b6
ci: create store msix
nini22P Jun 6, 2025
a9da16f
ci: fix package installer and updater in msix
nini22P Jun 6, 2025
9228bbe
feat: supports FTP storage
nini22P Jun 7, 2025
61537b9
update readme
nini22P Jun 7, 2025
a9cea09
fix: encode uri
nini22P Jun 7, 2025
b66d2d0
update dependencies
nini22P Jun 7, 2025
09f32c2
update changelog and icon
nini22P Jun 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 60 additions & 40 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
name: CI
name: ci
on:
push:
branches:
- main
- dev
paths-ignore:
- README.md
- README_CN.md
@@ -15,7 +16,6 @@ on:

jobs:
build-windows:
name: Build Windows
runs-on: windows-latest
steps:
- name: Clone repository
@@ -31,26 +31,40 @@ jobs:
- name: Create ZIP archive
run: |
# Create a directory to hold the files
mkdir Iris
# Move the build output to the Iris directory
Move-Item -Path "build\windows\x64\runner\Release\*" -Destination "Iris" -Force
mkdir IRIS
# Copy the build output to the IRIS directory
Copy-Item -Path "build\windows\x64\runner\Release\*" -Destination "IRIS" -Force
# Create a ZIP file
Compress-Archive -Path "Iris" -DestinationPath "Iris-windows.zip"
Compress-Archive -Path "IRIS" -DestinationPath "IRIS-windows.zip"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Iris-windows
path: Iris-windows.zip
- name: Rename ZIP archive
run: Rename-Item -Path "Iris-windows.zip" -NewName "Iris_windows.zip"
- name: Upload artifact
name: IRIS-windows.zip
path: IRIS-windows.zip
- name: Remove updater
run: Remove-Item -Path build\windows\x64\runner\Release\iris-updater.bat -Force
- name: Create installer
run: iscc inno.iss
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: IRIS-windows-installer.exe
path: build\windows\x64\runner\Release\IRIS-windows-installer.exe
- name: Clean up
run: Remove-Item -Path build\windows\x64\runner\Release\ -Recurse -Force
- name: Build store msix
run: dart run msix:build --store true
- name: Remove updater
run: Remove-Item -Path build\windows\x64\runner\Release\iris-updater.bat -Force
- name: Pack store msix
run: dart run msix:pack --store true --output-name IRIS-windows-store
- name: Upload msix
uses: actions/upload-artifact@v4
with:
name: Iris_windows
path: Iris_windows.zip
name: IRIS-windows-store.msix
path: build\windows\x64\runner\Release\IRIS-windows-store.msix

build-android:
name: Build Android
runs-on: ubuntu-latest
steps:
- name: Clone repository
@@ -78,32 +92,33 @@ jobs:
- name: Build Flutter application for Android
run: flutter build apk --split-per-abi
- name: Rename armeabi-v7a APK
run: mv build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk Iris-android-armeabi-v7a.apk
run: mv build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk IRIS-android-armeabi-v7a.apk
- name: Rename arm64-v8a APK
run: mv build/app/outputs/flutter-apk/app-arm64-v8a-release.apk Iris-android-arm64-v8a.apk
run: mv build/app/outputs/flutter-apk/app-arm64-v8a-release.apk IRIS-android-arm64-v8a.apk
- name: Rename x86_64 APK
run: mv build/app/outputs/flutter-apk/app-x86_64-release.apk Iris-android-x86_64.apk
run: mv build/app/outputs/flutter-apk/app-x86_64-release.apk IRIS-android-x86_64.apk
- name: Upload armeabi-v7a APK
uses: actions/upload-artifact@v4
with:
name: Iris-android-armeabi-v7a
path: Iris-android-armeabi-v7a.apk
name: IRIS-android-armeabi-v7a.apk
path: IRIS-android-armeabi-v7a.apk
- name: Upload arm64-v8a APK
uses: actions/upload-artifact@v4
with:
name: Iris-android-arm64-v8a
path: Iris-android-arm64-v8a.apk
name: IRIS-android-arm64-v8a.apk
path: IRIS-android-arm64-v8a.apk
- name: Upload x86_64 APK
uses: actions/upload-artifact@v4
with:
name: Iris-android-x86_64
path: Iris-android-x86_64.apk
name: IRIS-android-x86_64.apk
path: IRIS-android-x86_64.apk

release:
name: Release
if: ${{ github.ref == 'refs/heads/main' }}
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: [build-windows, build-android]
needs:
- build-windows
- build-android
steps:
- name: Checkout
uses: actions/checkout@v4
@@ -114,34 +129,39 @@ jobs:
cmd: yq '.version' 'pubspec.yaml'
- name: Print version
run: echo ${{ steps.yq.outputs.result }}
- name: Create Tag
id: create_tag
- name: Prepare tag name
id: tag_name
run: |
VERSION="${{ steps.yq.outputs.result }}"
TAG_NAME="v${VERSION%%+*}"
TAG_NAME="v${VERSION}"
echo "TAG_NAME=$TAG_NAME" >> "$GITHUB_OUTPUT"
echo "Creating new tag $TAG_NAME..."
git tag "$TAG_NAME"
git push origin "$TAG_NAME"
- name: Check tag
uses: mukunku/tag-exists-action@v1.6.0
id: check-tag
with:
tag: ${{ steps.tag_name.outputs.TAG_NAME }}
- name: Eextract log
run: python extract_log.py ${{ steps.create_tag.outputs.TAG_NAME }}
if: steps.check-tag.outputs.exists == 'false'
run: python extract_log.py ${{ steps.tag_name.outputs.TAG_NAME }}
- name: Download artifact
if: steps.check-tag.outputs.exists == 'false'
uses: actions/download-artifact@v4
with:
path: artifacts
merge-multiple: true
- name: Release
if: steps.check-tag.outputs.exists == 'false'
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.create_tag.outputs.TAG_NAME }}
body_path: CHANGELOG_${{ steps.create_tag.outputs.TAG_NAME }}.md
tag_name: ${{ steps.tag_name.outputs.TAG_NAME }}
body_path: CHANGELOG_${{ steps.tag_name.outputs.TAG_NAME }}.md
draft: false
prerelease: false
files: |
artifacts/Iris-windows.zip
artifacts/Iris_windows.zip
artifacts/Iris-android-armeabi-v7a.apk
artifacts/Iris-android-arm64-v8a.apk
artifacts/Iris-android-x86_64.apk
artifacts/IRIS-windows.zip
artifacts/IRIS-windows-installer.exe
artifacts/IRIS-android-armeabi-v7a.apk
artifacts/IRIS-android-arm64-v8a.apk
artifacts/IRIS-android-x86_64.apk
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -44,4 +44,7 @@ app.*.map.json

# freezed & json_serializable generated files
**/*.freezed.dart
**/*.g.dart
**/*.g.dart

# l10n
lib/l10n/app_localizations*.dart
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
## v1.4.0

### Changelog

* Supports FTP storage
* Supports adding local folders to the storage list
* Storage list support remote disk and network shortcuts on Windows
* Add Windows installer

### 更新日志

* 支持 FTP 存储
* 支持添加本地文件夹到存储列表
* Windows 版本存储列表支持远程磁盘和网络快捷方式
* 添加 Windows 版本安装器


## v1.3.4

### Changelog
54 changes: 54 additions & 0 deletions PRIVACY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# IRIS Privacy Policy

**Last Updated:** June 7, 2025

Thank you for using IRIS ("the Application"). We are committed to protecting your privacy. This Privacy Policy explains how we handle information in connection with your use of the Application.

Please read this Privacy Policy carefully before using the Application. By using the Application, you agree to the terms of this policy.

### Information We Collect

To provide and improve our services, the Application collects the following types of information:

1. **Information You Provide**

* **Network Storage Credentials**: When you configure access to your network storage (like WebDAV), you will be asked to provide connection details such as server address, username, and password.
* **Online Video Links**: When you use the "Open Link" feature, you provide the URL for the video.
2. **Information We Collect Automatically**

* **Playback History and Preferences**: To enhance your experience, the Application locally stores your playback history (including playback progress) and personal preferences (such as playback speed, volume, and theme mode) on your device.

### How We Use Your Information

We strictly adhere to the principles of lawfulness, legitimacy, and necessity in collecting and using your information. This information is used solely to implement product features, specifically to:

* Access and play media files from your local device or your configured network storage (like WebDAV).
* Stream and play videos from online URLs you provide.
* Remember your playback progress to allow you to resume watching.
* Save your settings and preferences for a personalized experience.
* Check for application updates to provide you with the latest features and bug fixes.

### Information Storage and Security

We place great importance on the security of your information.

* **Storage Location**: All your personal data, including WebDAV credentials, playback history, and application settings, is **stored only locally on your device**. We do not upload this information to any external servers.
* **Security Measures**: We use industry-standard security technologies to protect sensitive information stored on your device from unauthorized access, use, or disclosure.

### Information Sharing and Disclosure

We do not sell, trade, or otherwise transfer your personally identifiable information to outside parties. All data is stored locally on your device.

### Children's Privacy

The Application is not intended for use by children under the age of 13. We do not knowingly collect personally identifiable information from children under 13.

### Changes to This Privacy Policy

We may update our Privacy Policy from time to time. Any changes will be posted on this page, and we encourage you to review this policy periodically for any updates. Your continued use of the Application after we post any modifications will constitute your acknowledgment of the changes and your consent to abide and be bound by the modified Privacy Policy.

### Contact Us

If you have any questions or suggestions about this Privacy Policy, please feel free to contact us by creating an issue on our GitHub page:

* [https://github.com/nini22P/iris/issues](https://github.com/nini22P/iris/issues)
109 changes: 57 additions & 52 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,81 +1,86 @@
<img height="100px" width="100px" alt="icon" src="./assets/images/icon.svg"/>

# Iris - A lightweight video player
# IRIS - A lightweight video player

![ci](https://github.com/nini22P/Iris/actions/workflows/ci.yml/badge.svg)
![ci](https://github.com/nini22P/iris/actions/workflows/ci.yml/badge.svg)
<a href="https://afdian.com/a/nini22P"><img alt="Afdian" style="height: 30px;" src="https://pic1.afdiancdn.com/static/img/welcome/button-sponsorme.png"></a>
[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/nini22p)

English | [中文](./README_CN.md)

## Features

- [x] Base on [Media Kit](https://github.com/media-kit/media-kit) | [FVP](https://github.com/wang-bin/fvp), supports multiple video formats
- [x] Local storage and WebDAV support
- [x] Switchable subtitle and audio track
- [x] Playback queue support for random and repeat
- [x] Comprehensive gesture support
- [X] Base on [Media Kit](https://github.com/media-kit/media-kit) | [FVP](https://github.com/wang-bin/fvp), supports multiple video formats
- [X] Local storage, WebDAV and FTP support
- [X] Switchable subtitle and audio track
- [X] Playback queue support for random and repeat
- [X] Comprehensive gesture support

## Download

### Windows
- [Iris-windows.zip](https://github.com/nini22P/Iris/releases/latest/download/Iris-windows.zip)

- [IRIS-windows-installer.exe](https://github.com/nini22P/iris/releases/latest/download/IRIS-windows-installer.exe)
- [IRIS-windows.zip](https://github.com/nini22P/iris/releases/latest/download/IRIS-windows.zip)

### Android
| Architecture | Download Link |
|-------------------|-------------------------------------------------------------------------|
| arm64-v8a | [Iris-android-arm64-v8a.apk](https://github.com/nini22P/Iris/releases/latest/download/Iris-android-arm64-v8a.apk) |
| armeabi-v7a | [Iris-android-armeabi-v7a.apk](https://github.com/nini22P/Iris/releases/latest/download/Iris-android-armeabi-v7a.apk) |
| x86_64 | [Iris-android-x86_64.apk](https://github.com/nini22P/Iris/releases/latest/download/Iris-android-x86_64.apk) |

| Architecture | Download Link |
| ------------ | ------------------------------------------------------------------------------------------------------------------ |
| arm64-v8a | [IRIS-android-arm64-v8a.apk](https://github.com/nini22P/iris/releases/latest/download/IRIS-android-arm64-v8a.apk) |
| armeabi-v7a | [IRIS-android-armeabi-v7a.apk](https://github.com/nini22P/iris/releases/latest/download/IRIS-android-armeabi-v7a.apk) |
| x86_64 | [IRIS-android-x86_64.apk](https://github.com/nini22P/iris/releases/latest/download/IRIS-android-x86_64.apk) |

## Keyboard and Gesture Controls

### Keyboard Controls
| Key | Description |
|----------------------|------------------------------------------|
| `Space` | Play / Pause / Select file |
| `Arrow Left` | Fast backward 10 seconds |
| `Arrow Right` | Fast forward 10 seconds |
| `Arrow Up` | Volume up |
| `Arrow Down` | Volume down |
| `Ctrl + Arrow Left` | Previous |
| `Ctrl + Arrow Right` | Next |
| `Ctrl + X` | Shuffle |
| `Ctrl + R` | Repeat |
| `Ctrl + V` | Video zoom |
| `Ctrl + M` | Volume mute |
| `S` | Subtitles and audio tracks |
| `P` | Play queue |
| `F` | Storages |
| `Ctrl + O` | Open file |
| `Ctrl + L` | Open link |
| `Ctrl + C` | Close currently media file |
| `Ctrl + H` | Play history |
| `Ctrl + P` | Settings |
| `+` | Step forward |
| `-` | Step backward |

| Key | Description |
| ---------------------- | -------------------------------------------------- |
| `Space` | Play / Pause / Select file |
| `Arrow Left` | Fast backward 10 seconds |
| `Arrow Right` | Fast forward 10 seconds |
| `Arrow Up` | Volume up |
| `Arrow Down` | Volume down |
| `Ctrl + Arrow Left` | Previous |
| `Ctrl + Arrow Right` | Next |
| `Ctrl + X` | Shuffle |
| `Ctrl + R` | Repeat |
| `Ctrl + V` | Video zoom |
| `Ctrl + M` | Volume mute |
| `S` | Subtitles and audio tracks |
| `P` | Play queue |
| `F` | Storages |
| `Ctrl + O` | Open file |
| `Ctrl + L` | Open link |
| `Ctrl + C` | Close currently media file |
| `Ctrl + H` | Play history |
| `Ctrl + P` | Settings |
| `+` | Step forward |
| `-` | Step backward |
| `Enter` | Enter full screen / Exit full screen / Select file |
| `F11` | Enter full screen / Exit full screen |
| `Esc` | Exit current Menu / Go back / Exit full screen |
| `F10` | Toggle always on top |
| `Alt + X` | Exit application |
| `F11` | Enter full screen / Exit full screen |
| `Esc` | Exit current Menu / Go back / Exit full screen |
| `F10` | Toggle always on top |
| `Alt + X` | Exit application |

### Gesture Controls
| Gesture | Description |
|---------------------------------|------------------------------------------|
| Tap | Select an item or open a menu |
| Double tap center | Play / Pause |
| Double tap left side | Fast backward 10 seconds |
| Double tap right side | Fast forward 10 seconds |
| Swipe left / right | Adjust playback progress |
| Swipe up / down on left side | Adjust screen brightness |
| Swipe up / down on right side | Adjust device volume |
| Long press | Start speed playback |
| Long press and swipe left / right | Adjust speed playback speed |

| Gesture | Description |
| --------------------------------- | ----------------------------- |
| Tap | Select an item or open a menu |
| Double tap center | Play / Pause |
| Double tap left side | Fast backward 10 seconds |
| Double tap right side | Fast forward 10 seconds |
| Swipe left / right | Adjust playback progress |
| Swipe up / down on left side | Adjust screen brightness |
| Swipe up / down on right side | Adjust device volume |
| Long press | Start speed playback |
| Long press and swipe left / right | Adjust speed playback speed |

## Contribution

Contributions of any kind are welcome! If you have suggestions, bug reports, or want to add new features, please submit an [issue](https://github.com/nini22P/Iris/issues) or directly submit a Pull Request.
Contributions of any kind are welcome! If you have suggestions, bug reports, or want to add new features, please submit an [issue](https://github.com/nini22P/iris/issues) or directly submit a Pull Request.

## Sponsorship

Loading