Skip to content

ECHO-1053 feat: templates by purpose, with Verify, Explore and a host script set up - #1370

Open
JorimTheuns wants to merge 8 commits into
echo-1052-verify-explorefrom
echo-1053-purpose-templates
Open

JorimTheuns wants to merge 8 commits into
echo-1052-verify-explorefrom
echo-1053-purpose-templates

Conversation

@JorimTheuns

@JorimTheuns JorimTheuns commented Nov 10, 2026 •

Copy link
Copy Markdown
Member

Stacked on #1369

ECHO-1053: templates chosen by purpose, each setting up Verify, Explore and a host script.

What changes

  • Registry v2 (platform/packages/projects/src/project-templates.ts): 16 purpose templates: resident evening, stakeholder round table, focus group (youth panels merged in), interviews, kitchen-table conversation, strategy day, working group, evaluation, ideation workshop, futures session, rotating tables (World Café), unconference (Open Space), everyone's ideas fast (1-2-4-All), calm conversation in rounds (Conversation Café), citizens' assembly (participatory budgeting merged in), conference sessions. Each sets Verify and its reminder, the topics, Explore and its mode, cross-pollination, the name box label, tags as rounds, tutorial, titles and a host guide, with a one-line rationale in code. Card metadata: verbs, setup, sectors, featured, method. The old keys stay valid, are offered nowhere, and move to version 2.
  • Create applies everything in the creating transaction, host guide included. An override equal to the template's own value is dropped. GET /v2/project-templates?language= returns the metadata and a preset summary.
  • Picker v2: the six most used first, filters by verb (the use-cases page's wording as the description) and by setup, "Show all", a polite count. "Upload recordings" and "Start blank" are quiet links. The name step has a collapsed "What this sets up".
  • The picker's strings live in their own lingui catalog (components/project/templates/locales), loaded when it opens. Workspace home lazy-loads the picker.
  • Portal editor: "What the name box asks for" (conversation_ask_for_participant_name_label, in PROJECT_UPDATE_FIELDS, max 80, blank clears). A long project context (over 2,000 characters) gets a quiet note.
  • Analytics: flow 3; project_template_selected gains verbs, setup, featured, filters_active; new project_template_filter_changed.
  • Host scripts: English and Dutch by hand, six languages model-translated, all with informal address. Where Verify and Explore are both on, the scripts say "press ECHO, then Verify".

Checks

  • 10-check-server: biome ci, typecheck, config, packages, drizzle, contract sync all pass. bun test --parallel with Postgres 16: 2560 pass, 163 skip, 1 fail. The one failure is webhooks delivery (IPv6 [::1] is not supported in this container; the package is untouched).
  • 20/21 frontend: path case, lint, tsc, check-translations --strict (0 missing), API sync, vitest 2109 pass.
  • Portal bundle: 1093761 gzip (budget 1098464; base 1093144, +617).
  • check:contrast passes. check:grammar adds no findings beyond what the base already has.
  • Playwright harness (e2e/templates-harness.spec.ts), en/nl at 1280 and 390: passes.

Continue button

I could not reproduce it as a bug. Continue turns enabled and filled the moment a card is chosen, and the harness asserts this. In the earlier screenshot it was most likely still in its disabled state (the pollen outline), with no card chosen yet. Continue now says "Choose a card to continue." until one is.

Fix round


Generated by Claude Code

JorimTheuns and others added 4 commits November 10, 2026 18:07
…and a host script set up

Registry v2: sixteen templates chosen by purpose (resident evening, round
table, focus group, interviews, kitchen-table conversation, strategy day,
working group, evaluation, ideation, futures, rotating tables, unconference,
everyone's ideas fast, calm conversation in rounds, citizens' assembly,
conference sessions). Each sets Verify and its reminder, the Verify topics,
Explore and its mode, cross-pollination, the name box and its label, tags as
rounds, the tutorial, automatic titles, and a host script that pre-fills the
host guide in the project's language (English and Dutch by hand, six
languages model-translated, informal address; scripts say "press ECHO, then
Verify" where both are on). Card metadata for the picker: verbs, setup,
sectors, featured, method.

The old keys stay valid and are offered nowhere (upload and blank are links);
versions move to 2. The list endpoint takes ?language= and returns the card
metadata and a preset summary. The create applies everything in the creating
transaction; an override equal to the template's own value is dropped, and
overrides follow the grown preset fields (brainstorm, a custom prompt).

The name box label joins the project PATCH, capped at 80 characters; blank
clears it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKdjPZBaxnCMragWmqzZTL
The picker shows the six most used templates first, with filters by what
you need to do (the five verbs of the use-cases page, its wording as the
description) and by how it is recorded, and "Show all". Cards are a radio
group; the filters are toggle buttons with their pressed state; the count is
announced politely. Each card: icon, name, "Great for ...", two or three
facts from the preset, quiet labels for verb, setup and a named format.
"Upload recordings" and "Start blank" are quiet links under the cards.

The name step says what the template sets up, collapsed, with the host
script's title. Workspace home loads the picker only when it shows. The
picker's words live in their own catalog, loaded when it opens, so the
portal's first load does not grow.

Portal editor: what the name box asks for, next to "Ask for name?". A long
project context gets a quiet note. Analytics: flow 3, the template's verbs,
setup, featured and the filters on, and each filter change. Continue says
why it waits until a card is chosen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKdjPZBaxnCMragWmqzZTL
New catalog src/components/project/templates/locales, loaded when the picker
opens. Strings the picker already had keep their translations; Dutch is
written by hand ("Bewonersavond", "Keukentafelgesprek", "Heidag",
"Werkgroep"); German, French, Spanish, Italian, Ukrainian and Czech are
model-translated with informal address and listed in each catalog's
machine-translations.json. The editor's label field, the long-context note
and the Continue hint join the main catalog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKdjPZBaxnCMragWmqzZTL
@JorimTheuns JorimTheuns added the journey label Nov 10, 2026 — with Claude
@linear

linear Bot commented Nov 10, 2026

Copy link
Copy Markdown

ECHO-1053

@JorimTheuns
JorimTheuns force-pushed the echo-1052-verify-explore branch from 3faa975 to d1b8836 Compare November 10, 2026 17:35
@JorimTheuns
JorimTheuns force-pushed the echo-1053-purpose-templates branch from 5fece88 to 351e330 Compare November 10, 2026 17:35
JorimTheuns and others added 4 commits November 10, 2026 19:12
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKdjPZBaxnCMragWmqzZTL

# Conflicts:
#	dembrane/frontend/src/locales/cs-CZ.ts
#	dembrane/frontend/src/locales/de-DE.ts
#	dembrane/frontend/src/locales/en-US.ts
#	dembrane/frontend/src/locales/es-ES.ts
#	dembrane/frontend/src/locales/fr-FR.ts
#	dembrane/frontend/src/locales/it-IT.ts
#	dembrane/frontend/src/locales/nl-NL.ts
#	dembrane/frontend/src/locales/uk-UA.ts
A host's own label (a table, a meeting, an interview code) gets no example, so nothing
invites a person's name; the default "Session name" gets a neutral one, "Group 1,
Table 3, etc.", in eight languages (model-written, in the ledger).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKdjPZBaxnCMragWmqzZTL
Walks every template's host script in every language: ECHO only with Verify and Explore
both on, and then before either choice; Verify or Explore alone only when that one is on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKdjPZBaxnCMragWmqzZTL
…and without a label

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKdjPZBaxnCMragWmqzZTL

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant