Compare commits

...

2 Commits

Author SHA1 Message Date
Nikhil Sonti
6632e34bdb fix: update dogfood binary gitignore 2026-04-27 16:17:58 -07:00
Nikhil Sonti
a6f5c00ac8 refactor: rename internal BrowserOS CLIs 2026-04-27 16:07:41 -07:00
82 changed files with 158 additions and 159 deletions

View File

@@ -180,8 +180,7 @@ packages/*/dist
browseros-server
browseros-server.exe
browseros-server-*
tools/alpha/balpha
tools/alpha/browseros-alpha
tools/dogfood/browseros-dogfood
tools/dev/browseros-dev
log.txt

View File

@@ -14,7 +14,7 @@
"dev:watch:new": "./tools/dev/run.sh watch --new",
"dev:manual": "./tools/dev/run.sh watch --manual",
"dev:setup": "./tools/dev/setup.sh",
"install:balpha": "make -C tools/alpha install",
"install:browseros-dogfood": "make -C tools/dogfood install",
"test:env": "./tools/dev/run.sh test",
"test:cleanup": "./tools/dev/run.sh cleanup",
"start:server": "bun run --filter @browseros/server --elide-lines=0 start",

View File

@@ -1,4 +1,4 @@
BINARY := balpha
BINARY := browseros-dogfood
SOURCES := $(shell find . -name '*.go') go.mod go.sum
PREFIX ?= $(HOME)/bin

View File

@@ -1,20 +1,20 @@
# balpha
# browseros-dogfood
Internal BrowserOS alpha dogfooding CLI for running the current checkout against a copied BrowserOS profile.
Internal BrowserOS dogfooding CLI for running the current checkout against a copied BrowserOS profile.
## What It Does
`balpha` starts a local BrowserOS dogfooding environment:
`browseros-dogfood` starts a local BrowserOS dogfooding environment:
- Uses the BrowserOS repo path from config, then works from `packages/browseros-agent`.
- Copies one installed BrowserOS profile into a separate dev profile under `~/.config/balpha/profile`.
- Copies one installed BrowserOS profile into a separate dev profile under `~/.config/browseros-dogfood/profile`.
- Writes `apps/server/.env.production` and `apps/cli/.env.production` from config.
- Runs the existing `tools/dev/setup.sh` setup flow.
- Builds the WXT dev extension.
- Launches `/Applications/BrowserOS.app` with the dev profile, the local extension, and the built-in server disabled.
- Starts the local Bun server from `apps/server`.
It does not auto-pull on `start`. Use `balpha pull` when you want to refresh the checkout.
It does not auto-pull on `start`. Use `browseros-dogfood pull` when you want to refresh the checkout.
## Requirements
@@ -31,22 +31,22 @@ From the BrowserOS monorepo root:
```bash
cd packages/browseros-agent
bun run install:balpha
bun run install:browseros-dogfood
```
This builds `tools/alpha/balpha` and installs it to `~/bin/balpha`.
This builds `tools/dogfood/browseros-dogfood` and installs it to `~/bin/browseros-dogfood`.
To install somewhere else:
```bash
cd packages/browseros-agent/tools/alpha
cd packages/browseros-agent/tools/dogfood
make install PREFIX=/usr/local/bin
```
Check the binary:
```bash
balpha --help
browseros-dogfood --help
```
## First-Time Setup
@@ -54,7 +54,7 @@ balpha --help
Run:
```bash
balpha init
browseros-dogfood init
```
`init` asks for:
@@ -66,13 +66,13 @@ balpha init
Config is written to:
```text
~/.config/balpha/config.yaml
~/.config/browseros-dogfood/config.yaml
```
The dev profile defaults to:
```text
~/.config/balpha/profile
~/.config/browseros-dogfood/profile
```
`init` also writes the generated production env files in the configured checkout.
@@ -80,7 +80,7 @@ The dev profile defaults to:
## Start
```bash
balpha start
browseros-dogfood start
```
Each start:
@@ -97,23 +97,23 @@ Each start:
Use this when you want to refresh the copied profile before launching:
```bash
balpha start --refresh-profile
browseros-dogfood start --refresh-profile
```
Use this for a headless launch:
```bash
balpha start --headless
browseros-dogfood start --headless
```
Stop the environment with `Ctrl+C`.
## Logs
`balpha start` writes process logs to:
`browseros-dogfood start` writes process logs to:
```text
~/.config/balpha/profile/logs
~/.config/browseros-dogfood/profile/logs
```
The current files are:
@@ -121,27 +121,27 @@ The current files are:
- `chromium.log`: BrowserOS/Chromium stdout and stderr.
- `server.log`: local Bun server stdout and stderr.
When either file is older than one day at startup, `balpha` rotates it to
When either file is older than one day at startup, `browseros-dogfood` rotates it to
`<name>.old` before writing a fresh log.
To print the log directory and file paths:
```bash
balpha logs
browseros-dogfood logs
```
## Update The Checkout
`balpha start` intentionally does not pull. To update the configured repo:
`browseros-dogfood start` intentionally does not pull. To update the configured repo:
```bash
balpha pull
browseros-dogfood pull
```
If the checkout has uncommitted changes, `pull` fails. To pull anyway:
```bash
balpha pull --force
browseros-dogfood pull --force
```
## Refresh The Copied Profile
@@ -149,7 +149,7 @@ balpha pull --force
To overwrite the dev profile from the selected installed BrowserOS profile:
```bash
balpha refresh-profile
browseros-dogfood refresh-profile
```
This removes and recreates `dev_user_data_dir`. It refuses to run if the dev user-data dir is the real BrowserOS user-data dir or lives inside it.
@@ -157,7 +157,7 @@ This removes and recreates `dev_user_data_dir`. It refuses to run if the dev use
## Edit Config
```bash
balpha config edit
browseros-dogfood config edit
```
Important fields:
@@ -166,7 +166,7 @@ Important fields:
- `browseros_app_path`: BrowserOS executable to launch.
- `source_user_data_dir`: installed BrowserOS user-data dir. Defaults to `~/Library/Application Support/BrowserOS`.
- `source_profile_dir`: installed profile directory to copy.
- `dev_user_data_dir`: separate dev user-data dir. Defaults to `~/.config/balpha/profile`.
- `dev_user_data_dir`: separate dev user-data dir. Defaults to `~/.config/browseros-dogfood/profile`.
- `dev_profile_dir`: dev profile directory. Defaults to `Default`.
- `ports`: CDP, BrowserOS server, and extension ports.
- `production_env`: values written to `apps/server/.env.production` and `apps/cli/.env.production`.
@@ -174,6 +174,6 @@ Important fields:
## Safety Notes
- Do not point `dev_user_data_dir` at the real BrowserOS profile.
- `balpha` does not pass `--use-mock-keychain`; copied login data relies on the installed signed app path.
- `browseros-dogfood` does not pass `--use-mock-keychain`; copied login data relies on the installed signed app path.
- Default ports are CDP `9015`, server `9115`, and extension `9315`.
- Browser launch passes `--browseros-mcp-port`, `--browseros-server-port`, and `--browseros-proxy-port` to tolerate current switch differences.

View File

@@ -4,7 +4,7 @@ import (
"fmt"
"path/filepath"
"browseros-alpha/config"
"browseros-dogfood/config"
)
type ArgsConfig struct {

View File

@@ -4,14 +4,14 @@ import (
"strings"
"testing"
"browseros-alpha/config"
"browseros-dogfood/config"
)
func TestBuildArgs(t *testing.T) {
args := BuildArgs(ArgsConfig{
Binary: "/Applications/BrowserOS.app/Contents/MacOS/BrowserOS",
AgentRoot: "/repo/packages/browseros-agent",
UserDataDir: "/tmp/balpha",
UserDataDir: "/tmp/browseros-dogfood",
ProfileDir: "Default",
Ports: config.Ports{CDP: 9015, Server: 9115, Extension: 9315},
})
@@ -22,7 +22,7 @@ func TestBuildArgs(t *testing.T) {
"--browseros-server-port=9115",
"--browseros-proxy-port=9115",
"--browseros-extension-port=9315",
"--user-data-dir=/tmp/balpha",
"--user-data-dir=/tmp/browseros-dogfood",
"--profile-directory=Default",
"--disable-browseros-server",
"--disable-browseros-extensions",
@@ -43,7 +43,7 @@ func TestBuildArgsHeadless(t *testing.T) {
args := BuildArgs(ArgsConfig{
Binary: "/bin/browser",
AgentRoot: "/repo/packages/browseros-agent",
UserDataDir: "/tmp/balpha",
UserDataDir: "/tmp/browseros-dogfood",
Ports: config.Ports{CDP: 1, Server: 2, Extension: 3},
Headless: true,
})

View File

@@ -5,7 +5,7 @@ import (
"os"
"os/exec"
"browseros-alpha/config"
"browseros-dogfood/config"
"github.com/spf13/cobra"
)
@@ -17,12 +17,12 @@ func init() {
var configCmd = &cobra.Command{
Use: "config",
Short: "Manage balpha config",
Short: "Manage browseros-dogfood config",
}
var configEditCmd = &cobra.Command{
Use: "edit",
Short: "Open balpha config in $EDITOR",
Short: "Open browseros-dogfood config in $EDITOR",
RunE: func(cmd *cobra.Command, args []string) error {
path, err := config.Path()
if err != nil {

View File

@@ -8,9 +8,9 @@ import (
"strconv"
"strings"
"browseros-alpha/config"
"browseros-alpha/pipeline"
"browseros-alpha/profile"
"browseros-dogfood/config"
"browseros-dogfood/pipeline"
"browseros-dogfood/profile"
"github.com/spf13/cobra"
)
@@ -21,7 +21,7 @@ func init() {
var initCmd = &cobra.Command{
Use: "init",
Short: "Create or update balpha config",
Short: "Create or update browseros-dogfood config",
RunE: func(cmd *cobra.Command, args []string) error {
home, err := os.UserHomeDir()
if err != nil {
@@ -50,7 +50,7 @@ var initCmd = &cobra.Command{
if err := pipeline.WriteProductionEnvFiles(cfg.AgentRoot(), cfg); err != nil {
return err
}
fmt.Printf("Config written: %s\nRun: balpha start\n", path)
fmt.Printf("Config written: %s\nRun: browseros-dogfood start\n", path)
return nil
},
}

View File

@@ -4,8 +4,8 @@ import (
"fmt"
"io"
"browseros-alpha/config"
"browseros-alpha/proc"
"browseros-dogfood/config"
"browseros-dogfood/proc"
"github.com/spf13/cobra"
)
@@ -16,7 +16,7 @@ func init() {
var logsCmd = &cobra.Command{
Use: "logs",
Short: "Print balpha log files",
Short: "Print browseros-dogfood log files",
RunE: func(cmd *cobra.Command, args []string) error {
cfg, err := loadConfigWithoutValidation()
if err != nil {

View File

@@ -7,7 +7,7 @@ import (
"strings"
"testing"
"browseros-alpha/config"
"browseros-dogfood/config"
)
func TestPrintLogsShowsDirectoryAndFiles(t *testing.T) {

View File

@@ -3,7 +3,7 @@ package cmd
import (
"fmt"
"browseros-alpha/pipeline"
"browseros-dogfood/pipeline"
"github.com/spf13/cobra"
)

View File

@@ -3,8 +3,8 @@ package cmd
import (
"fmt"
"browseros-alpha/config"
"browseros-alpha/profile"
"browseros-dogfood/config"
"browseros-dogfood/profile"
"github.com/spf13/cobra"
)
@@ -15,7 +15,7 @@ func init() {
var refreshProfileCmd = &cobra.Command{
Use: "refresh-profile",
Short: "Copy the configured BrowserOS profile into the balpha dev profile",
Short: "Copy the configured BrowserOS profile into the browseros-dogfood dev profile",
RunE: func(cmd *cobra.Command, args []string) error {
cfg, err := loadConfig()
if err != nil {
@@ -52,7 +52,7 @@ func loadConfigWithoutValidation() (config.Config, error) {
}
cfg, err := config.Load(path)
if err != nil {
return config.Config{}, fmt.Errorf("missing config at %s; run balpha init: %w", path, err)
return config.Config{}, fmt.Errorf("missing config at %s; run browseros-dogfood init: %w", path, err)
}
return cfg, nil
}

View File

@@ -8,9 +8,9 @@ import (
)
var rootCmd = &cobra.Command{
Use: "balpha",
Short: "BrowserOS alpha dogfooding CLI",
Long: "balpha - BrowserOS alpha dogfooding CLI",
Use: "browseros-dogfood",
Short: "BrowserOS dogfooding CLI",
Long: "browseros-dogfood - BrowserOS dogfooding CLI",
CompletionOptions: cobra.CompletionOptions{DisableDefaultCmd: true},
SilenceUsage: true,
SilenceErrors: true,

View File

@@ -10,11 +10,11 @@ import (
"syscall"
"time"
"browseros-alpha/browser"
"browseros-alpha/config"
"browseros-alpha/pipeline"
"browseros-alpha/proc"
"browseros-alpha/profile"
"browseros-dogfood/browser"
"browseros-dogfood/config"
"browseros-dogfood/pipeline"
"browseros-dogfood/proc"
"browseros-dogfood/profile"
"github.com/spf13/cobra"
)
@@ -35,7 +35,7 @@ func init() {
var startCmd = &cobra.Command{
Use: "start",
Short: "Start BrowserOS alpha dogfooding environment",
Short: "Start BrowserOS dogfooding environment",
RunE: func(cmd *cobra.Command, args []string) error {
cfg, err := loadConfig()
if err != nil {

View File

@@ -7,7 +7,7 @@ import (
"path/filepath"
"strings"
"browseros-alpha/internal/fspath"
"browseros-dogfood/internal/fspath"
"gopkg.in/yaml.v3"
)
@@ -50,9 +50,9 @@ func Path() (string, error) {
func DefaultConfigDir(home string) string {
if xdg := os.Getenv("XDG_CONFIG_HOME"); xdg != "" {
return filepath.Join(xdg, "balpha")
return filepath.Join(xdg, "browseros-dogfood")
}
return filepath.Join(home, ".config", "balpha")
return filepath.Join(home, ".config", "browseros-dogfood")
}
func Defaults(home string) Config {
@@ -89,7 +89,7 @@ func Save(path string, cfg Config) error {
if err != nil {
return err
}
header := "# balpha configuration\n# Run: balpha init to reconfigure\n\n"
header := "# browseros-dogfood configuration\n# Run: browseros-dogfood init to reconfigure\n\n"
return os.WriteFile(path, append([]byte(header), data...), 0644)
}

View File

@@ -17,10 +17,10 @@ func TestDefaults(t *testing.T) {
if cfg.SourceUserDataDir != filepath.Join(home, "Library/Application Support/BrowserOS") {
t.Fatalf("unexpected source dir: %s", cfg.SourceUserDataDir)
}
if cfg.DevUserDataDir != filepath.Join(home, ".config/balpha/profile") {
if cfg.DevUserDataDir != filepath.Join(home, ".config/browseros-dogfood/profile") {
t.Fatalf("unexpected dev dir: %s", cfg.DevUserDataDir)
}
if cfg.LogDir() != filepath.Join(home, ".config/balpha/profile/logs") {
if cfg.LogDir() != filepath.Join(home, ".config/browseros-dogfood/profile/logs") {
t.Fatalf("unexpected log dir: %s", cfg.LogDir())
}
if cfg.DevProfileDir != "Default" {
@@ -44,9 +44,9 @@ func TestDefaults(t *testing.T) {
}
func TestLogPathUsesProfileLogDir(t *testing.T) {
cfg := Config{DevUserDataDir: "/tmp/balpha-profile"}
cfg := Config{DevUserDataDir: "/tmp/browseros-dogfood-profile"}
got := cfg.LogPath("server.log")
want := filepath.Join("/tmp/balpha-profile", "logs", "server.log")
want := filepath.Join("/tmp/browseros-dogfood-profile", "logs", "server.log")
if got != want {
t.Fatalf("got %q want %q", got, want)
}
@@ -117,7 +117,7 @@ func TestConfigPathHonorsXDG(t *testing.T) {
if err != nil {
t.Fatal(err)
}
want := filepath.Join(dir, "balpha", "config.yaml")
want := filepath.Join(dir, "browseros-dogfood", "config.yaml")
if got != want {
t.Fatalf("got %q want %q", got, want)
}
@@ -131,7 +131,7 @@ func TestPathDefault(t *testing.T) {
if err != nil {
t.Fatal(err)
}
want := filepath.Join(home, ".config", "balpha", "config.yaml")
want := filepath.Join(home, ".config", "browseros-dogfood", "config.yaml")
if got != want {
t.Fatalf("got %q want %q", got, want)
}

View File

@@ -1,4 +1,4 @@
module browseros-alpha
module browseros-dogfood
go 1.25.7

View File

@@ -1,6 +1,6 @@
package main
import "browseros-alpha/cmd"
import "browseros-dogfood/cmd"
func main() {
cmd.Execute()

View File

@@ -9,7 +9,7 @@ import (
"strconv"
"strings"
"browseros-alpha/config"
"browseros-dogfood/config"
)
func WriteProductionEnvFiles(agentRoot string, cfg config.Config) error {

View File

@@ -6,7 +6,7 @@ import (
"strings"
"testing"
"browseros-alpha/config"
"browseros-dogfood/config"
)
func TestWriteProductionEnvFiles(t *testing.T) {

View File

@@ -6,7 +6,7 @@ import (
"os/exec"
"strings"
"browseros-alpha/config"
"browseros-dogfood/config"
)
func ResolvePorts(start config.Ports) (config.Ports, bool, error) {

View File

@@ -4,7 +4,7 @@ import (
"net"
"testing"
"browseros-alpha/config"
"browseros-dogfood/config"
)
func TestResolvePortsIncrementsBusyPort(t *testing.T) {

View File

@@ -7,7 +7,7 @@ import (
"os"
"path/filepath"
"browseros-alpha/internal/fspath"
"browseros-dogfood/internal/fspath"
)
type ImportConfig struct {

View File

@@ -57,7 +57,7 @@ packages/browseros/
│ └── entitlements/ # macOS entitlements (app, helper, GPU, etc.)
├── tools/
│ └── bdev # Developer tool
│ └── patch # BrowserOS patch CLI
├── CHROMIUM_VERSION # Pinned Chromium version (MAJOR.MINOR.BUILD.PATCH)
├── BASE_COMMIT # Base Chromium commit hash

View File

@@ -1,11 +1,11 @@
BINARY := bdev
BINARY := browseros-patch
PREFIX ?= /usr/local/bin
VERSION ?= dev
.PHONY: build install clean test fmt
build:
go build -ldflags "-X github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/cmd.Version=$(VERSION)" -o $(BINARY) .
go build -ldflags "-X github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/cmd.Version=$(VERSION)" -o $(BINARY) .
install: build
mkdir -p $(PREFIX)

View File

@@ -3,9 +3,9 @@ package cmd
import (
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/resolve"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/resolve"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)

View File

@@ -3,7 +3,7 @@ package cmd
import (
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)

View File

@@ -3,8 +3,8 @@ package cmd
import (
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)
@@ -52,7 +52,7 @@ func init() {
for _, conflict := range result.Conflicts {
fmt.Printf(" %s\n", conflict.ChromiumPath)
}
fmt.Println(ui.Hint(`Run "bdev continue" after fixing the current conflict.`))
fmt.Println(ui.Hint(`Run "browseros-patch continue" after fixing the current conflict.`))
}
})
},

View File

@@ -3,8 +3,8 @@ package cmd
import (
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/workspace"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/workspace"
"github.com/spf13/cobra"
)

View File

@@ -3,9 +3,9 @@ package cmd
import (
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/resolve"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/resolve"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)

View File

@@ -4,8 +4,8 @@ import (
"fmt"
"strings"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)

View File

@@ -3,8 +3,8 @@ package cmd
import (
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)
@@ -26,7 +26,7 @@ func init() {
rangeEnd := ""
if rangeMode {
if len(positional) < 2 || len(positional) > 3 {
return fmt.Errorf(`range mode expects "bdev extract [workspace] --range <start> <end>"`)
return fmt.Errorf(`range mode expects "browseros-patch extract [workspace] --range <start> <end>"`)
}
rangeStart = positional[len(positional)-2]
rangeEnd = positional[len(positional)-1]

View File

@@ -3,8 +3,8 @@ package cmd
import (
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)
@@ -18,7 +18,7 @@ func init() {
RunE: func(cmd *cobra.Command, args []string) error {
if len(appState.Registry.Workspaces) == 0 {
return renderResult(map[string]any{"workspaces": []any{}}, func() {
fmt.Println("No workspaces registered. Run `bdev add <name> <path>`.")
fmt.Println("No workspaces registered. Run `browseros-patch add <name> <path>`.")
})
}
info, err := repoInfo()

View File

@@ -3,8 +3,8 @@ package cmd
import (
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)

View File

@@ -3,7 +3,7 @@ package cmd
import (
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)

View File

@@ -6,8 +6,8 @@ import (
"os"
"strings"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/app"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/app"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)
@@ -84,7 +84,7 @@ const usageTemplate = `{{helpHeader "Usage:"}}{{if .Runnable}}
`
var rootCmd = &cobra.Command{
Use: "bdev",
Use: "browseros-patch",
Short: "Workspace-centric BrowserOS patch tooling for Chromium checkouts",
Version: Version,
SilenceUsage: true,

View File

@@ -3,9 +3,9 @@ package cmd
import (
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/resolve"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/resolve"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)

View File

@@ -3,8 +3,8 @@ package cmd
import (
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)

View File

@@ -3,8 +3,8 @@ package cmd
import (
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/ui"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/engine"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/ui"
"github.com/spf13/cobra"
)

View File

@@ -1,4 +1,4 @@
module github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev
module github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch
go 1.25.0

View File

@@ -5,8 +5,8 @@ import (
"os"
"path/filepath"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/workspace"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/workspace"
)
type App struct {
@@ -58,7 +58,7 @@ func (a *App) RepoInfo() (*repo.Info, error) {
discovered, err := repo.Discover(a.CWD)
if err != nil {
return nil, fmt.Errorf(
`patches repo is not configured; run "bdev add <name> <path> --patches-repo <repo>" from the browseros repo once`,
`patches repo is not configured; run "browseros-patch add <name> <path> --patches-repo <repo>" from the browseros repo once`,
)
}
return repo.Load(discovered)

View File

@@ -8,11 +8,11 @@ import (
"strings"
"time"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/patch"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/resolve"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/workspace"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/patch"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/resolve"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/workspace"
)
type ApplyOptions struct {

View File

@@ -8,11 +8,11 @@ import (
"strings"
"testing"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/patch"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/resolve"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/workspace"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/patch"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/resolve"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/workspace"
)
func TestAbortRevertsAppliedOpsAndRestoresPendingStash(t *testing.T) {

View File

@@ -4,10 +4,10 @@ import (
"context"
"time"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/patch"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/workspace"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/patch"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/workspace"
)
type ExtractOptions struct {

View File

@@ -4,8 +4,8 @@ import (
"context"
"fmt"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/repo"
)
type PublishResult struct {

View File

@@ -3,11 +3,11 @@ package engine
import (
"context"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/patch"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/resolve"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/workspace"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/patch"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/resolve"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/workspace"
)
type WorkspaceStatus struct {

View File

@@ -5,9 +5,9 @@ import (
"fmt"
"time"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/workspace"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/repo"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/workspace"
)
type SyncOptions struct {
@@ -67,7 +67,7 @@ func Sync(ctx context.Context, opts SyncOptions) (*SyncResult, error) {
divergent := append([]string{}, status.NeedsUpdate...)
divergent = append(divergent, status.Orphaned...)
if len(divergent) > 0 {
stashRef, err := git.StashPush(ctx, opts.Workspace.Path, "bdev sync stash", true, divergent)
stashRef, err := git.StashPush(ctx, opts.Workspace.Path, "browseros-patch sync stash", true, divergent)
if err != nil {
return nil, err
}

View File

@@ -78,7 +78,7 @@ rename to chrome/new.cc
}
func TestPathMatchesSkipsInternalState(t *testing.T) {
if PathMatches(".bdev/state.yaml", nil) {
if PathMatches(".browseros-patch/state.yaml", nil) {
t.Fatalf("expected internal state path to be ignored")
}
}

View File

@@ -69,7 +69,7 @@ func PathMatches(rel string, filters []string) bool {
func IsInternalPath(rel string) bool {
candidate := NormalizeChromiumPath(rel)
return candidate == ".bdev" || strings.HasPrefix(candidate, ".bdev/")
return candidate == ".browseros-patch" || strings.HasPrefix(candidate, ".browseros-patch/")
}
func (p FilePatch) IsPureRename() bool {

View File

@@ -7,7 +7,7 @@ import (
"slices"
"strings"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/git"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/git"
)
func BuildWorkingTreePatchSet(ctx context.Context, workspacePath string, base string, filters []string) (PatchSet, error) {

View File

@@ -6,8 +6,8 @@ import (
"os"
"path/filepath"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/patch"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/workspace"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/patch"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/workspace"
)
type Operation struct {
@@ -82,7 +82,7 @@ func FindActive(reg *workspace.Registry, cwd string) (workspace.Entry, error) {
}
switch len(active) {
case 0:
return workspace.Entry{}, fmt.Errorf(`no active conflict resolution found; run "bdev apply" or "bdev sync --rebase" first`)
return workspace.Entry{}, fmt.Errorf(`no active conflict resolution found; run "browseros-patch apply" or "browseros-patch sync --rebase" first`)
case 1:
return active[0], nil
default:

View File

@@ -3,8 +3,8 @@ package resolve
import (
"testing"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/patch"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/internal/workspace"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/patch"
"github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/internal/workspace"
)
func TestStateRoundTrip(t *testing.T) {

View File

@@ -15,10 +15,10 @@ type Config struct {
func ConfigDir() string {
if xdg := os.Getenv("XDG_CONFIG_HOME"); xdg != "" {
return filepath.Join(xdg, "bdev")
return filepath.Join(xdg, "browseros-patch")
}
home, _ := os.UserHomeDir()
return filepath.Join(home, ".config", "bdev")
return filepath.Join(home, ".config", "browseros-patch")
}
func ConfigPath() string {
@@ -58,6 +58,6 @@ func SaveConfig(cfg *Config) error {
if err != nil {
return err
}
header := "# bdev configuration\n\n"
header := "# browseros-patch configuration\n\n"
return os.WriteFile(ConfigPath(), append([]byte(header), body...), 0o644)
}

View File

@@ -28,7 +28,7 @@ func Detect(reg *Registry, cwd string) (Entry, error) {
}
if bestLen == -1 {
return Entry{}, fmt.Errorf(
`not inside a registered workspace; run "bdev list" to inspect workspaces or pass one by name`,
`not inside a registered workspace; run "browseros-patch list" to inspect workspaces or pass one by name`,
)
}
return best, nil

View File

@@ -50,7 +50,7 @@ func SaveRegistry(reg *Registry) error {
if err != nil {
return err
}
header := "# bdev workspaces\n\n"
header := "# browseros-patch workspaces\n\n"
return os.WriteFile(RegistryPath(), append([]byte(header), body...), 0o644)
}

View File

@@ -23,7 +23,7 @@ type State struct {
}
func StateDir(workspacePath string) string {
return filepath.Join(workspacePath, ".bdev")
return filepath.Join(workspacePath, ".browseros-patch")
}
func StatePath(workspacePath string) string {
@@ -65,6 +65,6 @@ func SaveState(workspacePath string, state *State) error {
if err != nil {
return err
}
header := "# bdev workspace state\n\n"
header := "# browseros-patch workspace state\n\n"
return os.WriteFile(StatePath(workspacePath), append([]byte(header), body...), 0o644)
}

View File

@@ -1,6 +1,6 @@
package main
import "github.com/browseros-ai/BrowserOS/packages/browseros/tools/bdev/cmd"
import "github.com/browseros-ai/BrowserOS/packages/browseros/tools/patch/cmd"
func main() {
cmd.Execute()