Commit Graph
152 Commits
Author SHA1 Message Date
Dushnilin f4bc3255c6 i18n(installer): full Russian localization support for installer steps and status summary 2026-08-05 16:47:32 +03:00
Dushnilin c38dfc792d fix(installer): fallback to run_with_deadline when timeout binary is missing 2026-08-05 16:15:54 +03:00
Dushnilin 0eda44e26c installer: show package manager errors on failure
pkg_list_update, pkg_install_name, and pkg_install_files now capture
stderr and display last 10 lines when package operations fail.
2026-08-05 15:31:56 +03:00
Dushnilin efe002b43d installer: reliability improvements
- Abort on failed package removal instead of continuing
- Improve run_with_deadline with process group kill (kill -- -PID)
- Add timeout 120s for package install/update/remove (apk/opkg)
- Add timeout 10-30s for all service operations (enabled/running/status)
- installer_deactivate_legacy_base returns false on failure
2026-08-05 14:35:48 +03:00
Dushnilin 7b6f607257 installer: don't fail when apk reports non-critical errors
- Capture apk output to log file instead of /dev/null
- Show last 5 lines of apk output on screen when installation fails
- Fix package name parsing to strip version (tachyon_1.2.58 -> tachyon)
- Continue installation if package is actually installed despite apk errors
- Apply same resilience to backend, luci-app, and i18n packages
2026-08-05 08:18:18 +03:00
Dushnilin c7febcb0dc fix: atomic writes, crash safety, deadlock prevention across 10 files
watchdog.uc:
- H-4: ai_heal_uci_config atomic write (tmp → rename)
- H-5: backup validation via uci valid before restart
- H-6: proxy restart cooldown (max 3 per 10 min)
- H-7: restart lock file prevents parallel restarts
- H-13: ai_heal_wan_interface reads 'network' not 'tachyon' config
- M-3: nslookup -port=53 → plain nslookup (BusyBox compat)

generator.uc: atomic_write_json_file for main config output
hosts.uc: atomic cache write (tmp + mv), TOCTOU double stat fix
telegram.uc: atomic config restore, persistent /etc/.tachyon/ paths
migration.uc: UCI commit before cache removal
updates.uc: background reload inside locked section (deadlock prevention)
lifecycle.uc: uci commit return check, watchdog/telegram failure logging
package.uc: postinst_restore returns actual start result
build.sh/install.sh: Wave 1 backup/restore fixes
2026-08-03 19:43:10 +03:00
Dushnilin 51f9f1e43e installer: fix shellcheck SC1072 in tui_progress 2026-08-03 15:17:49 +03:00
Dushnilin 0cbbf3bd15 installer: fix TUI colors on OpenWrt busybox, clean output 2026-08-03 15:13:26 +03:00
Dushnilin 7a10fc9486 installer: inline TUI, remove tools dir, remove installer_tui.sh 2026-08-03 14:55:02 +03:00
Dushnilin e371f7a52e installer: TUI without ASCII logo 2026-08-03 14:48:04 +03:00
Dushnilin 280aa2bfac fix(install): tolerate apk non-critical errors when package is actually installed
On some OpenWrt builds (e.g., FriendlyWRT with ip-full conflict), apk
reports '1 error' even though the package installed successfully
(pre/post scripts ran). The install script now checks if the package
is actually installed after apk returns non-zero, and continues if so.
2026-08-03 14:22:20 +03:00
Dushnilin 254595c9b4 Исправлено зависание установки из-за блокировок GitHub (добавлены зеркала gh-proxy) и исправлено удаление sing-box при ошибке обновления 2026-07-21 15:16:12 +03:00
Dushnilin d30150d80e feat: добавлены все варианты sing-box в интерактивное меню install.sh 2026-07-21 10:24:02 +03:00
Dushnilin bf24983bc4 Fix install.sh overwriting Leadaxe sing-box with extended-compressed sing-box due to legacy detection logic 2026-07-21 08:42:41 +03:00
Dushnilin e1d7b00ba8 feat(installer): add seamless NetShift migration support 2026-07-19 23:16:08 +03:00
Dushnilin 509cf128b8 Merge: объединить изменения из upstream forkop в tachyon, разрешить конфликты и исправить тесты E2E 2026-07-15 17:56:18 +03:00
ushan0v 28ca142662 Restore dnsmasq after legacy backend failure 2026-07-14 22:34:57 +03:00
ushan0v 80d20cd8ef Refactor runtime and harden package lifecycle 2026-07-14 05:06:27 +03:00
ushan0v c05752fd5f Bound installer service checks 2026-07-14 01:38:42 +03:00
Dushnilin f017d01a52 Рефакторинг кода: дедупликация ucode, исправления shellcheck и глобальное улучшение install.sh 2026-07-13 22:38:24 +03:00
Dushnilin e41f30213f Установка лимитов скорости curl в установщике для предотвращения зависаний 2026-07-13 20:33:25 +03:00
Dushnilin 8c9bb8734b Рефакторинг и стабилизация: обновление установщика, бэкенд-утилит и оптимизация фронтенда
- Установщик (install.sh): внедрена верификация хешей sha256sums.txt, нормализована очерёдность бутстрапа ucode до языковых проверок.
- Сборщик (build.sh): добавлена автоматическая генерация sha256sums.txt для пакетов релиза.
- Бэкенд: права на honeypot FIFO ограничены до 0660 в watchdog.uc, исправлена опечатка в SUBNETS_TELEGRAM, удалён helpers.old.uc.
- Тесты бэкенда: написаны тесты для core_ip, core_url и config_connections.
- Фронтенд: реализовано автопереподключение WebSocket с экспоненциальным бэкоффом, проведена дедупликация виджетов и модальных окон в initController.ts, мигрирован CSS-префикс с fkp_ на tachyon_.
- Тесты фронтенда: добавлен initController.test.ts для тестирования загрузки дашборда.
2026-07-13 20:23:33 +03:00
Dushnilin 04f8ed0e9b fix: инициализация секции Telegram и улучшение детализации вывода установщика 2026-07-13 16:15:24 +03:00
Dushnilin c65a33fd37 ci: принудительная перезапись временного скрипта ucode в установщике install.sh 2026-07-13 15:02:52 +03:00
Dushnilin 4c5575ddbe ci: добавление резервного списка релизов и обработки массивов в установщике install.sh 2026-07-13 15:02:09 +03:00
Dushnilin 9fafa73468 ci: удаление жестких зависимостей kmod из бэкенд-пакета и добавление мягкой установки в install.sh 2026-07-13 14:55:57 +03:00
Dushnilin d3cd52adca ci: отключение критичности ошибок при удалении устаревших пакетов в установщике 2026-07-13 14:46:39 +03:00
Dushnilin c7934b9321 ci: добавление альтернативных зеркал для загрузки релизов и API-запросов в install.sh 2026-07-13 14:45:08 +03:00
Dushnilin f57dac6b52 refactor(rebrand): полный ребрендинг в Tachyon и перенос служб watchdog/doctor на Ucode 2026-07-13 14:09:38 +03:00
Dushnilin cd3591fbff refactor: обновление URL репозитория на github.com/Dushnilin/tachyon 2026-07-13 11:03:35 +03:00
Dushnilin e5c022c2c6 refactor: оптимизация хелперов бэкенда и очистка фронтенд-зависимостей
Проведен рефакторинг кодовой базы для устранения дублирования кода и оптимизации скриптов сборки:

- Бэкенд (ucode):
  - Перенесена функция экранирования шелл-аргументов `shell_quote` в общий модуль `core.common`.
  - Удалены дублирующиеся инлайновые объявления функций `as_string`, `shell_quote` и `read_json_file` из всех 23 файлов бэкенда. Вместо них настроен импорт из общего модуля `core.common`.
  - Валидация IP-адресов и CIDR в файле `core/helpers.uc` переведена на использование методов из модуля `core.ip` (`core_ip.valid_ipv4` и `core_ip.valid_ipv4_cidr`).
  - Проверка исполняемости файла (`test -x`) в скрипте `install.sh` заменена на нативную побитовую проверку прав через `fs.stat`.

- Локализация и сборка перевода:
  - Создан общий модуль `fe-app-forkop/locales-utils.js` для получения информации о пользователе Git (`getGitUser`) в скриптах перевода.
  - Из скриптов `generate-po.js` и `generate-pot.js` удалены локальные копии `getGitUser()`, они импортируют общую функцию.

- Зависимости Node.js фронтенда:
  - В скрипте `fe-app-forkop/watch-upload.js` стандартная библиотека `glob` заменена на `fast-glob`.
  - Устаревший пакет `glob` удален из `devDependencies` в `fe-app-forkop/package.json`.
2026-07-13 10:57:21 +03:00
ushan0v afc05c9100 Restore per-interface domain resolvers 2026-07-12 21:38:58 +03:00
ushan0v bcb9794cb9 Keep installer wget timeouts portable 2026-07-12 16:05:06 +03:00
ushan0v c1f6cbe6b7 Preserve Tailscale state during legacy migration 2026-07-12 15:23:24 +03:00
ushan0v 00b7a400ec Bound installer network requests 2026-07-12 15:01:11 +03:00
ushan0v 380ea1f7cf Tag migrated legacy JSON outbounds 2026-07-12 14:58:33 +03:00
ushan0v 077510bcac Refine installer setup prompts 2026-07-12 08:54:26 +03:00
ushan0v b5f2eb3724 Rebrand project as Forkop 2026-07-11 18:23:20 +03:00
ushan0v e3ef9e70fa Rewrite backend runtime from shell to ucode
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.
2026-06-30 20:09:28 +03:00
ushan0v 30820a6f1c Stage package downloads before disruptive installs 2026-06-12 21:29:30 +03:00
ushan0v 68b85554b5 Restore package services during sing-box rollback 2026-06-10 06:02:50 +03:00
ushan0v 8dbc139ff8 Refactor sing-box component installation 2026-06-09 01:29:08 +03:00
ushan0v 1c08e60c0b Fix sing-box variant handling 2026-06-09 01:29:04 +03:00
ushan0v 5368e2a149 Add sing-box variant installation support 2026-06-09 01:29:03 +03:00
ushan0v 5e44d40361 Fix respect dont_touch_dhcp in dnsmasq failsafes 2026-06-09 01:29:00 +03:00
ushan0v a2fc24ba73 refactor: restructure backend ucode architecture 2026-06-09 01:28:58 +03:00
ushan0v bb3b3dcbc6 fix: return dnsmasq handling to upstream flow 2026-06-01 18:38:23 +03:00
ushan0v d48bbd8942 Add fail-safe dnsmasq rollback 2026-05-31 07:32:37 +03:00
ushan0v 6db870ae97 Use GitHub latest release for Podkop updates 2026-05-27 02:57:28 +03:00
ushan0v 87960c9c6c Replace runtime Lua and jq with ucode 2026-05-27 02:23:03 +03:00