Commit Graph
78 Commits
Author SHA1 Message Date
9c14c13752 fix(oauth): surface backend outage instead of opening browser to 504 (#1985) (#2147)
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-05-19 20:32:22 -07:00
Aqil AzizandGitHub b0fe42b0af fix(composio): request Gmail read scope for triggers (#2191) 2026-05-19 20:02:23 -07:00
Steven EnamakelandGitHub 4d28b1bc00 fix(e2e): resolve 30+ failing E2E specs — i18n, assertion, and import fixes (#2092) 2026-05-19 16:22:56 -07:00
b2ecdba4a8 test(cron): add stable job row selectors (#2062)
Co-authored-by: honor2030 <9779460+honor2030@users.noreply.github.com>
2026-05-19 14:34:54 -07:00
Steven EnamakelandGitHub 288aae12a9 test(e2e): hard-fail mega-flow and fix 6 hidden failures (#2028) 2026-05-17 19:37:48 -07:00
rohanandGitHub 2ec4e954eb feat(ui): restore cross-provider RespondQueuePanel and purge legacy Mnemonic page (#2000) 2026-05-17 18:12:35 -07:00
Steven EnamakelandGitHub b43bba7dac test: expand and stabilize settings e2e coverage (#2024) 2026-05-17 15:15:21 -07:00
Steven EnamakelandGitHub 95f1f5f063 Refactor inference around external Ollama routing (#1975) 2026-05-17 02:37:42 -07:00
Steven EnamakelandGitHub 2e58438aa9 test(e2e): onboarding simple vs advanced mode spec (#1989) 2026-05-17 02:02:25 -07:00
Steven EnamakelandGitHub 5f15fc1f71 test(e2e): cover runtime picker → login → onboarding → logout (#1982) 2026-05-16 20:29:12 -07:00
Steven EnamakelandGitHub 18ca68a56c feat(runtime): add javascript facade and skill creator agent (#1971) 2026-05-16 17:23:35 -07:00
Steven EnamakelandGitHub 0354a6c9e7 feat(audio): add podcast generation and delivery toolkit (#1970) 2026-05-16 16:08:56 -07:00
Steven EnamakelandGitHub 40a384ed65 feat(wallet): add default rpc and EVM execution tools (#1964) 2026-05-16 15:12:09 -07:00
Steven EnamakelandGitHub dbbd33ea2c test(e2e): deep chat-harness coverage + streaming mock LLM + rust-e2e Linux lane (#1892) 2026-05-15 23:28:56 -07:00
f90a337bc0 Add agent task orchestration (#1768)
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-05-15 21:36:08 -07:00
Steven EnamakelandGitHub bbc5504691 test(e2e): convert ~22 stub specs to resetApp() UI-driven pattern (#1889) 2026-05-15 20:51:34 -07:00
Steven EnamakelandGitHub 2d54e46296 test(e2e): make the harness actually exercise the UI past login (#1859) 2026-05-15 15:52:51 -07:00
Steven EnamakelandGitHub aa57a338ff fix(e2e): dismiss BootCheckGate picker before every spec (mega-flow root cause) (#1779) 2026-05-15 03:02:11 -07:00
Steven EnamakelandGitHub 609b6b702b test: expand unit + e2e coverage from test-map (batch 3) (#1778) 2026-05-14 21:51:32 -07:00
Steven EnamakelandGitHub ef4ae5af1c fix(e2e/linux): silence dead-session noise + local docker harness refresh (#1777) 2026-05-14 21:02:14 -07:00
Steven EnamakelandGitHub 7d8826f303 test: expand unit + e2e coverage from test-map (batch 2) (#1752) 2026-05-14 12:39:23 -07:00
Steven EnamakelandGitHub 7b95c37aee test: expand unit + e2e coverage from test-map across core domains (#1724) 2026-05-14 04:58:07 -07:00
Steven EnamakelandGitHub 6386854d6c test(e2e): unify driver onto Appium Chromium attached to CEF CDP (#1696) 2026-05-14 03:10:08 -07:00
Steven EnamakelandGitHub 9694dbee3c refactor(mock-api): domain split + OAuth + Composio + e2e workflow + macOS mega-spec scaffold (#1532) 2026-05-13 08:43:03 -07:00
Steven EnamakelandGitHub 6e2d69792d Add seed phrase onboarding and multi-chain wallet setup (#1407) 2026-05-09 13:54:10 -07:00
Steven EnamakelandGitHub 6b044a9456 docs: rewrite README + gitbooks around current product, add Developing section (#1384) 2026-05-08 21:18:20 -07:00
333f60694e SYM-208: add PR checklist local preflight (#1270)
Co-authored-by: Jwalin Shah <jshah1331@gmail.com>
2026-05-07 10:52:41 -07:00
oxoxDevGitHubgoogle-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>Claude Opus 4.7
d0dc31c53f test(settings): dev-options + data-management E2E coverage (#969) (#1220)
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 13:17:50 -07:00
9379a2b86b fix(macos/plist): add Bluetooth + privacy keys to prevent Gmeet sign-in crash (#1288) (#1297)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 13:10:35 -07:00
28b35f48b1 fix(composio): address trigger toggle review feedback (#1111)
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
Co-authored-by: Jwalin Shah <jshah1331@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-05 11:22:37 -07:00
Cyrus GrayandGitHub da55b9d145 fix(ui): move Intelligence and Webhooks to Developer Options, clean up nav (#1225) 2026-05-05 11:08:42 -07:00
Steven EnamakelandGitHub 195c9c51a6 feat(composio): client-side trigger enable/disable toggles (#1110) 2026-05-02 16:50:28 -07:00
a09222b4ec feat(ci): tighten PR template + add soft-fail quality gates (#965) (#1001)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 11:09:54 -07:00
f7f9fa2044 test: rewards & progression coverage (#970) (#1003)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 19:33:02 -07:00
Mega MindandGitHub 23a18c9c3f fix(notifications): request OS permission at startup and fix socketService listener leak (#998) 2026-04-28 18:56:44 -07:00
dcbcf7cc4e test(e2e): system tool coverage — fs/shell/git/browser (#967) (#1002)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 18:56:10 -07:00
4f9da9eb8d test(foundation): coverage matrix + strategy + gap-fill batch (#773) (#980)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 16:13:48 +05:30
Mega MindandGitHub 1d864efbeb feat(notifications): unify notification slices, dismiss action, stats panel, unified Notifications page (#876) 2026-04-24 11:58:11 -07:00
Steven EnamakelandGitHub 7bd8f9d4c1 ci: parallelize rust tests, dedupe typecheck/clippy/sentry across workflows (#895) 2026-04-24 11:10:27 -07:00
VectorJetandGitHub a96d9da3a4 chore: migrate from yarn to pnpm (#886) 2026-04-24 10:52:16 -07:00
478c92e533 feat(commands): ⌘K palette + keyboard system + chat UX polish (#745)
- Implement command palette (⌘K) using cmdk and Radix Dialog with a global action registry.
- Add a keyboard shortcut system with a capture-phase hotkey manager and scope stack.
- Integrate seed navigation actions for Home, Chat, Intelligence, Skills, and Settings.
- Improve chat UX with a `useStickToBottom` hook for auto-scroll and fixed hydration errors.
- Refactor command UI to display shortcuts inline and remove the redundant help overlay.
- Fix Vite HMR connection issues within the Tauri/CEF environment.

Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-04-23 22:52:54 -07:00
e4c02ba1a6 test(e2e): channels smoke spec (Telegram + Discord) (#859)
- Add E2E smoke test for the /channels page to verify Telegram and Discord tile rendering.
- Validate that Telegram and Discord panels correctly display using fallback definitions.
- Ensure "Connect" affordances are accessible for both Telegram and Discord integrations.
- Apply Prettier formatting to the new channels smoke spec file.

Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-04-23 22:15:28 -07:00
0c74c4206c test(e2e): add cron jobs cross-process flow spec (#783)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Jwalin Shah <jshah1331@gmail.com>
2026-04-22 23:32:01 -07:00
8150189866 test(e2e): add webhooks tunnel flow coverage (#793)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Jwalin Shah <jshah1331@gmail.com>
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-04-22 23:30:53 -07:00
83aa0166d6 feat(onboarding,ui): trust-first onboarding + Button primitive + honest privacy surface (#759)
Co-authored-by: Jwalin Shah <jshah1331@gmail.com>
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-04-22 14:49:27 -07:00
325f019853 refactor(core): move CLI adapters out of src/core/ into per-domain cli modules (#758)
* refactor(voice): move standalone CLI adapter into voice domain

Move the blocking `openhuman voice` / `openhuman dictate` dictation-server
subcommand out of `src/core/cli.rs` and into a new `src/openhuman/voice/cli.rs`
owned by the voice domain. The core CLI dispatcher now routes to
`voice::cli::run_standalone_subcommand` and no longer imports voice internals.

Why this shape: the standalone server blocks forever on the hotkey listener,
which doesn't fit the controller registry's request/response contract. A
domain-owned CLI adapter is the right home for long-lived operational
commands; the controller registry stays for RPC-style capabilities.

Establishes the exposure rule documented in PLAN.md for the rest of the
backend overhaul.

- src/openhuman/voice/cli.rs: new 118-line adapter (flag parsing, tokio
  runtime, run_standalone call)
- src/openhuman/voice/mod.rs: declare `pub mod cli`
- src/core/cli.rs: delete 92-line run_voice_server_command, dispatch only
- PLAN.md: new scope doc + exposure rule

* refactor(text_input): move CLI adapter into domain

Move src/core/text_input_cli.rs to src/openhuman/text_input/cli.rs and
drop the stale `pub mod text_input_cli` from src/core/mod.rs. Core CLI
dispatcher now routes `text-input` to the domain-owned adapter.

The moved file has a mixed shape that validates the exposure rule from
the previous voice commit:
 - `run` starts a long-lived HTTP JSON-RPC server (domain cli.rs shape)
 - `read / insert / ghost / dismiss` are short-lived UX wrappers around
   `text_input::rpc::*` (pretty-print, flag parsing — CLI affordance, not
   transport duplication)

Both shapes legitimately belong in the domain. The controller registry
stays for transport-agnostic capabilities; CLI UX wrappers live next to
their domain RPC.

- git mv src/core/text_input_cli.rs src/openhuman/text_input/cli.rs
- src/openhuman/text_input/mod.rs: declare `pub mod cli`
- src/core/mod.rs: drop `pub mod text_input_cli`
- src/core/cli.rs: update dispatch path

* refactor(tree_summarizer): move CLI adapter into domain

git mv src/core/tree_summarizer_cli.rs src/openhuman/tree_summarizer/cli.rs
and drop the stale `pub mod tree_summarizer_cli` from src/core/mod.rs.
Core CLI dispatcher now routes `tree-summarizer` to the domain-owned
adapter.

All five subcommands (ingest / run / query / status / rebuild) are short
-lived UX wrappers over registry handlers that already exist in
tree_summarizer/schemas.rs — no long-running server, no business logic
duplicated. Straight relocation keeps transport generic.

- git mv src/core/tree_summarizer_cli.rs src/openhuman/tree_summarizer/cli.rs
- src/openhuman/tree_summarizer/mod.rs: declare `pub mod cli`
- src/core/mod.rs: drop `pub mod tree_summarizer_cli`
- src/core/cli.rs: update dispatch path

* refactor(screen_intelligence): move + split CLI adapter into domain

Move src/core/screen_intelligence_cli.rs (699 lines, 7 subcommands) into
a domain-owned cli/ submodule, split by responsibility so no single file
exceeds the project's 500-line soft limit.

Layout:
  screen_intelligence/cli/mod.rs        (204) dispatch + shared helpers
                                              (CliOpts, parse_opts,
                                              bootstrap_engine, logging,
                                              print_help)
  screen_intelligence/cli/server.rs      (79) run_server (long-running
                                              capture+vision loop)
  screen_intelligence/cli/session.rs    (150) status / start / stop
  screen_intelligence/cli/capture.rs    (173) capture / vision (inspect pair)
  screen_intelligence/cli/doctor.rs     (107) readiness diagnostics

Classification before moving:
 - no business-logic duplication vs schemas.rs handlers
 - heavy fns (doctor 103, capture 97, start 89) were 80%+ pretty-printing
   and CLI-side orchestration (polling loop, flag-driven save) — legit
   CLI UX, not extracted domain logic
 - shared helpers stayed pub(super) inside mod.rs; no new domain APIs
   introduced

Core transport changes:
 - delete src/core/screen_intelligence_cli.rs
 - drop `pub mod screen_intelligence_cli` from src/core/mod.rs
 - src/core/cli.rs dispatch routes to domain cli::

After this commit, src/core/cli.rs contains only dispatch lines for all
four migrated domains (voice, text_input, tree_summarizer,
screen_intelligence) — no embedded domain logic.

* refactor(screen_intelligence): address external review — extract capture save + tighten cli visibility

Follow-ups from codex + gemini review of the branch:

 1. Extract CaptureFrame construction + disk save from the CLI.
    `capture.rs --keep` was building a CaptureFrame inline (stamping
    timestamps, copying context fields) and calling
    `AccessibilityEngine::save_screenshot_to_disk` directly. Added
    `AccessibilityEngine::save_capture_test_result(workspace_dir,
    &CaptureTestResult, reason) -> Option<Result<PathBuf, String>>`
    so the CLI only passes the result through and picks a reason
    label. Domain owns the frame shape, not the CLI.

 2. Tighten CLI module visibility across all four migrated domains.
    `pub mod cli` -> `pub(crate) mod cli` and
    `pub fn run_*_command` -> `pub(crate) fn` for voice, text_input,
    tree_summarizer, screen_intelligence. Only src/core/cli.rs needs
    to see these; they're transport plumbing, not domain public API.

No behavior change.

* style: cargo fmt

* address review comments from coderabbitai

- screen_intelligence/cli/server: use effective keep_screenshots (opts.keep
  || config flag) for both SiServerConfig and status output, so the server
  behaves consistently with what the CLI reports.
- voice/cli: surface config load errors with a warning instead of silently
  falling back to Config::default(); reject unknown --mode values instead
  of silently coercing them to Push.
- PLAN.md: narrow the Phase 4 enforcement grep so it forbids domain
  imports/non-dispatcher references in the transport layer while still
  allowing crate::openhuman::<domain>::cli::run_*(...) dispatch calls,
  which this PR legitimately introduces.

* style: cargo fmt voice cli

* style: cargo fmt + bump tauri-cef vendor

* fix(screen_intelligence): narrow save_capture_test_result to pub(crate) (addresses @coderabbitai nitpick on engine.rs:486)

AccessibilityEngine::save_capture_test_result is only called from the
domain's own cli/capture.rs (crate-internal). Making it pub leaks it
into the public API surface unnecessarily — tighten to pub(crate) to
match the visibility-tightening done across the rest of this PR.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* update

* chore: update .gitignore to include scheduled_tasks.lock in app/.claude

* ran formatter

---------

Co-authored-by: Jwalin Shah <jshah1331@gmail.com>
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 14:30:31 -07:00
8212438112 feat(e2e): agent-observable artifact capture for onboarding + privacy flow (#762)
Adds a canonical WDIO spec that captures screenshots, page-source dumps, and
mock request logs at named checkpoints, plus an afterTest hook that dumps
failure artifacts. Wrapper script prints the run dir so coding agents (and
humans) can inspect the flow from disk.

Co-authored-by: Jwalin Shah <jshah1331@gmail.com>
Co-authored-by: WOZCODE <contact@withwoz.com>
2026-04-22 14:28:34 -07:00
340cbc04f2 test(e2e): cover stub webhooks ingress surface (#795)
Co-authored-by: Jwalin Shah <jshah1331@gmail.com>
2026-04-22 13:57:34 -07:00
Cyrus GrayandGitHub 8ab8c59961 fix(onboarding): remove referral code step from onboarding flow (#772)
Simplify onboarding from 4 steps to 3: Welcome → Skills → Context Gathering.
The referral step added unnecessary friction; the feature may return later
so ReferralApplyStep.tsx is preserved but unused.

Closes #752
2026-04-22 14:11:54 +05:30
c26ca795ca fix: keep chat processing alive across tab switches (#587)
* fix(chat): keep in-flight responses alive across tab switches

Made-with: Cursor

* chore: satisfy lint and format push gates

Made-with: Cursor

* fix: address CodeRabbit review on chat runtime PR

Made-with: Cursor

* feat(chat): add explicit inference turn lifecycle in chat runtime slice

Made-with: Cursor

* feat(chat): implement thinking summary feature in chat responses

Added a new mechanism to accumulate and send model reasoning text as a separate message during chat interactions. This includes handling "thinking_delta" events to gather reasoning content, formatting it for clarity, and ensuring it is sent before the main response. Updated the StreamingState struct to include a thinking accumulator for this purpose. This enhancement improves user experience by providing insight into the model's reasoning process.

* feat(telegram): update bot username handling for staging and production environments

Refactored the Telegram bot username resolution logic to differentiate between staging and production environments. Introduced constants for default usernames based on the application environment and updated the GitHub Actions workflow to set the appropriate environment variables. This change enhances the flexibility and clarity of bot username management in the application.

* fix: resolve CodeRabbit review issues on feat/thinking-telegram-summary

- bus.rs: fix UTF-8 char boundary panic in format_thinking_summary truncation
- threadSlice.ts: remove premature activeThreadId clear from addInferenceResponse.rejected
- Conversations.tsx: add composerBlocked global lock, clear tool timeline in safety timeout
- ChatRuntimeProvider.tsx: replace stale toolTimelineRef/inferenceStatusRef reads with live store.getState() calls in all event handlers
- LocalAIDownloadSnackbar.tsx: reset dismissed/collapsed on not-downloading → downloading transition edge
- MemoryGraphMap.tsx: derive activeSelectedNode to guard stale selectedNode after relations refresh; add debug logs to useMemo graph recompute

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: use render-phase update for download dismiss reset in LocalAIDownloadSnackbar

Replace effect-based setState with the React render-phase update pattern so
the not-downloading → downloading transition resets dismissed/collapsed without
triggering the react-hooks/set-state-in-effect lint warning.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: apply prettier and cargo fmt auto-formatting

Formatting changes applied by the pre-push hook during the previous commit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: replace endInferenceTurn with clearRuntimeForThread in Conversations component

Updated the Conversations component to replace the endInferenceTurn dispatch with clearRuntimeForThread. This change simplifies the handling of thread runtime state during error scenarios and timeout conditions, ensuring a cleaner state management approach.

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 06:27:48 +05:30