Skip to content

Overhaul iOS PR reliability, performance, and UI#857

Merged
arul28 merged 2 commits into
mainfrom
ade/okay-start-skill-purpose-lane-9eeb811c
Jul 18, 2026
Merged

Overhaul iOS PR reliability, performance, and UI#857
arul28 merged 2 commits into
mainfrom
ade/okay-start-skill-purpose-lane-9eeb811c

Conversation

@arul28

@arul28 arul28 commented Jul 18, 2026

Copy link
Copy Markdown
Owner

ADE   Open in ADE  ·  ade/okay-start-skill-purpose-lane-9eeb811c branch  ·  PR #857

Greptile Summary

This PR improves iOS PR list and detail reliability. The main changes are:

  • Lightweight prs_updated invalidation pushes from the sync host to iOS.
  • Bounded GitHub snapshot history loading with exact state counts.
  • A new aggregate mobile GitHub detail command for unmapped PRs.
  • Refactored iOS PR list, row, and detail rendering paths.
  • CLI, compatibility contract, docs, and tests for the new snapshot controls.

Confidence Score: 5/5

Safe to merge with low observed risk.

The changed paths include focused tests for option forwarding, snapshot caching and invalidation, exact counts, and unmapped PR detail loading. No blocking correctness or security issues were identified.

No files require special attention.

T-Rex T-Rex Logs

What T-Rex did

  • Desktop test execution completed with 2 test files and 196 tests passing, exit code 0.
  • CLI test execution completed with 1 test file and 56 tests passing, exit code 0.
  • iOS native validation checks were attempted but blocked in this environment, with xcodebuild exit code 1 and swift exit code 1.

View all artifacts

T-Rex Ran code and verified through T-Rex

Important Files Changed

Filename Overview
apps/desktop/src/main/services/prs/prService.ts Adds exact PR state counts, projected snapshot invalidation, bounded history options, and aggregate mobile GitHub detail loading.
apps/ios/ADE/Services/SyncService.swift Adds snapshot option forwarding, mobile GitHub detail RPC, and prs_updated revision handling.
apps/ios/ADE/Views/PRs/PrsRootScreen.swift Adds memoized GitHub list derivation, state-count tabs, bounded history loading, and PR invalidation refresh handling.
apps/ios/ADE/Views/PRs/PrDetailScreen.swift Adds coordinate-based unmapped PR detail loading with partial sidecar handling and warm cache integration.
apps/ade-cli/src/services/sync/syncHostService.ts Adds lightweight authenticated PR snapshot invalidation broadcast support.
apps/ade-cli/src/services/sync/syncRemoteCommandService.ts Forwards bounded snapshot options and exposes prs.getMobileGithubDetail to paired clients.
apps/desktop/src/shared/types/prs.ts Extends PR shared types for state counts and mobile GitHub detail payloads.
apps/ios/ADE/Models/RemoteModels.swift Adds iOS Codable models for GitHub snapshot counts and aggregate mobile detail payloads.
apps/ios/ADE/Views/PRs/PrHelpers.swift Adds helper utilities for partial mobile GitHub detail merging and optimized diff rendering.
apps/desktop/src/main/services/prs/prService.test.ts Adds tests for exact state counts, stale cache behavior, invalidation races, and unmapped mobile detail.
apps/ios/ADETests/PrMergeMergeStateTests.swift Adds tests for partial mobile GitHub detail merge semantics.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant GitHub
participant Desktop as Desktop PR Service
participant Host as Sync Host
participant iOS as iOS PR UI

GitHub->>Desktop: webhook / snapshot data changes
Desktop->>Desktop: invalidate projected GitHub snapshot
Desktop->>Host: emit prs-updated runtime event
Host-->>iOS: prs_updated invalidation envelope
iOS->>Host: "prs.getGitHubSnapshot(revalidate=false, includeStateCounts=true)"
Host->>Desktop: execute snapshot command
Desktop-->>Host: projected snapshot + repo state counts
Host-->>iOS: updated PR list snapshot
iOS->>Host: prs.getMobileGithubDetail(repo, number)
Host->>Desktop: execute aggregate detail command
Desktop->>GitHub: fetch PR anchor and sidecars
Desktop-->>Host: detail snapshot + unavailableParts
Host-->>iOS: render full or partial PR detail
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
participant GitHub
participant Desktop as Desktop PR Service
participant Host as Sync Host
participant iOS as iOS PR UI

GitHub->>Desktop: webhook / snapshot data changes
Desktop->>Desktop: invalidate projected GitHub snapshot
Desktop->>Host: emit prs-updated runtime event
Host-->>iOS: prs_updated invalidation envelope
iOS->>Host: "prs.getGitHubSnapshot(revalidate=false, includeStateCounts=true)"
Host->>Desktop: execute snapshot command
Desktop-->>Host: projected snapshot + repo state counts
Host-->>iOS: updated PR list snapshot
iOS->>Host: prs.getMobileGithubDetail(repo, number)
Host->>Desktop: execute aggregate detail command
Desktop->>GitHub: fetch PR anchor and sidecars
Desktop-->>Host: detail snapshot + unavailableParts
Host-->>iOS: render full or partial PR detail
Loading

Reviews (2): Last reviewed commit: "fix(ship): stop gating on Copilot review..." | Re-trigger Greptile

Summary by CodeRabbit

  • New Features

    • Added bounded GitHub pull request history loading with “Load more” support.
    • Added optional exact open, merged, and closed pull request counts.
    • Added detailed viewing for unmapped GitHub pull requests, including reviews, comments, files, commits, checks, and activity when available.
    • Added automatic refresh notifications when pull request data changes.
    • Added a manual “Map to lane” option for unmapped pull requests.
  • Bug Fixes

    • Preserved previously loaded detail information when some refreshed sections are unavailable.
    • Improved reconciliation of GitHub pull requests with locally mapped pull requests.
  • Documentation

    • Updated CLI help and examples for the new snapshot options.

@vercel

vercel Bot commented Jul 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
ade Ignored Ignored Preview Jul 18, 2026 5:04am

@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 1d72cc2b-0755-4e2d-bb06-02adcaa6b091

📥 Commits

Reviewing files that changed from the base of the PR and between 2cc83ee and 9d0281e.

⛔ Files ignored due to path filters (3)
  • docs/features/pull-requests/README.md is excluded by !docs/**
  • docs/features/sync-and-multi-device/ios-companion.md is excluded by !docs/**
  • docs/playbooks/ship-lane.md is excluded by !docs/**
📒 Files selected for processing (29)
  • .agents/skills/ship/SKILL.md
  • apps/ade-cli/README.md
  • apps/ade-cli/src/bootstrap.ts
  • apps/ade-cli/src/cli.test.ts
  • apps/ade-cli/src/cli.ts
  • apps/ade-cli/src/services/sync/syncHostService.test.ts
  • apps/ade-cli/src/services/sync/syncHostService.ts
  • apps/ade-cli/src/services/sync/syncRemoteCommandService.test.ts
  • apps/ade-cli/src/services/sync/syncRemoteCommandService.ts
  • apps/ade-cli/src/services/sync/syncService.ts
  • apps/desktop/src/main/services/adeActions/registry.test.ts
  • apps/desktop/src/main/services/adeActions/registry.ts
  • apps/desktop/src/main/services/prs/prService.test.ts
  • apps/desktop/src/main/services/prs/prService.ts
  • apps/desktop/src/shared/syncMobileCompatibility.ts
  • apps/desktop/src/shared/types/prs.ts
  • apps/desktop/src/shared/types/sync.ts
  • apps/ios/ADE/Models/RemoteModels.swift
  • apps/ios/ADE/Services/SyncService.swift
  • apps/ios/ADE/Views/PRs/PrDetailOverviewTab.swift
  • apps/ios/ADE/Views/PRs/PrDetailScreen.swift
  • apps/ios/ADE/Views/PRs/PrHelpers.swift
  • apps/ios/ADE/Views/PRs/PrModels.swift
  • apps/ios/ADE/Views/PRs/PrRowCard.swift
  • apps/ios/ADE/Views/PRs/PrRowCardPreviews.swift
  • apps/ios/ADE/Views/PRs/PrsRootScreen.swift
  • apps/ios/ADE/Views/PRs/PrsRootScreenPreviews.swift
  • apps/ios/ADETests/ADETests.swift
  • apps/ios/ADETests/PrMergeMergeStateTests.swift

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.


📝 Walkthrough

Walkthrough

Changes

GitHub PR snapshot and mobile detail flow

Layer / File(s) Summary
CLI options and invalidation broadcast
.agents/skills/ship/SKILL.md, apps/ade-cli/...
Adds bounded snapshot flags, exact-count options, mobile detail command forwarding, and lightweight PR update broadcasts.
Desktop snapshot and detail service
apps/desktop/src/main/services/prs/..., apps/desktop/src/shared/...
Adds exact state-count caching, invalidation handling, and best-effort unmapped PR detail aggregation.
Sync contracts and iOS transport
apps/ios/ADE/Models/..., apps/ios/ADE/Services/SyncService.swift
Adds mobile detail models, snapshot arguments, remote revision tracking, and request deduplication.
iOS unmapped detail and reconciliation
apps/ios/ADE/Views/PRs/PrDetailScreen.swift, PrHelpers.swift
Loads route-only GitHub PR details, preserves unavailable cached sidecars, and reconciles mapped and projected PR rows.
iOS projection, navigation, and row rendering
apps/ios/ADE/Views/PRs/*
Adds paged history, exact counts, webhook reloads, synthetic detail navigation, lane linking, and revised row rendering.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

  • arul28/ADE#289: Both modify desktop GitHub PR snapshot plumbing.
  • arul28/ADE#627: Both modify iOS PR reload gating and projection revisions.
  • arul28/ADE#726: Both extend mobile sync compatibility and remote PR actions.

Suggested labels: desktop, ios, docs

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ade/okay-start-skill-purpose-lane-9eeb811c

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 SkillSpector (2.3.11)
.agents/skills/ship/SKILL.md

SkillSpector returned invalid JSON output


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@arul28

arul28 commented Jul 18, 2026

Copy link
Copy Markdown
Owner Author

@copilot review but do not make fixes

@arul28
arul28 merged commit be83085 into main Jul 18, 2026
31 of 33 checks passed
@arul28
arul28 deleted the ade/okay-start-skill-purpose-lane-9eeb811c branch July 18, 2026 05:05
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