Eric Wang a06cb9f370 fix(ui): make disabled checkboxes, radios and switches look disabled
Base UI renders all three controls as a `span`, so the `disabled` attribute
never reaches the DOM and every `disabled:` variant on them compiled to a rule
that could not match. A disabled checkbox was pixel-identical to a live one:
same opacity, same `cursor: auto`, nothing to tell a user the control was
refusing them. The same went for the form-wide disable these components apply
while a submit is in flight — the whole form stayed visually interactive.

Base UI publishes the state as `data-disabled` instead (alongside
`aria-disabled`, which was already correct), which is the same mechanism
`data-checked:` here already relies on. Verified in the browser rather than by
reading: the styled node reports `data-disabled=""`, no `disabled` attribute,
and now computes to opacity 0.5 / cursor not-allowed where it previously
computed to 1 / auto.

UserFormDialog can drop the wrapper it was dimming by hand as a result, which
also stops the explanation underneath a locked control from being dimmed along
with it. AnchorFormDialog still dims its locked role group at the call site;
that now compounds slightly with the control's own dimming, and is left alone
rather than changed unverified.

Tabs already carried an `aria-disabled:` fallback beside its `disabled:`, and
the native inputs (Input, Textarea, CommandInput, InputGroup) were never
affected.
2026-08-20 17:08:39 -05:00

Version 4 release announcement banner

GitHub Workflow Status Discord GitHub Releases FOSSA Status

Convoy

Convoy is a modern and performant KVM server management panel for hosting businesses. It's built with PHP and React and proven technology like Proxmox, making it easier to drop Convoy in an existing system.

Stop paying hundreds of dollars for unreliable and slow software. Subscribe to a license to use Convoy today for $6/node/mo

Screenshot of Convoy

Documentation

Installation

Convoy installs onto a dedicated host with one command:

curl -fsSL https://install.convoypanel.com | sudo bash

See docs/deployment.md for requirements, TLS, upgrades and running against an external database, and docs/configuration.md for every supported setting.

Local Development

Local dev runs on ddev (Postgres 17):

ddev start
ddev composer install
ddev artisan migrate
ddev npm install && ddev npm run build   # or: ddev npm run dev for HMR

The app is served at https://convoy.ddev.site. See AGENTS.md for details on running Artisan/Composer/npm, regenerating typed frontend artifacts, and database snapshots.

Acknowledgements

Please visit this page on our website to view acknowledgements.

License

Convoy is licensed under our own proprietary license.

FOSSA Status

Description
A modern platform tailored for hosting providers and enthusiasts to effortlessly interact with their servers. Seamlessly wrapping around Proxmox, Convoy is easily deployable, affordable at just $6 per node per month for commercial use, and completely free for personal and non-profit endeavors.
Readme 80 MiB
Languages
PHP 51.3%
TypeScript 47.2%
CSS 0.9%
Dockerfile 0.3%
JavaScript 0.2%
Other 0.1%