Skip to content

refactor(dashboard): migrate small panels — overview / tools / permissions / plans / hooks#34

Merged
esengine merged 1 commit into
mainfrom
refactor/dashboard-panels-small
May 1, 2026
Merged

refactor(dashboard): migrate small panels — overview / tools / permissions / plans / hooks#34
esengine merged 1 commit into
mainfrom
refactor/dashboard-panels-small

Conversation

@esengine

@esengine esengine commented May 1, 2026

Copy link
Copy Markdown
Owner

Stage 4 PR 4.1 from #28. Five panels move out of dashboard/app.js:

  • panels/overview.ts (53 LoC) — Live Cockpit metric grid
  • panels/tools.ts (71 LoC) — registered-tools table
  • panels/permissions.ts (169 LoC) — allowlist CRUD + builtin groupings; private groupByVerb helper folded in
  • panels/plans.ts (104 LoC) — archived-plan browser + step view
  • panels/hooks.ts (105 LoC) — JSON editor for project + global hooks

Plus shared pieces these panels need:

  • components/metric-card.ts (23 LoC) — used by overview now and by system in a later PR
  • lib/html.ts (4 LoC) — single htm.bind(h) export so panels don't each rebind

dashboard/app.js loses 419 LoC. Bundle holds at ~122 KB; CDN imports stay external. No behavior change.

Closes part of #28.

…sions / plans / hooks

Stage 4 PR 4.1 from #28. Five panels move out of dashboard/app.js:

- panels/overview.ts (53 LoC) — Live Cockpit metric grid
- panels/tools.ts (71 LoC) — registered-tools table
- panels/permissions.ts (169 LoC) — allowlist CRUD + builtin
  groupings; private groupByVerb helper folded in
- panels/plans.ts (104 LoC) — archived-plan browser + step view
- panels/hooks.ts (105 LoC) — JSON editor for project + global hooks

Plus shared pieces these panels need:

- components/metric-card.ts (23 LoC) — used by overview now and
  by system in a later PR
- lib/html.ts (4 LoC) — single htm.bind(h) export so panels
  don't each rebind

dashboard/app.js loses 419 LoC. Bundle holds at ~122 KB; CDN
imports stay external. Typecheck + lint + 1682 tests still
pass. No behavior change.
@esengine esengine added the enhancement New feature or request label May 1, 2026
@esengine esengine merged commit 7ef321c into main May 1, 2026
2 checks passed
@esengine esengine deleted the refactor/dashboard-panels-small branch May 1, 2026 10:21
esengine added a commit that referenced this pull request May 11, 2026
)

The reporter showed a JSON snippet rendered as
`{ "apiKey": "..." }` inside a code fence — the
model emitted literal HTML entities instead of `"`. marked passes the
entities through verbatim (its tokens carry the raw text, not HTML-
escaped output), and our renderer rightly hands that to the terminal
unchanged. Terminals don't render entities, so they leak as visible
`"` / `&` / `<` etc.

This is a known LLM artifact: models sometimes HTML-escape inside code
blocks, especially on JSON / HTML / XML output, because their training
saw a lot of HTML-encoded code in web posts and docs. Both Claude Code
and Cursor decode entities at the rendering boundary; doing the same
here.

Scope: only code blocks and inline code spans (the contexts where
models leak entities the most). Prose paragraphs are left alone — if
someone genuinely writes "use the `&` entity to escape ampersand"
in non-code text, the entity name stays visible. Numeric forms
(`"` / `"`) and the five common named forms (quot / apos /
amp / lt / gt / nbsp) decode; unknown names pass through so we don't
corrupt prose that quotes entity names.

Closes #657
ChasLui pushed a commit to ChasLui/DeepSeek-Reasonix that referenced this pull request May 23, 2026
…sengine#658)

The reporter showed a JSON snippet rendered as
`{ "apiKey": "..." }` inside a code fence — the
model emitted literal HTML entities instead of `"`. marked passes the
entities through verbatim (its tokens carry the raw text, not HTML-
escaped output), and our renderer rightly hands that to the terminal
unchanged. Terminals don't render entities, so they leak as visible
`"` / `&` / `<` etc.

This is a known LLM artifact: models sometimes HTML-escape inside code
blocks, especially on JSON / HTML / XML output, because their training
saw a lot of HTML-encoded code in web posts and docs. Both Claude Code
and Cursor decode entities at the rendering boundary; doing the same
here.

Scope: only code blocks and inline code spans (the contexts where
models leak entities the most). Prose paragraphs are left alone — if
someone genuinely writes "use the `&` entity to escape ampersand"
in non-code text, the entity name stays visible. Numeric forms
(`&esengine#34;` / `"`) and the five common named forms (quot / apos /
amp / lt / gt / nbsp) decode; unknown names pass through so we don't
corrupt prose that quotes entity names.

Closes esengine#657
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant