Commit Graph

2457 Commits

Author SHA1 Message Date
Felarof
0b38310ae0 feat: assign daily limit survey users to random experiment buckets (#350)
Instead of a hardcoded experimentId=daily_limit, randomly assign users
to one of four survey direction buckets (competitor, switching, workflow,
activation) matching the round 2 survey pattern.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 16:41:54 -08:00
Nikhil Sonti
741d3ac40c chore: bump build version 2026-02-21 17:26:00 -08:00
Nikhil Sonti
221d2a0ee8 fix: clean third_party/ also now 2026-02-21 15:55:21 -08:00
Nikhil Sonti
968ccf80ad chore: bump patch 2026-02-21 15:42:10 -08:00
Nikhil Sonti
bed1a31b74 fix: use last profile when context not available 2026-02-21 15:24:55 -08:00
Nikhil Sonti
3274c55131 chore: bump patch 2026-02-21 14:20:52 -08:00
Nikhil Sonti
d8e9813934 feat: new cdp domains for bookmarks, tab-groups and history 2026-02-21 14:20:34 -08:00
Nikhil Sonti
e5539e0801 feat: bump patch 2026-02-21 12:17:18 -08:00
Nikhil Sonti
d15d3902d4 feat: New cdp functions in browser.* domain 2026-02-21 12:17:01 -08:00
Nikhil Sonti
491d705771 chore: Merge branch 'main' 2026-02-21 12:16:05 -08:00
Nikhil Sonti
82ed0661ce feat: getTargetForTab CDP command 2026-02-21 12:16:00 -08:00
Nikhil Sonti
bd64a87c7c fix: cdp race condition on start 2026-02-21 12:15:06 -08:00
Felarof
669932adfd chore: sync packages/browseros-agent submodule (to 38471f6) 2026-02-21 00:39:35 +00:00
Felarof
38471f6b6a fix: resume conversation (#346) 2026-02-20 16:23:15 -08:00
Felarof
f5c0765457 chore: sync packages/browseros-agent submodule (to 3955d6e) 2026-02-20 23:11:58 +00:00
Felarof
3955d6ee62 feat: add tool loop agent skills to the repo 2026-02-20 14:58:29 -08:00
Felarof
a89d511100 chore: sync packages/browseros-agent submodule (to 1f5d9ec) 2026-02-20 17:18:32 +00:00
Felarof
1f5d9ec55c feat: add project-level Claude Code skills for dev workflow
Copy dev workflow skills (dev, dev1-start through dev7-pr, dev-debug,
ts-style-review) to project .claude/skills/ so they're available to all
contributors. Excludes twitter agent and browseros browser skills.

Update .gitignore to track .claude/skills/ and .claude/commands/.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 08:56:48 -08:00
Felarof
424384457d chore: sync packages/browseros-agent submodule (to 1204697) 2026-02-20 16:16:38 +00:00
Felarof
1204697873 fix: minor text change 2026-02-20 07:45:00 -08:00
Felarof
e133e35527 chore: sync packages/browseros-agent submodule (to 2e1fc2e) 2026-02-20 14:20:29 +00:00
Felarof
2e1fc2e8f9 feat: add API key auth flow for Klavis MCP servers (#343)
* feat: update to support more klavis MCP servers

* fix: minor icon fix

* fix: normalize klavis mcp auth flow compatibility

* feat: add API key auth flow for Klavis MCP servers

Servers that use API key authentication (Stripe, Cloudflare, Brave
Search, Exa, Mem0, Resend, Mixpanel, PostHog, Postman, Zendesk,
Intercom) were failing with "Failed to add app" because the frontend
only handled OAuth flows. This adds the complete API key auth path:

- Backend: apiKeyUrls in StrataCreateResponse, submitApiKey() method,
  /servers/submit-api-key route
- Frontend: ApiKeyDialog component, useSubmitApiKey hook, ConnectMCP
  updated to show dialog for API-key servers instead of opening OAuth

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

* fix: remove broken success check in Klavis submitApiKey

The Klavis /mcp-server/instance/set-auth endpoint returns
{ message: "Authentication updated successfully." } without a
success field. Our code checked `data.success` which was always
undefined, causing API key auth to fail even when Klavis accepted
the key. The request() method already throws on non-2xx responses,
so the explicit check was redundant and incorrect.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 19:31:59 +05:30
Felarof
5fb6496217 chore: sync packages/browseros-agent submodule (to d775cad) 2026-02-20 03:05:47 +00:00
Felarof
d775cadc17 feat: move connect apps into main sidebar (#344) 2026-02-19 18:35:31 -08:00
Felarof
a169f74d11 feat: add Round 2 direction parameter to JTBD survey (#342)
* feat: add Round 2 direction parameter to JTBD survey frontend

Thread direction parameter from popup trigger through URL params to the
survey chat API. Randomly assign one of 4 investigation directions
(competitor, switching, workflow, activation) when the in-app popup
triggers, encoding it as experimentId=r2_{direction} for analytics.

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

* refactor: remove direction param, encode in experimentId instead

Direction is now encoded entirely in experimentId (e.g., "r2_competitor").
Remove the separate direction URL param and prop threading — the backend
derives direction from experimentId. Simplifies the frontend to only
set experimentId with a random direction on popup trigger.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 18:27:32 -08:00
Felarof
5e4187a294 feat: collapse workflow generation tidbits in place (#341)
* fix: setup

* fix: compact workflow tidbits within streamed assistant parts

feat: collapse workflow tidbit status messages in graph chat

* Revert "fix: compact workflow tidbits within streamed assistant parts"

This reverts commit f5fa6d6b7a480dfc001ede6de7949f45c7777f37.

* fix: collapse workflow tidbit status messages in graph chat

Tidbit messages (jokes/status ending with ...) during workflow execution
now replace each other in place instead of stacking as separate chat
bubbles. Handles both consecutive tidbit messages and multiple tidbit
text parts within a single streamed message.

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

* fix: compact multi-line tidbits within a single text part

Tidbits arrive as text-deltas accumulated into a single text part
(e.g. "Generating workflow…\nReticulating splines…\n..."). The previous
fix only handled separate parts and separate messages but not multiple
tidbit lines within one part. Added compactTidbitLinesInPart to trim
multi-line tidbit text to just the last line.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 17:42:10 -08:00
Felarof
44951cc5a6 docs: add small line before videos 2026-02-19 15:39:58 -08:00
Felarof
a5e82f992c docs: added videos 2026-02-19 15:39:27 -08:00
github-actions[bot]
2dfb730571 docs: Sireeshreddy01 signed the CLA in browseros-ai/BrowserOS#$pullRequestNo 2026-02-19 21:43:30 +00:00
Nikhil Sonti
8843883b09 chore: bump patch 2026-02-18 12:33:49 -08:00
Nikhil Sonti
dbf92bdea1 feat: add tabId and windowId in each targetInfo 2026-02-18 12:31:47 -08:00
Nikhil Sonti
1feadebaff chore: bump patch 2026-02-17 16:10:26 -08:00
Nikhil Sonti
eae3e91d15 feat: getTabForTarget CDP implementation 2026-02-17 16:10:00 -08:00
Nikhil Sonti
a8f1545b04 fix: update base commit 2026-02-17 07:44:50 -08:00
Nikhil Sonti
908a82e07e chore: Merge branch 'main' 2026-02-16 17:10:26 -08:00
Nikhil Sonti
be83e728ea fix: debug builds not fail on un-used args 2026-02-16 17:09:12 -08:00
Nikhil Sonti
c6e0572630 fix: windows handle fix v0.40.1 2026-02-16 12:26:43 -08:00
Felarof
0192033e81 chore: sync packages/browseros-agent submodule (to f35ed67) 2026-02-16 19:17:40 +00:00
Nikhil
f35ed67617 fix: add scroll support to dialog when content overflows (#340)
Added max-h-[85vh] and overflow-y-auto to DialogContent component
to enable scrolling when dialog content exceeds viewport height.
This fixes the scheduled task dialog not showing scroll when
content is too long.

https://claude.ai/code/session_01CP8aUnunJpW9mYwTbt3gpt

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-16 10:44:31 -08:00
Felarof
433f4e1d88 chore: sync packages/browseros-agent submodule (to 3b393f0) 2026-02-16 17:19:10 +00:00
Nikhil
3b393f0639 feat: increase tips show probability to 0.3 (#336)
https://claude.ai/code/session_01EwJaviDJJM3jugajAff4Y4

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-16 08:45:21 -08:00
Felarof
a4ffe89a99 chore: sync packages/browseros-agent submodule (to c7a72b5) 2026-02-16 13:33:43 +00:00
shivammittal274
c7a72b5164 fix: resolve stale closure bug in LLM Hub provider management (#333)
* chore: baseline setup

* fix: resolve stale closure bug in LLM Hub provider management

saveProvider and deleteProvider were wrapped in useCallback with
[providers] dependency, building updated arrays from the closure-captured
providers state. When adding a provider then deleting another, the delete
callback could have a stale providers array that didn't include the newly
added one — causing the new provider to be lost when written to storage.

Fix: read current state from persistent storage via loadProviders()
before every mutation, matching the pattern used in useLlmProviders.ts.
Remove useCallback wrappers since they no longer depend on providers state.

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

* feat: inject stop button to pages controlled by agent (#334)

* chore: baseline setup

* feat(agent): When the agent is running, right now we inject an orange glow. See the `apps/age

Task ID: TOiaMuDz

* fix: clean up agent storage

* fix: improve the stop button style

* fix: type issues with stopAgentStorage

---------

Co-authored-by: BrowserOS Coding Agent <coding-agent@browseros.com>
Co-authored-by: Dani Akash <DaniAkash@users.noreply.github.com>

* fix: resolve stale closure bug in LLM Hub provider management

saveProvider and deleteProvider were wrapped in useCallback with
[providers] dependency, building updated arrays from the closure-captured
providers state. When adding a provider then deleting another, the delete
callback could have a stale providers array that didn't include the newly
added one — causing the new provider to be lost when written to storage.

Fix: read current state from persistent storage via loadProviders()
before every mutation, matching the pattern used in useLlmProviders.ts.
Remove useCallback wrappers since they no longer depend on providers state.

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

---------

Co-authored-by: BrowserOS Coding Agent <coding-agent@browseros.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Dani Akash <DaniAkash@users.noreply.github.com>
2026-02-16 18:34:05 +05:30
Felarof
aa29a29570 chore: sync packages/browseros-agent submodule (to 2c8c6f6) 2026-02-16 12:21:34 +00:00
shivammittal274
2c8c6f6120 feat: inject stop button to pages controlled by agent (#334)
* chore: baseline setup

* feat(agent): When the agent is running, right now we inject an orange glow. See the `apps/age

Task ID: TOiaMuDz

* fix: clean up agent storage

* fix: improve the stop button style

* fix: type issues with stopAgentStorage

---------

Co-authored-by: BrowserOS Coding Agent <coding-agent@browseros.com>
Co-authored-by: Dani Akash <DaniAkash@users.noreply.github.com>
2026-02-16 17:42:32 +05:30
Felarof
a5e7677af0 chore: sync packages/browseros-agent submodule (to 509451a) 2026-02-13 20:15:20 +00:00
Felarof
509451ac2f fix: hub provider list goes stale after add then delete (#331)
saveProvider and deleteProvider used useCallback with [providers]
dependency, causing a stale closure bug. When adding a new provider
then deleting another, the delete callback still referenced the old
providers array (before the add), losing the newly added provider.

Now reads current state from storage before each mutation, matching
the pattern used in useLlmProviders. Also removes unnecessary
useCallback wrappers per project conventions.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 12:03:17 -08:00
Nikhil
e3d25892a9 feat: login session import fix (#364)
* feat: cookie import fix

* chore: bump offset + version

* feat: fixes to keychain macos signing
2026-02-12 13:56:40 -08:00
Nikhil Sonti
613bca5222 fix: gignore 2026-02-12 13:41:15 -08:00
Nikhil
ba52e92517 feat/new go cli (#363)
* feat: bros dev cli for better management

* fix: minor

* fix: review fixes
2026-02-12 13:40:41 -08:00