Skip to content

A new owner's first run reads as intended, not unfinished (W-880) - #373

Merged
wr merged 3 commits into
mainfrom
wells/w-880-webapp-a-pass-on-empty-states-and-onboarding
Oct 18, 2026
Merged

wr merged 3 commits into
mainfrom
wells/w-880-webapp-a-pass-on-empty-states-and-onboarding

Conversation

@wr

@wr wr commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

Walked the webapp from a blank server as a new owner, self-hosted and on Featherframe Cloud (first frame paired → first illustration), and fixed every state that read as broken or half-done.

Before/after screenshots of each state: https://claude.ai/artifact/TLYbZ8t84AV75oT9VnhkFg (private to Wells)

What changed

  • A source not set up yet is not a fault. A push source nothing has reached, BirdWeather with no station, or no BirdNET-Pi database at the default path is gray instead of red (service.source_unset), and raises neither the outage nor the gone-quiet alarm. The welcome plate asks for a source in a plain line instead of the "Detection source unreachable" pill. A typed path that is missing is still a fault.
  • Setup steps tick themselves off. BirdNET-Go's and BirdNET-Pi's steps turn to Done, and the dot green, when the test or first detection arrives: /api/status carries push_setup, and the poll applies it. Before, the page kept "Waiting for the test…" until a reload.
  • History leaves out the welcome plate, so it no longer fills with "No detections yet" pictures before the first real one. Empty: "None yet."
  • Empty Frames card. Names the kit's own setup choice (Self-hosted / Featherframe Cloud) and ends the way this server meets a frame: self-hosted, it asks to be added here; on Cloud, it shows a code, with a Pair a frame button in the card. Cloud used to get the self-hosted steps.
  • A frame asking to connect is a plain notice with an info icon, not an amber warning.
  • AI image generation, no key. The master switch waits for a key like Monthly limit and Advanced (it showed on, faded); a locked switch reads off, its stored value untouched; the help link is in the page's link color, "See how image generation works and what it costs."; an empty Generated illustrations list drops the backup note, which Cloud never shows.
  • The Connected sheet (Cloud, after the phone setup) shows the frame's first picture in its turning frame. Its first look for the picture ran before the sheet was on, so it stopped at once and the frame only ever showed the wordmark.

Verified

  • Full suite: 1394 passed, 1 skipped. New tests/test_first_run.py covers each state; outage tests now model a typed, missing path (the default path missing is "not set up").
  • check_copy.py clean.
  • Screenshots from scripted blank servers at 1280 px and 390 px, before and after, including a Cloud page (the template with hosted on).
  • In a real browser: the BirdNET-Go steps flip to "Test received at 10:39 PM." with a green dot without a reload, and the card's Pair a frame button opens the pairing dialog.

Not covered

  • The real Cloud deploy: the Cloud states were rendered by this server with hosted on, not through the Worker.
  • The kit's glass: the welcome plate's new line was checked in the preview, not on a panel.

Refs W-880

Walked the webapp from a blank server, self-hosted and on Featherframe
Cloud, and fixed what read as broken or half-done:

- A detection source nobody has set up yet (a push source nothing has
  reached, BirdWeather with no station, no BirdNET-Pi database at the
  default path) is gray, not red, and raises neither the outage nor the
  gone-quiet alarm. The welcome plate asks for a source in a plain line
  instead of the "unreachable" error pill.
- BirdNET-Go's and BirdNET-Pi's setup steps tick themselves off when the
  test or first detection arrives: /api/status now carries push_setup,
  and the page used to keep "Waiting for the test…" until a reload.
- History leaves out the welcome plate, so it no longer fills with
  "No detections yet" pictures before the first real one.
- The empty Frames card names the kit's own choice and ends the way this
  server meets a frame: asks to be added (self-hosted), or shows a code
  with a Pair a frame button in the card (Cloud, which had self-hosted
  steps).
- A frame asking to connect is a plain notice, not an amber warning.
- AI image generation: the master switch waits for a key like the other
  key-only rows; a locked switch reads off; the help link uses the page's
  link color; an empty gallery drops the backup note (never on Cloud).

Refs: W-880
@linear-code

linear-code Bot commented Oct 18, 2026

Copy link
Copy Markdown

W-880

wr added 2 commits October 17, 2026 22:58
…ame (W-880)

Its first look for the picture ran before the sheet was on, so it stopped
at once and the frame kept the wordmark. It now looks once the sheet is on.

Refs: W-880
@wr
wr merged commit 180c799 into main Oct 18, 2026
6 checks passed
@wr
wr deleted the wells/w-880-webapp-a-pass-on-empty-states-and-onboarding branch October 18, 2026 16:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant