diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3648d9f..759cd6e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -75,9 +75,11 @@ jobs: include: - arch: amd64 deb_arch: amd64 + electron_app_dir: release/linux-unpacked runner: ubuntu-24.04 - arch: arm64 deb_arch: arm64 + electron_app_dir: release/linux-arm64-unpacked runner: ubuntu-24.04-arm runs-on: ${{ matrix.runner }} steps: @@ -101,6 +103,7 @@ jobs: env: MELOASR_VERSION: ${{ needs.update-flake-lock.outputs.version }} MELOASR_DEB_ARCH: ${{ matrix.deb_arch }} + MELOASR_ELECTRON_APP_DIR: ${{ matrix.electron_app_dir }} run: | npm ci npm run package:deb diff --git a/AGENTS.md b/AGENTS.md index 5246319..b9b6610 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,7 +2,7 @@ ## 项目范围 -MeloASR 是仅面向 Linux 的 Fcitx5 桌面语音输入工具。项目名为 `MeloASR`,分发包名为 `meloasr`,当前版本为 `0.1.8`。 +MeloASR 是仅面向 Linux 的 Fcitx5 桌面语音输入工具。项目名为 `MeloASR`,分发包名为 `meloasr`,当前版本为 `0.1.9`。 不得恢复 Windows、PowerShell 或 Tauri 输出路径。发行版差异只能存在于依赖说明和打包配置,不能进入语音输入核心逻辑。 diff --git a/CHANGELOG.md b/CHANGELOG.md index f220d2f..10e504f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ 本项目遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/) 的格式。 +## [0.1.9] - 2026-08-23 + +### 修复 + +- 修复 arm64 deb/rpm 构建使用错误 Electron 解包目录的问题。 +- 修复 RPM 打包时 Fcitx5 addon 文件路径校验失败的问题。 +- 修复 Nix 构建错误对项目根目录执行 CMake 配置的问题。 + ## [0.1.8] - 2026-08-23 ### 修复 diff --git a/CLAUDE.md b/CLAUDE.md index 5246319..b9b6610 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,7 +2,7 @@ ## 项目范围 -MeloASR 是仅面向 Linux 的 Fcitx5 桌面语音输入工具。项目名为 `MeloASR`,分发包名为 `meloasr`,当前版本为 `0.1.8`。 +MeloASR 是仅面向 Linux 的 Fcitx5 桌面语音输入工具。项目名为 `MeloASR`,分发包名为 `meloasr`,当前版本为 `0.1.9`。 不得恢复 Windows、PowerShell 或 Tauri 输出路径。发行版差异只能存在于依赖说明和打包配置,不能进入语音输入核心逻辑。 diff --git a/linux/fcitx5/CMakeLists.txt b/linux/fcitx5/CMakeLists.txt index 476e3b5..38e2420 100644 --- a/linux/fcitx5/CMakeLists.txt +++ b/linux/fcitx5/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.16) -project(meloasr-fcitx5 VERSION 0.1.8 LANGUAGES CXX) +project(meloasr-fcitx5 VERSION 0.1.9 LANGUAGES CXX) include(GNUInstallDirs) include(CTest) diff --git a/linux/fcitx5/meloasr.conf.in b/linux/fcitx5/meloasr.conf.in index 6f5d261..65e7941 100644 --- a/linux/fcitx5/meloasr.conf.in +++ b/linux/fcitx5/meloasr.conf.in @@ -6,7 +6,7 @@ Comment[zh_CN]=将 MeloASR 网页后端连接到当前输入上下文 Type=SharedLibrary Library=@MELOASR_LIBRARY_PATH@ Category=Module -Version=0.1.8 +Version=0.1.9 OnDemand=False Configurable=False diff --git a/package-lock.json b/package-lock.json index 8dada70..a3d3096 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "meloasr", - "version": "0.1.8", + "version": "0.1.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "meloasr", - "version": "0.1.8", + "version": "0.1.9", "devDependencies": { "@types/node": "^24.0.0", "electron": "42.3.0", diff --git a/package.json b/package.json index 0c3f65c..bdfba71 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "meloasr", "productName": "MeloASR", - "version": "0.1.8", + "version": "0.1.9", "private": true, "author": "MeloASR contributors", "description": "基于网页语音识别后端和 Fcitx5 的 Linux 实时语音输入工具", diff --git a/packaging/README.md b/packaging/README.md index 5a8b8d3..5f1a74f 100644 --- a/packaging/README.md +++ b/packaging/README.md @@ -1,6 +1,6 @@ # Linux 分发打包 -MeloASR 0.1.8 的系统包由两部分组成: +MeloASR 0.1.9 的系统包由两部分组成: - Electron 应用安装到 `/opt/meloasr`,命令入口为 `/usr/bin/meloasr`; - Fcitx5 常驻 addon 由目标发行版中的 CMake/Fcitx5 开发包编译,并安装到该环境报告的 addon 目录。 @@ -40,7 +40,7 @@ npm run build:linux:dir packaging/deb/build-deb.sh ``` -产物位于 `packaging/out/meloasr_0.1.8_.deb`。依赖名称按 Debian/Ubuntu 系列填写,但尚未在各发行版完成安装验证。 +产物位于 `packaging/out/meloasr_0.1.9_.deb`。依赖名称按 Debian/Ubuntu 系列填写,但尚未在各发行版完成安装验证。 ## rpm diff --git a/packaging/arch/PKGBUILD b/packaging/arch/PKGBUILD index 661d3fc..67fff8a 100644 --- a/packaging/arch/PKGBUILD +++ b/packaging/arch/PKGBUILD @@ -1,10 +1,10 @@ pkgname=meloasr -pkgver=0.1.8 +pkgver=0.1.9 pkgrel=1 pkgdesc='Web-backed voice input for Fcitx5' arch=('x86_64') url='https://github.com/Melorise/MeloASR' -license=('custom') +license=('MPL2') depends=('fcitx5' 'gtk3' 'nss' 'libxss' 'mesa' 'alsa-lib') makedepends=('nodejs' 'npm' 'cmake' 'gcc' 'nlohmann-json') source=("${pkgname}-${pkgver}.tar.gz") @@ -38,7 +38,7 @@ package() { "${pkgdir}/etc/xdg/autostart/meloasr.desktop" install -Dm644 packaging/assets/meloasr.metainfo.xml \ "${pkgdir}/usr/share/metainfo/meloasr.metainfo.xml" - install -Dm644 logo.png \ + install -Dm644 src/assets/logo.png \ "${pkgdir}/usr/share/pixmaps/meloasr.png" DESTDIR="${pkgdir}" cmake --install build/fcitx5 diff --git a/packaging/arch/README.md b/packaging/arch/README.md index 820b7cc..c7d7649 100644 --- a/packaging/arch/README.md +++ b/packaging/arch/README.md @@ -1,6 +1,6 @@ # Arch Linux 构建 -发布时把项目源码归档为 `meloasr-0.1.8.tar.gz`,与 `PKGBUILD` 放在同一目录,随后运行: +发布时把项目源码归档为 `meloasr-0.1.9.tar.gz`,与 `PKGBUILD` 放在同一目录,随后运行: ```bash makepkg --syncdeps --cleanbuild diff --git a/packaging/assets/meloasr.metainfo.xml b/packaging/assets/meloasr.metainfo.xml index ec3af22..22706e0 100644 --- a/packaging/assets/meloasr.metainfo.xml +++ b/packaging/assets/meloasr.metainfo.xml @@ -5,7 +5,7 @@ Web-backed voice input for Fcitx5 基于网页后端的 Fcitx5 语音输入工具 CC0-1.0 - LicenseRef-proprietary + MPL-2.0

MeloASR connects supported web speech-recognition backends to the active Fcitx5 input context.

MeloASR 将支持的网页语音识别后端连接到当前 Fcitx5 输入上下文。

@@ -16,6 +16,7 @@ meloasr + diff --git a/packaging/deb/build-deb.sh b/packaging/deb/build-deb.sh index 7da0513..1e582a3 100755 --- a/packaging/deb/build-deb.sh +++ b/packaging/deb/build-deb.sh @@ -2,9 +2,9 @@ set -euo pipefail project_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)" -version="${MELOASR_VERSION:-0.1.8}" +version="${MELOASR_VERSION:-0.1.9}" arch="${MELOASR_DEB_ARCH:-$(dpkg --print-architecture)}" -app_dir="${1:-${project_dir}/release/linux-unpacked}" +app_dir="${1:-${MELOASR_ELECTRON_APP_DIR:-${project_dir}/release/linux-unpacked}}" work_dir="${project_dir}/packaging/out/deb-root" output_dir="${project_dir}/packaging/out" diff --git a/packaging/nix/package.nix b/packaging/nix/package.nix index c4fdb5e..37143bf 100644 --- a/packaging/nix/package.nix +++ b/packaging/nix/package.nix @@ -30,6 +30,9 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ fcitx5 nlohmann_json ]; + # 项目根目录不是 CMake 工程;Fcitx5 addon 在自定义 buildPhase 中单独配置。 + dontConfigure = true; + buildPhase = '' runHook preBuild npm run build diff --git a/packaging/rpm/build-rpm.sh b/packaging/rpm/build-rpm.sh index 750585c..96a3014 100755 --- a/packaging/rpm/build-rpm.sh +++ b/packaging/rpm/build-rpm.sh @@ -2,8 +2,8 @@ set -euo pipefail project_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)" -version="${MELOASR_VERSION:-0.1.8}" -app_dir="${1:-${project_dir}/release/linux-unpacked}" +version="${MELOASR_VERSION:-0.1.9}" +app_dir="${1:-${MELOASR_ELECTRON_APP_DIR:-${project_dir}/release/linux-unpacked}}" stage_dir="${project_dir}/packaging/out/rpm-root" top_dir="${project_dir}/packaging/out/rpmbuild" @@ -14,12 +14,19 @@ command -v rpmbuild >/dev/null || { rm -rf -- "${stage_dir}" "${top_dir}" "${project_dir}/packaging/scripts/stage-linux.sh" "${app_dir}" "${stage_dir}" +addon_file="$(find "${stage_dir}/usr" -type f -path '*/fcitx5/libmeloasr.so' \ + -printf '/usr/%P\n' -quit)" +if [[ -z "${addon_file}" ]]; then + echo "未在安装根目录中找到 Fcitx5 addon。" >&2 + exit 1 +fi mkdir -p "${top_dir}"/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} tar -C "${stage_dir}" -czf "${top_dir}/SOURCES/meloasr-root.tar.gz" . rpmbuild -bb \ --define "_topdir ${top_dir}" \ --define "meloasr_version ${version}" \ + --define "meloasr_addon_file ${addon_file}" \ "${project_dir}/packaging/rpm/meloasr-binary.spec" find "${top_dir}/RPMS" -type f -name '*.rpm' -exec cp -f {} "${project_dir}/packaging/out/" \; diff --git a/packaging/rpm/meloasr-binary.spec b/packaging/rpm/meloasr-binary.spec index 75f73bf..f9e9af3 100644 --- a/packaging/rpm/meloasr-binary.spec +++ b/packaging/rpm/meloasr-binary.spec @@ -2,7 +2,7 @@ Name: meloasr Version: %{meloasr_version} Release: 1%{?dist} Summary: Web-backed voice input for Fcitx5 -License: LicenseRef-Proprietary +License: MPL-2.0 URL: https://github.com/Melorise/MeloASR Source0: meloasr-root.tar.gz @@ -28,7 +28,7 @@ tar -C %{buildroot} -xzf %{SOURCE0} %defattr(-,root,root,-) /opt/meloasr /usr/bin/meloasr -/usr/lib*/fcitx5/libmeloasr.so +%{meloasr_addon_file} /usr/share/applications/meloasr.desktop /usr/share/pixmaps/meloasr.png /usr/share/metainfo/meloasr.metainfo.xml @@ -36,6 +36,10 @@ tar -C %{buildroot} -xzf %{SOURCE0} /etc/xdg/autostart/meloasr.desktop %changelog +* Sun Aug 23 2026 MeloASR contributors - 0.1.9-1 +- Fix multi-architecture package staging and RPM addon file ownership. +- Fix Nix derivation configuration phase. + * Sun Aug 23 2026 MeloASR contributors - 0.1.8-1 - Fix Fcitx5 addon compatibility with Ubuntu 24.04. diff --git a/packaging/scripts/stage-linux.sh b/packaging/scripts/stage-linux.sh index 620cb0a..25b0978 100755 --- a/packaging/scripts/stage-linux.sh +++ b/packaging/scripts/stage-linux.sh @@ -2,10 +2,14 @@ set -euo pipefail project_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../.." && pwd)" -app_dir="${1:-${project_dir}/release/linux-unpacked}" +app_dir="${1:-${MELOASR_ELECTRON_APP_DIR:-${project_dir}/release/linux-unpacked}}" stage_dir="${2:-${project_dir}/packaging/out/root}" addon_build_dir="${MELOASR_ADDON_BUILD_DIR:-${project_dir}/packaging/out/fcitx5-build}" +if [[ "${app_dir}" != /* ]]; then + app_dir="${project_dir}/${app_dir}" +fi + if [[ ! -d "${app_dir}" ]]; then echo "缺少 Electron 解包目录:${app_dir}" >&2 echo "请先运行项目提供的 Linux directory 构建脚本。" >&2