Skip to content

fix: batch bug fixes for Advanced Settings pages (#749-#759) - #763

Merged
AustinChangLinksys merged 11 commits into
dev-2.2.1from
peter/advanced-settings
Apr 1, 2026
Merged

fix: batch bug fixes for Advanced Settings pages (#749-#759)#763
AustinChangLinksys merged 11 commits into
dev-2.2.1from
peter/advanced-settings

Conversation

@PeterJhongLinksys

Copy link
Copy Markdown
Collaborator

Summary

Skipped (pending FW team)

Test plan

  • Verify DHCP detail page back button returns to Local Network
  • Verify DHCP reservation rejects invalid MAC/IP input
  • Verify IPv6 Port Service back button returns to Firewall
  • Verify IPv6 port service accepts link-local and ULA addresses
  • Verify port range dialog validates input and rejects invalid ranges
  • Verify saving MTU does not flash Bridge mode on Internet Settings

PeterJhongLinksys and others added 11 commits March 24, 2026 15:43
…cho read-only (ISS-2/3/4/6/8)

- Add ppp_interface.yaml and vlan_termination.yaml multi-instance YAML definitions
- Slim down wan_settings.yaml: remove PPP/VLAN/LCPEcho/MAC clone fields
- Swap Gateway/DNS to X_LINKSYS_DefaultGateway and X_LINKSYS_DNSServers vendor paths (ISS-3/4)
- Add PPP instance lifecycle: Add when switching TO PPPoE, Delete when switching away (ISS-2)
- Add VLAN instance lifecycle: Add when enabling, Delete when disabling (ISS-8)
- Make LCPEcho display-only via UspInfoRow, remove from validator (ISS-6)
- Add DNS comma-separated split (fetch) and merge (save) in service layer
- Track pppInstancePath and vlanInstancePath in InternetSettingsStatus
- Regenerate ppp_interface.g.dart, vlan_termination.g.dart, wan_settings.g.dart, index.dart
- Update documentation: vendor param R/W correction, fix design FW notes, SSH re-validation
- Rewrite service tests: parallel fetch, DNS split/merge, PPP/VLAN Add/Delete, DHCP renewal

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Comment out the Auto switch UI for MTU in optional settings section,
replacing it with a simple numeric input field, since the device always
returns the actual MTU value (e.g. 1500) and has no concept of "auto".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add MACAddressRule validation with inline error on MAC input field
- Add IpAddressRule and IpAddressNoReservedRule on IP input field
- Disable submit button when form is invalid or fields are empty
- Update wan_settings generated code and internet settings service

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Change backFallback from RouteNamed.uspMenu to RouteNamed.uspLocalNetwork
  since DHCP Settings is accessed from the Local Network page

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use onBackTap with explicit goNamed(RouteNamed.uspFirewall) instead of
  backFallback, because canPop() returns true in nested ShellRoute and
  pop() goes to the parent route (Advanced Settings) rather than Firewall

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove link-local (fe80::/10) and ULA (fc00::/7) rejection from
  IPv6WithReservedRule since these are valid targets for LAN port service
- Update final check to accept Global Unicast, Link-local, and ULA
- Still reject: loopback, multicast, unspecified, deprecated 6bone
- Update tests to expect link-local and ULA addresses as valid

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… dialog

- Add real-time validation on all input fields with inline error messages
- Validate description max length (32 chars)
- Validate port numbers range (1–65535) for external start/end and internal
- Validate external port end must be greater than start
- Validate internal IP address format using IpAddressRule
- Disable submit button when form is invalid or required fields are empty

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…fields (#759)

Post-save re-fetch may return empty addressingType transiently while
bridgeEnabled is always true (LAN-side L2 bridge), causing fromRawFields()
to misdetect connection type as Bridge.

Add one-shot _preservedConnectionType guard in notifier: set during
performSave when type unchanged, consumed by performFetch to override
transient misdetection. Also add TODO comments for proper Bridge Mode
implementation via TR-181 Bridging model (tracked in #762).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace AlertDialog/TextButton/FilledButton with AppDialog/AppButton
  in DHCP reservation and port range forwarding dialogs
- Apply dart format fixes
- Add unit tests for UspWanConnectionType and InternetSettingsStatus

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@AustinChangLinksys AustinChangLinksys left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Code Review Approved

Comprehensive bug fix PR addressing critical UX issues in Advanced Settings pages.

Key Improvements:

  • Fixed navigation paths for DHCP and IPv6 Port Service pages
  • Added robust input validation with proper error feedback
  • Implemented PPP/VLAN multi-instance CRUD with firmware compatibility
  • Enhanced IPv6 validation to accept link-local and ULA addresses
  • Comprehensive test coverage for all changes

Code Quality: High - follows established patterns with proper error handling
Risk Level: Low - well-contained fixes with thorough testing
Backward Compatibility: Excellent - handles firmware variations gracefully

Ready for merge. Great work on addressing multiple user-facing issues systematically! 🚀

@AustinChangLinksys
AustinChangLinksys merged commit 6515455 into dev-2.2.1 Apr 1, 2026
2 checks passed
@AustinChangLinksys
AustinChangLinksys deleted the peter/advanced-settings branch April 1, 2026 05:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment