components
All repositories: gitoria
6.4 KB
# Report 002: components.hybriel code order, no behaviour change**Where:** commits on main in loreana:/media/STORAGE/projects/components.hybriel.worldapi.org (parent 0994575):- `d29f35b`: file moves (1/4)- `172914a`: topic, map and thin wrappers (2/4)- `e747cfa`: `let` (3/4)- the docs + tests commit (4/4), which also holds this report and the mission briefNot 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.## Counts (before → after; `python3 tests/letcount.py .`)| | before (0994575) | after ||---|---|---|| `.hl` files in the root | 2 (project.hl, styles.hl) | **1** (project.hl) || project.hl lines | 81 | 89 (+ the 8-line map comment; it had no functions before either) || `let` total | 471 | 213 || `let` never reassigned | **255** | **0** |The 213 `let`s left are all needed:- 128 are reassigned;- 69 are in a loop body (Hybriel refuses a plain declaration there on the 2nd pass);- 3 have the name of a member or import of the file (`now` in date-picker and range-picker, `lines` in md-editor);- 13 are declared twice in one function (md-editor: `j`, `inner`, `p`, `t`, `sel`, `b`…; code-editor: `at`, `j`).`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.## Layout- **`components/styles.hl`**: was the root `styles.hl` (the site's own CSS). Its token import is now `../shared/tokens.hl`.- **`lib/uploads.hl`** (new topic file): where the showcase keeps uploaded files.- `storeUpload` (file upload demo) and `storeMdFiles` (Markdown editor demo);- `extensionOf` (the known-kinds rule, with `kinds`);- `dropOld` (the one-day expiry). Before, this loop existed twice, once in each demo.- **Demos made thin:**- `file-upload/demo.hl`: `on server saveFile(file) { return storeUpload(file) }`;- `md-editor/demo.hl`: `on server mdUpload(files) { return storeMdFiles(files) }`.- **`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.- **Public files unchanged:**- every `components/<name>/<name>.hl`, `clock.hl` and every README keep their names and paths;- 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;- 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.- **One README line:** md-editor/README.md now names `lib/uploads.hl` as where the demo keeps its files.## Tests| test | result ||---|---|| gate `tests/browser.mjs` (8750, Chrome 8751–8759) | **220 passed, 0 failed** before and after each step || 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 || same output (new `tests/same-output.mjs`) | identical (see below) |**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"):- **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.- **What it records:**- 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;- the hydrated DOM of all 9 pages;- a **file upload**: a 300 KB drop and a chosen file on `/file-upload` (the component's DOM afterwards);- 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;- the sha256 of every stored file;- the console problems.- **Masks:** `?v=` hashes, source positions, times and upload names. Two runs of the OLD tree compare clean (66/66).| step | result ||---|---|| step 1 | 66/66 the same || 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) || 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 |## Found (in STATUS)1. **The function finder must see methods.**- **What:** a name declared twice in one METHOD must keep `let`.- **Why it was missed:** letcount's / unlet's old function finder only knew lambdas and `on`/`static` handlers.- **Fixed in:** tests/letcount.py and `.scratch/m002/unlet.py`. `.scratch/m002/twice.py` (from ident) lists the cases.2. **layouts' copies were not verbatim.**- layouts.worldapi.org's copies (80ce6ba, "verbatim copies of 0994575") differed from 0994575 in 13 `let out` → `out` lines.- They now differ more: about 256 `let`s.3. **Moving a static changes only the module's tables**, not the page (as in gitoria).## Open- **Not deployed** (that is the architect's job). Use the normal `./deploy.sh`. There is no data change.- 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.- **layouts.worldapi.org** should re-copy the 8 component files (and the md-editor README) from this commit. Then its copies are verbatim again.- The gate run above shows that this copy gives 73/0.- I did not touch the layouts repo.- **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").- **Not touched:** `plugins/` (vendored Hybriel).- **Scratch** (gitignored) in `.scratch/m002/`:- `old/`, `new-*`: code-only trees;- `layouts-before/`, `layouts-after/`;- `out-*`: same-output runs (no live data; only test uploads);- `step.sh`, `unlet.py`, `twice.py`, `modcmp.py`;- `gate-*.txt`, `layouts-gate-*.txt`, `compare-*.txt`.
Branches
- mainmain branch
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