These target GitHub Actions runners and do not fit the bare Gitea Actions
host runner, producing failed runs on every branch push. The build.yml
release workflow (auto-build on tags) is kept.
tachyon/files/usr/bin/tachyon - ucode-скрипт с shebang #!/usr/bin/ucode,
shellcheck умеет проверять только sh/bash/dash/ksh и падает на нём.
Покрытие cgi-bin и hotplug остаётся.
В репозитории лежит package-lock.json и нет yarn.lock, поэтому yarn-workflow
не кэшировал ничего (hashFiles по отсутствующему файлу) и ставил неразрешимые
деревья зависимостей заново каждый раз. Переведено на npm ci с npm-кэшем по
lockfile; проверка diff сборки ограничена выходной директорией LuCI htdocs,
которую build реально производит. Применена prettier-нормализация недавно
правленных исходников.
- workflow shellcheck теперь покрывает агентский CGI, hotplug WAN-монитор и
точки входа usr/bin; в CGI перед shebang стоял UTF-8 BOM, из-за которого
Linux вообще не мог исполнить скрипт (bad interpreter) - удалён вместе со
случайными BOM в исходниках фронтенда
- новый rag_embeddings.sh фиксирует исправленный порядок аргументов push(),
инвалидацию кэша по отпечатку индекса, нормализацию null model_override и
порядок объявлений - ни один из починенных багов RAG не сможет вернуться
незаметно
- hosts_li
- агентский CGI: /diagnose мог удалять nft-таблицы, переписывать resolv.conf
и перезапускать sing-box с любого устройства LAN без токена; bearer-токен
теперь передаётся через окружение вместо argv (виден в ps), тело запроса
ограничено 64KB до чтения, wildcard Access-Control-Allow-Origin убран -
произвольные сайты больше не могут читать состояние роутера кросс-доменно
(включая DNS rebinding)
- agent_api: сравнение токена за константное время
- uci/migration: /etc/config/tachyon хранит Telegram bot token и ссылки на
подписки; UCI не сохраняет 0600 при коммитах, поэтому режим ужесточается
после каждого коммита этого конфига и после миграций
- build.yml: убран NODE_TLS_REJECT_UNAUTHORIZED=0 из шагов публикации релиза -
проверка сертификатов не должна отключаться на раннере, заливающем релизы
- initd/state: устранено окно TOCTOU при захвате устаревшего reload-лока:
два ожидающих могли оба выполнить rm+rmdir+mkdir и каждый считал лок своим;
захват теперь атомарным переименованием, которое выигрывает ровно один
претендент
Resolves merge conflicts:
- install.sh, build.sh, .github/workflows/build.yml: Reverted to Dushnilin's versions to avoid installing SourceForge mirrors.
- fe-app-tachyon: Resolved type, formatting and copyOutbound conflicts, keeping both Dushnilin's custom features and ushan0v's frontend performance optimizations.
- backend: Kept Dushnilin's ucode refactorings, Telegram bot integration, and release repository URL (Dushnilin/tachyon) while merging updates.uc cache format v8 & persistent cache format v7.
- tests: Merged tests from both branches, preserving ucode -L wrappers for local test execution.
Replace the legacy shell-owned runtime with modular ucode implementations for configuration, service lifecycle, subscriptions, diagnostics, DNS, nftables, routing, providers, updates, and sing-box generation.
Keep thin OpenWrt entrypoints and add regression and package-contract coverage for the new runtime ownership model.