core-agent-ide/codex-rs/utils
pash-openai 6acede5a28
tui: restore visible line numbers for hidden file links (#12870)
we recently changed file linking so the model uses markdown links when
it wants something to be clickable.

This works well across the GUI surfaces because they can render markdown
cleanly and use the full absolute path in the anchor target.

A previous pass hid the absolute path in the TUI (and only showed the
label), but that also meant we could lose useful location info when the
model put the line number or range in the anchor target instead of the
label.

This follow-up keeps the TUI behavior simple while making local file
links feel closer to the old TUI file reference style.

key changes:
- Local markdown file links in the TUI keep the old file-ref feel: code
styling, no underline, no visible absolute path.
- If the hidden local anchor target includes a location suffix and the
label does not already include one, we append that suffix to the visible
label.
- This works for single lines, line/column references, and ranges.
- If the label already includes the location, we leave it alone.
- normal web links keep the old TUI markdown-link behavior

some examples:
- `[foo.rs](/abs/path/foo.rs)` renders as `foo.rs`
- `[foo.rs](/abs/path/foo.rs:45)` renders as `foo.rs:45`
- `[foo.rs](/abs/path/foo.rs:45:3-48:9)` renders as `foo.rs:45:3-48:9`
- `[foo.rs:45](/abs/path/foo.rs:45)` stays `foo.rs:45`
- `[docs](https://example.com/docs)` still renders like a normal web
link

how it looks:
<img width="732" height="813" alt="Screenshot 2026-02-26 at 9 27 55 AM"
src="https://github.com/user-attachments/assets/d51bf236-653a-4e83-96e4-9427f0804471"
/>
2026-02-26 10:29:54 +00:00
..
absolute-path Avoid AbsolutePathBuf::parent() panic under EMFILE by skipping re-absolutization (#12647) 2026-02-23 21:59:33 -08:00
approval-presets chore: remove codex-core public protocol/shell re-exports (#12432) 2026-02-20 23:45:35 -08:00
cache feat: add support for building with Bazel (#8875) 2026-01-09 11:09:43 -08:00
cargo-bin feat: experimental flags (#10231) 2026-02-02 11:06:50 +00:00
cli chore: remove codex-core public protocol/shell re-exports (#12432) 2026-02-20 23:45:35 -08:00
elapsed feat: split codex-common into smaller utils crates (#11422) 2026-02-11 12:59:24 +00:00
fuzzy-match feat: split codex-common into smaller utils crates (#11422) 2026-02-11 12:59:24 +00:00
git feat: add support for building with Bazel (#8875) 2026-01-09 11:09:43 -08:00
home-dir Validate CODEX_HOME before resolving (#10249) 2026-01-30 15:46:33 -08:00
image adding image support for gif and webp (#11237) 2026-02-09 14:47:22 -08:00
json-to-toml feat: add support for building with Bazel (#8875) 2026-01-09 11:09:43 -08:00
oss feat: split codex-common into smaller utils crates (#11422) 2026-02-11 12:59:24 +00:00
pty feat: use process group to kill the PTY (#12688) 2026-02-24 16:55:23 +00:00
readiness feat: add support for building with Bazel (#8875) 2026-01-09 11:09:43 -08:00
rustls-provider chore: put crypto provider logic in a shared crate (#11294) 2026-02-10 01:04:31 -08:00
sandbox-summary chore: remove codex-core public protocol/shell re-exports (#12432) 2026-02-20 23:45:35 -08:00
sleep-inhibitor feat(sleep-inhibitor): add Linux and Windows idle-sleep prevention (#11766) 2026-02-24 11:51:44 -08:00
stream-parser feat: adding stream parser (#12666) 2026-02-25 13:27:58 +00:00
string tui: restore visible line numbers for hidden file links (#12870) 2026-02-26 10:29:54 +00:00