mordaunt.dev/code

code / jm / log

jm log

100 commits, newest first

  1. 2026-09-28b824de3examples/material-kitchen: show every ui/material component by state
  2. 2026-09-28412ce06ui/material: add Material 3 Expressive on jm:ui
  3. 2026-09-288070edbtools/material-shapes: generate the loading indicator's morphs as Odin
  4. 2026-09-28eca7532tools/material-tokens: generate M3 Expressive tokens as Odin
  5. 2026-09-28fea7b4fui: give pointer events their travel since the last one
  6. 2026-09-289cd2e39ui: let scroll_box lay content out wider than itself and scroll sideways
  7. 2026-09-28504dc06ui: add Spring, and four spring slots per widget
  8. 2026-09-2817b7e82ui: bump the ops wire version for Defer, and say why a child stops
  9. 2026-09-28336b388ui: add Defer and overlay, a layer drawn above the frame
  10. 2026-09-281db3bc0ui: export the helpers a widget package outside ui needs
  11. 2026-09-28be5ac80ui: add scroll_box, a box paint hook, and negative padding
  12. 2026-09-28c72fd60tools/hot-watch: link Blend2D children on unix, watch extra dirs
  13. 2026-09-288998e5fui/sdl: stop the hot-reload host crashing and killing its own group
  14. 2026-09-2745e85a2ui: port Material 3's button family onto jm:ui
  15. 2026-09-27777c339ui: three ways to make jm:ui cheaper for an agent to iterate on
  16. 2026-09-27c3c94e0ui: hot reload for real — respawn on rebuild, and a live demo
  17. 2026-09-2726965b6selfupdate: write byte caps with core:mem units
  18. 2026-09-2773f6fe4selfupdate: add the fixed-capacity writer the rewrite relies on
  19. 2026-09-272672fa5selfupdate: allocate nothing from the caller's context
  20. 2026-09-270c2106chttp: stream every transfer to an io.Writer
  21. 2026-09-275590bb9ui: split the host from the ui proc — the subprocess hot-reload split
  22. 2026-09-27d3da895selfupdate: take any base path, not a GitHub repository
  23. 2026-09-2760c7700selfupdate: update a distributed binary from a signed release
  24. 2026-09-2741f3a74ui: promote diagram kit, Tween and a shared test helper out of the example
  25. 2026-09-27f289589ui: harden custom-widget primitives against another dogfood pass
  26. 2026-09-27abab36fui/sdl: leave window moves alone and grow buffers once per resize
  27. 2026-09-270683636ui/render: hash a tile a solid fill covers by the fill's color
  28. 2026-09-278bea357ui/render: scroll only content whose whole clip chain is rects
  29. 2026-09-27a9a7b53ui/sdl: hold each resize frame until the compositor shows it
  30. 2026-09-2741fa5caui/render: repaint only what changed when a target is resized in place
  31. 2026-09-272cbbc20ui/sdl: turn vsync off while a resize is in progress
  32. 2026-09-27c13ba5bui/sdl: keep drawing while the window is being resized
  33. 2026-09-27059eb50ui: ask for one more frame after handling input
  34. 2026-09-27ddb5eb0ui/render/fuzz: fuzz the compositor against whole renders
  35. 2026-09-27010cf69ui/render: run the scroll sequence test on a fixed sequence
  36. 2026-09-27b250da2ui/render: let unmoved content vote in scroll detection
  37. 2026-09-27c61c8feui/render: never hand the crew overlapping rects
  38. 2026-09-273e1b6eeui/render: bound a draw by the pixels its clip can reach
  39. 2026-09-2760b22abui/render: hash which run a masked draw is in, per tile
  40. 2026-09-275d34fd0ui/render: group a band's draws the way the whole frame groups them
  41. 2026-09-27c2770eeui/render: say a crew's allocator must be thread-safe
  42. 2026-09-26794c3b4ui/sdl: wait for input or a requested frame instead of every refresh
  43. 2026-09-2621b8acaexamples/ui-kitchen: ask for frames only while the badge turns
  44. 2026-09-26e050a89ui: let the ui ask the host for its next frame
  45. 2026-09-26211b66bui/sdl: move scrolled pixels on the GPU instead of uploading them
  46. 2026-09-267efa786ui/render: cut thin bands so the crew shares a scroll's strip
  47. 2026-09-267a81537ui/render: hand out per-draw work in chunks of 256 draws
  48. 2026-09-268bfadf2ui/render: share scroll detection's per-draw work with the crew
  49. 2026-09-26cda90a7ui/render: move a large scroll's pixels on the whole crew
  50. 2026-09-2624c3a06ui/render: draw a clip's interior without its mask
  51. 2026-09-2680c8129tools/ui-bench: add -compose to time partial repaints
  52. 2026-09-26db36b48ui/sdl: compose frames and upload only changed rects
  53. 2026-09-268da7fbfui/render: repaint damaged bands on a worker crew
  54. 2026-09-269b01bddui/render: track which tiles a frame changed
  55. 2026-09-260d719eaui/render: paint runs of draws sharing a clip through one mask
  56. 2026-09-26cb900fbtools/ui-bench: add -sweep to find how much content fits a frame
  57. 2026-09-26d267979ui/sdl: free the temp allocator every frame
  58. 2026-09-26f324a4cui/sdl: render on Blend2D workers when App.threads is set
  59. 2026-09-2640b052bui/sdl: render into a CPU-side image, not the locked texture
  60. 2026-09-26ab46d42build: build Blend2D and the kitchen demo on Windows
  61. 2026-09-2689217a8sh: make the spooled stdin inheritable on Windows
  62. 2026-09-25cbc7d99ui: (wip) benchmark multithreaded rendering
  63. 2026-09-254c60e63tools/ui-bench: time layout and the Blend2D executor per frame
  64. 2026-09-25de38a3epq: document the dynamic link and how tests find a server
  65. 2026-09-250024b52examples: add the jm:ui kitchen demo and the recipes that build it
  66. 2026-09-251c2690cpq: fuzz the bindings against the properties they promise
  67. 2026-09-2522eeeeeui: lay out with constraints down and dims up, style from a theme, add the widgets
  68. 2026-09-25becf5a8pq: bind the system libpq
  69. 2026-09-25f4cade2ui: give the probe a layout of its own
  70. 2026-09-254b04695ui/render, ui/sdl: execute a frame on Blend2D and open an SDL3 window
  71. 2026-09-25c3ac74bui: route input against the previous frame and drive frames headlessly
  72. 2026-09-25e263896ui: flatten scene ops into a frame, dump them as text, encode them for the wire
  73. 2026-09-251b7325cui: add the raw device event and the layout hook to the contract
  74. 2026-09-25453d966ui: lay down the immediate-mode contract and vendor the Blend2D binding
  75. 2026-09-259f5a494pg_query: document the parser and what fuzzing it found
  76. 2026-09-25b6d4df0pg_query: fuzz the bindings against the properties they promise
  77. 2026-09-2572e80d3pg_query: bind libpg_query over the vendored parser
  78. 2026-09-25cfd3481wasm: time the bindings, and the engines they could have been
  79. 2026-09-253461166wasm: fuzz the bindings against the properties they promise
  80. 2026-09-25048659bwasm: bind wasm3 over the vendored interpreter
  81. 2026-09-2581e911bfuzz: run each case in a child process when asked
  82. 2026-09-25541387atar: compare the size field by subtraction, not by adding to it
  83. 2026-09-24c18f14ffuzz: move the sqlite3 suite onto jm:fuzz and add a tar one
  84. 2026-09-2412b3453fuzz: add a property fuzzer that shrinks what it finds
  85. 2026-09-24d2f70a1tar: refuse a size field and a pax record that slice backwards
  86. 2026-09-2459ff9c1sqlite3: fuzz the bindings against the properties they promise
  87. 2026-09-24924a2d9sqlite3: bind SQLite over the vendored amalgamation
  88. 2026-09-24190a339sqlite3: vendor the SQLite 3.53.4 amalgamation
  89. 2026-09-2472ed703jm: rename the collection from jfm to jm
  90. 2026-09-23f4d4f24examples: add a script that touches every package
  91. 2026-09-238daab04odin-run: compile a script once and run the cached binary after that
  92. 2026-09-23710fb57tar: read git archive output without a tar program
  93. 2026-09-2308b3ecbflow: add the worker-pool package from sonar
  94. 2026-09-2384ba231http: add a small client over vendor:curl
  95. 2026-09-233636dc0timefmt: format and parse times with strftime directives
  96. 2026-09-239e2ca18path: add the file-system vocabulary a script reaches for
  97. 2026-09-2312abde4sh: run external commands through the shell or by argv
  98. 2026-09-232300ca1prelude: give scripts init, must, die and a log file
  99. 2026-09-235a3b383debug: add the guard-byte allocator copied from sonar
  100. 2026-09-2395faf8ereadme, justfile: shape the jfm collection for Odin scripts