← The board

G1 Interface tiers

Area
G — Cross-cutting UX
Audience
both
Kind
feature
Status
accepted
Maturity
building
Labels
cli, tui, web, ux
Relates to
B6C6G3G4

The feature in the specification · Read at

Requirements

  1. G1-R1acceptedMUST

    Every action MUST be available from every surface, except where intrinsically unsuited, and such exceptions MUST be documented.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber-api/src/actions.rscrates/lemonfiber-api/src/read/table.rscrates/lemonfiber/src/reaching.rscrates/lemonfiber/tests/architecture/surface_parity.rscrates/lemonfiber/src/acting.rscrates/lemonfiber-core/src/door.rs
    recorded partial
    lemonfiber-webdocs/surface-parity.md
    cited by
    lemonfiber@ff8d785388lemonfiber@eb40fb4d4alemonfiber@db062d5fb5lemonfiber@5c730c030clemonfiber@beeb19c031lemonfiber@0dd7fac55alemonfiber@4f823e25a9lemonfiber@56102d558elemonfiber@4bd2620ef3lemonfiber@24c209004flemonfiber@5b953deaf9lemonfiber@b837d173b7lemonfiber@9a797b4369lemonfiber@2b0be2789blemonfiber@1475da4a91lemonfiber@3bb676e171lemonfiber@e730477db5lemonfiber@dafc6fe3c5lemonfiber@cfc232b551lemonfiber@3a76ae63eelemonfiber@a3d46f746blemonfiber@0ef1fe21e0lemonfiber@d38ad27bcdlemonfiber@64d51b40c8lemonfiber@08d714f9aalemonfiber@80d1ea425clemonfiber@9d1897183alemonfiber@33e50a86a6lemonfiber@c96ff1e459lemonfiber-web@4f98cf9f88lemonfiber-web@34378e5990lemonfiber-web@9b97f303f3lemonfiber-web@2ab51155b3lemonfiber-web@974eda76dblemonfiber-web@5b00049d81lemonfiber-web@c3a062ff50lemonfiber-web@f729d8f300lemonfiber-web@aa3b7765fblemonfiber-web@1ab5f7f576lemonfiber-web@0d7d0ef0f0lemonfiber-web@73d7122c6clemonfiber-web@a25912344clemonfiber-web@56e6da0bf6lemonfiber-web@ef36daf042lemonfiber-web@131dd35429lemonfiber-web@c4ce6f1d87lemonfiber-web@70c81d3715lemonfiber-web@a3ca9e06e2lemonfiber-web@0251bc9a53lemonfiber-web@2b0e739bc7lemonfiber-web@7e6405949alemonfiber-web@2ff501a6felemonfiber-web@b4b1da0c89lemonfiber-web@dcbcad7a05lemonfiber-web@4948892fc7lemonfiber-web@84b48140aflemonfiber-web@7d72c5398dlemonfiber-web@b9df955d77lemonfiber-web@5669c50d30lemonfiber-web@98d0104637lemonfiber-web@089b41c204lemonfiber-web@d5e0d3777alemonfiber-web@d5933e1338lemonfiber-web@64f1b96699lemonfiber-web@83d1fb8784lemonfiber-web@93aca95f42lemonfiber-web@328cf29f61lemonfiber-web@dfe6328783lemonfiber-web@0707ed42e0
  2. G1-R2acceptedMUST

    All surfaces MUST drive the same underlying logic; no surface MAY implement behaviour independently.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber-api/src/jobs.rs
    recorded partial
    lemonfiber-web.dependency-cruiser.cjssrc/api
    cited by
    lemonfiber@5c9aac5d28lemonfiber@4f823e25a9lemonfiber@56102d558elemonfiber@4bd2620ef3lemonfiber@b837d173b7lemonfiber@9a797b4369lemonfiber@d38ad27bcdlemonfiber@2ca15162f6lemonfiber@5911b3a552lemonfiber-web@ab3524527blemonfiber-web@985e71d6f6
  3. G1-R3acceptedMUST

    Bare invocation MUST open the TUI when attached to a terminal, and MUST print help when not.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber/src/cli.rs
    cited by
    lemonfiber@fcc8f38a95
  4. G1-R4acceptedMUST

    lemonfiber MUST NOT block on input when stdin is not interactive.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber/src/prompt.rs
    cited by
    lemonfiber@8bc8c65cfa
  5. G1-R5acceptedMUST

    The web UI MUST be started explicitly and MUST NOT run persistently by default.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber/src/ui.rscrates/lemonfiber-api/src/jobs.rs
    cited by
    lemonfiber@5911b3a552
  6. G1-R6acceptedMUST

    The web UI MUST bind to loopback by default under the security policy.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber/src/ui.rs
    cited by
    lemonfiber@482a7476ac
  7. G1-R7acceptedMUST

    CLI output MUST offer a machine-readable form as a stable, versioned interface.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber/src/cli.rs
    cited by
    lemonfiber@d0a59a3c0alemonfiber@97eba0a44dlemonfiber@58f7596b3c
  8. G1-R8acceptedMUST

    Exit codes MUST be meaningful and documented.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber/src/exit.rs
    cited by
    lemonfiber@fb11824654
  9. G1-R9acceptedMUST

    The TUI MUST function without true-colour support, without special fonts, and at modest terminal sizes.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber/tests/architecture/modest_terminal.rs
    cited by
    lemonfiber@ebab0d89be
  10. G1-R10acceptedMUST

    NO_COLOR MUST be honoured.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber/src/logs.rs
    cited by
    lemonfiber@f9289559f8
  11. G1-R11acceptedMUST

    Failure to launch a browser MUST NOT fail the command; the URL MUST be printed.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber/src/ui.rs
    cited by
    lemonfiber@482a7476ac
  12. G1-R12acceptedMUST

    Concurrent surfaces MUST reflect the same state, and lifecycle operations MUST be serialised across them.

    locked by
    0.9.0 met
    recorded done
    lemonfiber.github/workflows/sonar.ymlcrates/lemonfiber/src/acting.rscrates/lemonfiber/src/acting/words.rscrates/lemonfiber/src/dashboard.rs
    cited by
    lemonfiber@c5020a40e9lemonfiber@8f14a7a45alemonfiber@870bd14747
  13. G1-R13acceptedMUST

    Non-interactive invocation lacking required input MUST fail naming the required flags.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber/src/prompt.rs
    cited by
    lemonfiber@3f134118f5
  14. G1-R14acceptedMUST

    Setup MUST be completable from all three surfaces that run on the host machine. It is not required of the companion surface, for the reason recorded above and in N1-R4.

    locked by
    0.9.0 met
    recorded done
    lemonfibercrates/lemonfiber-api/src/setup.rs
    cited by
    lemonfiber@7bf6398d9dlemonfiber@b0101f0cc1lemonfiber-web@b4b1da0c89lemonfiber-web@dcbcad7a05lemonfiber-web@83d1fb8784
  15. G1-R15acceptedMUSTClaim it

    Every surface that shows pairing material, an invitation's sign-in address, join link or decline address, the front door address, a device hand-off's address or one of its clients' codes, or a minted key's secret MUST offer each as a QR code beside its text, drawn on that surface from the text exactly as the stack gave it.

    locked by
    0.18.0 unmarked
    recorded partial
    lemonfibercrates/lemonfiber/src/render/qr.rscrates/lemonfiber/src/render/invitation.rscrates/lemonfiber/src/render/invitation/handoff.rscrates/lemonfiber/src/render/keys.rscrates/lemonfiber/src/render/companion.rscrates/lemonfiber/src/render/door.rs
    cited by
    lemonfiber-companion@e22d29101b