@phenx-inc/ctlsurf 0.5.2 → 0.7.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.
Files changed (33) hide show
  1. package/electron-vite.config.ts +5 -0
  2. package/out/headless/index.mjs +2 -1
  3. package/out/headless/index.mjs.map +2 -2
  4. package/out/main/index.js +3 -0
  5. package/out/renderer/assets/{cssMode-D9-xaWSI.js → cssMode-eTXVdAkZ.js} +3 -3
  6. package/out/renderer/assets/{freemarker2-CoRAVxnv.js → freemarker2-B5BKaiK4.js} +1 -1
  7. package/out/renderer/assets/{handlebars-B0p9Wgkw.js → handlebars-BIdLd2wU.js} +1 -1
  8. package/out/renderer/assets/{html-D_XFJJtO.js → html-BXL4cnLS.js} +1 -1
  9. package/out/renderer/assets/{htmlMode-naWw6PWr.js → htmlMode-46N3XG2c.js} +3 -3
  10. package/out/renderer/assets/{index-ezC-iarf.css → index-Cf-RsxoC.css} +163 -0
  11. package/out/renderer/assets/{index-DBt_rov1.js → index-dRvutfbl.js} +572 -107
  12. package/out/renderer/assets/{javascript-DDLsFUr-.js → javascript-n_iZZzDX.js} +2 -2
  13. package/out/renderer/assets/{jsonMode-Ixhcm5I6.js → jsonMode-DXDczSNu.js} +3 -3
  14. package/out/renderer/assets/{liquid-BHgSYEHk.js → liquid-B1QweUh7.js} +1 -1
  15. package/out/renderer/assets/{lspLanguageFeatures-ClbEdD0U.js → lspLanguageFeatures-DqzMqkRk.js} +1 -1
  16. package/out/renderer/assets/{mdx-DMngMjHR.js → mdx-BCv8lm5e.js} +1 -1
  17. package/out/renderer/assets/ort-wasm-simd-threaded.asyncify-DMmc6YqF.wasm +0 -0
  18. package/out/renderer/assets/{python-D_czoeY2.js → python-BLNzYwDv.js} +1 -1
  19. package/out/renderer/assets/{razor-CLMDGvL7.js → razor-CvAww8bG.js} +1 -1
  20. package/out/renderer/assets/transformers.web-DtSCnG36.js +33668 -0
  21. package/out/renderer/assets/{tsMode-EIuSGG42.js → tsMode-C7m6Kr5E.js} +1 -1
  22. package/out/renderer/assets/{typescript-DQkV4kKA.js → typescript-DhPw4VVg.js} +1 -1
  23. package/out/renderer/assets/{xml-DJ0OOQTu.js → xml-B0WLFJ2U.js} +1 -1
  24. package/out/renderer/assets/{yaml-DxX26XLN.js → yaml-BWyn9Wd7.js} +1 -1
  25. package/out/renderer/index.html +2 -2
  26. package/package.json +2 -1
  27. package/src/main/index.ts +7 -0
  28. package/src/renderer/App.tsx +41 -1
  29. package/src/renderer/components/FloatingMic.tsx +128 -0
  30. package/src/renderer/components/TerminalPanel.tsx +6 -0
  31. package/src/renderer/components/VoiceInput.tsx +321 -0
  32. package/src/renderer/lib/localWhisper.ts +88 -0
  33. package/src/renderer/styles.css +163 -0
package/out/main/index.js CHANGED
@@ -11558,6 +11558,9 @@ function createWindow() {
11558
11558
  webviewTag: true
11559
11559
  }
11560
11560
  });
11561
+ mainWindow.webContents.session.setPermissionRequestHandler((_wc, _permission, callback) => {
11562
+ callback(true);
11563
+ });
11561
11564
  if (process.env.ELECTRON_RENDERER_URL) {
11562
11565
  mainWindow.loadURL(process.env.ELECTRON_RENDERER_URL);
11563
11566
  } else {
@@ -1,6 +1,6 @@
1
- import { c as createWebWorker, l as languages } from "./index-DBt_rov1.js";
2
- import { C as CompletionAdapter, H as HoverAdapter, D as DocumentHighlightAdapter, a as DefinitionAdapter, R as ReferenceAdapter, b as DocumentSymbolAdapter, c as RenameAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, e as DiagnosticsAdapter, S as SelectionRangeAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider } from "./lspLanguageFeatures-ClbEdD0U.js";
3
- import { h, i, j, t, k } from "./lspLanguageFeatures-ClbEdD0U.js";
1
+ import { c as createWebWorker, l as languages } from "./index-dRvutfbl.js";
2
+ import { C as CompletionAdapter, H as HoverAdapter, D as DocumentHighlightAdapter, a as DefinitionAdapter, R as ReferenceAdapter, b as DocumentSymbolAdapter, c as RenameAdapter, d as DocumentColorAdapter, F as FoldingRangeAdapter, e as DiagnosticsAdapter, S as SelectionRangeAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider } from "./lspLanguageFeatures-DqzMqkRk.js";
3
+ import { h, i, j, t, k } from "./lspLanguageFeatures-DqzMqkRk.js";
4
4
  const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
5
5
  class WorkerManager {
6
6
  constructor(defaults) {
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-DBt_rov1.js";
1
+ import { l as languages } from "./index-dRvutfbl.js";
2
2
  const EMPTY_ELEMENTS = [
3
3
  "assign",
4
4
  "flush",
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-DBt_rov1.js";
1
+ import { l as languages } from "./index-dRvutfbl.js";
2
2
  const EMPTY_ELEMENTS = [
3
3
  "area",
4
4
  "base",
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-DBt_rov1.js";
1
+ import { l as languages } from "./index-dRvutfbl.js";
2
2
  const EMPTY_ELEMENTS = [
3
3
  "area",
4
4
  "base",
@@ -1,6 +1,6 @@
1
- import { c as createWebWorker, l as languages } from "./index-DBt_rov1.js";
2
- import { H as HoverAdapter, D as DocumentHighlightAdapter, h as DocumentLinkAdapter, F as FoldingRangeAdapter, b as DocumentSymbolAdapter, S as SelectionRangeAdapter, c as RenameAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter } from "./lspLanguageFeatures-ClbEdD0U.js";
3
- import { a, e, d, R, i, j, t, k } from "./lspLanguageFeatures-ClbEdD0U.js";
1
+ import { c as createWebWorker, l as languages } from "./index-dRvutfbl.js";
2
+ import { H as HoverAdapter, D as DocumentHighlightAdapter, h as DocumentLinkAdapter, F as FoldingRangeAdapter, b as DocumentSymbolAdapter, S as SelectionRangeAdapter, c as RenameAdapter, f as DocumentFormattingEditProvider, g as DocumentRangeFormattingEditProvider, C as CompletionAdapter } from "./lspLanguageFeatures-DqzMqkRk.js";
3
+ import { a, e, d, R, i, j, t, k } from "./lspLanguageFeatures-DqzMqkRk.js";
4
4
  const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
5
5
  class WorkerManager {
6
6
  constructor(defaults) {
@@ -7956,6 +7956,169 @@ html, body, #root {
7956
7956
  line-height: 1;
7957
7957
  }
7958
7958
 
7959
+ /* Voice typing (push-to-talk mic) */
7960
+ .voice-input-wrap {
7961
+ position: relative;
7962
+ display: inline-flex;
7963
+ }
7964
+ .voice-btn {
7965
+ user-select: none;
7966
+ -webkit-user-select: none;
7967
+ touch-action: none;
7968
+ }
7969
+ .voice-btn:disabled {
7970
+ opacity: 0.4;
7971
+ cursor: not-allowed;
7972
+ }
7973
+ .voice-btn.listening {
7974
+ color: #f7768e;
7975
+ border-color: #f7768e;
7976
+ background: #1f2335;
7977
+ }
7978
+ .voice-btn.busy {
7979
+ color: #e0af68;
7980
+ border-color: #e0af68;
7981
+ background: #1f2335;
7982
+ }
7983
+ .voice-icon {
7984
+ font-size: 13px;
7985
+ line-height: 1;
7986
+ }
7987
+ .voice-dot {
7988
+ width: 6px;
7989
+ height: 6px;
7990
+ border-radius: 50%;
7991
+ display: inline-block;
7992
+ vertical-align: middle;
7993
+ background: #565f89;
7994
+ }
7995
+ .voice-dot.on {
7996
+ background: #f7768e;
7997
+ box-shadow: 0 0 4px #f7768e;
7998
+ animation: voice-pulse 1s ease-in-out infinite;
7999
+ }
8000
+ .voice-dot.busy {
8001
+ background: #e0af68;
8002
+ box-shadow: 0 0 4px #e0af68;
8003
+ animation: voice-pulse 0.8s ease-in-out infinite;
8004
+ }
8005
+ @keyframes voice-pulse {
8006
+ 0%, 100% { opacity: 1; }
8007
+ 50% { opacity: 0.3; }
8008
+ }
8009
+ .voice-chip {
8010
+ position: absolute;
8011
+ top: 100%;
8012
+ right: 0;
8013
+ margin-top: 6px;
8014
+ max-width: 320px;
8015
+ padding: 4px 9px;
8016
+ border-radius: 5px;
8017
+ font-size: 11px;
8018
+ line-height: 1.3;
8019
+ white-space: nowrap;
8020
+ overflow: hidden;
8021
+ text-overflow: ellipsis;
8022
+ z-index: 50;
8023
+ pointer-events: none;
8024
+ border: 1px solid #3b3d57;
8025
+ }
8026
+ .voice-chip.listening {
8027
+ background: #1f2335;
8028
+ color: #a9b1d6;
8029
+ }
8030
+ .voice-chip.busy {
8031
+ background: #1f2335;
8032
+ color: #e0af68;
8033
+ border-color: #e0af68;
8034
+ }
8035
+ .voice-chip.notice {
8036
+ background: #1f2335;
8037
+ color: #e0af68;
8038
+ border-color: #e0af68;
8039
+ white-space: normal;
8040
+ }
8041
+ .voice-chip.error {
8042
+ background: #2d2030;
8043
+ color: #f7768e;
8044
+ border-color: #f7768e;
8045
+ white-space: normal;
8046
+ }
8047
+
8048
+ /* Floating push-to-talk mic (draggable, dismissable FAB) */
8049
+ .floating-mic {
8050
+ position: fixed;
8051
+ z-index: 200;
8052
+ display: flex;
8053
+ flex-direction: column;
8054
+ align-items: center;
8055
+ gap: 4px;
8056
+ padding: 4px 4px 6px;
8057
+ background: #16161e;
8058
+ border: 1px solid #3b3d57;
8059
+ border-radius: 12px;
8060
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.45);
8061
+ user-select: none;
8062
+ -webkit-user-select: none;
8063
+ }
8064
+ .floating-mic-handle {
8065
+ display: flex;
8066
+ align-items: center;
8067
+ justify-content: space-between;
8068
+ width: 100%;
8069
+ cursor: grab;
8070
+ touch-action: none;
8071
+ }
8072
+ .floating-mic-handle:active { cursor: grabbing; }
8073
+ .floating-mic-grip {
8074
+ color: #565f89;
8075
+ font-size: 12px;
8076
+ line-height: 1;
8077
+ padding: 0 2px;
8078
+ }
8079
+ .floating-mic-hide {
8080
+ background: transparent;
8081
+ border: none;
8082
+ color: #565f89;
8083
+ font-size: 15px;
8084
+ line-height: 1;
8085
+ cursor: pointer;
8086
+ padding: 0 2px;
8087
+ }
8088
+ .floating-mic-hide:hover { color: #f7768e; }
8089
+
8090
+ .voice-btn-floating {
8091
+ width: 48px;
8092
+ height: 48px;
8093
+ border-radius: 50%;
8094
+ display: inline-flex;
8095
+ align-items: center;
8096
+ justify-content: center;
8097
+ background: #2a2b3d;
8098
+ border: 1px solid #3b3d57;
8099
+ color: #a9b1d6;
8100
+ cursor: pointer;
8101
+ position: relative;
8102
+ transition: all 0.15s;
8103
+ }
8104
+ .voice-btn-floating:hover { border-color: #565f89; }
8105
+ .voice-btn-floating .voice-icon { font-size: 22px; }
8106
+ .voice-btn-floating .voice-dot {
8107
+ position: absolute;
8108
+ top: 5px;
8109
+ right: 5px;
8110
+ }
8111
+ /* Floating chip sits above the round button rather than below it. */
8112
+ .voice-chip-floating {
8113
+ top: auto;
8114
+ bottom: 100%;
8115
+ right: auto;
8116
+ left: 50%;
8117
+ transform: translateX(-50%);
8118
+ margin-top: 0;
8119
+ margin-bottom: 8px;
8120
+ }
8121
+
7959
8122
  /* Editor panel */
7960
8123
  .editor-panel {
7961
8124
  display: flex;