gitoriaLog in with ident

components

All repositories: gitoria

ReadmeCodePull requestsReleasesTicketsSettings
Commit3bc905c53bc905c5components #15 (mission 003) 2/2: docs (README Look, STATUS, LOG), reportmre3bc905c5/reports/002-code-order.md

6.4 KB

  1. # Report 002: components.hybriel code order, no behaviour change
  2. **Where:** commits on main in loreana:/media/STORAGE/projects/components.hybriel.worldapi.org (parent 0994575):
  3. - `d29f35b`: file moves (1/4)
  4. - `172914a`: topic, map and thin wrappers (2/4)
  5. - `e747cfa`: `let` (3/4)
  6. - the docs + tests commit (4/4), which also holds this report and the mission brief
  7. Not pushed, not deployed. No `.env` read (the copies used for the runs exclude `.env*`). Only ports 8750–8759 were used. Every server and Chrome was stopped by its PID; 8750–8759 are free.
  8. ## Counts (before → after; `python3 tests/letcount.py .`)
  9. | | before (0994575) | after |
  10. |---|---|---|
  11. | `.hl` files in the root | 2 (project.hl, styles.hl) | **1** (project.hl) |
  12. | project.hl lines | 81 | 89 (+ the 8-line map comment; it had no functions before either) |
  13. | `let` total | 471 | 213 |
  14. | `let` never reassigned | **255** | **0** |
  15. The 213 `let`s left are all needed:
  16. - 128 are reassigned;
  17. - 69 are in a loop body (Hybriel refuses a plain declaration there on the 2nd pass);
  18. - 3 have the name of a member or import of the file (`now` in date-picker and range-picker, `lines` in md-editor);
  19. - 13 are declared twice in one function (md-editor: `j`, `inner`, `p`, `t`, `sel`, `b`…; code-editor: `at`, `j`).
  20. `tests/letcount.py` (from ident) now scans `components/` recursively, because there is one folder per component. Its "twice" check now also finds methods such as `name(args) {`. Before, it only found lambdas and `on`/`static` handlers. With the old check, 6 real twice-cases (md-editor `p`, `j`, `inner`) would have been dropped.
  21. ## Layout
  22. - **`components/styles.hl`**: was the root `styles.hl` (the site's own CSS). Its token import is now `../shared/tokens.hl`.
  23. - **`lib/uploads.hl`** (new topic file): where the showcase keeps uploaded files.
  24. - `storeUpload` (file upload demo) and `storeMdFiles` (Markdown editor demo);
  25. - `extensionOf` (the known-kinds rule, with `kinds`);
  26. - `dropOld` (the one-day expiry). Before, this loop existed twice, once in each demo.
  27. - **Demos made thin:**
  28. - `file-upload/demo.hl`: `on server saveFile(file) { return storeUpload(file) }`;
  29. - `md-editor/demo.hl`: `on server mdUpload(files) { return storeMdFiles(files) }`.
  30. - **`project.hl`**: the head comment is now the map (which file handles what). It held no functions before and holds none now. The `env` ternaries are config and stay.
  31. - **Public files unchanged:**
  32. - every `components/<name>/<name>.hl`, `clock.hl` and every README keep their names and paths;
  33. - their only change is the dropped `let`s. A check of `git diff -U0` for step 3: 256 changed lines, each differs only by `let ` removed;
  34. - so no element, class or selector that layouts' `theme/theme.hl` targets (`html code-editor`, `date-picker`, `file-upload`, `md-editor`, `modal-dialog`, `month-view`, `pagination`, `range-picker`) changed.
  35. - **One README line:** md-editor/README.md now names `lib/uploads.hl` as where the demo keeps its files.
  36. ## Tests
  37. | test | result |
  38. |---|---|
  39. | gate `tests/browser.mjs` (8750, Chrome 8751–8759) | **220 passed, 0 failed** before and after each step |
  40. | layouts.worldapi.org gate (code-only copy, run after mine, not in parallel) | **73/0** before; **73/0** with the changed component files copied in; `check-theme` 0 problems both times |
  41. | same output (new `tests/same-output.mjs`) | identical (see below) |
  42. **Same-output run** (`tests/same-output.mjs` + `tests/same-output-compare.py` + `tests/same-output-modules.py`; the commands are in README "Run, test, deploy" → "Same output"):
  43. - **What it runs:** each tree runs from a code-only copy (no `.env`, its own `storage/`), with the server on 8750 and Chrome on 8751–8759.
  44. - **What it records:**
  45. - every HTTP answer: the 9 pages, the 8 READMEs, the icons, `/favicon.ico`, `app.css`, the manifest, `sw.js`, every browser module and runtime file a page loads, and two 404s;
  46. - the hydrated DOM of all 9 pages;
  47. - a **file upload**: a 300 KB drop and a chosen file on `/file-upload` (the component's DOM afterwards);
  48. - a **md-editor drop**: a png plus a `run.exe` (stored as `.bin`), the demo's DOM, and the stored png served back with its headers;
  49. - the sha256 of every stored file;
  50. - the console problems.
  51. - **Masks:** `?v=` hashes, source positions, times and upload names. Two runs of the OLD tree compare clean (66/66).
  52. | step | result |
  53. |---|---|
  54. | step 1 | 66/66 the same |
  55. | step 2 | pages, DOMs, uploads and stored files the same. 3 answers differ: the two demo modules (only their imported-statics tables, source positions, and md-editor demo's `kinds` member, which moved to lib and was never used in the browser) and the md-editor README (the intended edit) |
  56. | step 3 | pages, DOMs, uploads and stored files the same. The 11 browser modules differ **only** in the declaration keyword: `var`/`let` → `const`, 256 in total, checked by replacing the keyword and comparing |
  57. ## Found (in STATUS)
  58. 1. **The function finder must see methods.**
  59. - **What:** a name declared twice in one METHOD must keep `let`.
  60. - **Why it was missed:** letcount's / unlet's old function finder only knew lambdas and `on`/`static` handlers.
  61. - **Fixed in:** tests/letcount.py and `.scratch/m002/unlet.py`. `.scratch/m002/twice.py` (from ident) lists the cases.
  62. 2. **layouts' copies were not verbatim.**
  63. - layouts.worldapi.org's copies (80ce6ba, "verbatim copies of 0994575") differed from 0994575 in 13 `let out` → `out` lines.
  64. - They now differ more: about 256 `let`s.
  65. 3. **Moving a static changes only the module's tables**, not the page (as in gitoria).
  66. ## Open
  67. - **Not deployed** (that is the architect's job). Use the normal `./deploy.sh`. There is no data change.
  68. - deploy.sh's rsync does not delete, so the old root `styles.hl` stays on Byrodin. It is unused; delete it by hand after the deploy.
  69. - **layouts.worldapi.org** should re-copy the 8 component files (and the md-editor README) from this commit. Then its copies are verbatim again.
  70. - The gate run above shows that this copy gives 73/0.
  71. - I did not touch the layouts repo.
  72. - **Long files left as they are:** md-editor.hl (1007 lines) and code-editor.hl (384 lines). They are public component files, single-file by design ("ONE file, own Style").
  73. - **Not touched:** `plugins/` (vendored Hybriel).
  74. - **Scratch** (gitignored) in `.scratch/m002/`:
  75. - `old/`, `new-*`: code-only trees;
  76. - `layouts-before/`, `layouts-after/`;
  77. - `out-*`: same-output runs (no live data; only test uploads);
  78. - `step.sh`, `unlet.py`, `twice.py`, `modcmp.py`;
  79. - `gate-*.txt`, `layouts-gate-*.txt`, `compare-*.txt`.

Branches

Latest commits

  • 3bc905c5components #15 (mission 003) 2/2: docs (README Look, STATUS, LOG), reportmre
  • 5a98d77ecomponents #15 (mission 003) 1/2: black/white base look — greys for nuances, no WorldAPI fallbacks, no decorative frames; site + icon black/white; gate 230/0mre
  • 3f93d716components code order (mission 002) 4/4: docs, tests/letcount.py, tests/same-output*, reportmre
  • e747cfa0components code order (mission 002) 3/4: let only where reassigned (257 dropped, 0 never-reassigned left); gate 220/0, layouts gate 73/0, same outputmre
  • 172914a3components code order (mission 002) 2/4: lib/uploads.hl (demo upload storage), thin demo handlers, project.hl map; gate 220/0, same outputmre
  • d29f35b1components code order (mission 002) 1/4: styles.hl -> components/styles.hl; gate 220/0, same outputmre
  • 09945750components: Hybriel master 06617221 (plugin allocators 3a781359 + 413f60e4, http1 773de63e); gate 220/0mre
  • ede4d19acomponents: Hybriel master 190aa11d (fc838894 GC correctness, #126 closure scopes, #127); gate 220/0mre
  • 2bb9a935components: Hybriel master 8efba065 (re-vendor round 069: #126 memory, #48 lambda copy)mre
  • e4f01768antcolony#40: mission references point to the moved missionsmre
  • d32b44e2antcolony#40: history (LOG.md), worker briefs (missions/) and reports moved here from antcolony, numbered per project; old numbers in antcolony docs/mission-map.mdmre
  • 0fb80b57components: Hybriel master ff51cf46 (re-vendor round)mre
  • 57408b6ecomponents#14: installable app (manifest, service worker, offline index), own iconmre
  • 317bd09fdeploy.sh: back up live storage/.sessions/.env before every deploy (newest 5 kept)mre
  • becbd59bcomponents#13: modal dialog (<dialog> based, focus wrap, backdrop/Esc/x close with reason, scroll lock, footer buttons)mre
  • 367dd19adeploy.sh: never send .git or .gitignore to Byrodinmre
  • 4b4dabe5State of 2026-09-27, before the move to gitoriamre