@bobfrankston/msger 0.1.49 → 0.1.51

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.
@@ -1 +1 @@
1
- {"version":3,"file":"clihandler.d.ts","sourceRoot":"","sources":["clihandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA4DhD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,OAAO,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CA+HpH;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
1
+ {"version":3,"file":"clihandler.d.ts","sourceRoot":"","sources":["clihandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAgEhD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,OAAO,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAuIpH;AAED,wBAAgB,QAAQ,IAAI,IAAI,CAE/B;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
package/clihandler.js CHANGED
@@ -18,8 +18,10 @@ Options:
18
18
  -input Include an input field
19
19
  -default <text> Default value for input field
20
20
  -size <width,height> Set window size (e.g., -size 800,600)
21
+ -zoom <percent> Set zoom level as percentage (e.g., -zoom 150 for 150%)
21
22
  -timeout <seconds> Auto-close after specified seconds
22
23
  -detach Leave window open after app exits (parent process returns immediately)
24
+ -ontop Keep window always on top of other windows
23
25
  -v, -version, --version Show version number
24
26
  -help, -?, --help Show this help message
25
27
 
@@ -112,6 +114,10 @@ export function parseCliArgs(args) {
112
114
  cli.detach = true;
113
115
  i++;
114
116
  }
117
+ else if (arg === '-ontop' || arg === '--ontop' || arg === '-alwaysontop' || arg === '--alwaysontop') {
118
+ cli.alwaysOnTop = true;
119
+ i++;
120
+ }
115
121
  else if (arg === '-size' || arg === '--size') {
116
122
  const size = args[++i];
117
123
  const [w, h] = size.split(',').map(s => parseInt(s.trim(), 10));
@@ -121,6 +127,10 @@ export function parseCliArgs(args) {
121
127
  cli.height = h;
122
128
  i++;
123
129
  }
130
+ else if (arg === '-zoom' || arg === '--zoom') {
131
+ cli.zoomPercent = parseFloat(args[++i]);
132
+ i++;
133
+ }
124
134
  else if (!arg.startsWith('-')) {
125
135
  // Non-option argument - part of the message
126
136
  messageWords.push(arg);
@@ -178,7 +188,9 @@ export function parseCliArgs(args) {
178
188
  height: cli.height || defaultHeight,
179
189
  },
180
190
  timeout: cli.timeout,
181
- detach: cli.detach
191
+ detach: cli.detach,
192
+ alwaysOnTop: cli.alwaysOnTop,
193
+ zoomPercent: cli.zoomPercent
182
194
  };
183
195
  return { options, showHelp: cli.help || false, showVersion: cli.version || false };
184
196
  }
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
@@ -13,6 +13,8 @@ interface CliOptions {
13
13
  defaultValue?: string;
14
14
  timeout?: number;
15
15
  detach?: boolean;
16
+ alwaysOnTop?: boolean;
17
+ zoomPercent?: number;
16
18
  help?: boolean;
17
19
  version?: boolean;
18
20
  }
@@ -36,8 +38,10 @@ Options:
36
38
  -input Include an input field
37
39
  -default <text> Default value for input field
38
40
  -size <width,height> Set window size (e.g., -size 800,600)
41
+ -zoom <percent> Set zoom level as percentage (e.g., -zoom 150 for 150%)
39
42
  -timeout <seconds> Auto-close after specified seconds
40
43
  -detach Leave window open after app exits (parent process returns immediately)
44
+ -ontop Keep window always on top of other windows
41
45
  -v, -version, --version Show version number
42
46
  -help, -?, --help Show this help message
43
47
 
@@ -121,12 +125,18 @@ export function parseCliArgs(args: string[]): { options: MessageBoxOptions; show
121
125
  } else if (arg === '-detach' || arg === '--detach') {
122
126
  cli.detach = true;
123
127
  i++;
128
+ } else if (arg === '-ontop' || arg === '--ontop' || arg === '-alwaysontop' || arg === '--alwaysontop') {
129
+ cli.alwaysOnTop = true;
130
+ i++;
124
131
  } else if (arg === '-size' || arg === '--size') {
125
132
  const size = args[++i];
126
133
  const [w, h] = size.split(',').map(s => parseInt(s.trim(), 10));
127
134
  if (w) cli.width = w;
128
135
  if (h) cli.height = h;
129
136
  i++;
137
+ } else if (arg === '-zoom' || arg === '--zoom') {
138
+ cli.zoomPercent = parseFloat(args[++i]);
139
+ i++;
130
140
  } else if (!arg.startsWith('-')) {
131
141
  // Non-option argument - part of the message
132
142
  messageWords.push(arg);
@@ -184,7 +194,9 @@ export function parseCliArgs(args: string[]): { options: MessageBoxOptions; show
184
194
  height: cli.height || defaultHeight,
185
195
  },
186
196
  timeout: cli.timeout,
187
- detach: cli.detach
197
+ detach: cli.detach,
198
+ alwaysOnTop: cli.alwaysOnTop,
199
+ zoomPercent: cli.zoomPercent
188
200
  };
189
201
 
190
202
  return { options, showHelp: cli.help || false, showVersion: cli.version || false };
@@ -0,0 +1,131 @@
1
+ # ARM64 Cross-Compilation Setup
2
+
3
+ This guide explains how to set up ARM64 cross-compilation for building `msger` binaries that run on Raspberry Pi and other ARM64 Linux systems.
4
+
5
+ ## Prerequisites
6
+
7
+ - WSL2 or Linux development environment
8
+ - Rust toolchain installed (`rustup`)
9
+ - Node.js and npm
10
+
11
+ ## Quick Setup
12
+
13
+ Run this command to automatically install the ARM64 cross-compilation toolchain:
14
+
15
+ ```bash
16
+ npm run setup:arm64
17
+ ```
18
+
19
+ This will:
20
+ - Install GCC ARM64 cross-compiler
21
+ - Install required development libraries
22
+ - Add Rust ARM64 target (`aarch64-unknown-linux-gnu`)
23
+
24
+ ## Manual Setup
25
+
26
+ If you prefer to install manually or the script doesn't work for your distribution:
27
+
28
+ ### Ubuntu/Debian
29
+
30
+ ```bash
31
+ sudo apt update
32
+ sudo apt install -y \
33
+ gcc-aarch64-linux-gnu \
34
+ g++-aarch64-linux-gnu \
35
+ libc6-dev-arm64-cross \
36
+ libwebkit2gtk-4.1-dev \
37
+ libgtk-3-dev \
38
+ pkg-config
39
+
40
+ rustup target add aarch64-unknown-linux-gnu
41
+ ```
42
+
43
+ ### Fedora/RHEL
44
+
45
+ ```bash
46
+ sudo dnf install -y \
47
+ gcc-aarch64-linux-gnu \
48
+ gcc-c++-aarch64-linux-gnu \
49
+ webkit2gtk4.1-devel \
50
+ gtk3-devel \
51
+ pkg-config
52
+
53
+ rustup target add aarch64-unknown-linux-gnu
54
+ ```
55
+
56
+ ### Arch Linux
57
+
58
+ ```bash
59
+ sudo pacman -S --needed \
60
+ aarch64-linux-gnu-gcc \
61
+ webkit2gtk \
62
+ gtk3 \
63
+ pkg-config
64
+
65
+ rustup target add aarch64-unknown-linux-gnu
66
+ ```
67
+
68
+ ## Building ARM64 Binaries
69
+
70
+ Once the toolchain is set up, build the ARM64 binary:
71
+
72
+ ```bash
73
+ npm run build:native:arm64
74
+ ```
75
+
76
+ This creates `msgernative-linux-arm64` which can be deployed to Raspberry Pi or other ARM64 Linux systems.
77
+
78
+ ## Testing on ARM64
79
+
80
+ To test the binary on a Raspberry Pi:
81
+
82
+ 1. Copy the binary to your Pi:
83
+ ```bash
84
+ scp msgernative-linux-arm64 pi@raspberrypi.local:~/
85
+ ```
86
+
87
+ 2. SSH to the Pi and make it executable:
88
+ ```bash
89
+ ssh pi@raspberrypi.local
90
+ chmod +x msgernative-linux-arm64
91
+ ```
92
+
93
+ 3. Install required libraries on the Pi:
94
+ ```bash
95
+ sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0
96
+ ```
97
+
98
+ 4. Test it:
99
+ ```bash
100
+ echo '{"message":"Hello from ARM64!"}' | ./msgernative-linux-arm64
101
+ ```
102
+
103
+ ## Troubleshooting
104
+
105
+ ### "linker 'aarch64-linux-gnu-gcc' not found"
106
+
107
+ The ARM64 cross-compiler is not installed. Run:
108
+ ```bash
109
+ sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
110
+ ```
111
+
112
+ ### "error: failed to run custom build command for `webkit2gtk-sys`"
113
+
114
+ WebKit development libraries are missing:
115
+ ```bash
116
+ sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev pkg-config
117
+ ```
118
+
119
+ ### Binary works locally but fails on Raspberry Pi
120
+
121
+ The Pi may be missing runtime libraries:
122
+ ```bash
123
+ # On the Raspberry Pi:
124
+ sudo apt update
125
+ sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0
126
+ ```
127
+
128
+ Check what's missing with:
129
+ ```bash
130
+ ldd ./msgernative-linux-arm64
131
+ ```
@@ -0,0 +1,63 @@
1
+ #!/bin/bash
2
+ # Setup ARM64 cross-compilation toolchain for building msger on WSL/Linux
3
+
4
+ echo "🔧 Setting up ARM64 cross-compilation toolchain..."
5
+
6
+ # Detect distro
7
+ if [ -f /etc/os-release ]; then
8
+ . /etc/os-release
9
+ DISTRO=$ID
10
+ else
11
+ echo "❌ Cannot detect Linux distribution"
12
+ exit 1
13
+ fi
14
+
15
+ echo "📍 Detected distribution: $DISTRO"
16
+
17
+ # Install cross-compilation tools based on distro
18
+ case "$DISTRO" in
19
+ ubuntu|debian)
20
+ echo "📦 Installing packages for Debian/Ubuntu..."
21
+ sudo apt update
22
+ sudo apt install -y \
23
+ gcc-aarch64-linux-gnu \
24
+ g++-aarch64-linux-gnu \
25
+ libc6-dev-arm64-cross \
26
+ libwebkit2gtk-4.1-dev \
27
+ libgtk-3-dev \
28
+ pkg-config
29
+ ;;
30
+ fedora|rhel|centos)
31
+ echo "📦 Installing packages for Fedora/RHEL..."
32
+ sudo dnf install -y \
33
+ gcc-aarch64-linux-gnu \
34
+ gcc-c++-aarch64-linux-gnu \
35
+ webkit2gtk4.1-devel \
36
+ gtk3-devel \
37
+ pkg-config
38
+ ;;
39
+ arch|manjaro)
40
+ echo "📦 Installing packages for Arch..."
41
+ sudo pacman -S --needed \
42
+ aarch64-linux-gnu-gcc \
43
+ webkit2gtk \
44
+ gtk3 \
45
+ pkg-config
46
+ ;;
47
+ *)
48
+ echo "❌ Unsupported distribution: $DISTRO"
49
+ echo " Please install ARM64 cross-compilation tools manually"
50
+ exit 1
51
+ ;;
52
+ esac
53
+
54
+ # Add Rust ARM64 target
55
+ echo "🦀 Adding Rust ARM64 target..."
56
+ rustup target add aarch64-unknown-linux-gnu
57
+
58
+ echo ""
59
+ echo "✅ ARM64 toolchain setup complete!"
60
+ echo ""
61
+ echo "You can now build ARM64 binaries with:"
62
+ echo " npm run build:native:arm64"
63
+ echo ""
@@ -30,6 +30,12 @@ struct MessageBoxOptions {
30
30
  allow_input: bool,
31
31
  #[serde(default)]
32
32
  timeout: Option<u64>,
33
+ #[serde(default)]
34
+ auto_size: bool,
35
+ #[serde(default)]
36
+ always_on_top: bool,
37
+ #[serde(default)]
38
+ zoom_percent: Option<f64>,
33
39
  }
34
40
 
35
41
  #[derive(Serialize, Deserialize, Debug)]
@@ -187,6 +193,51 @@ fn generate_html(options: &MessageBoxOptions) -> String {
187
193
  window.ipc.postMessage(JSON.stringify(result));
188
194
  }}
189
195
 
196
+ // Auto-size window to content
197
+ const autoSize = {};
198
+ if (autoSize) {{
199
+ window.addEventListener('DOMContentLoaded', function() {{
200
+ // Wait a tick for content to render
201
+ setTimeout(() => {{
202
+ const content = document.getElementById('content');
203
+ const buttons = document.getElementById('buttons');
204
+ const inputField = document.getElementById('inputField');
205
+
206
+ // Calculate required height
207
+ let contentHeight = content.scrollHeight;
208
+ let buttonsHeight = buttons.offsetHeight;
209
+ let inputHeight = inputField ? inputField.offsetHeight + 15 : 0;
210
+ let padding = 40; // body padding
211
+
212
+ let totalHeight = contentHeight + buttonsHeight + inputHeight + padding;
213
+
214
+ // Calculate required width (estimate based on content)
215
+ let contentWidth = Math.max(
216
+ content.scrollWidth,
217
+ buttons.offsetWidth
218
+ );
219
+ let totalWidth = Math.min(Math.max(contentWidth + 40, 400), 1200);
220
+
221
+ // Constrain to reasonable bounds
222
+ totalHeight = Math.min(Math.max(totalHeight, 150), 800);
223
+
224
+ // Send resize message
225
+ window.ipc.postMessage(JSON.stringify({{
226
+ _resize: true,
227
+ width: totalWidth,
228
+ height: totalHeight
229
+ }}));
230
+ }}, 50);
231
+ }});
232
+ }}
233
+
234
+ // Set initial zoom level if specified
235
+ const initialZoom = {};
236
+ if (initialZoom) {{
237
+ zoomLevel = initialZoom / 100.0;
238
+ document.body.style.zoom = zoomLevel;
239
+ }}
240
+
190
241
  // Zoom support with mouse wheel
191
242
  let zoomLevel = 1.0;
192
243
  document.addEventListener('wheel', function(e) {{
@@ -237,6 +288,8 @@ fn generate_html(options: &MessageBoxOptions) -> String {
237
288
  html_content,
238
289
  input_html,
239
290
  buttons_html,
291
+ if options.auto_size { "true" } else { "false" },
292
+ options.zoom_percent.unwrap_or(100.0),
240
293
  options.buttons.first().unwrap_or(&"Cancel".to_string())
241
294
  )
242
295
  }
@@ -256,9 +309,18 @@ fn main() {
256
309
  .read_to_string(&mut input)
257
310
  .expect("Failed to read stdin");
258
311
 
259
- let options: MessageBoxOptions =
312
+ let mut options: MessageBoxOptions =
260
313
  serde_json::from_str(&input).expect("Failed to parse JSON input");
261
314
 
315
+ // Adjust default size for URLs (more browser-like)
316
+ if options.url.is_some() {
317
+ // If width/height are still at defaults (600x400), upgrade to browser-like size
318
+ if options.width == 600 && options.height == 400 {
319
+ options.width = 1024;
320
+ options.height = 768;
321
+ }
322
+ }
323
+
262
324
  // Create event loop and window
263
325
  let event_loop = EventLoop::new();
264
326
  let window = WindowBuilder::new()
@@ -268,6 +330,7 @@ fn main() {
268
330
  options.height as f64,
269
331
  ))
270
332
  .with_resizable(true)
333
+ .with_always_on_top(options.always_on_top)
271
334
  .build(&event_loop)
272
335
  .expect("Failed to create window");
273
336
 
@@ -292,6 +355,15 @@ fn main() {
292
355
  .with_url(url)
293
356
  .with_devtools(true)
294
357
  .with_ipc_handler(move |msg| {
358
+ // Check for resize message first
359
+ if let Ok(resize_msg) = serde_json::from_str::<serde_json::Value>(msg.body()) {
360
+ if resize_msg.get("_resize").and_then(|v| v.as_bool()).unwrap_or(false) {
361
+ // This is a resize message - we'll handle it in the event loop
362
+ // For now, just ignore it (window resize from IPC is complex in wry/tao)
363
+ return;
364
+ }
365
+ }
366
+
295
367
  // Parse the result from JavaScript (msg is now a Request<String>)
296
368
  if let Ok(res) = serde_json::from_str::<MessageBoxResult>(msg.body()) {
297
369
  let mut result_lock = result_clone.lock().unwrap();
@@ -306,6 +378,15 @@ fn main() {
306
378
  .with_html(&html)
307
379
  .with_devtools(true)
308
380
  .with_ipc_handler(move |msg| {
381
+ // Check for resize message first
382
+ if let Ok(resize_msg) = serde_json::from_str::<serde_json::Value>(msg.body()) {
383
+ if resize_msg.get("_resize").and_then(|v| v.as_bool()).unwrap_or(false) {
384
+ // This is a resize message - we'll handle it in the event loop
385
+ // For now, just ignore it (window resize from IPC is complex in wry/tao)
386
+ return;
387
+ }
388
+ }
389
+
309
390
  // Parse the result from JavaScript (msg is now a Request<String>)
310
391
  if let Ok(res) = serde_json::from_str::<MessageBoxResult>(msg.body()) {
311
392
  let mut result_lock = result_clone.lock().unwrap();
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bobfrankston/msger",
3
- "version": "0.1.49",
3
+ "version": "0.1.51",
4
4
  "description": "Fast, lightweight, cross-platform message box - Rust-powered alternative to msgview",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -17,9 +17,11 @@
17
17
  "build": "npm run build:ts && npm run build:native",
18
18
  "build:native": "cd msger-native && npm run build",
19
19
  "build:native:wsl": "cd msger-native && npm run build:wsl",
20
+ "build:native:arm64": "cd msger-native && npm run build:arm64",
20
21
  "build:native:pi": "cd msger-native && npm run build:pi",
21
22
  "build:native:all": "npm run build:native && npm run build:native:wsl",
22
23
  "build:native:allpiignored": "npm run build:native:pi",
24
+ "setup:arm64": "wsl bash msger-native/setup-arm64-toolchain.sh",
23
25
  "build:ts": "tsc",
24
26
  "watch": "tsc -w",
25
27
  "clean": "rm -rf *.js *.d.ts *.js.map bin && cd msger-native && cargo clean",
@@ -30,7 +32,7 @@
30
32
  "preversion": "npm run build:ts && npm run build:native:all && git add -A",
31
33
  "postversion": "git push && git push --tags",
32
34
  "release": "npm run prerelease:local && npm version patch && npm publish",
33
- "installer": "npm run release && npm install -g @bobfrankston/msger && wsl npm install -g -force @bobfrankston/msger"
35
+ "installer": "npm run release && npm cache clean --force && npm install -g @bobfrankston/msger@latest && wsl npm cache clean --force && wsl npm install -g @bobfrankston/msger@latest"
34
36
  },
35
37
  "keywords": [
36
38
  "message-box",
package/postinstall.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import fs from 'fs';
3
3
  import path from 'path';
4
4
  import { fileURLToPath } from 'url';
5
+ import { execSync } from 'child_process';
5
6
 
6
7
  const __filename = fileURLToPath(import.meta.url);
7
8
  const __dirname = path.dirname(__filename);
@@ -21,7 +22,45 @@ if (!isWindows) {
21
22
  console.warn(`⚠️ Could not set execute permission on ${binaryPath}: ${error.message}`);
22
23
  console.warn(` You may need to run: sudo chmod +x ${binaryPath}`);
23
24
  }
25
+
26
+ // Check for required system libraries
27
+ try {
28
+ const lddOutput = execSync(`ldd "${binaryPath}" 2>&1`, { encoding: 'utf8' });
29
+ if (lddOutput.includes('not found')) {
30
+ console.warn('\n⚠️ Missing system dependencies detected!');
31
+ console.warn(' Install required libraries with:\n');
32
+
33
+ // Detect distro and provide appropriate command
34
+ let distro = 'unknown';
35
+ try {
36
+ if (fs.existsSync('/etc/os-release')) {
37
+ const osRelease = fs.readFileSync('/etc/os-release', 'utf8');
38
+ if (osRelease.includes('ubuntu') || osRelease.includes('debian')) {
39
+ distro = 'debian';
40
+ } else if (osRelease.includes('fedora') || osRelease.includes('rhel') || osRelease.includes('centos')) {
41
+ distro = 'fedora';
42
+ } else if (osRelease.includes('arch')) {
43
+ distro = 'arch';
44
+ }
45
+ }
46
+ } catch (e) { /* ignore */ }
47
+
48
+ if (distro === 'debian') {
49
+ console.warn(' sudo apt update');
50
+ console.warn(' sudo apt install libwebkit2gtk-4.1-0 libgtk-3-0\n');
51
+ } else if (distro === 'fedora') {
52
+ console.warn(' sudo dnf install webkit2gtk4.1 gtk3\n');
53
+ } else if (distro === 'arch') {
54
+ console.warn(' sudo pacman -S webkit2gtk gtk3\n');
55
+ } else {
56
+ console.warn(' Install webkit2gtk and gtk3 for your distribution\n');
57
+ }
58
+ }
59
+ } catch (error) {
60
+ // ldd command failed, might not be installed
61
+ }
24
62
  } else {
25
63
  console.warn(`⚠️ Binary not found at ${binaryPath}`);
64
+ console.warn(` The msger package may not support your platform (${process.platform} ${arch})`);
26
65
  }
27
66
  }
package/shower.d.ts CHANGED
@@ -7,6 +7,9 @@ export interface MessageBoxOptions {
7
7
  width: number; /** Window width */
8
8
  height: number; /** Window height */
9
9
  };
10
+ zoomPercent?: number; /** Initial zoom level as percentage (100=100%, 150=150%, 50=50%, etc.) */
11
+ autoSize?: boolean; /** Automatically resize window to fit content (default: false) */
12
+ alwaysOnTop?: boolean; /** Keep window on top of other windows (default: false) */
10
13
  buttons?: string[]; /** Array of button labels to display (default: ['OK']) */
11
14
  defaultValue?: string; /** Default value for input field when allowInput is true */
12
15
  allowInput?: boolean; /** Enable an input field in the message box (default: false) */
package/shower.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"shower.d.ts","sourceRoot":"","sources":["shower.ts"],"names":[],"mappings":"AAMA,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;IAEpF,IAAI,CAAC,EAAE;QACH,KAAK,EAAE,MAAM,CAAC,CAAQ,mBAAmB;QACzC,MAAM,EAAE,MAAM,CAAC,CAAO,oBAAoB;KAC7C,CAAC;IAOF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAO,0DAA0D;IACpF,YAAY,CAAC,EAAE,MAAM,CAAC,CAAI,4DAA4D;IACtF,UAAU,CAAC,EAAE,OAAO,CAAC,CAAK,gEAAgE;IAE1F,OAAO,CAAC,EAAE,MAAM,CAAC,CAAS,yDAAyD;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC,CAAS,0DAA0D;CACvF;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;CACrB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4G1F"}
1
+ {"version":3,"file":"shower.d.ts","sourceRoot":"","sources":["shower.ts"],"names":[],"mappings":"AAMA,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;IAEpF,IAAI,CAAC,EAAE;QACH,KAAK,EAAE,MAAM,CAAC,CAAQ,mBAAmB;QACzC,MAAM,EAAE,MAAM,CAAC,CAAO,oBAAoB;KAC7C,CAAC;IAMF,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,UAAU,CAAC,EAAE,OAAO,CAAC,CAAK,gEAAgE;IAE1F,OAAO,CAAC,EAAE,MAAM,CAAC,CAAS,yDAAyD;IACnF,MAAM,CAAC,EAAE,OAAO,CAAC,CAAS,0DAA0D;CACvF;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;CACrB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkH1F"}
package/shower.js CHANGED
@@ -91,7 +91,12 @@ export async function showMessageBox(options) {
91
91
  });
92
92
  // Send options to stdin
93
93
  try {
94
- child.stdin.write(JSON.stringify(options));
94
+ // If autoSize is not explicitly set, enable it when no size is specified
95
+ const optionsToSend = { ...options };
96
+ if (optionsToSend.autoSize === undefined && !optionsToSend.size) {
97
+ optionsToSend.autoSize = true;
98
+ }
99
+ child.stdin.write(JSON.stringify(optionsToSend));
95
100
  child.stdin.end();
96
101
  // If detached, resolve immediately after sending options
97
102
  if (options.detach) {
package/shower.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"shower.js","sourceRoot":"","sources":["shower.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shower.js","sourceRoot":"","sources":["shower.ts"],"names":[],"mappings":"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"}
package/shower.ts CHANGED
@@ -19,7 +19,9 @@ export interface MessageBoxOptions {
19
19
  // y: number; /** Window Y position in pixels */
20
20
  // screen?: number; /** Optional screen index (0-based, Windows only) */
21
21
  // };
22
- // zoomPercent?: number; /** Initial zoom level as percentage (100=100%, 150=150%, 50=50%, etc.) */
22
+ zoomPercent?: number; /** Initial zoom level as percentage (100=100%, 150=150%, 50=50%, etc.) */
23
+ autoSize?: boolean; /** Automatically resize window to fit content (default: false) */
24
+ alwaysOnTop?: boolean; /** Keep window on top of other windows (default: false) */
23
25
  buttons?: string[]; /** Array of button labels to display (default: ['OK']) */
24
26
  defaultValue?: string; /** Default value for input field when allowInput is true */
25
27
  allowInput?: boolean; /** Enable an input field in the message box (default: false) */
@@ -139,7 +141,13 @@ export async function showMessageBox(options: MessageBoxOptions): Promise<Messag
139
141
 
140
142
  // Send options to stdin
141
143
  try {
142
- child.stdin.write(JSON.stringify(options));
144
+ // If autoSize is not explicitly set, enable it when no size is specified
145
+ const optionsToSend = { ...options };
146
+ if (optionsToSend.autoSize === undefined && !optionsToSend.size) {
147
+ optionsToSend.autoSize = true;
148
+ }
149
+
150
+ child.stdin.write(JSON.stringify(optionsToSend));
143
151
  child.stdin.end();
144
152
 
145
153
  // If detached, resolve immediately after sending options