facett UI error codes — for idiots
What is this?
Every broken thing in a facett screen now has a name tag, like facet-map-2. Before, a test only knew something was wrong by reading the words on screen. If you changed the words, the test went blind. Now each error has a permanent code that never changes, so tests and other apps can point at the EXACT problem.
The name tag looks like
facet-<component>-<n>
│ │
│ └── a number, counted per component (1, 2, 3, …), NEVER reused
└── which facett part (map, graph3d, geomap, korp, …)
Examples: facet-map-1, facet-graph3d-2, facet-korp-1.
Two things always show up together
- The message — the human sentence, like "map has no vessels to plot". Same as before. Always there.
- The code — the name tag
facet-map-2. In a normal dev (debug) build it shows on screen in bright PINK next to the message. In a shipped (release) build the pink is faint, but the code is still in the data + logs + the About popup.
How do I make one?
let e = facet_err!(map, 2, "no positions to plot");
e.render(ui); // draws the message + the pink code
That's it. map = the part, 2 = the number, then your sentence.
Rules (do not break)
- Pick the next unused number for that component. Look in the LIST (
facett-error-codes-registry.md). - Never change or reuse an old number. Codes are forever.
- Add your new code to the LIST when you make one.
Where do I see them all?
Run facett-demo, open the Errors tab. You'll see:
- pink codes on example errors,
- the build's git hash,
- a link to the source code on codeberg for each part,
- a big TABLE (the "matrix slide") of every code.
There's also a Manual tab (the real facett manual) and an About popup (press the legend button) that shows the git hash and the codeberg links.
Why "korp/cases:facet-map-2"?
An app like korp can show the SAME facett part (say the map) in two places. So korp sticks its own label in front: korp/cases:facet-map-2 vs korp/analysis:facet-map-2. Same map error, two spots — now a test can tell them apart. (That wiring is Phase 2; facett just gives korp the tool.)