Repository navigation
Tags: uneidel/kaim56
Tags
Apps tab: Cloudflare link in a new tab; voice client 1.1.1 names a re… …jected login Apps tab: the worker's address under each app is now a link (new tab, noopener, shortened, with an arrow) — before it was plain text; it stays after a restore, the worker is still deployed. Voice client 1.1.1: since the manager has a password, a client with the old 'pass' got bare 'HTTP 401 from /api/stt' errors — and, over iroh, its wrong logins also locked the phone app out (every iroh client arrives through the same gateway address; ten failures = 15 min lockout). statusError() now says what to fix (user/pass in ~/.config/kaim56-voice.json, restart) and names the lockout as such; a test pins the messages.
Core War app: two models fight in Redcode and rewrite their warriors … …mid-round apps/corewar: the MARS page (ICWS'88) as an app. Every N cycles (default 500) the round pauses and each warrior with a model gets an ephemeral task (the existing /api/tasks, model + max_steps) with the rules, the state, the full core matrix (80x100, own/opponent cells and processes), the code at the processes and its program; the answer (German reason + Redcode) is written into the core at the warrior's loading address while its processes keep running (marsPatch), and becomes its program for later rounds. At most 10 adaptations per player and round. Changes tab: every adaptation with round, cycle, model, duration, reason, diff and the raw answer; Rules tab: the exact text every task carries. No manager code, no new instances. Tests: coach.js (rules, matrix, task text, answer parser, diff, task id) and the engine's mid-round patch — tests/run-tests.sh.
app 5.43: Notifications screen Drawer → Notifications lists the manager's notifications (newest first, unread emphasised, title, body, instance, time). Tapping an entry follows its link exactly like a tapped system notification — the navigation is now one function navTo(link) shared by both paths. Opening the screen marks everything read on the manager and advances the app's watermark, so nothing seen here rings again. Before, a swiped-away system notification was gone for good on the phone.
app 5.42: notifications reach the phone while the app is closed The notification poll lived in the chat screen's composition and showed only entries newer than the app start: closed app = nobody asked the manager, and on the next start everything from before was skipped. The daily job digest at 07:00 never rang. NotifSync.kt: one watermark in the prefs (newest entry already shown, notifLastTs) shared by the in-app long-poll and a new WorkManager periodic worker (15 min, network required, no foreground icon). At app start the backlog is shown at once; on the very first run only the last 24 h so an old backlog does not flood the shade; read entries advance the watermark without being shown. pick() is pure and unit-tested (3 tests). Dependency androidx.work:work-runtime-ktx 2.9.1.
voice-client 1.1.0: self-update from GitHub Releases + release pipeline update.go: at start (at most every 6 h, or now with --update) the newest voice-v* release with the asset kaim56-voice-<os>-<arch> is looked up; a newer one is downloaded next to the running binary as <exe>.new, checked against the asset size, renamed over the binary and the process re-executes itself with the same arguments. "auto_update": false switches it off, the tray menu gets "Check for update" (stops the tunnel child before the re-exec so the new process can bind the port), --version prints the version. .github/workflows/voice.yml: like apk.yml — push to main with a version in version.go that has no voice-v<version> tag yet builds the tunnel (cargo), vets/tests/builds the client with the tunnel embedded and publishes the release; the section '## <version>' of voice-client/RELEASE_NOTES.md is the mandatory release body; v* platform tags get the binary attached too. Tests: version compare, release selection (asset per platform, drafts and the old platform assets ignored), atomic replace with a size check that leaves the old binary intact on a short download, the 6-h stamp, and the up-to-date path against an httptest server.
PreviousNext