Updater messages without "!", README and changelog for v0.9

cmd drops "!" from messages when delayed expansion is on, so errors
read "ERROR:". README describes the two files per system and the
first install from a release zip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
kkallasandClaude Opus 5.5 committed 2026-09-28 19:43:50 +02:00
1 parent a33736742a
commit bfbbd537d5
3 files changed
+91 -81

No files matched your search

+77 -76
View File
@@ -1,76 +1,77 @@
# KOTA Sensorbox Technician Tool # KOTA Sensorbox Technician Tool
Diagnoza sensorboxa przez USB, wgrywanie firmware z folderu `firmware/` i przygotowanie karty SD. Diagnoza sensorboxa przez USB, wgrywanie firmware z folderu `firmware/` i przygotowanie karty SD.
Działa na Windows 10/11 i macOS 13 (Ventura) lub nowszym, na Macach z Intelem i Apple Silicon. Działa na Windows 10/11 i macOS 13 (Ventura) lub nowszym, na Macach z Intelem i Apple Silicon.
Repozytorium: https://gitea.kota-app.com/kkallas/kota-technician-tool (dostęp nadaje właściciel repozytorium). Repozytorium: https://gitea.kota-app.com/kkallas/kota-technician-tool (dostęp nadaje właściciel repozytorium).
## Instalacja ## Dla technika: dwa pliki
Wybierz jeden sposób. Nie trzymaj narzędzia w folderze Google Drive ani OneDrive. | System | Aktualizacja | Uruchomienie |
|---|---|---|
### A. Paczka zip (najprościej) | Windows | `update_windows.bat` | `run_windows.bat` |
| macOS | `update_macos.command` | `run_macos.command` |
1. Na Gitea otwórz **Releases** i przy najnowszej wersji pobierz **Source Code (ZIP)**.
2. Rozpakuj do zwykłego folderu, np. `Dokumenty\KOTA\technician-tool`. - **Aktualizacja** sprawdza na Gitea najnowszą wydaną wersję i pobiera tylko to, co się zmieniło
3. Nowa wersja: pobierz nowy zip i rozpakuj obok (albo w miejsce starego folderu). (pliki programu, firmware i potrzebne biblioteki). Uruchom ją, gdy firmware team ogłosi nową wersję,
albo po prostu przed wyjazdem do klienta. Pokazuje, co się zmieniło.
### B. Git (aktualizacja jednym poleceniem) - **Uruchomienie** startuje program. Nie łączy się z Gitea, działa też bez internetu (po pierwszej aktualizacji).
Wymaga zainstalowanego gita (Windows: https://git-scm.com, macOS: `xcode-select --install`). Nie trzymaj folderu narzędzia w Google Drive ani OneDrive.
``` ## Pierwsza instalacja (raz na komputer)
git clone https://gitea.kota-app.com/kkallas/kota-technician-tool.git
``` 1. Na Gitea otwórz **Releases** i przy najnowszej wersji pobierz **Source Code (ZIP)**.
2. Rozpakuj do zwykłego folderu, np. `Dokumenty\KOTA echnician-tool` (macOS: `~/Documents/KOTA/technician-tool`).
Przy pierwszym połączeniu podaj login i hasło (lub token) do Gitea; system je zapamięta. 3. Uruchom plik aktualizacji dla swojego systemu. Za pierwszym razem:
Aktualizacja do najnowszej wersji, w folderze `kota-technician-tool`: - połączy folder z Gitea i zapyta o login do Gitea (hasło lub token); system je zapamięta,
- zainstaluje brakujące narzędzia za Twoją zgodą: Git (Windows: przez winget; macOS: Apple Command Line Tools
``` - po ich instalacji uruchom aktualizację jeszcze raz) oraz `uv` (menedżer Pythona, tylko dla bieżącego
git pull użytkownika),
``` - pobierze biblioteki Pythona (1–2 minuty, potrzebny internet).
4. Uruchom program plikiem `run_...`.
Konkretna wersja, np. na potrzeby serwisu starszego boxa: `git switch --detach v0.8`, powrót: `git switch main`.
**macOS:** jeśli Finder odpowie, że pliku nie można uruchomić (zdarza się po rozpakowaniu zip), otwórz Terminal,
## Uruchomienie wpisz `bash ` (ze spacją), przeciągnij `update_macos.command` do okna i naciśnij Enter. Po pierwszej aktualizacji
oba pliki `.command` dają się już otwierać dwuklikiem.
**Windows:** dwuklik `run_windows.bat`.
Zamiast zip można też zrobić `git clone https://gitea.kota-app.com/kkallas/kota-technician-tool.git` i dalej
**macOS:** dwuklik `run_macos.command`. Jeśli Finder odpowie, że pliku nie można uruchomić (zdarza się po używać tych samych dwóch plików.
rozpakowaniu zip), otwórz Terminal, wpisz `bash ` (ze spacją), przeciągnij plik do okna i naciśnij Enter.
Na stałe naprawia to `chmod +x run_macos.command`. Przy instalacji przez git ten problem nie występuje. Konkretna starsza wersja (np. do serwisu nietypowego boxa): w folderze narzędzia `git switch --detach v0.8`;
kolejna aktualizacja wraca do najnowszej.
Przy pierwszym uruchomieniu skrypt proponuje instalację `uv` (menedżer Pythona, tylko dla bieżącego użytkownika)
i pobiera biblioteki. Potrzebny jest internet, trwa to 1–2 minuty. Kolejne starty są natychmiastowe. Wszystkie wersje używają jednego środowiska Pythona poza folderem narzędzia:
Środowisko Pythona jest poza folderem narzędzia: `%LOCALAPPDATA%\KotaTechnicianTool env` (Windows), `~/Library/Caches/KotaTechnicianTool/venv` (macOS).
`%LOCALAPPDATA%\KotaTechnicianTool\venv-<wersja>` (Windows), `~/Library/Caches/KotaTechnicianTool/venv-<wersja>` (macOS). Stare środowiska `venv-0.x` z poprzednich wersji można usunąć.
Sesje, kopie zapasowe flash i ustawienia są w `~/KotaTechnicianTool` (Windows: `C:\Users\<użytkownik>\KotaTechnicianTool`). Sesje, kopie zapasowe flash i ustawienia są w `~/KotaTechnicianTool` (Windows: `C:\Users\<użytkownik>\KotaTechnicianTool`).
## Port sensorboxa ## Port sensorboxa
- Windows: `COMx - Sensorbox (native USB) [MAC]` - Windows: `COMx - Sensorbox (native USB) [MAC]`
- macOS: `/dev/cu.usbmodemXXXX - Sensorbox (native USB) [MAC]` - macOS: `/dev/cu.usbmodemXXXX - Sensorbox (native USB) [MAC]`
Kabel USB musi przenosić dane (nie tylko ładowanie). Przy restartach z komunikatem o brownout użyj innego portu Kabel USB musi przenosić dane (nie tylko ładowanie). Przy restartach z komunikatem o brownout użyj innego portu
lub zasilacza. lub zasilacza.
## Firmware ## Firmware
Wgrać można tylko pliki `.bin` z folderu `firmware/`. Lista pokazuje datę kompilacji zapisaną w pliku, Wgrać można tylko pliki `.bin` z folderu `firmware/`. Lista pokazuje datę kompilacji zapisaną w pliku,
najnowszy build jest na górze. Nowy build: wrzuć plik do `firmware/` i kliknij **Refresh list**. najnowszy build jest na górze. Nowy build: wrzuć plik do `firmware/` i kliknij **Refresh list**.
## Dla zespołu ## Dla zespołu
- Praca nad zmianą: gałąź (`git switch -c feature/<nazwa>`) → commity z przechodzącymi testami → - Praca nad zmianą: gałąź (`git switch -c feature/<nazwa>`) → commity z przechodzącymi testami →
`git push -u origin feature/<nazwa>` → pull request na Gitea → merge do `main`. `git push -u origin feature/<nazwa>` → pull request na Gitea → merge do `main`.
- Wydanie wersji: numer w `pyproject.toml`, `kota_tech/__init__.py` i skryptach `run_*`, tag `vX.Y` - Wydanie wersji: numer w `pyproject.toml`, `kota_tech/__init__.py` i `uv.lock`, tag `vX.Y`
(`git tag -a vX.Y -m "Technician tool vX.Y"`, `git push origin vX.Y`), opis w **Releases** na Gitea. (`git tag -a vX.Y -m "Technician tool vX.Y"`, `git push origin vX.Y`), opis w **Releases** na Gitea.
- Nie commitujemy `ENV.TXT` z prawdziwym tokenem ani haseł Wi-Fi. Aktualizacja techników bierze **tylko tagi `v*`** – zmiany w `main` bez tagu do nich nie trafiają.
- Testy: - Nie commitujemy `ENV.TXT` z prawdziwym tokenem ani haseł Wi-Fi.
- Testy:
```
uv run --frozen pytest -q ```
``` uv run --frozen pytest -q
```
Zmiany w wersjach: `docs/CHANGES-v0.7.md`, `docs/CHANGES-v0.8.md`; historia v0.1–v0.8 jest w tagach gita.
Zmiany w wersjach: `docs/CHANGES-v0.*.md`; historia v0.1–v0.8 jest w tagach gita.
+9
View File
@@ -0,0 +1,9 @@
# Technician tool v0.9 - changes
- Two files per system for technicians: `update_windows.bat` / `update_macos.command` (update) and
`run_windows.bat` / `run_macos.command` (start).
- Update: checks Gitea for the newest release tag `vX.Y`, downloads only what changed (git), shows the list of
changes, protects files edited by hand (asks first), connects a folder unpacked from a release zip on first
run, installs git / uv when missing (asks first) and brings the Python libraries up to date.
- One shared Python environment for all versions: `KotaTechnicianTool/venv` (was `venv-0.x` per version).
- A developer copy on a branch is left alone by the update script (use `git pull`).
+5 -5
View File
@@ -19,7 +19,7 @@ if errorlevel 1 (
winget install --id Git.Git -e --source winget --accept-package-agreements winget install --id Git.Git -e --source winget --accept-package-agreements
where git >nul 2>nul where git >nul 2>nul
if errorlevel 1 ( if errorlevel 1 (
echo [!] Git installation failed. Install it from https://git-scm.com and run this again. echo ERROR: Git installation failed. Install it from https://git-scm.com and run this again.
goto :fail goto :fail
) )
) )
@@ -43,7 +43,7 @@ if not errorlevel 1 (
echo Checking for a new version... echo Checking for a new version...
git fetch --quiet --force --tags origin git fetch --quiet --force --tags origin
if errorlevel 1 ( if errorlevel 1 (
echo [!] Cannot reach %KOTA_REPO_URL%. echo ERROR: Cannot reach %KOTA_REPO_URL%.
echo Check the Internet connection and your Gitea login, then try again. echo Check the Internet connection and your Gitea login, then try again.
goto :fail goto :fail
) )
@@ -51,7 +51,7 @@ if errorlevel 1 (
set "LATEST=" set "LATEST="
for /f "delims=" %%t in ('git tag -l "v*" --sort^=-v:refname') do if not defined LATEST set "LATEST=%%t" for /f "delims=" %%t in ('git tag -l "v*" --sort^=-v:refname') do if not defined LATEST set "LATEST=%%t"
if not defined LATEST ( if not defined LATEST (
echo [!] No released version found on the server. echo ERROR: No released version found on the server.
goto :fail goto :fail
) )
set "CURRENT=" set "CURRENT="
@@ -87,7 +87,7 @@ if errorlevel 1 (
) )
where uv >nul 2>nul where uv >nul 2>nul
if errorlevel 1 ( if errorlevel 1 (
echo [!] uv installation failed. Ask the firmware team for help. echo ERROR: uv installation failed. Ask the firmware team for help.
goto :fail goto :fail
) )
echo Checking Python libraries... echo Checking Python libraries...
@@ -102,6 +102,6 @@ exit /b 0
:fail :fail
echo. echo.
echo [!] Update did not finish. echo ERROR: Update did not finish.
if not defined KOTA_NO_PAUSE pause if not defined KOTA_NO_PAUSE pause
exit /b 1 exit /b 1