bunmicro 0.9.25 → 1.0.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.
- package/CHANGELOG.md +15 -0
- package/README.md +23 -0
- package/hlw.md +1 -0
- package/package.json +1 -1
- package/runtime/help/cdp.md +119 -0
- package/runtime/jsplugins/cdp/cdp-server.js +1161 -0
- package/runtime/jsplugins/cdp/cdp.js +192 -0
- package/src/buffer/backup.js +160 -0
- package/src/index.js +218 -30
- package/src/platform/commands.js +1 -4
- package/src/plugins/js-bridge.js +5 -5
- package/tests/backup.test.js +133 -0
- package/tests/wv-client.js +96 -0
- package/todo.txt +6 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
const cdpUrl = Bun.argv[2] ?? "ws://127.0.0.1:9222";
|
|
2
|
+
|
|
3
|
+
const view = new Bun.WebView({
|
|
4
|
+
backend: {
|
|
5
|
+
type: "chrome",
|
|
6
|
+
url: cdpUrl,
|
|
7
|
+
},
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
view.onNavigated = (url, title) => {
|
|
11
|
+
console.log(`[navigated] ${title || "(no title)"} — ${url.slice(0, 80)}`);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const delay = Bun.sleep
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
|
|
18
|
+
await delay(2000);
|
|
19
|
+
|
|
20
|
+
// 1. navigate to first page
|
|
21
|
+
console.log("\n--- navigate: https://example.com ---");
|
|
22
|
+
await view.navigate("https://example.com");
|
|
23
|
+
await delay(2000);
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
// 2. navigate to second page
|
|
27
|
+
console.log("\n--- evaluate: micro.cmd.tab() ---");
|
|
28
|
+
await view.evaluate("micro.cmd.tab()");
|
|
29
|
+
await delay(500);
|
|
30
|
+
|
|
31
|
+
console.log("\n--- navigate: github bunmicro hlw.md ---");
|
|
32
|
+
await view.navigate("https://raw.githubusercontent.com/jjtseng93/bunmicro/refs/heads/main/hlw.md");
|
|
33
|
+
await delay(2000);
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
// 3. navigate to third page
|
|
37
|
+
console.log("\n--- evaluate: micro.cmd.tab() ---");
|
|
38
|
+
await view.evaluate("micro.cmd.tab()");
|
|
39
|
+
await delay(500);
|
|
40
|
+
|
|
41
|
+
console.log("\n--- navigate: https://bun.sh/docs dns ---");
|
|
42
|
+
await view.navigate("https://bun.com/docs/runtime/networking/dns");
|
|
43
|
+
await delay(2000);
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
// 4. go back twice
|
|
47
|
+
console.log("\n--- goBack (dns → hlw) ---");
|
|
48
|
+
await view.goBack();
|
|
49
|
+
await delay(2000);
|
|
50
|
+
|
|
51
|
+
console.log("\n--- goBack (hlw → example.com) ---");
|
|
52
|
+
await view.goBack();
|
|
53
|
+
await delay(2000);
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
// 5. go forward
|
|
57
|
+
console.log("\n--- goForward (example.com → hlw) ---");
|
|
58
|
+
await view.goForward();
|
|
59
|
+
await delay(2000);
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
// 6. type before # hello & click
|
|
63
|
+
console.log("\n--- click #hello to focus ---");
|
|
64
|
+
await view.scrollTo("#hello");
|
|
65
|
+
await view.evaluate('micro.action.StartOfLine()');
|
|
66
|
+
await delay(2000);
|
|
67
|
+
|
|
68
|
+
console.log("\n--- type: '# Bun is great' ---");
|
|
69
|
+
await view.type("# Bun is great");
|
|
70
|
+
await delay(2000);
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
console.log("\n--- press Enter ---");
|
|
74
|
+
await view.press("Enter");
|
|
75
|
+
await delay(2000);
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
console.log("\n--- Click 3,3 ---");
|
|
79
|
+
await view.click(3,3); //點33
|
|
80
|
+
await delay(2000);
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
// 7. resize
|
|
84
|
+
console.log("\n--- resize 1280x720 ---");
|
|
85
|
+
await view.resize(1280, 720);
|
|
86
|
+
await delay(2000);
|
|
87
|
+
|
|
88
|
+
// 8. go forward to dns
|
|
89
|
+
console.log("\n--- goForward (hlw → dns) ---");
|
|
90
|
+
await view.goForward();
|
|
91
|
+
await delay(2000);
|
|
92
|
+
|
|
93
|
+
console.log("\nAll done.");
|
|
94
|
+
} finally {
|
|
95
|
+
view.close();
|
|
96
|
+
}
|
package/todo.txt
CHANGED
|
@@ -116,7 +116,12 @@ Buffer / editing model
|
|
|
116
116
|
Done: saving a non-UTF-8-decoded buffer prompts "Save in UTF-8?(y,n)" before converting the buffer to UTF-8 on disk.
|
|
117
117
|
Done: hex3 encoding supports binary edit/open/save paths without UTF-8 conversion prompt.
|
|
118
118
|
Remaining: non-UTF-8 save/encode, rmtrailingws, mkparents, autosu/sucmd, full fileformat behavior parity.
|
|
119
|
-
[
|
|
119
|
+
[x] Implement backup recovery and permbackup behavior.
|
|
120
|
+
- src/buffer/backup.js: writeBackup/removeBackup/applyBackup; path-escaped flat filename in configDir/backups/ (>200 bytes falls back to SHA-256 hash + .resolve sidecar).
|
|
121
|
+
- Periodic backup timer (10s) in App.start() writes all modified default buffers.
|
|
122
|
+
- applyBackup called in loadBufferForPath (covers open/vsplit/hsplit/startup) via context._termPrompt; pre-TUI uses readline/promises, in-TUI uses screen fini/init wrapper.
|
|
123
|
+
- removeBackup called on save, closePane, closeCurrentTab, and stop (all buffers).
|
|
124
|
+
- backup/backupdir/permbackup settings wired through DEFAULT_SETTINGS → buf.Settings → syncEditorSettings.
|
|
120
125
|
[~] Implement savecursor and saveundo serialization.
|
|
121
126
|
Done: savecursor saves cursor position to configDir/buffers/cursor_state.json on Ctrl-S and on quit; position is restored when re-opening the same file; syncs from Go micro settings.json.
|
|
122
127
|
Done: savecursor restore now vertically centers the viewport on the restored cursor position (deferred via _pendingCenterScroll flag, resolved on first render after layout is computed; handles softwrap/non-softwrap via _ttsScrollToCenter).
|