New channel config#807
Conversation
Add staged channel config with tabbed UI, import/export workflow, and global form state refactor
|
@philon- is attempting to deploy a commit to the Meshtastic Team on Vercel. A member of the Team first needs to authorize it. |
There was a problem hiding this comment.
Pull Request Overview
This PR refactors the channel configuration system to integrate it into the main device configuration workflow. The changes enable staged channel edits through a draft state system and improve the channel import dialog with better state management and UI enhancements.
- Integrates channel configuration into the main config page with tabbed UI
- Implements working channel config state for staged edits before committing
- Refactors form state management from field-level errors to global form validation
- Enhances import dialog with slot selection and optional LoRa settings import
Reviewed Changes
Copilot reviewed 42 out of 42 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/web/src/validation/channel.ts | Adds type export for channel validation schema |
| packages/web/src/routes.tsx | Removes old channels route |
| packages/web/src/pages/Messages.tsx | Updates import path for getChannelName function |
| packages/web/src/pages/Config/index.tsx | Integrates channel config and updates form state management |
| packages/web/src/pages/Config/ChannelConfig.tsx | New channel config page with tabbed interface |
| packages/web/src/pages/Channels.tsx | Removes old channels page |
| packages/web/src/core/stores/deviceStore/index.ts | Adds working channel config state management |
| packages/web/src/core/stores/appStore/index.ts | Replaces field-level error tracking with global form state |
| packages/web/src/components/Form/DynamicForm.tsx | Updates to use new global form state system |
| packages/web/src/components/Dialog/ImportDialog.tsx | Enhances import dialog with slot selection and optional settings |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
There was a problem hiding this comment.
Pull Request Overview
This PR refactors the Channel config page to integrate it into the existing device and module config structure. Changes to channel settings are now saved to a draft state and pushed to the device in batches rather than immediately. The channel import dialog has also been enhanced with better UI and the ability to opt out of LoRa settings.
- Adds working channel config state management for staged channel edits
- Integrates channel configuration into main config workflow with tabbed UI
- Refactors form handling to use global valid/dirty state instead of field error arrays
Reviewed Changes
Copilot reviewed 42 out of 42 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/web/src/validation/channel.ts | Adds type export for channel validation |
| packages/web/src/routes.tsx | Removes old channels route |
| packages/web/src/pages/Messages.tsx | Updates import path for getChannelName |
| packages/web/src/pages/Config/index.tsx | Integrates channel config into main config workflow |
| packages/web/src/pages/Config/ChannelConfig.tsx | New channel config page with tabbed interface |
| packages/web/src/pages/Channels.tsx | Removes old channels page |
| packages/web/src/core/stores/deviceStore/index.ts | Adds working channel config state management |
| packages/web/src/core/stores/appStore/index.ts | Replaces error array with global form validation state |
| packages/web/src/components/Form/DynamicForm.tsx | Updates to use new global form state |
| packages/web/src/components/Dialog/ImportDialog.tsx | Enhanced import dialog with slot selection |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
danditomaso
left a comment
There was a problem hiding this comment.
Overall this is an excellent PR, I'd love to see the "setIsDirty" and "setIsValid" is refactored into a single union value, this way avoids the case where it could be both dirty and valid by accident.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Description
This PR refactors the Channel config page, incorporating it into the existing structure for device and module config. Changes to channel settings are saved to a draft state and pushed to the device in a batch fashion. The channel import dialog is also improved, allowing the user to opt out of saving LoRa settings, as well as saving channel configuration to draft instead of immediately committing to the device.
Related Issues
Fixes #699
Changes Made
workingChannelConfigin device store for staged channel editsChannelConfigpage with tabbed UI for per-channel editingTesting Done
Tested locally. No automated tests were created.
Screenshots (if applicable)
Channel config page

Step 1 of channel import

Default settings

Optional choice of channel slot

Checklist
CONTRIBUTING_I18N_DEVELOPER_GUIDE.md for more details)