Skip to content

Commands

All commands are under the PDF Case Review category in the Command Palette. The ones that act on a highlight take the highlight you right-clicked in the Highlights view, or the view's current selection.

While a PDF is the active editor, its tab's title bar carries icon buttons for the three headline commands: Generate Report ($(output)), Summarize with AI ($(sparkle), trusted workspaces only), Add Document Note ($(note)) and Configure ($(gear)), a hub for choosing the AI provider, adding a second AI account guided (it writes ai.accounts and requiredAccount, creates the login directory, then opens a sign-in terminal), reviewing the AI consent recorded for the document, setting the summary length (Summary Length... writes ai.maxWords at the scope where it is defined), applying a category preset, and jumping into the category or extension settings. The viewer's own toolbar also holds a category dropdown; see How to: categories.

Highlights view

The PDF Case Review activity-bar icon opens the Highlights view for the active PDF. Rows show the highlighted passage (up to 60 characters) with its page; hover for the full quote and note. Grouping follows pdfCaseReview.highlights.groupBy. A Document notes group lists document-level notes first; in page grouping, a page's note appears above its highlights.

CommandWhereWhat it does
PDF Case Review: Go to Highlightclick a row, Ctrl+Alt+G, paletteScrolls the PDF to the highlight and flashes it. Invoked with nothing selected, it shows a picker of every highlight, so the viewer is reachable without a mouse.
PDF Case Review: Edit NoteCtrl+Alt+N, click a note row, row context menu, paletteOpens the target in the Note view (below). With no selection it asks where the note should go (the page in view, or a document note).
PDF Case Review: Set Categoryrow context menu, palettePicks another category for the highlight; the viewer recolors it and the PDF is updated on the next save.
PDF Case Review: Delete Highlightrow context menu (inline trash icon), paletteDeletes the highlight. When the viewer shows it, the deletion goes through PDF.js and Ctrl+Z inside the viewer brings it back with its note.
PDF Case Review: Delete Notenote row context menu (inline trash icon), paletteDeletes a page or document note.
PDF Case Review: Copy Quoterow context menu, paletteCopies the highlighted text.
PDF Case Review: Group by Page / Group by Categoryview titleSwitches the grouping (remembered in pdfCaseReview.highlights.groupBy).
PDF Case Review: Reveal Sidecarview title, paletteOpens the document's .pdf.review.json in a text editor (after the first save).

Notes

The Note view (under Highlights in the activity bar) edits one target at a time: a highlight (with its quote, citation and a category dropdown), a page note, or a document note. The Markdown textarea autosaves as you type and on blur; Reveal jumps to the highlight or page in the viewer; Delete removes the target.

CommandWhereWhat it does
PDF Case Review: Add Page NotepaletteOne note per page (the current page when the viewer is open). Submitting an empty note removes it.
PDF Case Review: Add Document NoteCtrl+Alt+D, paletteA titled note on the whole document, for example Thesis.

Reports

CommandWhereWhat it does
PDF Case Review: Generate ReportCtrl+Alt+R, paletteRenders the active document's highlights and notes to pdfCaseReview.report.defaultFormat (ask shows a picker). Output is <name>.review.<md|docx|pdf> beside the PDF or in pdfCaseReview.report.outputFolder; existing reports get a numbered copy unless report.overwrite is on.
PDF Case Review: Generate Report As...paletteThe same with a format picker every time.
PDF Case Review: Export Annotated PDF...paletteWrites a copy of the PDF with your highlights embedded as real annotations, plus a sidecar beside it, to a path you choose (<name>.annotated.pdf by default). The original is never the destination. A publisher-protected PDF is copied byte-identical (never decrypted) and the highlights travel in the sidecar alone; the command says so every time.

AI (optional, off by default)

Every path below goes through the eligibility question first: the dialog names the signed-in account and the document, states exactly what will be sent, and asks whether it may be fed into AI context. By default the summary commands send highlights, notes and text extracted from the document (pdfCaseReview.ai.contextScope: "document-text"); the notes scope keeps the PDF's text on this machine, and widening the scope re-asks. The PDF file itself is never sent under either scope. AI text in reports renders in grey italics with a legend.

CommandWhat it does
PDF Case Review: Choose AI Provider...Probes the claude and codex CLIs and sets pdfCaseReview.ai.provider; unavailable options show a one-line fix. Also reached by clicking the AI status bar item, and from the Switch AI Provider... button on a failed run's error notification (picking a different CLI there reruns the command; a failure that reads like a usage limit is reported as such, with the raw error in the output channel). Each CLI is probed under the login the active document's rules select (else the default login), so the email shown is the one the consent dialog will verify: ✓ you@school.edu · HBS · account "school", ✓ installed, not signed in under ~/.codex-school (account "school"), or ✓ installed · no Codex login registered as "school" (allowed; the confirmation then offers Add an AI Account...). With no PDF open the default logins are shown. Picking Manual starts the clipboard flow. Switching providers re-asks the consent question on the next run.
PDF Case Review: Summarize with AIThe one entry point: with no provider configured it opens the provider picker first, then runs the configured CLI on your highlights and notes and caches the executive summary in the sidecar. Under the default ai.contextScope: "document-text" the prompt also carries the document text, extracted per page with citations, and the consent dialog shows the coverage (pages with extractable text, approximate words). With ai.reviewPrompt on (the default) the assembled prompt then opens in an editor tab with a word and token estimate and waits for Send to Claude Code / Send to Codex; the provider receives the tab's contents, edits included, and the reply opens beside it (ai/summary-<timestamp>.prompt.md and .output.md under the extension's global storage, newest 20 kept). Stops with "nothing to summarize yet" when there are no highlights, no notes and (under document text) no extractable text. Cancellable; 120 second timeout.
PDF Case Review: Show AI SummaryOpens the summary cached in the sidecar in a new editor tab, headed by the provider, time, model and account that produced it. Says so when no summary has been generated yet.
PDF Case Review: Add AI Page Context...Offers pages with a dense, lightly-annotated highlight cluster (ai.pageContext.minHighlights), then asks the configured CLI for 2 to 4 sentences of context per picked page; one consent dialog covers the batch. Cached in the sidecar and rendered above those pages in the report.
PDF Case Review: Copy Summary PromptPuts the summary prompt and your notes on the clipboard for any chat; under the default ai.contextScope: "document-text" the copied prompt includes the document text too, after the same consent dialog, and the same "nothing to summarize yet" check applies. Works with the provider off.
PDF Case Review: Paste AI SummarySaves the clipboard as the document's AI summary, labeled manual.
PDF Case Review: Review AI ConsentShows the recorded attestation (account, provider, dates) and offers to revoke it.

Categories and keyboard highlighting

CommandWhereWhat it does
PDF Case Review: Highlight Selection with Category...Ctrl+Alt+1 to Ctrl+Alt+9 (Cmd+Alt on macOS) while the PDF has focus, or the paletteTurns the viewer's current text selection into a highlight of the Nth category in the document's palette. In PDF.js's highlight mode the mouse selection is already a highlight by the time you press the shortcut, so with no text selection the shortcut recolors the selected highlight instead; with neither, a hint is shown. Either way the category becomes the default for the next highlight. From the palette a picker lists the categories.
PDF Case Review: Apply Category Preset...paletteReplaces pdfCaseReview.categories (user or workspace settings) with a preset: Business case, Academic paper, Contract, or one from pdfCaseReview.categoryPresets. New documents use it.
PDF Case Review: Sync Categories from SettingspaletteCopies the settings palette into the open document (each sidecar carries its own categories) and offers to save and reload the viewer so the new colors apply. Highlights whose category no longer exists show under "Uncategorized".

Status bar

While a PDF is active the status bar shows $(notebook) N highlights · PDF synced, sidecar only (protected PDF or embedding turned off), unsaved, or PDF write failed. Clicking it focuses the Highlights view.

Next to it, in a trusted workspace, the AI item shows the provider and the account the active document would run under: $(sparkle) AI off, $(sparkle) Claude Code (default login), $(sparkle) Claude Code · school (the ai.accounts entry a rule selected), $(sparkle) Codex · rule pending (a rule needs the document's authorization line and the viewer has not loaded it yet), or $(sparkle) Claude Code · desktop only on the web host. A warning background marks a run that would be refused as configured: $(warning) Codex · no "school" login (the id has no entry for the active provider) or $(warning) Codex · "x" unknown (the id is in no ai.accounts entry). The tooltip adds the login directory, the signed-in email and organization probed from it, and the rule that selected the account. Clicking it runs Choose AI Provider....

When the PDF changed outside the extension

Opening a document whose PDF bytes no longer match what the sidecar recorded shows a warning: highlight positions may no longer line up. Keep positions accepts the current file (recorded with the next save); dismissing changes nothing, and the warning returns on the next open. Re-anchoring highlights to moved text is planned for a later release.

Keyboard

The full table is in Keybindings. In short: Ctrl+Alt+1..9 highlight with the Nth category, Ctrl+Alt+N edits the note, Ctrl+Alt+D adds a document note, Ctrl+Alt+G goes to a highlight, Ctrl+Alt+H focuses the Highlights view, Ctrl+Alt+R generates the report (Cmd+Alt on macOS). Inside the viewer, Ctrl+S (Cmd+S) saves through VS Code; PDF.js's own "save" (a download) is disabled. Ctrl+Z / Ctrl+Y inside the viewer undo and redo highlight edits through PDF.js; undoing back to the saved state does not clear the dirty flag (ADR-0005).