sneakoscope 4.8.2 → 4.8.4

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 CHANGED
@@ -49,7 +49,7 @@ sks seo-geo-optimizer apply latest --mode seo --apply --json
49
49
  sks seo-geo-optimizer audit --mode geo --target package --offline --json
50
50
  ```
51
51
 
52
- > 📋 **Current release: `v4.8.2`** — full release history lives in [CHANGELOG.md](CHANGELOG.md). This README documents how Sneakoscope works today, not its version-by-version changes. Release readiness is tracked in [docs/release-readiness.md](docs/release-readiness.md).
52
+ > 📋 **Current release: `v4.8.4`** — full release history lives in [CHANGELOG.md](CHANGELOG.md). This README documents how Sneakoscope works today, not its version-by-version changes. Release readiness is tracked in [docs/release-readiness.md](docs/release-readiness.md).
53
53
 
54
54
  ## 🍥 Parallelism, UX, And Integrations
55
55
 
@@ -76,7 +76,7 @@ dependencies = [
76
76
 
77
77
  [[package]]
78
78
  name = "sks-core"
79
- version = "4.8.2"
79
+ version = "4.8.4"
80
80
  dependencies = [
81
81
  "serde_json",
82
82
  ]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "sks-core"
3
- version = "4.8.2"
3
+ version = "4.8.4"
4
4
  edition = "2021"
5
5
 
6
6
  [dependencies]
@@ -4,7 +4,7 @@ use std::io::{self, Read, Seek, SeekFrom};
4
4
  fn main() {
5
5
  let mut args = std::env::args().skip(1);
6
6
  match args.next().as_deref() {
7
- Some("--version") => println!("sks-rs 4.8.2"),
7
+ Some("--version") => println!("sks-rs 4.8.4"),
8
8
  Some("compact-info") => {
9
9
  let mut input = String::new();
10
10
  let _ = io::stdin().read_to_string(&mut input);
package/dist/bin/sks.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const FAST_PACKAGE_VERSION = '4.8.2';
2
+ const FAST_PACKAGE_VERSION = '4.8.4';
3
3
  const args = process.argv.slice(2);
4
4
  try {
5
5
  if (args[0] === '--agent' && args[1] === 'worker') {
@@ -8,6 +8,7 @@ const CONTROL_CENTER_PREFERRED_POSITION = 360;
8
8
  const MENU_ITEMS = [
9
9
  'Use codex-lb',
10
10
  'Use ChatGPT OAuth',
11
+ 'Set codex-lb Domain and Key',
11
12
  'Set OpenRouter Key and GLM Profiles',
12
13
  'Fast Check',
13
14
  'SKS Version Check',
@@ -294,7 +295,7 @@ func runInTerminal(_ command: String) {
294
295
  .replacingOccurrences(of: "\\\\", with: "\\\\\\\\")
295
296
  .replacingOccurrences(of: "\\\"", with: "\\\\\\\"")
296
297
  let script = "tell application \\"Terminal\\" to activate\\n" +
297
- "tell application \\"Terminal\\" to do script \\"\(escaped)\\""
298
+ "tell application \\"Terminal\\" to do script \\"\\(escaped)\\""
298
299
  runDetached("/usr/bin/osascript", ["-e", script])
299
300
  }
300
301
 
@@ -313,6 +314,7 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
313
314
  let menu = NSMenu()
314
315
  add(menu, "Use codex-lb", #selector(useCodexLb))
315
316
  add(menu, "Use ChatGPT OAuth", #selector(useChatGptOAuth))
317
+ add(menu, "Set codex-lb Domain and Key", #selector(setCodexLbDomainAndKey))
316
318
  menu.addItem(NSMenuItem.separator())
317
319
  add(menu, "Set OpenRouter Key and GLM Profiles", #selector(setOpenRouterKey))
318
320
  add(menu, "Fast Check", #selector(fastCheck))
@@ -360,6 +362,10 @@ final class AppDelegate: NSObject, NSApplicationDelegate {
360
362
  runSks(["codex-lb", "use-oauth"])
361
363
  }
362
364
 
365
+ @objc func setCodexLbDomainAndKey() {
366
+ runSks(["codex-lb", "setup"])
367
+ }
368
+
363
369
  @objc func setOpenRouterKey() {
364
370
  let command = "printf 'Paste OpenRouter key, then press Return: '; read -r key; printf '%s\\\\n' \\"$key\\" | \\(shellQuote(actionScript)) codex-app set-openrouter-key --api-key-stdin; \\(shellQuote(actionScript)) codex-app glm-profile install; echo; echo 'OpenRouter/GLM update finished. Restart Codex if the model picker was already open.'"
365
371
  runInTerminal(command)
@@ -431,8 +437,8 @@ function launchAgentSource(executablePath, installDir) {
431
437
  </array>
432
438
  <key>RunAtLoad</key>
433
439
  <true/>
434
- <key>KeepAlive</key>
435
- <true/>
440
+ <key>ProcessType</key>
441
+ <string>Interactive</string>
436
442
  <key>StandardOutPath</key>
437
443
  <string>${escapeXml(path.join(installDir, 'menubar.out.log'))}</string>
438
444
  <key>StandardErrorPath</key>
package/dist/core/fsx.js CHANGED
@@ -5,7 +5,7 @@ import os from 'node:os';
5
5
  import crypto from 'node:crypto';
6
6
  import { spawn } from 'node:child_process';
7
7
  import { fileURLToPath } from 'node:url';
8
- export const PACKAGE_VERSION = '4.8.2';
8
+ export const PACKAGE_VERSION = '4.8.4';
9
9
  export const DEFAULT_PROCESS_TAIL_BYTES = 256 * 1024;
10
10
  export const DEFAULT_PROCESS_TIMEOUT_MS = 30 * 60 * 1000;
11
11
  export function nowIso() {
@@ -1,2 +1,2 @@
1
- export const PACKAGE_VERSION = '4.8.2';
1
+ export const PACKAGE_VERSION = '4.8.4';
2
2
  //# sourceMappingURL=version.js.map
@@ -25,6 +25,7 @@ const launchAgentExists = result.launch_agent_path ? await exists(result.launch_
25
25
  const actionScriptExists = result.action_script_path ? await exists(result.action_script_path) : false;
26
26
  const generatedSourcePath = result.app_path ? path.join(path.dirname(result.app_path), 'SKSMenuBar.swift') : null;
27
27
  const generatedSource = generatedSourcePath ? await fs.readFile(generatedSourcePath, 'utf8').catch(() => '') : '';
28
+ const launchAgentSource = result.launch_agent_path ? await fs.readFile(result.launch_agent_path, 'utf8').catch(() => '') : '';
28
29
  const hasVisibleLabelSource = generatedSource.includes('NSStatusItem.variableLength')
29
30
  && generatedSource.includes('button.title = "SKS"')
30
31
  && generatedSource.includes('button.attributedTitle = NSAttributedString(string: "SKS"')
@@ -34,9 +35,17 @@ const hasVisibleLabelSource = generatedSource.includes('NSStatusItem.variableLen
34
35
  // once-dragged item does not jump back behind the notch on the next doctor --fix.
35
36
  const hasAutosaveNameSource = generatedSource.includes('statusItem.autosaveName = "com.sneakoscope.sks-menubar"');
36
37
  const hasExplicitVisibleSource = generatedSource.includes('statusItem.isVisible = true');
38
+ const terminalCommandLine = generatedSource.split(/\r?\n/)
39
+ .find((line) => line.includes('do script') && line.includes('escaped')) || '';
40
+ const hasTerminalCommandInterpolation = terminalCommandLine.includes(String.raw `\(escaped)`)
41
+ && !terminalCommandLine.includes(String.raw `\"(escaped)\"`);
42
+ const hasNoUnconditionalKeepAlive = !launchAgentSource.includes('<key>KeepAlive</key>');
43
+ const hasInteractiveProcessType = launchAgentSource.includes('<key>ProcessType</key>')
44
+ && launchAgentSource.includes('<string>Interactive</string>');
37
45
  const expectedMenuItems = [
38
46
  'Use codex-lb',
39
47
  'Use ChatGPT OAuth',
48
+ 'Set codex-lb Domain and Key',
40
49
  'Set OpenRouter Key and GLM Profiles',
41
50
  'Fast Check',
42
51
  'SKS Version Check',
@@ -71,6 +80,9 @@ const ok = process.platform === 'darwin'
71
80
  && hasVisibleLabelSource
72
81
  && hasAutosaveNameSource
73
82
  && hasExplicitVisibleSource
83
+ && hasTerminalCommandInterpolation
84
+ && hasNoUnconditionalKeepAlive
85
+ && hasInteractiveProcessType
74
86
  && launchSkippedForTempHome
75
87
  && launchSkippedForEnvHome
76
88
  && launchSkippedForTempInstall
@@ -87,9 +99,13 @@ const report = {
87
99
  launch_agent_exists: launchAgentExists,
88
100
  action_script_exists: actionScriptExists,
89
101
  generated_source_path: generatedSourcePath,
102
+ terminal_command_line: terminalCommandLine,
90
103
  has_visible_label_source: hasVisibleLabelSource,
91
104
  has_autosave_name_source: hasAutosaveNameSource,
92
105
  has_explicit_visible_source: hasExplicitVisibleSource,
106
+ has_terminal_command_interpolation: hasTerminalCommandInterpolation,
107
+ has_no_unconditional_keepalive: hasNoUnconditionalKeepAlive,
108
+ has_interactive_process_type: hasInteractiveProcessType,
93
109
  launch_skipped_for_temp_home: launchSkippedForTempHome,
94
110
  launch_skipped_for_env_home: launchSkippedForEnvHome,
95
111
  launch_skipped_for_temp_install: launchSkippedForTempInstall,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sneakoscope",
3
3
  "displayName": "ㅅㅋㅅ",
4
- "version": "4.8.2",
4
+ "version": "4.8.4",
5
5
  "description": "Sneakoscope Codex: fast proof-first Codex trust layer with image-based Voxel TriWiki.",
6
6
  "type": "module",
7
7
  "homepage": "https://github.com/mandarange/Sneakoscope-Codex#readme",