- Remove dead .active-profile-row CSS (unused class)
- Replace hardcoded rgba fallbacks in .home-profile-row.is-active with
design tokens (var(--surface-2), var(--border))
- Remove duplicate edit icon from publication empty state (icon was
shown above the button, redundant with the button's own icon)
- HomeScreen header button: 'Compose note' → 'Compose' (matches sidebar)
- Updated tests to use exact name match and scoped queries to avoid
matching the sidebar nav button
Flat var(--success-soft) instead of the removed gradient — keeps the
green tint that signals active security state without breaking the
flat-by-default rule.
- Replace plain numbered list with icon circles (primary-soft bg)
- Each step uses flex layout: indicator + content
- Step titles and body text have clear hierarchy
- Remove legacy padding-left on ol, use gap-based spacing
- Consistent 14px font size for step content
- Profile list rows are now focusable (tabIndex) and operable via
Enter/Space (onKeyDown handler)
- Added role=listbox on the <ul> and role=option + aria-selected on
non-active rows
- Added descriptive aria-label including profile name and active state
- Added focus-visible CSS ring matching the design system pattern
- Updated test role from 'list' to 'listbox'
Drop the no-op drop(stored) of a &mut reference in profiles.rs and stop
binding the unused ProfileSummary returned by app.undo_delete() in the
IPC UndoDelete handler. Clippy --all-targets is now warning-free.
Wire the existing profiles::import_profile through the JSON-lines IPC
protocol so the GUI can add an existing account: ImportProfile request
and handler in src/ipc.rs, import_profile added to the Electron method
allowlist, api/AppProvider importProfile, and the Add existing account
buttons in ProfilesScreen.
Also add the active signing identity card on Home and fix the HomeScreen
tests whose text queries now match the identity card as well as the
profile row.
Mirrors the Profiles screen: the whole non-active row in the Home
'Your profiles' list now selects the profile on click, guarded so the
Copy/Select buttons don't double-trigger. Added a pointer cursor for
non-active rows and a test for row-click selection.
Avatar was rendered without the 'picture' prop, so the active profile's
image only appeared on Home. Added picture={active.picture} to both
Compose avatars (write + preview) and the sidebar active-profile avatar.
The Profiles screen is still reachable via Home's 'Manage profiles'
button, so the left-nav Profiles tab was redundant. Dropped the
'profiles' entry from the sidebar NAV_ITEMS and updated App.test.tsx
to navigate to the screen via 'Manage profiles' instead.
- Home now shows every profile with its picture, an inline Active badge,
and a working Select button (was only the active profile).
- Remove the Relays card from Home (status lives on the Relays screen) and
its unused connection-check logic/test.
- Pin Vite dev server to 127.0.0.1 so Electron and the dev server agree on
the address (fixes white-box window in dev mode).
- Make the profiles card full-width to match the publication card below.
- Badge now accepts className.
The 512px source had ~25% baked-in white padding on every side, so the
38px sidebar tile showed a small bird floating in a white square.
Cropped to the content bounding box plus a 6% pad (keeps wing/beak
tips clear of the rounded corners); the img already fills the tile via
object-fit: cover. Window/packaged icons untouched.