docs: scaffold docs.reqnroll.net content site with devcontainer (issue #63) - #413
Merged
Conversation
…#63) Adds docs/site/ide-support/ mirroring reqnroll/Reqnroll's MyST/Sphinx doc conventions, with a devcontainer/requirements.txt/conf.py copied from that repo's docs/.devcontainer so contributors can build and preview without checking it out. Drafts real content for every page in the issue #63 outline, revised to add F24/F25 (Hook Match CodeLens) which shipped after the outline was last updated. Screenshot/gif capture points are marked TODO(media) pending a live IDE session. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The Rider install page was the only one written against the not-yet-published, build-from-source state, inconsistent with the VS/VS Code pages which already assume marketplace availability. Align it with the same assumption used elsewhere in these docs.
The legacy Visual Studio extension docs page this settings table lives on will eventually be retired, and the settings themselves don't change, so copy the content in directly rather than pointing readers at a page we'll need to have copied over anyway.
Checked src/Rider: ReqnrollFeatureOnTypeFormattingHandler.kt (with unit tests) implements on-type "|" table realignment, and ReqnrollLspServerDescriptor.lspFormattingSupport wires whole-document Format through the platform's built-in LspFormattingService, both confirmed against the real Rider 2024.3.5 jar per the code comments there. Unlike the completion case (#414), this is a real, tested implementation, not just a suggestive comment — no follow-up issue needed, the page can state it as fact.
Converts syntax-highlighting.md's single TODO(media) note into a tab-set with one tab per IDE (Visual Studio/VS Code/Rider), each with its own sync key. Verified live in a browser: selecting a tab writes to sessionStorage and is still selected after navigating to another page and back, so a reader's IDE choice carries across the whole site for the rest of their session. Adds sphinx_design to requirements.txt/conf.py, and documents the :sync: vs/vscode/rider convention in README.md for converting the remaining TODO(media) pages. Note for the eventual sync into reqnroll/Reqnroll: that repo's own conf.py doesn't load sphinx_design yet and will need it added.
Applies the sphinx-design tab-set pattern (verified in the syntax- highlighting.md proof of concept) across the rest of the site: every editing/navigation feature page with an IDE-varying screenshot or gif now uses a :sync: vs/vscode/rider tab-set, so a reader's IDE choice carries across all of them. Also, three content fixes: - Move Rename Step from navigation-features/ to editing-features/ — it's an editing-time refactor, not a navigation feature. Updated its toctrees, the feature-overview.md table, and troubleshooting.md's link. - Split New Project / Item Templates out of defining-steps.md into its own page (new-project-templates.md), added to the landing page toctree and feature-overview.md. It's a distinct, Visual-Studio-only feature from step-definition scaffolding, not a subsection of it. - Document, per IDE and inside the relevant tab, exactly how to invoke every feature that requires a custom Reqnroll menu or context-menu entry rather than a generic IDE gesture (Find Step Usages, Find Unused Step Definitions, Hook Navigation, Rename Step's ambiguous-binding picker, Comment/Uncomment's menu fallback) — sourced from the actual command placement in src/VisualStudio (ReqnrollMenu.cs, each command's CommandConfiguration) and src/Rider/plugin.xml, plus the VS Code package.json contributions. This closes a real gap: find-usages.md previously told Visual Studio users the native "Find All References" doesn't work and to "use the entry point documented above" without ever naming what that entry point was.
…bled Both extensions can be installed at once without conflict, but running both enabled simultaneously is not supported (duplicate diagnostics, CodeLens, etc. on the same .feature files). The previous wording only said installing one doesn't disable the other, which reads as implicitly endorsing running both at once. Corrected on the landing page, the troubleshooting FAQ, and the Visual Studio install page, with the fix pointing readers at Extensions > Manage Extensions to disable whichever one they're not using.
Adds a tab-set section to troubleshooting.md covering, per IDE, where Reqnroll's LSP server/extension logs are written and how (if at all) to raise verbosity: VS Code's reqnroll.trace.server setting, Visual Studio's REQNROLLVS_DEBUG env var (extension-side only, doesn't touch the server's own log level), and Rider (no user-facing control at all). Sourced from SynchronousFileLogger/LspIdeSupportLogger/Program.cs (VS/server), lspInspectorLogger.ts + package.json (VS Code), and ReqnrollDebugLogger.kt (Rider). Checked for an existing tracking issue before filing a new one: #291 ("No shared user-configuration story across the three clients") already covers exactly this gap, so the docs link it rather than duplicating it.
…ture The opening paragraph led with "single LSP server behind three thin clients" — implementation detail end users don't care about. Reworded to lead with what matters to them: Reqnroll now supports all three major IDEs with the same advanced feature set and a consistent experience across them.
Merges installation/visual-studio.md, vscode.md, and rider.md into a single installation/index.md with a Visual Studio/VS Code/Rider tab-set (:sync: vs/vscode/rider), matching the pattern used everywhere else on the site. Verified live: tabs render correctly including the nested admonitions inside each tab, and switching tabs works. Fixes the one incoming link (troubleshooting.md) that pointed at the now- deleted installation/visual-studio.md.
…docs From the competitive documentation assessment: - New keyboard-shortcuts.md (per-IDE tab-set) consolidates every Reqnroll command's shortcut/menu location in one place, sourced from what's already documented (and verified) on each feature page, plus each IDE's well-known native defaults for format/rename/go-to-declaration/quick-fix (clearly labeled as native, not Reqnroll-specific). - Quick Start and Gherkin dialect/language support are already covered thoroughly in the main Reqnroll docs (docs.reqnroll.net) rather than being IDE-support-specific — link out to them (quickstart guide from the landing page, Feature Language reference from the two pages that mention dialect support) instead of duplicating that content here. - Upgrading.md's "Release notes" section now points at the actual GitHub Releases page as the authoritative changelog, rather than only describing each IDE's native (and easy-to-miss) changelog surface.
…folders Every page's screenshots/gifs get a sibling folder with the page's own base name (e.g. editing-features/syntax-highlighting.md's media lives at editing-features/syntax-highlighting/), never a shared/centralized asset folder. This makes the embed path from any page always exactly one segment down (<page-name>/<file>) regardless of tree depth, so there's no path-depth arithmetic to get wrong -- the main pain point called out with the legacy docs' unorganized media. Naming: <ide>[-<variant>].<ext>, where <ide> is always vs/vscode/rider (the same vocabulary already used for :sync: keys and the support-matrix columns), extension alone conveys screenshot vs. gif, and <variant> is only added when a page needs more than one asset per IDE. Every existing TODO(media) note (59 of them) now states its exact **Target:** path, and the destination folders (holding a .gitkeep) exist for every one. Verified end-to-end with a throwaway test image + build: MyST/Sphinx resolves and copies these sibling-folder image references correctly with no extra configuration. README.md's Media section rewritten to document the convention and the fulfill-a-TODO workflow.
Adds a "Capture conventions" section to README.md covering environment (Windows for all three IDEs, a named light theme per IDE rather than "default" since the three don't agree, default window layout, fixed scaling/font size, the shared Quickstart sample project as fixture), framing (crop to the relevant pane rather than whole-window or extreme close-up, split view for cross-file cause/effect, overlays off except on their own page, a consistent max embed width), and gif-specific guidance (enlarged pointer + click highlighting, pause on the payoff frame, keep short and compressed). Adjusts two of the originally proposed norms after discussion: "white background matching IDE default" is inconsistent across IDEs since VS Code's real default is dark, Visual Studio's is blue, and only Rider's is actually light -- named a specific light theme per IDE instead. "Full- screen captures only" is replaced with "crop to the relevant pane" -- a literal whole-window shot becomes illegible once shrunk to embed width for anything as small as a squiggle or a single CodeLens annotation; reserved full-window captures for install/settings pages where the chrome itself is the subject.
Adds a three-slide carousel (Visual Studio / VS Code / Rider) between the
opening paragraph and the Preview status callout on ide-support/index.md.
Self-contained: sphinx_design's {div} directive builds the slide
structure (so images route through Sphinx's normal asset pipeline once
captured, rather than raw <img> tags that Sphinx wouldn't know to copy),
and a single {raw} html block carries the CSS/JS -- no new dependency
beyond sphinx_design, already required for the per-IDE tab-sets.
Behavior: auto-advances every 5s, pauses on hover/focus, has prev/next
buttons and dot indicators (ARIA-labeled, dots use role="tablist"), and
skips autoplay under prefers-reduced-motion while keeping manual controls
available.
Caught and fixed a real bug before verifying further: the initial colon-
fence nesting had the outer {div} fence shorter than the inner slide
fences, which silently dropped two of the three slides (only the first
rendered). Colon fences need to nest the other way -- outer longer than
inner. Verified the fix live: all 3 slides present, dots/prev/next
generated, dot-click navigation and aria-selected both correct, and
autoplay genuinely advanced a slide during manual testing.
Ships with TODO(media) placeholders (index/vs.png, index/vscode.png,
index/rider.png) like every other page, not fabricated images. README.md
notes the one thing to preserve when filling these in: the
reqnroll-hero-slide div wrapper the carousel JS depends on.
Root cause: a bare <img> as a direct flex item ignores flex-basis/ min-height:0 sizing because it's a replaced element with its own intrinsic aspect ratio -- it rendered at its natural aspect-ratio-derived size regardless of the flex box's actual height, overflowed the fixed- height carousel, and got clipped by its overflow:hidden (visible as the top of the screenshot being cut off once a real image was dropped in; the source PNG itself was never cropped). Fix: wrap the image in its own plain div (reqnroll-hero-media, no intrinsic ratio of its own) that correctly participates in the flex layout, then absolutely-position the <img> inside it with object-fit: contain. Verified live via getBoundingClientRect(): image box now sits entirely within the slide bounds, letterboxed correctly, no overflow. Also fixes the alt text on the Visual Studio slide, which had a stray "Rider for..." (VS Code and Rider slides still TODO placeholders, unaffected). README.md's hero-carousel exception note updated with the corrected markup shape and the colon-fence nesting rule (outer fence must be longer than inner -- backwards from what's visually intuitive).
…trix - Move Defining Steps under editing-features/ (was a top-level page) -- it's an editing-time action (a quick-fix on an unmatched step), not a standalone top-level concern. Fixed its own relative link to New Project / Item Templates and every incoming reference (editing-features/index.md, ide-support/index.md, new-project- templates.md, keyboard-shortcuts.md, OUTLINE.md). - Reorder Editing Features so Document Outline is followed by Defining Steps, Rename Step, Code Lens, Inlay Hints, per request. - Unify terminology: the matrix said "Step Definition Scaffolding," every other page said "Defining Steps" -- now consistently "Defining Steps" everywhere, matching the page title. - Code Lens question: kept it in Editing Features rather than moving to Navigation. Rationale -- Find Step Usages/Hook Navigation are invoked commands (you do something); Code Lens is a passive annotation you see unprompted while reading code, same category as diagnostics/inlay hints. Added explicit two-way cross-links instead of merging the sections: a "Also surfaced via Code Lens" callout on the Navigation Features matrix section, and a tip on find-usages.md/hook-navigation.md pointing back to Code Lens as the passive alternative. - Rewrote the feature-overview matrix's legend and every rating. The old legend exposed internal implementation classification the end user can't act on (warning triangle = "needs a small IDE-side setting" with no setting ever named; wrench = "custom Reqnroll code was required," an implementation detail, not something readers care about). Re-derived every cell from what each feature's own page actually says works -- almost every wrench/warning in the old matrix turned out to just mean "works fine, implemented differently," and is now a plain checkmark. The three symbols left mean exactly one thing each: works, works-with- a-caveat-see-the-note, or not-available-see-the-alternative. Grouped into Editing / Navigation / Project Setup sections matching the site's own page structure, and every real caveat now has a footnote that names the actual thing to expect (e.g. Rider completion/scaffolding unconfirmed and tracked in #414, VS's Find All References not routing to Reqnroll bindings, VS's native Document Outline not supporting .feature files at all). Verified live: rebuilt clean (only the two expected non-toctree warnings), confirmed the Editing Features sidebar order and the restructured matrix both render as intended.
…-highlighting Replaces the TODO(media) placeholders with the actual captures now that they exist, for the four Editing Features pages that had a VS tab pending.
Embed width is capped for the three-column tab layout, so fine detail in a capture (a squiggle, a single inlay hint) can be hard to make out. Clicking any content image now opens it near-full-size over a dark overlay; dismiss with another click, the close button, or Esc. Implemented as plain static CSS/JS registered via html_css_files/ html_js_files rather than a Sphinx extension, so nothing new needs adding to requirements.txt when this syncs into reqnroll/Reqnroll — just the two files plus two conf.py lines, working under whatever theme that repo uses since [role="main"] is the standard Sphinx main-content landmark.
Explains the candidate-file targeting shipped for #417: existing binding files that already cover the feature are offered first (appended to), with a new-file option alongside; notes that Visual Studio's own quick-fix menu can show the two in either order (alphabetical-by-title fallback), unlike VS Code/Rider which preserve the intended order. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Restructures rename-step.md so each IDE tab documents three distinct scenarios instead of one generic "renaming a step" gif: - Renaming from the .feature file - Renaming from the C# binding expression - Renaming an ambiguously bound step, with the disambiguation picker shown (Visual Studio and Rider only -- VS Code doesn't support disambiguation, per the existing known-limitation admonition, so its tab only gets the first two slots) Target paths: vs-feature.gif/vs-cs.gif/vs-picker.gif, vscode-feature.gif/vscode-cs.gif, rider-feature.gif/rider-cs.gif/ rider-picker.gif. The existing rename-step/vs.gif was already captured before this restructure -- confirmed with the user which of the three scenarios it actually shows (feature-side rename) rather than guessing from a single extracted frame, renamed it to vs-feature.gif, and embedded it in place of that slot's TODO.
The "known limitation" admonition applies only to VS Code but was
rendering below the whole tab-set, visible regardless of which tab was
selected. Moved it inside the VS Code tab-item specifically.
Hit the same colon-fence nesting bug as the hero carousel: the
admonition's ::: (3 colons) collided with the outer :::{tab-set} (also
3 colons) -- nested colon fences need the outer one to be longer, so
bumped the tab-set to :::: (4 colons). Without this the Rider tab
silently vanished from the build with no warning. Verified live: all
three tabs present, admonition confirmed nested inside the VS Code
tab-content div specifically (not Visual Studio's or Rider's).
Also tightened wording on the other two tabs that referenced "the note
below" / "tabs above" -- those no longer make sense with the note living
inside one specific tab instead of below the whole tab-set.
Fulfills the VS TODO(media) slots for Code Folding, Code Lens, Comment/ Uncomment, and Inlay Hints, plus the two remaining Rename Step VS gifs (cs-side rename, ambiguous-binding picker). Also two accuracy fixes found while capturing: - Visual Studio does not show the inlay-hint hover tooltip (a VS limitation) -- the hint labels themselves still render normally. - Code Lens click behavior spelled out precisely per direction: from a .cs binding file, clicking opens a results window to navigate matches; from a .feature file, clicking a hook lens opens a pop-up of matching binding methods, double-click to navigate.
… window Known-limitation addition to F24's design doc: VS's classic CodeLens Details popup includes a generic "Dock Popup" affordance, but the docked frame it creates has no data channel wired to CodeLensDetailsDescriptor/GetDetailsAsync, and no extensibility point was found (via decompilation or SDK docs) for a custom data point to populate it. Treat it as unsupported for this lens kind; a persistent populated results window should reuse the Find-All-References plumbing instead, as F25 already does.
… collision) Root cause of the Code Lens page showing the Formatting gif: Sphinx copies every referenced image into one shared, flat _build/html/_images/ folder using only the basename -- it does not preserve subdirectories. Our naming convention deliberately reused bare names like "vs.gif" in every sibling media folder, so a dozen genuinely different files all collided on the same output basename. Sphinx disambiguates with a numeric suffix (vs.gif, vs1.gif, vs2.gif...) assigned by document processing order, and that assignment silently shifts whenever a new same-named file is added -- especially across incremental (sphinx-autobuild) rebuilds rather than a clean one. The symptom is exactly this: a page renders someone else's image, no error or warning anywhere. Confirmed by inspecting the actual _images/ output and each page's rendered <img src> against source file sizes, not by guessing. Fix: every media filename now repeats its own page-name as a prefix (vs.gif -> code-lens-vs.gif, defining-steps-vs.gif, etc.), making every basename unique site-wide regardless of build order. Renamed all 13 already-captured files and updated every TODO(media) Target line and image embed across the whole site (~20 files) to match, plus every example in README.md's Media section, which now explains why the prefix is load-bearing rather than redundant. Verified with a full clean rebuild: zero numeric-suffix collision artifacts in _images/, and confirmed live in the browser that code-lens.html now renders code-lens-vs.gif specifically.
Ports the full content of reqnroll/Reqnroll's docs/ide-integrations/visual-studio/settings.md into settings.md's Visual Studio tab, rather than only linking out to it: the "Add Reqnroll configuration file" flow, the reqnroll.json JSON-schema IntelliSense note, and the full ide section reference (editor/traceability/reqnroll/ bindingDiscovery sub-sections, converted from bullet lists to tables where that reads better, with their examples intact). Adapted rather than copied verbatim: internal links repointed at our own site (../installation/configuration.md -> the absolute docs.reqnroll.net URL, editorconfig.md -> our own EditorConfig page), and the two legacy page's hotlinked screenshots replaced with our own TODO(media) capture slots (config-file template screenshot, IntelliSense screenshot) per our media convention rather than pointing at reqnroll/Reqnroll's _static assets. The four sub-section headings are level-4, one level past what myst_heading_anchors auto-generates site-wide -- added explicit (target)= anchors for each rather than changing that setting globally. Verified live: the four in-page links (editor/traceability/reqnroll/ bindingDiscovery) all resolve, and the full ported content renders correctly nested inside the Visual Studio tab specifically.
Downloads vs-integration-config-file.png and vs-integration-config-intellisense.png from reqnroll/Reqnroll's own docs/_static/images/ (same org, same content already being ported in the prior commit) and embeds them in place of their TODO(media) placeholders, renamed to our own convention (settings-vs-config-file.png, settings-vs-intellisense.png). Verified live: both images load and decode correctly in the built page.
Collaborator
Author
|
As of commit 9eb4bf5, the documentation and screen shots for Visual Studio are scope complete. |
Points to docs/site/ide-support/ so it's discoverable from the repo root, alongside the sync plan and issue #63 for the content outline.
…projects When a .feature file is linked into more than one project, Code Lens, Go to Hooks, diagnostics, and highlighting all reflect the file's home project (wherever it physically lives on disk) regardless of which project's node it was opened from. This is deterministic, by-design behavior rather than a bug, but was previously undocumented and surfaced as confusing during a live-testing session. Adds a troubleshooting FAQ entry explaining it, cross-referenced from Hook Navigation and Code Lens where the behavior is actually visible.
completion.md: Rider completion confirmed working live (auto-negotiates via the IntelliJ platform's generic LSP completion support, no Rider-specific plugin code) -- replaced the "verify before relying" warning with a confirmation note, and dropped the "wait for #414" gate on capturing its gif. feature-overview.md: Keyword & Step Completion's Rider cell is now a plain checkmark instead of the shared "unconfirmed, see #414" caveat. #414 also flagged the related F6 step-scaffolding question (Defining Steps) as worth checking in the same session -- that one's still unconfirmed, so split it into #437 rather than losing it when #414 closed, and repointed defining-steps.md's own admonition/TODO(media) note and the matrix's Defining Steps footnote at the new issue. Closed #414 on GitHub with a comment explaining the split.
defining-steps.md: Rider's F6 quick-fix confirmed working live -- auto-negotiates via the IntelliJ platform's generic LSP code-action support (same mechanism diagnostics/completion use), no Rider-specific plugin code needed. Replaced the "verify before documenting" warning with a confirmation note and dropped the #437 gate on capturing its gif. feature-overview.md: Defining Steps' Rider cell is now a plain checkmark instead of the "unconfirmed, see #437" caveat; renumbered the remaining footnotes (1-5) now that footnote 1 (#437) is gone. Closed #437 on GitHub with a comment confirming the live test result.
defining-steps.md: added a "Sync vs. async skeleton style" section confirming the generated step-definition skeleton's sync/async and regex/Cucumber-Expression style always comes from the project's trace.stepDefinitionSkeletonStyle setting in reqnroll.json, not from sibling binding conventions in the target file. Links to the Reqnroll Configuration Reference's trace section and the step-matching styles reference for what each value produces. Verified with a throwaway test driving the real reqnroll.json -> DeveroomConfiguration -> CodeActionHandler pipeline against both the sync and async setting values (test not kept). Considered also matrixing sync/async into the offered code-action variants but decided against it -- it would multiply the lightbulb menu past the existing per-request action cap for a decision that's meant to be project-wide, not per-invocation. Closed #380 on GitHub with a comment explaining both the verification and the UX decision to leave behavior as-is.
Drop the "confirmed live, see #380" sentence -- the section itself documents the behavior; the issue reference isn't needed for readers.
clrudolphi
force-pushed
the
docs/site-content-drafting
branch
from
August 4, 2026 02:15
ccaa821 to
295c30f
Compare
…293) Matches the command/action display-text change in #442: VS's Extensions menu entry and Rider's two Rename Step context-menu entries (.feature and .cs side) are now all "Reqnroll: Rename Step", same as VS Code's existing "Reqnroll: Rename Step". Updates rename-step.md and keyboard-shortcuts.md to match what end users will actually see.
…abot is live (#441) Confirmed-stale fix: src/Rider/CONTRIBUTING.md said the committed Gradle wrapper was "pinned to 8.10" (twice) and warned about a system Gradle 9.6.1 being ahead of it -- Dependabot's gradle-dependencies group bumped the wrapper itself to 9.6.1 (#435), so both the number and the direction of the warning were now wrong. Reworded to point at gradle-wrapper.properties as the source of truth instead of restating a number, and reframed the compat-break story as a dated historical incident rather than a claim about current versions. Applied the same "point at the source, don't restate a value Dependabot can move independently of this prose" treatment to the .NET SDK 10.0 mentions in src/VSCode, src/VisualStudio, and src/LSP's CONTRIBUTING.md (now cross-referenced to the net10.0 TargetFramework instead of a bare number). Two version pins get the opposite treatment -- kept as exact numbers, but now explicitly flagged as intentional so a future pass doesn't wrongly genericize them: - VS Code 1.96 minimum (vscode-languageclient v10 compatibility) -- now stated with its reason in src/VSCode/CONTRIBUTING.md, and the Architecture doc's second, previously bare restatement of the same number now points back at the first instead of duplicating it. - typescript capped at ^5.9.3 in package.json (typescript-eslint peer dependency conflict, b65a915) -- this pin previously had no prose explanation anywhere in CONTRIBUTING.md; added one, including why the caret range itself is what stops Dependabot from proposing a breaking bump. Verified JDK 21 (already cross-referenced to jvmToolchain(21) inline) and Rider platformVersion (already points at gradle.properties, never restates the number) needed no change -- both already followed the pattern this audit is establishing everywhere else. Node.js 22 in src/VSCode/CONTRIBUTING.md left as plain prose: nothing in the repo enforces or could silently drift it out of sync (no engines.node in package.json), so there's no better source of truth to point at. Left the "lightweight CI check to catch future drift" idea from the issue unimplemented -- it's explicitly called out there as optional, and infrequent-touch prose like this doesn't obviously justify the CI-maintenance cost; noting it as a judgment call rather than doing it speculatively.
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
docs/site/ide-support/authoring the user-facing documentation for the Reqnroll IDE Support (Preview) extensions, per the outline proposed in ToDo: Create Documentation for docs.reqnroll.net #63.docs/site/.devcontainer/) plusconf.py/requirements.txt/Makefilemirroringreqnroll/Reqnroll'sdocs/.devcontainersetup, so the tree builds/previews standalone with Sphinx from this repo.docs/LSP-IDE-Support-Feature-Designs.md.docs/site/OUTLINE.md) to add F24 (Hook Match CodeLens) and F25 (Hook Match Count CodeLens), which shipped after the original ToDo: Create Documentation for docs.reqnroll.net #63 comment and were missing from §5h.TODO(media)pending a live IDE session — no fabricated media.docs/site/README.mdfor the proposed sync-PR approach from ToDo: Create Documentation for docs.reqnroll.net #63's second comment.Test plan
sphinx-buildruns clean fromdocs/site/(only expected warning:README.mdnot in a toctree, since it's a repo readme, not a doc page)TODO(media)marker🤖 Generated with Claude Code