From 82cdc4ca2d5b2c04c1a941b57a427a84e50d4025 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Thu, 26 Jun 2025 13:06:26 +0000 Subject: [PATCH 1/4] feat(devcontainer): add cursor, filebrowser, windsurf and zed --- .devcontainer/devcontainer.json | 31 +++++++++- .../filebrowser/devcontainer-feature.json | 50 +++++++++++++++++ .devcontainer/filebrowser/install.sh | 56 +++++++++++++++++++ dogfood/coder/main.tf | 22 ++++---- 4 files changed, 148 insertions(+), 11 deletions(-) create mode 100644 .devcontainer/filebrowser/devcontainer-feature.json create mode 100644 .devcontainer/filebrowser/install.sh diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 8d16afcda362a..a37647fb1acee 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -9,7 +9,8 @@ "ghcr.io/coder/devcontainer-features/code-server:1": { "auth": "none", "port": 13337 - } + }, + "./filebrowser": {} }, // SYS_PTRACE to enable go debugging "runArgs": [ @@ -20,6 +21,34 @@ "extensions": [ "biomejs.biome" ] + }, + "coder": { + "apps": [ + { + "slug": "cursor", + "displayName": "Cursor Desktop", + "url": "cursor://coder.coder-remote/openDevContainer?owner=${localEnv:CODER_WORKSPACE_OWNER_NAME}&workspace=${localEnv:CODER_WORKSPACE_NAME}&agent=${localEnv:CODER_WORKSPACE_PARENT_AGENT_NAME}&url=${localEnv:CODER_URL}&token=$SESSION_TOKEN&devContainerName=${localEnv:CONTAINER_ID}&devContainerFolder=${containerWorkspaceFolder}", + "external": true, + "icon": "/icon/cursor.svg", + "order": 1 + }, + { + "slug": "windsurf", + "displayName": "Windsurf Editor", + "url": "windsurf://coder.coder-remote/openDevContainer?owner=${localEnv:CODER_WORKSPACE_OWNER_NAME}&workspace=${localEnv:CODER_WORKSPACE_NAME}&agent=${localEnv:CODER_WORKSPACE_PARENT_AGENT_NAME}&url=${localEnv:CODER_URL}&token=$SESSION_TOKEN&devContainerName=${localEnv:CONTAINER_ID}&devContainerFolder=${containerWorkspaceFolder}", + "external": true, + "icon": "/icon/windsurf.svg", + "order": 4 + }, + { + "slug": "zed", + "displayName": "Zed Editor", + "url": "zed://ssh/${localEnv:CODER_WORKSPACE_AGENT_NAME}.${localEnv:CODER_WORKSPACE_NAME}.${localEnv:CODER_WORKSPACE_OWNER_NAME}/${containerWorkspaceFolder}", + "external": true, + "icon": "/icon/zed.svg", + "order": 5 + } + ] } }, "mounts": [ diff --git a/.devcontainer/filebrowser/devcontainer-feature.json b/.devcontainer/filebrowser/devcontainer-feature.json new file mode 100644 index 0000000000000..3829139cf3143 --- /dev/null +++ b/.devcontainer/filebrowser/devcontainer-feature.json @@ -0,0 +1,50 @@ +{ + "id": "filebrowser", + "version": "0.0.1", + "name": "File Browser", + "description": "A web-based file browser for your development container", + "options": { + "port": { + "type": "string", + "default": "13339", + "description": "The port to run filebrowser on" + }, + // "folder": { + // "type": "string", + // "default": "${containerWorkspaceFolder}", + // "description": "The root directory for filebrowser to serve" + // }, + "auth": { + "type": "string", + "enum": [ + "none", + "password" + ], + "default": "none", + "description": "Authentication method (none or password)" + } + }, + "entrypoint": "/usr/local/bin/filebrowser-entrypoint", + "dependsOn": { + "ghcr.io/devcontainers/features/common-utils:2": {} + }, + "customizations": { + "coder": { + "apps": [ + { + "slug": "filebrowser", + "displayName": "File Browser", + "url": "http://localhost:${localEnv:FEATURE_FILEBROWSER_OPTION_PORT:13339}", + "icon": "/icon/filebrowser.svg", + "order": 3, + "subdomain": true, + "healthcheck": { + "url": "http://localhost:${localEnv:FEATURE_FILEBROWSER_OPTION_PORT:13339}/health", + "interval": 5, + "threshold": 6 + } + } + ] + } + } +} diff --git a/.devcontainer/filebrowser/install.sh b/.devcontainer/filebrowser/install.sh new file mode 100644 index 0000000000000..1f8390f63864c --- /dev/null +++ b/.devcontainer/filebrowser/install.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +set -euo pipefail + +BOLD='\033[0;1m' + +printf "%sInstalling filebrowser\n\n" "${BOLD}" + +# Check if filebrowser is installed. +if ! command -v filebrowser &>/dev/null; then + curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash +fi + +printf "🥳 Installation complete!\n\n" + +# Create run script. +cat >/usr/local/bin/filebrowser-entrypoint <>\${LOG_PATH} 2>&1 & + +printf "📝 Logs at \${LOG_PATH}\n\n" +EOF + +chmod +x /usr/local/bin/filebrowser-entrypoint + +printf "✅ File Browser installed!\n\n" +printf "🚀 Run 'filebrowser-entrypoint' to start the service\n\n" diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index dfc1127ba387b..457d6d2532b4c 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -328,19 +328,21 @@ module "coder-login" { } module "cursor" { - count = data.coder_workspace.me.start_count - source = "dev.registry.coder.com/coder/cursor/coder" - version = "1.1.0" - agent_id = coder_agent.dev.id - folder = local.repo_dir + count = data.coder_workspace.me.start_count + source = "dev.registry.coder.com/coder/cursor/coder" + version = "1.1.0" + agent_id = coder_agent.dev.id + agent_name = "dev" + folder = local.repo_dir } module "windsurf" { - count = data.coder_workspace.me.start_count - source = "registry.coder.com/coder/windsurf/coder" - version = "1.0.0" - agent_id = coder_agent.dev.id - folder = local.repo_dir + count = data.coder_workspace.me.start_count + source = "registry.coder.com/coder/windsurf/coder" + version = "1.0.0" + agent_id = coder_agent.dev.id + agent_name = "dev" + folder = local.repo_dir } module "zed" { From d37391d29c2bc252ba3d2954fb5fe37b1314674c Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Thu, 26 Jun 2025 16:45:23 +0300 Subject: [PATCH 2/4] Update .devcontainer/devcontainer.json --- .devcontainer/devcontainer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index a37647fb1acee..826d3fd38e6c2 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -43,7 +43,7 @@ { "slug": "zed", "displayName": "Zed Editor", - "url": "zed://ssh/${localEnv:CODER_WORKSPACE_AGENT_NAME}.${localEnv:CODER_WORKSPACE_NAME}.${localEnv:CODER_WORKSPACE_OWNER_NAME}/${containerWorkspaceFolder}", + "url": "zed://ssh/${localEnv:CODER_WORKSPACE_AGENT_NAME}.${localEnv:CODER_WORKSPACE_NAME}.${localEnv:CODER_WORKSPACE_OWNER_NAME}.coder/${containerWorkspaceFolder}", "external": true, "icon": "/icon/zed.svg", "order": 5 From be093004883a407ad70a00f00d8cb84a29b7a960 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Thu, 26 Jun 2025 13:49:09 +0000 Subject: [PATCH 3/4] not supported --- dogfood/coder/main.tf | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index 457d6d2532b4c..aef4e19ef0718 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -328,21 +328,23 @@ module "coder-login" { } module "cursor" { - count = data.coder_workspace.me.start_count - source = "dev.registry.coder.com/coder/cursor/coder" - version = "1.1.0" - agent_id = coder_agent.dev.id - agent_name = "dev" - folder = local.repo_dir + count = data.coder_workspace.me.start_count + source = "dev.registry.coder.com/coder/cursor/coder" + version = "1.1.0" + agent_id = coder_agent.dev.id + # Not supported yet. + # agent_name = "dev" + folder = local.repo_dir } module "windsurf" { - count = data.coder_workspace.me.start_count - source = "registry.coder.com/coder/windsurf/coder" - version = "1.0.0" - agent_id = coder_agent.dev.id - agent_name = "dev" - folder = local.repo_dir + count = data.coder_workspace.me.start_count + source = "registry.coder.com/coder/windsurf/coder" + version = "1.0.0" + agent_id = coder_agent.dev.id + # Not supported yet. + # agent_name = "dev" + folder = local.repo_dir } module "zed" { From f8d2fd987636fd2301d5876b3ca8576dde3a1369 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Thu, 26 Jun 2025 13:56:47 +0000 Subject: [PATCH 4/4] undo template changes --- dogfood/coder/main.tf | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/dogfood/coder/main.tf b/dogfood/coder/main.tf index aef4e19ef0718..dfc1127ba387b 100644 --- a/dogfood/coder/main.tf +++ b/dogfood/coder/main.tf @@ -332,9 +332,7 @@ module "cursor" { source = "dev.registry.coder.com/coder/cursor/coder" version = "1.1.0" agent_id = coder_agent.dev.id - # Not supported yet. - # agent_name = "dev" - folder = local.repo_dir + folder = local.repo_dir } module "windsurf" { @@ -342,9 +340,7 @@ module "windsurf" { source = "registry.coder.com/coder/windsurf/coder" version = "1.0.0" agent_id = coder_agent.dev.id - # Not supported yet. - # agent_name = "dev" - folder = local.repo_dir + folder = local.repo_dir } module "zed" { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy