Skip to route content
Implemented

Shared library · Behaviour over time

Interaction patterns define transitions between interface states.

This reference records how shared Hara interfaces move through search, mutation, loading, permission, failure, recovery, and responsive collapse. Application repositories retain their domain rules and authoritative state.

5
end-to-end workflows
12
data and degraded states
8
identity / permission states
320px+
responsive contract
initial
activework in progress
successdurable receipt
failurerecoverable context

02 · Forms and mutation

Never trade recoverability for speed.

Drafts distinguish editable, derived, and identity-controlled fields. Validation is both inline and summarized. Optimistic updates always expose rollback, destructive actions explain scope, and preview precedes publication.

Draft → validate → previewUnsaved changes
Publisherhara-lang · verified GitHub identityIdentity-controlled · not browser editable
Autosave paused until validation passes.
Optimistic updateFollowing std.work

The local state updates immediately while the durable request is pending.

Pending sync
RollbackFollow failed

The previous server state is restored. The reason and retry action stay adjacent.

Network request failed
Destructive confirmation · revoke release

Revoke std.work 0.8.4? Existing receipts remain in history. New installs will be blocked.

03 · Data and content states

Degraded truth is labelled, not polished away.

Every state names what is known, what is missing, whether the user can act, and how old the evidence is. Colour is supplementary; labels, icons, text, and action affordances carry the meaning.

Loading

Fetching package index

Keep the previous frame stable while new data resolves.

Empty · first use

No saved views yet

Explain the first meaningful action instead of showing a blank panel.

Empty · filtered

No results for runtime:hbc

Preserve the active query and offer a clear reset.

Partial data

3 of 5 sources available

Name the missing sources and keep verified rows usable.

Stale data

Index is 18 minutes old

Show age and provenance before offering a refresh.

Success receipt

Published · receipt gw_8421

Return exact revision, actor, and durable result.

Warning

Compatibility not verified

Pair colour with a label and a concrete consequence.

Recoverable failure

Checker timed out

Keep inputs intact and make retry explicit.

Fatal error

Registry unavailable

Explain what is unavailable without manufacturing fallback data.

Degraded · read only

Writes paused

Allow inspection while clearly disabling mutation.

Offline

Working from local snapshot

Differentiate cached evidence from current server truth.

Reconnecting

Attempt 2 · preserving edits

Never discard local work while transport recovers.

04 · Identity and permission

Authority is explicit at the point of action.

Identity state changes capability, never history. Owner, maintainer, reviewer, contributor, anonymous, and revoked states remain legible without forcing products into one permissions model.

Anonymous

Inspect public evidence and try capability-free actions.

Signed in

Save views, submit drafts, and receive durable receipts.

Owner

Manage owned resources and accountable automations.

Maintainer

Review package or namespace changes within delegated scope.

Reviewer

Approve or request changes without gaining ownership rights.

Contributor

Propose changes and retain evidence of accepted work.

Insufficient permission

Explain the required role and keep read access intact.

Suspended / revoked

Show scope, reason, and recovery path without hiding history.

BOTrelease-notes-botowned by hoebat · package: std.work

User-owned automation is attributed to an accountable owner, scoped capability, and inspectable receipt. A bot never appears as an unowned system actor.

Owner
hoebat
Capability
draft release notes
Status
owner present
Receipt
bot_7782

05 · Responsive and input behaviour

Collapse supporting context before primary work.

Desktop, tablet, 680px, 390px, and 320px all preserve the primary task. Inspectors collapse before sidebars; horizontal context becomes scrollable; touch targets grow; editor focus is always explicit on mobile.

Desktop · 1280+primary + sidebar + inspector123
Tablet · ≤ 1120inspector collapses first12
Compact · ≤ 820sidebar becomes disclosure1
Mobile · 390 / 320primary work first · no editor autofocus1
Keyboard

Visible focus, logical traversal, Escape to close disclosures, and focus return to the opener.

TabShift TabEsc
Touch

Controls keep a minimum 44px target in touch-first compositions and do not depend on hover.

Reduced motion

Ambient movement is removed; functional state changes use instant or low-distance substitutions.

state transition

06 · End-to-end studies

Every workflow proves the complete state envelope.

These are deliberately cross-product specimens. They demonstrate shared interaction contracts while leaving package rules, publication policy, runtime semantics, moderation policy, and benchmark methodology to the owning product.

01

Package discovery

Search → filter → select → inspect

Shared contract
  1. Initial

    Search is empty; useful recent packages remain visible.

  2. Active

    Runtime and stability filters narrow 128 records to 14.

  3. Success

    std.work is selected with exact version and provenance.

  4. Empty

    No package matches all filters; query remains editable.

  5. Failure

    Registry search failed; previous verified selection remains inspectable.

02

Publication form

Draft → validate → preview → submit → receipt

Shared contract
  1. Initial

    A local draft starts with controlled fields clearly separated.

  2. Active

    Validation reports one inline error and a summary link.

  3. Success

    Submission returns revision 7f2c1d and receipt pub_1098.

  4. Empty

    Preview has no optional release note; required metadata still renders.

  5. Failure

    Submit failed; draft, validation results, and preview are preserved.

03

Live workbench

Load session → edit → run → observe → recover

Shared contract
  1. Initial

    Session 42 loads at source revision 18 without editor autofocus.

  2. Active

    Generation 6 is running; stop and observation controls are available.

  3. Success

    Generation 6 completes with monotonic event sequence 218.

  4. Empty

    No diagnostics were emitted; observation pane explains the clean run.

  5. Failure

    Run failed; source stays editable and restart creates generation 7.

04

Community discussion

Browse feed → open thread → comment → published

Shared contract
  1. Initial

    Feed items expose source, age, submitter, and discussion count.

  2. Active

    Composer preview shows mention resolution and canonical thread target.

  3. Success

    Comment is published with author identity and stable permalink.

  4. Empty

    A thread with no comments offers context before the composer.

  5. Failure

    Publish failed; the local comment remains available to retry.

05

Benchmark evidence

Compare evidence → change tab → share exact view

Shared contract
  1. Initial

    Default comparison names workload, baseline, and revision.

  2. Active

    Changing tabs preserves filters and updates the selected evidence panel.

  3. Success

    Share action produces an exact, reproducible view URL.

  4. Empty

    An incomparable workload explains why a cell has no value.

  5. Failure

    Evidence fetch failed; cached values are visibly marked stale.

07 · Ownership boundary

Share behaviour; keep business semantics local.

The UI reference is an acceptance surface, not a replacement application framework. Downstream products consume the shared geometry, components, and state grammar without copying catalogue-only framing.

Shared interaction contract

Visual Language owns

  • focus and keyboard behaviour
  • loading, empty, success, warning, and failure envelopes
  • responsive collapse order
  • validation presentation and recovery affordances
  • identity and automation attribution patterns
Product-owned business rules

Applications own

  • which actions a role may perform
  • package, spec, runtime, feed, or benchmark semantics
  • moderation and publication policy
  • durability and server-side receipt meaning
  • domain-specific navigation and information architecture

Rule: consume shared components from the component catalogue; do not turn a application-specific state machine into a new global primitive until more than one application proves the need.