* feat(tailscale): add custom control URL configuration & handling w/ tests
- Introduced TailscaleControlURL in the Config struct to allow configuration of the Tailscale control server.
- Added RPC handlers for getting and setting the Tailscale control URL.
- Updated TailscaleStatus to include controlURL, ensuring it reflects the configured or default value.
- Enhanced parsing and normalization of the control URL to enforce valid formats.
- Updated TailscaleCard component to manage and display the control server URL, allowing users to save changes.
* docs: update README to include optional Tailscale networking feature
Added a new section highlighting the built-in Tailscale status and control-server configuration, including support for custom Headscale-compatible endpoints.
* docs: Extend DEVELOPMENT.md with Tailscale control server details
* fix(tailscale): enhance error handling in rpcSetTailscaleControlURL
- Updated the rpcSetTailscaleControlURL function to revert the TailscaleControlURL to its previous value if saving or applying the new URL fails.
- Added a new test to ensure that the configuration is not saved when the apply command fails, verifying that the previous URL remains intact.
- Adjusted existing tests to validate the order of operations during the URL setting process.
Related to Review: https://github.com/jetkvm/kvm/pull/1312#pullrequestreview-3984856379
* refactor(tailscale): simplify control URL application logic and enhance error handling
- Renamed the test function to better reflect its purpose and updated the test cases to ensure correct command execution.
- Removed fallback logic for applying the Tailscale control URL, streamlining the error handling to return a clear error message when the "set" command fails.
- Added a new test to verify behavior when the "set" command fails, ensuring proper error reporting.
Related to Review https://github.com/jetkvm/kvm/pull/1312#pullrequestreview-3984856379
* refactor(tailscale): update control server configuration in UI & documentation
- Updated the TailscaleCard component to allow users to select between default and custom control server URLs.
- Improved state management for control server URL input based on the selected mode.
- Revised DEVELOPMENT.md to clarify control server application logic and error handling.
- Removed outdated example JSON-RPC payloads for clarity.
Related to Review: https://github.com/jetkvm/kvm/pull/1312#discussion_r2980284611
* refactor(ui): use built-in components and i18n for TailscaleCard
- Replace raw <select> with SelectMenuBasic component
- Use SettingsItem with new SM size for control server setting
- Use NestedSettingsGroup for indented custom URL input
- Add tailscale_* i18n keys to all 14 locale files with translations
- Add size prop (SM/MD) to SettingsItem for compact contexts
---------
Co-authored-by: Adam Shiervani <adam.shiervani@gmail.com>
* docs: add comprehensive DEVELOPMENT.md for JetKVM
Add a detailed development guide covering setup, project structure,
and workflows for both full device and frontend-only development.
Include prerequisites, build commands, deployment scripts, environment
variables, and testing instructions to streamline onboarding and
contributions.
This improves developer experience and standardizes development
practices across the project.
* docs: clean up DEVELOPMENT.md by removing outdated sections
Remove the Custom Build Tags and Release Process sections to simplify
the documentation and avoid confusion with deprecated build and release
instructions. Focus the document on current performance profiling steps.
* docs: rewrite DEVELOPMENT.md for clearer setup and usage
Revise the JetKVM development guide to improve clarity and usability.
Simplify the introduction and reorganize prerequisites and setup steps
to help new developers get started quickly. Add explicit instructions for
cloning, tool verification, deployment, and testing. Streamline common
tasks sections with clear commands for UI and backend development,
testing, and log viewing. Update project layout overview for easier
navigation. These changes reduce onboarding friction and enhance the
developer experience.
* docs: remove duplicate "Get Started" header in DEVELOPMENT.md
Clean up the DEVELOPMENT.md file by deleting the repeated
"Get Started" header
* docs: add recommended development environment section
Add guidance recommending Linux or macOS for development and suggest
using WSL on Windows to ensure compatibility with shell scripts and
build tools. This improves the developer experience and reduces setup
issues across different operating systems.
* docs: add links to prerequisites in DEVELOPMENT.md
Update DEVELOPMENT.md to URLs for Go, Node.js, Git, and SSH
access prerequisites. This improves clarity and helps developers quickly
find installation resources.