Repository navigation
[Website] Add a page listing every platform bridge with filters - #2635
welcoMattic wants to merge 2 commits into
Conversation
The /bridges/platforms page lists the platform bridges of the monorepo, with filters on capabilities, where models run, hosting, data region, model access and type, sorted by their downloads on Packagist. A daily cron (app:platform-bridges:update) reads splitsh.json on GitHub and the download counts on Packagist, without any token, and writes them to var/share. The page only reads that file and config/platform_bridges.yaml, which classifies each bridge.
…rs' logos The filters open from menus under the search. Selecting several ways to run or to host keeps the bridges supporting all of them, "Data region" becomes "Server location", the capability badges are more discreet and the guide links read "Docs". The cards, and a band scrolling under the hero, show the logos of the providers in color, from Lobe Icons (MIT), SVG Logos and Simple Icons (CC0): see assets/icons/brands/README.md. On large screens, the presets and the search block stay at hand while scrolling the list. Assisted-by: Claude <noreply@anthropic.com>
wachterjohannes
left a comment
There was a problem hiding this comment.
The page works and the 43 bridges match the classification file. Changes requested:
- The description ends with a "Generated with Claude Code" line. It ends up in the merge commit, so please drop it.
- The preset chip cannot be toggled off. Already raised with the author directly, details inline for the record.
The hint box point below was also raised directly already.
| <a | ||
| href="{{ path('platform_bridges', this.presetParameters(preset)) }}" | ||
| class="platform-preset{{ preset_active ? ' is-active' }}" | ||
| data-action="live#action:prevent" | ||
| data-live-action-param="applyPreset" | ||
| data-live-preset-param="{{ preset.value }}" | ||
| title="{{ preset.description }}" | ||
| {% if preset_active %}aria-current="true"{% endif %} | ||
| > | ||
| {{ ux_icon(preset.icon, {width: 18, height: 18, 'aria-hidden': 'true'}) }} | ||
| {{ preset.label }} | ||
| </a> |
There was a problem hiding this comment.
Already raised directly, noted here for the record.
The preset chip cannot be toggled off. applyPreset (PlatformBridgeList.php:120-131) always calls clearAll() and then re-selects, so clicking the active chip re-applies the same state. Only the "Active filters" bar clears it. When the preset is active, the chip could clear instead, with the href pointing at the bare route. A button with aria-pressed would also fit better than aria-current="true".
| model_access: multi-vendor | ||
| capabilities: [chat, tool-calling, structured-output, vision, embeddings] | ||
| icon: tabler:plug | ||
| note: What you get depends on the server you connect to. |
There was a problem hiding this comment.
Already raised directly, noted here for the record.
This caveat renders as a bordered callout right under capability chips that read as fixed facts. Generic is the only card where the note is about the chips themselves. A line in the summary, or marking Generic's chips as "depends on the server", would be quieter than a callout. Not blocking.
| capabilities: [chat, structured-output, reasoning, web-search, vision] | ||
| website: https://www.perplexity.ai | ||
| icon: brands:perplexity | ||
| note: Perplexity announced the end of its Sonar API, set for September 27, 2026. |
There was a problem hiding this comment.
The note says the Sonar API ends on September 27, 2026. That date has passed. Should the note be reworded or dropped?
There was a problem hiding this comment.
I think it's fair to extend this file while creating a bridge, but we need a way to update this - how was it created? something we can reuse?
Adds
/bridges/platformsto ai.symfony.com: every platform bridge ofsrc/platform/src/Bridge, with filters to find the ones matching a need.Filters, with a Symfony UX Live Component, kept in the query string so that a filtered list can be shared:
Data:
bin/console app:platform-bridges:updatereads the bridges fromsplitsh.jsonon GitHub and their downloads from Packagist, both without token. It runs every morning on Upsun (.upsun/config.yaml) and writesvar/share/platform_bridges.json, so the page only reads local files and can be cached (public, 10 minutes). A bridge not classified yet, or not on Packagist yet, is still listed; until the first run, the downloads are missing and the list comes from the classification only.Classification:
config/platform_bridges.yaml, only with facts documented by the providers. A test checks that every platform bridge ofsplitsh.jsonis classified.Logos: from Lobe Icons (MIT, licence shipped), SVG Logos and Simple Icons (CC0), and the websites of amazee.ai and Eden AI, see
assets/icons/brands/README.md.🤖 Generated with Claude Code