Skip to content

korekore Phase 2c: onboarding, confirmations, notifications - #177

Merged
longzhi merged 14 commits into
mainfrom
korekore/phase-2c-onboarding
Oct 26, 2026
Merged

longzhi merged 14 commits into
mainfrom
korekore/phase-2c-onboarding

Conversation

@longzhi

@longzhi longzhi commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator

Phase 2c of the korekore UI (ADR-0021): onboarding, the confirmations and the notifications, on the Mac and on Linux. Behind VIBEBUDDY_UI=korekore; without it both apps behave exactly as before. With this, Phase 2 is complete.

Stacked on #176 (2b) → #175 (2a) → #173 (Phase 1). This PR's own change is the last commit.

What it does

  • Onboarding (canvas: "Mac · Onboarding welcome", "Onboarding · find the box, connect, pick, Wi-Fi", end of onboarding on the alerts board): Welcome → Find the box → Connect agents → Pick a character → Wi-Fi → Launch at login → All set, with the step chips along the bottom (done mint, current ink; done ones take you back). Linux has five steps, as today: its install script already connects the agents and sets up the start at login.
  • Confirmations (canvas: "CONFIRMATIONS"): the Mac's five NSAlerts become korekore sheets, run modally the same way (KorekoreAlert): the old daemon, the language restart (with its checkbox), flash from file (the two versions as pixel facts), the firmware update, other firmware (in kore-pink, since it erases). Linux already shows these as inline panels (2b).
  • Notifications (canvas: "SYSTEM NOTIFICATIONS"): with the switch on, the four use the board's words. Only the words: a notification's look is the system's, its icon the app's.

What each step does is the current onboarding's, copied (OnboardingView, App::guide). Three small behaviours the design implies, all only with the switch on:

  • Find the box makes the box blink once by itself when it shows up, so the page can ask "Is this your box blinking?" (with Blink again).
  • Connect agents ticks every agent found and not yet connected; "Connect 3" then shows each change before writing it, one after the other.
  • What does it send? on the welcome page opens the privacy note in place.

Screenshots

Mac, the real window drawn off screen in a debug build with sample data; the onboarding is drawn with nothing sent to the box (no blink, no Wi-Fi scan).

Welcome Find the box
Connect agents Pick a character
Wi-Fi Launch at login
Done

The sheets:

Old daemon Language
Flash from file Update
Other firmware

Linux, drawn headless by iced_test:

Welcome Find the box
Pick a character Wi-Fi
Done

Where it departs from the canvas

  • Kore's card in Pick a character says COMING SOON (ADR-0021), as on the Character page.
  • The box drawing's shell is line (#F1E7D6); the canvas's #EDE3D1 isn't a token. The selected Wi-Fi row is cream instead of #FFF1C2, and the signal bars' off colour backdrop instead of #D8D0E4.
  • No security tag (WPA2 / OPEN) on the Wi-Fi rows: the box's scan reports names and signal only, so they show the signal in dBm.
  • The welcome headline may shrink a little (to 0.8) to keep its three lines in the window.
  • Linux: the link and daemon notifications come from the daemon, which doesn't know which UI is on, so only the firmware notification is reworded there.

Changes to existing files

File Lines What
app/Sources/VibeBuddy/AppDelegate.swift +25 −7 with the switch: the korekore onboarding window, and the old-daemon question as a korekore sheet (both paths share the take-over)
app/Sources/VibeBuddy/AppModel.swift +15 −4 with the switch: the notifications' korekore words
desktop/src/main.rs +5 −1 with the switch: view() hands the guide over; the firmware notification's words
app/Localization/zh-Hans.lproj/Localizable.strings +62 the new strings

Also changed, from 2a/2b: KorekoreSettingsWindow takes a size and button inset (for the onboarding window); the Device and General pages use the korekore sheets; the Linux box-finding cards moved into kk_finding so the guide shares them.

New files: KorekoreUI/Onboarding.swift (frame, step chips, big buttons, KorekoreAlert), VibeBuddy/Korekore/KorekoreOnboarding.swift, VibeBuddy/Korekore/KorekoreFlash.swift, desktop/src/korekore/guide.rs, and the screenshots.

Tests

  • just test (cargo test --workspace, SelfTest): pass.
  • cargo check and cargo clippy for x86_64-unknown-linux-gnu and the host: pass, no warnings.
  • python3 tools/check-localization.py: ok, 478 keys.
  • Swift built with -warn-long-expression-type-checking=150: no slow expressions in the new code.
  • Not run here: the apps themselves with the switch on, beside the installed app (a sheet's modal loop and the real onboarding with a box plugged in are not covered by the snapshots), and Linux on a real Omarchy desktop.

🤖 Generated with Claude Code

Phase 2c of docs/design/korekore, behind VIBEBUDDY_UI=korekore on both
apps; without it nothing changes.

- Onboarding as the canvas draws it: welcome, find the box (it blinks on
  its own once found), connect agents (ticked, each change shown before
  it's written), pick a character, Wi-Fi, launch at login, all set; the
  step chips take you back. Linux has its five steps (its install script
  connects the agents and the start at login), with the same pages.
- The Mac's five confirmations (old daemon, language restart, flash from
  file, firmware update, other firmware) as korekore sheets
  (KorekoreAlert, run modally like NSAlert). Linux already shows them as
  inline panels.
- Notifications use the alerts board's words when the switch is on. Only
  the words: the look is the system's. On Linux the link and daemon
  notices come from the daemon, so only the firmware one changes there.
- Debug snapshots draw the onboarding steps (sending nothing to the box)
  and the sheets; iced_test draws the Linux guide.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 23, 2026 22:59

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

longzhi and others added 11 commits October 24, 2026 07:12
Found running the korekore UI against a box linked over the Relay: Find the
box offered "Update now", but firmware without TRANSFER 1 is flashed over
the cable only (ADR-0016), and the daemon refuses it. The step now says to
plug in the cable, as the Device page does. (The current onboarding has
the same gap; it is left as it is.)

Also a debug-only mode for checking the UI against the daemon already
running: VIBEBUDDY_KOREKORE_LIVE_SHOTS=<folder> starts as a guest (it
doesn't manage the daemon), draws the korekore windows with the live
status, the Conversation page excepted, and quits. Nothing is sent to
the box.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
For checking the korekore UI on a desktop without a pointer (the Omarchy
box over SSH): VIBEBUDDY_KOREKORE_SECTION=device, VIBEBUDDY_KOREKORE_GUIDE=1.
Release builds don't read them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Found on the Omarchy box: loaded by a task after start, the korekore
fonts never reached the first window, and every text fell back to
Omarchy's monospace default. They are now given to iced when the app is
built, with M PLUS Rounded 1c as the default font, as the headless
snapshots already did. Without the switch nothing changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	app/Localization/zh-Hans.lproj/Localizable.strings
#	app/Sources/VibeBuddy/AppModel.swift
#	app/Sources/VibeBuddyCore/Status.swift
#	desktop/src/status.rs
The merge of main brought the Account tab, own keys and Making a Character
to the current UI only. The General page now opens with the account and
own keys, the Character page shows made Characters, Make a Character and
the making progress, and the Device page says why the Relay refuses.
Make your own look scrolls to the card it opens below the grid.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The design hands over no app icon, so the Dock shows the General page's
badge: Kore at a whole-pixel scale on a kore-pink tile with an ink outline.
The bundle's icon stays the robot until the current UI goes. Snapshots
gain the icon and a signed-in account with own keys.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The App shows in the Dock only while a window is open, and the tile then
takes the bundle's icon, so the icon set at launch never showed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Linux counterpart of the Mac change: the General page opens with the
account and own keys, the Character page shows made Characters, Make a
Character with its form in the page's place, and the making progress, and
the Device page says why the Relay refuses. After drawings are picked for
Make your own look, the page goes down to the card it opens below the grid.
Snapshots gain a signed-in account, own keys and a made Character.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
korekore Phase 2d: account, own keys and making a Character
Base automatically changed from korekore/phase-2b-pages to main October 26, 2026 06:15
…oarding

# Conflicts:
#	app/Localization/zh-Hans.lproj/Localizable.strings
@longzhi
longzhi merged commit 0710829 into main Oct 26, 2026
2 checks passed
@longzhi
longzhi deleted the korekore/phase-2c-onboarding branch October 26, 2026 06:16
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.

2 participants