chore: prepare 0.4.0 Linux release on Gitea
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
# Desktop builds and releases
|
||||
|
||||
For this fork’s Linux 0.4.0 release on Gitea, see [Gitea releases](gitea-release.md).
|
||||
The three-platform GitHub process below documents the upstream reference.
|
||||
|
||||
## Platforms
|
||||
|
||||
| Platform | Build runner | Packages | In-app update |
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
# Gitea releases for this fork
|
||||
|
||||
The release destination is
|
||||
https://server2.sorokin-oleg-edu.xyz/replicated/learnharness.
|
||||
Version **0.4.0 targets Linux x64**. Windows is deferred until a native Windows
|
||||
builder is available. The upstream GitHub workflow and three-platform packaging
|
||||
configuration remain available as reference in `.github/workflows/release.yml`
|
||||
and `electron-builder.yml`.
|
||||
|
||||
Official fork packages use `electron-builder.gitea.yml`, which inherits the
|
||||
upstream packaging and replaces its update origin with:
|
||||
|
||||
```
|
||||
https://server2.sorokin-oleg-edu.xyz/replicated/learnharness/releases/download/latest
|
||||
```
|
||||
|
||||
Gitea's `latest` alias resolves the most recent published, non-prerelease release.
|
||||
Drafts do not become updates. The repository and published downloads must be
|
||||
public; no API credential is embedded in the application.
|
||||
|
||||
## Preparing Linux packages
|
||||
|
||||
Use Node **26**, matching upstream's release gates. Build from a clean checkout
|
||||
of the intended release commit. Keep `.env*`, local keys, and application data out
|
||||
of the build directory. Next can copy loaded environment files after tracing;
|
||||
`build-server.mjs` refuses a payload containing them. A clean worktree avoids
|
||||
loading these files in the first place.
|
||||
|
||||
```sh
|
||||
npm ci
|
||||
npm run typecheck
|
||||
npm test
|
||||
npm run lint
|
||||
ELECTRON_RUN_AS_NODE=1 npx electron --import tsx --test tests/pdf-native-render.test.ts tests/pdf-ops.test.ts tests/svg-native-render.test.ts tests/browser-service.test.ts
|
||||
npm run desktop:release:linux
|
||||
```
|
||||
|
||||
The release script builds the standalone server, initializes providers offline,
|
||||
curates the payload, boots it under Electron's bundled Node, packages AppImage
|
||||
and Debian installers, creates SHA-256 checksums, and verifies update metadata
|
||||
against the actual installer bytes.
|
||||
|
||||
Run the packaged-runtime gates too:
|
||||
|
||||
```sh
|
||||
node scripts/smoke-provider-runtime.mjs --standalone dist/linux-unpacked/resources/server/standalone
|
||||
node scripts/smoke-provider-runtime.mjs --standalone dist/linux-unpacked/resources/server/standalone --runtime dist/linux-unpacked/learnharness
|
||||
xvfb-run -a node scripts/smoke-demo-runtime.mjs --standalone dist/linux-unpacked/resources/server/standalone --runtime dist/linux-unpacked/learnharness --browser
|
||||
```
|
||||
|
||||
The Linux 0.4.0 release has exactly four attachments:
|
||||
|
||||
- `LearnHarness-0.4.0-x86_64.AppImage`
|
||||
- `LearnHarness-0.4.0-amd64.deb`
|
||||
- `latest-linux.yml`
|
||||
- `SHA256SUMS`
|
||||
|
||||
## Preparing the Gitea draft
|
||||
|
||||
Commit and push the release source, then push its exact annotated tag:
|
||||
|
||||
```sh
|
||||
git tag -a v0.4.0 -m 'LearnHarness 0.4.0'
|
||||
git push gitea main v0.4.0
|
||||
```
|
||||
|
||||
Supply `GITEA_TOKEN` only to the upload command. A token file may remain outside
|
||||
the clean build checkout:
|
||||
|
||||
```sh
|
||||
node --env-file=/path/to/private/release.env scripts/gitea-release.mjs upload dist
|
||||
```
|
||||
|
||||
The tool requires the tag to exist in Gitea, creates or reuses one draft at that
|
||||
tag, uploads missing assets, and downloads every attachment to verify its actual
|
||||
SHA-256 against the local verified build. Existing mismatched attachments and
|
||||
published releases are refused. It never publishes or changes repository
|
||||
visibility. Release notes come from `docs/release-0.4.0.md`.
|
||||
|
||||
A separate verification can be repeated without changing the draft:
|
||||
|
||||
```sh
|
||||
node --env-file=/path/to/private/release.env scripts/gitea-release.mjs verify-remote dist
|
||||
```
|
||||
|
||||
Review the verified draft before publication. Only after publication will the
|
||||
public `latest` feed and in-app automatic updates expose this version.
|
||||
|
||||
## Gitea Actions
|
||||
|
||||
`.gitea/workflows/release.yml` provides the same Linux gates through a manual
|
||||
workflow with an existing release tag as input. It requires a native Linux x64
|
||||
runner labeled `ubuntu-24.04`, the label used by upstream's Linux release job,
|
||||
plus the native Electron dependencies and `xvfb-run`. There were no runners
|
||||
registered when 0.4.0 was prepared, so its packages are built locally. A tag push
|
||||
does not queue a job that cannot run.
|
||||
|
||||
The workflow uses the repository's ephemeral `GITEA_TOKEN` with release-write
|
||||
permission only in the final upload step. It checks out the requested tag without
|
||||
persisting credentials and leaves the result as a verified draft. Public pull
|
||||
requests cannot trigger this publishing workflow. Add Windows only with a native
|
||||
Windows build and its corresponding smoke checks; do not substitute a Linux
|
||||
standalone payload into a Windows installer.
|
||||
@@ -0,0 +1,58 @@
|
||||
# LearnHarness 0.4.0
|
||||
|
||||
## English
|
||||
|
||||
LearnHarness now supports English and Russian throughout the interface and new
|
||||
AI learning content. Switch languages in **Settings → General**. The interface
|
||||
language and speech recognition language are independent and persist across
|
||||
restarts; System default follows the browser or operating system, using English
|
||||
for unsupported languages.
|
||||
|
||||
- Russian translations cover lessons, practice, the knowledge graph, setup,
|
||||
settings, dialogs, tooltips, accessibility labels, notifications, exports,
|
||||
desktop menus, and application error messages.
|
||||
- New teaching, questions, plans, practice, graph descriptions, research,
|
||||
diagrams, and interactive demos follow the interface language.
|
||||
- Choose English or Russian speech recognition next to the microphone or in
|
||||
General settings. A recording retains its language through reconnections;
|
||||
changing the preference affects the next recording.
|
||||
- Russian text uses a Cyrillic-capable reading font, correct plural forms,
|
||||
localized numbers, and filenames that preserve Cyrillic characters.
|
||||
- Language changes preserve other settings. Existing conversations and imported
|
||||
learning material retain their original text.
|
||||
|
||||
This Gitea release targets **Linux x64**: AppImage and Debian packages. Windows
|
||||
packaging is deferred until a native Windows builder is available. Automatic
|
||||
updates for these packages use this fork's public Gitea releases.
|
||||
|
||||
To use live dictation, configure a Deepgram key under **Settings → Providers**.
|
||||
To start AI sessions, connect an AI provider and select the required model tiers.
|
||||
|
||||
## Русский
|
||||
|
||||
LearnHarness теперь поддерживает английский и русский языки во всём интерфейсе
|
||||
и в новых учебных материалах, создаваемых ИИ. Язык можно выбрать в разделе
|
||||
**Настройки → Общие**. Язык интерфейса и язык распознавания речи выбираются
|
||||
независимо и сохраняются после перезапуска. В режиме «Язык системы» используется
|
||||
язык браузера или операционной системы; для неподдерживаемых языков — английский.
|
||||
|
||||
- Переведены занятия, практика, граф знаний, первоначальная настройка,
|
||||
параметры приложения, диалоги, подсказки, подписи для программ чтения с экрана,
|
||||
уведомления, экспорт, меню настольного приложения и сообщения об ошибках.
|
||||
- Новые объяснения, вопросы, планы, практические задачи, описания в графе,
|
||||
исследования, диаграммы и интерактивные демонстрации используют язык интерфейса.
|
||||
- Английский или русский язык распознавания речи можно выбрать рядом с микрофоном
|
||||
или в общих настройках. Запись сохраняет выбранный язык при восстановлении
|
||||
соединения; изменение настройки применяется к следующей записи.
|
||||
- Для русского текста добавлен шрифт с кириллицей, правильные формы множественного
|
||||
числа, локализованное отображение чисел и поддержка кириллицы в именах файлов.
|
||||
- Смена языка сохраняет остальные настройки. Существующие разговоры и
|
||||
импортированные учебные материалы остаются на исходном языке.
|
||||
|
||||
Этот выпуск в Gitea предназначен для **Linux x64** и доступен в форматах AppImage
|
||||
и Debian. Выпуск для Windows отложен до появления сборочной машины с Windows.
|
||||
Автоматические обновления этих пакетов используют публичные выпуски этого форка
|
||||
в Gitea.
|
||||
|
||||
Для диктовки добавьте ключ Deepgram в разделе **Настройки → Провайдеры**.
|
||||
Для занятий с ИИ подключите провайдера и выберите модели для всех нужных уровней.
|
||||
Reference in New Issue
Block a user