3 Commits
Author SHA1 Message Date
AAA 08da234b8f fix(packaging): make App ZIPs readable in Windows Explorer
## Problem and outcome / 问题与结果

The ZIP writer on Windows and macOS archived `.` as a root entry and prefixed members with `./`. Windows File Explorer enumerated zero entries in the published Windows ZIP, although bsdtar could extract it. Archive the source directory's children directly, preserving hidden files and Unix executable modes. Each Windows package now verifies that File Explorer can resolve every source file and directory before publication.

The archive regression checks normalized member paths as well as extraction. This fixes the shared packaging boundary without changing App media or UI behavior.

## Release notes

### 中文

v1.5.1 是一次 ZIP 兼容性修复。修复 Windows 文件资源管理器打开 App 下载包时显示为空或无法解压的问题,并在 Windows 打包时逐项检查资源管理器能否读取文件。

遇到该问题,请重新下载 v1.5.1 的 ZIP 并解压。此前已正常解压、运行的 App 不受此问题影响。

### English

v1.5.1 fixes a ZIP compatibility issue that could make App downloads appear empty or fail to extract in Windows File Explorer. Windows packaging now checks that File Explorer can read every file before release.

If affected, download and extract the v1.5.1 ZIP again. Apps that were already extracted and running are unaffected by this issue.

## Verification / 验证

- Reproduced with the original v1.5.0 Windows archive: File Explorer listed zero entries; the Linux archive remained readable.
- Repacked the original Windows package using the corrected entry layout: File Explorer listed all root entries and extracted all seven files; every SHA-256 matched the original.
- Independent .NET extraction and 7-Zip integrity checks passed.
- `npm run check`: type checking, 998 tests and Web production build passed.
- Windows archive tests include hidden files, Unicode names and spaced paths; Unix checks retain executable permissions.
- Full CI packaging verifies Windows, Linux and macOS before publication.

## Impact / 影响

Packaging-only patch release v1.5.1. Standard Store/Deflate compression, existing dependencies and product protocols are retained. Existing published archives remain immutable.
2026-09-17 13:44:13 +08:00
AAA 0dde5da859 fix(release): provide directly downloadable ZIP app packages (#391)
## Problem and outcome

App downloads used tar.gz archives, which are less convenient to open
with desktop file managers. Windows, macOS and Linux App packages now
ship as ZIP files. Packaging extracts the completed ZIP and runs the
existing runtime checks against those extracted files, covering the
actual distributed package.

The website links directly to the published ZIP for each platform, with
an explicitly labeled GitHub primary download and matching Gitee
alternative. Server deployment archives retain their existing format.

## Release notes

### 中文

- Windows、macOS 和 Linux 客户端改用 ZIP 压缩包,下载后可直接使用系统解压工具完整解压。
- 官网按系统提供 ZIP 直接下载和 Gitee 备用下载入口。

### English

- Windows, macOS and Linux App downloads now use ZIP archives for easier
extraction with desktop file managers.
- The website provides direct ZIP downloads for each platform, with
Gitee as an alternative download source.

## Verification

- `npm run check`: 58 test files / 760 tests, TypeScript and production
build passed.
- Real ZIP round-trip verification covers nested, hidden and Unicode
paths; Unix checks also verify executable modes and launch the extracted
fixtures. Windows archive checks passed locally; all three native
packaging runners execute the existing runtime checks from the final
extracted ZIP.
- Website build, release/mirror validation tests, documentation,
repository hygiene and diff checks passed.

## Impact

Compatible packaging change. Product behavior, protocols and existing
published release artifacts remain unchanged. The release pipeline
publishes a new patch version and refreshes website links after
publication.
2026-09-12 23:15:53 +08:00
AAA da47189fc3 refactor: unify Go runtime and audited frontend
Squash integration of the reviewed Go core, frontend audit fixes, release tooling, and deployment hygiene. CI passed all Server/Client jobs.
2026-09-06 23:26:01 +08:00