Skip to content

fix(web): OpenDocument slide previews no longer print speaker notes - #33294

Merged
juliusmarminge merged 2 commits into
pingdotgg:mainfrom
geezoria:fix/odp-preview-speaker-notes
Nov 14, 2026
Merged

juliusmarminge merged 2 commits into
pingdotgg:mainfrom
geezoria:fix/odp-preview-speaker-notes

Conversation

@geezoria

@geezoria geezoria commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Problem

Opening an OpenDocument presentation (.odp) in the file preview prints each slide's speaker notes as if they were slide text, at the end of the slide. Speaker notes are not part of the slide, so the preview should not show them there.

To reproduce, open any .odp that has speaker notes. LibreOffice's own test deck search-all-notes.odp shows it.

Change

odfHtml already skips parts of an OpenDocument file that are not on the page, such as office:annotation and text:tracked-changes. It now skips presentation:notes too.

That element's namespace was missing from namespacePrefixes, so it reached odfHtml as {urn:…:presentation:1.0}notes. The change adds the namespace so the skip list can name it. Nothing reads presentation:* names otherwise.

Scope and approval

This is a very small fix for an obvious bug, so it has no prior issue: text that is not on the slide appears on the slide. It adds one namespace entry and one skip-list entry, and no product behavior changes beyond removing the notes.

Duplicate searches across PRs and issues, in all states, found nothing that overlaps: odp speaker notes, presentation notes preview, OpenDocument presentation preview, odp preview, OpenDocument preview, presentation:notes, and extendedDocumentPreview. The only open PR touching this file, #31929, changes notebook outputs. #31868 only changes the "1 slide" label.

Verification

Failing test. I extended the odp case of the existing reads %s text and rejects XML entities test in apps/web/src/components/files/FilePreviewPanel.test.ts instead of adding a new one, so the slide now carries a presentation:notes block.

  • Without the fix: vp test run apps/web/src/components/files/FilePreviewPanel.test.ts -t "reads" fails with expected '<h2>Launch plan</h2><p>Speaker only</…' not to contain 'Speaker only'.
  • With the fix, the whole file passes: Tests 31 passed (31).

Real file. I ran openDocument on search-all-notes.odp, generated by LibreOfficeDev/7.2.0.0.alpha1, which has one presentation:notes block.

Before:

page1 => <p>Title</p><ul><li><p>Some text</p></li><li><p>And magic word: “Crash”<span data-odf-whitespace>&#9;</span></p></li></ul><p>Notes which include the magic word: “Crash”</p>

After:

page1 => <p>Title</p><ul><li><p>Some text</p></li><li><p>And magic word: “Crash”<span data-odf-whitespace>&#9;</span></p></li></ul>

Running client. The same file, opened from Files in a vp run dev web client on Windows.

Before:

Before: the speaker note is printed below the slide's bullet points

After:

After: the slide shows only its title and bullet points

vp run check:changed origin/main passes: format, lint, knip, typecheck (2 packages), tests (2 files) and React compiler.

Not checked: mobile, which does not use this preview code, and .odp files written by apps other than LibreOffice. The element is defined by the ODF schema, so the skip does not depend on the app that wrote the file.

Implemented and verified with Claude Opus 5.5 (claude-opus-5-5) in the Claude Code harness.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:unvouched Author is not yet trusted in the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Nov 9, 2026
@macroscopeapp

macroscopeapp Bot commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at d7108cd

Macroscope's review found this PR approvable — OpenDocument previews now recognize presentation notes and omit them from rendered slides. The change is limited to preview output and leaves source documents unchanged.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

The ODF preview now recognizes the presentation namespace and omits presentation:notes content. The ODP preview test includes speaker notes and checks that the rendered preview excludes them.

Changes: ODF preview content

Layer / File(s) Summary
Presentation notes filtering
apps/web/src/components/files/extendedDocumentPreview.ts, apps/web/src/components/files/FilePreviewPanel.test.ts
The ODF namespace map recognizes the presentation namespace, and odfHtml omits presentation:notes subtrees. The ODP test verifies that “Speaker only” is absent from the rendered preview.

Estimated code review effort: 2 (Simple) | ~8 minutes

Change: Bug fix

Suggested reviewers: juliusmarminge

Merge Risk: Minimal · up to 4c681

ODP slide previews now omit speaker notes, a narrow, low-risk change that is covered by an updated test. No actionable merge-blocking risk remains.

Pre-merge checks: Passed 4

Check name Status Explanation
Title check Passed The title names the main change: OpenDocument slide previews no longer show speaker notes. It follows the conventional commit form and matches the code change, which adds the presentation namespace an…
Description check Passed The description follows the template. It covers the problem with reproduction steps, the change and why the namespace was needed, scope with a reason why no issue is linked, and verification with fail…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title names the main change: OpenDocument slide previews no longer show speaker notes. It follows the conventional commit form and matches the code change, which adds the presentation namespace and skips presentation:notes in odfHtml. It is specific and clear.

Full details: Description check

Explanation

The description follows the template. It covers the problem with reproduction steps, the change and why the namespace was needed, scope with a reason why no issue is linked, and verification with failing and passing test runs, a real-file before/after, and screenshots. It also names the model and harness. The Scope section does not link an issue, but it explains why none is needed for a small obvious fix, as the template allows.

Finishing Touches

Generate unit tests (beta)

  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between d7108cd and 4c681f9.

Files selected for processing: 2

  • apps/web/src/components/files/FilePreviewPanel.test.ts
  • apps/web/src/components/files/extendedDocumentPreview.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

@maria-rcks

maria-rcks commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator

Note

Written by gpt-6.1-sol on behalf of Maria

Verified in a real dev environment

verified on a disposable linux vm with the real dev web client, repo playwright, /usr/bin/google-chrome, and codex gpt-6.1-sol turns. no application changes were needed.

  • reproduced on github/main (61cb845d9699d0ecce5a9b660d3b32907914df8b): Files → search-all-notes.odp renders the speaker note below the slide bullets.
  • checked the exact pr head d7108cd0eb984d685228c844f825f3a17ea11ddd: the same file renders its title and both bullets, with the speaker note omitted. main was stopped before starting the pr server.
  • created the project and thread through the app. a real codex turn downloaded the LibreOffice document; another turn on the pr inspected its source and confirmed the note still exists. document sha256: d76b50633e908514d3fec7b22af6ed9455f0483b8d71c893db1e65dc80eb2c21.
  • nearby checks passed: an odt created by the provider renders its body while omitting its annotation; markdown preview renders; switching back to odp preserves slide content; zoom changes to 125% and resets to 100%.
  • ran the existing FilePreviewPanel.test.ts through blacksmith: 31 tests passed. the pr has 31 successful ci checks, none pending or failing.

before, main:

main shows speaker notes below the slide bullets

after, exact pr head:

pr preserves title and bullets while omitting speaker notes

file switching and zoom (animated recording):

odp, odt and markdown navigation with zoom and reset

Not verified

native desktop shells on linux, macos or windows, native ios/android clients, and odp files produced by applications other than LibreOffice were not exercised. this pass verifies the web preview path changed by this pr.

@juliusmarminge juliusmarminge added the takeover:in-progress A takeover lead is working on this PR label Nov 14, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@juliusmarminge

Copy link
Copy Markdown
Member

Evidence

Opened the unchanged LibreOffice search-all-notes.odp fixture through a thread’s right panel → Files on both commits. Chromium, 1280×800, light theme, fresh isolated state. The base shows speaker notes as slide content; the fix omits them while preserving the title and bullets.

Before After
Before: speaker notes rendered below slide bullets After: slide content preserved and speaker notes omitted
1e9f93a48e 4c681f9e1b

Scenario source · Before recording · After recording

Scenario proof exited 0: failed on base because the speaker-note paragraph was visible; passed on head.

@juliusmarminge juliusmarminge added takeover:ready Takeover done; auto-lands when gates pass and removed takeover:in-progress A takeover lead is working on this PR labels Nov 14, 2026
@juliusmarminge
juliusmarminge merged commit 776698a into pingdotgg:main Nov 14, 2026
50 checks passed
@juliusmarminge juliusmarminge removed the takeover:ready Takeover done; auto-lands when gates pass label Nov 14, 2026
newer97 added a commit to newer97/t3code that referenced this pull request Nov 14, 2026
* fix(shared): atomic saves handle long filenames (pingdotgg#33250)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): message search no longer finds rolled-back turns or cancelled queued messages (pingdotgg#29874)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): OpenDocument slide previews no longer print speaker notes (pingdotgg#33294)

Co-authored-by: Geezy <igor.licko@gloryck.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): cancelled PR checks count as failing in the checks summary (pingdotgg#29809)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): .markdown, .mdown and .mkd files open with a Markdown preview (pingdotgg#29822)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web,mobile): pull request project filter lists pinned projects first (pingdotgg#29871)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): Claude Fable 5.2 is offered only from Claude Code 2.1.321 (pingdotgg#36805)

* fix(mobile): scheduled tasks due within the hour no longer read "Next run in 60 minutes" (pingdotgg#29756)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* test(server): title change test ignores a probe pending at browser close (pingdotgg#36818)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): agents can read documents a guest attaches (pingdotgg#29760)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): opening a very large folder no longer freezes the Files panel (pingdotgg#29996)

Co-authored-by: Nathan Wong <20381195+thelogicmatrix@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(gitlab): a fork's same-named branch no longer hides the branch's own merge request (pingdotgg#29791)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(editors): Open in Zed no longer finds the ZFS event daemon (pingdotgg#33461)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): preview hover and drag fail within their timeout, not up to 3x later (pingdotgg#33550)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): skills from CLAUDE_CODE_PLUGIN_DIRS plugins show in the composer (pingdotgg#33341)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(gitlab): `glab mr new` links the new merge request to the thread (pingdotgg#33475)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): Android section headers show the collapse arrow when expanded (pingdotgg#33513)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(claude): tools running at Stop show as stopped, not failed (pingdotgg#29801)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): a pull request whose title holds a numeric search ranks above description-only matches (pingdotgg#33692)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(acp-registry): a uv-installed agent launches its managed command, not a same-named one on PATH (pingdotgg#33836)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): refuse unresolved UTF-16 merge commits (pingdotgg#36817)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): remove worktrees through their owning repository (pingdotgg#33586)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): RTF attachment text keeps joiners and direction marks (pingdotgg#36824)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): scheduled tasks in a non-Git project run in its folder instead of failing (pingdotgg#36821)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): deleting a thread with side chats offers to delete its worktree (pingdotgg#36800)

Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>

* perf(web): completed Markdown blocks no longer render twice (pingdotgg#33794)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(web): opening a thread from a draft only renders its sidebar row (pingdotgg#33435)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(usage): refetch cached rates early for a model they do not list (pingdotgg#33725)

Co-authored-by: DrSeedon <DrSeedon@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): copied email links keep their destination (pingdotgg#36830)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): message search finds smart apostrophes when scanning (pingdotgg#36832)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(shared): preserve whitespace in POSIX PATH directories (pingdotgg#33840)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): dropdown hover fills expanded Git action rows (pingdotgg#35527)

Co-authored-by: brkgzlsy <berke.guzelsoy@fabrite.ch>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(clients): undoing a settle puts the thread back where you placed it (pingdotgg#33248)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): queued images open in the image viewer (pingdotgg#33298)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): removing an environment drops its threads from Android launcher shortcuts (pingdotgg#33726)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a zero Git fetch interval also stops the status upstream fetch (pingdotgg#33845)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(ssh): include hosts from wildcard filenames with line separators (pingdotgg#35479)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): preserve DOCX non-breaking hyphens in attachment text (pingdotgg#36845)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): diff file tree shows added and deleted files before their patches load (pingdotgg#33310)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): audio and server spinners respect reduced motion (pingdotgg#33795)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): provider switches on portable forks keep inherited conversation (pingdotgg#36839)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): show Browser device preferences read-only for projects (pingdotgg#36846)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(cli): t3 connect unlink with T3 stopped also clears the webhook hold setting (pingdotgg#33822)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): decode escaped XLSX attachment text (pingdotgg#36849)

Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(desktop): recover prepared remote updates on retry (pingdotgg#33605)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): OpenCode keeps its cached models when a cold probe lists none (pingdotgg#33640)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): retain custom model drafts until saved (pingdotgg#35176)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): trackpad scrolling no longer stalls on gaps between right panel tabs (pingdotgg#35255)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): Settings > Projects list follows the selected environment (pingdotgg#36856)

* fix(web): pasted images stay at their original insertion point (pingdotgg#35528)

Co-authored-by: brkgzlsy <berke.guzelsoy@fabrite.ch>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): Cite is offered for text an agent sent with send_to_user (pingdotgg#36858)

* fix(web): desktop browser tabs show native navigation immediately (pingdotgg#35299)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a steer that misses its turn moves into the run it starts (pingdotgg#36855)

* fix(server): keep boolean XLSX cells as true/false in extracted text (pingdotgg#35191)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(desktop): tolerate disk-full console output (pingdotgg#35245)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(dev): first dev start builds the missing resource monitor (pingdotgg#34975)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a failed comments read no longer hides PR check updates (pingdotgg#33452)

Co-authored-by: Emi Griffith <emi.g@jinemi.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): typing before a chip no longer leaves the iOS caret behind (pingdotgg#33774)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(server): git status refresh reads local status once unless refs moved (pingdotgg#29155)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a setting change no longer detaches a busy session kept from an earlier hand-off (pingdotgg#35258)

Co-authored-by: Mika Hertler <mika@mikahertler.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): storage cleanup removes idle worktrees whose branch was renamed or switched (pingdotgg#34984)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(claude): rename the native session when the thread title changes (pingdotgg#34775)

Co-authored-by: kumar-karan <kumar-karan@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(desktop): an emptied browser cookie jar imports as empty instead of failing (pingdotgg#34698)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): each websocket RPC starts its own trace so Tempo keeps its spans (pingdotgg#36863)

* fix(mobile): compaction notice becomes a chip in the composer (pingdotgg#36872)

* fix(web): repeated diff blocks no longer crash the viewer (pingdotgg#35304)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): copied literal Markdown sends as shown (pingdotgg#36867)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): move to Node 26.13.1 without migrations storing JSON arrays as strings (pingdotgg#34576)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(server): skip the full untracked scan when Git status shows none (pingdotgg#36870)

* fix(server): show Claude's root refusal when it exits before the turn starts (pingdotgg#34621)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): keep a launched thread's title when its first message arrives (pingdotgg#35117)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(server): the next turn no longer waits for the previous turn's git status refresh (pingdotgg#32349)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>

* fix(server): queued messages no longer wait behind every later delegate completion (pingdotgg#34620)

Co-authored-by: Apex-ICP <jesse@apexicp.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): a link during video playback no longer rebuilds the open thread (pingdotgg#34990)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* test(web): terminal drawer test keeps its session atoms across GC (pingdotgg#36888)

* fix(server): switching the Claude model no longer blocks a later provider switch (pingdotgg#34498)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a worktree launch from a missing base branch names the branch (pingdotgg#34452)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): Claude /rename now retitles the T3 thread (pingdotgg#36879)

* fix(web): open editors when saving their preference fails (pingdotgg#34308)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* feat(client): add-project folder search matches substrings and fuzzy subsequences (pingdotgg#26376)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>

* fix(web): typing in the file editor no longer jumps to the prompt (pingdotgg#35122)

Co-authored-by: user <user@qubes-os.org>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): keep thread find working with many matches in one row (pingdotgg#34402)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): Arabic and Hebrew folds in chat read right to left (pingdotgg#36876)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): iOS composer text follows the system text size (pingdotgg#34670)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): turn recovery covers interrupted and cancelled runs' abandoned turns (pingdotgg#34639)

Co-authored-by: Ali-Al1 <Ali-Al1@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): show TAR hard links in archive previews (pingdotgg#34329)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): preserve ODF paragraph whitespace in agent sidecars (pingdotgg#36883)

Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(web): trim terminal link delimiters in linear time (pingdotgg#34397)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(shared): preserve Unicode during command output overwrites (pingdotgg#34332)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a self-settle survives a queued message steered into the turn (pingdotgg#36896)

* fix(server): queued-input index no longer rejects user messages with non-JSON payloads (pingdotgg#36898)

* fix(server): filter scheduled tasks without exposing webhook URLs (pingdotgg#27716)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): distinguish media Back from window close (pingdotgg#33125)

* fix(mobile): VoiceOver names the iOS message box (pingdotgg#34658)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): PR sync backs off links on hosts it cannot read (pingdotgg#36901)

* perf(web): skip oversized TAR preview payload copies (pingdotgg#34301)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): voice cleanup pinned to an ACP provider uses the text model (pingdotgg#36912)

* fix(server): Swift TestFlight clients can read settings again (pingdotgg#26455)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(github): Load more no longer stalls on a full page of equal update times (pingdotgg#36910)

* fix(desktop): preserve recordings saved in the same millisecond (pingdotgg#34314)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(client): refresh open archive when threads are archived elsewhere (pingdotgg#36909)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): keep files when submodule checks retain a worktree (pingdotgg#34196)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): copying from a later list item keeps its numbers (pingdotgg#36915)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): a failed turn start no longer leaves the thread stuck starting (pingdotgg#14424)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): successive custom model saves keep earlier edits (pingdotgg#36906)

Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): restore word selection in inline code (pingdotgg#36936)

* fix(server): recognize Windows Volta provider installs (pingdotgg#36917)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): showing a composer banner no longer makes the page restyle everything until reload (pingdotgg#34537)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(install): launch t3 by absolute path (pingdotgg#13794)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(server): Windows process launches no longer block the RPC thread (pingdotgg#32260)

Co-authored-by: Lakshmi Tanmay <lakshmi@voltcrash.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): more GitLab merge request links open their file, line or commit (pingdotgg#34662)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(opencode): show background replies after a turn settles (pingdotgg#36887)

Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): conventional commit subjects start lowercase (pingdotgg#36938)

* fix(shared): stop rescanning unclosed TeX math (pingdotgg#34398)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): Arabic and Hebrew artifact template cards read right to left (pingdotgg#36922)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): stop leaving Codex plan items running after their run (pingdotgg#22617)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(gitlab): MR watches check a one-query fingerprint before full reads (pingdotgg#34638)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): font picker scrolls to every font in short windows (pingdotgg#22795)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(source-control): repository paths match however their names are percent-encoded (pingdotgg#36929)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mcp): return delegated task handles before client timeouts (pingdotgg#15622)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): allow tooltip text to wrap naturally (pingdotgg#36948)

* fix(preview): unload desktop pages before removing their tabs (pingdotgg#35135)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): remove redundant status info icon (pingdotgg#36947)

* fix(desktop): agent snapshots keep full detail in narrow and mini previews (pingdotgg#36944)

* test(web): pin the minute clock in the sidebar jump-hint render test (pingdotgg#36954)

* fix(acp-registry): models show the reasoning levels the agent advertises for them (pingdotgg#36950)

Co-authored-by: 0xpolarzero <0xpolarzero@gmail.com>

* fix(web): enable Send when the composer holds only a thread context (pingdotgg#23166)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): thread details card no longer jumps mid panel animation (pingdotgg#22614)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web,mobile): /btw and /side drafts show the send arrow while a turn runs (pingdotgg#36932)

* fix(server): migrated databases can return freed space to disk (pingdotgg#30066)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(devices): rename EAS Simulator to Expo Simulators (pingdotgg#36951)

* fix(server): find the EAS project of variant app configs (pingdotgg#29466)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): include untracked files when Git config hides them (pingdotgg#23134)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web,server): picking the previous branch after an agent's checkout switches back (pingdotgg#30107)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): t3_thread_list leaves out tasks delegated from a linked environment (pingdotgg#36961)

* fix(server): prune checkpoint refs owned by deleted threads (pingdotgg#24140)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(mobile): screen readers hear a thread row's status and time (pingdotgg#34636)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): isolate Linux process launches from the RPC event loop (pingdotgg#30209)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(server): Pull no longer waits behind other repositories' fetches (6.3 s → 0.21 s median) (pingdotgg#30059)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(wsl): label WSL environments with their Windows host on every client (pingdotgg#22629)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(azure-devops): derive CLI scope from checkout remotes (pingdotgg#21838)

Co-authored-by: Ved Pandey <vedprakash2302@gmail.com>

* fix(server): subagent threads no longer show the remote parent their parent was delegated from (pingdotgg#30334)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): t3_thread_launch worktrees honor the new-worktree setting (pingdotgg#30226)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(server): text-only browser snapshots skip the PNG encode (66 ms → 20 ms median) (pingdotgg#30305)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): diff Copy path uses Windows separators in a Windows workspace (pingdotgg#30394)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(opencode): usage totals include what OpenCode 2 spends on compaction (pingdotgg#30565)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(web): opening a project or deleting the open thread skips delegated tasks (pingdotgg#30428)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* chore: drop RTL changes now covered by upstream, and the mobile direction patch

Upstream merged Arabic/Hebrew direction for details folds (pingdotgg#36876) and
artifact template cards (pingdotgg#36922), so the fork's copies go. The <bdi> on alert
labels and skill chips rendered identically to upstream and goes too, as does
the mobile first-strong-letter direction patch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Simone <lucenz@proton.me>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: TheGuyWithHAT <igorlickn@gmail.com>
Co-authored-by: Geezy <igor.licko@gloryck.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Nathan Wong <thelogicmatrix@gmail.com>
Co-authored-by: Nathan Wong <20381195+thelogicmatrix@users.noreply.github.com>
Co-authored-by: Daniel Dewhurst <danjdewhurst@users.noreply.github.com>
Co-authored-by: Victor <satsdev@only21mil.xyz>
Co-authored-by: David Mendes <david.mendes@outsystems.com>
Co-authored-by: Arav Jain <aravhawk@gmail.com>
Co-authored-by: juccul <101457938+juccul@users.noreply.github.com>
Co-authored-by: Ibrahim Elkamali <igrimanigroman@gmail.com>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
Co-authored-by: Luis Taniça <matallui@gmail.com>
Co-authored-by: Bryan Clark <5405766+moenzuel@users.noreply.github.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Lakshmi Tanmay <lakshmi@voltcrash.com>
Co-authored-by: Dominik Žabčík <35886301+dominikzabcik@users.noreply.github.com>
Co-authored-by: Maxim <65215214+DrSeedon@users.noreply.github.com>
Co-authored-by: DrSeedon <DrSeedon@users.noreply.github.com>
Co-authored-by: Dragesia <69815671+Dragesia@users.noreply.github.com>
Co-authored-by: brkgzlsy <berke.guzelsoy@fabrite.ch>
Co-authored-by: OpeOginni <107570612+OpeOginni@users.noreply.github.com>
Co-authored-by: Mateusz Choma <chomamateusz@gmail.com>
Co-authored-by: Baptiste Arnaud <baptiste@typebot.io>
Co-authored-by: Grok 4.7 <noreply@x.ai>
Co-authored-by: Amman <ammanuelamsal@gmail.com>
Co-authored-by: project516 <138796702+Project516@users.noreply.github.com>
Co-authored-by: Byntham <135178921+Byntham@users.noreply.github.com>
Co-authored-by: rafi-the-dev <rafisleep570@gmail.com>
Co-authored-by: Fuksss <fuxik12345@gmail.com>
Co-authored-by: Unlock Digital Media <134563073+unlockdigital@users.noreply.github.com>
Co-authored-by: Jon Duea <jdueadev@gmail.com>
Co-authored-by: Emi Griffith <emerytgriffith@gmail.com>
Co-authored-by: Emi Griffith <emi.g@jinemi.com>
Co-authored-by: Arun Krishnamurthy <arun.km.279@gmail.com>
Co-authored-by: Andrei <108398860+Yuruzuu@users.noreply.github.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: Mika Hertler <77012401+MikaMcFlurry@users.noreply.github.com>
Co-authored-by: Mika Hertler <mika@mikahertler.com>
Co-authored-by: Alex Hatzenbuhler <hatz@hey.com>
Co-authored-by: Karan Kumar <karan.8080dev@gmail.com>
Co-authored-by: kumar-karan <kumar-karan@users.noreply.github.com>
Co-authored-by: Julio Saldaña <102325762+wincrack07@users.noreply.github.com>
Co-authored-by: Jake Leventhal <jakeleventhal@me.com>
Co-authored-by: Sohaib Ali <43256484+SohaibAli9@users.noreply.github.com>
Co-authored-by: Noah <105475352+Noah-mh@users.noreply.github.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Jesse-pink-lab <co.breakingbits@gmail.com>
Co-authored-by: Apex-ICP <jesse@apexicp.com>
Co-authored-by: Chirag Agggarwal <96696271+Schreezer@users.noreply.github.com>
Co-authored-by: Dmitry Farafonov <mail.xaber@gmail.com>
Co-authored-by: Michael Bennett <mishdotdev@gmail.com>
Co-authored-by: Romil <romilbij@gmail.com>
Co-authored-by: Christoffer Artmann <Artgaard@gmail.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: Christian R. Kounatze <chreko@gmx.net>
Co-authored-by: user <user@qubes-os.org>
Co-authored-by: MarcoDotIO <Marcus.Arnett10@gmail.com>
Co-authored-by: Ali-Al1 <11404482+Ali-Al1@users.noreply.github.com>
Co-authored-by: Ali-Al1 <Ali-Al1@users.noreply.github.com>
Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: Alex Vallone <39172404+amv146@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com>
Co-authored-by: Antony <97451137+TonybynMp4@users.noreply.github.com>
Co-authored-by: grey-tsosie <45133231+grey-tsosie@users.noreply.github.com>
Co-authored-by: Pavel Kroupa <63880977+Tabonx@users.noreply.github.com>
Co-authored-by: kirat02 <142911687+Kirat0201@users.noreply.github.com>
Co-authored-by: 0xpolarzero <0xpolarzero@gmail.com>
Co-authored-by: Advait Paliwal <advaitspaliwal@gmail.com>
Co-authored-by: Hirbod <504909+hirbod@users.noreply.github.com>
Co-authored-by: Krystof Woldrich <31292499+krystofwoldrich@users.noreply.github.com>
Co-authored-by: Tin Zeljar <tinzeljar@gmail.com>
Co-authored-by: Robbie <robbiethewadley@gmail.com>
Co-authored-by: Ved Pandey <vedprakash2302@gmail.com>
Co-authored-by: spoukyii <61633921+spoukyii@users.noreply.github.com>
Co-authored-by: Brett Lyman <LymanBE@gmail.com>
Pipyakas pushed a commit to Pipyakas/t3code that referenced this pull request Nov 15, 2026
…ingdotgg#33294)

Co-authored-by: Geezy <igor.licko@gloryck.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
(cherry picked from commit 776698a)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS 0-9 changed lines (additions + deletions). vouch:unvouched Author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants