Skip to content

T-UQCN-suspenders-skill-body-viewer

State: closed/done · Impact: medium · Complexity: small

The suspenders skill detail panel shows the skill body as a raw <pre>. This task renders the body through MdViewer in both hosts (SDF and the standalone product) while the frontmatter stays a YAML <pre>.

LocationRole today
solutions/ontological/experiences/suspenders/app/components/SkillDetailPanel.vueTwo body <pre> blocks (managed.body, unmanaged.body) and one frontmatter <pre>
solutions/ontological/experiences/suspenders/app/types/skill.tsManagedDetail, SkillDetail with string bodies
solutions/ontological/experiences/suspenders/package.jsonDepends on nuxt and vue only
solutions/ontological/experiences/suspenders/nuxt.config.tsEmpty layer config
solutions/ontological/experiences/suspenders/tests/roster.test.tsUnit tests for roster utilities
solutions/ontological/products/suspenders/nuxt.config.tsExtends @sksizer/app-frame, @sdlc/exp-suspenders, @determined/ui
solutions/ontological/products/suspenders/package.jsonStandalone product dependencies
solutions/ontological/desktop/src-nuxt/nuxt.config.tsSDF host; extends @sdlc/exp-suspenders; gains @sksizer/markdown-ui in T-I4V6-sdf-entity-body-viewer

SkillDetailPanel.vue renders managed.body and unmanaged.body with <MdViewer :source="..." />; the frontmatter <pre> is unchanged. The experience declares @sksizer/markdown-ui (workspace:*) for types and auto-import resolution; products/suspenders adds the layer to extends and its package.json; SDF inherits the layer from T-I4V6-sdf-entity-body-viewer.

  1. experiences/suspenders/package.json: add @sksizer/markdown-ui (workspace:*); nuxt.config.ts: extends: ['@sksizer/markdown-ui'].
  2. products/suspenders/package.json and nuxt.config.ts: declare and extend the layer between @sksizer/app-frame and @sdlc/exp-suspenders.
  3. SkillDetailPanel.vue: swap the two body <pre> elements for MdViewer; keep the frontmatter <pre>.
  4. Root bun install; bun install --frozen-lockfile.
  5. Verify: bun test tests in the experience; bun run build in products/suspenders; moon run sdf:check; open a managed skill with a fence and a table in both hosts, light and dark; moon run :check :test --affected.
LocationKindChange
solutions/ontological/experiences/suspenders/package.jsonmodifyAdd @sksizer/markdown-ui
solutions/ontological/experiences/suspenders/nuxt.config.tsmodifyExtend the layer
solutions/ontological/experiences/suspenders/app/components/SkillDetailPanel.vuemodifyBody <pre> blocks become MdViewer
solutions/ontological/products/suspenders/package.jsonmodifyAdd @sksizer/markdown-ui
solutions/ontological/products/suspenders/nuxt.config.tsmodifyExtend the layer
bun.lockmodifyRoot lockfile regen
  • AC-1: SkillDetailPanel.vue has no <pre> bound to managed.body or unmanaged.body and mounts MdViewer twice; the frontmatter <pre> remains.
  • AC-2: bun run build in solutions/ontological/products/suspenders and moon run sdf:check pass.
  • AC-3: Light and dark screenshots of a skill body with a fence and a table, from both hosts, are attached to the PR.
  • AC-4: bun install --frozen-lockfile passes at the root.

Member of milestone M-931L; wave 2b of D-K3EM-markdown-editor-chrome-and-plugin-environment.

T-I4V6-sdf-entity-body-viewer


← Back to Tasks