oharness 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/bin/browser-host.d.ts +10 -0
  2. package/dist/bin/browser-host.js +11 -0
  3. package/dist/bin/browser-host.js.map +1 -0
  4. package/dist/browser-host/main.d.ts +2 -0
  5. package/dist/browser-host/main.js +113 -0
  6. package/dist/browser-host/main.js.map +1 -0
  7. package/dist/ui/commands.d.ts +25 -0
  8. package/dist/ui/commands.js +64 -0
  9. package/dist/ui/commands.js.map +1 -0
  10. package/dist/ui/main.js +2 -23
  11. package/dist/ui/main.js.map +1 -1
  12. package/dist/ui/render.d.ts +12 -0
  13. package/dist/ui/render.js +23 -3
  14. package/dist/ui/render.js.map +1 -1
  15. package/dist/ui/tui/app.d.ts +44 -0
  16. package/dist/ui/tui/app.js +191 -4
  17. package/dist/ui/tui/app.js.map +1 -1
  18. package/dist/ui/tui/layout.d.ts +13 -0
  19. package/dist/ui/tui/layout.js +64 -2
  20. package/dist/ui/tui/layout.js.map +1 -1
  21. package/extension/README.md +58 -0
  22. package/extension/_locales/de/messages.json +83 -0
  23. package/extension/_locales/en/messages.json +83 -0
  24. package/extension/_locales/fr/messages.json +83 -0
  25. package/extension/_locales/ja/messages.json +83 -0
  26. package/extension/_locales/ko/messages.json +83 -0
  27. package/extension/_locales/zh_CN/messages.json +83 -0
  28. package/extension/background.js +380 -0
  29. package/extension/icons/icon-128.png +0 -0
  30. package/extension/icons/icon-16.png +0 -0
  31. package/extension/icons/icon-32.png +0 -0
  32. package/extension/icons/icon-48.png +0 -0
  33. package/extension/manifest.json +39 -0
  34. package/extension/popup.css +142 -0
  35. package/extension/popup.html +43 -0
  36. package/extension/popup.js +101 -0
  37. package/extension/sidepanel.css +123 -0
  38. package/extension/sidepanel.html +30 -0
  39. package/extension/sidepanel.js +126 -0
  40. package/package.json +8 -6
@@ -0,0 +1,58 @@
1
+ # OHarness Browser Bridge
2
+
3
+ Lets a local OHarness agent drive **your** browser — the one you are already
4
+ signed into — instead of a browser of its own.
5
+
6
+ Chrome has refused remote debugging on the default profile since version 136, so
7
+ an extension is the only sanctioned way to reach a logged-in session. While
8
+ anything is attached, Chrome shows its own "being debugged" banner. That
9
+ disclosure is deliberate and is not suppressed.
10
+
11
+ ## Setup
12
+
13
+ 1. Register the native messaging host, which Chrome starts for the extension.
14
+ The desktop app does this every time it starts. With the npm package:
15
+
16
+ ```bash
17
+ oharness-browser-host install
18
+ ```
19
+
20
+ 2. `chrome://extensions` → turn on **Developer mode** → **Load unpacked** →
21
+ choose this `extension` directory. The `key` in `manifest.json` pins its id
22
+ to `ccflolhofpnacaokjapodnphjjgiddmi`, wherever it is loaded from, so step 1
23
+ needs no id.
24
+
25
+ 3. In OHarness, Settings → **Use your own browser**, or in your config:
26
+
27
+ ```json
28
+ { "browser": { "mode": "extension" } }
29
+ ```
30
+
31
+ The toolbar icon shows the state: a number is how many tabs are being driven,
32
+ `!` means the host cannot be reached. Its popup lists the driven tabs and can
33
+ take all of them back at once.
34
+
35
+ ## What it does
36
+
37
+ Nothing clever. It forwards Chrome DevTools Protocol messages between the
38
+ harness and `chrome.debugger`, and answers the control messages CDP has no
39
+ browser-level equivalent for: list tabs, open, activate or close a tab, attach,
40
+ and detach. Every decision about what to do with a page is made in the harness.
41
+
42
+ Several conversations can use it at once, from any number of OHarness
43
+ processes — the desktop app, a web server, a terminal. Each conversation opens
44
+ its own tabs, in a green tab group titled after it.
45
+ A tab you already had open is only touched when a conversation is told to
46
+ select it; listing your tabs attaches to none of them. The host keeps the
47
+ processes' requests apart and sends each tab's events to whoever attached it.
48
+
49
+ `chrome://`, `edge://`, `devtools://` and extension pages are never offered:
50
+ Chrome refuses the debugger on them.
51
+
52
+ If the host goes away (a rebuild, a crash) the extension reconnects on its own.
53
+
54
+ ## Giving it back
55
+
56
+ Press **Stop controlling all tabs** in the popup, cancel the banner on a tab, or
57
+ disable the extension. A harness that exits without detaching has its tabs
58
+ detached for it.
@@ -0,0 +1,83 @@
1
+ {
2
+ "popupTitle": {
3
+ "message": "OHarness Browser Bridge"
4
+ },
5
+ "state_driving": {
6
+ "message": "OHarness steuert diesen Browser"
7
+ },
8
+ "state_ready": {
9
+ "message": "Mit OHarness verbunden"
10
+ },
11
+ "state_waiting": {
12
+ "message": "Bereit"
13
+ },
14
+ "state_missing": {
15
+ "message": "OHarness nicht erreichbar"
16
+ },
17
+ "detailDriving": {
18
+ "message": "Steuert $1 Tab(s). Chrome zeigt auf jedem einen Hinweisbalken."
19
+ },
20
+ "detailReady": {
21
+ "message": "$1 OHarness-App(s) verbunden. Es wird nichts gesteuert."
22
+ },
23
+ "detailWaiting": {
24
+ "message": "Wartet darauf, dass eine OHarness-Unterhaltung den Browser nutzt."
25
+ },
26
+ "detailMissing": {
27
+ "message": "Der lokale OHarness-Host ist auf diesem Computer nicht eingerichtet."
28
+ },
29
+ "setupIntro": {
30
+ "message": "Zum Verbinden eine dieser Möglichkeiten ausführen, dann erneut versuchen:"
31
+ },
32
+ "setupDesktop": {
33
+ "message": "Die OHarness-Desktop-App einmal öffnen."
34
+ },
35
+ "setupCli": {
36
+ "message": "Oder mit dem npm-Paket ausführen:"
37
+ },
38
+ "retry": {
39
+ "message": "Erneut versuchen"
40
+ },
41
+ "controlledTabs": {
42
+ "message": "Gesteuerte Tabs"
43
+ },
44
+ "release": {
45
+ "message": "Steuerung aller Tabs beenden"
46
+ },
47
+ "bannerNote": {
48
+ "message": "Nur OHarness auf diesem Computer kann diese Erweiterung nutzen. Es wird nichts an andere Stellen gesendet."
49
+ },
50
+ "extDescription": {
51
+ "message": "Lässt einen lokalen OHarness-Agenten diesen Browser mit Ihren Anmeldungen steuern. Chrome zeigt dabei an, dass er debuggt wird."
52
+ },
53
+ "ungrouped": {
54
+ "message": "Eigene Tabs"
55
+ },
56
+ "openPanel": {
57
+ "message": "OHarness in der Seitenleiste öffnen"
58
+ },
59
+ "panelAdopt": {
60
+ "message": "Diesen Tab verwenden"
61
+ },
62
+ "panelAdoptHint": {
63
+ "message": "Diese Unterhaltung darf $1 verwenden. Vor Aktionen auf der Website wird gefragt."
64
+ },
65
+ "panelAdoptNone": {
66
+ "message": "Öffne eine Webseite, um sie OHarness zu übergeben."
67
+ },
68
+ "panelNoApp": {
69
+ "message": "OHarness ist nicht geöffnet"
70
+ },
71
+ "panelNoAppBody": {
72
+ "message": "Öffne die OHarness-Desktop-App oder führe oharness web aus, dann erscheint es hier."
73
+ },
74
+ "panelDesktop": {
75
+ "message": "Desktop-App"
76
+ },
77
+ "panelWeb": {
78
+ "message": "Web"
79
+ },
80
+ "panelHelp": {
81
+ "message": "So funktioniert die Erweiterung"
82
+ }
83
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "popupTitle": {
3
+ "message": "OHarness Browser Bridge"
4
+ },
5
+ "state_driving": {
6
+ "message": "OHarness is driving this browser"
7
+ },
8
+ "state_ready": {
9
+ "message": "Connected to OHarness"
10
+ },
11
+ "state_waiting": {
12
+ "message": "Ready"
13
+ },
14
+ "state_missing": {
15
+ "message": "Can't reach OHarness"
16
+ },
17
+ "detailDriving": {
18
+ "message": "Controlling $1 tab(s). Chrome shows a banner on each one."
19
+ },
20
+ "detailReady": {
21
+ "message": "$1 OHarness app(s) connected. Nothing is being controlled."
22
+ },
23
+ "detailWaiting": {
24
+ "message": "Waiting for an OHarness conversation to use the browser."
25
+ },
26
+ "detailMissing": {
27
+ "message": "The local OHarness host isn't set up on this computer."
28
+ },
29
+ "setupIntro": {
30
+ "message": "To connect, do one of these, then retry:"
31
+ },
32
+ "setupDesktop": {
33
+ "message": "Open the OHarness desktop app once."
34
+ },
35
+ "setupCli": {
36
+ "message": "Or, with the npm package, run"
37
+ },
38
+ "retry": {
39
+ "message": "Retry"
40
+ },
41
+ "controlledTabs": {
42
+ "message": "Controlled tabs"
43
+ },
44
+ "release": {
45
+ "message": "Stop controlling all tabs"
46
+ },
47
+ "bannerNote": {
48
+ "message": "Only OHarness running on this computer can use this extension. Nothing is sent anywhere else."
49
+ },
50
+ "extDescription": {
51
+ "message": "Lets a local OHarness agent drive this browser, with your signed-in sessions, while Chrome shows it is being debugged."
52
+ },
53
+ "ungrouped": {
54
+ "message": "Your own tabs"
55
+ },
56
+ "openPanel": {
57
+ "message": "Open OHarness in the side panel"
58
+ },
59
+ "panelAdopt": {
60
+ "message": "Use this tab"
61
+ },
62
+ "panelAdoptHint": {
63
+ "message": "Let this conversation use $1. It asks before acting on the site."
64
+ },
65
+ "panelAdoptNone": {
66
+ "message": "Open a web page to hand it to OHarness."
67
+ },
68
+ "panelNoApp": {
69
+ "message": "OHarness isn't open"
70
+ },
71
+ "panelNoAppBody": {
72
+ "message": "Open the OHarness desktop app, or run oharness web, and it will appear here."
73
+ },
74
+ "panelDesktop": {
75
+ "message": "Desktop app"
76
+ },
77
+ "panelWeb": {
78
+ "message": "Web"
79
+ },
80
+ "panelHelp": {
81
+ "message": "How the extension works"
82
+ }
83
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "popupTitle": {
3
+ "message": "OHarness Browser Bridge"
4
+ },
5
+ "state_driving": {
6
+ "message": "OHarness pilote ce navigateur"
7
+ },
8
+ "state_ready": {
9
+ "message": "Connecté à OHarness"
10
+ },
11
+ "state_waiting": {
12
+ "message": "Prêt"
13
+ },
14
+ "state_missing": {
15
+ "message": "Impossible de joindre OHarness"
16
+ },
17
+ "detailDriving": {
18
+ "message": "$1 onglet(s) contrôlé(s). Chrome affiche un bandeau sur chacun."
19
+ },
20
+ "detailReady": {
21
+ "message": "$1 application(s) OHarness connectée(s). Aucun onglet n'est contrôlé."
22
+ },
23
+ "detailWaiting": {
24
+ "message": "En attente qu'une conversation OHarness utilise le navigateur."
25
+ },
26
+ "detailMissing": {
27
+ "message": "L'hôte local OHarness n'est pas configuré sur cet ordinateur."
28
+ },
29
+ "setupIntro": {
30
+ "message": "Pour vous connecter, effectuez l'une de ces actions, puis réessayez :"
31
+ },
32
+ "setupDesktop": {
33
+ "message": "Ouvrez une fois l'application de bureau OHarness."
34
+ },
35
+ "setupCli": {
36
+ "message": "Ou, avec le paquet npm, exécutez"
37
+ },
38
+ "retry": {
39
+ "message": "Réessayer"
40
+ },
41
+ "controlledTabs": {
42
+ "message": "Onglets contrôlés"
43
+ },
44
+ "release": {
45
+ "message": "Arrêter de contrôler tous les onglets"
46
+ },
47
+ "bannerNote": {
48
+ "message": "Seul OHarness exécuté sur cet ordinateur peut utiliser cette extension. Rien n'est envoyé ailleurs."
49
+ },
50
+ "extDescription": {
51
+ "message": "Permet à un agent OHarness local de piloter ce navigateur avec vos sessions ouvertes, pendant que Chrome signale le débogage."
52
+ },
53
+ "ungrouped": {
54
+ "message": "Vos propres onglets"
55
+ },
56
+ "openPanel": {
57
+ "message": "Ouvrir OHarness dans le panneau latéral"
58
+ },
59
+ "panelAdopt": {
60
+ "message": "Utiliser cet onglet"
61
+ },
62
+ "panelAdoptHint": {
63
+ "message": "Autoriser cette conversation à utiliser $1. Elle demandera avant d'agir sur le site."
64
+ },
65
+ "panelAdoptNone": {
66
+ "message": "Ouvrez une page web pour la confier à OHarness."
67
+ },
68
+ "panelNoApp": {
69
+ "message": "OHarness n'est pas ouvert"
70
+ },
71
+ "panelNoAppBody": {
72
+ "message": "Ouvrez l'application de bureau OHarness ou lancez oharness web, et il apparaîtra ici."
73
+ },
74
+ "panelDesktop": {
75
+ "message": "Application de bureau"
76
+ },
77
+ "panelWeb": {
78
+ "message": "Web"
79
+ },
80
+ "panelHelp": {
81
+ "message": "Fonctionnement de l'extension"
82
+ }
83
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "popupTitle": {
3
+ "message": "OHarness Browser Bridge"
4
+ },
5
+ "state_driving": {
6
+ "message": "OHarness がこのブラウザを操作しています"
7
+ },
8
+ "state_ready": {
9
+ "message": "OHarness に接続済み"
10
+ },
11
+ "state_waiting": {
12
+ "message": "準備完了"
13
+ },
14
+ "state_missing": {
15
+ "message": "OHarness に接続できません"
16
+ },
17
+ "detailDriving": {
18
+ "message": "$1 個のタブを操作中です。各タブに Chrome のバナーが表示されます。"
19
+ },
20
+ "detailReady": {
21
+ "message": "$1 個の OHarness アプリが接続中です。操作中のタブはありません。"
22
+ },
23
+ "detailWaiting": {
24
+ "message": "OHarness の会話がブラウザを使うのを待っています。"
25
+ },
26
+ "detailMissing": {
27
+ "message": "このパソコンに OHarness のローカルホストが設定されていません。"
28
+ },
29
+ "setupIntro": {
30
+ "message": "接続するには、次のいずれかを行ってから再試行してください:"
31
+ },
32
+ "setupDesktop": {
33
+ "message": "OHarness デスクトップアプリを一度起動する。"
34
+ },
35
+ "setupCli": {
36
+ "message": "または npm パッケージで次を実行"
37
+ },
38
+ "retry": {
39
+ "message": "再試行"
40
+ },
41
+ "controlledTabs": {
42
+ "message": "操作中のタブ"
43
+ },
44
+ "release": {
45
+ "message": "すべてのタブの操作を停止"
46
+ },
47
+ "bannerNote": {
48
+ "message": "この拡張機能を使えるのは、このパソコンで動作する OHarness だけです。データが外部に送信されることはありません。"
49
+ },
50
+ "extDescription": {
51
+ "message": "ローカルの OHarness エージェントが、ログイン済みのこのブラウザを操作できるようにします。操作中は Chrome にデバッグ中と表示されます。"
52
+ },
53
+ "ungrouped": {
54
+ "message": "自分で開いたタブ"
55
+ },
56
+ "openPanel": {
57
+ "message": "サイドパネルで OHarness を開く"
58
+ },
59
+ "panelAdopt": {
60
+ "message": "このタブを使う"
61
+ },
62
+ "panelAdoptHint": {
63
+ "message": "この会話に $1 の使用を許可します。サイトで操作する前に確認します。"
64
+ },
65
+ "panelAdoptNone": {
66
+ "message": "OHarness に渡すには Web ページを開いてください。"
67
+ },
68
+ "panelNoApp": {
69
+ "message": "OHarness が開いていません"
70
+ },
71
+ "panelNoAppBody": {
72
+ "message": "OHarness デスクトップアプリを開くか、oharness web を実行するとここに表示されます。"
73
+ },
74
+ "panelDesktop": {
75
+ "message": "デスクトップアプリ"
76
+ },
77
+ "panelWeb": {
78
+ "message": "Web"
79
+ },
80
+ "panelHelp": {
81
+ "message": "拡張機能の仕組み"
82
+ }
83
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "popupTitle": {
3
+ "message": "OHarness Browser Bridge"
4
+ },
5
+ "state_driving": {
6
+ "message": "OHarness가 이 브라우저를 조작하고 있습니다"
7
+ },
8
+ "state_ready": {
9
+ "message": "OHarness에 연결됨"
10
+ },
11
+ "state_waiting": {
12
+ "message": "준비됨"
13
+ },
14
+ "state_missing": {
15
+ "message": "OHarness에 연결할 수 없음"
16
+ },
17
+ "detailDriving": {
18
+ "message": "탭 $1개를 제어하고 있습니다. 각 탭에 Chrome 배너가 표시됩니다."
19
+ },
20
+ "detailReady": {
21
+ "message": "OHarness 앱 $1개가 연결되어 있습니다. 제어 중인 탭은 없습니다."
22
+ },
23
+ "detailWaiting": {
24
+ "message": "OHarness 대화가 브라우저를 사용하기를 기다리는 중입니다."
25
+ },
26
+ "detailMissing": {
27
+ "message": "이 컴퓨터에 OHarness 로컬 호스트가 설정되어 있지 않습니다."
28
+ },
29
+ "setupIntro": {
30
+ "message": "연결하려면 다음 중 하나를 한 뒤 다시 시도하세요."
31
+ },
32
+ "setupDesktop": {
33
+ "message": "OHarness 데스크톱 앱을 한 번 실행합니다."
34
+ },
35
+ "setupCli": {
36
+ "message": "또는 npm 패키지로 다음 명령을 실행합니다"
37
+ },
38
+ "retry": {
39
+ "message": "다시 시도"
40
+ },
41
+ "controlledTabs": {
42
+ "message": "제어 중인 탭"
43
+ },
44
+ "release": {
45
+ "message": "모든 탭 제어 중지"
46
+ },
47
+ "bannerNote": {
48
+ "message": "이 확장 프로그램은 이 컴퓨터에서 실행 중인 OHarness만 사용할 수 있으며, 어떤 데이터도 외부로 전송하지 않습니다."
49
+ },
50
+ "extDescription": {
51
+ "message": "로컬 OHarness 에이전트가 로그인된 이 브라우저를 조작할 수 있게 합니다. 조작 중에는 Chrome에 디버깅 중임이 표시됩니다."
52
+ },
53
+ "ungrouped": {
54
+ "message": "직접 연 탭"
55
+ },
56
+ "openPanel": {
57
+ "message": "사이드 패널에서 OHarness 열기"
58
+ },
59
+ "panelAdopt": {
60
+ "message": "이 탭 사용"
61
+ },
62
+ "panelAdoptHint": {
63
+ "message": "이 대화가 $1을(를) 사용하도록 합니다. 사이트에서 작업하기 전에 확인합니다."
64
+ },
65
+ "panelAdoptNone": {
66
+ "message": "OHarness에 넘기려면 웹 페이지를 여세요."
67
+ },
68
+ "panelNoApp": {
69
+ "message": "OHarness가 열려 있지 않습니다"
70
+ },
71
+ "panelNoAppBody": {
72
+ "message": "OHarness 데스크톱 앱을 열거나 oharness web을 실행하면 여기에 표시됩니다."
73
+ },
74
+ "panelDesktop": {
75
+ "message": "데스크톱 앱"
76
+ },
77
+ "panelWeb": {
78
+ "message": "웹"
79
+ },
80
+ "panelHelp": {
81
+ "message": "확장 프로그램 작동 방식"
82
+ }
83
+ }
@@ -0,0 +1,83 @@
1
+ {
2
+ "popupTitle": {
3
+ "message": "OHarness 浏览器连接器"
4
+ },
5
+ "state_driving": {
6
+ "message": "OHarness 正在操作这个浏览器"
7
+ },
8
+ "state_ready": {
9
+ "message": "已连接 OHarness"
10
+ },
11
+ "state_waiting": {
12
+ "message": "已就绪"
13
+ },
14
+ "state_missing": {
15
+ "message": "无法连接 OHarness"
16
+ },
17
+ "detailDriving": {
18
+ "message": "正在控制 $1 个标签页,Chrome 会在每个页面顶部显示提示条。"
19
+ },
20
+ "detailReady": {
21
+ "message": "已有 $1 个 OHarness 应用连接,当前没有控制任何页面。"
22
+ },
23
+ "detailWaiting": {
24
+ "message": "等待 OHarness 对话调用浏览器。"
25
+ },
26
+ "detailMissing": {
27
+ "message": "这台电脑上还没有设置 OHarness 本地连接程序。"
28
+ },
29
+ "setupIntro": {
30
+ "message": "请完成以下任一步骤,然后重试:"
31
+ },
32
+ "setupDesktop": {
33
+ "message": "打开一次 OHarness 桌面版。"
34
+ },
35
+ "setupCli": {
36
+ "message": "或者使用 npm 版时运行"
37
+ },
38
+ "retry": {
39
+ "message": "重试"
40
+ },
41
+ "controlledTabs": {
42
+ "message": "正在控制的标签页"
43
+ },
44
+ "release": {
45
+ "message": "停止控制所有标签页"
46
+ },
47
+ "bannerNote": {
48
+ "message": "只有这台电脑上运行的 OHarness 能使用此扩展,数据不会发送到其他地方。"
49
+ },
50
+ "extDescription": {
51
+ "message": "让本机的 OHarness agent 使用你已登录的浏览器会话操作网页,操作期间 Chrome 会显示调试提示。"
52
+ },
53
+ "ungrouped": {
54
+ "message": "你自己打开的标签页"
55
+ },
56
+ "openPanel": {
57
+ "message": "在侧边栏中打开 OHarness"
58
+ },
59
+ "panelAdopt": {
60
+ "message": "使用此标签页"
61
+ },
62
+ "panelAdoptHint": {
63
+ "message": "让这个对话使用 $1,在该网站上操作前会先征得你的同意。"
64
+ },
65
+ "panelAdoptNone": {
66
+ "message": "打开一个网页,才能交给 OHarness 使用。"
67
+ },
68
+ "panelNoApp": {
69
+ "message": "OHarness 没有打开"
70
+ },
71
+ "panelNoAppBody": {
72
+ "message": "打开 OHarness 桌面版,或运行 oharness web,它就会显示在这里。"
73
+ },
74
+ "panelDesktop": {
75
+ "message": "桌面版"
76
+ },
77
+ "panelWeb": {
78
+ "message": "网页版"
79
+ },
80
+ "panelHelp": {
81
+ "message": "了解这个扩展"
82
+ }
83
+ }