Files
pad/web/src
xarmian 2a5b0113d8 feat(web): surface invocation_slug + arg count on library playbook cards (TASK-1399) (#528)
* feat(web): surface invocation_slug + arg count on library playbook cards (TASK-1399)

Adds the PLAN-1377 invocation surface to the playbook library UI so
users can see at a glance what makes an invokable playbook different
from a passive checklist.

- web/src/lib/types/index.ts: add LibraryPlaybookArgument type;
  extend LibraryPlaybook with optional invocation_slug + arguments
  matching the Go struct shape (T1).
- web/src/lib/api/client.ts: activatePlaybook payload now forwards
  invocation_slug + arguments into the seeded item's fields JSON
  when set, mirroring ShipPlaybook() and the CLI/MCP activate paths
  fixed in T1.
- web/src/routes/[username]/[workspace]/library/+page.svelte:
  - Playbook cards render `/pad <slug>` chip (mono, green) when
    invocation_slug is set.
  - Render `N arg{s}` badge (amber) when arguments has entries.
  - Both badges are conditional, so legacy library entries that omit
    them render unchanged.

Verified: `npm run build` clean. Cards for trigger-only playbooks
look unchanged; future invokable entries (T3-T5) will pick up the
new chips automatically.

Parent: PLAN-1397.

* fix(library): use template-literal expression for slug-chip title per Codex review (round 1)

Round 1 P1: the `title="Invoke via \`/pad {slug}\`"` form on line 218
tripped Svelte's parser because the literal backticks inside the
quoted attribute value were interpreted as template-literal
delimiters mid-attribute. `svelte-check` reported 9 errors on the
line; vite build accepted it but the type-check did not.

Fix is the form Codex suggested: pass the value as a JS expression
with a real template literal:

  title={`Invoke via /pad ${playbook.invocation_slug}`}

svelte-check now reports 0 errors on the file. The remaining warnings
in the output are pre-existing in unrelated files (NestedChildren,
ChildItems, roles, admin) and are out of scope for this PR.
2026-05-13 00:34:09 -04:00
..
2026-03-26 01:52:36 +00:00