@phenx-inc/ctlsurf 0.14.1 → 0.15.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 (40) hide show
  1. package/README.md +36 -0
  2. package/THIRD-PARTY-NOTICES.md +82 -0
  3. package/out/headless/index.mjs +13 -3
  4. package/out/headless/index.mjs.map +2 -2
  5. package/out/main/index.js +27 -0
  6. package/out/preload/index.js +5 -0
  7. package/out/renderer/assets/{cssMode-bQYoCKra.js → cssMode-CJR4iD-G.js} +3 -3
  8. package/out/renderer/assets/{freemarker2-BS1ERQl_.js → freemarker2-BRI9ISq9.js} +1 -1
  9. package/out/renderer/assets/{handlebars-B-ZEHRLr.js → handlebars-3hL6XIZI.js} +1 -1
  10. package/out/renderer/assets/{html-lk9e1Lkl.js → html-Dd5_vBoP.js} +1 -1
  11. package/out/renderer/assets/{htmlMode-Ds1eMYgM.js → htmlMode-DgNtlKcG.js} +3 -3
  12. package/out/renderer/assets/{index-BpCORklm.css → index-3sFJEz7i.css} +787 -399
  13. package/out/renderer/assets/{index-BJNR4hRK.js → index-5azC4yNn.js} +421 -99
  14. package/out/renderer/assets/{javascript-D6OeziKX.js → javascript-D0vPLEJg.js} +2 -2
  15. package/out/renderer/assets/{jsonMode-t5SESE75.js → jsonMode-DBvR0zMu.js} +3 -3
  16. package/out/renderer/assets/{liquid-B5Wjh0p_.js → liquid-CLoc6Tx7.js} +1 -1
  17. package/out/renderer/assets/{lspLanguageFeatures-BEgiDCIW.js → lspLanguageFeatures-CiaMaQoY.js} +1 -1
  18. package/out/renderer/assets/{mdx-ByNAXh8t.js → mdx-DTsq6tlv.js} +1 -1
  19. package/out/renderer/assets/{python-CIFO0XQW.js → python-D04DpZDr.js} +1 -1
  20. package/out/renderer/assets/{razor-LXHhGcNO.js → razor-Di6CJ6s8.js} +1 -1
  21. package/out/renderer/assets/{tsMode-WiO8CDaI.js → tsMode-mfv6mHOv.js} +1 -1
  22. package/out/renderer/assets/{typescript-ZBQlq256.js → typescript-CDA0Hhef.js} +1 -1
  23. package/out/renderer/assets/{xml-DBaLJlQU.js → xml-BU0voRuq.js} +1 -1
  24. package/out/renderer/assets/{yaml-CId9skah.js → yaml-qzFWnaZJ.js} +1 -1
  25. package/out/renderer/index.html +60 -3
  26. package/package.json +13 -3
  27. package/src/main/index.ts +52 -1
  28. package/src/main/orchestrator.ts +8 -0
  29. package/src/preload/index.ts +10 -0
  30. package/src/renderer/App.tsx +2 -0
  31. package/src/renderer/components/CtlsurfPanel.tsx +1 -1
  32. package/src/renderer/components/EditorPanel.tsx +29 -1
  33. package/src/renderer/components/ObserverPanel.tsx +13 -6
  34. package/src/renderer/components/SettingsDialog.tsx +82 -0
  35. package/src/renderer/components/TerminalPanel.tsx +12 -22
  36. package/src/renderer/components/TicketPanel.tsx +17 -10
  37. package/src/renderer/index.html +58 -1
  38. package/src/renderer/lib/theme.ts +173 -0
  39. package/src/renderer/lib/themes.ts +126 -0
  40. package/src/renderer/styles.css +787 -399
package/out/main/index.js CHANGED
@@ -23626,12 +23626,18 @@ const orchestrator = new Orchestrator(
23626
23626
  }
23627
23627
  );
23628
23628
  function createWindow() {
23629
+ const saved = orchestrator.settingsData;
23630
+ if (saved.themeSource === "light" || saved.themeSource === "dark" || saved.themeSource === "system") {
23631
+ electron.nativeTheme.themeSource = saved.themeSource;
23632
+ }
23633
+ const savedBg = typeof saved.themeBackground === "string" && /^#[0-9a-fA-F]{6}$/.test(saved.themeBackground) ? saved.themeBackground : null;
23629
23634
  mainWindow = new electron.BrowserWindow({
23630
23635
  width: 1400,
23631
23636
  height: 900,
23632
23637
  minWidth: 600,
23633
23638
  minHeight: 400,
23634
23639
  title: "ctlsurf-worker",
23640
+ backgroundColor: savedBg ?? (electron.nativeTheme.shouldUseDarkColors ? "#1a1b26" : "#e9eaef"),
23635
23641
  titleBarStyle: "hiddenInset",
23636
23642
  icon: path$1.join(__dirname, "../../resources/icon.png"),
23637
23643
  webPreferences: {
@@ -23729,6 +23735,27 @@ electron.ipcMain.handle(
23729
23735
  electron.ipcMain.handle("app:homePath", () => electron.app.getPath("home"));
23730
23736
  electron.ipcMain.handle("app:cwd", () => process.env.CTLSURF_WORKER_CWD || process.cwd());
23731
23737
  electron.ipcMain.handle("app:projectName", () => orchestrator.projectName);
23738
+ electron.ipcMain.handle("app:getAppearance", () => ({
23739
+ pref: orchestrator.settingsData.appearance ?? null
23740
+ }));
23741
+ electron.ipcMain.handle("app:setAppearance", (_e, data) => {
23742
+ const source = data?.source;
23743
+ if (source !== "system" && source !== "light" && source !== "dark") return { ok: false };
23744
+ electron.nativeTheme.themeSource = source;
23745
+ const settings = orchestrator.settingsData;
23746
+ if (data.pref && typeof data.pref === "object") {
23747
+ settings.appearance = data.pref;
23748
+ }
23749
+ settings.themeSource = source;
23750
+ if (typeof data.background === "string" && /^#[0-9a-fA-F]{6}$/.test(data.background)) {
23751
+ settings.themeBackground = data.background;
23752
+ if (mainWindow && !mainWindow.isDestroyed()) {
23753
+ mainWindow.setBackgroundColor(data.background);
23754
+ }
23755
+ }
23756
+ orchestrator.saveSettings();
23757
+ return { ok: true };
23758
+ });
23732
23759
  electron.ipcMain.handle("app:browseCwd", async () => {
23733
23760
  if (!mainWindow) return null;
23734
23761
  const result = await electron.dialog.showOpenDialog(mainWindow, {
@@ -40,6 +40,11 @@ const api = {
40
40
  return () => electron.ipcRenderer.removeListener("app:projectChanged", listener);
41
41
  },
42
42
  browseCwd: () => electron.ipcRenderer.invoke("app:browseCwd"),
43
+ // Mirror the renderer's appearance preference onto Chromium's nativeTheme and
44
+ // persist it. localStorage stays the source of truth (see renderer/lib/theme.ts);
45
+ // this copy backs the pre-load window background and localStorage recovery.
46
+ setAppearance: (data) => electron.ipcRenderer.invoke("app:setAppearance", data),
47
+ getAppearance: () => electron.ipcRenderer.invoke("app:getAppearance"),
43
48
  // Clipboard — write a rich-HTML table (+ plain-text fallback) for email paste.
44
49
  // `ok` reflects a read-back verification in the main process, not just that the
45
50
  // call was made; `error` is set when the write threw.
@@ -1,6 +1,6 @@
1
- import { c as createWebWorker, l as languages } from "./index-BJNR4hRK.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-BEgiDCIW.js";
3
- import { h, i, j, t, k } from "./lspLanguageFeatures-BEgiDCIW.js";
1
+ import { c as createWebWorker, l as languages } from "./index-5azC4yNn.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-CiaMaQoY.js";
3
+ import { h, i, j, t, k } from "./lspLanguageFeatures-CiaMaQoY.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-BJNR4hRK.js";
1
+ import { l as languages } from "./index-5azC4yNn.js";
2
2
  const EMPTY_ELEMENTS = [
3
3
  "assign",
4
4
  "flush",
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-BJNR4hRK.js";
1
+ import { l as languages } from "./index-5azC4yNn.js";
2
2
  const EMPTY_ELEMENTS = [
3
3
  "area",
4
4
  "base",
@@ -1,4 +1,4 @@
1
- import { l as languages } from "./index-BJNR4hRK.js";
1
+ import { l as languages } from "./index-5azC4yNn.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-BJNR4hRK.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-BEgiDCIW.js";
3
- import { a, e, d, R, i, j, t, k } from "./lspLanguageFeatures-BEgiDCIW.js";
1
+ import { c as createWebWorker, l as languages } from "./index-5azC4yNn.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-CiaMaQoY.js";
3
+ import { a, e, d, R, i, j, t, k } from "./lspLanguageFeatures-CiaMaQoY.js";
4
4
  const STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;
5
5
  class WorkerManager {
6
6
  constructor(defaults) {