Repository navigation
fix(docs): preserve rendered entities and link query parameters - #931
rudycelekli wants to merge 10 commits into
Conversation
Signed-off-by: Rudy Celekli <47457359+rudycelekli@users.noreply.github.com>
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
PR SummaryLow Risk Overview Adds
Reviewed by Cursor Bugbot for commit fa5a274. Bugbot is set up for automated code reviews on this repo. Configure here. |
|
Codex review: needs changes before merge. Reviewed October 6, 2026, 2:43 AM ET / 06:43 UTC (Revision 5). ClawSweeper reviewWhat this changesThe branch repairs documentation heading text, preserves link queries and fragments, handles CRLF front matter, and shares generated-site regression coverage between local tests and CI. Merge readiness⛔ Needs changes before merge - 1 item remains This PR remains necessary: current main and v4.8.0 retain the affected rendering behavior. No actionable correctness or security findings remain, and the recorded production-output proof is sufficient. The explicit prerequisite landing order still applies. Priority: P2 Review scores
Verification
How this fits togetherPeekaboo’s documentation builder converts Markdown and page metadata into a static HTML site. Its heading extraction and link rewriting determine the navigation text and destinations readers receive. flowchart TD
A[Markdown and metadata] --> B[Documentation builder]
B --> C[Rendered headings and links]
C --> D[Decode renderer escapes once]
D --> E[Preserve destination suffixes]
E --> F[Escape final HTML]
F --> G[Static documentation pages]
Before merge
Agent review detailsSecurityNone. Review metrics
Technical reviewBest possible solution: Keep a single documentation renderer that preserves visible text and complete link destinations, with production-output regressions shared by local and hosted gates. Do we have a high-confidence way to reproduce the issue? Yes: current-main source establishes the double escaping and query-sensitive relative-link failure, and the captured production-build comparison records their observable output. This read-only review did not execute the builder. Is this the best way to solve the issue? Yes: decoding only renderer-owned escapes once, rewriting only the destination path, and escaping final output repair the existing contract without replacing the renderer. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 43b2fe2a7291. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (4 earlier review cycles)
|
Signed-off-by: Rudy Celekli <47457359+rudycelekli@users.noreply.github.com>
Signed-off-by: Rudy Celekli <47457359+rudycelekli@users.noreply.github.com>
Normalize line endings before metadata extraction; cover LF, CRLF, mixed, no-metadata and EOF cases through the production builder. Share fixture setup and the complete docs-site test gate with normal CI. Full-site output is identical for LF and corrected CRLF input. Co-authored-by: Rudy Celekli <47457359+rudycelekli@users.noreply.github.com>
Retain the contributor single-decoding repair, preserve query and fragment suffixes while rewriting relative Markdown links, and resolve link-validation paths independently of queries. Reuse the front-matter builder fixture and shared hosted gate; verify full generated pages with independent HTML and URL consumers. Co-authored-by: Rudy Celekli <47457359+rudycelekli@users.noreply.github.com>
Preserve the landed Foundation, MCP and log contracts and relocate the front-matter release note without changing rendering behavior or its proof source.
Preserve the qualified entity/link implementation and current main, while grouping related documentation release notes instead of conflicting at the Unreleased boundary.
Signed-off-by: Rudy Celekli <47457359+rudycelekli@users.noreply.github.com>
Signed-off-by: Rudy Celekli <47457359+rudycelekli@users.noreply.github.com>
|
Synchronized this branch with current main at signed head @clawsweeper re-review |
|
🦞👀 Re-review progress:
|
|
The owner consolidation is #992, combining the five related rendering repairs after independently reproducing them on current main. Its 24 renderer tests, metadata tests, lint, full site build, and P0–P2 review pass. It also includes actual Chrome before/after screenshots using identical synthetic input. This original will be closed as superseded once the combined candidate completes CI and lands; contributor credit is retained. |
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: fix(docs): preserve rendered entities and link query parameters This is item 1/1 in the current shard. Shard 0/1. This temporary status tracks the active review worker. The completed review will appear in the durable ClawSweeper review comment. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
Consolidate the reproduced CRLF metadata, entity/link, heading identity, EOF fence, and highlighter token defects from #939, #931, #940, #969, and #971. Keep highlighted fragments separate from source text and retain the shared renderer gate. Reconcile the Unreleased note and menu-preparation documentation with current main. All 25 docs-site regressions pass; independent Codex review is clean through P2. Co-authored-by: Rudy Mizrahi Celekli <47457359+rudycelekli@users.noreply.github.com>
Documentation rendering lost literal code text, leaked CRLF front matter into articles, double-escaped TOC text and link queries, reused heading anchors, and discarded fenced code at EOF. This consolidates the verified fixes from #939, #931, #940, #969 and #971, with credit to @rudycelekli. The highlighter now keeps rendered fragments separate from source text, with no reserved source characters or 6,400-token limit. The page-wide heading allocator preserves natural anchors and assigns unique duplicate/fallback IDs. Front matter is normalized before extraction; renderer-owned entities are decoded once; link suffixes remain intact; EOF flushes the pending fence. Normal macOS CI now runs the complete shared renderer gate. Preserve the existing regression and platform proof from the PR. Reconcile with current main and retain the Unreleased changelog. Independent Codex review is clean through P2, and the final exact-head CI checks pass. Co-authored-by: Rudy Mizrahi Celekli <47457359+rudycelekli@users.noreply.github.com>
Change
Decode renderer-owned HTML escapes exactly once before final output escaping. This restores visible table-of-contents characters and preserves link query parameters. Thanks @rudycelekli for the original repair.
The maintainer revision additionally fixes relative Markdown links with query strings: rewrite only the destination path, preserving the complete query/fragment suffix, and exclude those suffixes from filesystem link validation. It adds literal-entity, quote, angle-bracket and relative-link controls and reuses the shared builder fixture. This branch composes #939's complete hosted docs gate; land #939 first.
Verification
Head
82fce925fc555420b930808cb92a963db5b71b70, treecbee447cef17083f9867f93f90ae2455b8095fbc. This supersedesd46daaffafter integrating #939's synchronized parent and landed main through155be083, with release notes grouped to avoid conflicts. The entity/link implementation and recorded proof source are unchanged; all eleven docs tests, lint and managed review passed again.other.md?...relative destination; the additional path/suffix repair fixes it.URLSearchParamsconsumes the decoded destinations. This is not merely matching encoded source strings.Observed shipped-page TOC labels change from
--focus-timeout <duration>,"Window not found" Error, andPrompt & Outputto their intended visible characters. The added complete-site query probe changes from parametersqplus erroneousamp;formattoqplusformat. The relative probe additionally changesfocus.md?...#focus-timeout-durationtofocus.html?...#focus-timeout-duration. Source-module hashes and the complete input-document inventory remain stable across the final run.This is generated-artifact/HTML-consumer proof, not live browser or desktop verification. Before/after browser screenshots remain unavailable: the integrated tool exposes no real Chrome connection, and the fallback extension route is not verified. No alternate browser profile, raw Chrome attachment, permission grant or shared browser configuration change was made. Fresh exact-head CI is also required before landing.
October 6 branch synchronization
Synchronized with current upstream main, preserving the maintainer revisions and the
#939 → #931 → #940landing order. Conflicts were resolved by retaining both the newly landed docs-metadata gate and the complete docs-site gate, and keeping all release notes. These are merge commits, so the previous source revisions and history remain intact.Current signed/DCO head:
18148682b266b5a2b69dfde0569601af4258aec2. Relevant docs-site and docs-metadata tests: 15 passed; docs lint and whitespace checks passed. The production builder emitted 70 HTML pages on this revision. Earlier native/generated-artifact receipts remain historical evidence; no new live-browser screenshots or full Swift-suite run is claimed. Fresh hosted CI is pending.