Conversation
Signed-off-by: Juan Antonio Osorio <ozz@stacklok.com>
Co-authored-by: Mecatl <noreply@mecatl.dev> Signed-off-by: Juan Antonio Osorio <ozz@stacklok.com>
Co-authored-by: Mecatl <noreply@mecatl.dev> Signed-off-by: Juan Antonio Osorio <ozz@stacklok.com>
Co-authored-by: Mecatl <noreply@mecatl.dev> Signed-off-by: Juan Antonio Osorio <ozz@stacklok.com>
Co-authored-by: Mecatl <noreply@mecatl.dev> Signed-off-by: Juan Antonio Osorio <ozz@stacklok.com>
Co-authored-by: Mecatl <noreply@mecatl.dev> Signed-off-by: Juan Antonio Osorio <ozz@stacklok.com>
Co-authored-by: Mecatl <noreply@mecatl.dev> Signed-off-by: Juan Antonio Osorio <ozz@stacklok.com>
|
Review record (autonomous approximation, not /code-review): initial spec/standards/UX/adversarial rounds fixed HTML check recovery, directed/parallel relationships, self-relationship display, and external incoming details. Subsequent geometry and interaction rounds addressed label placement, draggable layouts, highlight state, and model-wide tabs. For the final panel-integrated collapse change, UX review found the collapsed rail clipped its keyboard-focus outline; an inset outline and width correction fixed it, with structural/contrast tests. Final UX re-review: no remaining blocker. Current validation: 30 Node harness tests pass; task check passes Go lint/vet/race tests, model lint, and render checks, but validate-plugin is blocked by missing claude. Browser-native layout/accessibility smoke and completed independent security review remain gaps, documented in the PR description. |
Summary
Add
modelith render --format htmlas an offline, self-contained interactive viewer while keeping Markdown the default.--stdout,--out, and--checkworkflows and format completion; update CLI docs and ADR-0020.Model content is encoded with Go's default HTML-safe JSON escaping and rendered through DOM text APIs. Schema and model structs are unchanged. The HTML golden lives in package testdata rather than examples to avoid adding a large generated output to the example workflow; Go tests check it byte-for-byte.
Validation
node --test internal/render/html/viewer_test.cjs: 30 passing tests.task check: vet, staticcheck, golangci-lint, race-enabled Go tests, strict example lint, and Markdown render checks pass. The finalvalidate-pluginstep is blocked becauseclaudeis not installed; no gate was bypassed.git diff --checkpass.Review and limitations
Independent agent review/fix rounds covered correctness, standards, geometry, interaction state, and UX. These were approximations, not
/code-review. The final UX pass found no remaining blocker after fixing the collapsed rail's clipped keyboard-focus indicator.The Node harness mocks DOM/geometry; real-browser layout and accessibility smoke testing remains outstanding. The initial independent security-agent review did not complete; lead inspection and escaping/hostile-content regression tests cover the encoding path, but are not represented as an independent security sign-off.