Custom Port option with ssh_custom_port validation in Admin.
List env.php-discovered services first; SSH shortcuts and Custom Port last.
Rename the custom option label to "Custom Port" and align tunnel labels/i18n.
Update tunnel UI (phtml/JS), EnvServicePortResolver, controller, tests, and docs.
- Add EnvServicePortResolver (DeploymentConfig) for MySQL, Redis frontends,
session Redis, AMQP, http_cache_hosts, optional search
- Extend tunnel registry with tunnel_type, service_key, service metadata;
provisionServiceTunnel without store/NGINX map; teardown guards
- Admin: Type (Website|Service), service dropdown, list Type column; JS toggle
- TunnelManager/start-server: forward to resolved host:port
- Tests: EnvServicePortResolver + service teardown; test stubs for Magento/PSR
- docs: admin-ui Type/Service and security notes
- Add Tunnels list / Add a tunnel tabs with hash navigation
- Show busy overlay during start/stop/remove/create AJAX
- Reload with #magesail-list after successful actions
- Only reload stop/remove on success; fix error handling
- Remove redundant Stores configuration link; drop getConfigUrl()
TunnelStoreProvisioner expands bare hosts to http:// for unsecure and
https:// for optional secure; full URLs still work. Tunnel block strips
scheme for prefill display. Update tunnel template copy, Index error
text, and README/docs.