Skip to content

feat(FAS-9): implement gRPC communication layer, Deck Configurator UI, and desktop app shell#4

Open
ar022 wants to merge 2 commits into
developmentfrom
amitraikwar/FAS-9/grpc-deck-configurator-desktop-shell
Open

feat(FAS-9): implement gRPC communication layer, Deck Configurator UI, and desktop app shell#4
ar022 wants to merge 2 commits into
developmentfrom
amitraikwar/FAS-9/grpc-deck-configurator-desktop-shell

Conversation

@ar022

@ar022 ar022 commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Description of changes

This PR introduces the foundational gRPC communication layer between the FastDeck desktop host and the mobile client, alongside the complete desktop configurator UI — the core of the V1 product. It replaces the previous mesh-networking server model with a typed, streaming gRPC implementation and delivers all primary desktop screens for configuring the deck.

Requirement

  • Establish a typed gRPC contract (via Protobuf) as the single source of truth for FastDeck client–server communication, covering all deck management RPCs.
  • Deliver a fully functional desktop Deck Configurator screen with an interactive N×M button grid, profile/page switching, and a Property Inspector panel that supports all 7 V1 action types.
  • Introduce the desktop app shell with a persistent Sidebar (navigation), TopBar (window controls), and ScreenLayout, so all screens have a consistent, premium frame.
  • Scaffold additional desktop screens: MultiActionEditor, PluginsMarketplace, and ProfilesAndDevices, setting the foundation for V2 features.
  • Migrate the Axum Rust server from mesh-networking to a gRPC DeckService server, managing profiles, grid state, and action execution.

Implementation

  • gRPC Protocol: DeckService and ActionService proto files defined in protos/proto/services/. TypeScript bindings generated via buf + bufbuild/es + connectrpc/es into protos/gen/es/services/ and distributed into shared/client-common and shared/desktop-host workspaces.
  • Axum Server Refactor: All mesh handler, room_registry, time_sync, and topology modules removed. apps/server/src/lib.rs now implements the full gRPC DeckService with profile management and action execution. build.rs added for prost/tonic proto compilation.
  • DeckConfigurator: Interactive grid renders profile cells with icon, label, and background. Clicking a cell opens the Property Inspector (TanStack Form) to configure action type, target, label, and color. Supports page navigation and profile switching via useSwitchProfile / useUpdateCell hooks.
  • Layout Shell: Sidebar, TopBar, and ScreenLayout components introduced in shared/desktop-host/src/components/layout/. DisconnectedScreen shown when gRPC server is unreachable.
  • Routing: All new screens registered in publicScreens.tsx and Routes.tsx.
  • CI & Config: GitHub Actions workflows, Electron builder config, mobile Tauri config (Android com.fastdeck.mobile, iOS scheme), and CLAUDE.md updated to reflect FastDeck branding and new stack.

Ticket: FAS-9
Author: Amit Raikwar

ar022 added 2 commits June 24, 2026 21:03
- Define DeckService and ActionService proto files in protos/proto/services/.
- Generate TypeScript bindings via buf + bufbuild/es + connectrpc/es into protos/gen/es/services/.
- Refactor Axum server from mesh-networking model to gRPC DeckService implementation.
- Remove obsolete mesh handlers, room_registry, time_sync, and topology modules.
- Add build.rs for tonic/prost proto compilation in the server crate.
- Wire generated proto types into shared client service layers (apiClient, hooks, meshConnection).
- Distribute generated TS types into shared/client-common and shared/desktop-host workspaces.
- Add test_client.rs scaffolding for server integration testing.
- Update package.json, Cargo.toml dependencies, and yarn.lock for gRPC stack.
- Addresses FAS-9 requirement: establish typed gRPC contract as the single source of truth for FastDeck client–server communication.
…pdates

- Add DeckConfigurator screen with interactive N×M grid, profile tabs, page navigation, and Property Inspector panel supporting all 7 action types.
- Add MultiActionEditor screen for composing ordered sequences of single actions with configurable delays.
- Add PluginsMarketplace screen for browsing and installing plugin action packs.
- Add ProfilesAndDevices screen for managing profiles and connected mobile clients.
- Add persistent Sidebar (navigation), TopBar (window controls), and ScreenLayout wrapper used across all desktop screens.
- Add DisconnectedScreen component shown when the gRPC server is unreachable, with retry mechanism.
- Register all new screens in the desktop-host router (publicScreens + Routes).
- Update TitleBar in client-common and desktop-host to align with new layout structure.
- Update CI workflows (.github/workflows/) to reflect FastDeck rebranding and new build targets.
- Update Electron desktop app config (craco.config.js, electron-builder.json, index.html, manifest.json, icons).
- Rebrand Tauri mobile app (Android package name com.fastdeck.mobile, iOS scheme, tauri.conf.json).
- Update CLAUDE.md agent guide with accurate stack documentation.
- Update scripts/rename.js, makefile, and scripts/setup.sh for new tooling.
- Addresses FAS-9 requirement: deliver complete desktop configurator experience for V1.
@ar1603 ar1603 self-assigned this Jun 24, 2026
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