Skip to content

feat(templates): info.summary as a one-line catalog tagline - #847

Merged
angel-manuel merged 2 commits into
devfrom
feat/template-info-summary
Oct 29, 2026
Merged

angel-manuel merged 2 commits into
devfrom
feat/template-info-summary

Conversation

@angel-manuel

@angel-manuel angel-manuel commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Why

GET /v1/templates returns description, which is info.description from each template. That text is written for agents, so it is long and often a multi-line block scalar (github, email, figma, hubspot, slack, …). Overfolder's integrations catalog renders it on a tile, where it doesn't fit.

What

Templates get a short dashboard-facing tagline. description is unchanged for agents.

  • Field: the standard OpenAPI 3.1 info.summary, read directly like title/description. It is not a new x-overslash-* extension, because aliasing bare summary: would rename the spec's own field in canonical YAML and in imported third-party specs. summary is already in the lint's Info vocabulary, so a typo like sumary: is still flagged (unknown_template_key).
  • API: a new optional summary on TemplateSummary, TemplateDetail, AdminTemplateSummary, and the draft preview, with skip_serializing_if = "Option::is_none". Older clients are unaffected. It is not added to /v1/search or MCP.
  • Validation: compile emits an openapi_invalid warning at info.summary for a multi-line value or one over 80 chars (counted in chars, not bytes). It warns rather than refusing, the same way hidden/icon do, so an imported spec still loads. A non-string value warns and is dropped.
  • Derived layers: a new delta.summary relabel (inherits when absent), which gets the same warnings.
  • Content: all 26 services/*.yaml and the synthetic http service have a summary. every_shipped_template_has_a_short_summary keeps them that way.
  • Dashboard: the Create Service cards show summary ?? description, with the full description as a tooltip. Template search also matches on summary.
  • Docs: SPEC.md gets an info.summary entry and the layer relabel list now mentions summary. The template-authoring guide lives in overslash-docs and needs a matching line in a follow-up.

Contract for Overfolder

Items from GET /v1/templates gain an optional summary: string. Render summary ?? description.

Tests

  • openapi/compile/tests_summary.rs: read and trim, absent or blank → None, the multi-line warning, the 80/81-char boundary with multi-byte chars, a non-string value, and lint-clean vs. typo.
  • service_layer: a relabel overrides the base and is inherited when absent, and a multi-line delta summary warns without refusing the layer.
  • tests/templates_summary.rs: the global github summary appears on list, detail, and admin. An org template with info.summary returns it, and one without omits the key entirely.
  • Full suite: cargo nextest run --workspace → 3852 passed. Clippy, fmt, svelte-check, and the strict dashboard build also pass.

Screenshot

Create Service picker on the real e2e stack (dashboard/scripts/screenshot-template-summary.mjs). Each card now shows its one-line summary instead of the paragraph-long agent description:

Create Service picker with summaries

🤖 Generated with Claude Code

`info.description` is written for agents and runs to paragraphs, which
is too long for a catalog tile. Read the standard OpenAPI 3.1
`info.summary` as a short dashboard-facing tagline and expose it as an
optional `summary` on `/v1/templates` (list, search, detail, admin,
draft preview). It is omitted when unset, and agent-facing `/v1/search`
and MCP keep `description`.

- Compile warns (never refuses) on a multi-line value or one over 80
  chars. The same check covers a derived layer's new `delta.summary`
  relabel.
- Every shipped template, plus the synthetic `http` service, now has
  a summary. `every_shipped_template_has_a_short_summary` keeps them
  short.
- The dashboard Create Service cards show `summary ?? description`
  with the full description as a tooltip, and template search matches
  on summary too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
overslash Ready Ready Preview Oct 29, 2026 9:08am UTC

Request Review

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Code diff size

+160 / −7 across 21 files (net +153)

Area Files Added Removed Net
overslash-core 12 +118 −3 +115
overslash-api 5 +31 −0 +31
dashboard 4 +11 −4 +7

Source files under src/ only (.cjs, .go, .js, .jsx, .mjs, .py, .rs, .svelte, .ts, .tsx); test files and inline #[cfg(test)] modules excluded. 30 other changed files not counted.

…e base

Trim the relabel like info.summary, and treat whitespace-only as unset.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 29, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.79144% with 6 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
crates/overslash-api/src/routes/templates/read.rs 50.00% 5 Missing ⚠️
crates/overslash-api/src/routes/templates/mod.rs 66.66% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

@angel-manuel
angel-manuel merged commit 7b5b9ea into dev Oct 29, 2026
17 checks passed
@angel-manuel
angel-manuel deleted the feat/template-info-summary branch October 29, 2026 09:33

This branch was successfully deployed

1 active deployment
Preview — fdaa5109 Deployed Oct 29, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant