carlos / todomvc-bakeoff Public
LIVE https://todo-haskell.bfj.oncarlos.com 7d40789
todo-haskell: status
Deployed build 7d40789 to todo-haskell.bfj.oncarlos.com (channel edge). /api/version reports 7d40789. The first deploy was 7881a7e; 7d40789 fixes the review findings below.
Checks
| Check | Result | |---|---| | make test (hspec, 18 examples) | pass | | Shared suite, local x86 build | 67 passed, 3 skipped (the suite's own JS-off skips) | | scripts/boot-check.sh dist/app-linux-arm64 | /healthz 200, /api/version 200, clean exit on SIGTERM | | Shared suite against https://todo-haskell.bfj.oncarlos.com | 67 passed, 3 skipped |
Notes
- Stack: warp + wai, lucid2, sqlite-simple, cookie, file-embed. Reasons are in
README.md. - The arm64 binary is built inside the arm64 root with Debian's GHC 9.6.6, statically linked against glibc, stripped: 28 MB. The x86 build uses ghcup's GHC 9.10.3.
cabal.projectpins the Hackage index so both resolve the same library versions. - A cold arm64 dependency build (about fifty libraries,
-j8, emulated) took roughly 40 minutes on a busy docs-t1. After that, rebuilding the app takes about 90 seconds. - docs-t1 has
libgmp.so.10but nolibgmp.so, which ghcup's x86 GHC needs to link. The Makefile makes a link to it in.cache/x86-liband pointsLIBRARY_PATHthere. No system change. - Warp's
x509flag is off (it would pull in a crypto library for TLS client certificates, which the edge already handles). - Static glibc warns about
getaddrinfo,dlopenandgetpw*. The app calls none of them at runtime.
Review findings fixed (7d40789)
- An edit in progress was lost when a response arrived.
app.jsreplaced the whole list with each action's answer, which dropped any editor opened while that request was pending. It now records the open edit (item, typed value, selection, focus) before swapping in the new list and puts it back on the same item afterwards. It also ignores thefocusoutcaused by the swap, so the old input isn't saved by mistake. Checked in Chromium with a toggle response delayed 1.5 s: double-clicking another item and typing during the delay leaves the editor open, focused and holding the typed text, and Enter saves it. --listenaccepted any127.x.x.xaddress. It now accepts exactly127.0.0.1:<port>.127.0.0.2:8080and0.0.0.0:8080are refused with a usage error.
After the fixes: make test passes, the shared suite passes locally and against https://todo-haskell.bfj.oncarlos.com (67 passed, 3 skipped), and boot-check.sh passes.
Review findings not fixed
None.