fix(rider-app): personalize chat surfaces + show driver vehicle (#79, #80)#86
Merged
variablefate merged 2 commits intomainfrom Apr 29, 2026
Merged
fix(rider-app): personalize chat surfaces + show driver vehicle (#79, #80)#86variablefate merged 2 commits intomainfrom
variablefate merged 2 commits intomainfrom
Conversation
Replace the generic "Chat" / "Chat with Driver" labels with personalized "Chat with [name]" copy in two surfaces: - RidestrUI's RideStatusCard chat button label (uses the driverName the card already receives, falls back to "Chat with Driver" when nil/blank). - RoadFlare's WiredChatView navigation title (resolves the driver name through the existing AppState.driverDisplayName helper, falls back to "Chat" when nil/blank). Trusted-driver model: riders know their driver, so reinforce that relationship and disambiguate when chatting across multiple rides. Closes #79
The driver's vehicle description (color + make + model) is already
published in their Kind 0 profile and exposed via UserProfileContent's
vehicleDescription computed property, but it was never plumbed into the
rider's active-ride card. Without it, riders couldn't recognize which
car was theirs.
- Add an additive `vehicleDescription: String?` parameter (default nil,
non-breaking) to RidestrUI.RideStatusCard.
- Render it as a subtitle under the driver-name line on the en-route
("driver is on the way") and arrived ("driver has arrived") stages
only — hidden during idle/waiting/inProgress/completed where it
stops being actionable.
- Wire it from RoadFlare.ActiveRideView using the existing
AppState.driverProfile helper, falling back to nil when the cached
profile lacks vehicle info (the SDK's vehicleDescription already
returns nil rather than emitting partial junk like "Black undefined
undefined").
Closes #80
Owner
Author
First pass.Three independent review passes (correctness / CLAUDE.md compliance / git history). Filtered by category (improve-codebase, lower-entropy, fix-bug); discarded scoring and nits. In-scope findings: 0.
Adjacent (out-of-scope) finding: the new sites trim whitespace before Pass 1 is clean — no pass 2 needed. 🤖 Generated with Claude Code |
variablefate
added a commit
that referenced
this pull request
Apr 29, 2026
Bumps CURRENT_PROJECT_VERSION from 1 to 2 across all 8 build configurations in project.pbxproj. Build 1 was the live 1.0 build uploaded 2026-04-16 20:25 PT; build 2 is the 1.0.1 candidate shipping the merged work since (#66, #69, #71, #76, #84, #85, #86). Per RELEASING.md, tag will land after App Store Connect confirms upload acceptance, not before. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
Two small ride-screen polish fixes for the iOS 1.0.1 ship, bundled in a single PR because both touch
RidestrUI/Sources/RidestrUI/Components/RideStatusCard.swiftand would have collided in separate branches. Each issue is a separate commit forgit blameclarity.Closes #79 — chat surfaces use the driver's name
RidestrUI.RideStatusCardchat button:Label("Chat with Driver", …)→Label(Self.chatButtonLabelText(driverName: driverName), …). Falls back to the generic copy whendriverNameis nil/blank.RoadFlare.WiredChatViewnavigation title:"Chat"→"Chat with [name]"resolved through the existingAppState.driverDisplayName(pubkey:)helper. Falls back to"Chat"when nil/blank.RideStatusCard.chatButtonLabelText(driverName:)static helper plus 2 unit tests covering present/nil/empty/whitespace driver names.RoadFlare/RoadFlare/Views/Ride/ChatView.swiftnow importsRidestrSDKso it can readcoordinator?.session.driverPubkey.Closes #80 — show driver vehicle on driver-on-the-way / arrived
RidestrUI.RideStatusCard: additivevehicleDescription: String? = nilparameter (defaultnil, non-breaking — see issue Rider can\'t see car make/model/color on "driver on the way" / "driver arrived" screens #80's M-effort note).driverAccepted/rideConfirmed/enRoute) and arrived (driverArrived) stages only. Hidden onidle/waitingForAcceptance/inProgress/completedsince it stops being actionable there.ActiveRideViewviaappState.driverProfile(pubkey:)?.vehicleDescription— the SDK'svehicleDescriptionalready returnsnilrather than emitting"Black undefined undefined"when fields are missing, so no host-side guard needed.fullInit/minimalInittests updated to round-tripvehicleDescription.Test plan
swift test --filter RideStatusCardonRidestrUIpackage — 10/10 pass (8 pre-existing + 2 new chat-label tests).xcodebuild build -scheme RoadFlarefrom worktree — BUILD SUCCEEDED.xcodebuild test -scheme RoadFlareTests— see "Known flakes" below."Chat with [name]", button reads"Chat with [name]".Known flakes (unrelated to this PR)
Three RoadFlareTests subscription/timing tests failed on first run; none touch the UI code in this PR (they exercise
RideCoordinator/ChatCoordinatorasync subscription replacement usingeventually {}):RideCoordinatorTests/locationSubscriptionRestartsAfterAppliedNewerKeyShareChatCoordinatorTests/cleanupAsyncDoesNotUnsubscribeReplacementSubscriptionChatCoordinatorTests/subscribeToChatReplacesExistingSubscriptionRe-running these in isolation to confirm flake (will update the PR if any reproduce).
Cross-app symmetry
For #79, the Drivestr Android driver app likely needs a parallel fix on its side ("Chat with Rider" → "Chat with [rider name]"). Worth filing a parallel issue in the
ridestrrepo — out of scope for this PR.🤖 Generated with Claude Code