You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A first-time visitor lands on a long form with no explanation of what publiccode.yml
is for, how the left panel relates to the YAML on the right, or where to start. Add an
onboarding tutorial that runs on first launch and walks the user through using the form.
Shown once, on first launch — not on every visit.
Two things the requirement does not say, but that the feature needs to be usable:
A way to dismiss it. Someone who already knows the tool should be able to leave
the tutorial immediately, at any step.
A way to bring it back. Once "first launch" has passed it never returns, so a user
who dismissed it by reflex has no path back. It should be reachable again from the UI
— the settings panel is the natural place.
Worth being explicit about what "first launch" can mean here: the editor is a static SPA
with no accounts, so the only place to record it is browser storage. The tutorial will
reappear in a private window, on another device, or after the user clears site data.
That is acceptable, but it should be a deliberate choice rather than a surprise.
Affected areas
src/app/App.tsx — the root component, where the tutorial would mount over the
two-panel layout.
src/app/lib/store.ts — a new persisted flag, following the existing pattern of useITCountrySpecific (Zustand persist with partialize, its own storage name).
src/app/components/Editor.tsx and the Editor*.tsx field components — whatever the
tutorial points at needs stable anchors.
src/app/components/SettingsPanel.tsx — entry point for replaying the tutorial.
src/app/lib/utils.ts — useIsMobile, since the mobile layout stacks the panels and
the tour has to make sense there too.
src/i18n/locales/*.json — tutorial copy.
Non-functional constraints
RNF-PCE-004 — Standards and compliance: an overlay tour is a well-known
accessibility trap. It must be operable by keyboard alone, trap and restore focus
correctly, be dismissible with Escape, and announce step changes to assistive
technology. This has to hold jointly with Reach WCAG 2.2 AA and EN 301549 conformance #646 — a tutorial that breaks keyboard
navigation would undo that work.
RNF-PCE-006 — Long-term sustainability: tutorial content describes a form that
will change, in particular through Export publiccode.yml directly to a code repository #653 and the redesign of field grouping. It needs
to be maintainable — copy in the locale files, anchors that fail loudly when the
element they point at is gone, rather than a tour that silently drifts out of date.
Acceptance criteria
On first launch the tutorial is shown, explaining how to fill in the form and how
the YAML preview relates to it
It is not shown again on subsequent visits
It can be dismissed at any step
It can be replayed from the UI after being dismissed or completed
Fully operable by keyboard: focus is trapped while open, restored on close, Escape
dismisses
Step changes are announced to screen readers
Works in the mobile stacked layout, not only on desktop
All copy lives in the locale files and is translated in every supported language
An anchor pointing at an element that no longer exists fails visibly rather than
silently skipping
Context
Derived from requirement RF-PCE-005
Scope
A first-time visitor lands on a long form with no explanation of what
publiccode.ymlis for, how the left panel relates to the YAML on the right, or where to start. Add an
onboarding tutorial that runs on first launch and walks the user through using the form.
Shown once, on first launch — not on every visit.
Two things the requirement does not say, but that the feature needs to be usable:
the tutorial immediately, at any step.
who dismissed it by reflex has no path back. It should be reachable again from the UI
— the settings panel is the natural place.
Worth being explicit about what "first launch" can mean here: the editor is a static SPA
with no accounts, so the only place to record it is browser storage. The tutorial will
reappear in a private window, on another device, or after the user clears site data.
That is acceptable, but it should be a deliberate choice rather than a surprise.
Affected areas
src/app/App.tsx— the root component, where the tutorial would mount over thetwo-panel layout.
src/app/lib/store.ts— a new persisted flag, following the existing pattern ofuseITCountrySpecific(Zustandpersistwithpartialize, its own storage name).src/app/components/Editor.tsxand theEditor*.tsxfield components — whatever thetutorial points at needs stable anchors.
src/app/components/SettingsPanel.tsx— entry point for replaying the tutorial.src/app/lib/utils.ts—useIsMobile, since the mobile layout stacks the panels andthe tour has to make sense there too.
src/i18n/locales/*.json— tutorial copy.Non-functional constraints
accessibility trap. It must be operable by keyboard alone, trap and restore focus
correctly, be dismissible with Escape, and announce step changes to assistive
technology. This has to hold jointly with Reach WCAG 2.2 AA and EN 301549 conformance #646 — a tutorial that breaks keyboard
navigation would undo that work.
will change, in particular through Export publiccode.yml directly to a code repository #653 and the redesign of field grouping. It needs
to be maintainable — copy in the locale files, anchors that fail loudly when the
element they point at is gone, rather than a tour that silently drifts out of date.
Acceptance criteria
the YAML preview relates to it
dismisses
silently skipping
Related