- /api/compilers now exposes `compiler.tools` as a string[] of tool IDs
rather than the full Record<id, Tool>, which was leaking nested fields
like `tool.exe`. The frontend looks up per-tool metadata via the
existing toolsService cache.
- /api/libraries/:language now accepts `?fields=` with dotted-path
support for nested version fields (e.g. `versions.id,versions.version`).
Omitting `fields` returns the legacy full shape, so existing API
consumers are unaffected. The frontend now requests only the fields
the libs widget actually uses.
- Mirror the semver-group `$order` onto the input compiler array in
options-handler.setCompilers, so the api handler (now driving
TomSelect via lazy-load) sees the same ordering as the legacy
client-options.js path.