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

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.
@ar1603ar1603 self-assigned this Jun 24, 2026
Sign up for freeto 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

@ar022@ar1603
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
feat(FAS-9): implement gRPC communication layer, Deck Configurator UI, and desktop app shell by ar022 · Pull Request #4 · FastDeck/fastdeck · GitHub
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

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.
@ar1603ar1603 self-assigned this Jun 24, 2026
Sign up for freeto 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

@ar022@ar1603
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(FAS-9): implement gRPC communication layer, Deck Configurator UI, and desktop app shell by ar022 · Pull Request #4 · FastDeck/fastdeck · GitHub
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

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.
@ar1603ar1603 self-assigned this Jun 24, 2026
Sign up for freeto 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

@ar022@ar1603
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(FAS-9): implement gRPC communication layer, Deck Configurator UI, and desktop app shell by ar022 · Pull Request #4 · FastDeck/fastdeck · GitHub
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

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.
@ar1603ar1603 self-assigned this Jun 24, 2026
Sign up for freeto 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

@ar022@ar1603
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' feat(FAS-9): implement gRPC communication layer, Deck Configurator UI, and desktop app shell by ar022 · Pull Request #4 · FastDeck/fastdeck · GitHub
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

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.
@ar1603ar1603 self-assigned this Jun 24, 2026
Sign up for freeto 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

@ar022@ar1603
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(FAS-9): implement gRPC communication layer, Deck Configurator UI, and desktop app shell by ar022 · Pull Request #4 · FastDeck/fastdeck · GitHub
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

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.
@ar1603ar1603 self-assigned this Jun 24, 2026
Sign up for freeto 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

@ar022@ar1603
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(FAS-9): implement gRPC communication layer, Deck Configurator UI, and desktop app shell by ar022 · Pull Request #4 · FastDeck/fastdeck · GitHub
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

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.
@ar1603ar1603 self-assigned this Jun 24, 2026
Sign up for freeto 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

@ar022@ar1603
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); feat(FAS-9): implement gRPC communication layer, Deck Configurator UI, and desktop app shell by ar022 · Pull Request #4 · FastDeck/fastdeck · GitHub
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

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.
@ar1603ar1603 self-assigned this Jun 24, 2026
Sign up for freeto 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

@ar022@ar1603