Skip to main content

Onboarding guidelines

Hephaestus teaches through its own pages. Each page explains itself, shows guidance in the place where it applies, and derives that guidance from the person's real state. Hephaestus has no product tour. This page gives the rules for every change that adds guidance, an empty state, or a first-run step. The general design principles and the motion rules are in webapp/DESIGN.md. This page applies them to onboarding and does not repeat them.

The constraint​

Three facts shape onboarding in Hephaestus.

  1. People come to do a task. They skip and forget instructions that come before the task. A study of three games found that tutorials improved engagement only in the most complex game. The source is Andersen et al., CHI 2012. People learn Hephaestus by use, so we infer that a tour adds little. Apple says that people should understand an app "simply by experiencing it" (HIG Onboarding).
  2. The value arrives later. A review starts from configured events on the work, or from a request. A feedback card needs the same problem on at least two different pieces of work. On a first sign-in, a member often has no review yet, so pages about reviews have nothing to show.
  3. Feedback is about the reader's own work. A wrong claim about their work costs trust, and a fast fix does not restore it. This is the first non-negotiable.

Rules​

  1. Land on the home page. A first sign-in opens the person's home: the Practice profile, or Activity where practices are off. Only a decision that gates the processing of their work comes first. These decisions are the terms, and the AI choice where the workspace asks for it. Apple says to postpone nonessential setup. Apple also says to give a clear reason for a permission that the app needs to function.
  2. Do not interrupt on load. Do not open a modal dialog when a page loads. Show information and optional decisions in the page, near the thing that they are about. Apple says: "Avoid showing an alert when your app starts" (HIG Alerts). GOV.UK has no modal component.
  3. Teach in the place of use. Put an explanation next to the thing that it explains, at the moment that it applies. Apple prefers "context-specific tips instead of a single onboarding flow".
  4. Derive guidance from state. Choose the text from the person's real state, such as "no review yet" or "No AI". Guidance that follows state changes by itself. It needs no "seen" record, no dismissal, and no export or erasure entry.
  5. Never invent a claim about someone's work. Do not show sample feedback, a demo profile, or an invented review as the reader's own. Show an example only when it is clearly an example and is not about the reader. A practice's own guidance in its Guide tab is such an example. Products that mix samples into real data must warn against it (Stripe sandboxes, Power Platform sample data).
  6. Give one next step. Each empty state gives the one action that fills it, with a direct link. The sources are NN/g and HIG Writing. The writing standard gives the wording rules.
  7. State only measured times. If the person's own action starts the result, name that action and give no time. If the system works on the result, name the stage that the result waits for. Give a time only when the server measures it for this case (NN/g long waits).
  8. Do not let held-back feedback look like a clean result. A proposal can wait for the approval of a workspace admin. The server hides such a proposal from the developer. Do not disclose such an item, and do not imply that nothing was found. State the fact about the workspace instead, such as "a workspace admin approves feedback before it is posted". FeedbackState.VISIBLE_TO_DEVELOPER owns what a developer may learn about an item.
  9. Keep crucial facts out of temporary places. An empty state disappears when data arrives, and a toast disappears on a timer. Also put a fact that the person must keep in a place that stays. Such places are the legend, User settings, and the user docs. The sources are HIG Writing and HIG Accessibility.
  10. Say who can see what. Do not reassure with a general claim such as "only you can see this". Name each audience: feedback on a pull request is visible to everyone who can see that pull request. Workspace admins can see all practice reviews, and instance admins can open a read-only view.
  11. Keep one voice. Hephaestus is the product. It has no mascot and no narrator. "I" belongs only to answers in a conversation (product vocabulary).

Screens without data​

Each stage below has a defined screen. The screen states the cause, the one next step, and an honest expectation. A pull request that adds or changes one of these screens adds a story for it.

StageThe screen must sayThe next stepThe expectation
Instance, no workspaceThat the person is in no workspaceCreate workspace if the creation policy allows it. Otherwise, name the instance admin.The workspace appears when the installation finishes.
Workspace, no synced repositoryWhich repository is not connected or not synced yetConnect the repository, or wait for the first syncThe sync progress that the server reports
Repositories, no practices or reviews offThat members get no reviews yet, and whyChoose practices, or turn on practice reviewsReviews start from the events of the chosen practices.
Practices, no review yetThat no review has run in the workspaceReview recent work. An admin starts it. Hephaestus never starts it by itself.Results appear on each member's Practice profile. Feedback on merged work is withheld.
Member, no work attributedWhich account the workspace usesConnect that accountWork appears after the next sync.
Member, no review yet, a review can runThe events that start a review for the active practices, and where the result appearsOpen a pull request, or read what the workspace reviewsNo time. The person's own action starts it.
Member, no review can runThe reason from the server, such as reviews off, reviews on request only, outside the review scope, No AI, or no model for the choiceThe direct link that removes the cause, or the role that can remove itReviews start after the cause changes.
Member, review queued or runningWhich work the review is on, and its stageNothingThe stage, such as "Waiting" or "Running". No time.
Member, the workspace approves feedback firstThat a workspace admin approves feedback before it is posted. Never say whether an item waits.NothingNo time. A person decides.
Member, first feedbackThe card, which explains itselfThe card's next stepThe card counts what resolves it.
Ask Hephaestus, no review yetWhat it can answer now, such as questions about the practices and the person's recent workSelect an example question about the practices. It fills the composer and does not send.Answers that use observations or feedback wait for the first review.

The server owns each fact that a screen states. For example, the reason that no review can run comes from the review gate and the AI rule that admit a review. A screen does not compute a rule a second time. It does not state a time that the server did not measure.

Patterns that we use​

PatternUse it whenHome
Empty state that teachesA region is empty for a reason that the reader cannot seeFeedbackEmpty, EmptyState
One-sentence page intro and detail on demandA page needs more than one sentence of explanationPageHeader with an InfoTip, or a closed Collapsible for a legend
Definition at the point of useA badge, a label, or a figure needs a definitionThe description in its StatusDefs registry entry, or an InfoTip
A setup stepThe product must not process the person's work without an answerThe terms page and the AI choice page
Notice in the pageThe person must know or decide something, but not nowAlert as a region named by its title, first in the main content, one at a time
Setup list from real factsAn admin setting blocks value for membersOne row for each fact, with its status and a link to the page that changes it
Example questionsThe person sees an empty conversationThe conversation greeting. A question fills the composer.

A legend starts closed when the page shows the meaning that the reader needs. After the reader opens or closes it, it stays in that state until the reader changes it (NN/g accordions).

Patterns that we reject​

PatternReason
A product tour that starts by itself, or a tour of more than five stepsPeople finish a tour that they start more often than one that starts by itself, and fewer finish a longer tour. The figures differ between reports, so only this direction holds. The sources are vendor data: Chameleon and Produktly. Our first value arrives after the first sign-in.
A modal dialog for information or for an optional decision on loadApple: "Avoid showing an alert when your app starts". GOV.UK has no modal component.
Sample feedback or a demo profile on the reader's own pageRule 5
A mascot or a narratorMicrosoft turned off its Office assistant by default in 2001 (Microsoft). An assistant must be easy to call and easy to dismiss (Amershi et al., CHI 2019).
A beacon, a hotspot, or motion that loops to get attentionIt pulls attention from the task. This ban is stricter than WCAG 2.2.2, which also allows a control to stop the motion.
A "seen" flag in browser storage for guidance about a personThe guidance comes back on each device. Use state, or the server.
A tour library or a second positioning engineOur guidance lives in the components that it explains, so it needs no overlay and no positioning. A target that an engine finds by a selector or by text needs its own tests to stay correct. Some libraries also need an AGPL-3.0 or a paid license, such as Shepherd.js and Intro.js.
A "What's new" dialog or a welcome dialogThe release notes own changes. A welcome dialog interrupts on load.

The bar for a future tour or hint​

A tour or a hint is a new pattern. It needs an explanation of the failure that it prevents, and it must meet all of these conditions:

  • The person starts it, or a real first event shows it, such as the first feedback card.
  • It has no more than five steps, and it shows the person's real data.
  • It is attached to a component slot, not found by a selector or by text.
  • It is not modal. It does not trap focus, and it never fully covers the focused element (WCAG 2.4.11).
  • Its keyboard and screen-reader paths are complete. It announces changes without moving focus (WCAG 4.1.3).
  • It follows reduced motion. It does not scroll the page by itself.
  • Only one shows at a time. Apple's TipKit spaces tips, for example one each day (WWDC23 TipKit).
  • The server remembers its dismissal for the account. User settings can show it again, and export and erasure include it.
  • A test walks every step.

Motion and accessibility​

webapp/DESIGN.md § Motion owns durations, easing, and reduced motion. For onboarding, motion only shows where something came from or where it went. A person can act before an animation ends (HIG Motion). Content that arrives with the page does not animate in.

If focus was inside a notice that leaves after an answer, focus moves to the page heading. Under reduced motion, the notice leaves at once. The saved answer stays visible in User settings, because a toast disappears on a timer.

Checklist for a change​

Before you add guidance, an empty state, or a first-run step, check these points:

  1. The text follows a real state, and a story shows each state.
  2. The server owns each fact that the text states.
  3. No text claims a time that the server did not measure.
  4. No example is about the reader's own work.
  5. Nothing modal opens on load. Guidance that a real event shows meets the bar for a future tour or hint.
  6. A fact that the person must keep also appears in a place that stays.
  7. The keyboard, screen-reader, and reduced-motion paths work.

Sources​

These are the main sources: