Skip to content

fix: service gate buttons unclickable on startup - #139

Merged
senamakel merged 4 commits into
tinyhumansai:mainfrom
senamakel:fix/services-bg-branch
Mar 31, 2026
Merged

senamakel merged 4 commits into
tinyhumansai:mainfrom
senamakel:fix/services-bg-branch

Conversation

@senamakel

Copy link
Copy Markdown
Member

Summary

  • Root cause: body::after CSS pseudo-element (background texture overlay) was missing pointer-events: none, blocking all clicks on the Service Required gate screen
  • Secondary fix: Added direct CLI fallback Tauri commands (service_*_direct) so service management works even when the core daemon RPC is unreachable (Catch-22 where you couldn't tell the daemon to start itself)
  • UX improvements: Install/Start buttons are always enabled as recovery actions; added loading spinner with operation labels for visual feedback

Key changes

File Change
app/src/index.css Add pointer-events: none to body::after overlay
app/src-tauri/src/lib.rs Add 5 direct CLI bridge Tauri commands for service management
app/src/utils/tauriCommands.ts RPC-first with CLI fallback for all service functions
app/src/components/daemon/ServiceBlockingGate.tsx Always-enabled Install/Start, loading states, better feedback

Test plan

  • Fresh install: gate screen shows → Install and Start buttons are clickable → service installs and starts → gate opens
  • Kill service while app is running → gate appears → Start button works → gate reopens
  • Normal startup with daemon running → gate passes through immediately (no regression)
  • All buttons show loading spinner during operations
  • Error messages display when operations fail

Closes #129

🤖 Generated with Claude Code

…checks

- Updated the ServiceBlockingGate component to include additional checks for service installation status, ensuring it accounts for 'Unknown' states.
- Refactored tauriCommands to implement direct service command invocations with error handling, allowing fallback to CLI parsing for service operations (install, start, stop, status, uninstall).
- Introduced a new utility function to parse CLI JSON output into the expected CommandResponse format, improving robustness in service command responses.
- Added new Tauri commands for direct service interactions, enhancing the application's ability to manage service states effectively.
…ockingGate component

- Introduced a new section in CLAUDE.md outlining best practices for debug logging, emphasizing verbose diagnostics, critical checkpoints, structured context, and safety measures.
- Updated the ServiceBlockingGate component to improve operation handling by adding an operating label state, enhancing user feedback during service operations, and refining error handling and logging for better traceability.
- Updated index.css to include pointer-events: none; for specific elements, enhancing user experience by preventing unintended interactions.
… and tauriCommands

- Refactored text in the ServiceBlockingGate component for better readability by consolidating lines.
- Enhanced the formatting of the openhumanServiceStart function in tauriCommands for improved clarity in the method call structure.
@senamakel
senamakel merged commit e5e0922 into tinyhumansai:main Mar 31, 2026
6 of 7 checks passed
AusAgentSmith pushed a commit to AusAgentSmith/openhuman that referenced this pull request May 23, 2026
* refactor: enhance service command handling and improve service state checks

- Updated the ServiceBlockingGate component to include additional checks for service installation status, ensuring it accounts for 'Unknown' states.
- Refactored tauriCommands to implement direct service command invocations with error handling, allowing fallback to CLI parsing for service operations (install, start, stop, status, uninstall).
- Introduced a new utility function to parse CLI JSON output into the expected CommandResponse format, improving robustness in service command responses.
- Added new Tauri commands for direct service interactions, enhancing the application's ability to manage service states effectively.

* docs: add debug logging guidelines to CLAUDE.md and enhance ServiceBlockingGate component

- Introduced a new section in CLAUDE.md outlining best practices for debug logging, emphasizing verbose diagnostics, critical checkpoints, structured context, and safety measures.
- Updated the ServiceBlockingGate component to improve operation handling by adding an operating label state, enhancing user feedback during service operations, and refining error handling and logging for better traceability.

* style: add pointer-events none to CSS for improved interaction handling

- Updated index.css to include pointer-events: none; for specific elements, enhancing user experience by preventing unintended interactions.

* style: improve text formatting and readability in ServiceBlockingGate and tauriCommands

- Refactored text in the ServiceBlockingGate component for better readability by consolidating lines.
- Enhanced the formatting of the openhumanServiceStart function in tauriCommands for improved clarity in the method call structure.
senamakel added a commit to nocstah/openhuman that referenced this pull request Sep 11, 2026
…\n* refactor: enhance service command handling and improve service state checks\n\n- Updated the ServiceBlockingGate component to include additional checks for service installation status, ensuring it accounts for 'Unknown' states.\n- Refactored tauriCommands to implement direct service command invocations with error handling, allowing fallback to CLI parsing for service operations (install, start, stop, status, uninstall).\n- Introduced a new utility function to parse CLI JSON output into the expected CommandResponse format, improving robustness in service command responses.\n- Added new Tauri commands for direct service interactions, enhancing the application's ability to manage service states effectively.\n\n* docs: add debug logging guidelines to CLAUDE.md and enhance ServiceBlockingGate component\n\n- Introduced a new section in CLAUDE.md outlining best practices for debug logging, emphasizing verbose diagnostics, critical checkpoints, structured context, and safety measures.\n- Updated the ServiceBlockingGate component to improve operation handling by adding an operating label state, enhancing user feedback during service operations, and refining error handling and logging for better traceability.\n\n* style: add pointer-events none to CSS for improved interaction handling\n\n- Updated index.css to include pointer-events: none; for specific elements, enhancing user experience by preventing unintended interactions.\n\n* style: improve text formatting and readability in ServiceBlockingGate and tauriCommands\n\n- Refactored text in the ServiceBlockingGate component for better readability by consolidating lines.\n- Enhanced the formatting of the openhumanServiceStart function in tauriCommands for improved clarity in the method call structure.\n
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.

[Bug] Service Required screen: Load failed and buttons disabled on app startup

1 participant