Skip to content

Commit 66523cf

Browse files
authored
docs: 1.14 release follow-up fixes (#766)
* docs: 1.14 fixes for HITL events and Creator Center env vars (#764) * docs: reorganize chatflow API tags and surface workflow_run_id * refactor: update internal tooling for dify-graphon repo split * fix: surface workflow_run_id in HITL stream events * chore: tighten env-vars skill source-of-truth rule * docs: document Creator Center env vars * fix: use language-prefixed paths for non-api-reference links * fix: drop redundant workflow_run_id from workflow HITL events * fix: drop format uuid from chatflow HITL workflow_run_id * docs: small fixes for self-host, workspace, and CJK disclaimers (#765) * docs: shorten docker-compose section headings * docs: update Team plan limit and remove Dataset Operator role * fix: correct Japanese translation errors in workspace docs * style: align AI translation disclaimers with CJK spacing rules * style: add missing space between disclaimer link and particle in ja docs * fix: point zh general-specifications disclaimer to en source * fix: drop format uuid from chatflow workflow paused event
1 parent dd89e17 commit 66523cf

225 files changed

Lines changed: 478 additions & 363 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/skills/dify-docs-env-vars/SKILL.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,18 @@ Read these shared guides:
1717
2. `writing-guides/formatting-guide.md`
1818
3. `writing-guides/glossary.md`
1919

20+
## Source of Truth: `docker/.env.example`
21+
22+
The doc mirrors `docker/.env.example`, the supported self-host knob surface.
23+
24+
| Var location | Action |
25+
|---|---|
26+
| In `.env.example`, uncommented | Document. |
27+
| In `.env.example`, commented (`#FOO=bar`) | Document; add to **Verifier false positives** in `ignored-vars.md` (the verifier can't parse defaults from comments). |
28+
| Only in `api/configs/` Pydantic, not in `.env.example` | **Don't document.** Upstream-deferred; file a PR adding it to `.env.example` first. |
29+
30+
The verifier's "extra in docs" signal is not an escape hatch. Never suppress it for Pydantic-only vars via `ignored-vars.md`.
31+
2032
## Four-Step Process
2133

2234
**Pull the latest Dify code** before tracing. In the Dify codebase directory:
@@ -143,7 +155,7 @@ Some variables in `.env.example` are deliberately not documented (Cloud-only, ex
143155

144156
- Remove a variable from the docs as Cloud-only → add it under **Cloud-only (SaaS)** in `ignored-vars.md`.
145157
- Skip documenting an experimental or internal flag → add it under **Experimental / internal**.
146-
- Document a supported variable whose `.env.example` entry is commented out → add it under **Verifier false positives**.
158+
- Document a supported variable whose `.env.example` entry is **commented out** (e.g., `#FOO=bar`) → add it under **Verifier false positives**. This bucket is **only** for vars that exist in `.env.example` in commented form. Do not use it to suppress verifier signal for vars that are absent from `.env.example` entirely — those are upstream-deferred (see [Source of Truth](#source-of-truth-docker-env-example)) and must not be documented.
147159

148160
Every entry must include a source reference (PR, commit, or audit date).
149161

.claude/skills/dify-docs-env-vars/deep-dive.md

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,9 @@ This is primarily a developer/debugging tool. Not recommended for production due
287287

288288
**Key code locations:**
289289
- Definition: `api/configs/deploy/__init__.py`
290-
- Workflow debug: `api/core/workflow/workflow_entry.py`
290+
- Workflow debug: `api/core/workflow/workflow_entry.py` (entry); `graphon/src/graphon/graph_engine/layers/debug_logging.py` (DebugLoggingLayer; lives in the graphon repo)
291291
- Tool callbacks: `api/core/callback_handler/agent_tool_callback_handler.py`
292-
- LLM logging: `api/dify_graph/model_runtime/model_providers/__base/large_language_model.py`
292+
- LLM logging: `graphon/src/graphon/model_runtime/model_providers/base/large_language_model.py` (graphon repo)
293293

294294
---
295295

@@ -1479,3 +1479,35 @@ The existing entry near line 937 describes behavior correctly, but the stated de
14791479
### POSTGRES_MAX_CONNECTIONS — default correction
14801480

14811481
Covered in the "PostgreSQL / MySQL Performance Tuning Variables" section. `docker/.env.example` bumped the default from `100` to `200` upstream (`docker-compose.yaml` passes it as `-c max_connections=${POSTGRES_MAX_CONNECTIONS:-200}` to the Postgres container). The higher default is safer for Dify's multi-worker + Celery + async-task traffic shape; operators can still lower it on constrained hosts.
1482+
1483+
---
1484+
1485+
### CREATORS_PLATFORM_FEATURES_ENABLED, CREATORS_PLATFORM_API_URL, CREATORS_PLATFORM_OAUTH_CLIENT_ID
1486+
1487+
Creator Center is the submission portal where users upload Dify apps as DSL templates. Submitted templates are reviewed and, once approved, listed on Dify Marketplace. The console's **Publish to Marketplace** button (i18n key `common.publishToMarketplace` in `web/i18n/{en-US,zh-Hans,ja-JP}/workflow.json`) drives this flow.
1488+
1489+
**Flow:**
1490+
1491+
1. User clicks **Publish to Marketplace** in the app builder. The button is gated on `systemFeatures.enable_creators_platform` (frontend: `web/app/components/app/app-publisher/index.tsx`).
1492+
2. Frontend calls `POST /apps/{app_id}/publish-to-creators-platform`.
1493+
3. Endpoint (`api/controllers/console/app/app.py: AppPublishToCreatorsPlatformApi`) returns 403 when `CREATORS_PLATFORM_FEATURES_ENABLED` is false. Otherwise it exports the app DSL via `AppDslService.export_dsl(include_secret=False)`.
1494+
4. `core/helper/creators.upload_dsl()` POSTs the DSL to `{CREATORS_PLATFORM_API_URL}/api/v1/templates/anonymous-upload` and receives a `claim_code`.
1495+
5. `get_redirect_url()` builds the redirect with `?dsl_claim_code=...`. If `CREATORS_PLATFORM_OAUTH_CLIENT_ID` is non-empty, it also signs an OAuth authorization code via `OAuthServerService.sign_oauth_authorization_code(client_id, user_account_id)` and adds `&oauth_code=...`.
1496+
6. Frontend opens the redirect URL in a new tab, taking the user into Creator Center to fill in template details.
1497+
1498+
**Behavior by var state:**
1499+
1500+
- `CREATORS_PLATFORM_FEATURES_ENABLED=false`: button hidden, console API returns 403. Self-hosters use this to remove the one-click publish path.
1501+
- `CREATORS_PLATFORM_API_URL` overridden: only meaningful with a self-hosted Creator Center instance. Default `https://creators.dify.ai`.
1502+
- `CREATORS_PLATFORM_OAUTH_CLIENT_ID` empty (default): anonymous upload — the receiving Creator Center cannot attribute the template to the publishing user.
1503+
1504+
**Key code locations:**
1505+
1506+
- Pydantic config: `api/configs/feature/__init__.py` (`CreatorsPlatformConfig`)
1507+
- Service exposure: `api/services/feature_service.py` (`enable_creators_platform`)
1508+
- Console controller: `api/controllers/console/app/app.py` (`AppPublishToCreatorsPlatformApi`)
1509+
- Upload helper: `api/core/helper/creators.py`
1510+
- Frontend trigger: `web/app/components/app/app-publisher/index.tsx`
1511+
- UI labels: `common.publishToMarketplace` in `web/i18n/{en-US,zh-Hans,ja-JP}/workflow.json`
1512+
1513+
**Naming note:** Env var prefix is `CREATORS_PLATFORM_*` and the backend Pydantic class is `CreatorsPlatformConfig`, but the user-facing product name is **Creator Center** and the UI button reads "Publish to Marketplace" (templates appear on Marketplace after Creator Center review). Use "Creator Center" in user-facing prose; the prefix is a backend-only artifact.

.claude/skills/dify-docs-feature-research/SKILL.md

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,38 +10,62 @@ Pre-writing research that combines codebase analysis with community feedback to
1010
## Before Starting
1111

1212
1. Ask the user which feature, node, or area to research.
13-
2. Confirm which branch of the Dify codebase to investigate (default: `main`).
13+
2. Confirm which branch to investigate (default: `main` for both repos).
1414
3. Check if the user has a specific doc page in mind for the rewrite.
1515

16-
**Codebase location**: The Dify codebase is typically available as an additional working directory. If not, ask the user for the path.
16+
**Codebase location**: Dify's backend logic is split across two repos.
1717

18-
**Pull latest code** before investigating. In the Dify codebase directory:
18+
| Repo | Local path (typical) | GitHub | Owns |
19+
|:-----|:---------------------|:-------|:-----|
20+
| dify | `~/Documents/Work/Dify Repo/dify` | `langgenius/dify` | API, web, orchestration, integration nodes (Agent, Knowledge, Datasource, Trigger), Celery tasks |
21+
| graphon | `~/Documents/Work/Dify Repo/graphon` | `langgenius/graphon` | Graph engine, runtime, model_runtime, built-in workflow nodes, HTTP/file/protocols |
22+
23+
If either is missing as a working directory, ask the user for the path.
24+
25+
**Pull latest code** before investigating. Run in each repo directory:
1926
```bash
2027
git fetch origin && git checkout main && git pull origin main
2128
```
22-
If the user specified a different branch, substitute accordingly.
29+
If the user specified a different branch for either repo, substitute accordingly.
2330

24-
**GitHub repo**: `langgenius/dify`
31+
**Version pinning matters.** dify pins graphon to a specific version. Before reading graphon code, check the pinned version and verify against that tag, not graphon `main`:
32+
```bash
33+
grep '"graphon' ~/Documents/Work/Dify\ Repo/dify/api/pyproject.toml
34+
# e.g. "graphon~=0.2.2" → check out v0.2.2 in graphon, not main
35+
```
36+
If you read graphon `main` and document behavior that ships only in an unreleased graphon version, the docs will not match what users see. When in doubt, ask the user whether to verify against the pinned version or graphon `main` (the latter is appropriate when documenting something the user knows is about to ship).
2537

2638
## Research Process
2739

2840
Run Phase 1 and Phase 2 in parallel using subagents where possible.
2941

3042
### Phase 1: Codebase Investigation
3143

32-
Locate and read the source code for the feature. Cover all three layers:
44+
First decide which repo owns the backend implementation:
3345

34-
**Backend implementation** — Find the core logic. For workflow nodes, check `api/dify_graph/nodes/<node_name>/`. Read:
46+
| Feature class | Repo | Path |
47+
|:--------------|:-----|:-----|
48+
| Built-in workflow nodes (LLM, Code, HTTP Request, If/Else, Loop, Iteration, Parameter Extractor, Document Extractor, List Operator, Variable Aggregator/Assigner, Question Classifier, Template Transform, Tool, Start/End/Answer, Human Input) | graphon | `src/graphon/nodes/<node_name>/` |
49+
| Integration nodes (Agent, Knowledge Retrieval, Knowledge Index, Datasource, Trigger Plugin/Schedule/Webhook) | dify | `api/core/workflow/nodes/<node_name>/` |
50+
| Graph engine, runtime state, variable pool, command channels, layers | graphon | `src/graphon/graph_engine/`, `src/graphon/runtime/` |
51+
| Model runtime, model providers, LLM/embedding/rerank invocation | graphon | `src/graphon/model_runtime/` |
52+
| Workflow orchestration in Flask routes and Celery tasks | dify | `api/controllers/`, `api/tasks/`, `api/services/` |
53+
| RAG and knowledge retrieval logic | dify | `api/core/rag/` |
54+
| Tool plugins | dify | `api/core/tools/` |
55+
56+
Then locate and read the source code, covering all three layers:
57+
58+
**Backend implementation** — Find the core logic in the repo identified above. Read:
3559
- The main node class (execution logic, `_run()` method)
3660
- Entity definitions (data models, enums, supported types)
3761
- Any template or streaming logic
3862

39-
**Frontend UI** — Find the React components. For workflow nodes, check `web/app/components/workflow/nodes/<node_name>/`. Read:
63+
**Frontend UI** — Find the React components in the dify repo (the web frontend was not split out). For workflow nodes, check `web/app/components/workflow/nodes/<node_name>/`. Read:
4064
- Panel component (what configuration options users see)
4165
- Type definitions (data shape)
4266
- Default values and validation rules
4367

44-
**API surface** — Trace how the feature's output reaches the API response. Check controllers, response converters, and serialization.
68+
**API surface** — Trace how the feature's output reaches the API response. Check controllers, response converters, and serialization (all in dify).
4569

4670
Produce a summary of:
4771
- What the feature does (based on code, not existing docs)
@@ -56,13 +80,19 @@ Flag any behavior inferred from code rather than observed in the running product
5680

5781
Search for user-reported problems and questions across these channels:
5882

59-
**GitHub Issues** — Run multiple searches with varied terms:
83+
**GitHub Issues** — Run multiple searches with varied terms. Always search dify; also search graphon when the feature is a built-in workflow node, the graph engine, runtime, or model_runtime:
6084
```bash
6185
gh issue list --repo langgenius/dify --search "<feature name>" --limit 30
6286
gh issue list --repo langgenius/dify --search "<alternative name>" --limit 30
6387
gh search issues "<feature> <context>" --repo langgenius/dify --limit 20
88+
89+
# For built-in nodes, engine, runtime, or model_runtime, also:
90+
gh issue list --repo langgenius/graphon --search "<feature name>" --limit 30
91+
gh search issues "<feature> <context>" --repo langgenius/graphon --limit 20
6492
```
6593

94+
End users typically file in dify even for graphon-owned behavior; graphon's tracker tends to hold engineering-side reports. Check both to avoid missing pain points.
95+
6696
**GitHub Discussions** — Search for related discussion topics:
6797
```bash
6898
gh api "repos/langgenius/dify/discussions?per_page=30" --jq '.[] | select(.title | test("<pattern>"; "i"))'

.claude/skills/dify-docs-release-sync/SKILL.md

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -102,17 +102,21 @@ Also check: Pydantic models and `fields/` serializers used by Service API contro
102102

103103
Read the PR description for context. Map changed source paths to likely doc areas:
104104

105-
| Source path pattern | Likely doc area |
106-
|---|---|
107-
| `api/core/workflow/nodes/` | `en/use-dify/workflow/nodes/` |
108-
| `api/core/rag/` | `en/use-dify/knowledge/` |
109-
| `api/core/model_runtime/` | `en/use-dify/model-providers/` |
110-
| `api/core/tools/` | `en/use-dify/tools/` or workflow tool node docs |
111-
| `api/core/agent/` | `en/use-dify/build-apps/agent.mdx` |
112-
| `api/core/app/` | `en/use-dify/build-apps/` |
113-
| `web/app/components/` | UI-related docs (check PR description for specifics) |
114-
| `docker/`, deployment configs | `en/getting-started/install/` |
115-
| `api/configs/` | Configuration/environment variable docs |
105+
| Repo | Source path pattern | Likely doc area |
106+
|---|---|---|
107+
| dify | `api/core/workflow/nodes/` (integration nodes only: agent, knowledge, datasource, trigger) | `en/use-dify/workflow/nodes/` |
108+
| dify | `api/core/rag/` | `en/use-dify/knowledge/` |
109+
| dify | `api/core/tools/` | `en/use-dify/tools/` or workflow tool node docs |
110+
| dify | `api/core/agent/` | `en/use-dify/build-apps/agent.mdx` |
111+
| dify | `api/core/app/` | `en/use-dify/build-apps/` |
112+
| dify | `web/app/components/` | UI-related docs (check PR description for specifics) |
113+
| dify | `docker/`, deployment configs | `en/getting-started/install/` |
114+
| dify | `api/configs/` | Configuration/environment variable docs |
115+
| graphon | `src/graphon/nodes/` (built-in nodes: llm, code, http_request, if_else, loop, iteration, parameter_extractor, document_extractor, list_operator, variable_aggregator/assigner, question_classifier, template_transform, tool, start/end/answer, human_input) | `en/use-dify/workflow/nodes/` |
116+
| graphon | `src/graphon/model_runtime/` | `en/use-dify/model-providers/` |
117+
| graphon | `src/graphon/graph_engine/`, `src/graphon/runtime/` | workflow engine behavior, execution semantics |
118+
119+
When checking dify PRs, also scan recent merges in `langgenius/graphon` for the same release window. A user-visible workflow change may ship as a graphon release plus a dify pin bump (look for changes to `api/pyproject.toml` and `api/uv.lock`).
116120

117121
**Important**: These mappings are heuristic. For every candidate match:
118122

AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ For task-specific guidance, see `writing-guides/index.md`.
1515
- Write in English only, except when specifically optimizing Chinese or Japanese translations.
1616
- Only edit the English section in `docs.json`. Translation sections sync automatically.
1717
- MDX files require `title` and `description` in YAML frontmatter.
18-
- When writing about a feature, verify behavior against the Dify codebase, not just existing docs. Existing docs may be outdated or completely wrong. When rewriting a page, treat every claim in the original as unverified. Check field names, types, required/optional status, and behavior descriptions against the current code. Never carry forward details from legacy docs without independent verification.
18+
- When writing about a feature, verify behavior against the Dify codebase, not just existing docs. Existing docs may be outdated or completely wrong. When rewriting a page, treat every claim in the original as unverified. Check field names, types, required/optional status, and behavior descriptions against the current code. Never carry forward details from legacy docs without independent verification. The backend is split across two repos: built-in workflow nodes, the graph engine, runtime, and model_runtime live in the `graphon` repo (version-pinned in `dify/api/pyproject.toml`); integration nodes (Agent, Knowledge, Datasource, Trigger), orchestration, RAG, and tools stay in `dify`. Verify against the graphon version actually pinned by dify, not graphon `main`.
1919
- For new features, the user may specify a development branch. Code on development branches may be in flux—when behavior is ambiguous, ask rather than assume.
2020
- When adding or updating internal-only instructions, tooling, configs, or other non-public files, ensure all paths that should not be exposed by Mintlify are covered in `.mintignore`.
2121
- Never use `--no-verify` when committing.

0 commit comments

Comments
 (0)