diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml
index 4e8fb9b0e..31cb673da 100644
--- a/docker/docker-compose.yaml
+++ b/docker/docker-compose.yaml
@@ -100,6 +100,8 @@ services:
environment:
- CI=true
- DEER_FLOW_HOME=/app/backend/.deer-flow
+ - DEER_FLOW_CONFIG_PATH=/app/backend/config.yaml
+ - DEER_FLOW_EXTENSIONS_CONFIG_PATH=/app/backend/extensions_config.json
- DEER_FLOW_CHANNELS_LANGGRAPH_URL=${DEER_FLOW_CHANNELS_LANGGRAPH_URL:-http://langgraph:2024}
- DEER_FLOW_CHANNELS_GATEWAY_URL=${DEER_FLOW_CHANNELS_GATEWAY_URL:-http://gateway:8001}
# DooD path/network translation
@@ -127,7 +129,7 @@ services:
UV_INDEX_URL: ${UV_INDEX_URL:-https://pypi.org/simple}
UV_EXTRAS: ${UV_EXTRAS:-}
container_name: deer-flow-langgraph
- command: sh -c 'cd /app/backend && allow_blocking="" && if [ "$${LANGGRAPH_ALLOW_BLOCKING:-0}" = "1" ]; then allow_blocking="--allow-blocking"; fi && uv run langgraph dev --no-browser $${allow_blocking} --no-reload --host 0.0.0.0 --port 2024 --n-jobs-per-worker $${LANGGRAPH_JOBS_PER_WORKER:-10}'
+ command: sh -c 'cd /app/backend && args="--no-browser --no-reload --host 0.0.0.0 --port 2024 --n-jobs-per-worker $${LANGGRAPH_JOBS_PER_WORKER:-10}" && if [ "$${LANGGRAPH_ALLOW_BLOCKING:-0}" = "1" ]; then args="$$args --allow-blocking"; fi && uv run langgraph dev $$args'
volumes:
- ${DEER_FLOW_CONFIG_PATH}:/app/backend/config.yaml:ro
- ${DEER_FLOW_EXTENSIONS_CONFIG_PATH}:/app/backend/extensions_config.json:ro
diff --git a/frontend/src/components/workspace/artifacts/artifact-file-detail.tsx b/frontend/src/components/workspace/artifacts/artifact-file-detail.tsx
index be5e735ea..42c24b820 100644
--- a/frontend/src/components/workspace/artifacts/artifact-file-detail.tsx
+++ b/frontend/src/components/workspace/artifacts/artifact-file-detail.tsx
@@ -188,17 +188,19 @@ export function ArtifactFileDetail({
)}
{!isWriteFile && (
-
-
-
+ {
+ const w = window.open(
+ urlOfArtifact({ filepath, threadId }),
+ "_blank",
+ "noopener,noreferrer",
+ );
+ if (w) w.opener = null;
+ }}
+ />
)}
{isCodeFile && (
)}
{!isWriteFile && (
-
-
-
+ {
+ const w = window.open(
+ urlOfArtifact({ filepath, threadId, download: true }),
+ "_blank",
+ "noopener,noreferrer",
+ );
+ if (w) w.opener = null;
+ }}
+ />
)}
)}
- e.stopPropagation()}
- >
-
+
+
diff --git a/frontend/src/components/workspace/messages/message-group.tsx b/frontend/src/components/workspace/messages/message-group.tsx
index f6e10bc6b..c80d236de 100644
--- a/frontend/src/components/workspace/messages/message-group.tsx
+++ b/frontend/src/components/workspace/messages/message-group.tsx
@@ -280,16 +280,17 @@ function ToolCall({
return (
{
- window.open(url, "_blank");
- }}
>
{url && (
-
+
{title}
)}