diff options
| author | Adam <[email protected]> | 2026-01-22 07:41:20 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-01-22 07:42:56 -0600 |
| commit | 16fad51b5ed572571ffb01159714756049b8a452 (patch) | |
| tree | ffebb90c34e367cf372b33422db98fc071f218e9 /packages/app | |
| parent | 287511c9b1320a2a8a464531c2a5f4e02cd259bf (diff) | |
| download | opencode-16fad51b5ed572571ffb01159714756049b8a452.tar.gz opencode-16fad51b5ed572571ffb01159714756049b8a452.zip | |
feat(app): add workspace startup script to projects
Diffstat (limited to 'packages/app')
| -rw-r--r-- | packages/app/src/components/dialog-edit-project.tsx | 15 | ||||
| -rw-r--r-- | packages/app/src/i18n/en.ts | 3 |
2 files changed, 18 insertions, 0 deletions
diff --git a/packages/app/src/components/dialog-edit-project.tsx b/packages/app/src/components/dialog-edit-project.tsx index 9cf7ce575..7664470f7 100644 --- a/packages/app/src/components/dialog-edit-project.tsx +++ b/packages/app/src/components/dialog-edit-project.tsx @@ -25,6 +25,7 @@ export function DialogEditProject(props: { project: LocalProject }) { name: defaultName(), color: props.project.icon?.color || "pink", iconUrl: props.project.icon?.override || "", + startup: props.project.commands?.start ?? "", saving: false, }) @@ -69,15 +70,18 @@ export function DialogEditProject(props: { project: LocalProject }) { async function handleSubmit(e: SubmitEvent) { e.preventDefault() + if (!props.project.id) return setStore("saving", true) const name = store.name.trim() === folderName() ? "" : store.name.trim() + const start = store.startup.trim() await globalSDK.client.project.update({ projectID: props.project.id, directory: props.project.worktree, name, icon: { color: store.color, override: store.iconUrl }, + commands: { start }, }) setStore("saving", false) dialog.close() @@ -215,6 +219,17 @@ export function DialogEditProject(props: { project: LocalProject }) { </div> </div> </Show> + + <TextField + multiline + label={language.t("dialog.project.edit.worktree.startup")} + description={language.t("dialog.project.edit.worktree.startup.description")} + placeholder={language.t("dialog.project.edit.worktree.startup.placeholder")} + value={store.startup} + onChange={(v) => setStore("startup", v)} + spellcheck={false} + class="max-h-40 w-full font-mono text-xs no-scrollbar" + /> </div> <div class="flex justify-end gap-2"> diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts index 8249c68f9..f2ba88c59 100644 --- a/packages/app/src/i18n/en.ts +++ b/packages/app/src/i18n/en.ts @@ -257,6 +257,9 @@ export const dict = { "dialog.project.edit.icon.recommended": "Recommended: 128x128px", "dialog.project.edit.color": "Color", "dialog.project.edit.color.select": "Select {{color}} color", + "dialog.project.edit.worktree.startup": "Workspace startup script", + "dialog.project.edit.worktree.startup.description": "Runs after creating a new workspace (worktree).", + "dialog.project.edit.worktree.startup.placeholder": "e.g. bun install", "context.breakdown.title": "Context Breakdown", "context.breakdown.note": 'Approximate breakdown of input tokens. "Other" includes tool definitions and overhead.', |
