Skip to content

Largest PR Test - #25

Draft
enif-lee wants to merge 169 commits into
demo/dfrom
refactor/phase-9-large-sot-split
Draft

Largest PR Test#25
enif-lee wants to merge 169 commits into
demo/dfrom
refactor/phase-9-large-sot-split

Conversation

@enif-lee

@enif-lee enif-lee commented Aug 15, 2026

Copy link
Copy Markdown
Owner

Why this PR exists

Largest-PR fixture for pr+ load testing: Conversation first paint, Diff virtualization, and ~100 inline review threads scattered across the tree.

Open from the pulls list (?prp_page=conversation&prp_number=25) or the native Files tab. Safe to leave open — not intended to merge.

pr+ Diff

Shape

Surface Approx.
Files 658
Additions ~195k
Deletions ~2.5k
Inline review threads ~105
Files with threads 68

Base is demo/d ← head refactor/phase-9-large-sot-split (82f1cda). Threads are tagged [perf-fixture] so they can be grepped or removed later.

Suggested exercises

  1. List → modal handoff — title, labels, and this milestone should sketch in before core fetch.
  2. Conversation — scroll the description, task list, mermaid, and timeline.
  3. Diff — jump files, hold j/k, open several [perf-fixture] threads, expand a resolved/unresolved mix.
  4. Leave and reopen from /pulls twice — title/body should still first-paint from cache.
flowchart LR
  List["/pulls sketch"] --> Modal["pr+ modal"]
  Modal --> Conv[Conversation]
  Modal --> Diff[Diff + threads]
  Diff --> Virtual[Virtual rows]
  Diff --> Threads["~105 inline threads"]
Loading

Checklist

  • Large file tree (host / modal / fetch / tests)
  • Scattered inline comments ([perf-fixture])
  • Labels + milestone for header / aside chrome
  • Optional: add a few replies under a thread to stress lazy comments
  • Optional: resolve a handful and confirm deferred bodies
Sample snippet (ignore — fixture only)
function chooseOpenFirstPaintDetail(opts) {
  // memory (rich) → IDB title/body → list sketch
  return { detail, source, keepCache };
}

Demo only. Review comments are synthetic load, not a real review of Phase 9.

enif-lee and others added 30 commits July 21, 2026 18:15
Allows APPROVE / REQUEST_CHANGES on demo PRs without self-review,
so list badges can show Approved and Changes requested states.
Include a live PR list capture showing tree indents, review badges, and
branch chips so the product overview is easier to understand at a glance.
Keep only the screenshot under the overview section.
Translate product overview, features, install, PAT notes, and development
docs while keeping logo and demo screenshot placement.
Align manifest, package, and README badge for the latest store package.
Document data handling, optional PAT storage, host/storage justifications,
and link the policy from the README for store submission.
Commit the logo and demo screenshot under .jpeg extensions so GitHub
renders the README images correctly.
Open a centered React modal from the PR list without full navigation, expand
to near-fullscreen Diff with file tree and virtualized rows, support
Ctrl/Cmd+F across off-screen content, and wire conversation, reviews,
checks, and line comments through the background API bridge.
Query refinements that keep hitIndex at 0 still scroll to the new match via resolveQuerySearchState; next/prev wraps a single hit the same way. Host reuses the React root on prop updates so layout, scroll, and search state survive detail refresh, and the modal bundle maps createRoot correctly for production IIFE builds.
Rebuild the modal with shadcn-style components and GitHub color-mode theming,
conversation overview with sanitized markdown, nested file tree, syntax-highlighted
virtualized diffs, default-collapsed large/generated files via gitattributes signals,
and inline review comments with next/prev navigation helpers.
Treat linguist-generated=true as enabled, load collapse helper in the service
worker, and re-annotate files in the modal so fetched attributes override weak
SW defaults. Cover non-hardcoded *.pb.go paths in pure and fetchPrDetail tests.
…uting

Ship a production-ready PR modal overhaul on the existing virtualized diff
foundation:

- Refactor modal into TypeScript modules (views, common components, zustand
  store, pure libs) with esbuild IIFE bundle and real typecheck.
- Markdown Write/Preview composers (no B/I toolbar), paste/drop attachments
  via Contents API, hljs snippets, anchored searchable selects, header
  subscribe, conditional checks, merge-box check detail, icon edit/delete,
  thread collapse, and optimistic reply merge that survives host rehydrate.
- Deep-link URI (pr+page / pr+number / pr+position) with history.replaceState;
  restore order sessionStorage then URI; clear residual pr+ and spaced keys
  on close; reset comment focus per PR open.
- Host/content restore path, upload bridge, and expanded unit/fixture tests
  including URI, attach merge, and memo render counts.
Add an icon control in the PR detail header to switch between the
centered modal shell and a right-docked side sheet. Preference is stored
in localStorage (prp:shell) and reapplied on the next open; conversation,
diff, and other features stay the same under both shells.
Rename Close PR to Close, remove the Commands button (palette remains
available via keyboard), and replace coarse loading blocks with finer
conversation/diff/header skeletons so stats and action chrome no longer
shift layout while loading.
Replace the Refreshing… status strip with a 2px accent progress overlay
on the modal top edge so soft revalidation no longer shifts layout.
Reset font-family on inline thread and comment rows so review text uses
the same proportional UI font as conversation view, not the mono code font
inherited from the virtualized diff list. File paths stay monospace.
Allow collapsing the Diff file tree to a thin expand rail and dragging a
vertical handle to resize navigator width (clamped). Persist collapsed
state and width in localStorage (prp:file-nav) for subsequent opens.
When the shell preference is side sheet, conversation stays a right-docked
panel but Diff expands to full viewport like the modal Diff layout so the
file tree and virtualized list have full width.
Remove dim/blur overlay when shell is side sheet so the underlying GitHub
list stays fully visible; only the sheet panel remains opaque.
Keep overlay hosts transparent for both shells, drop blur that washed to
white, and use a light dark-alpha dim only in modal shell so the page
stays visible. Side sheet backdrop remains fully transparent.
Set conversation side-sheet min width to at least 800px (viewport-capped
on smaller windows) and max to 1200px via clamp, so the panel stays usable.
Match modal dimming (light alpha veil, no blur) for side-sheet mode so
the underlying page is slightly darkened under the transparent overlay.
Increase conversation side-sheet minimum from 800px by ~150px for more
usable conversation/aside layout.
Play sheet slide-out or modal scale-out before unmount, and fade the dim
backdrop, so closing matches open transitions for both shells.
…fsets

Measure the virtual list pane with ResizeObserver instead of a fixed 520px
height, use prefix offsets for comment-heavy variable rows, and raise
comment row estimates so the scroll spacer no longer clips bottom content.
Render real profile photos via github.com/{login}.png (and API avatar_url
when present) with initials fallback on error, across conversation threads,
diff review threads, and people meta lists.
Move overflow scrolling to an outer wrapper so the vertical rail spans the
full commit list height, and add per-item segments so 4+ commits stay linked.
Render GitHub profile images in Add reviewer/assignee options and color
swatches in Add label options, using option meta from builders.
Show mergeability, draft, mergeable_state, and checks as prominent badges
in the merge box, with stronger box styling for ok/warn/muted states.
Add Diff commit/range filtering via GitHub compare, link git refs and SHAs,
replace window.prompt with inline editors/pickers, and fix MV3 message-channel
closes with Promise-based handlers, keep-alive, and retries. Ignore packaged
.crx artifacts.
@enif-lee
enif-lee changed the base branch from demo/e to demo/d August 15, 2026 06:03
@enif-lee enif-lee added the test2 label Aug 15, 2026

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

probe line/side

} catch {
/* ignore */
}
void refreshPrefs();

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-probe] line/side L10

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

probe position

} catch {
/* ignore */
}
void refreshPrefs();

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-probe] position 10

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

probe high-line

.catch((err) => {
creditAllThreadStages();
try {
for (const id of [HOST_ID, embedHostId()]) {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

high 1233

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

probe mid-line

: []),
],
};
const cleanedCacheRc = filterFn

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

mid 617

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

probe dts

code?: string;
pullNumber?: number;
graphqlErrors?: any;
}

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

dts

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

probe css

width: var(--prp-shell-w, 92vw);
height: var(--prp-shell-h, 90vh);
max-width: 100vw;
max-height: 100vh;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

css

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

probe html

Comment thread src/popup.html
@@ -1,30 +1,81 @@
<!DOCTYPE html>
<html lang="ko">
<html lang="en">
<head>
<meta charset="utf-8" />
<title>pr+</title>

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

html

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Perf fixture batch t20 (20 comments). Prefix [perf-fixture].

// steal ⌥I into Diff/Conversation composers.
const finishReviewOpen = Boolean(
typeof document !== 'undefined' &&
document.querySelector('[data-prp-finish-review="1"]')

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 3/100] Question: still correct after host-data-first?

src/modal/hooks/usePrModalHotkeys.ts:607

? liveDiffThreadFocused
: liveConvAnchor.startsWith('review-comment:');
// Code-body selection only — thread/file carets must not force file fold
// (otherwise ← / ⌥F close the file while a thread is focused via ↑↓).

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 4/100] Perf-load thread.

  • file: src/modal/hooks/usePrModalHotkeys.ts
  • line: 1213

const mentionCandidates = b.mentionCandidates;
const milestoneAddRef = b.milestoneAddRef;
const modalSize = b.modalSize;
const mut = b.mut;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 5/100] Virtualization note.

src/modal/hooks/usePrModalSessionRoute.ts:574

/**
* Keep re-requesting conversation nav until focused.
* Virtual list may miss the first paint when the row is off-window / not
* yet in the progressive feed — also kick timeline/thread pagination.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 6/100] Slightly longer body so threads are not all one-liners. Used to exercise Diff inline-thread rendering under load.

creditRefreshThreadLadder();
}
return r;
});

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 7/100] Scatter comment on src/host/modules/props-build.ts:505.

const runDiffContextThreadAction = b.runDiffContextThreadAction;
const runPaletteCommand = b.runPaletteCommand;
const sampleDiffNav = b.sampleDiffNav;
const scheduleDiffReviewFilter = b.scheduleDiffReviewFilter;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 18/100] Slightly longer body so threads are not all one-liners. Used to exercise Diff inline-thread rendering under load.

}
to {
opacity: 0.92;
transform: translateX(32px);

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 19/100] Scatter comment on src/modal/views/chrome/ShellLayout.css:350.

0 0 0 1.5px var(--prp-bg),
0 0 0 2.5px var(--prp-danger);
}
.prp-header__meta-stack__item--check-success {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 20/100] Nit: second look at src/modal/views/chrome/ShellLayout.css L699.

if (hostHasPending) {
for (const c of nextRc) {
if (c?.pending && c.id != null) deletedReviewIds.delete(String(c.id));
}

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 21/100] Question: still correct after host-data-first?

src/modal/lib/composer-attach.ts:338

? next.reviewThreads
: Array.isArray(prev.reviewThreads)
? prev.reviewThreads
: next.reviewThreads;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 22/100] Perf-load thread.

  • file: src/modal/lib/composer-attach.ts
  • line: 675

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Perf fixture batch r1-20 (20 comments). Prefix [perf-fixture].

isContextThreadReplyFocused,
isContextThreadCommentActive,
PRP_CONTEXT_THREAD_TAB_LEAVE,
scrollChildToMaximizeInScroller,

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 23/100] Virtualization note.

src/modal/hooks/useContextThreadActions.ts:333

const scrollDiffCaretIntoView = b.scrollDiffCaretIntoView;
const scrollDiffPage = b.scrollDiffPage;
const scrollDiffThreadUnitIntoView = b.scrollDiffThreadUnitIntoView;
const scrollFileNavRowIntoView = b.scrollFileNavRowIntoView;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 24/100] Slightly longer body so threads are not all one-liners. Used to exercise Diff inline-thread rendering under load.

Comment
</button>
) : null}
</div>

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 25/100] Scatter comment on src/modal/views/diff/VirtualDiffRows.tsx:328.

const qForRow = isSearchMatch ? searchQuery : '';

// Leaf store subscription: only this row re-renders when its key changes.
// Middles stay "middle" under multi extend → no re-render. Override for tests.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 26/100] Nit: second look at src/modal/views/diff/VirtualDiffRows.tsx L655.

// Yield between chunks (skip after last)
if (end < n) {
await yieldToMain();
}

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 27/100] Question: still correct after host-data-first?

src/modal/lib/search-index.ts:323

conversationCommentFocused: opts.conversationCommentFocused,
focusedReviewThread: opts.focusedReviewThread,
diffThreadFocused,
hasLineSelection,

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 38/100] Nit: second look at src/modal/lib/shortcut-policy-actions.ts L501.

: pathTarget.page || null;
const position =
r.position != null && String(r.position).trim()
? String(r.position).trim()

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 39/100] Question: still correct after host-data-first?

src/host/modules/host-core-timeline-a.ts:201

tag === 'SCRIPT' ||
tag === 'STYLE' ||
tag === 'LINK' ||
tag === 'TEMPLATE' ||

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 40/100] Perf-load thread.

  • file: src/host/modules/host-core-timeline-a.ts
  • line: 401

// Real click opens SelectMenu + focuses the control.
return clickControl(hit.el);
}

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 41/100] Virtualization note.

src/host/modules/list-row-lifecycle.ts:187

try {
const d = document.getElementById('command-palette-pjax-container');
return Boolean(d?.open);
} catch {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 42/100] Slightly longer body so threads are not all one-liners. Used to exercise Diff inline-thread rendering under load.

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Perf fixture batch r21-40 (20 comments). Prefix [perf-fixture].

} else {
return Math.max(ROW_HEIGHT, Math.ceil(m));
}
}

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 43/100] Scatter comment on src/modal/components/common/utils.tsx:173.

*/
export function highlightCode(
code: unknown,
filePath?: unknown,

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 44/100] Nit: second look at src/modal/components/common/utils.tsx L345.


export const useModalStore = create<ModalUiState>((set, get) => ({
layoutMode: LAYOUT_CENTERED as LayoutMode,
diffMode: 'unified',

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 45/100] Question: still correct after host-data-first?

src/modal/store/modal-store.ts:139

);
}
}
} catch {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 46/100] Perf-load thread.

  • file: src/modal/store/modal-store.ts
  • line: 277

| 'checks'
| 'development';

export interface HostLoadStage {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 47/100] Virtualization note.

src/host/host-context.d.ts:20

Comment thread src/fetch/pr-detail.ts
let linkedIssues = [];
const developmentIssues: any[] = [];
const projects: any[] = [];
try {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 58/100] Perf-load thread.

  • file: src/fetch/pr-detail.ts
  • line: 507

Comment thread src/fetch/http.ts
try {
const j = await res.json();
if (j?.message) detail = j.message;
// Surface field-level validation (common on 422 replies / review comments)

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 59/100] Virtualization note.

src/fetch/http.ts:244

Comment thread src/fetch/http.ts
(typeof performance !== 'undefined' && performance.now
? performance.now()
: Date.now()) - t0;
recordGraphqlCostEntry({

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 60/100] Slightly longer body so threads are not all one-liners. Used to exercise Diff inline-thread rendering under load.

token,
{ method: 'PATCH', body: { body: nextBody } }
);
} catch (err: any) {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 61/100] Scatter comment on src/fetch/mutations-meta.ts:242.

token,
{ method: 'POST', body }
);
return {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 62/100] Nit: second look at src/fetch/mutations-meta.ts L483.

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Perf fixture batch r41-50 (10 comments). Prefix [perf-fixture].

}
}
}
}`;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 63/100] Question: still correct after host-data-first?

src/fetch/timeline-items.ts:220

value: {
...base,
event: 'merged',
commitId: node.commit?.oid || null,

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 64/100] Perf-load thread.

  • file: src/fetch/timeline-items.ts
  • line: 439

Comment thread src/onboarding-ui.ts
body.appendChild(
el(
'p',
'prp-onboarding__hint prp-onboarding__hint--pulse',

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 65/100] Virtualization note.

src/onboarding-ui.ts:803

Comment thread src/styles.css
inset: 0;
/* Soft dim — match modal shell (no heavy wash / blur that reads as opaque) */
background: rgba(1, 4, 9, 0.28);
-webkit-backdrop-filter: none;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 66/100] Slightly longer body so threads are not all one-liners. Used to exercise Diff inline-thread rendering under load.

Comment thread src/popup.ts
const name = document.createElement('span');
name.className = 'host-name';
name.textContent = row.host;
name.title = row.host;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 67/100] Scatter comment on src/popup.ts:500.

Comment thread src/storage.ts
...patchObj,
});
// Pin uiLanguage if the patch set it (guards against any normalize slip)
if (Object.prototype.hasOwnProperty.call(patchObj, 'uiLanguage')) {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 68/100] Nit: second look at src/storage.ts L421.

Comment thread src/background/sw-handle-b.ts
async fetchPrTimelineItemsPage(owner: any, repo: any, number: any, opts: any = {}) {
// Prefer TIMELINE_EVENTS + graphql mode (long-stable SW route). Also try
// dedicated TIMELINE_ITEMS type. Never treat REST {events} as a GraphQL page.
const payload = {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 70/100] Perf-load thread.

  • file: src/content-bridge/bridge-fetch-part-b.ts
  • line: 351

/**
* Normalize key for Option/Shift combos (macOS remaps key → glyphs).
* Prefer KeyboardEvent.code for physical J/K/digits when alt or shift held.
*/

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 71/100] Virtualization note.

src/pulls-palette-actions.ts:349

err.status = res?.status;
throw err;
}
return res.result;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 72/100] Slightly longer body so threads are not all one-liners. Used to exercise Diff inline-thread rendering under load.

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Perf fixture batch r51-60 (10 comments). Prefix [perf-fixture].

Comment thread src/pulls-palette-core.ts
id: 'peer-rd',
filterId: 'rd',
action: 'applyFilter',
title: 'Ready (non-draft)',

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 73/100] Scatter comment on src/pulls-palette-core.ts:334.

}
const page = await PRTreeFetch.fetchReviewThreadsPage(
message.owner,
message.repo,

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 74/100] Nit: second look at src/background/sw-handle-a.ts L332.

Comment thread src/dom.ts
return name ? { name, color: 'ededed', description: '' } : null;
}
const name = String(raw.name || raw.label || '').trim();
if (!name) return null;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 75/100] Question: still correct after host-data-first?

src/dom.ts:621

Comment thread src/popup.html
font-size: 11px;
}
.host-list button {
flex-shrink: 0;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 76/100] Perf-load thread.

  • file: src/popup.html
  • line: 369

Comment thread src/pr-list-focus.ts
} catch {
/* ignore */
}
return false;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 77/100] Virtualization note.

src/pr-list-focus.ts:320

Comment thread src/content.ts
else void enableFeatures();
return false;
}
if (message?.type === 'PR_TREE_RATE_LIMIT_CHANGED') {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 78/100] Slightly longer body so threads are not all one-liners. Used to exercise Diff inline-thread rendering under load.

if (area?.get && area?.set) {
const prevRaw = await new Promise((resolve) => {
area.get(['extensionPrefs'], (result: any) => {
resolve(result?.extensionPrefs);

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 79/100] Scatter comment on src/content-bridge/bridge-prefs.ts:243.

Comment thread src/github-endpoints.ts
*/
function stripTrailingSlashes(url: any) {
return String(url || '').trim().replace(/\/+$/, '');
}

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 80/100] Nit: second look at src/github-endpoints.ts L228.

await ensureRateLimitMem();
} catch {
/* proceed if storage cold */
}

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 81/100] Question: still correct after host-data-first?

src/background/sw-rate-limit.ts:207

Comment thread src/content-bootstrap.ts
toggleButton.setMode(enabled ? 'tree' : 'original');
} catch {
/* ignore */
}

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 82/100] Perf-load thread.

  • file: src/content-bootstrap.ts
  • line: 255

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Perf fixture batch r61-70 (10 comments). Prefix [perf-fixture].

keys.push(s[0]);
s = s.slice(1);
}
if (s) {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 83/100] Virtualization note.

src/onboarding-diff-demo.ts:145

Comment thread src/onboarding-core.ts
'a[href*="/pull/"], a[id^="issue_"], .js-issue-row, [data-hovercard-type="pull_request"]'
);
// Unique-ish: count rows preferred
const rows = doc.querySelectorAll(

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 84/100] Slightly longer body so threads are not all one-liners. Used to exercise Diff inline-thread rendering under load.

});
}
} catch {
/* not registered yet — fine */

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 85/100] Scatter comment on src/background/sw-enterprise.ts:105.

Comment thread src/onboarding-hotkeys.ts
const want = String(slot || '').toLowerCase();
if (!want) return false;
const code = String(opts.code || '');
if (/^[1-9]$/.test(want)) {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 86/100] Nit: second look at src/onboarding-hotkeys.ts L91.

Comment thread src/sw-messages.ts
EDIT_ISSUE_COMMENT: 'PR_TREE_EDIT_ISSUE_COMMENT',
EDIT_REVIEW_COMMENT: 'PR_TREE_EDIT_REVIEW_COMMENT',
REQUEST_REVIEWERS: 'PR_TREE_REQUEST_REVIEWERS',
REMOVE_REVIEWERS: 'PR_TREE_REMOVE_REVIEWERS',

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 87/100] Question: still correct after host-data-first?

src/sw-messages.ts:57

Comment thread src/tree.ts
@@ -62,9 +62,9 @@ function buildPrTree(prs) {
childrenByParentHead.get(parent.headRef).push(pr);
}

function buildNode(pr) {
function buildNode(pr: any) {
const childPrs = childrenByParentHead.get(pr.headRef) || [];

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 88/100] Perf-load thread.

  • file: src/tree.ts
  • line: 66

'src/modal/pure/detail-cache.js',
'src/modal/pure/detail-merge.js',
'src/modal/pure/detail-store.js',
'src/modal/pure/load-progress.js',

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 89/100] Virtualization note.

src/content-scripts-list.ts:22

PRTree?: any;
PRTreeDOM?: any;
PRTreeFetch?: any;
PRTreeStorage?: any;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 90/100] Slightly longer body so threads are not all one-liners. Used to exercise Diff inline-thread rendering under load.

Comment thread src/background-shims.d.ts
@@ -0,0 +1,5 @@

declare var PRTreeFetch: any;
declare var PRGithubEndpoints: any;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 91/100] Scatter comment on src/background-shims.d.ts:3.

Comment thread src/onboarding.ts
@@ -0,0 +1,5 @@
/** Barrel onboarding */
export * from './onboarding-hotkeys';
export * from './onboarding-diff-demo';

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 92/100] Nit: second look at src/onboarding.ts L3.

@enif-lee enif-lee left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Perf fixture batch r71-78 (8 comments). Prefix [perf-fixture].

Comment thread src/entries-shim.d.ts
@@ -0,0 +1,4 @@
declare var module: any;
declare var globalThis: any;
declare var chrome: any;

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 93/100] Question: still correct after host-data-first?

src/entries-shim.d.ts:3

Comment thread src/pulls-palette.ts
@@ -0,0 +1,3 @@
/** Barrel */
export * from './pulls-palette-core';

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 94/100] Perf-load thread.

  • file: src/pulls-palette.ts
  • line: 2

Comment thread tests/e2e/lib/harness.mjs
const merge =
host.querySelector('[data-search-anchor="merge"]') ||
host.querySelector('.prp-merge-box-focus-host');
const comment =

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 95/100] Virtualization note.

tests/e2e/lib/harness.mjs:910

for (const it of items) {
const t = (
it.querySelector('.prp-sselect-item__label')?.textContent ||
it.textContent ||

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 96/100] Slightly longer body so threads are not all one-liners. Used to exercise Diff inline-thread rendering under load.

`file header selection missing: ${JSON.stringify({ sel, hdr })}`
);
// Leave hover so dock is not hover-revealed without Opt
evalInPage(`

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 97/100] Scatter comment on tests/e2e/features/selection.mjs:697.

);
expect(cleaned.map((c: any) => Number(c.id))).toEqual([42]);
expect(cleaned.some((c: any) => c.pending)).toBe(false);
expect(detailHasViewerPending(network)).toBe(false);

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 98/100] Nit: second look at tests/stale-local-review-drop.rstest.ts L401.

).toBe(true);
});

test('existing PENDING + asPending never POSTs REST /comments (even if create races 422)', async () => {

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 99/100] Question: still correct after host-data-first?

tests/pending-add-comment-422.rstest.ts:353

expect(shellN).toBeGreaterThan(100);
expect(cvN).toBeGreaterThan(100);
});

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

[perf-fixture 100/100] Perf-load thread.

  • file: tests/architecture-gates.rstest.ts
  • line: 288

@enif-lee enif-lee added documentation Improvements or additions to documentation enhancement New feature or request demo Demo / screenshot fixture perf Performance / load fixture large-diff Very large Diff for load testing and removed test2 labels Aug 15, 2026
@enif-lee enif-lee added this to the Largest PR milestone Aug 15, 2026
@enif-lee enif-lee added test2 perf Performance / load fixture large-diff Very large Diff for load testing and removed documentation Improvements or additions to documentation enhancement New feature or request perf Performance / load fixture large-diff Very large Diff for load testing labels Aug 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

demo Demo / screenshot fixture large-diff Very large Diff for load testing perf Performance / load fixture test2

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant