@bobfrankston/msger 0.1.87 → 0.1.90
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/README.md +17 -1
- package/TODO.md +100 -2
- package/clihandler.d.ts.map +1 -1
- package/clihandler.js +13 -0
- package/clihandler.js.map +1 -1
- package/clihandler.ts +13 -0
- package/msger-native/bin/msgernative.exe +0 -0
- package/msger-native/build.ts +27 -12
- package/msger-native/src/main.rs +70 -6
- package/msger-native/src/msger-api.js +112 -0
- package/msger-native/src/template.html +113 -8
- package/package.json +1 -1
- package/shower.d.ts +1 -0
- package/shower.d.ts.map +1 -1
- package/shower.js +11 -0
- package/shower.js.map +1 -1
- package/shower.ts +12 -0
- package/test.json +11 -0
- /package/{msger-storage-demo.html → tests/msger-storage-demo.html} +0 -0
- /package/{test-data-persistence.html → tests/test-data-persistence.html} +0 -0
- /package/{test-htmlfrom.html → tests/test-htmlfrom.html} +0 -0
- /package/{test-ipc-reach.html → tests/test-ipc-reach.html} +0 -0
- /package/{test-msger-api.html → tests/test-msger-api.html} +0 -0
- /package/{test-msger-functions.html → tests/test-msger-functions.html} +0 -0
package/README.md
CHANGED
|
@@ -51,6 +51,10 @@ msger -html "<span style='color:red;background-color:yellow'>Alert!</span>"
|
|
|
51
51
|
msger -url "https://example.com"
|
|
52
52
|
msger -url "file:///path/to/page.html"
|
|
53
53
|
|
|
54
|
+
# Load URL with hash fragment
|
|
55
|
+
msger -url "https://example.com" -hash section1
|
|
56
|
+
msger -url "https://example.com" -hash "#intro"
|
|
57
|
+
|
|
54
58
|
# With input field and placeholder
|
|
55
59
|
msger -message "Enter your name:" -input "Your name here" -default "John"
|
|
56
60
|
|
|
@@ -116,6 +120,7 @@ msger -title "Test" -message "Saving config..." -save test.json
|
|
|
116
120
|
"message": "Plain text message (supports ANSI color codes)",
|
|
117
121
|
"html": "<h1>HTML content</h1><p>Rich formatting</p>",
|
|
118
122
|
"url": "https://example.com",
|
|
123
|
+
"hash": "section1",
|
|
119
124
|
"size": {
|
|
120
125
|
"width": 600,
|
|
121
126
|
"height": 400
|
|
@@ -148,6 +153,7 @@ msger -title "Test" -message "Saving config..." -save test.json
|
|
|
148
153
|
| `message` | string | null | Plain text message (supports ANSI color codes) |
|
|
149
154
|
| `html` | string | null | HTML content to display |
|
|
150
155
|
| `url` | string | null | URL to load (web or file://) |
|
|
156
|
+
| `hash` | string | null | Hash fragment to append to URL (requires url). Leading # is optional. |
|
|
151
157
|
| `size` | object | `{"width": 600, "height": 400}` | Window size |
|
|
152
158
|
| `size.width` | number | 600 (or 1024 for URLs) | Window width in pixels |
|
|
153
159
|
| `size.height` | number | 400 (or 768 for URLs) | Window height in pixels |
|
|
@@ -232,6 +238,7 @@ Options:
|
|
|
232
238
|
-title, --title <text> Window title
|
|
233
239
|
-html, --html <html> HTML content
|
|
234
240
|
-url, --url <url> URL to load (web or file://)
|
|
241
|
+
-hash, --hash <fragment> Hash fragment to append to URL (requires -url). Leading # optional.
|
|
235
242
|
-buttons, --buttons <labels> Button labels (e.g., -buttons Yes No Cancel)
|
|
236
243
|
-ok, --ok Add OK button
|
|
237
244
|
-cancel, --cancel Add Cancel button
|
|
@@ -249,6 +256,14 @@ Options:
|
|
|
249
256
|
-v, -version, --version Show version number
|
|
250
257
|
-help, -?, --help Show help message
|
|
251
258
|
|
|
259
|
+
Keyboard Shortcuts:
|
|
260
|
+
- Enter: Click default (last) button
|
|
261
|
+
- Escape: Dismiss dialog or exit fullscreen
|
|
262
|
+
- F11: Toggle fullscreen mode
|
|
263
|
+
- F12: Open developer tools (DevTools/Inspect)
|
|
264
|
+
- Ctrl+Wheel/Plus/Minus: Zoom in/out
|
|
265
|
+
- Ctrl+0: Reset zoom to 100%
|
|
266
|
+
|
|
252
267
|
Notes:
|
|
253
268
|
- If no options provided, all non-option arguments are concatenated as message
|
|
254
269
|
- Press ESC to dismiss (returns button: "dismissed")
|
|
@@ -297,6 +312,7 @@ interface MessageBoxOptions {
|
|
|
297
312
|
message?: string; // Plain text message (optional if url or html provided)
|
|
298
313
|
html?: string; // HTML content to display
|
|
299
314
|
url?: string; // URL to load (web URL or file:// path)
|
|
315
|
+
hash?: string; // Hash fragment to append to URL (requires url). Leading # optional.
|
|
300
316
|
size?: { // Window size in pixels
|
|
301
317
|
width: number; // Window width (default: 600, or 1024 for URLs)
|
|
302
318
|
height: number; // Window height (default: 400, or 768 for URLs)
|
|
@@ -557,7 +573,7 @@ await showMessageBox({
|
|
|
557
573
|
- ✅ Zoom control
|
|
558
574
|
- ✅ Fullscreen mode
|
|
559
575
|
- ✅ TypeScript type definitions
|
|
560
|
-
- ✅ Keyboard shortcuts (Enter, Escape, F11)
|
|
576
|
+
- ✅ Keyboard shortcuts (Enter, Escape, F11, F12)
|
|
561
577
|
|
|
562
578
|
## Why msger?
|
|
563
579
|
|
package/TODO.md
CHANGED
|
@@ -1,7 +1,105 @@
|
|
|
1
1
|
# msger TODO List
|
|
2
2
|
|
|
3
|
-
##
|
|
4
|
-
|
|
3
|
+
## Recent Session (2025-11-11 Evening) - Hash Option & Context Menu
|
|
4
|
+
|
|
5
|
+
**Status:** ✅ Hash option COMPLETED, ⏸️ Context menu DEFERRED
|
|
6
|
+
|
|
7
|
+
### What Was Implemented:
|
|
8
|
+
|
|
9
|
+
1. **Hash Fragment Option (`-hash`)**
|
|
10
|
+
- Appends hash fragment to URL (e.g., `-url "https://example.com" -hash section1`)
|
|
11
|
+
- Automatically strips leading # to avoid ##
|
|
12
|
+
- Requires `-url` to be set
|
|
13
|
+
- Supported in JSON config files
|
|
14
|
+
- **Status:** ✅ Working
|
|
15
|
+
|
|
16
|
+
2. **Build Process Improvements**
|
|
17
|
+
- Commented out Raspberry Pi build warning (build.ts:178-185)
|
|
18
|
+
- Added automatic PATH cleaning for Windows builds to fix Git link.exe vs VS linker conflict
|
|
19
|
+
- PATH fix function removes Git's /usr/bin from PATH (build.ts:34-43)
|
|
20
|
+
- **Status:** ✅ Working
|
|
21
|
+
|
|
22
|
+
3. **Context Menu (Right-Click)**
|
|
23
|
+
- Attempted to add right-click context menu with Fullscreen toggle
|
|
24
|
+
- Code implemented in template.html and msger-api.js
|
|
25
|
+
- **Issue:** Simulated keyboard events don't work, IPC toggleFullscreen works but menu conflicts with Windows system menu
|
|
26
|
+
- **Decision:** Commented out for now, F11/F12 keyboard shortcuts work fine
|
|
27
|
+
- **Status:** ⏸️ Code exists but commented out in template.html and msger-api.js
|
|
28
|
+
- **TODO:** Revisit context menu implementation - possibly add more useful items or improve UX to avoid system menu conflict
|
|
29
|
+
|
|
30
|
+
### Files Modified:
|
|
31
|
+
- `shower.ts` - Added hash field to MessageBoxOptions
|
|
32
|
+
- `clihandler.ts` - Added -hash CLI parsing, save/load support
|
|
33
|
+
- `README.md` - Documented -hash option
|
|
34
|
+
- `msger-native/build.ts` - Pi warning removed, PATH fix added
|
|
35
|
+
- `msger-native/src/template.html` - Context menu code (commented out)
|
|
36
|
+
- `msger-native/src/msger-api.js` - Context menu code (commented out)
|
|
37
|
+
|
|
38
|
+
### Future Work:
|
|
39
|
+
- Consider more useful context menu items (Copy, Paste, etc.)
|
|
40
|
+
- Investigate better UX to distinguish from Windows system menu
|
|
41
|
+
- Possibly use Ctrl+Right-click or custom activation method
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Recent Session (2025-11-11) - Configuration Management
|
|
46
|
+
|
|
47
|
+
**Status:** ✅ COMPLETED
|
|
48
|
+
|
|
49
|
+
### What Was Implemented:
|
|
50
|
+
|
|
51
|
+
1. **Architecture Simplification**
|
|
52
|
+
- Rust binary now ONLY reads JSON from stdin (removed clap, CLI parsing, file I/O)
|
|
53
|
+
- TypeScript wrapper handles ALL complexity (CLI, file I/O, JSONC parsing, merging)
|
|
54
|
+
- Cleaner separation: Rust = display engine, TypeScript = orchestration
|
|
55
|
+
|
|
56
|
+
2. **-load/-save Configuration Management**
|
|
57
|
+
- `-load <file>` - Load config from JSON file (supports comments via JSON5)
|
|
58
|
+
- `-save <file>` - Save only explicitly specified CLI arguments (not defaults)
|
|
59
|
+
- Auto `.json` extension: `myconfig` → `myconfig.json` (uses `path.extname()`)
|
|
60
|
+
- Merge logic: CLI args override loaded config values
|
|
61
|
+
|
|
62
|
+
3. **-noshow Flag**
|
|
63
|
+
- Save config without displaying message box
|
|
64
|
+
- NOT saved in JSON (runtime flag only)
|
|
65
|
+
- Usage: `msger -title "Test" -message "Hello" -save myconfig -noshow`
|
|
66
|
+
|
|
67
|
+
4. **Screen Numbering Fix**
|
|
68
|
+
- Monitors sorted by physical layout (matching winpos)
|
|
69
|
+
- Bottom row first (higher Y), then left to right (lower X)
|
|
70
|
+
- Implementation in `main.rs:285-297`
|
|
71
|
+
|
|
72
|
+
5. **Documentation Updated**
|
|
73
|
+
- README.md: Added -load/-save examples, -noshow flag, auto-extension notes
|
|
74
|
+
- Help text: Updated with new options
|
|
75
|
+
- All examples tested and working
|
|
76
|
+
|
|
77
|
+
### Files Modified:
|
|
78
|
+
- `msger-native/Cargo.toml` - Removed clap dependency
|
|
79
|
+
- `msger-native/src/main.rs` - Removed CLI parsing, added screen sorting
|
|
80
|
+
- `package.json` - Added json5 dependency
|
|
81
|
+
- `cli.ts` - Added load/save/noshow handling, auto-extension logic
|
|
82
|
+
- `clihandler.ts` - Added CLI options, loadConfigFile(), saveConfigFile()
|
|
83
|
+
- `README.md` - Documented new features
|
|
84
|
+
|
|
85
|
+
### Usage Examples:
|
|
86
|
+
```bash
|
|
87
|
+
# Load and override
|
|
88
|
+
msger -load myconfig -title "Override"
|
|
89
|
+
|
|
90
|
+
# Save minimal config (only specified args)
|
|
91
|
+
msger -title "Test" -message "Hello" -save myconfig -noshow
|
|
92
|
+
|
|
93
|
+
# Auto-extension
|
|
94
|
+
msger -save myconfig # Creates myconfig.json
|
|
95
|
+
msger -load myconfig # Loads myconfig.json
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Known Issues / Next Steps:
|
|
99
|
+
- None - all features working and tested
|
|
100
|
+
- Version bumped to 0.1.84 (already in package.json)
|
|
101
|
+
|
|
102
|
+
---
|
|
5
103
|
|
|
6
104
|
## High Priority - Platform App Support
|
|
7
105
|
|
package/clihandler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clihandler.d.ts","sourceRoot":"","sources":["clihandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"clihandler.d.ts","sourceRoot":"","sources":["clihandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAwGhD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAC1C,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CA+OA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgB3E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CA0GjF;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|
package/clihandler.js
CHANGED
|
@@ -18,6 +18,7 @@ Options:
|
|
|
18
18
|
-html <html> Display HTML formatted message (inline)
|
|
19
19
|
-htmlfrom <file|url> Fetch HTML from file/URL and embed in template (has buttons & msger API)
|
|
20
20
|
-url <url> Load URL directly in webview (no template, no buttons)
|
|
21
|
+
-hash <fragment> Hash fragment to append to URL (requires -url). Leading # optional.
|
|
21
22
|
-buttons <label...> Specify button labels (e.g., -buttons Yes No Cancel)
|
|
22
23
|
-ok Add OK button
|
|
23
24
|
-cancel Add Cancel button
|
|
@@ -48,6 +49,7 @@ Examples:
|
|
|
48
49
|
msger -htmlfrom page.html -buttons OK Cancel
|
|
49
50
|
msger -htmlfrom "https://example.com" -buttons OK
|
|
50
51
|
msger -url "https://example.com"
|
|
52
|
+
msger -url "https://example.com" -hash section1
|
|
51
53
|
msger -url "https://example.com" -detach
|
|
52
54
|
msger -title "Alert" -message "Operation complete"
|
|
53
55
|
echo -e "\x1b[31mError:\x1b[0m Something failed" | msger
|
|
@@ -107,6 +109,10 @@ export function parseCliArgs(args) {
|
|
|
107
109
|
cli.url = args[++i];
|
|
108
110
|
i++;
|
|
109
111
|
}
|
|
112
|
+
else if (arg === '-hash' || arg === '--hash') {
|
|
113
|
+
cli.hash = args[++i];
|
|
114
|
+
i++;
|
|
115
|
+
}
|
|
110
116
|
else if (arg === '-buttons' || arg === '--buttons') {
|
|
111
117
|
// Collect button labels until next option or end
|
|
112
118
|
i++;
|
|
@@ -286,6 +292,7 @@ export function parseCliArgs(args) {
|
|
|
286
292
|
message,
|
|
287
293
|
html,
|
|
288
294
|
url,
|
|
295
|
+
hash: cli.hash,
|
|
289
296
|
buttons: cli.buttons,
|
|
290
297
|
allowInput: cli.input,
|
|
291
298
|
defaultValue: cli.defaultValue,
|
|
@@ -367,6 +374,8 @@ export function saveConfigFile(filePath, options) {
|
|
|
367
374
|
config.html = options.html;
|
|
368
375
|
if (options.url)
|
|
369
376
|
config.url = options.url;
|
|
377
|
+
if (options.hash)
|
|
378
|
+
config.hash = options.hash;
|
|
370
379
|
// Only save size if explicitly set
|
|
371
380
|
if (options.size)
|
|
372
381
|
config.size = options.size;
|
|
@@ -414,6 +423,10 @@ export function saveConfigFile(filePath, options) {
|
|
|
414
423
|
if (config.url) {
|
|
415
424
|
sections.push(` // URL to load (overrides message and html)\n "url": ${JSON.stringify(config.url)}`);
|
|
416
425
|
}
|
|
426
|
+
// Hash
|
|
427
|
+
if (config.hash) {
|
|
428
|
+
sections.push(` // Hash fragment to append to URL\n "hash": ${JSON.stringify(config.hash)}`);
|
|
429
|
+
}
|
|
417
430
|
// Size
|
|
418
431
|
if (config.size) {
|
|
419
432
|
sections.push(` // Window size\n "size": {\n "width": ${config.size.width},\n "height": ${config.size.height}\n }`);
|
package/clihandler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clihandler.js","sourceRoot":"","sources":["clihandler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"clihandler.js","sourceRoot":"","sources":["clihandler.ts"],"names":[],"mappings":"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"}
|
package/clihandler.ts
CHANGED
|
@@ -11,6 +11,7 @@ interface CliOptions {
|
|
|
11
11
|
html?: string;
|
|
12
12
|
htmlFrom?: string;
|
|
13
13
|
url?: string;
|
|
14
|
+
hash?: string;
|
|
14
15
|
buttons?: string[];
|
|
15
16
|
input?: boolean;
|
|
16
17
|
width?: number;
|
|
@@ -50,6 +51,7 @@ Options:
|
|
|
50
51
|
-html <html> Display HTML formatted message (inline)
|
|
51
52
|
-htmlfrom <file|url> Fetch HTML from file/URL and embed in template (has buttons & msger API)
|
|
52
53
|
-url <url> Load URL directly in webview (no template, no buttons)
|
|
54
|
+
-hash <fragment> Hash fragment to append to URL (requires -url). Leading # optional.
|
|
53
55
|
-buttons <label...> Specify button labels (e.g., -buttons Yes No Cancel)
|
|
54
56
|
-ok Add OK button
|
|
55
57
|
-cancel Add Cancel button
|
|
@@ -80,6 +82,7 @@ Examples:
|
|
|
80
82
|
msger -htmlfrom page.html -buttons OK Cancel
|
|
81
83
|
msger -htmlfrom "https://example.com" -buttons OK
|
|
82
84
|
msger -url "https://example.com"
|
|
85
|
+
msger -url "https://example.com" -hash section1
|
|
83
86
|
msger -url "https://example.com" -detach
|
|
84
87
|
msger -title "Alert" -message "Operation complete"
|
|
85
88
|
echo -e "\x1b[31mError:\x1b[0m Something failed" | msger
|
|
@@ -143,6 +146,9 @@ export function parseCliArgs(args: string[]): {
|
|
|
143
146
|
} else if (arg === '-url' || arg === '--url') {
|
|
144
147
|
cli.url = args[++i];
|
|
145
148
|
i++;
|
|
149
|
+
} else if (arg === '-hash' || arg === '--hash') {
|
|
150
|
+
cli.hash = args[++i];
|
|
151
|
+
i++;
|
|
146
152
|
} else if (arg === '-buttons' || arg === '--buttons') {
|
|
147
153
|
// Collect button labels until next option or end
|
|
148
154
|
i++;
|
|
@@ -295,6 +301,7 @@ export function parseCliArgs(args: string[]): {
|
|
|
295
301
|
message,
|
|
296
302
|
html,
|
|
297
303
|
url,
|
|
304
|
+
hash: cli.hash,
|
|
298
305
|
buttons: cli.buttons,
|
|
299
306
|
allowInput: cli.input,
|
|
300
307
|
defaultValue: cli.defaultValue,
|
|
@@ -381,6 +388,7 @@ export function saveConfigFile(filePath: string, options: MessageBoxOptions): vo
|
|
|
381
388
|
if (options.message) config.message = options.message;
|
|
382
389
|
if (options.html) config.html = options.html;
|
|
383
390
|
if (options.url) config.url = options.url;
|
|
391
|
+
if (options.hash) config.hash = options.hash;
|
|
384
392
|
// Only save size if explicitly set
|
|
385
393
|
if (options.size) config.size = options.size;
|
|
386
394
|
if (options.pos) config.pos = options.pos;
|
|
@@ -422,6 +430,11 @@ export function saveConfigFile(filePath: string, options: MessageBoxOptions): vo
|
|
|
422
430
|
sections.push(` // URL to load (overrides message and html)\n "url": ${JSON.stringify(config.url)}`);
|
|
423
431
|
}
|
|
424
432
|
|
|
433
|
+
// Hash
|
|
434
|
+
if (config.hash) {
|
|
435
|
+
sections.push(` // Hash fragment to append to URL\n "hash": ${JSON.stringify(config.hash)}`);
|
|
436
|
+
}
|
|
437
|
+
|
|
425
438
|
// Size
|
|
426
439
|
if (config.size) {
|
|
427
440
|
sections.push(` // Window size\n "size": {\n "width": ${config.size.width},\n "height": ${config.size.height}\n }`);
|
|
Binary file
|
package/msger-native/build.ts
CHANGED
|
@@ -18,10 +18,11 @@ function isWindows() {
|
|
|
18
18
|
return platform() === 'win32' && !isWSL();
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
function runCommand(cmd: string, description: string) {
|
|
21
|
+
function runCommand(cmd: string, description: string, customEnv?: Record<string, string>) {
|
|
22
22
|
console.log(`\n📦 ${description}...`);
|
|
23
23
|
try {
|
|
24
|
-
|
|
24
|
+
const env = customEnv ? { ...process.env, ...customEnv } : process.env;
|
|
25
|
+
execSync(cmd, { stdio: 'inherit', env });
|
|
25
26
|
console.log(`✅ ${description} completed`);
|
|
26
27
|
return true;
|
|
27
28
|
} catch (error: any) {
|
|
@@ -30,6 +31,17 @@ function runCommand(cmd: string, description: string) {
|
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
|
|
34
|
+
function getCleanPathForWindows(): string {
|
|
35
|
+
// Remove Git's /usr/bin from PATH to avoid link.exe conflict with VS linker
|
|
36
|
+
const currentPath = process.env.PATH || '';
|
|
37
|
+
const pathParts = currentPath.split(';');
|
|
38
|
+
const filteredParts = pathParts.filter(part => {
|
|
39
|
+
const lower = part.toLowerCase();
|
|
40
|
+
return !lower.includes('git\\usr\\bin') && !lower.includes('git/usr/bin');
|
|
41
|
+
});
|
|
42
|
+
return filteredParts.join(';');
|
|
43
|
+
}
|
|
44
|
+
|
|
33
45
|
function needsRebuild(binaryPath: string, sourceDirs: string[]): boolean {
|
|
34
46
|
// If binary doesn't exist, we need to build
|
|
35
47
|
if (!existsSync(binaryPath)) {
|
|
@@ -99,7 +111,10 @@ function main() {
|
|
|
99
111
|
} else {
|
|
100
112
|
// Try building with cargo directly first
|
|
101
113
|
// Cargo should find the VS linker if available
|
|
102
|
-
|
|
114
|
+
// Fix PATH to remove Git's link.exe which conflicts with VS linker
|
|
115
|
+
const cleanPath = getCleanPathForWindows();
|
|
116
|
+
console.log('🔧 Fixing PATH to use VS linker instead of Git link.exe');
|
|
117
|
+
const success = runCommand('cargo build --release', 'Building Windows x64 binary (release)', { PATH: cleanPath });
|
|
103
118
|
|
|
104
119
|
if (success) {
|
|
105
120
|
// Copy binary to bin directory
|
|
@@ -173,16 +188,16 @@ function main() {
|
|
|
173
188
|
}
|
|
174
189
|
|
|
175
190
|
console.log('\n🎉 Build process completed!');
|
|
176
|
-
|
|
191
|
+
|
|
177
192
|
// Check if ARM64 binary exists
|
|
178
|
-
const arm64BinaryPath = `./bin/msgernative-arm64`;
|
|
179
|
-
if (!existsSync(arm64BinaryPath)) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
193
|
+
// const arm64BinaryPath = `./bin/msgernative-arm64`;
|
|
194
|
+
// if (!existsSync(arm64BinaryPath)) {
|
|
195
|
+
// // Reminder about ARM64/Pi build
|
|
196
|
+
// console.log('\n\x1b[30m\x1b[41m \x1b[0m');
|
|
197
|
+
// console.log('\x1b[30m\x1b[41m ⚠️ REMINDER: ARM64/Pi binary not built \x1b[0m');
|
|
198
|
+
// console.log('\x1b[30m\x1b[41m Run: .\\build-pi.ps1 to build for Raspberry Pi \x1b[0m');
|
|
199
|
+
// console.log('\x1b[30m\x1b[41m \x1b[0m\n');
|
|
200
|
+
// }
|
|
186
201
|
}
|
|
187
202
|
|
|
188
203
|
main();
|
package/msger-native/src/main.rs
CHANGED
|
@@ -254,6 +254,13 @@ fn escape_html(s: &str) -> String {
|
|
|
254
254
|
|
|
255
255
|
|
|
256
256
|
fn main() {
|
|
257
|
+
// Check for debug mode via environment variable
|
|
258
|
+
let debug_mode = std::env::var("MSGER_DEBUG").is_ok();
|
|
259
|
+
|
|
260
|
+
if debug_mode {
|
|
261
|
+
eprintln!("🐛 DEBUG MODE ENABLED (MSGER_DEBUG environment variable set)");
|
|
262
|
+
}
|
|
263
|
+
|
|
257
264
|
// Read JSON from stdin
|
|
258
265
|
let mut input = String::new();
|
|
259
266
|
io::stdin()
|
|
@@ -264,6 +271,11 @@ fn main() {
|
|
|
264
271
|
let options: MessageBoxOptions = serde_json::from_str(&input)
|
|
265
272
|
.expect("Failed to parse JSON input");
|
|
266
273
|
|
|
274
|
+
if debug_mode {
|
|
275
|
+
eprintln!("🐛 Parsed options: title={}, buttons={:?}, fullscreen={}",
|
|
276
|
+
options.title, options.buttons, options.fullscreen);
|
|
277
|
+
}
|
|
278
|
+
|
|
267
279
|
// Create event loop and window
|
|
268
280
|
let event_loop = EventLoop::new();
|
|
269
281
|
|
|
@@ -429,10 +441,16 @@ fn main() {
|
|
|
429
441
|
.with_initialization_script(MSGER_JS_API)
|
|
430
442
|
.with_devtools(true)
|
|
431
443
|
.with_ipc_handler(move |msg| {
|
|
444
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
445
|
+
eprintln!("🐛 IPC message received: {}", msg.body());
|
|
446
|
+
}
|
|
432
447
|
// Parse message as JSON
|
|
433
448
|
if let Ok(json_msg) = serde_json::from_str::<serde_json::Value>(msg.body()) {
|
|
434
449
|
// Check for action messages
|
|
435
450
|
if json_msg.get("_action").is_some() {
|
|
451
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
452
|
+
eprintln!("🐛 IPC action message detected");
|
|
453
|
+
}
|
|
436
454
|
let mut action_lock = pending_action_clone.lock().unwrap();
|
|
437
455
|
*action_lock = Some(json_msg);
|
|
438
456
|
return;
|
|
@@ -440,6 +458,9 @@ fn main() {
|
|
|
440
458
|
|
|
441
459
|
// Check for resize message
|
|
442
460
|
if json_msg.get("_resize").and_then(|v| v.as_bool()).unwrap_or(false) {
|
|
461
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
462
|
+
eprintln!("🐛 IPC resize message detected");
|
|
463
|
+
}
|
|
443
464
|
// This is a resize message - we'll handle it in the event loop
|
|
444
465
|
// For now, just ignore it (window resize from IPC is complex in wry/tao)
|
|
445
466
|
return;
|
|
@@ -448,10 +469,18 @@ fn main() {
|
|
|
448
469
|
|
|
449
470
|
// Parse the result from JavaScript (msg is now a Request<String>)
|
|
450
471
|
if let Ok(mut res) = serde_json::from_str::<MessageBoxResult>(msg.body()) {
|
|
472
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
473
|
+
eprintln!("🐛 Button result parsed: {:?} - setting result and exiting", res.button);
|
|
474
|
+
}
|
|
451
475
|
// Add debug info if requested
|
|
452
476
|
res.debug = debug_info_clone.clone();
|
|
453
477
|
let mut result_lock = result_clone.lock().unwrap();
|
|
454
478
|
*result_lock = Some(res);
|
|
479
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
480
|
+
eprintln!("🐛 Result lock acquired and set");
|
|
481
|
+
}
|
|
482
|
+
} else if std::env::var("MSGER_DEBUG").is_ok() {
|
|
483
|
+
eprintln!("🐛 Failed to parse IPC message as MessageBoxResult");
|
|
455
484
|
}
|
|
456
485
|
})
|
|
457
486
|
.build(window.as_ref())
|
|
@@ -462,10 +491,16 @@ fn main() {
|
|
|
462
491
|
.with_html(&html)
|
|
463
492
|
.with_devtools(true)
|
|
464
493
|
.with_ipc_handler(move |msg| {
|
|
494
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
495
|
+
eprintln!("🐛 IPC message received: {}", msg.body());
|
|
496
|
+
}
|
|
465
497
|
// Parse message as JSON
|
|
466
498
|
if let Ok(json_msg) = serde_json::from_str::<serde_json::Value>(msg.body()) {
|
|
467
499
|
// Check for action messages
|
|
468
500
|
if json_msg.get("_action").is_some() {
|
|
501
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
502
|
+
eprintln!("🐛 IPC action message detected");
|
|
503
|
+
}
|
|
469
504
|
let mut action_lock = pending_action_clone2.lock().unwrap();
|
|
470
505
|
*action_lock = Some(json_msg);
|
|
471
506
|
return;
|
|
@@ -473,6 +508,9 @@ fn main() {
|
|
|
473
508
|
|
|
474
509
|
// Check for resize message
|
|
475
510
|
if json_msg.get("_resize").and_then(|v| v.as_bool()).unwrap_or(false) {
|
|
511
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
512
|
+
eprintln!("🐛 IPC resize message detected");
|
|
513
|
+
}
|
|
476
514
|
// This is a resize message - we'll handle it in the event loop
|
|
477
515
|
// For now, just ignore it (window resize from IPC is complex in wry/tao)
|
|
478
516
|
return;
|
|
@@ -481,10 +519,18 @@ fn main() {
|
|
|
481
519
|
|
|
482
520
|
// Parse the result from JavaScript (msg is now a Request<String>)
|
|
483
521
|
if let Ok(mut res) = serde_json::from_str::<MessageBoxResult>(msg.body()) {
|
|
522
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
523
|
+
eprintln!("🐛 Button result parsed: {:?} - setting result and exiting", res.button);
|
|
524
|
+
}
|
|
484
525
|
// Add debug info if requested
|
|
485
526
|
res.debug = debug_info_clone2.clone();
|
|
486
527
|
let mut result_lock = result_clone2.lock().unwrap();
|
|
487
528
|
*result_lock = Some(res);
|
|
529
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
530
|
+
eprintln!("🐛 Result lock acquired and set");
|
|
531
|
+
}
|
|
532
|
+
} else if std::env::var("MSGER_DEBUG").is_ok() {
|
|
533
|
+
eprintln!("🐛 Failed to parse IPC message as MessageBoxResult");
|
|
488
534
|
}
|
|
489
535
|
})
|
|
490
536
|
.build(window.as_ref())
|
|
@@ -585,13 +631,25 @@ fn main() {
|
|
|
585
631
|
},
|
|
586
632
|
..
|
|
587
633
|
} => {
|
|
634
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
635
|
+
eprintln!("🐛 KeyboardInput event - physical_key: {:?}", key_code);
|
|
636
|
+
}
|
|
588
637
|
match key_code {
|
|
589
638
|
// F11 toggles fullscreen
|
|
590
639
|
KeyCode::F11 => {
|
|
640
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
641
|
+
eprintln!("🐛 F11 pressed - toggling fullscreen");
|
|
642
|
+
}
|
|
591
643
|
let is_fullscreen = window_clone.fullscreen().is_some();
|
|
592
644
|
if is_fullscreen {
|
|
645
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
646
|
+
eprintln!("🐛 Exiting fullscreen");
|
|
647
|
+
}
|
|
593
648
|
window_clone.set_fullscreen(None);
|
|
594
649
|
} else {
|
|
650
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
651
|
+
eprintln!("🐛 Entering fullscreen");
|
|
652
|
+
}
|
|
595
653
|
// Get current monitor for fullscreen
|
|
596
654
|
let monitor = window_clone.current_monitor()
|
|
597
655
|
.or_else(|| window_clone.primary_monitor());
|
|
@@ -644,6 +702,18 @@ fn main() {
|
|
|
644
702
|
*control_flow = ControlFlow::Exit;
|
|
645
703
|
}
|
|
646
704
|
Event::MainEventsCleared => {
|
|
705
|
+
// Check if result is set first (for quick exit on button click)
|
|
706
|
+
{
|
|
707
|
+
let result_lock = result.lock().unwrap();
|
|
708
|
+
if result_lock.is_some() {
|
|
709
|
+
if std::env::var("MSGER_DEBUG").is_ok() {
|
|
710
|
+
eprintln!("🐛 MainEventsCleared: Result is set, exiting");
|
|
711
|
+
}
|
|
712
|
+
*control_flow = ControlFlow::Exit;
|
|
713
|
+
return;
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
|
|
647
717
|
// Process pending actions from JavaScript
|
|
648
718
|
let mut action_lock = pending_action.lock().unwrap();
|
|
649
719
|
if let Some(action_msg) = action_lock.take() {
|
|
@@ -724,12 +794,6 @@ fn main() {
|
|
|
724
794
|
}
|
|
725
795
|
}
|
|
726
796
|
drop(action_lock);
|
|
727
|
-
|
|
728
|
-
// Check if result is set
|
|
729
|
-
let result_lock = result.lock().unwrap();
|
|
730
|
-
if result_lock.is_some() {
|
|
731
|
-
*control_flow = ControlFlow::Exit;
|
|
732
|
-
}
|
|
733
797
|
}
|
|
734
798
|
Event::LoopDestroyed => {
|
|
735
799
|
// Output result to stdout
|
|
@@ -81,4 +81,116 @@
|
|
|
81
81
|
};
|
|
82
82
|
|
|
83
83
|
console.log('[MSGER] API initialized successfully! window.msger =', window.msger);
|
|
84
|
+
|
|
85
|
+
// Context menu - commented out for now, F11/F12 keyboard shortcuts work fine
|
|
86
|
+
/*
|
|
87
|
+
(function() {
|
|
88
|
+
function initContextMenu() {
|
|
89
|
+
// Create context menu styles
|
|
90
|
+
const style = document.createElement('style');
|
|
91
|
+
style.textContent = `
|
|
92
|
+
#msgerContextMenu {
|
|
93
|
+
display: none;
|
|
94
|
+
position: fixed;
|
|
95
|
+
z-index: 999999;
|
|
96
|
+
background-color: white;
|
|
97
|
+
border: 1px solid #ccc;
|
|
98
|
+
box-shadow: 2px 2px 8px rgba(0,0,0,0.2);
|
|
99
|
+
border-radius: 4px;
|
|
100
|
+
min-width: 180px;
|
|
101
|
+
padding: 4px 0;
|
|
102
|
+
}
|
|
103
|
+
#msgerContextMenu.visible {
|
|
104
|
+
display: block;
|
|
105
|
+
}
|
|
106
|
+
.msger-context-menu-item {
|
|
107
|
+
padding: 8px 16px;
|
|
108
|
+
cursor: pointer;
|
|
109
|
+
user-select: none;
|
|
110
|
+
font-size: 14px;
|
|
111
|
+
}
|
|
112
|
+
.msger-context-menu-item:hover {
|
|
113
|
+
background-color: #0066cc;
|
|
114
|
+
color: white;
|
|
115
|
+
}
|
|
116
|
+
.msger-context-menu-separator {
|
|
117
|
+
height: 1px;
|
|
118
|
+
background-color: #e0e0e0;
|
|
119
|
+
margin: 4px 0;
|
|
120
|
+
}
|
|
121
|
+
`;
|
|
122
|
+
document.head.appendChild(style);
|
|
123
|
+
|
|
124
|
+
// Create context menu DOM
|
|
125
|
+
const contextMenu = document.createElement('div');
|
|
126
|
+
contextMenu.id = 'msgerContextMenu';
|
|
127
|
+
contextMenu.innerHTML = `
|
|
128
|
+
<div class="msger-context-menu-item" data-action="fullscreen">Toggle Fullscreen (F11)</div>
|
|
129
|
+
`;
|
|
130
|
+
document.body.appendChild(contextMenu);
|
|
131
|
+
|
|
132
|
+
// Show context menu on right-click
|
|
133
|
+
document.addEventListener('contextmenu', function(e) {
|
|
134
|
+
e.preventDefault();
|
|
135
|
+
|
|
136
|
+
// Position menu at mouse location
|
|
137
|
+
contextMenu.style.left = e.pageX + 'px';
|
|
138
|
+
contextMenu.style.top = e.pageY + 'px';
|
|
139
|
+
contextMenu.classList.add('visible');
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// Hide context menu on click elsewhere
|
|
143
|
+
document.addEventListener('click', function(e) {
|
|
144
|
+
if (!contextMenu.contains(e.target)) {
|
|
145
|
+
contextMenu.classList.remove('visible');
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
// Handle menu item clicks
|
|
150
|
+
contextMenu.addEventListener('click', function(e) {
|
|
151
|
+
const item = e.target.closest('.msger-context-menu-item');
|
|
152
|
+
if (!item) return;
|
|
153
|
+
|
|
154
|
+
const action = item.getAttribute('data-action');
|
|
155
|
+
contextMenu.classList.remove('visible');
|
|
156
|
+
|
|
157
|
+
if (action === 'fullscreen') {
|
|
158
|
+
// Use IPC to toggle fullscreen at window level
|
|
159
|
+
try {
|
|
160
|
+
if (typeof window.ipc !== 'undefined' && window.ipc.postMessage) {
|
|
161
|
+
window.ipc.postMessage(JSON.stringify({ _action: 'toggleFullscreen' }));
|
|
162
|
+
} else {
|
|
163
|
+
console.warn('IPC not available, trying HTML5 fullscreen');
|
|
164
|
+
// Fallback to HTML5 fullscreen
|
|
165
|
+
if (!document.fullscreenElement) {
|
|
166
|
+
document.documentElement.requestFullscreen().catch(err => {
|
|
167
|
+
console.warn('HTML5 fullscreen failed:', err);
|
|
168
|
+
});
|
|
169
|
+
} else {
|
|
170
|
+
document.exitFullscreen();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
} catch(e) {
|
|
174
|
+
console.error('Fullscreen toggle failed:', e);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
// Hide menu on Escape
|
|
180
|
+
document.addEventListener('keydown', function(e) {
|
|
181
|
+
if (e.key === 'Escape' && contextMenu.classList.contains('visible')) {
|
|
182
|
+
e.stopPropagation();
|
|
183
|
+
contextMenu.classList.remove('visible');
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Wait for DOM to be ready before adding context menu
|
|
189
|
+
if (document.body) {
|
|
190
|
+
initContextMenu();
|
|
191
|
+
} else {
|
|
192
|
+
document.addEventListener('DOMContentLoaded', initContextMenu);
|
|
193
|
+
}
|
|
194
|
+
})();
|
|
195
|
+
*/
|
|
84
196
|
})();
|
|
@@ -60,6 +60,37 @@
|
|
|
60
60
|
button.ok-button:hover {
|
|
61
61
|
background-color: #218838;
|
|
62
62
|
}
|
|
63
|
+
/* Context menu - commented out for now, F11/F12 keyboard shortcuts work fine
|
|
64
|
+
#contextMenu {
|
|
65
|
+
display: none;
|
|
66
|
+
position: fixed;
|
|
67
|
+
z-index: 10000;
|
|
68
|
+
background-color: white;
|
|
69
|
+
border: 1px solid #ccc;
|
|
70
|
+
box-shadow: 2px 2px 8px rgba(0,0,0,0.2);
|
|
71
|
+
border-radius: 4px;
|
|
72
|
+
min-width: 180px;
|
|
73
|
+
padding: 4px 0;
|
|
74
|
+
}
|
|
75
|
+
#contextMenu.visible {
|
|
76
|
+
display: block;
|
|
77
|
+
}
|
|
78
|
+
.context-menu-item {
|
|
79
|
+
padding: 8px 16px;
|
|
80
|
+
cursor: pointer;
|
|
81
|
+
user-select: none;
|
|
82
|
+
font-size: 14px;
|
|
83
|
+
}
|
|
84
|
+
.context-menu-item:hover {
|
|
85
|
+
background-color: #0066cc;
|
|
86
|
+
color: white;
|
|
87
|
+
}
|
|
88
|
+
.context-menu-separator {
|
|
89
|
+
height: 1px;
|
|
90
|
+
background-color: #e0e0e0;
|
|
91
|
+
margin: 4px 0;
|
|
92
|
+
}
|
|
93
|
+
*/
|
|
63
94
|
</style>
|
|
64
95
|
</head>
|
|
65
96
|
<body tabindex="0">
|
|
@@ -71,6 +102,11 @@
|
|
|
71
102
|
{BUTTONS}
|
|
72
103
|
</div>
|
|
73
104
|
<div id="countdown" style="position: fixed; top: 5px; right: 5px; background: rgba(255, 255, 0, 0.3); padding: 5px 10px; font-size: 14px; font-weight: bold; border-radius: 4px; display: none;"></div>
|
|
105
|
+
<!-- Context menu - commented out for now, F11/F12 keyboard shortcuts work fine
|
|
106
|
+
<div id="contextMenu">
|
|
107
|
+
<div class="context-menu-item" data-action="fullscreen">Toggle Fullscreen (F11)</div>
|
|
108
|
+
</div>
|
|
109
|
+
-->
|
|
74
110
|
<script>
|
|
75
111
|
// msger JavaScript API with error handling
|
|
76
112
|
(function() {
|
|
@@ -291,15 +327,23 @@
|
|
|
291
327
|
// window.ipc.postMessage(JSON.stringify(result));
|
|
292
328
|
}
|
|
293
329
|
} else if (e.key === 'F11') {
|
|
294
|
-
//
|
|
295
|
-
// The Rust window handler should catch F11 for native fullscreen
|
|
330
|
+
// Use IPC to toggle native window fullscreen instead of HTML5 fullscreen
|
|
296
331
|
e.preventDefault();
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
|
|
332
|
+
try {
|
|
333
|
+
if (typeof window.ipc !== 'undefined' && window.ipc.postMessage) {
|
|
334
|
+
window.ipc.postMessage(JSON.stringify({ _action: 'toggleFullscreen' }));
|
|
335
|
+
} else {
|
|
336
|
+
// Fallback to HTML5 fullscreen if IPC not available
|
|
337
|
+
if (!document.fullscreenElement) {
|
|
338
|
+
document.documentElement.requestFullscreen().catch(err => {
|
|
339
|
+
console.warn('HTML5 fullscreen failed:', err);
|
|
340
|
+
});
|
|
341
|
+
} else {
|
|
342
|
+
document.exitFullscreen();
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
} catch(err) {
|
|
346
|
+
console.error('F11 fullscreen toggle failed:', err);
|
|
303
347
|
}
|
|
304
348
|
} else if (e.key === 'Enter') {
|
|
305
349
|
// Prevent default form submission
|
|
@@ -325,6 +369,67 @@
|
|
|
325
369
|
document.body.style.zoom = zoomLevel;
|
|
326
370
|
}
|
|
327
371
|
});
|
|
372
|
+
|
|
373
|
+
// Context menu handling - commented out for now, F11/F12 keyboard shortcuts work fine
|
|
374
|
+
/*
|
|
375
|
+
(function() {
|
|
376
|
+
const contextMenu = document.getElementById('contextMenu');
|
|
377
|
+
|
|
378
|
+
// Show context menu on right-click
|
|
379
|
+
document.addEventListener('contextmenu', function(e) {
|
|
380
|
+
e.preventDefault();
|
|
381
|
+
|
|
382
|
+
// Position menu at mouse location
|
|
383
|
+
contextMenu.style.left = e.pageX + 'px';
|
|
384
|
+
contextMenu.style.top = e.pageY + 'px';
|
|
385
|
+
contextMenu.classList.add('visible');
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
// Hide context menu on click elsewhere
|
|
389
|
+
document.addEventListener('click', function(e) {
|
|
390
|
+
if (!contextMenu.contains(e.target)) {
|
|
391
|
+
contextMenu.classList.remove('visible');
|
|
392
|
+
}
|
|
393
|
+
});
|
|
394
|
+
|
|
395
|
+
// Handle menu item clicks
|
|
396
|
+
contextMenu.addEventListener('click', function(e) {
|
|
397
|
+
const item = e.target.closest('.context-menu-item');
|
|
398
|
+
if (!item) return;
|
|
399
|
+
|
|
400
|
+
const action = item.getAttribute('data-action');
|
|
401
|
+
contextMenu.classList.remove('visible');
|
|
402
|
+
|
|
403
|
+
if (action === 'fullscreen') {
|
|
404
|
+
// Use IPC to toggle fullscreen at window level
|
|
405
|
+
try {
|
|
406
|
+
if (typeof window.ipc !== 'undefined' && window.ipc.postMessage) {
|
|
407
|
+
window.ipc.postMessage(JSON.stringify({ _action: 'toggleFullscreen' }));
|
|
408
|
+
} else {
|
|
409
|
+
console.warn('IPC not available, trying HTML5 fullscreen');
|
|
410
|
+
// Fallback to HTML5 fullscreen
|
|
411
|
+
if (!document.fullscreenElement) {
|
|
412
|
+
document.documentElement.requestFullscreen().catch(err => {
|
|
413
|
+
console.warn('HTML5 fullscreen failed:', err);
|
|
414
|
+
});
|
|
415
|
+
} else {
|
|
416
|
+
document.exitFullscreen();
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
} catch(e) {
|
|
420
|
+
console.error('Fullscreen toggle failed:', e);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
// Hide menu on Escape
|
|
426
|
+
document.addEventListener('keydown', function(e) {
|
|
427
|
+
if (e.key === 'Escape' && contextMenu.classList.contains('visible')) {
|
|
428
|
+
contextMenu.classList.remove('visible');
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
})();
|
|
432
|
+
*/
|
|
328
433
|
</script>
|
|
329
434
|
</body>
|
|
330
435
|
</html>
|
package/package.json
CHANGED
package/shower.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export interface MessageBoxOptions {
|
|
|
3
3
|
message?: string; /** The plain text message to display (optional if url or html is provided) */
|
|
4
4
|
html?: string; /** HTML content to display in the message box */
|
|
5
5
|
url?: string; /** URL to load external content (web URL or file path) */
|
|
6
|
+
hash?: string; /** Hash fragment to append to URL (requires url to be set). Leading # is optional. */
|
|
6
7
|
size?: {
|
|
7
8
|
width: number; /** Window width */
|
|
8
9
|
height: number; /** Window height */
|
package/shower.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shower.d.ts","sourceRoot":"","sources":["shower.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,iBAAiB;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,CAAW,uDAAuD;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC,CAAS,8EAA8E;IACxG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAY,iDAAiD;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC,CAAa,0DAA0D;
|
|
1
|
+
{"version":3,"file":"shower.d.ts","sourceRoot":"","sources":["shower.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,iBAAiB;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,CAAW,uDAAuD;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC,CAAS,8EAA8E;IACxG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAY,iDAAiD;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC,CAAa,0DAA0D;IACpF,IAAI,CAAC,EAAE,MAAM,CAAC,CAAY,sFAAsF;IAEhH,IAAI,CAAC,EAAE;QACH,KAAK,EAAE,MAAM,CAAC,CAAQ,mBAAmB;QACzC,MAAM,EAAE,MAAM,CAAC,CAAO,oBAAoB;KAC7C,CAAC;IACF,GAAG,CAAC,EAAE;QACF,CAAC,EAAE,MAAM,CAAC,CAAY,kCAAkC;QACxD,CAAC,EAAE,MAAM,CAAC,CAAY,kCAAkC;QACxD,MAAM,CAAC,EAAE,MAAM,CAAC,CAAM,8EAA8E;KACvG,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC,CAAK,0EAA0E;IACpG,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAO,kEAAkE;IAC5F,WAAW,CAAC,EAAE,OAAO,CAAC,CAAI,2DAA2D;IACrF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAO,0DAA0D;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC,CAAI,4DAA4D;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC,wDAAwD;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC,CAAK,gEAAgE;IAE1F,OAAO,CAAC,EAAE,MAAM,CAAC,CAAS,yDAAyD;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC,CAAS,0DAA0D;IACpF,UAAU,CAAC,EAAE,OAAO,CAAC,CAAK,sEAAsE;IAChG,IAAI,CAAC,EAAE,MAAM,CAAC,CAAY,6EAA6E;IACvG,GAAG,CAAC,EAAE,OAAO,CAAC,CAAY,8DAA8D;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC,CAAU,uEAAuE;CACpG;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,OAAO,CAAC;KACrB,CAAC;CACL;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuL1F"}
|
package/shower.js
CHANGED
|
@@ -131,6 +131,17 @@ export async function showMessageBox(options) {
|
|
|
131
131
|
// Debug logging (uncomment if needed)
|
|
132
132
|
// console.error(`[DEBUG] Path conversion: ${optionsToSend.url} → ${absolutePath} → ${fileUrl}`);
|
|
133
133
|
}
|
|
134
|
+
// Append hash to URL if specified
|
|
135
|
+
if (optionsToSend.hash && optionsToSend.url) {
|
|
136
|
+
// Remove leading # from hash if present to avoid ##
|
|
137
|
+
const hashValue = optionsToSend.hash.startsWith('#') ? optionsToSend.hash.substring(1) : optionsToSend.hash;
|
|
138
|
+
optionsToSend.url = `${optionsToSend.url}#${hashValue}`;
|
|
139
|
+
// Remove hash from options as it's now part of URL
|
|
140
|
+
delete optionsToSend.hash;
|
|
141
|
+
}
|
|
142
|
+
else if (optionsToSend.hash && !optionsToSend.url) {
|
|
143
|
+
throw new Error('hash option requires url to be set');
|
|
144
|
+
}
|
|
134
145
|
// Flatten size object for Rust binary (expects width/height as top-level fields)
|
|
135
146
|
const rustOptions = { ...optionsToSend };
|
|
136
147
|
if (rustOptions.size) {
|
package/shower.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shower.js","sourceRoot":"","sources":["shower.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,UAAU,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"shower.js","sourceRoot":"","sources":["shower.ts"],"names":[],"mappings":"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"}
|
package/shower.ts
CHANGED
|
@@ -11,6 +11,7 @@ export interface MessageBoxOptions {
|
|
|
11
11
|
message?: string; /** The plain text message to display (optional if url or html is provided) */
|
|
12
12
|
html?: string; /** HTML content to display in the message box */
|
|
13
13
|
url?: string; /** URL to load external content (web URL or file path) */
|
|
14
|
+
hash?: string; /** Hash fragment to append to URL (requires url to be set). Leading # is optional. */
|
|
14
15
|
// fullPage?: boolean; /** Display HTML as a complete page without wrapping (default: false) */
|
|
15
16
|
size?: { /** Window size in pixels */
|
|
16
17
|
width: number; /** Window width */
|
|
@@ -199,6 +200,17 @@ export async function showMessageBox(options: MessageBoxOptions): Promise<Messag
|
|
|
199
200
|
// console.error(`[DEBUG] Path conversion: ${optionsToSend.url} → ${absolutePath} → ${fileUrl}`);
|
|
200
201
|
}
|
|
201
202
|
|
|
203
|
+
// Append hash to URL if specified
|
|
204
|
+
if (optionsToSend.hash && optionsToSend.url) {
|
|
205
|
+
// Remove leading # from hash if present to avoid ##
|
|
206
|
+
const hashValue = optionsToSend.hash.startsWith('#') ? optionsToSend.hash.substring(1) : optionsToSend.hash;
|
|
207
|
+
optionsToSend.url = `${optionsToSend.url}#${hashValue}`;
|
|
208
|
+
// Remove hash from options as it's now part of URL
|
|
209
|
+
delete optionsToSend.hash;
|
|
210
|
+
} else if (optionsToSend.hash && !optionsToSend.url) {
|
|
211
|
+
throw new Error('hash option requires url to be set');
|
|
212
|
+
}
|
|
213
|
+
|
|
202
214
|
// Flatten size object for Rust binary (expects width/height as top-level fields)
|
|
203
215
|
const rustOptions: any = { ...optionsToSend };
|
|
204
216
|
if (rustOptions.size) {
|
package/test.json
ADDED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|