Skip to content

feat: accessibility automation v1 (core + tauri + settings) - #47

Merged
senamakel merged 3 commits into
mainfrom
feat/accessbility
Mar 28, 2026
Merged

senamakel merged 3 commits into
mainfrom
feat/accessbility

Conversation

@senamakel

Copy link
Copy Markdown
Member

Summary

  • Added a native rust-core accessibility automation subsystem (macOS-first) with ephemeral in-memory runtime state.
  • Implemented new core JSON-RPC methods under openhuman.accessibility_* for status, permissions, session lifecycle, capture, input actions, and autocomplete flows.
  • Exposed matching Tauri commands and frontend typed wrappers in tauriCommands.ts.
  • Added Redux accessibilitySlice for permissions/session/feature/error state and async lifecycle actions.
  • Added first-class Settings route/panel at /settings/accessibility and linked it in settings navigation/home.
  • Added Rust and frontend tests for lifecycle, validation, RPC envelopes, reducer behavior, and panel rendering.

Problem

  • The app lacked a dedicated, native accessibility automation layer for screen state monitoring, bounded input control, and predictive typing.
  • There was no unified core RPC/host/UI surface to manage consented sessions, permission checks, panic stop handling, and runtime status.

Solution

  • Implemented rust-core/src/openhuman/accessibility/mod.rs as a process-global engine with:
    • Hybrid capture scheduler (foreground context change + baseline cadence).
    • Session TTL enforcement and explicit consent-gated session start.
    • Denylist-based context blocking and input action validation.
    • In-memory-only capture/context buffers (no disk persistence by default).
    • Predictive autocomplete suggest/commit primitives.
  • Added AccessibilityAutomationConfig to core config schema/defaults and wired it into Config.
  • Extended rust-core/src/core_server.rs dispatch table with all openhuman.accessibility_* methods and response typing.
  • Added Tauri command proxies in src-tauri/src/commands/openhuman.rs, command registration in src-tauri/src/lib.rs, and typed bridge event emission (openhuman:accessibility) with host notifications on key events.
  • Added frontend command wrappers/types, Redux slice integration, and a dedicated settings UI panel.

Testing

  • yarn -s compile
  • cargo check --manifest-path src-tauri/Cargo.toml
  • Other checks run (list commands)
  • npx prettier --check .
  • npx eslint .
  • npx tsc --noEmit
  • cargo fmt --manifest-path src-tauri/Cargo.toml
  • npx vitest run --config test/vitest.config.ts src/store/__tests__/accessibilitySlice.test.ts src/components/settings/panels/__tests__/AccessibilityPanel.test.tsx
  • cargo test -p openhuman-core accessibility --manifest-path src-tauri/Cargo.toml
  • Manual validation completed (list scenarios)

Impact

  • Runtime/platform: Adds macOS-first accessibility automation surface in core; non-macOS paths report unsupported/limited permission status.
  • Security/safety: Explicit consent gate, bounded session TTL, denylist checks, and panic-stop action path.
  • Data handling: Capture/context state remains ephemeral in memory by default (no persisted frames).
  • Compatibility: Adds new config section (accessibility) with defaults; existing config loads remain backward compatible via serde defaults.

Breaking Changes

  • None
  • Yes (describe clearly, including migration steps)

Related

  • Issue(s): N/A
  • Follow-up PR(s)/TODOs:
    • Wire true OS-level global panic hotkey registration (current panic stop path is action-driven).
    • Expand native permission interrogation for Screen Recording/Input Monitoring beyond unknown fallback where feasible.

@senamakel
senamakel marked this pull request as ready for review March 28, 2026 00:25
@senamakel
senamakel merged commit 23c4e11 into main Mar 28, 2026
8 of 14 checks passed
@senamakel
senamakel deleted the feat/accessbility branch March 28, 2026 00:28
AusAgentSmith pushed a commit to AusAgentSmith/openhuman that referenced this pull request May 23, 2026
…nsai#47)

* feat(accessibility): add core automation RPC + settings panel

* added accessibility code
senamakel referenced this pull request in senamakel/openhuman Jul 10, 2026
…rged)

#47/#48 merged; crate main (95fa263) now carries all three OpenAiModel
host-parity features (auth styles #44, temperature suppression/override #47,
merge_system_into_user #48). Re-pin the cutover branch from the local
integration branch to released main so the vendor pin references published
API. Core lib green.

Claude-Session: https://claude.ai/code/session_018MnMVgnzxchtcs1DDUxTfF
senamakel added a commit to nocstah/openhuman that referenced this pull request Sep 11, 2026
…nsai#47)\n\n* feat(accessibility): add core automation RPC + settings panel\n\n* added accessibility code\n
M3gA-Mind added a commit that referenced this pull request Oct 8, 2026
Takes the SDK's /memory/free-period route (sdk#49), the /memory/v1
dialect routes (sdk#45) and the Sarvam agent integration (sdk#46, #47).
Additive only: no SDK type, method or route is removed or renamed, the
crate stays 0.1.1 with the same dependencies, so neither lockfile changes.
M3gA-Mind added a commit that referenced this pull request Oct 8, 2026
Takes tinychannels #50 (ChannelMessage.sender_name, the sender's display
name; a WhatsApp LID-only sender stays <lid>@lid instead of +<lid>) and
#47 (tokio-tungstenite 0.29 -> 0.30).

- The gitlink and the compiled registry pin move together. The record
  points at the v0.1.11 release; each of its 11 platform digests is copied
  from the release's published checksum.toml, which matches GitHub's own
  asset digest. The release covers the same 11 platforms.
- The gitlink now sits on the tag, so the source/module skew (13 commits
  past v0.1.10, tinychannels#49 among them) is gone and its exemption in
  module-pin-exemptions.json is removed.
- sender_name: None at the 38 ChannelMessage literals that name every
  field; the 4 that spread from another message keep working.
- Lockfiles: the three tinychannels crates 0.1.10 -> 0.1.11; tinychannels
  now depends on tokio-tungstenite 0.30.0, added beside the 0.29.0 that
  openhuman, axum and tinyliveagents keep, with tungstenite 0.30.0. Their
  dependencies already resolve in the lock (rand 0.10.2, sha1 0.11.0).
senamakel added a commit that referenced this pull request Oct 23, 2026
Adds a review note to the remaining-security plan covering TinySecurity PR #47, which serializes secret-scope registration, approval-scope replacement, and retirement through a single module lifecycle lock so rejected changes preserve the live resolver. Notes the pushed owner branch, passing focused tests and Clippy, and that cross-platform CI and review are still pending.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
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.

1 participant