Skip to content

feat(ui): responsive ui updates EVERYONE ELSE = DONT CREATE UI PRs#971

Draft
danditomaso wants to merge 33 commits intomeshtastic:mainfrom
danditomaso:feat/responsive-updates
Draft

feat(ui): responsive ui updates EVERYONE ELSE = DONT CREATE UI PRs#971
danditomaso wants to merge 33 commits intomeshtastic:mainfrom
danditomaso:feat/responsive-updates

Conversation

@danditomaso
Copy link
Collaborator

Description

This will touch most of the components in the UI, if you open a PR relating to any of the UI components this will cause a merge conflict. Hold off until this has been merged.

Related Issues

Changes Made

Testing Done

Screenshots (if applicable)

Checklist

  • Code follows project style guidelines
  • Documentation has been updated or added
  • Tests have been added or updated
  • All i18n translation labels have been added (read
    CONTRIBUTING_I18N_DEVELOPER_GUIDE.md for more details)

@vercel
Copy link

vercel bot commented Nov 29, 2025

@danditomaso is attempting to deploy a commit to the Meshtastic Team on Vercel.

A member of the Team first needs to authorize it.

@danditomaso danditomaso changed the title feat(ui): responsive ui feat(ui): responsive ui updates EVERYONE ELSE = DONT CREATE UI PRs Dec 1, 2025
@rj-xy
Copy link
Contributor

rj-xy commented Dec 4, 2025

How is this going @danditomaso - would you like a hand with anything?

@danditomaso
Copy link
Collaborator Author

danditomaso commented Dec 4, 2025

It's coming (so is Christmas). I had posted screenshots in the linux-native meshtastic discord channel. Just doing an overhaul of the UI and sneaking in some updates along the way. Should be ready soon, if you have any translation updates to share feel free to make those types of changes

How is this going @danditomaso - would you like a hand with anything?

- Replace biome with oxlint for linting and oxfmt for formatting
- Update lint-staged configuration for new tooling
- Add husky pre-commit hook
- Fix lint errors in staged files:
  - Replace biome-ignore comments with eslint-disable-next-line
  - Fix no-explicit-any errors by using `as never` for dynamic config values
  - Fix react-hooks/exhaustive-deps warnings with proper suppression comments
  - Add aria-selected to tab role elements for accessibility
  - Add variant/size to SidebarMenuButton type definition
  - Memoize tabs array in ModuleConfig to prevent re-renders
  - Remove unused imports and fix unused parameter warnings
Inline transport creation directly into ConnectionService, removing
the unnecessary strategy abstraction layer:

- Delete BluetoothStrategy.ts, SerialStrategy.ts, HttpStrategy.ts, types.ts
- Add private methods: createTransport, createHttpTransport,
  createBluetoothTransport, createSerialTransport, disconnectTransport
- Replace ConnectionState.strategy with ConnectionState.connectionType
- Transport logic is now ~180 lines in ConnectionService vs 4 separate files

This reduces indirection without changing behavior.
Split the monolithic BrowserHardware object into two focused modules:
- browserSerial.ts: Web Serial API utilities (hasSerial, getSerialPorts, etc.)
- browserBluetooth.ts: Web Bluetooth API utilities (hasBluetooth, etc.)

Benefits:
- Better tree-shaking: apps only using one transport don't bundle the other
- Clearer responsibility separation
- Functions exported directly instead of object methods

The original BrowserHardware.ts is preserved as a re-export facade for
backward compatibility, marked as deprecated.

ConnectionService.ts updated to import from the new modules directly.
Split config synchronization logic into dedicated ConfigSyncService:
- tryLoadCachedConfig: Load cached config for fast reconnection
- saveConfigToCache: Save fresh config after successful connection
- saveBaseHashes: Compute and save config hashes for change detection
- saveFreshConfig: Combined save operation

This reduces ConnectionService from 917 to 828 lines while creating a
focused 175-line ConfigSyncService for cache and hash management.

The new service uses a ConfigSyncContext interface to receive only
the device properties it needs, improving testability.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants