# extensions_ui: Sync suggested extensions with the live registry \(\#63211\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/4c902c9db22a82f5f3a14c02442e7f60ec40d9c8)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 4c902c9db22a82f5f3a14c02442e7f60ec40d9c8

Requested commit: 4c902c9db22a82f5f3a14c02442e7f60ec40d9c8

Commit: 4c902c9db22a82f5f3a14c02442e7f60ec40d9c8

Tree: a8d87784a08d7192ae1386129d06bbbfd4629155

Author: Hao Lam

Committer: GitHub

## Message

```
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>
```

## Parents

- [532532bb804fc535dad54358eef714a5a45ed09f](https://git.cafe/gitcafe/zed/commit/532532bb804fc535dad54358eef714a5a45ed09f?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/4c902c9db22a82f5f3a14c02442e7f60ec40d9c8?format=markdown)
