claude-code-session-manager 0.3.0 → 0.3.2
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/dist/assets/{cssMode-CmcpKapf.js → cssMode-DKcHzqs6.js} +1 -1
- package/dist/assets/{editor.main-QdhRqSRj.js → editor.main-CKATA8Es.js} +3 -3
- package/dist/assets/{freemarker2-MB42wuNH.js → freemarker2-DW6HspbF.js} +1 -1
- package/dist/assets/{handlebars-BNqpiTGG.js → handlebars-DrHBBsXD.js} +1 -1
- package/dist/assets/{html-Uip3YcGr.js → html-sZnU1oHD.js} +1 -1
- package/dist/assets/{htmlMode-DYyTepoa.js → htmlMode-BqHVHLoz.js} +1 -1
- package/dist/assets/index-FnbJBSnE.js +2971 -0
- package/dist/assets/{javascript-DrEGK9I4.js → javascript-CoPK13FX.js} +1 -1
- package/dist/assets/{jsonMode-CSTtGACB.js → jsonMode-DLl_bJXa.js} +1 -1
- package/dist/assets/{liquid-RBrA4NW9.js → liquid-C-gTpqe2.js} +1 -1
- package/dist/assets/{lspLanguageFeatures-BduwC_yH.js → lspLanguageFeatures-BVR1hoTD.js} +1 -1
- package/dist/assets/{mdx-DkPoTolY.js → mdx-BDBDopEV.js} +1 -1
- package/dist/assets/{python-CVO-ynpa.js → python-BzWMTDid.js} +1 -1
- package/dist/assets/{razor-M76CcRjZ.js → razor-CZXXc8Yy.js} +1 -1
- package/dist/assets/{tsMode-D8OXqf9n.js → tsMode-DBVY2EZ_.js} +1 -1
- package/dist/assets/turnDetectorWorker-ChWji_-D.js +1 -0
- package/dist/assets/{typescript-CBXprweT.js → typescript-Ca_aDCJd.js} +1 -1
- package/dist/assets/{whisperWorker-HvcbMQn6.js → whisperWorker-ivwFFLMj.js} +1 -1
- package/dist/assets/{xml-EEhcqUb-.js → xml-C7eMpTwW.js} +1 -1
- package/dist/assets/{yaml-B8BKq6X4.js → yaml-BOPrlUSY.js} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/src/main/index.cjs +8 -0
- package/src/main/lib/voice-hotkey-log.cjs +21 -12
- package/src/main/voiceHotkey.cjs +4 -1
- package/dist/assets/index-DIBKIDmx.js +0 -2971
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e}from"./editor.main-
|
|
1
|
+
import{l as e}from"./editor.main-CKATA8Es.js";import"./index-FnbJBSnE.js";const o={comments:{blockComment:["<!--","-->"]},brackets:[["<",">"]],autoClosingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],surroundingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],onEnterRules:[{beforeText:new RegExp("<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:e.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:e.IndentAction.Indent}}]},i={defaultToken:"",tokenPostfix:".xml",ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,""],{include:"@whitespace"},[/(<)(@qualifiedName)/,[{token:"delimiter"},{token:"tag",next:"@tag"}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:"delimiter"},{token:"tag"},"",{token:"delimiter"}]],[/(<\?)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/(<\!)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/<\!\[CDATA\[/,{token:"delimiter.cdata",next:"@cdata"}],[/&\w+;/,"string.escape"]],cdata:[[/[^\]]+/,""],[/\]\]>/,{token:"delimiter.cdata",next:"@pop"}],[/\]/,""]],tag:[[/[ \t\r\n]+/,""],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,["attribute.name","","attribute.value"]],[/@qualifiedName/,"attribute.name"],[/\?>/,{token:"delimiter",next:"@pop"}],[/(\/)(>)/,[{token:"tag"},{token:"delimiter",next:"@pop"}]],[/>/,{token:"delimiter",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/<!--/,{token:"comment",next:"@comment"}]],comment:[[/[^<\-]+/,"comment.content"],[/-->/,{token:"comment",next:"@pop"}],[/<!--/,"comment.content.invalid"],[/[<\-]/,"comment.content"]]}};export{o as conf,i as language};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e}from"./editor.main-
|
|
1
|
+
import{l as e}from"./editor.main-CKATA8Es.js";import"./index-FnbJBSnE.js";const o={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:e.IndentAction.Indent}}]},r={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}};export{o as conf,r as language};
|
package/dist/index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>Claude Session Manager</title>
|
|
7
|
-
<script type="module" crossorigin src="./assets/index-
|
|
7
|
+
<script type="module" crossorigin src="./assets/index-FnbJBSnE.js"></script>
|
|
8
8
|
<link rel="stylesheet" crossorigin href="./assets/index-BzbwWnyF.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body class="bg-bg text-fg font-mono antialiased">
|
package/package.json
CHANGED
package/src/main/index.cjs
CHANGED
|
@@ -196,6 +196,14 @@ voiceWizard.registerWizardHandlers();
|
|
|
196
196
|
|
|
197
197
|
// --- App lifecycle ---
|
|
198
198
|
|
|
199
|
+
// E2E under xvfb-run has no working GPU; the GPU process exits ~15 seconds
|
|
200
|
+
// in and Chromium responds with a renderer reload that races our test
|
|
201
|
+
// fixtures. Disabling hardware accel sidesteps the entire crash chain.
|
|
202
|
+
// Must run before app.whenReady() — Electron rejects late changes.
|
|
203
|
+
if (process.env.SM_E2E === '1') {
|
|
204
|
+
try { app.disableHardwareAcceleration(); } catch { /* */ }
|
|
205
|
+
}
|
|
206
|
+
|
|
199
207
|
// Single-instance lock (PRD F1 v2 §requestSingleInstanceLock).
|
|
200
208
|
// In dev mode we skip the lock so two-dev-instance workflows still work.
|
|
201
209
|
// E2E tests also skip so playwright.electron.launch can run multiple specs
|
|
@@ -40,21 +40,30 @@ function sanitize(meta) {
|
|
|
40
40
|
|
|
41
41
|
function voiceHotkeyLog(level, event, meta) {
|
|
42
42
|
let safeMeta = meta;
|
|
43
|
+
let leakedKey = null;
|
|
43
44
|
if (meta && typeof meta === 'object' && !Array.isArray(meta)) {
|
|
44
|
-
const
|
|
45
|
-
safeMeta = sanitized;
|
|
46
|
-
|
|
47
|
-
// instead of silently passing. `app.isPackaged` is the proxy for prod.
|
|
48
|
-
if (leakedKey !== null) {
|
|
49
|
-
const isDev = (() => {
|
|
50
|
-
try { return !app.isPackaged; } catch { return true; }
|
|
51
|
-
})();
|
|
52
|
-
if (isDev) {
|
|
53
|
-
throw new Error(`voice-hotkey log leaked sensitive key: ${leakedKey}`);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
45
|
+
const result = sanitize(meta);
|
|
46
|
+
safeMeta = result.sanitized;
|
|
47
|
+
leakedKey = result.leakedKey;
|
|
56
48
|
}
|
|
49
|
+
// Write the (sanitized) line FIRST so the leak event itself is recorded
|
|
50
|
+
// — otherwise a dev-mode throw destroys the trail. Then throw in dev so
|
|
51
|
+
// tests fail loudly. Critique fix: was previously throw-then-log.
|
|
57
52
|
logs.writeLine({ scope: 'voice-hotkey', level, message: event, meta: safeMeta });
|
|
53
|
+
if (leakedKey !== null) {
|
|
54
|
+
logs.writeLine({
|
|
55
|
+
scope: 'voice-hotkey',
|
|
56
|
+
level: 'error',
|
|
57
|
+
message: 'sanitizer.leak',
|
|
58
|
+
meta: { leakedKey, event },
|
|
59
|
+
});
|
|
60
|
+
const isDev = (() => {
|
|
61
|
+
try { return !app.isPackaged; } catch { return true; }
|
|
62
|
+
})();
|
|
63
|
+
if (isDev) {
|
|
64
|
+
throw new Error(`voice-hotkey log leaked sensitive key: ${leakedKey}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
58
67
|
}
|
|
59
68
|
|
|
60
69
|
module.exports = { voiceHotkeyLog, SENSITIVE_KEY_RE };
|
package/src/main/voiceHotkey.cjs
CHANGED
|
@@ -57,7 +57,10 @@ function parseAccelerator(accel) {
|
|
|
57
57
|
} else if (p === 'shift') {
|
|
58
58
|
mods.shift = true;
|
|
59
59
|
} else {
|
|
60
|
-
key
|
|
60
|
+
// Normalize the key part so a hand-edited voice.json with `cmd+option+v`
|
|
61
|
+
// still parses despite the schema regex requiring `[A-Z]`. Uppercase
|
|
62
|
+
// single letters; leave F-keys / Space / digits as the user wrote them.
|
|
63
|
+
key = raw.length === 1 ? raw.toUpperCase() : raw;
|
|
61
64
|
}
|
|
62
65
|
}
|
|
63
66
|
if (!key) return null;
|