extensions_ui: Sync suggested extensions with the live registry (#63211)

# Objective

The suggested-extension prompt only fires for a hand-picked list of file
types. Many rows had drifted from what their extensions actually
register today (`toml` didn't know `uv.lock`, `dockerfile` ignored
Compose files, …), entries were no longer sorted by ID, and the table
had no tests locking its invariants.

## Solution

- Synced every existing row against its extension's current
`path_suffixes`.
- Added 15 popular languages: asciidoc, csv, env, gdscript, groovy, ini,
json5, julia, just, nginx, odin, perl, python-requirements, scala,
solidity.
- Re-sorted by ID.
- Excluded despite appearing in manifests: erb compounds and elixir
`html.eex` (dead keys under exact-match), haskell `x`, asciidoc `asc`
(PGP clash), env/ini generic words (`conf`, `local`, systemd units…),
gdscript `import`, ruby `Berksfile.lock` (JSON). `gradle`/`gradle.kts`
stay with the groovy/kotlin rows.
- Behavior change: git-firefly is no longer suggested for
`COMMIT_EDITMSG` etc., mirroring upstream's own manifest — only
`COMMIT_EDITMSG` has built-in core coverage.

## Testing

- New tests lock suffix uniqueness across the table, ID sortedness, and
representative lookups for every row — including dotfiles (`.envrc`,
`.gitattributes`) and name-over-extension priority (`uv.lock`,
`compose.yaml`, `nginx.conf`).
- All 69 extension IDs were verified against
[zed-industries/extensions](https://github.com/zed-industries/extensions);
every kept suffix appears in that extension's live language config.
- Best exercised by checking out this branch, uninstalling e.g. the
`csv` extension, and opening a `.csv` file.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

<details>
  <summary>Showcase</summary>

Before: opening `hello.sol` shows nothing — Zed silently moves on.
After: *"Do you want to install the recommended 'solidity' extension for
'sol' files?"*

</details>

---

Release Notes:

- Added extension installation suggestions for many more languages when
opening unsupported files

---------

Co-authored-by: MrSubidubi <finn@zed.dev>
4c902c9db2Hao Lam committed on 9/23/2026, 8:50:24 PM· committed by GitHubparent532532b
10 files changedLine totals unavailable