From 85cdf116006de97ad2f7ee2524c7dee13dbc8502 Mon Sep 17 00:00:00 2001 From: ttbombadil Date: Sun, 18 Oct 2026 14:40:00 +0200 Subject: [PATCH] chore(release): prepare v1.0.1 Turn the Unreleased changelog section into v1.0.1 with operator upgrade notes and all changes since v1.0.0 (#239-#252), and set the package version to 1.0.1. The REST and WebSocket protocol versions stay at 1.0.0. The Ubuntu/VBox guide mentions how long the first image builds take. The Freetutor rating records C, D and E name the two main-branch commits whose conflict-free merge they ran, instead of local integration branches that are being deleted. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 48 ++++++++++++++++++- docs/INSTALL_UBUNTU_VBOX.md | 5 +- .../human-ratings/freetutor-C-2026-10-07.md | 2 +- .../human-ratings/freetutor-D-2026-10-07.md | 2 +- .../human-ratings/freetutor-E-2026-10-07.md | 2 +- package-lock.json | 4 +- package.json | 2 +- 7 files changed, 57 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bc31dc38..bb4775b30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,29 @@ All notable changes to UnoSim. Versions follow [Semantic Versioning](https://semver.org/). -## Unreleased +## v1.0.1 – 2026-10-18 + +Bug-fix release covering #239–#252. The REST API and the WebSocket protocol +still report version `1.0.0`; the embedding API (`postMessage`) stays at +`1.4.0`. The examples catalog `UnoSim-Examples` `v3.0.0` needs this release +(IT08.4, IT11 and the pull-up observations in IT03.6/IT04.4). + +### Upgrade notes for operators + +- **Prepare the runtime directories once** if you run Compose manually: + `sudo ./scripts/prepare-runtime-dirs.sh` hands `server/arduino-cache`, + `temp` and `storage` to the container user (UID/GID 1000). Without it, + compiles fail with `EACCES` on hosts where these directories belong to + another user. The Ubuntu/VBox installer runs the script itself. +- **`capacity.env` values now take effect.** Compose forwards + `SIMULATION_QUEUE_TIMEOUT_MS` and reads `SIMULATION_MAX_CONCURRENT` from + `.env` (default unchanged: 200). Recreate the backend container after + changing `.env` and check the values under `/api/status` → `capacity`. +- **No third-party hosts any more.** Fonts are bundled and the Content + Security Policy no longer allows `replit.com` or Google Fonts. A proxy or + firewall rule for those hosts is no longer needed. +- Point students to the new section "Grenzen der Simulation" in the user + guide. ### Fixed @@ -21,9 +43,25 @@ All notable changes to UnoSim. Versions follow [Semantic Versioning](https://sem - **An open `INPUT_PULLUP` pin reads `HIGH`.** The simulation now models the internal pull-up resistor; before, such a pin read `LOW` as if a button were pressed. +- **The start page loads without third-party requests** (#244, #245). A + render-blocking Google Fonts stylesheet could stall the page load; Inter and + JetBrains Mono are now self-hosted, and the leftover Replit banner script is + gone. +- **Capacity calibration works on a fresh host** (#248): the generated run ID + fits the 64-character limit, and a missing client build is reported before + the backend starts. +- **Compose deployment** (#249): `capacity.env` values reach the backend + container, the runtime directories are writable for the container user, and + `storage` is excluded from the Docker build context. ### Documentation +- New user guide `docs/USER_GUIDE.md` and role-based entry points in the + README for learners, teachers, administrators, developers and course + authors (#242). +- Finished plans moved to `docs/archive/`; `docs/OPEN_POINTS.md` lists only + the open points, each verified against the code (#239, #241). +- The Ubuntu/VBox guide mentions how long the first image builds take. - The user guide lists the known differences between the simulation and a real Arduino Uno (section "Grenzen der Simulation"): `int` is 32 bits wide instead of 16, `long` and `double` are 64 bits, `Serial.print` of a float @@ -31,6 +69,14 @@ All notable changes to UnoSim. Versions follow [Semantic Versioning](https://sem returns at once instead of waiting for its timeout, and loop speed, memory size and `random()` sequences differ. Point students to that section. +### Internal + +- Findings of the SonarQube 26.9 rules and of the maintainability scan + resolved (#246, #251); no rule disabled. +- Route test servers bind to the loopback address they request, which removes + two sporadic failures under the full suite (#247). +- The redundant `vite-tsconfig-paths` plugin is removed (#250). + ## v1.0.0 – 2026-10-09 First versioned release of UnoSim. It covers everything merged since the last diff --git a/docs/INSTALL_UBUNTU_VBOX.md b/docs/INSTALL_UBUNTU_VBOX.md index 56f46e4b8..63e9c1dad 100644 --- a/docs/INSTALL_UBUNTU_VBOX.md +++ b/docs/INSTALL_UBUNTU_VBOX.md @@ -111,7 +111,10 @@ Docker zeigt beim Build viele Zwischenschritte und Paketmeldungen an; eine lange oder farbige Ausgabe ist für sich genommen kein Fehler. Entscheidend ist, ob der Build mit `ERROR` abbricht und das Skript einen Fehler meldet. Schlägt der Backend-Build mit Cache fehl, wiederholt das Skript ihn einmal automatisch -mit `--no-cache`. Nach dem Start wartet es auf Readiness sowohl am Backend als +mit `--no-cache`. Der erste Build dauert einige Minuten: In einer VBox-VM mit +Ubuntu 26.04.1 LTS auf ARM64 brauchte der Sandbox-Build etwa 34 Sekunden und +der Backend-Build etwa 130 Sekunden; Download und VM-Leistung verändern die +Dauer. Nach dem Start wartet das Skript auf Readiness sowohl am Backend als auch über Nginx, bevor es die Installation als erfolgreich meldet. ### Backend-Build nach einem Abbruch erneut ausführen diff --git a/evals/tutor-quality/human-ratings/freetutor-C-2026-10-07.md b/evals/tutor-quality/human-ratings/freetutor-C-2026-10-07.md index a7f5658c1..d52aed3b1 100644 --- a/evals/tutor-quality/human-ratings/freetutor-C-2026-10-07.md +++ b/evals/tutor-quality/human-ratings/freetutor-C-2026-10-07.md @@ -1,6 +1,6 @@ # Referenzbewertung Punkt C – Freetutor-Nachlauf (verdeckt, mit Kriterienfragen) -- Run: `tq2a-20261007T065450027Z-fb21a25c-ee3f-4904-b610-fcc168665b58` (Corpus v10, Prompt `tutor-prompts-v3`, `openai-gpt5.4-mini`, Judge `openai-gpt5.5`, 5 Samples, 46 Calls; Integrationsbranch `wip/freetutor-rerun-v10-prompts-v3`, lokal) +- Run: `tq2a-20261007T065450027Z-fb21a25c-ee3f-4904-b610-fcc168665b58` (Corpus v10, Prompt `tutor-prompts-v3`, `openai-gpt5.4-mini`, Judge `openai-gpt5.5`, 5 Samples, 46 Calls; Code-Stand: konfliktfreier Merge von `409aa581f` und `c67187071`, ehemals lokaler Integrationsbranch `wip/freetutor-rerun-v10-prompts-v3`) - **Provenienz:** Referenzbewertung durch einen LLM-Evaluator (nach Angabe der Projektleitung GPT-5.6 Sol), von der Projektleitung als Referenz freigegeben. Keine unabhängige menschliche Bewertung. - **Blindheit:** bewertet allein anhand des Bewertungsblatts, ohne Judge-Ergebnis, Run-Verdict, Quelle und Schlüssel. Keine Post-hoc-Korrektur. Regeln wie in Punkt A. - Kriterienfragen: `ja` = erfüllt, `nein` = verletzt. diff --git a/evals/tutor-quality/human-ratings/freetutor-D-2026-10-07.md b/evals/tutor-quality/human-ratings/freetutor-D-2026-10-07.md index b931739fa..eea5838e5 100644 --- a/evals/tutor-quality/human-ratings/freetutor-D-2026-10-07.md +++ b/evals/tutor-quality/human-ratings/freetutor-D-2026-10-07.md @@ -1,6 +1,6 @@ # Referenzbewertung Punkt D – Freetutor-Nachlauf nach Prompt v4 (verdeckt, mit Kriterienfragen) -- Run: `tq2a-20261007T070948306Z-e6f53e88-e561-490e-aac9-27adcf4fb102` (Corpus v11, Prompt `tutor-prompts-v4`, `openai-gpt5.4-mini`, Judge `openai-gpt5.5`, 5 Samples, 46 Calls; Integrationsbranch `wip/freetutor-rerun-v11-prompts-v4`, lokal) +- Run: `tq2a-20261007T070948306Z-e6f53e88-e561-490e-aac9-27adcf4fb102` (Corpus v11, Prompt `tutor-prompts-v4`, `openai-gpt5.4-mini`, Judge `openai-gpt5.5`, 5 Samples, 46 Calls; Code-Stand: konfliktfreier Merge von `ea412790d` und `b982a523a`, ehemals lokaler Integrationsbranch `wip/freetutor-rerun-v11-prompts-v4`) - **Provenienz:** Referenzbewertung durch einen LLM-Evaluator (nach Angabe der Projektleitung GPT-5.6 Sol), von der Projektleitung als Referenz freigegeben. Keine unabhängige menschliche Bewertung. - **Blindheit:** bewertet allein anhand des Bewertungsblatts, ohne Judge-Ergebnis, Run-Verdict, Quelle und Schlüssel. Keine Post-hoc-Korrektur. Zusätzlich beachtet: Überkompensation und Übervorsicht bei `strong-answer-progression`. Regeln wie in Punkt A. - Kriterienfragen: `ja` = erfüllt, `nein` = verletzt. diff --git a/evals/tutor-quality/human-ratings/freetutor-E-2026-10-07.md b/evals/tutor-quality/human-ratings/freetutor-E-2026-10-07.md index 61ed0d18f..b4c4ec7c9 100644 --- a/evals/tutor-quality/human-ratings/freetutor-E-2026-10-07.md +++ b/evals/tutor-quality/human-ratings/freetutor-E-2026-10-07.md @@ -1,6 +1,6 @@ # Referenzbewertung Punkt E – Klärungslauf incorrect-answer-remediation (verdeckt) -- Run: `tq2a-20261007T072914991Z-bde03457-1b9c-43f8-9c04-dcc955bfacf1` (Corpus v12, Prompt `tutor-prompts-v4`, `openai-gpt5.4-mini`, Judge `openai-gpt5.5`, 10 Samples, 31 Calls; Integrationsbranch `wip/freetutor-rerun-v12-prompts-v4`, lokal) +- Run: `tq2a-20261007T072914991Z-bde03457-1b9c-43f8-9c04-dcc955bfacf1` (Corpus v12, Prompt `tutor-prompts-v4`, `openai-gpt5.4-mini`, Judge `openai-gpt5.5`, 10 Samples, 31 Calls; Code-Stand: konfliktfreier Merge von `ea412790d` und `5c61408b1`, ehemals lokaler Integrationsbranch `wip/freetutor-rerun-v12-prompts-v4`) - **Provenienz:** Referenzbewertung durch einen LLM-Evaluator (nach Angabe der Projektleitung GPT-5.6 Sol), von der Projektleitung als Referenz freigegeben. Keine unabhängige menschliche Bewertung. - **Blindheit:** bewertet allein anhand des Bewertungsblatts, ohne Judge-Ergebnis, Run-Verdict, Quelle und Schlüssel. Keine Post-hoc-Korrektur. Regeln wie in Punkt A. - Kriterienfrage `no-solution-revealed`: `ja` = erfüllt. diff --git a/package-lock.json b/package-lock.json index efd7e552e..ac8f62ac5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "rest-express", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "rest-express", - "version": "1.0.0", + "version": "1.0.1", "license": "MIT", "dependencies": { "@fontsource-variable/inter": "5.3.0", diff --git a/package.json b/package.json index 849b5f6d4..c25d99e8b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rest-express", - "version": "1.0.0", + "version": "1.0.1", "engines": { "node": "24.20.0" },