Repository navigation
fix(shared): inline code paths like docker/Dockerfile become file chips - #32402
juliusmarminge merged 4 commits into
Conversation
…hips Inline code naming a relative path that ends in a well-known extensionless file, such as `docker/Dockerfile` or `src/Makefile`, stayed plain code. The same file did become a chip as an absolute path, with `./`, with a line number, or as a Markdown link. The extension check for inline code now also accepts the extensionless file names the Markdown link checks already recognize. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — Inline paths such as You can add or adjust custom eligibility rules. Learn more. |
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
…sionless-file-chips # Conflicts: # packages/shared/src/markdownLinks.ts
|
Note Written by Merged current |
…sionless-file-chips
The native Markdown transform gates inline-code file links with its own regex, which required an extension on unprefixed relative paths, so the shared helper's fix never reached iOS or Android. Build the regex's relative-path branch from the shared extensionless filename allowlist. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
EvidenceSeed the same synthetic project and Replay reply on each commit with all ten reported inline-code examples. Open the reply in web, native iOS, and Electron. In web, also find Dockerfile within the thread and search threads for Dockerfile. The three bare paths
Sources: web scenario, iOS scenario, Electron driver, runner timeout adjustment. Not shown:
|
**v0.1.10-nightly.20261115.4736** · 95 changes from 43 contributors - **Large terminal pastes.** Paste large amounts of text into the terminal without the paste being rejected. - **Faster Codex skills.** Codex skills appear faster when opening or switching workspaces. - **Faster long threads.** Long threads open about 2.5 times faster. - **Image attachments.** Distinct pasted images with matching attachment details are no longer silently collapsed into one. - **Selected-file commits.** Committing selected files preserves merge conflicts in other files. - **Long-lived drafts.** Images in older drafts are recovered before sending if their uploads have expired. - **Optional questions.** Submit agent questions without filling in optional text fields. ### Plus 82 more bug fixes and performance improvements. <details> <summary>Full changelog</summary> ## What's Changed * fix(web): sidebar edge uses the same resize cursor as side panels by @tenyoru in pingdotgg/t3code#33083 * fix(web): attach command palette threads outside the sidebar by @Yash-Singh1 in pingdotgg/t3code#37054 * fix(server): status reports no branch while a clone has not checked out HEAD by @juliusmarminge in pingdotgg/t3code#37041 * perf(scripts): check:changed on Windows no longer spends minutes walking node_modules (2,500 s → 5.0 s) by @Pyseph in pingdotgg/t3code#32023 * perf(web): answering a question no longer re-renders the whole chat view by @OmarAlex24 in pingdotgg/t3code#32324 * perf(server): command palette status rows skip the Changes totals they never show by @Yuruzuu in pingdotgg/t3code#32351 * fix(web): PR file order follows alias imports of dotted modules by @jancuk in pingdotgg/t3code#32364 * fix(acp): a failed MCP-over-ACP disconnect can be retried by @notzenco in pingdotgg/t3code#33069 * fix(web): settle check lines up with row timestamps by @sergiiopm in pingdotgg/t3code#33053 * fix(provider-core): handoff work reserve fits small context windows by @MiaAI-Lab in pingdotgg/t3code#32598 * fix(mobile): video previews survive re-signed URLs and a late-attached player item by @bartlomiejbloniarz in pingdotgg/t3code#32196 * fix(mobile): honor Android clock format in message timestamps by @razzeee in pingdotgg/t3code#33078 * fix(shared): .localdomain hosts no longer leak to the favicon service by @mrlufepines in pingdotgg/t3code#32657 * fix(web): collapsing Electron main no longer hides the backend server by @thepradipvc in pingdotgg/t3code#32619 * test: remove duplicate client call-site coverage by @t3-code-bot[bot] in pingdotgg/t3code#36776 * fix(github): pull request activity reports a rate-limited review-thread read instead of hiding its threads by @only21mil in pingdotgg/t3code#32620 * fix(web): stacked composer banners no longer show dark seam bands by @Pulsar-Programmer in pingdotgg/t3code#32683 * fix(web): draft images keep their order after a reload by @only21mil in pingdotgg/t3code#32709 * fix(web): open PDF links in the file viewer by @Yash-Singh1 in pingdotgg/t3code#37064 * fix(server): a selected-file commit keeps other files' merge conflicts by @only21mil in pingdotgg/t3code#33115 * fix(web): a file opened from a diff in a project folder inside a repository opens that file by @Entrpi in pingdotgg/t3code#32684 * test(web): ACP project picker test waits for the popup to take focus by @seancarnahan in pingdotgg/t3code#33061 * fix(web): stop held dictation when shortcut modifiers are released by @mrlufepines in pingdotgg/t3code#32648 * perf(web): resting on a PR row also reads its activity, so the timeline shows on click by @Bil0000 in pingdotgg/t3code#32842 * fix(server): agents can see whether a thread is pinned by @shadizx in pingdotgg/t3code#32727 * fix(server): a pushed commit no longer reports failure when the final git status read fails by @only21mil in pingdotgg/t3code#32705 * test(web): the streaming render scenario gives the timeline stable props by @Entrpi in pingdotgg/t3code#32792 * fix(web): HTML file previews use the current canvas color by @Yash-Singh1 in pingdotgg/t3code#37072 * fix(web): an image-only send that fails behind a new draft now says so by @only21mil in pingdotgg/t3code#32732 * fix(assets): align app icons and retain a folder placeholder while loading by @Yash-Singh1 in pingdotgg/t3code#37067 * fix(github): pull request activity says when its comments were cut by @only21mil in pingdotgg/t3code#32707 * test(github): activity mock sets the new truncated flag by @juliusmarminge in pingdotgg/t3code#37078 * fix(server): a branch's own pull request shows past a hundred same-named fork pull requests by @only21mil in pingdotgg/t3code#32796 * fix(server): an effect this build can't read no longer blocks its thread's later work by @only21mil in pingdotgg/t3code#32746 * fix(acp-registry): a failed agent install no longer floods provider status with its whole log by @only21mil in pingdotgg/t3code#32800 * fix(web): terminal reports focus changes to programs that request them by @StiensWout in pingdotgg/t3code#37066 * fix(web): remove redundant subagent action from background row by @Yash-Singh1 in pingdotgg/t3code#37079 * fix(web): a side chat's subagent opens its parent as a side chat tab, not a bare page by @Yuruzuu in pingdotgg/t3code#32907 * fix(shared): inline code paths like `docker/Dockerfile` become file chips by @felixlaga in pingdotgg/t3code#32402 * fix(web): Esc in Clerk's account modal no longer closes Settings by @thepradipvc in pingdotgg/t3code#32859 * fix(mobile): show thread sync status in the header, not above the composer by @juliusmarminge in pingdotgg/t3code#37076 * fix(mobile): undo toast lines up with the folded Duo's tab bar by @juliusmarminge in pingdotgg/t3code#37081 * fix(desktop): Stable switch no longer tells policy-blocked nightly apps to reinstall by hand by @only21mil in pingdotgg/t3code#32609 * fix(web): live dictation transcript keeps the newest words in view by @SharoonRafeek in pingdotgg/t3code#32960 * fix(server): preserve shell paths containing spaces and dashes by @StiensWout in pingdotgg/t3code#37069 * perf(server): batch terminal output that arrives within 2 ms by @juliusmarminge in pingdotgg/t3code#37060 * perf(desktop): WSL preflight starts the staged runtime once instead of twice by @juliusmarminge in pingdotgg/t3code#37052 * fix(mobile): worktree setup shows in the chat from the first moment by @juliusmarminge in pingdotgg/t3code#37084 * fix(server): an MCP pin lands at the top of the Pinned section by @xwchen in pingdotgg/t3code#33978 * fix(mobile): keep Diagnostics and Client Storage content above floating tabs by @j-gaertig in pingdotgg/t3code#32821 * fix(acp-registry): observe delayed model discovery and avoid stale cache lock by @hxbib in pingdotgg/t3code#33170 * test(web): Settings Esc test waits for the modal's initial focus by @juliusmarminge in pingdotgg/t3code#37089 * fix(claude): keep monitor threads waiting between updates by @Yash-Singh1 in pingdotgg/t3code#37085 * fix(mobile): the iPhone Duo's sidebar list ends above its tab bar in portrait by @juliusmarminge in pingdotgg/t3code#37091 * fix(web): switching providers no longer drops the thread's stored effort by @only21mil in pingdotgg/t3code#33090 * fix(mobile): PR activity filter remembers bot and resolved visibility by @juliusmarminge in pingdotgg/t3code#37096 * fix(web): terminal links open bare compiler filenames by @StiensWout in pingdotgg/t3code#37071 * fix(acp): optional text questions can be left blank by @shivamhwp in pingdotgg/t3code#36997 * fix(shared): MCP apps that fall back to a blob: frame no longer render blank by @u9g in pingdotgg/t3code#32129 * fix(shared): keep coalescing workers alive when processors throw by @luke2x in pingdotgg/t3code#32178 * fix(server): an empty Antigravity MCP config still allows text generation by @saphid in pingdotgg/t3code#36496 * perf(server): active thread reads filter on the archived_at column by @mahirozdin in pingdotgg/t3code#28992 * perf(resource-monitor): look up external process identities by PID by @hieu-lee in pingdotgg/t3code#31202 * fix(server): accept ASCII whitespace in base64 image payloads by @darshmahadevia in pingdotgg/t3code#31798 * perf(server): Codex skills for four workspaces load in a median 138 ms instead of 1,657 ms (12x) by @Yuruzuu in pingdotgg/t3code#33972 * fix(web): recover expired composer uploads before sending by @Adamulek123 in pingdotgg/t3code#32910 * fix(server): content search recovers after a slow first index by @ItsThierry in pingdotgg/t3code#33138 * fix(terminal): show shell startup failures across attachments by @StiensWout in pingdotgg/t3code#37088 * perf(server): long threads open about 2.5x faster by @valuin in pingdotgg/t3code#34014 * fix(mobile): inline markdown images page through their message's images by @juliusmarminge in pingdotgg/t3code#37117 * fix(mobile): /model suggestion opens the model picker by @StiensWout in pingdotgg/t3code#37109 * fix(desktop): release cancelled Codex callback listeners during browser launch by @romil-bijarnia in pingdotgg/t3code#29734 * perf(server): skip compression for the desktop's local connection by @voltcrash in pingdotgg/t3code#30832 * fix(server): outside MCP clients stop being offered thread-bound tools by @RVZO6 in pingdotgg/t3code#32764 * fix(ssh): preserve literal home paths in Include expansion by @Lucenx9 in pingdotgg/t3code#33288 * fix(server): finish closed terminal kills before shutdown by @StiensWout in pingdotgg/t3code#37113 * fix(web): keep distinct images with matching attachment metadata by @StiensWout in pingdotgg/t3code#37116 * fix(web): large terminal pastes reach the program intact by @StiensWout in pingdotgg/t3code#37103 * fix(server): settling a thread keeps exec and foreground Bash terminals open by @juliusmarminge in pingdotgg/t3code#37125 * fix(codex): keep browser access prompts available in full access by @Yash-Singh1 in pingdotgg/t3code#37104 * fix(web): open terminal file links naming the server hostname by @StiensWout in pingdotgg/t3code#37133 * fix(mobile): recheck the current branch before selecting it by @StiensWout in pingdotgg/t3code#37121 * fix(acp): wait for session/load to reply before prompting by @shivamhwp in pingdotgg/t3code#37139 * fix(web): terminal mouse reports hit the drawn cell by @StiensWout in pingdotgg/t3code#37148 * fix(server): run_scheduled_task_now returns why a started run failed by @SouthCarpet in pingdotgg/t3code#37149 * fix(azure-devops): pull request titles like `@notes.txt` are saved as typed by @juliusmarminge in pingdotgg/t3code#37110 * fix(web): Sharing & access can select a desktop-local WSL backend by @juliusmarminge in pingdotgg/t3code#37151 * fix(mobile): pasted GIFs on iOS keep their animation by @StiensWout in pingdotgg/t3code#37143 * fix(acp): Copilot's reply after a background agent wakes it opens a continuation run by @juliusmarminge in pingdotgg/t3code#37159 * fix(shared): ß no longer splits words in generated folder and branch names by @lowlyleon in pingdotgg/t3code#37152 * fix(server): name the missing project when a change request's repository has none by @Sidreyas in pingdotgg/t3code#37161 * fix(server): an oversized provider request reads as too large, not raw 413 HTML by @Sidreyas in pingdotgg/t3code#37156 * fix(provider-acp): Grok early task completion no longer replaces the child's answer by @juliusmarminge in pingdotgg/t3code#37162 * fix(web): keypad navigation works with NumLock off by @StiensWout in pingdotgg/t3code#37175 ## New Contributors * @tenyoru made their first contribution in pingdotgg/t3code#33083 * @mrlufepines made their first contribution in pingdotgg/t3code#32657 * @thepradipvc made their first contribution in pingdotgg/t3code#32619 * @Pulsar-Programmer made their first contribution in pingdotgg/t3code#32683 * @seancarnahan made their first contribution in pingdotgg/t3code#33061 * @shadizx made their first contribution in pingdotgg/t3code#32727 * @SharoonRafeek made their first contribution in pingdotgg/t3code#32960 * @xwchen made their first contribution in pingdotgg/t3code#33978 * @j-gaertig made their first contribution in pingdotgg/t3code#32821 * @hxbib made their first contribution in pingdotgg/t3code#33170 * @ItsThierry made their first contribution in pingdotgg/t3code#33138 * @lowlyleon made their first contribution in pingdotgg/t3code#37152 **Full Changelog**: pingdotgg/t3code@v0.1.10-nightly.20261115.4723...v0.1.10-nightly.20261115.4736 </details> Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.10-nightly.20261115.4736










Problem
In a chat message, inline code that names a relative path ending in a well-known extensionless file stays plain code. Examples:
docker/Dockerfile,src/Makefile,docs/README. The same file does become a file chip as./docker/Dockerfile, as an absolute path, asdocker/Dockerfile:3, or as a Markdown link.inlineCodeFilePathCandidaterequires a file extension when there is no line number. It does not checkEXTENSIONLESS_FILE_NAMES, the list the Markdown link checks in the same module already use.Change
The inline-code check now also accepts a basename that is in
EXTENSIONLESS_FILE_NAMES. Branch names and model ids such asorigin/mainandz-ai/glm-5.3stay plain code.Scope and approval
This is a very small fix for an obvious inconsistency inside one function: the module already treats these names as files everywhere else. It affects every client that renders file chips from inline code: web and desktop (
apps/web/src/markdown-links.ts), mobile (apps/mobile/src/lib/markdownLinks.ts) and thread find (packages/shared/src/threadFindText.ts). I searched issues and PRs for "Dockerfile chip", "Makefile chip", "extensionless", "EXTENSIONLESS_FILE_NAMES" and "file chip without extension". #23203 and #22181 touch the nearby line, but they cover extensionless names with a line number, which is a different case.Verification
["docker/Dockerfile", "docker/Dockerfile"]in the existing tabledistinguishes file paths from code and hostnames in %sinpackages/shared/src/markdownLinks.test.ts.vp test run packages/shared/src/markdownLinks.test.tswith the fix: 55 passed.markdownLinks.tsreverted to main:AssertionError: expected null to be 'docker/Dockerfile'.vp run check:changedpasses.Not checked: before/after screenshots in a running client.
Written by Claude Opus 5.5 (
claude-opus-5-5) in the Claude Code harness, run from T3 Code.🤖 Generated with Claude Code