Frontend (.vue, .js, .ts):
- All Chinese in HTML comments, JS comments, CSS comments translated
- All hardcoded Chinese UI strings (titles, alerts, console errors) translated
- The few remaining Chinese fragments in Step2EnvSetup.vue (4) and
Step4Report.vue (77) are intentional: stage-name identifiers that
must match what the backend emits, and LLM-output parser patterns
that match Chinese section headers in the LLM response.
Backend (Python):
- All # comments, """ and ''' docstrings translated
- All log/print/raise/error message strings translated
- All LLM system prompts (ONTOLOGY_SYSTEM_PROMPT, _PROMPT, _INSTRUCTION,
_TEMPLATE, _TASK_PROMPT, _EXTRACTOR, _PLANNER, _REPORTER, _SUMMARY,
_OUTLINE, _SYNTHESIS, _REWRITE, _SEARCH_PROMPT, _INTERVIEW, _REFLECTION,
_REACT, _ROLE, _CONTEXT, _GUIDELINES, _AGENT, _MESSAGE, _EXAMPLE,
_SYNTHESIZER, _WRITER, _CRITIQUE, _REVISION, _FEEDBACK, _PERSONA,
_FORMAT, _JUDGE, _ROUTER, _SECTION_PLANNER, _PARSER, _EXTRACT,
_RATIONALE variables) translated
- stage-name string literals in zep_graph_memory_updater.py (return
values used as Zep episode content) translated
- LLM-output parser patterns in zep_tools.py and report_agent.py
(e.g. text.match(/分析问题:/) and section headers like
'### 【关键事实】') kept as Chinese, because they match the
LLM's output format.
i18n:
- locales/zh.json: kept as source of truth for Chinese strings
- locales/en.json: kept (was already a complete English translation)
- locales/nl.json: NEW — full Dutch (Nederlands) translation of
en.json (633 leaf keys, all interpolation placeholders preserved)
- locales/languages.json: added 'nl' entry with label 'Nederlands'
and llmInstruction 'Antwoord in het Nederlands.'
Frontend i18n config:
- frontend/src/i18n/index.js: default locale changed from 'zh' to 'nl',
fallback locale from 'zh' to 'en'. Dutch is now the default UI
language; English is the fallback.
Misc:
- package.json: description translated
- docker-compose.yml: inline comment translated
- README.md / README-ZH.md / locales/zh.json / locales/languages.json:
Chinese content intentionally preserved (bilingual readme pointers
and language-metadata source of truth)
Files: 59 changed, +6810 / -6102
Co-authored-by: hermes <hermes@profikid.nl>
- New GraphView.vue: lightweight page at /graph/<id> that resolves a
graph_id back to its owning project_id via /api/graph/project/list,
then router-replaces to /process/<projectId> so the existing project
page handles the full graph visualisation.
- HistoryDatabase.vue: fetch /api/simulation/history and /api/graph/project/list
in parallel and merge by project_id (sims win on conflict, project list
fills the gap so home history is non-empty for users who only built
graphs). Newest first by created_at.
- frontend/src/api/graph.js: add listProjects(limit) wrapper.
- frontend/src/router/index.js: register /graph/:id route, props: true.
- frontend/src/api/index.js: switch VITE_API_BASE_URL fallback from ||
to ?? so an empty string is honoured (Vite uses empty to mean 'same
origin', letting Traefik reverse-proxy /api/* to the backend container
without an absolute baseURL).
- Dockerfile: VITE_API_BASE_URL="" baked in at build time (default).
- graphiti_service.py: strip lowercase <think> / <antmlthinking> reasoning
blocks in addition to <think> (M2.7 vs M3/Qwen emit different
reasoning tags); accept M2.7's 'entity_types' plural list shape in
_normalize_extraction_payload.
- Changed the title for the environment configuration status icon to "环境搭建" for clarity.
- Added a creation time display in the project detail modal for better context.
- Introduced a divider for the playback section to improve visual separation.
- Enhanced navigation buttons with step indicators for clearer user progression.
- Added a hint for playback limitations to inform users about simulation requirements.
- Updated CSS styles for new elements and improved overall modal aesthetics.
- Updated card header to include status icons indicating project availability for different functionalities.
- Added a visual indicator for additional files when more than three are present.
- Improved card footer layout by grouping date and time, and enhancing progress display with status colors.
- Introduced new CSS styles for status icons and improved overall card aesthetics.
- Wrapped modal content in a Transition component for smoother animations.
- Adjusted modal dimensions and padding for improved layout and user experience.
- Updated styles for modal elements, including background colors, borders, and hover effects.
- Enhanced visual feedback for buttons and file items within the modal.
- Implemented a modal to display detailed information about selected projects, including simulation requirements and associated files.
- Added navigation buttons within the modal for quick access to project, simulation, and report pages.
- Enhanced user experience by allowing users to view project details without leaving the main interface.
- Added route watcher to reload history data when navigating back to the homepage.
- Improved card positioning by adjusting vertical spacing for better visual alignment.
- Initialized IntersectionObserver to manage card visibility more effectively.
- Ensured data loading occurs after DOM rendering for smoother user experience.
- Added conditional rendering for the tech grid background and cards container based on project availability.
- Simplified the empty state display logic when no projects are present.
- Introduced a new CSS class to adjust layout when there are no projects, enhancing visual consistency.
- Changed card header to display round progress instead of status.
- Updated card footer to show formatted time instead of rounds.
- Introduced new methods for calculating progress class and formatting time.
- Adjusted styles for progress display and refined layout for better responsiveness.
- Introduced a pending state to track the target expansion state during animations.
- Improved debounce handling to ensure smoother transitions and prevent rapid state changes.
- Updated logic to check for new pending states after animations complete, enhancing responsiveness and stability.
- Introduced a computed property to adjust the container's minimum height based on the number of cards and expansion state.
- Removed static min-height styles to enhance responsiveness and visual consistency.
- Introduced a debounce mechanism to prevent rapid state changes during card expansion and collapse.
- Added an animation lock to avoid conflicts during transitions.
- Adjusted Intersection Observer thresholds and rootMargin for smoother detection and stability.
- Cleaned up resources on component unmounting to prevent memory leaks.
- Updated simulation history retrieval to read project details directly from the Simulation file.
- Improved simulation configuration handling by reading simulation requirements from JSON.
- Added project file listing to the simulation history, displaying up to three associated files.
- Refined card layout in HistoryDatabase.vue to accommodate new file display features and improved responsiveness.
- Removed dynamic offset calculation for the CTA button, fixing its position.
- Updated card layout logic to ensure proper stacking and alignment.
- Increased minimum heights for both collapsed and expanded states to enhance visual consistency.