openfox 2.0.88 → 2.0.90

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 (66) hide show
  1. package/CHANGELOG.md +41 -14
  2. package/dist/CHANGELOG.md +41 -14
  3. package/dist/{chat-handler-HB3XN6YE.js → chat-handler-JJQ3JBNF.js} +17 -17
  4. package/dist/{chunk-BNQTJFHQ.js → chunk-2J7SLQXL.js} +4 -2
  5. package/dist/{chunk-DZGVDT2F.js → chunk-2QIYPQQH.js} +4 -4
  6. package/dist/{chunk-76ADL7EV.js → chunk-3HH5UDVQ.js} +7 -7
  7. package/dist/{chunk-V4V6UGZZ.js → chunk-54LPSOO3.js} +3 -3
  8. package/dist/{chunk-7PZBCATU.js → chunk-67AVIA5G.js} +29 -7
  9. package/dist/{chunk-6YJ5W4KV.js → chunk-6PHUBUVH.js} +219 -97
  10. package/dist/{chunk-B53QORTX.js → chunk-74P4DTCU.js} +2 -2
  11. package/dist/{chunk-EWUDWUE3.js → chunk-7GF45BJV.js} +10 -10
  12. package/dist/{chunk-SUT4OSXR.js → chunk-BCVM2SPJ.js} +3 -3
  13. package/dist/{chunk-RGUUZD5B.js → chunk-EZWSS7LG.js} +5 -1
  14. package/dist/{chunk-XNPVKFOJ.js → chunk-FIXFSGGZ.js} +2 -2
  15. package/dist/{chunk-5UHHGQ7Q.js → chunk-GJN622K4.js} +4 -4
  16. package/dist/{chunk-LD46ASP5.js → chunk-GR63QQFE.js} +2 -2
  17. package/dist/{chunk-EYIWUONA.js → chunk-J2IVK667.js} +2 -2
  18. package/dist/{chunk-QMSTCWYK.js → chunk-KFKDFZJB.js} +15 -15
  19. package/dist/{chunk-BOO6VR2T.js → chunk-L6B6R5SN.js} +2 -2
  20. package/dist/{chunk-GO54OTGE.js → chunk-LRTHLIRH.js} +11 -11
  21. package/dist/{chunk-TW3PNLMA.js → chunk-NJ3XNK3V.js} +2 -2
  22. package/dist/{chunk-GLRBRQGJ.js → chunk-OTKOSY6B.js} +2 -2
  23. package/dist/{chunk-6AE3JPDJ.js → chunk-Q6AKRIM2.js} +7 -2
  24. package/dist/{chunk-2DWWLQVQ.js → chunk-VX5NASLY.js} +3 -3
  25. package/dist/{chunk-TXGW36XL.js → chunk-VXKY7J7W.js} +2 -2
  26. package/dist/{chunk-WWOZHM6D.js → chunk-XKZZHAEZ.js} +2 -2
  27. package/dist/chunk-XMJLSFY5.js +7 -0
  28. package/dist/cli/dev.js +1 -1
  29. package/dist/cli/index.js +1 -1
  30. package/dist/{client-W3AYWMJM.js → client-2JELOQF7.js} +5 -5
  31. package/dist/{compactor-7JU5CXSG.js → compactor-OW343YIO.js} +10 -10
  32. package/dist/{events-Z3AJVFSP.js → events-U2BYC5MN.js} +7 -7
  33. package/dist/{folding-LWKKC4RQ.js → folding-RE7ZL7H7.js} +5 -5
  34. package/dist/http-client-7QCN2R44.js +11 -0
  35. package/dist/{inspect-proxy-DRYIIH4O.js → inspect-proxy-CN2MUFQ5.js} +4 -4
  36. package/dist/{manager-657CWC5Z.js → manager-X665RYDA.js} +5 -5
  37. package/dist/{orchestrator-KTOC65UU.js → orchestrator-BMU7DZ6F.js} +16 -16
  38. package/dist/package.json +1 -1
  39. package/dist/{path-security-XXWK5ZCL.js → path-security-3BTT5ZCM.js} +8 -8
  40. package/dist/{platform-MVVEGKPE.js → platform-2XTX4MRW.js} +4 -4
  41. package/dist/{processor-3UTJE7EQ.js → processor-YIVQO2OY.js} +17 -17
  42. package/dist/{project-creator-NNUITNUI.js → project-creator-W5VW22DC.js} +3 -3
  43. package/dist/{projects-ZGJGICGT.js → projects-HZ3WVTKG.js} +3 -3
  44. package/dist/{protocol-BzTZcNEh.d.ts → protocol-DKJPL2Ci.d.ts} +1 -1
  45. package/dist/provider/index.d.ts +4 -4
  46. package/dist/{provider-YRNABOCC.js → provider-IKKXQW6S.js} +6 -6
  47. package/dist/{provider-manager-W4MEPXB5.js → provider-manager-I35NHMOO.js} +6 -6
  48. package/dist/{serve-AZ5QSSHE.js → serve-Q45HTS4J.js} +23 -23
  49. package/dist/server/index.d.ts +16 -3
  50. package/dist/server/index.js +22 -22
  51. package/dist/{server-T4YPLZDF.js → server-OP2Q2F3S.js} +18 -18
  52. package/dist/{sessions-KDQ5TMHX.js → sessions-SFM7XA3R.js} +5 -5
  53. package/dist/{settings-SM3K6S74.js → settings-TCNHSYFX.js} +3 -3
  54. package/dist/shared/index.d.ts +3 -3
  55. package/dist/{tools-A2XBFPRO.js → tools-X7NAB4LZ.js} +15 -15
  56. package/dist/{types-CrLD4iRS.d.ts → types-B97Fb4vm.d.ts} +1 -1
  57. package/dist/{types-B4wa_vGm.d.ts → types-C4NrLRR1.d.ts} +1 -0
  58. package/dist/{update-4D76LEVO.js → update-HHQGMX7P.js} +2 -2
  59. package/dist/web/assets/{index-BRy1cx3_.js → index-BB8bp4oL.js} +89 -79
  60. package/dist/web/assets/{index-D8gCHkwE.css → index-flzB-55v.css} +1 -1
  61. package/dist/web/index.html +2 -2
  62. package/dist/web/sw.js +1 -1
  63. package/dist/{workspace-MMV6V5P4.js → workspace-N4QHV6J2.js} +4 -2
  64. package/package.json +1 -1
  65. package/dist/chunk-FGK7QLCZ.js +0 -7
  66. package/dist/http-client-LITXNO6R.js +0 -11
package/CHANGELOG.md CHANGED
@@ -1,29 +1,56 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.90 - 2026-07-24
4
+
5
+ ### Features
6
+
7
+ - **Compact sidebar summary header** — when the right sidebar is hidden, a compact bar shows workspace/branch, metadata status, token context, and dev server controls with clickable popovers for full details.
8
+ - **Scroll-to-top button in chat feed** — hover to reveal at the top of the message list; click to scroll up and disable auto-scroll.
9
+ - **Scrollbar preset picker with Custom CSS editor** — choose from built-in scrollbar styles or write your own CSS in the Display settings.
10
+
11
+ ### Enhancements
12
+
13
+ - **Native browser scrollbars by default** — replaced custom scrollbar CSS with native scrollbars for better platform consistency; power users can customize via the new CSS editor.
14
+ - **Long session names truncated at 50 characters** — header dropdown, session list, and mobile nav now cap overly long names.
15
+
16
+ ## 2.0.89 - 2026-07-23
17
+
18
+ ### Features
19
+
20
+ - **Fork a session from any message** — right-click any user or assistant message and choose "Fork session from here" to create a new session preserving all history up to that point. The forked session inherits provider, model, workspace, cached system prompt, and read-files cache for instant warm-up.
21
+
22
+ ### Enhancements
23
+
24
+ - **Copy now available on assistant messages via right-click** — previously only user messages had a copy button; now right-click any assistant message to copy its content.
25
+
26
+ ### Bug Fixes
27
+
28
+ - **Creating a new workspace branch no longer crashes** — the system now creates branches from HEAD instead of fetching the default branch from the remote, which caused crashes on offline or slow connections.
29
+
3
30
  ## 2.0.88 - 2026-07-23
4
31
 
5
32
  ### Features
6
33
 
7
- - Changelog modal shows "What's New" on update, toggleable in settings
8
- - Ctrl+D toggles the criteria sidebar (right sidebar)
9
- - Ctrl+S closes the left sidebar when search is already focused
10
- - 10 new customizable theme tokens for LLM response colors
34
+ - **Changelog modal shows "What's New" on update** toggleable in settings, auto-shown after an upgrade.
35
+ - **Ctrl+D toggles the criteria sidebar** right sidebar now has a dedicated keyboard shortcut.
36
+ - **Ctrl+S closes the left sidebar** when search is already focused, Ctrl+S dismisses the sidebar.
37
+ - **10 new customizable theme tokens for LLM response colors** — fine-tune the look of assistant messages, system messages, thinking labels, and more.
11
38
 
12
39
  ### Enhancements
13
40
 
14
- - 8 new built-in theme presets (Catppuccin, Night Owl, Rose Pine, etc.)
15
- - Syntax highlighting adapts to your selected theme preset
16
- - System theme mode lets you choose separate presets for dark and light
17
- - Theme editor groups presets by dark/light mode
18
- - Header tooltips show live keyboard shortcut hints
19
- - Keybindings settings includes "Toggle Criteria Sidebar" binding
41
+ - **8 new built-in theme presets** Catppuccin, Night Owl, Rose Pine, and more added to the theme picker.
42
+ - **Syntax highlighting adapts to your selected theme preset** — code blocks now match your chosen color scheme.
43
+ - **System theme mode with separate dark/light presets** — choose different presets for dark and light modes independently.
44
+ - **Theme editor groups presets by dark/light mode** — easier to browse and select when you have many presets.
45
+ - **Header tooltips show live keyboard shortcut hints** — hover over header buttons to see the current keybinding.
46
+ - **Keybindings settings includes "Toggle Criteria Sidebar" binding** — configurable shortcut for showing/hiding the right sidebar.
20
47
 
21
48
  ### Bug Fixes
22
49
 
23
- - Error banner persists until dismissed or new message sent
24
- - Selecting a user preset while in system theme mode works correctly
25
- - Active user preset is properly highlighted in theme picker
26
- - CHANGELOG.md now ships with the npm package, fixing production builds
50
+ - **Error banner persists until dismissed or new message sent** — no longer disappears prematurely when session state updates.
51
+ - **Selecting a user preset while in system theme mode works correctly** — legacy mode fallback no longer breaks preset selection.
52
+ - **Active user preset is properly highlighted in theme picker** — the currently applied preset shows a clear visual indicator.
53
+ - **CHANGELOG.md ships with the npm package** production builds no longer fail to find the changelog at runtime.
27
54
 
28
55
  ## 2.0.87 - 2026-07-22
29
56
 
package/dist/CHANGELOG.md CHANGED
@@ -1,29 +1,56 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.90 - 2026-07-24
4
+
5
+ ### Features
6
+
7
+ - **Compact sidebar summary header** — when the right sidebar is hidden, a compact bar shows workspace/branch, metadata status, token context, and dev server controls with clickable popovers for full details.
8
+ - **Scroll-to-top button in chat feed** — hover to reveal at the top of the message list; click to scroll up and disable auto-scroll.
9
+ - **Scrollbar preset picker with Custom CSS editor** — choose from built-in scrollbar styles or write your own CSS in the Display settings.
10
+
11
+ ### Enhancements
12
+
13
+ - **Native browser scrollbars by default** — replaced custom scrollbar CSS with native scrollbars for better platform consistency; power users can customize via the new CSS editor.
14
+ - **Long session names truncated at 50 characters** — header dropdown, session list, and mobile nav now cap overly long names.
15
+
16
+ ## 2.0.89 - 2026-07-23
17
+
18
+ ### Features
19
+
20
+ - **Fork a session from any message** — right-click any user or assistant message and choose "Fork session from here" to create a new session preserving all history up to that point. The forked session inherits provider, model, workspace, cached system prompt, and read-files cache for instant warm-up.
21
+
22
+ ### Enhancements
23
+
24
+ - **Copy now available on assistant messages via right-click** — previously only user messages had a copy button; now right-click any assistant message to copy its content.
25
+
26
+ ### Bug Fixes
27
+
28
+ - **Creating a new workspace branch no longer crashes** — the system now creates branches from HEAD instead of fetching the default branch from the remote, which caused crashes on offline or slow connections.
29
+
3
30
  ## 2.0.88 - 2026-07-23
4
31
 
5
32
  ### Features
6
33
 
7
- - Changelog modal shows "What's New" on update, toggleable in settings
8
- - Ctrl+D toggles the criteria sidebar (right sidebar)
9
- - Ctrl+S closes the left sidebar when search is already focused
10
- - 10 new customizable theme tokens for LLM response colors
34
+ - **Changelog modal shows "What's New" on update** toggleable in settings, auto-shown after an upgrade.
35
+ - **Ctrl+D toggles the criteria sidebar** right sidebar now has a dedicated keyboard shortcut.
36
+ - **Ctrl+S closes the left sidebar** when search is already focused, Ctrl+S dismisses the sidebar.
37
+ - **10 new customizable theme tokens for LLM response colors** — fine-tune the look of assistant messages, system messages, thinking labels, and more.
11
38
 
12
39
  ### Enhancements
13
40
 
14
- - 8 new built-in theme presets (Catppuccin, Night Owl, Rose Pine, etc.)
15
- - Syntax highlighting adapts to your selected theme preset
16
- - System theme mode lets you choose separate presets for dark and light
17
- - Theme editor groups presets by dark/light mode
18
- - Header tooltips show live keyboard shortcut hints
19
- - Keybindings settings includes "Toggle Criteria Sidebar" binding
41
+ - **8 new built-in theme presets** Catppuccin, Night Owl, Rose Pine, and more added to the theme picker.
42
+ - **Syntax highlighting adapts to your selected theme preset** — code blocks now match your chosen color scheme.
43
+ - **System theme mode with separate dark/light presets** — choose different presets for dark and light modes independently.
44
+ - **Theme editor groups presets by dark/light mode** — easier to browse and select when you have many presets.
45
+ - **Header tooltips show live keyboard shortcut hints** — hover over header buttons to see the current keybinding.
46
+ - **Keybindings settings includes "Toggle Criteria Sidebar" binding** — configurable shortcut for showing/hiding the right sidebar.
20
47
 
21
48
  ### Bug Fixes
22
49
 
23
- - Error banner persists until dismissed or new message sent
24
- - Selecting a user preset while in system theme mode works correctly
25
- - Active user preset is properly highlighted in theme picker
26
- - CHANGELOG.md now ships with the npm package, fixing production builds
50
+ - **Error banner persists until dismissed or new message sent** — no longer disappears prematurely when session state updates.
51
+ - **Selecting a user preset while in system theme mode works correctly** — legacy mode fallback no longer breaks preset selection.
52
+ - **Active user preset is properly highlighted in theme picker** — the currently applied preset shows a clear visual indicator.
53
+ - **CHANGELOG.md ships with the npm package** production builds no longer fail to find the changelog at runtime.
27
54
 
28
55
  ## 2.0.87 - 2026-07-22
29
56
 
@@ -2,40 +2,40 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-76ADL7EV.js";
5
+ } from "./chunk-3HH5UDVQ.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-EWUDWUE3.js";
9
- import "./chunk-QMSTCWYK.js";
10
- import "./chunk-GLRBRQGJ.js";
8
+ } from "./chunk-7GF45BJV.js";
9
+ import "./chunk-KFKDFZJB.js";
10
+ import "./chunk-OTKOSY6B.js";
11
11
  import "./chunk-NWO6GRYE.js";
12
12
  import "./chunk-VPFUXGMM.js";
13
- import "./chunk-7PZBCATU.js";
13
+ import "./chunk-67AVIA5G.js";
14
14
  import "./chunk-J7GAZGZT.js";
15
- import "./chunk-B53QORTX.js";
15
+ import "./chunk-74P4DTCU.js";
16
16
  import {
17
17
  createChatMessageMessage,
18
18
  createPhaseChangedMessage,
19
19
  createSessionRunningMessage
20
20
  } from "./chunk-47WNBFDO.js";
21
21
  import "./chunk-EU3WWTFH.js";
22
- import "./chunk-TXGW36XL.js";
23
- import "./chunk-XNPVKFOJ.js";
24
- import "./chunk-EYIWUONA.js";
25
- import "./chunk-6AE3JPDJ.js";
22
+ import "./chunk-VXKY7J7W.js";
23
+ import "./chunk-FIXFSGGZ.js";
24
+ import "./chunk-J2IVK667.js";
25
+ import "./chunk-Q6AKRIM2.js";
26
26
  import "./chunk-I72ACQ6R.js";
27
27
  import {
28
28
  getEventStore
29
- } from "./chunk-DZGVDT2F.js";
30
- import "./chunk-TW3PNLMA.js";
31
- import "./chunk-2DWWLQVQ.js";
32
- import "./chunk-BOO6VR2T.js";
29
+ } from "./chunk-2QIYPQQH.js";
30
+ import "./chunk-NJ3XNK3V.js";
31
+ import "./chunk-VX5NASLY.js";
32
+ import "./chunk-L6B6R5SN.js";
33
33
  import "./chunk-J2GP3J3X.js";
34
34
  import "./chunk-V4IE7HJY.js";
35
35
  import "./chunk-YHEQTVFV.js";
36
36
  import "./chunk-RMXPVQP4.js";
37
- import "./chunk-BNQTJFHQ.js";
38
- import "./chunk-RGUUZD5B.js";
37
+ import "./chunk-2J7SLQXL.js";
38
+ import "./chunk-EZWSS7LG.js";
39
39
  import "./chunk-K44MW7JJ.js";
40
40
  import "./chunk-U7RLUZBP.js";
41
41
  import "./chunk-N54PQSCH.js";
@@ -161,4 +161,4 @@ export {
161
161
  startChatSession,
162
162
  stopSessionExecution
163
163
  };
164
- //# sourceMappingURL=chat-handler-HB3XN6YE.js.map
164
+ //# sourceMappingURL=chat-handler-JJQ3JBNF.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-RGUUZD5B.js";
3
+ } from "./chunk-EZWSS7LG.js";
4
4
 
5
5
  // src/server/db/settings.ts
6
6
  var SETTINGS_KEYS = {
@@ -17,6 +17,7 @@ var SETTINGS_KEYS = {
17
17
  DISPLAY_SHOW_OPEN_IN_EDITOR: "display.showOpenInEditorLinks",
18
18
  DISPLAY_SHOW_CHANGELOG_ON_UPDATE: "display.showChangelogOnUpdate",
19
19
  DISPLAY_MAX_VISIBLE_ITEMS: "display.maxVisibleItems",
20
+ DISPLAY_CUSTOM_CSS: "display.customCss",
20
21
  LLM_DYNAMIC_SYSTEM_PROMPT: "llm.dynamicSystemPrompt",
21
22
  CACHE_WARMING: "cache.warming",
22
23
  KEYBINDINGS: "keybindings",
@@ -44,6 +45,7 @@ var SETTINGS_DEFAULTS = {
44
45
  [SETTINGS_KEYS.DISPLAY_SHOW_OPEN_IN_EDITOR]: "false",
45
46
  [SETTINGS_KEYS.DISPLAY_SHOW_CHANGELOG_ON_UPDATE]: "true",
46
47
  [SETTINGS_KEYS.DISPLAY_MAX_VISIBLE_ITEMS]: "300",
48
+ [SETTINGS_KEYS.DISPLAY_CUSTOM_CSS]: "",
47
49
  [SETTINGS_KEYS.LLM_DYNAMIC_SYSTEM_PROMPT]: "false",
48
50
  [SETTINGS_KEYS.CACHE_WARMING]: "false",
49
51
  [SETTINGS_KEYS.RETRY_PATTERNS]: JSON.stringify({ patterns: [], maxRetriesPerTurn: 10 }),
@@ -112,4 +114,4 @@ export {
112
114
  getAllSettings,
113
115
  getMaxVisibleItems
114
116
  };
115
- //# sourceMappingURL=chunk-BNQTJFHQ.js.map
117
+ //# sourceMappingURL=chunk-2J7SLQXL.js.map
@@ -5,13 +5,13 @@ import {
5
5
  foldContextState,
6
6
  foldSessionState,
7
7
  spreadOptionalMessageFields
8
- } from "./chunk-TW3PNLMA.js";
8
+ } from "./chunk-NJ3XNK3V.js";
9
9
  import {
10
10
  updateSessionMessageCount
11
- } from "./chunk-2DWWLQVQ.js";
11
+ } from "./chunk-VX5NASLY.js";
12
12
  import {
13
13
  getRuntimeConfig
14
- } from "./chunk-BOO6VR2T.js";
14
+ } from "./chunk-L6B6R5SN.js";
15
15
  import {
16
16
  logger
17
17
  } from "./chunk-K44MW7JJ.js";
@@ -1159,4 +1159,4 @@ export {
1159
1159
  truncateSessionMessages,
1160
1160
  getRecentUserPromptsForSession
1161
1161
  };
1162
- //# sourceMappingURL=chunk-DZGVDT2F.js.map
1162
+ //# sourceMappingURL=chunk-2QIYPQQH.js.map
@@ -8,20 +8,20 @@ import {
8
8
  import {
9
9
  combineEventsWithSnapshot,
10
10
  getEventStore
11
- } from "./chunk-DZGVDT2F.js";
11
+ } from "./chunk-2QIYPQQH.js";
12
12
  import {
13
13
  buildMessagesFromStoredEvents,
14
14
  foldPendingConfirmations
15
- } from "./chunk-TW3PNLMA.js";
15
+ } from "./chunk-NJ3XNK3V.js";
16
16
  import {
17
17
  updateSessionMetadata
18
- } from "./chunk-2DWWLQVQ.js";
18
+ } from "./chunk-VX5NASLY.js";
19
19
  import {
20
20
  getRuntimeConfig
21
- } from "./chunk-BOO6VR2T.js";
21
+ } from "./chunk-L6B6R5SN.js";
22
22
  import {
23
23
  getMaxVisibleItems
24
- } from "./chunk-BNQTJFHQ.js";
24
+ } from "./chunk-2J7SLQXL.js";
25
25
  import {
26
26
  logger
27
27
  } from "./chunk-K44MW7JJ.js";
@@ -153,7 +153,7 @@ async function generateSessionNameForSession(sessionId, userMessage, deps, signa
153
153
  client = deps.getLLMClient();
154
154
  client.setModel(providerConfig.model);
155
155
  } else if (providerConfig) {
156
- const { createLLMClient } = await import("./client-W3AYWMJM.js");
156
+ const { createLLMClient } = await import("./client-2JELOQF7.js");
157
157
  client = createLLMClient({
158
158
  llm: {
159
159
  baseUrl: providerConfig.baseUrl,
@@ -202,4 +202,4 @@ export {
202
202
  buildRunChatTurnParams,
203
203
  generateSessionNameForSession
204
204
  };
205
- //# sourceMappingURL=chunk-76ADL7EV.js.map
205
+ //# sourceMappingURL=chunk-3HH5UDVQ.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  COMPACTION_PROMPT,
3
3
  createMessageStartEvent
4
- } from "./chunk-TXGW36XL.js";
4
+ } from "./chunk-VXKY7J7W.js";
5
5
  import {
6
6
  getCurrentWindowMessageOptions
7
- } from "./chunk-DZGVDT2F.js";
7
+ } from "./chunk-2QIYPQQH.js";
8
8
 
9
9
  // src/server/context/compactor.ts
10
10
  function appendCompactionPrompt(sessionId, append) {
@@ -34,4 +34,4 @@ export {
34
34
  COMPACTION_MAX_RATIO,
35
35
  shouldCompact
36
36
  };
37
- //# sourceMappingURL=chunk-V4V6UGZZ.js.map
37
+ //# sourceMappingURL=chunk-54LPSOO3.js.map
@@ -1,6 +1,10 @@
1
1
  import {
2
2
  gitSpawnEnv
3
3
  } from "./chunk-J7GAZGZT.js";
4
+ import {
5
+ getProjectByWorkdir,
6
+ updateProject
7
+ } from "./chunk-Q6AKRIM2.js";
4
8
  import {
5
9
  logger
6
10
  } from "./chunk-K44MW7JJ.js";
@@ -25,7 +29,15 @@ async function loadWorkspaceConfig(workdir) {
25
29
  const parsed = JSON.parse(raw);
26
30
  const config = {};
27
31
  if (parsed.setup) config.setup = parsed.setup;
28
- if (parsed.rootDir) config.rootDir = parsed.rootDir;
32
+ if (parsed.rootDir) {
33
+ const project = getProjectByWorkdir(workdir);
34
+ if (project && !project.workspaceRootDir) {
35
+ try {
36
+ updateProject(project.id, { workspaceRootDir: parsed.rootDir });
37
+ } catch {
38
+ }
39
+ }
40
+ }
29
41
  return Object.keys(config).length > 0 ? config : null;
30
42
  } catch {
31
43
  return null;
@@ -82,9 +94,9 @@ function getGlobalDataDir() {
82
94
  }
83
95
  }
84
96
  async function getWorkspacesDir(projectName, projectDir) {
85
- const config = await loadWorkspaceConfig(projectDir);
86
- if (config?.rootDir) {
87
- return isAbsolute(config.rootDir) ? config.rootDir : resolve2(projectDir, config.rootDir);
97
+ const project = getProjectByWorkdir(projectDir);
98
+ if (project?.workspaceRootDir) {
99
+ return isAbsolute(project.workspaceRootDir) ? project.workspaceRootDir : resolve2(projectDir, project.workspaceRootDir);
88
100
  }
89
101
  return join2(getGlobalDataDir(), "workspaces", projectName);
90
102
  }
@@ -227,8 +239,18 @@ async function ensureWorkspace(projectDir, name, projectName, branch, sourceBran
227
239
  if (branch) {
228
240
  await validateRef(wsPath, branch);
229
241
  await runGit(wsPath, ["checkout", branch]).catch(async () => {
230
- const sb = sourceBranch ? await resolveAndValidateSourceBranch(wsPath, sourceBranch, projectDir) : await getDefaultBranch(projectDir);
231
- await runGit(wsPath, ["checkout", "-b", branch, sb]);
242
+ try {
243
+ if (sourceBranch) {
244
+ const sb = await resolveAndValidateSourceBranch(wsPath, sourceBranch, projectDir);
245
+ await runGit(wsPath, ["checkout", "-b", branch, sb]);
246
+ } else {
247
+ await runGit(wsPath, ["checkout", "-b", branch]);
248
+ }
249
+ } catch (innerErr) {
250
+ throw new Error(
251
+ `Failed to create branch "${branch}" in workspace: ${innerErr instanceof Error ? innerErr.message : String(innerErr)}`
252
+ );
253
+ }
232
254
  });
233
255
  }
234
256
  const config = await loadWorkspaceConfig(projectDir);
@@ -302,4 +324,4 @@ export {
302
324
  deleteWorkspace,
303
325
  isGitRepository
304
326
  };
305
- //# sourceMappingURL=chunk-7PZBCATU.js.map
327
+ //# sourceMappingURL=chunk-67AVIA5G.js.map