Extend the existing NewSpaceDialog project flow so an optional host folder becomes the space workspace root. When .git metadata is present, remote URL, default branch, and head commit are stored on the space. Team Computer file APIs expose the linked folder under project/ without a second VCS stack. Desktop adds a native folder picker; web falls back to an absolute path field. Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
35 lines
1.4 KiB
JavaScript
35 lines
1.4 KiB
JavaScript
const { contextBridge, ipcRenderer } = require("electron");
|
|
|
|
contextBridge.exposeInMainWorld("rakazoDesktop", {
|
|
platform: process.platform,
|
|
files: {
|
|
pickDirectory: () => ipcRenderer.invoke("desktop.files.pickDirectory"),
|
|
},
|
|
localSettings: {
|
|
request: (pathname, body) =>
|
|
ipcRenderer.invoke("desktop.localSettings.request", pathname, body),
|
|
},
|
|
window: {
|
|
close: () => ipcRenderer.invoke("desktop.window.close"),
|
|
minimize: () => ipcRenderer.invoke("desktop.window.minimize"),
|
|
toggleMaximize: () => ipcRenderer.invoke("desktop.window.toggleMaximize"),
|
|
state: () => ipcRenderer.invoke("desktop.window.state"),
|
|
},
|
|
update: {
|
|
state: () => ipcRenderer.invoke("desktop.update.state"),
|
|
check: () => ipcRenderer.invoke("desktop.update.check"),
|
|
download: () => ipcRenderer.invoke("desktop.update.download"),
|
|
install: () => ipcRenderer.invoke("desktop.update.install"),
|
|
},
|
|
oauth: {
|
|
open: (url) => ipcRenderer.invoke("desktop.oauth.open", url),
|
|
cancel: (url) => ipcRenderer.invoke("desktop.oauth.cancel", url),
|
|
onCallback: (listener) => {
|
|
// The IpcRendererEvent stays in the preload: the renderer only sees the code.
|
|
const handler = (_event, callback) => listener(callback);
|
|
ipcRenderer.on("desktop.oauth.callback", handler);
|
|
return () => ipcRenderer.off("desktop.oauth.callback", handler);
|
|
},
|
|
},
|
|
});
|