diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 790884e..6a37680 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,10 @@ jobs: uses: actions/upload-artifact@v4 with: name: windows-installer - path: release/**/*.exe + path: | + release/**/*.exe + release/**/*.exe.blockmap + release/**/latest.yml retention-days: 30 build-macos: @@ -65,7 +68,11 @@ jobs: uses: actions/upload-artifact@v4 with: name: macos-installer - path: release/**/*.dmg + path: | + release/**/*.dmg + release/**/*.dmg.blockmap + release/**/*.zip + release/**/latest-mac.yml retention-days: 30 build-linux: @@ -94,6 +101,8 @@ jobs: uses: actions/upload-artifact@v4 with: name: linux-installer - path: release/**/*.AppImage + path: | + release/**/*.AppImage + release/**/latest-linux.yml retention-days: 30 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..5dfa80b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,144 @@ +name: Release + +on: + push: + tags: + - 'v*' + +jobs: + build-windows: + runs-on: windows-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '22' + + - name: Install dependencies + run: npm ci + + - name: Install app dependencies + run: npx electron-builder install-app-deps + + - name: Build Windows app + run: npm run build:win + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload Windows artifact + uses: actions/upload-artifact@v4 + with: + name: windows-build + path: | + release/**/*.exe + release/**/*.exe.blockmap + release/**/latest.yml + retention-days: 1 + + build-macos: + runs-on: macos-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '22' + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install dependencies + run: npm ci + + - name: Install app dependencies + run: npx electron-builder install-app-deps + + - name: Build macOS app + run: npm run build:mac + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload macOS artifact + uses: actions/upload-artifact@v4 + with: + name: macos-build + path: | + release/**/*.dmg + release/**/*.dmg.blockmap + release/**/*.zip + release/**/latest-mac.yml + retention-days: 1 + + build-linux: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '22' + + - name: Install dependencies + run: npm ci + + - name: Install app dependencies + run: npx electron-builder install-app-deps + + - name: Build Linux app + run: npm run build:linux + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload Linux artifact + uses: actions/upload-artifact@v4 + with: + name: linux-build + path: | + release/**/*.AppImage + release/**/latest-linux.yml + retention-days: 1 + + release: + needs: [build-windows, build-macos, build-linux] + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: artifacts + + - name: Display structure of downloaded files + run: | + if [ -d artifacts ]; then + ls -R artifacts + else + echo "No artifacts directory found" + fi + + - name: Create Release + uses: softprops/action-gh-release@v2 + with: + files: | + artifacts/**/*.exe + artifacts/**/*.dmg + artifacts/**/*.AppImage + artifacts/**/*.zip + draft: false + prerelease: false + generate_release_notes: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f2bbbe2..2d3e673 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,6 +25,14 @@ Thank you for considering contributing to this project! By contributing, you hel 5. **Test Your Changes** - Test your changes thoroughly to ensure they work as expected and do not break existing functionality. + ### FFmpeg-based recording notes + + The screen recording workflow is migrating away from Chromium's `MediaRecorder` to an external `ffmpeg` process (and `ffprobe` for post-recording validation). + + - Ensure `ffmpeg` and `ffprobe` are available on your PATH, or set `OPENSCREEN_FFMPEG_PATH` / `OPENSCREEN_FFPROBE_PATH`. + - Run a quick sanity check: `npm run verify:ffmpeg` + - Current platform support: Windows + macOS are supported, Linux falls back to the legacy `MediaRecorder` workflow for now. + 6. **Commit Your Changes** - Commit your changes with a clear and concise commit message: ```bash @@ -54,4 +62,4 @@ If you encounter a bug or have a feature request, please open an issue in the [I By contributing to this project, you agree that your contributions will be licensed under the [MIT License](./LICENSE). -Thank you for your contributions! \ No newline at end of file +Thank you for your contributions! diff --git a/README.md b/README.md index 1d754f7..323fd35 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ #
OpenScreen
++ English | 简体中文 +
+OpenScreen is your free, open-source alternative to Screen Studio (sort of).
@@ -46,7 +50,7 @@ OpenScreen is 100% free for personal and commercial use. Use it, modify it, dist ## Installation -Download the latest installer for your platform from the [GitHub Releases](https://github.com/siddharthvaddem/openscreen/releases) page. +Download the latest installer for your platform from the [GitHub Releases](https://github.com/fengjinyi98/openscreen/releases) page. ### macOS @@ -82,12 +86,20 @@ You may need to grant screen recording permissions depending on your desktop env _I'm new to open source, idk what I'm doing lol. If something is wrong please raise an issue 🙏_ -## Contributing - -Contributions are welcome! If you’d like to help out or see what’s currently being worked on, take a look at the open issues and the [project roadmap](https://github.com/users/siddharthvaddem/projects/3) to understand the current direction of the project and find ways to contribute. - - -## License +## Contributing + +Contributions are welcome! If you’d like to help out or see what’s currently being worked on, take a look at the open issues and the [project roadmap](https://github.com/users/siddharthvaddem/projects/3) to understand the current direction of the project and find ways to contribute. + +### FFmpeg recording (dev note) + +The recording workflow is migrating from Chromium's `MediaRecorder` to an external `ffmpeg` process (and uses `ffprobe` for post-recording validation). + +- Ensure `ffmpeg` and `ffprobe` are available on your PATH, or set `OPENSCREEN_FFMPEG_PATH` / `OPENSCREEN_FFPROBE_PATH`. +- Run a quick sanity check: `npm run verify:ffmpeg` +- Current platform strategy: Windows + macOS use FFmpeg, Linux falls back to the legacy `MediaRecorder` workflow for now. + + +## License This project is licensed under the [MIT License](./LICENSE). By using this software, you agree that the authors are not liable for any issues, damages, or claims arising from its use. diff --git a/README_zh-CN.md b/README_zh-CN.md new file mode 100644 index 0000000..e657c23 --- /dev/null +++ b/README_zh-CN.md @@ -0,0 +1,102 @@ +
+
+
+
+
+
+
+
OpenScreen
+ ++ English | 简体中文 +
+ +OpenScreen 是 Screen Studio 的免费开源替代品。
+ +如果你不想为 Screen Studio 每月支付 29 美元,但需要一个简单的工具来制作精美的产品演示和教程视频,这款免费应用就是为你准备的。OpenScreen 并未涵盖 Screen Studio 的所有功能,但已经能够满足基本需求! + +Screen Studio 是一款出色的产品,这绝对不是一个 1:1 的克隆。OpenScreen 是一个更简洁的版本,为那些想要掌控一切且不想付费的用户提供基础功能。如果你需要所有高级功能,最好还是支持 Screen Studio(他们确实做得很棒)。但如果你只是想要一个免费(没有任何附加条件)且开源的工具,这个项目完全可以胜任! + +OpenScreen 对个人和商业用途都是 100% 免费的。你可以使用、修改、分发它。(如果你愿意的话,请给个 star 支持一下!😁) + +**⚠️ 免责声明:这是一个测试版本,可能存在一些 bug(但希望你能有良好的使用体验!)** + + +
+
+
+
+
+
+
Loading sources...
+{t('Loading sources...')}