Repository navigation
chore(web): port upstream preview and layout fixes (2026-10-09 round 3) - #271
Merged
Merged
Conversation
…essage (pingdotgg#17352) A draft has no thread on the server yet, so the workspace-file asset it requested resolved to "not found". Drafts now name their workspace root on the existing workspace-file resource, which the server honours when it is a registered project. Upstream added a new draft-workspace-file resource gated by its filesystem-read scope; the fork reuses its own workspaceRoot override instead. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…rs (pingdotgg#17077) A classic scrollbar narrows a scroller when it appears, so content centered inside it jumped sideways once it grew past the fold. Ports the require-centered-scroll-gutter lint rule and adds scrollbar-gutter-both to the fork's flagged scrollers: the preview empty and unreachable states, and the usage page. The image preview never scrolls, so it carries a reasoned suppression. Upstream's other sites (device panel, attachment preview, pull request and provider placeholders) do not exist in the fork. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…read, favicons stop leaking internal hosts (pingdotgg#16950) - HTML previews and inline HTML attachments add allow-downloads to their sandbox, so download links and buttons in the page work. - Rendered markdown headings get GitHub-style ids, and an in-page link scrolls to its heading without writing the fragment to the URL. Desktop keeps its route in the hash, so the old pushState (or the browser following a link with no target) navigated away from the thread. - Favicon requests send only a public hostname, never the port, and skip private, tailnet, reserved, and internal-looking hosts. The fork had no host filtering at all, so this ports upstream's classification as a new web file and routes chat link favicons through it. Not ported: upstream's repo-root resolution for inline code in a rendered file. The fork resolves inline code from the workspace root already, with no sibling-relative base directory. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.
Upstream shipped a batch of file-preview and layout fixes on 2026-10-08. This hand-ports the ones that apply to the fork's diverged code and records why the rest do not.
Ported
workspace-fileresource (the fork'sworkspaceRootoverride, honoured only for registered projects) instead of upstream's newdraft-workspace-fileresource, which depends on upstream's filesystem-read auth scope.require-centered-scroll-gutterlint rule and fixes the four fork sites it flags: preview empty state, preview unreachable page, usage page, and a reasoned suppression on the image preview, which never scrolls.allow-downloadsin the iframe sandbox and the asset CSP).apps/web/src/lib/faviconHost.ts, and chat link favicons now go through it.Skipped
ChatCanvasnor timeline markers.Verification
vp test runFilePreviewPanel.test.ts, lib/favicon.test.ts, markdown-heading-ids.test.ts, markdown-links.test.ts, server http.test.ts: 94 passedvp linton changed files: 0 errors. Lintingappsandpackageswith the new rule turned up exactly the four sites fixed here.tsgo --noEmitfor apps/web, apps/server, oxlint-plugin-t3code: cleanvp run check:avicodeandvp run test:avicode: pass🤖 Generated with Claude Code