* feat: integrate models.dev registry for auto-populated model defaults
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: fall back to upstream provider for model registry lookup
When the browseros meta-provider is used, the registry lookup now
also tries the upstream provider (e.g., openrouter, anthropic) so
that BrowserOS-hosted models get correct context window and image
support defaults.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: add Object.hasOwn guards to prevent prototype chain lookup
Addresses Greptile review: bracket notation on the registry object
could return prototype-chain properties for keys like __proto__ or
constructor, bypassing the 404 guard in the route handler.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add new CDP tools for links, hidden pages/windows, show/move
- get_page_links: extract deduplicated links from a page via evaluate
- new_hidden_page: open a hidden tab for background automation
- create_hidden_window: create a hidden window for background automation
- show_page: restore a hidden page back into a visible window
- move_page: move a tab to a different window or position
- Default includeLinks to false in get_page_content
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: use AX tree for get_page_links, add tests, fix test scripts
- Refactor get_page_links to use accessibility tree instead of raw JS
evaluate — more reliable for role="link" elements and shadow DOM
- Add extractLinkNodes() to snapshot.ts and getPageLinks() to browser.ts
- Add tests for get_page_links (constructed HTML with dedup/filtering),
new_hidden_page, show_page, move_page, create_hidden_window
- Fix root package.json test scripts to match server's actual scripts
- Update CLAUDE.md test docs to reflect current structure
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat: replace flaky TypeScript dev:watch with Go CLI (devwatch)
The Bun-based scripts/dev/start.ts orchestrator had fundamental issues with
WXT when launched via `bun run --filter` with cwd manipulation. This replaces
it with a Go CLI at tools/devwatch/ that provides:
- Process supervision with auto-restart on crash
- Colored log streaming with [tag] prefixes
- Automatic port discovery (--new flag)
- Fresh user-data directory creation
- Process group management for clean shutdown (SIGTERM → SIGKILL escalation)
- CDP readiness polling before starting the server
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: run agent codegen before wxt and add force-kill on double Ctrl+C
- Run graphql-codegen if generated/graphql/ doesn't exist, matching the
agent's own `dev` script behavior
- Second Ctrl+C sends SIGKILL to all process groups and exits immediately,
so you're never stuck in a restart loop
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: add run.sh wrapper that checks for Go and prompts to install
If Go isn't installed, shows a clear message with install instructions
(brew install go / go.dev/dl). Also skips rebuilding if the binary
already exists and main.go hasn't changed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: show double Ctrl+C hint at startup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: swap ANSI escape codes for fatih/color
Adds proper TTY detection, NO_COLOR env var support, and cleaner
color API. Also improves help output with bold/dim styling.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: restructure devwatch into browseros-dev CLI with cobra subcommands
Expands the single-file devwatch into a modular CLI with three subcommands:
- `watch` — dev environment with process supervision (port of devwatch)
- `test` — start test env, run bun test, clean up (replaces TS test helpers)
- `cleanup` — kill ports + remove orphaned temp dirs (replaces cleanup.sh)
Shared Go packages for browser lifecycle (CDP polling, arg building),
server health checks (health + extension status), and process management
(managed proc, port killing, streaming, monorepo root finding).
Fixes PR #389 feedback:
- Add timeout after SIGKILL in Stop() to prevent indefinite hang
- Fix run.sh freshness check to detect changes in all .go files
- Add double Ctrl+C force-kill to test command
- Guard test cleanup with sync.Once to prevent race condition
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: replace run.sh freshness logic with Makefile
Make handles timestamp-based dependency tracking natively. The Makefile
rebuilds only when any .go file, go.mod, or go.sum is newer than the
binary. run.sh just checks for Go, calls make, and execs the binary.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat: created auth client
* feat: created login page for testing auth
* feat: setup logout page
* feat: setup graphql codegen
* feat: setup graphql + react query utils
* feat: setup queryprovider with localforage
* feat: created auth provider
* feat: update claude.md
* feat: documents for bulk conversation upload
* chore: install missing package
* fix: setup codegen to scan for .ts files
* chore: setup check conversation query
* feat: upload conversation by profileId
* chore: upload messages in batches
* feat: account for edge cases in conversation upload
* feat: delete uploaded conversations from localstorage
* feat: load conversation history from api
* feat: implement delete conversation using graphql
* feat: delete confirmation for conversation history
* fix: issue with clearing conversations after upload
* feat: implement pagination for graphql chat history
* chore: update CLAUDE.md
* chore: update claude.md
* feat: save conversations to server
* fix: handle streaming check on remote conversation save
* feat: restore conversation from graphql
* fix: timestamp issue on the chat history page
* feat: sync llm providers from background script
* feat: update llm providers on change via background script
* chore: added a try catch block
* feat: display incomplete providers in separate UI
* feat: delete provider on server when initiated by user
* feat: setup scheduled tasks storage to sync to graphql
* feat: auto run sync in background script
* fix: sync all keys of scheduled tasks based on updatedAt timestamp
* feat: added login dropdown on the sidebar
* feat: simplify sidenav header
* feat: update header design after login
* feat: setup profile page
* feat: added back button to profile page
* fix: scrollbar flash in profile page
* feat: finish login handshake
* feat: clear storage on logout
* fix: logout page style
* feat: added tooltip to encourage user to sign in
* feat: added back button to login page
* fix: upload logic for profile picture
* feat: account for profile name in sidebar branding
* chore: set file upload url from backend request
* chore: remove default placeholder from profile component
* chore: sync with main
* Revert "chore: sync with main"
This reverts commit 77e06b894ce30235d1bfa31c8e2699b34df423a5.
* Reapply "chore: sync with main"
This reverts commit dd921d97cc9794d1872e13689c881f68e4dfee47.
* chore: updated lock file
* fix: run codegen before build:ext
* fix: run codegen before build:gent
* fix: remove hardcoded localhost header in magic link
---------
Co-authored-by: Nikhil Sonti <nikhilsv92@gmail.com>
* feat: agent mode on or off
* fix: cleaner whitelist for chat mode
* fix: cleaner whitelist for chat mode
* feat: agent mode with tooltip
* feat: agent mode chat mode final UI
* feat: previous conversation history
* fix: re-enable the DELETE endpoint
* fix: make bun run start:server show lgos
* fix: minor text change
* fix: keep 16k context window size
* fix: use message ref to get access to full restored messages (when create prev conversation history)
* fix: don't run watchdog in dev-mode
* Revert "fix: re-enable the DELETE endpoint"
This reverts commit 9cbbbab6768c7c412c8f65bd88643e2856fa5169.
---------
Co-authored-by: Nikhil Sonti <nikhilsv92@gmail.com>
* fix: add timeout and window based mutex to improve speed
* fix: add timeout and window based mutex to improve speed
* fix: add timeout and window based mutex to improve speed
* fix: add timeout and window based mutex to improve speed
* fix: add timeout and window based mutex to improve speed
* fix: add timeout and window based mutex to improve speed
* fix: add timeout and window based mutex to improve speed
* fix: add timeout and window based mutex to improve speed
* fix: add timeout and window based mutex to improve speed
* fix: move suspense boundary closer to corresponding pages
* fix: pre-resolve the client via singleton to speed up the clientPromise
* feat: apply theme background faster with plain script
* chore: update biome version
* feat: make rpc client persist promise with useMemo and remove loading
text
* fix: replace dvh with vh
* fix: replace dvh with vh in create graph
* feat: move to bun plugin to intercept WASM
* feat: new build/server.ts with refactored
* fix: clean-up source map dirs before build
* fix: remove elide for build
* fix: clean-up source map ordering
* feat: custom node component
* feat: create resizable panels for graph ui
* feat: setup hono rpc on agent
* feat: created getClient util
* feat: created rpc client provider
* chore: reafctor agent sdk
* chore: created usechat hook
* chore: graph create update endpoint return ai sdk stream
* chore: graph create update endpoint return ai sdk stream
* chore: graph create update endpoint return ai sdk stream
* chore: graph create update endpoint return ai sdk stream
* feat: graph chat component
* feat: integrate input field
* feat: make getActionForMessage optional
* feat: integrate chat messages ui
* feat: update graph canvas with latest message
* feat: support editing graph with new message
* feat: create chat test function
* fix: created chat test api integration
* chore: remove background window state
* chore: improve agent ui stream
* chore: print error
* feat: create workflow storage
* feat: created workflows screen on options page
* feat: added error handling to workflows chat
* chore: ignore graph code generation folder
* fix: provide a better header title name
* fix: buttons accessibility on graph canvas
* feat: improve test and save workflow button state
* chore: provide autofocus to the workflow header
* feat: setup save and edit options on the workflow
* feat: open the workflow in edit mode
* fix: use sentry to capture server exception
* feat: integrate run workflow using dialog box
* feat: display errors in the run dialog box
* fix: use rpc client to delete workflows
* feat: fix panel sizes on graph creation
* fix: provide suspense fallback boundary for the options page
* feat: auto fitview on graph updates
* fix: node colors in the graph
* chore: make minimap movable
* feat: provide styling to react flow controls
* fix: missing imports
* fix: pass personalization to workflow runs
* feat: provide back button in workflow page
* feat: added confirmation when leaving workflow page without saving
* feat: provide animation to nodes
* feat: autofit canvas to resizepanel size
* feat: added workflows to newtab page
* fix: typescript lint errors
* feat: enforce bun version
* fix: typecheck command
---------
Co-authored-by: shivammittal274 <mittal.shivam103@gmail.com>
* fix: controller-ext is built separately
* fix: remove un-used scripts in agent/
* fix: rename to assistant
* fix: add build scripts
* feat: new start:dev to start both
* fix: update gitignore
* feat: --new-ports support for dev:start
* feat: update start-all to support port and new data dir
* fix: add help insturctions for start:dev
* chore: fix monorepo setup
1) use single .env.development file at the root
2) update package.json to contain commands to start server and agent
3) rename "Assistant" package name to "agent"
4) rename HTTP_MCP_PORT to SERVER_PORT
* chore: update README
* chore: update .env.example
* fix: clean-up old docs
* feat: refactored test utils
* fix: clean-up dev scripts and move to scripts/dev
* fix: clean-up script
* fix: refactor tests into properly controller tests and cdp tests
* feat: refactor packages into single project
* feat: created apps directory
* chore: removed duplicate packages
* fix: delete package-lock.json
since project uses bun
* feat: support reading config from TOML file
* fix: wip toml config
* refactor: one config, merged from args, config and config.toml example
* fix: update package.json to have bun start:with_toml
* docs: add quick toml explaination
* refactor: clean-up /init endpoint, we'll use TOML to pass config