Skip to content

Commit 0155452

Browse files
committed
Ship v0.1.41 with source-built FFmpeg and corresponding source metadata
1 parent 8ae9715 commit 0155452

20 files changed

Lines changed: 10233 additions & 103 deletions

‎README.md‎

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
UFriend keeps your workspace on your computer and connects to separately configured local or cloud AI services. Review the original material alongside the result, edit it, and decide how to use it. The interface supports English and Traditional Chinese, with light, dark, and system themes.
1010

11-
**Latest public release: 0.1.39 · Windows x64 · Electron 44**
11+
**Version: 0.1.41 · Windows x64 · Electron 44**
1212

1313
[Releases](https://github.com/breeze0305/UFriend/releases) · [Documentation](docs/README.md) · [使用手冊(繁體中文)](docs/guides/APP_README.md) · [Report an issue](https://github.com/breeze0305/UFriend/issues)
1414

@@ -18,7 +18,7 @@ UFriend keeps your workspace on your computer and connects to separately configu
1818
| --- | --- |
1919
| Email | Import EML files or connect Gmail; read HTML mail, manage attachments and drafts, send mail, summarize and classify messages, and schedule daily organization. |
2020
| Recordings | Import audio or video, choose a transcription language, queue or schedule jobs, jump to timestamps, and edit or export TXT and SRT transcripts. |
21-
| Captioned video | Burn timed subtitles into a new MP4 with progress and cancellation, keeping the source video. Requires the optional FFmpeg runtime. |
21+
| Captioned video | Burn timed subtitles into a new MP4 with progress and cancellation, keeping the source video. FFmpeg is included in the `WithFFmpeg` release. |
2222
| Image text | Import an image or read a clipboard image, run OCR, compare the source with editable text, and copy the result. Automatic clipboard capture is opt-in. |
2323
| Writing | Stream chat responses, keep separate conversations, translate text, and polish writing by purpose and tone. Optional profile context and task prompts are configurable. |
2424
| Workspace | Local persistence and recovery backups, data cleanup, diagnostics, and system tray operation. |
@@ -27,22 +27,24 @@ AI results need review. Mail summaries currently use Traditional Chinese, indepe
2727

2828
## Run the Windows release
2929

30-
1. Open [GitHub Releases](https://github.com/breeze0305/UFriend/releases) and download **UFriend-0.1.39-Portable.exe** for Windows x64. GitHub's **Source code** archives are not runnable desktop packages.
30+
1. Open [GitHub Releases](https://github.com/breeze0305/UFriend/releases) and download **UFriend-0.1.41-Portable-WithFFmpeg.exe** for Windows x64. Source archives and the separate FFmpeg developer package are not needed to run UFriend.
3131
2. Save the EXE in a folder you want to keep. If another version is running, quit it from the system tray menu first.
3232
3. Double-click the downloaded EXE. No installation wizard, Node.js, or manual extraction is needed.
3333
4. For English, open **設定 → 一般 → 軟體介面語言**, choose **English**, and save.
3434

3535
The launcher extracts the application into a separate temporary directory for each run. Workspace data and encrypted credentials remain in your Windows user data directory; they are not stored inside the downloaded EXE or its temporary extraction folder. Restarting from the system tray launches the original portable EXE. Keep that file in place until you fully quit the app.
3636

37-
**Optional media runtime:** the public EXE contains no FFmpeg executable, AI models, or shared OAuth client. For captioned-video export or cloud speech transcription, open **Settings → General → Media runtime**:
37+
**Included media runtime:** the `WithFFmpeg` EXE includes FFmpeg for captioned-video export and audio preparation for cloud speech transcription. No separate FFmpeg installation or 7-Zip is needed. **Settings → General → Media runtime** shows that the runtime is included. The release also provides its complete corresponding source, dependency sources, and build scripts as a separate download.
38+
39+
Older releases and builds made without FFmpeg provide these optional installation controls instead:
3840

3941
- **Download and install media runtime** downloads the pinned build from Gyan and verifies its hashes. An existing 7-Zip installation is required.
4042
- **Select extracted package** opens a folder picker for an already extracted official package. It does not download anything or require 7-Zip.
4143
- **Media runtime instructions** opens the [runtime guide](docs/development/FFMPEG_RUNTIME.md).
4244

4345
A runtime installed through the app is saved in your user data directory and remains available after restarting or replacing the portable EXE. Local Whisper uses its own independently installed runtime. AI model services and Gmail still require the separate configuration described below.
4446

45-
If you use a folder-based ZIP package instead, extract the **entire ZIP**, keep its DLLs, resources, and license files together, and run its `UFriend.exe`. The ZIP also includes `Install media runtime.cmd`; the runtime guide covers that alternative.
47+
If you use a folder-based UFriend ZIP package instead, extract the **entire ZIP**, keep its DLLs, resources, and license files together, and run its `UFriend.exe`. UFriend folder packages built without FFmpeg also include `Install media runtime.cmd`; the runtime guide covers that alternative. The separate FFmpeg developer ZIP is not a UFriend app package.
4648

4749
Use the data-location control in **Settings → General** to find the workspace. Fully quit UFriend before backing it up or replacing application files.
4850

@@ -99,13 +101,13 @@ npm run package:portable
99101

100102
This uses the pinned electron-builder 26.17.0 NSIS portable target. The first build needs network access to download its build tools. It creates and validates a folder package without FFmpeg or embedded OAuth settings, then writes `UFriend-<version>-Portable.exe` and its build receipt under `local/releases/UFriend-<version>-portable-<timestamp>-<id>/`. The verified folder package remains under `dist/`.
101103

102-
For a local test build with FFmpeg already inside the single EXE, first prepare the pinned runtime, then run:
104+
For the release format with FFmpeg already inside the single EXE, first prepare the pinned UFriend-built runtime, then run:
103105

104106
```powershell
105107
npm run package:portable -- --with-ffmpeg
106108
```
107109

108-
This creates `UFriend-<version>-Portable-WithFFmpeg.exe`. It needs no separate media-runtime installation or 7-Zip to run. Settings shows that the media runtime is included. A bundled runtime takes precedence over an older optional installation in user data. The executable includes the upstream license and provenance files. This build is intended for local use; before distributing the bundled GPL component, prepare its complete corresponding source as described in the [runtime guide](docs/development/FFMPEG_RUNTIME.md#授權與來源紀錄).
110+
This creates `UFriend-<version>-Portable-WithFFmpeg.exe`. A bundled runtime takes precedence over an older optional installation in user data. The executable includes the GPL license, third-party notices, and source information. Publish the matching complete source archive alongside the EXE; a successful binary build alone does not complete this step. See the [runtime guide](docs/development/FFMPEG_RUNTIME.md#授權與來源紀錄).
109111

110112
To create only the folder package for ZIP distribution, use `npm run package -- --without-ffmpeg`. For a local folder package using the prepared FFmpeg runtime, use `npm run package`. Packaging does not run the full test suite or publish a release. See the [installation guide](docs/guides/INSTALL_BUILD.md) for isolated development data, UI smoke tests, prerequisites, and packaging details.
111113

@@ -141,4 +143,4 @@ UGen300 integration is not implemented or verified on hardware. Device-pool timi
141143

142144
UFriend is licensed under the [MIT License](LICENSE).
143145

144-
Third-party components retain their respective licenses. These include Electron, Lucide, DOMPurify, MailParser, Nodemailer, and OpenCC. The separately installed FFmpeg build has its own license; UFriend's MIT license does not replace it. See [third-party notices](THIRD_PARTY_NOTICES.md), the [FFmpeg runtime and source information](docs/development/FFMPEG_RUNTIME.md) and [Google asset attribution](app/assets/GOOGLE-BRANDING.md).
146+
Third-party components retain their respective licenses. These include Electron, Lucide, DOMPurify, MailParser, Nodemailer, and OpenCC. FFmpeg is run as a separate process and has its own GPL license; UFriend's MIT license does not replace it. See [third-party notices](THIRD_PARTY_NOTICES.md), the [FFmpeg runtime and source information](docs/development/FFMPEG_RUNTIME.md) and [Google asset attribution](app/assets/GOOGLE-BRANDING.md).

‎THIRD_PARTY_NOTICES.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ The [MIT license](LICENSE) covers UFriend's own code. Third-party components ret
55
- **Electron and Chromium**: folder packages retain Electron's `LICENSE` and `LICENSES.chromium.html` beside the application executable. The single-file portable EXE contains that application payload and expands it, including the notices, into its temporary run directory.
66
- **npm dependencies**: exact versions and declared licenses are recorded in `package-lock.json`. Production dependency license files are retained under `resources/app/node_modules` in the application payload.
77
- **Portable build tooling**: the single-file EXE is generated using the pinned electron-builder 26.17.0 NSIS portable target. Build dependencies are identified in the lockfile and retain their own licenses; they are separate from UFriend's project license.
8-
- **FFmpeg**: the public portable EXE and the ZIP built with `--without-ffmpeg` do not include an FFmpeg binary. The optional installer downloads the pinned Gyan build directly from its publisher, or accepts an extracted official package selected by the user. That build is GPLv3. Its license, upstream notices, and provenance are provided in `scripts/runtime/ffmpeg` and retained beside the installed executable. An installation through Settings is stored in the Windows user data directory and survives application restarts and updates. The optional local `--with-ffmpeg` build instead embeds the verified executable together with those notices. Before distributing that GPL-containing build, provide its complete corresponding source, including required external-library sources and build scripts; the provenance links alone are not such a source bundle. See [FFmpeg runtime documentation](docs/development/FFMPEG_RUNTIME.md).
8+
- **Bundled FFmpeg**: the `Portable-WithFFmpeg.exe` release embeds a UFriend build of FFmpeg as a separate executable. It enables GPL components, including x264, and is provided under GPLv3. The executable is accompanied by the GPL text, `THIRD_PARTY_LICENSES.txt`, and source/build information from `scripts/runtime/ffmpeg-bundled`. The matching complete source archive, including the linked dependency sources and build scripts, is distributed beside the EXE on its GitHub Release. Its exact hash is recorded in the bundled runtime manifest. These terms do not relicense UFriend's independent MIT code.
9+
- **Optional FFmpeg**: builds made without FFmpeg retain the optional installer, which downloads the pinned Gyan GPLv3 build directly from its publisher or accepts the user's extracted official package. Its distinct notices and manifest remain in `scripts/runtime/ffmpeg`. This path does not redistribute the Gyan executable. Installations through Settings remain in the Windows user data directory across app updates. See [FFmpeg runtime documentation](docs/development/FFMPEG_RUNTIME.md).
910

1011
Redistribution of third-party binaries must comply with their own terms. The UFriend license does not replace or relicense those components.

‎docs/README.md‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ The root README provides an English overview and quick start. The detailed guide
1717

1818
- [Model adapter contracts](../app/models/README.md)
1919
- [Windows clipboard component](../app/native/README.md)
20-
- [FFmpeg runtime](development/FFMPEG_RUNTIME.md): install through Settings, persistent runtime storage, ZIP command-line setup, and development prerequisites.
20+
- [FFmpeg runtime](development/FFMPEG_RUNTIME.md): the included runtime, optional installation for unbundled builds, development prerequisites, and corresponding source.
21+
- [Build the media runtime](development/MEDIA_RUNTIME_BUILD.md): pinned source inputs, Windows cross compilation, source packaging, and execution verification.
2122
- [Contributing](../CONTRIBUTING.md)
2223
- [Security reporting](../SECURITY.md)
2324

2425
## Third-party information
2526

2627
- [Google brand assets](../app/assets/GOOGLE-BRANDING.md)
27-
- [FFmpeg source information](../scripts/runtime/ffmpeg/SOURCES.md)
28+
- [Bundled FFmpeg source information](../scripts/runtime/ffmpeg-bundled/SOURCES.md)
29+
- [Optional Gyan runtime provenance](../scripts/runtime/ffmpeg/SOURCES.md)
2830

2931
The repository does not contain credentials, personal workspace data, model weights, or the independent PC model-service projects. Obtain the latter from the maintainer and follow their own installation documentation.

0 commit comments

Comments
 (0)