Files
cs249r_book/book/vscode-ext/README.md
Vijay Janapa Reddi dcc8afb4cc Parallel builds: add HTML/EPUB format picker, clearer reporting
- debugCommands: prompt for format (PDF, HTML, EPUB) in Build All Chapters (Parallel)
- parallelDebug: clearer success/fail messages, Open Reports Folder, REPORT.md header
- README: document volume + format selection for parallel builds
2026-02-15 17:41:10 -05:00

89 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MLSysBook VS Code Extension
The MLSysBook extension provides editor-first workflows for building, debugging, and validating the book without leaving VS Code.
## Loading the extension (so you see the latest code)
The editor runs **one** copy of the extension. Reload only reloads that copy. If that copy isnt from this repo, you wont see new changes (e.g. Reset Quarto config) until you point the editor at this repos extension.
**Option A Run from repo (recommended when developing)**
1. Open the **repo root** (`mlsysbook-vols`) in Cursor/VS Code.
2. Run **`npm run compile`** in `book/vscode-ext` (or run it from the repo root: `cd book/vscode-ext && npm run compile`).
3. Press **F5** (or Run → Start Debugging → “Run MLSysBook Extension”).
4. A **new window** opens; that window is running the extension from `book/vscode-ext`. Use that window for the book (Reset, Build, etc.).
5. After code changes: run **compile** again, then in that new window use **Developer: Reload Window** so it picks up the new code.
**Option B Install from this folder**
1. Command Palette → **Developer: Install Extension from Location…**
2. Choose the folder: **`mlsysbook-vols/book/vscode-ext`**.
3. Reload the window when prompted.
4. After code changes: run **`npm run compile`** in `book/vscode-ext`, then **Developer: Reload Window**. No need to install again unless you remove the extension.
## Binder-First Integration
This extension treats `./book/binder` as the operational backend.
- Build and debug commands execute Binder subcommands.
- Validation actions execute `binder validate ...`.
- Maintenance actions execute `binder maintain ...`.
## Work vs Configuration
The extension separates daily work from configuration:
- Work views: Build, Debug, Recent Runs, Navigator, Validate, Publish/Maintenance
- Configuration view: execution mode, navigator preset, visual preset, and extension settings
This keeps daily actions focused while preserving easy access to tuning controls.
## Why This Matters
- One public CLI contract for terminal, extension, and CI.
- Reduced drift between script behavior and editor behavior.
- Better diagnostics with optional machine-readable output (`--json`) from Binder validation.
## Core Workflows
- Build chapter: `./book/binder build html <chapter>` / `./book/binder build pdf <chapter>`
- Debug failures: `./book/binder debug <pdf|html|epub> --vol1|--vol2`
- Validate content: `./book/binder validate all`
- Maintenance checks: `./book/binder maintain repo-health`
## Parallel builds (Test All Chapters)
**Build All Chapters (Parallel)** in the Debug view runs each chapter in a separate git worktree so multiple builds run at once. You choose **volume** (Vol I / Vol II) and **format** (PDF, HTML, or EPUB).
**Requirements:**
1. **Open the repo root** — Open the folder that contains `book/` (e.g. `mlsysbook-vols`), not a subfolder like `book/` or `book/quarto/`. The extension needs `book/binder` to be present to register commands and run parallel jobs.
2. **Git in PATH** — Parallel mode uses `git worktree add --detach`; ensure `git` is available in the environment where the extension runs.
3. **Optional settings** (VS Code/Cursor → Settings → MLSysBook):
- `mlsysbook.parallelDebugWorkers` — number of concurrent builds (default: 4).
- `mlsysbook.parallelDebugRoot` — directory for worktrees under repo root (default: `.mlsysbook/worktrees`).
- `mlsysbook.keepFailedWorktrees` — keep worktrees for failed chapters for inspection (default: true).
If worktree creation fails, check the **MLSysBook Parallel Debug** output channel; the first failure will include a tip about repo root and git.
## Quarto Visual Customization
The extension includes QMD-focused visual highlighting to improve scanability in long Quarto documents.
Recommended baseline:
- `mlsysbook.enableQmdChunkHighlight = true`
- `mlsysbook.qmdVisualPreset = balanced`
- `mlsysbook.highlightInlineReferences = true`
- `mlsysbook.highlightLabelDefinitions = true`
- `mlsysbook.highlightDivFenceMarkers = true`
What gets emphasized:
- Inline references like `@fig-...`, `@tbl-...`, `@sec-...`
- Label definitions like `{#fig-...}` and `#| label: ...`
- Quarto div fence markers (`:::` / `::::`) and region blocks (callouts/divs/code fences)
## Notes
- Legacy script entrypoints still exist for compatibility in some areas.
- For Binder-covered tasks, direct script invocation is soft-deprecated.