* 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
* docs: sync App Toolkit with dify#35442 follow-up settings (#757)
* docs: sync App Toolkit page with follow-up settings PR and UI labels
* fix: correct CJK format linter false positives
* chore: broaden post-writing audit scope to whole documents
* docs: address Copilot review on PR #754
Restore the Tab titles rule in formatting-zh.md, which had been trimmed
to a stub. Drop the First-Mention Rule entry from the terminology-check
skill's Output Format so the report sections match the Checks to
Perform sections (the corresponding check was removed earlier).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* docs: document workflow collaboration feature (#758)
* docs: add workflow collaboration user guide
* docs: tighten style and formatting guides
* docs: avoid "please" in zh refer-to phrases
* fix: add CJK-Latin spacing in translation notice templates
* docs: add env var coordination to dify-docs-guides skill
* docs: document collaboration environment variables
* style: trim collaboration env var descriptions for consistency
* docs: add zoom menu tip for hiding comments and cursors
* docs: sync collaboration UI labels after upstream localization
* docs: rewrite orchestration logic for cross-workflow node copy-paste (#759)
* docs: rewrite orchestration logic and extend workflow-chatflow overview
* translate: update zh and ja for orchestration logic and overview
* docs: refine orchestration logic node reuse section
* docs: clarify MAX_TREE_DEPTH env var description
* fix: align zh title and body references with the glossary UI label
* fix: align EN node reuse text with zh/ja translations (User Input exception)
Agent-Logs-Url: https://github.com/langgenius/dify-docs/sessions/00e54676-8a43-4b6f-99f8-fef2495b054f
Co-authored-by: RiskeyL <36894937+RiskeyL@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* docs: note HTTPS requirement for cross-workflow node paste (#761)
* docs: HITL Service API polish and 1.14 release follow-ups (#760)
* feat: add env var ignore-list consumed by the verifier
* docs: add 1.14 env vars and correct drifted defaults
* fix: correct knowledge pipeline datasource-plugins response in api references
* chore: record 1.14 env var traces in deep-dive
* docs: update HITL Service API documentation
* docs: clarify /api-reference/ link convention in formatting guide
* docs: update marketplace publish flow
* fix: drop duplicate workflow_run_id from HITL event data schemas
The three HITL event schemas (StreamEventHumanInputRequired,
StreamEventHumanInputFormFilled, StreamEventHumanInputFormTimeout)
declared `workflow_run_id` inside `data.properties`, but
`HumanInputRequiredResponse` in `api/core/app/entities/task_entities.py`
defines `workflow_run_id` only as a top-level field on the response
(alongside `event` and `task_id`); its inner `Data` class doesn't carry
one. The OpenAPI spec already provides top-level `workflow_run_id` via
the `$ref: StreamEventBase` in the `allOf` composition, so the inline
duplicate was a phantom field that doesn't exist in the actual payload.
Remove the inline `workflow_run_id` from `data.properties` in all three
HITL event schemas across all six spec files. This relies on
`StreamEventBase` to provide `workflow_run_id` at the top level via
composition, matching how every other event schema in this spec handles
it (e.g., `StreamEventWorkflowStarted`).
Reported by Copilot on PR #756.
* fix: address Copilot's review comments
* feat: skip api-reference paths in internal link checker
The /api-reference/... URL convention (no language prefix, derived
from OpenAPI tag/summary) generates pages that Mintlify auto-builds
rather than from filesystem MDX files, so the existing filesystem
resolution logic flags every such link as broken.
Skip both filesystem-existence and anchor validation for any URL
containing /api-reference/, mirroring the existing
anchor_check_skipped behaviour. The convention is documented in
writing-guides/formatting-guide.md.
Caveat: typos in tag or summary slugs will now pass silently. A
follow-up could parse the OpenAPI specs to validate against the
real tag/summary kebab pairs if hand-written api-reference links
become common enough to warrant it.
* fix: correct CORS anchor in ja environments page
Inline link [CORS設定](#cors 設定) used a literal space, but the
heading "CORS 設定" slugifies to "cors-設定" (whitespace replaced
with hyphen). Update the anchor to #cors-設定.
* fix: align datasource-plugins is_published and 200 description with node framing
* fix: clarify chatflow stream workflow events task_id origin
* docs: address HITL Service API reader-test feedback
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* feat: add anchor validation to internal link checker
* fix: correct stale anchor links in en/zh/ja docs
* refactor: address Copilot feedback on link checker
* docs: rewrite the variable aggregator node page
* translate: update variable aggregator page for zh and ja
* fix: address review feedback on variable aggregator page
Remove trailing whitespace in en page and restore translation
disclaimers on zh and ja pages for consistency with other translated
node pages.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs: require translation disclaimer on all zh/ja pages
Add a Translation Disclaimer section to both zh and ja formatting
guides. Every translated page must include the disclaimer regardless
of review status, since the English source is always canonical and
readers benefit from a consistent pointer on every page.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs: clarify variable aggregator usage in trigger pages
Simplify the guidance on using a Variable Aggregator to converge
plugin and webhook trigger branches. Align zh and ja translations
with the glossary term (变量聚合器 / 変数集約器).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* docs: rewrite Output node page and add API mode glossary terms
* translate: sync zh/ja Output node pages with rewritten English source
* style: add link spacing rule for ja and expand anchor rule to cover Tab titles
* fix: remove trailing whitespace in en and replace em dashes in zh
* docs: document datasource_info_list per-type schemas for Run Pipeline API
* docs: improve Run Pipeline parameter descriptions and SSE event documentation
* translate: sync zh/ja pipeline API specs with English schema updates
* fix: address Copilot's PR review feedback on pipeline API docs
* style: add punctuation spacing and API cross-link rules to translation guides
* fix: fix all broken links
* feat: add link-checking GitHub workflow
* fix: convert relative links to absolute paths in knowledge-pipeline pages
* fix: address Copilot review comments on link checker and ja docs
* feat: split link checks into per-PR internal and weekly external workflows
* feat: optimize the docs-release-sync skill
* docs: add doc_form validation to knowledge API spec
* docs: update AI Credits/Default Model Settings terminology
* Fix stale PR translation revert issue
When PR A is created before PR B but PR B merges first, the translation
workflow for PR A was reverting all of PR B's changes. This happened because
the translation workflow used PR A's working directory state (which is a
snapshot from before PR B existed) rather than applying only PR A's changes.
Root cause:
- setup_translation_branch() for new branches did:
checkout -b branch → reset --soft origin/main → reset
This kept PR's working directory which could be stale
- For incremental branches, merge_docs_json_for_incremental_update() took
the English section from PR HEAD, which was also stale for old PRs
Fix:
- For NEW branches: Create branch directly from origin/main (not from PR's
working directory). This ensures we start with the latest state including
all changes from PRs merged after this PR was created.
- For EXISTING branches: Merge main's docs.json structure with our
translations (instead of taking EN section from stale PR)
- For BOTH: Selectively checkout only the files that the PR actually changed
from PR's head, rather than bringing in the entire working directory.
This prevents overwriting files from other PRs.
Example issue (PR #593):
- PR #593 only added one file
- Translation PR #611 tried to delete 11 files and revert massive docs.json changes
- This was because it used PR #593's stale state from before other PRs merged
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Fix: Use PR's docs.json for finding file positions in navigation
The initial fix had a side effect: since we start from main's docs.json,
and PR's new files aren't in main's English section yet, sync_docs_json_incremental()
couldn't find where to place new files in the translation navigation.
Fix: Add `reference_sha` parameter to sync_docs_json_incremental() that loads
PR's docs.json for finding file positions, while still modifying main's
translation sections. This ensures:
1. Main's docs.json structure is preserved (no reverts)
2. New files are found in PR's docs.json
3. Translations are added at the correct positions
This also removes the unused _apply_pr_english_section_to_main() method.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Fix EN section not updated when using reference_sha
When the translation branch starts from main, the PR's docs.json
structural changes (new file entries in EN section) were not being
incorporated. This caused the translation PR to have mismatched
navigation entries.
The fix now also updates the EN section of the working directory's
docs.json when processing added files found in the reference
docs.json (from the PR).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Also remove deleted files from EN section in stale PR scenario
When processing deleted files, the sync now also removes them from the
EN section of docs.json. This is needed when the translation branch
starts from main, which may still have the deleted file entries.
Verified with comprehensive local testing covering 10 scenarios:
- Basic stale PR, multiple files, modifications, deletions
- Nested groups, new dropdowns, mixed operations
- Backward compatibility, incremental syncs, structure changes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Add ignore_files config to exclude specific files from translation
Adds ability to specify source language files that should not be translated:
- New `ignore_files` array in config.json
- Validation ensures paths start with source dir, have valid extension, no traversal
- Filtering applied in PRAnalyzer.categorize_files() and SyncPlanGenerator.generate_sync_plan()
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* update config
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* fix redirect language code prefixes
* rename: cn -> zh, jp -> ja
* remove hardcoded ja / zh references
* remove hardcoded 'english' references
* renamed variable names and dict keys to language agnostic names
* fix: add missing language helper methods to PRAnalyzer
- Add get_language_directory() method
- Initialize source_language and target_languages from config
- Fixes AttributeError when generating mixed PR errors
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* test: kitchen sink workflow validation v2
This PR validates the translation workflow after config-driven refactoring:
Changes:
- Add new test file: test-workflow-validation.mdx
- Modify existing file: introduction.mdx
- Update docs.json navigation
Tests:
- New file translation (add workflow)
- Existing file translation (update workflow)
- Navigation sync across languages
- Config-driven language codes (zh/ja instead of cn/jp)
- Source language abstraction (no hardcoded "English")
Expected workflow behavior:
1. Detect changes in en/ directory
2. Translate new file to zh and ja
3. Update modified file translations
4. Sync docs.json for all language sections
5. Commit translated files automatically
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: update workflow paths to use zh/ja instead of cn/jp
Aligns workflow trigger paths with the zh/ja language directory rename.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Revert "fix: update workflow paths to use zh/ja instead of cn/jp"
This reverts commit 9587b7cc5d.
* Revert "test: kitchen sink workflow validation v2"
This reverts commit 4abdd69fd2.
* fix: update workflow paths in doc analyze workflow to use zh/ja instead of cn/jp
* Refactor/language codes (#240)
* test: kitchen sink workflow validation v2
This PR validates the translation workflow after config-driven refactoring:
Changes:
- Add new test file: test-workflow-validation.mdx
- Modify existing file: introduction.mdx
- Update docs.json navigation
Tests:
- New file translation (add workflow)
- Existing file translation (update workflow)
- Navigation sync across languages
- Config-driven language codes (zh/ja instead of cn/jp)
- Source language abstraction (no hardcoded "English")
Expected workflow behavior:
1. Detect changes in en/ directory
2. Translate new file to zh and ja
3. Update modified file translations
4. Sync docs.json for all language sections
5. Commit translated files automatically
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: update workflow paths to use zh/ja instead of cn/jp
Aligns workflow trigger paths with the zh/ja language directory rename.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Revert "fix: update workflow paths to use zh/ja instead of cn/jp"
This reverts commit 9587b7cc5d.
* Revert "test: kitchen sink workflow validation v2"
This reverts commit 4abdd69fd2.
* fix: update workflow paths in doc analyze workflow to use zh/ja instead of cn/jp
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix: update workflow files to use 'source' instead of 'english'
After refactoring the PR analyzer to use 'source' for source language
PRs (instead of hardcoded 'english'), the workflow files need to match.
Changes:
- sync_docs_analyze.yml: pr_type == 'source' (was 'english')
- sync_docs_update.yml: PR_TYPE != 'source' check
- Updated all comments from "English" to "source language"
- Updated all pr_type values in JSON from "english" to "source"
This ensures the workflows trigger correctly with the refactored
config-driven language system.
Related: language code refactoring (cn/jp → zh/ja)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix/workflow source language references (#245)
* test: kitchen sink workflow validation v2
This PR validates the translation workflow after config-driven refactoring:
Changes:
- Add new test file: test-workflow-validation.mdx
- Modify existing file: introduction.mdx
- Update docs.json navigation
Tests:
- New file translation (add workflow)
- Existing file translation (update workflow)
- Navigation sync across languages
- Config-driven language codes (zh/ja instead of cn/jp)
- Source language abstraction (no hardcoded "English")
Expected workflow behavior:
1. Detect changes in en/ directory
2. Translate new file to zh and ja
3. Update modified file translations
4. Sync docs.json for all language sections
5. Commit translated files automatically
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: update workflow paths to use zh/ja instead of cn/jp
Aligns workflow trigger paths with the zh/ja language directory rename.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Revert "fix: update workflow paths to use zh/ja instead of cn/jp"
This reverts commit 9587b7cc5d.
* Revert "test: kitchen sink workflow validation v2"
This reverts commit 4abdd69fd2.
* fix: update workflow paths in doc analyze workflow to use zh/ja instead of cn/jp
* fix: update workflow files to use 'source' instead of 'english'
After refactoring the PR analyzer to use 'source' for source language
PRs (instead of hardcoded 'english'), the workflow files need to match.
Changes:
- sync_docs_analyze.yml: pr_type == 'source' (was 'english')
- sync_docs_update.yml: PR_TYPE != 'source' check
- Updated all comments from "English" to "source language"
- Updated all pr_type values in JSON from "english" to "source"
This ensures the workflows trigger correctly with the refactored
config-driven language system.
Related: language code refactoring (cn/jp → zh/ja)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix
* fix docs.json language codes
* rename previous version docs: cn -> zh, jp -> ja
* rm duplicate redirect entires
---------
Co-authored-by: Claude <noreply@anthropic.com>
Add tools for comparing translation quality between different models
(e.g., Sonnet vs Opus) or prompt variations. Useful for evaluating
translation improvements before deploying changes.
- run_test.py: Test runner with Dify API streaming
- compare.py: Generate similarity reports between variants
- Example spec and documentation included
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude <noreply@anthropic.com>