Fix UI\UX problems for address book. SPEK-155#5658
Draft
Conversation
Extract ContactSkeleton, BackendLoadingView, BackendErrorView, and EmptyBackendView into separate files under entities/contact/ui. Remove orphaned i18n keys (removeConfirm, unused auth keys, backendContact labels, actions.edit).
… (SPEK-158) Replace custom globe-in-circle with Graphics emptyList component to match other empty states. Add contextual guidance description text.
Add lock icon and "Synced" label to BackendContactRow with tooltip explaining the contact is managed by the backend server.
Add debounced URL health check with inline indicator showing checking/reachable/unreachable states next to the URL input in BackendConfigurationModal.
…EK-164) Add "Address Book Sync" section showing current backend status with configure/add backend buttons to open the configuration modal.
Add aria-labels to all IconButtons in ContactRow, BackendContactRow, and Contacts. Wrap contact list in aria-live region with aria-busy for loading state to announce content changes to screen readers.
…SPEK-160) Add $lastSyncTime and $syncStatus stores to backend-contacts-model. Create SyncStatusBadge component showing relative time since last sync with tooltip for exact time. Replace raw refresh IconButton in Contacts page with the new badge.
… (SPEK-162) Add $isSessionExpired store and periodic session health check every 5 minutes using patronum interval. When session expires, AuthStatus shows a warning icon with "Session expired" text instead of the account name.
…rd (SPEK-167) Show "Disconnected" label when not authenticated instead of hiding the status. Add warning border to BackendConnectionCard when disconnected or session expired. Globe icon turns warning color on session expiry.
… (SPEK-166) When a backend sync fails but cached contacts are available, display them with a warning alert banner instead of showing a full error screen. This provides a better experience when the server is temporarily unavailable.
Contributor
Unit Test Results 1 files 169 suites 33s ⏱️ For more details on these failures, see this check. Results for commit b29353b. ♻️ This comment has been updated with latest results. |
c8bc162 to
4e579d3
Compare
Rewrite BackendErrorView to use Alert variant=error with user-friendly error messages mapped from common error types (network, auth, timeout). Raw error shown as secondary text for debugging.
4e579d3 to
d8ba2e5
Compare
d8ba2e5 to
b29353b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Integration branch that merges all Address Book UI/UX fixes (SPEK-155 through SPEK-168) and adds Storybook stories + Playwright screenshot infrastructure for visual regression testing.
This PR depends on all the individual feature PRs (#5650–#5657) being merged first. It adds:
pnpm test:screenshotsscript in package.jsonRelated Issues
SPEK-155
Changes Made
playwright.screenshots.config.tspointing at Storybook on localhost:6006tests/screenshots/address-book.spec.tswith component-keyed test structuretoHaveScreenshotfor baseline comparisonChecklist