Skip to content

Update frontend/app/docs/[slug]/page.tsx Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com> Signed-off-by: Clriks <241179063+clauderiks@users.noreply.github.com> - #159

Open
zskbot wants to merge 47 commits into
clauderiks-patch-1from
alert-autofix-6

Conversation

@zskbot

@zskbot zskbot commented Aug 2, 2026 •

Copy link
Copy Markdown
Owner

zskbot and others added 30 commits July 21, 2026 17:29
Signed-off-by: Bot <nvht25052002@gmail.com>
Signed-off-by: Bot <nvht25052002@gmail.com>
…n permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: ClaudeRikss <241179063+clauderiks@users.noreply.github.com>
Signed-off-by: ClaudeRikss <241179063+clauderiks@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: ClaudeRikss <241179063+clauderiks@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: Bot <nvht25052002@gmail.com>
Signed-off-by: Bot <nvht25052002@gmail.com>
Signed-off-by: ClaudeRikss <241179063+clauderiks@users.noreply.github.com>
Signed-off-by: Bot <nvht25052002@gmail.com>
Signed-off-by: ClaudeRikss <241179063+clauderiks@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: Bot <nvht25052002@gmail.com>
Signed-off-by: ClaudeRikss <241179063+clauderiks@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Signed-off-by: ClaudeRikss <241179063+clauderiks@users.noreply.github.com>
@zskbot zskbot added documentation Improvements or additions to documentation duplicate This issue or pull request already exists enhancement New feature or request help wanted Extra attention is needed good first issue Good for newcomers invalid This doesn't seem right question Further information is requested dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code python Pull requests that update python code ClaudeRiks labels Aug 2, 2026
@kilo-code-bot

kilo-code-bot Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Kilo Code Review could not run — your account is out of credits.

Add credits or switch to a free model to enable reviews on this change.

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Add docs UI and chat tool-calls; add Endor Labs scanning workflow

✨ Enhancement ⚙️ Configuration changes 📝 Documentation 🕐 40+ Minutes

Grey Divider

AI Description

• Add a new docs section that renders local Markdown files with sidebar/header/TOC.
• Extend chat to optionally execute terminal commands and return tool-call results.
• Add Endor Labs GitHub Action workflow with explicit permissions; refresh docs/assets.
Diagram

graph TD
  FE["Next.js Frontend"] --> API["FastAPI /api/chat"] --> LLM{{"Ollama LLM"}}
  FE --> DOCS["Docs Route"] --> FS[("Markdown Files")]
  API --> SET["Settings (.env)"]
  API --> TERM["Terminal Tool"]

  subgraph Legend
    direction LR
    _svc["Service"] ~~~ _ext{{"External"}} ~~~ _fs[("Filesystem")]
  end
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Explicit tool endpoint instead of parsing chat text
  • ➕ Avoids brittle command extraction from natural language
  • ➕ Enables stronger validation/authorization per tool
  • ➕ Simplifies UX by making tool invocation structured
  • ➖ Requires UI changes and a clearer tool invocation contract
  • ➖ Less convenient for quick ad-hoc commands in a chat box
2. Use async fs/promises + notFound() for docs slug
  • ➕ Avoids blocking readFileSync in a server component
  • ➕ Enables better error handling for missing slugs
  • ➕ Easier to add caching/revalidation later
  • ➖ Slightly more code and requires handling Next.js notFound flow
3. Generate TOC from rendered markdown headings
  • ➕ TOC always matches the current document
  • ➕ No need to maintain a static headings list
  • ➖ Requires parsing markdown/AST or collecting headings during render
  • ➖ More moving parts than a static placeholder TOC

Recommendation: Current approach is fine for a prototype, but consider moving to structured tool invocation (separate endpoint or schema-driven tool calls) as soon as this is used beyond local/dev. For docs, switching to async file reads and generating TOC from markdown will reduce drift and improve performance/robustness.

Files changed (36) +4776 / -307 · 5 not counted

Enhancement (12) +857 / -285
routes.pyEnable optional terminal tool execution via chat and return tool_calls +329/-161

Enable optional terminal tool execution via chat and return tool_calls

• Adds command extraction for fenced bash/sh blocks or '!command' messages and, when tools are enabled, executes via TerminalTools in sandbox mode. Gates terminal execution behind a new settings flag and returns tool_calls payloads alongside the assistant message.

backend/api/routes.py

page.tsxAdd docs slug page that loads and renders markdown +34/-0

Add docs slug page that loads and renders markdown

• Implements a '/docs/[slug]' route that reads a corresponding 'docs/<slug>.md' file from disk and renders it through the MarkdownViewer component.

frontend/app/docs/[slug]/page.tsx

layout.tsxAdd docs layout with header, sidebar, content, and TOC regions +51/-0

Add docs layout with header, sidebar, content, and TOC regions

• Introduces a dedicated docs layout composing DocsHeader, DocsSidebar, the main content slot, and DocsTOC for consistent docs navigation.

frontend/app/docs/layout.tsx

page.tsxSwitch homepage to the Dashboard layout +5/-9

Switch homepage to the Dashboard layout

• Replaces direct Chat rendering with a Dashboard component entry point.

frontend/app/page.tsx

Chat.tsxRender tool-call outputs in chat messages +148/-115

Render tool-call outputs in chat messages

• Extends chat message model to include 'toolCalls' and displays terminal command output blocks when present. Also updates placeholder text to hint tool usage via '!command'.

frontend/components/Chat.tsx

DocsHeader.tsxAdd docs header with search and action buttons +45/-0

Add docs header with search and action buttons

• Introduces a client-side docs header using lucide icons and a search input alongside theme/GitHub buttons.

frontend/components/docs/DocsHeader.tsx

DocsSidebar.tsxAdd docs sidebar navigation groups +80/-0

Add docs sidebar navigation groups

• Adds a sidebar with grouped navigation links for Getting Started, Developer, and Security sections.

frontend/components/docs/DocsSidebar.tsx

DocsTOC.tsxAdd initial docs table-of-contents component +56/-0

Add initial docs table-of-contents component

• Adds a client-side TOC that links to a small static list of headings on the page.

frontend/components/docs/DocsTOC.tsx

MarkdownViewer.tsxAdd Markdown renderer with GFM and heading anchors +31/-0

Add Markdown renderer with GFM and heading anchors

• Adds a client component that renders markdown via react-markdown with GFM support and automatic heading ids/anchor links.

frontend/components/docs/MarkdownViewer.tsx

Header.tsxAdd app header for the dashboard shell +20/-0

Add app header for the dashboard shell

• Adds a simple header with app branding and placeholder navigation/status actions.

frontend/components/header/Header.tsx

Dashboard.tsxAdd dashboard shell with sidebar and header +33/-0

Add dashboard shell with sidebar and header

• Introduces a grid-based dashboard layout that composes Sidebar and Header and reserves a central main area for future IDE content.

frontend/components/layout/Dashboard.tsx

Sidebar.tsxAdd static navigation sidebar for the dashboard +25/-0

Add static navigation sidebar for the dashboard

• Adds a simple sidebar with placeholder navigation items for dashboard sections (projects, explorer, AI, preview, terminal, git).

frontend/components/sidebar/Sidebar.tsx

Refactor (5)
AIAssistant.tsxMinor no-op change (formatting/metadata) not counted

Minor no-op change (formatting/metadata)

• Patch indicates a minimal edit without visible functional changes (likely formatting or line-ending normalization).

frontend/components/ai/AIAssistant.tsx

Editor.tsxMinor no-op change (formatting/metadata) not counted

Minor no-op change (formatting/metadata)

• Patch indicates a minimal edit without visible functional changes (likely formatting or line-ending normalization).

frontend/components/editor/Editor.tsx

GitPanel.tsxMinor no-op change (formatting/metadata) not counted

Minor no-op change (formatting/metadata)

• Patch indicates a minimal edit without visible functional changes (likely formatting or line-ending normalization).

frontend/components/git/GitPanel.tsx

Preview.tsxMinor no-op change (formatting/metadata) not counted

Minor no-op change (formatting/metadata)

• Patch indicates a minimal edit without visible functional changes (likely formatting or line-ending normalization).

frontend/components/preview/Preview.tsx

Terminal.tsxMinor no-op change (formatting/metadata) not counted

Minor no-op change (formatting/metadata)

• Patch indicates a minimal edit without visible functional changes (likely formatting or line-ending normalization).

frontend/components/terminal/Terminal.tsx

Tests (1) +7 / -1
test_fortify_workflow.pyUpdate expected cron schedule in workflow test +7/-1

Update expected cron schedule in workflow test

• Updates the expected schedule cron expression and adds a docstring clarifying the cron validation intent.

tests/test_fortify_workflow.py

Documentation (12) +989 / -1
logo.svgReplace logo reference with an inline animated SVG banner +62/-1

Replace logo reference with an inline animated SVG banner

• Replaces an external screenshot link with a full SVG logo/banner including gradients, animation, and accessible title/description metadata.

ClaudeRiks/Home/logo.svg

deploy-to-environment.mdAdd Actions documentation page for deploying to environments +65/-0

Add Actions documentation page for deploying to environments

• Adds a new how-to document describing how to target environments in workflows and optionally set deployment URLs and deployment suppression.

content/actions/how-tos/write-workflows/choose-what-workflows-do/deploy-to-environment.md

security-and-quality-ai-features.mdAdd responsible-use application card for security/quality AI features +148/-0

Add responsible-use application card for security/quality AI features

• Adds a new documentation page describing Copilot Autofix, generic secret detection, regex generation, and code quality features with key terms and overview content.

content/code-security/responsible-use/security-and-quality-ai-features.md

index.mdAdd Riks AI project landing page content +149/-0

Add Riks AI project landing page content

• Adds a rich README-style landing page describing the prototype, features, architecture, and technology stack.

content/pages/index.md

about-github-pages-and-jekyll.mdAdd GitHub Pages + Jekyll documentation page +134/-0

Add GitHub Pages + Jekyll documentation page

• Adds a new documentation page explaining Jekyll, GitHub Pages constraints, and configuration/front matter guidance.

content/pages/setting-up-a-github-pages-site-with-jekyll/about-github-pages-and-jekyll.md

api.mdAdd initial API docs markdown +9/-0

Add initial API docs markdown

• Adds a placeholder API documentation page describing authentication and endpoints.

frontend/docs/api.md

introduction.mdAdd getting-started introduction docs page +14/-0

Add getting-started introduction docs page

• Adds a Getting Started introduction page outlining features and next steps.

frontend/docs/getting-started/introduction.md

introduction.mdAdd top-level introduction docs page +14/-0

Add top-level introduction docs page

• Adds a general introduction page describing features and getting-started guidance.

frontend/docs/introduction.md

security.mdAdd initial security guide markdown +7/-0

Add initial security guide markdown

• Adds a short security page with a data protection section placeholder.

frontend/docs/security.md

index.htmlAdd placeholder index.html +1/-0

Add placeholder index.html

• Adds a minimal index.html containing a placeholder string.

index.html

run-toolsAdd runner images reference document +209/-0

Add runner images reference document

• Adds a large markdown-style document describing GitHub Actions runner images and related metadata.

run-tools

viteAdd Vite changelog/reference content +177/-0

Add Vite changelog/reference content

• Adds a markdown-style changelog snippet for Vite releases (beta and patch notes).

vite

Other (6) +2923 / -20
endorlabs.ymlAdd Endor Labs scan workflow with SARIF upload and explicit permissions +51/-0

Add Endor Labs scan workflow with SARIF upload and explicit permissions

• Introduces a new GitHub Actions workflow that runs Endor Labs scans on push/PR and on a schedule. Adds explicit job permissions (including id-token and security-events) and uploads SARIF results to GitHub.

.github/workflows/endorlabs.yml

CNAMEAdd GitHub Pages custom domain +1/-0

Add GitHub Pages custom domain

• Adds a CNAME file configuring the Pages domain to 'clriks.ai'.

CNAME

settings.pyAdd ENABLE_TERMINAL_TOOL feature flag +19/-18

Add ENABLE_TERMINAL_TOOL feature flag

• Extends backend Settings with 'enable_terminal_tool' sourced from 'ENABLE_TERMINAL_TOOL' to control terminal execution capability.

backend/config/settings.py

next-env.d.tsInclude generated Next.js typed routes reference +2/-1

Include generated Next.js typed routes reference

• Adds a reference to '.next/types/routes.d.ts' and updates the linked TypeScript docs comment.

frontend/next-env.d.ts

package-lock.jsonAdd lockfile for new frontend dependencies +2844/-0

Add lockfile for new frontend dependencies

• Introduces a package-lock.json capturing the resolved dependency graph for the newly added markdown and icon libraries.

frontend/package-lock.json

package.jsonAdd markdown rendering and icon dependencies +6/-1

Add markdown rendering and icon dependencies

• Adds react-markdown + remark/rehype plugins and lucide-react, alongside existing axios/next/react dependencies.

frontend/package.json

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 14 potential issues.

Open in Devin Review

Comment thread frontend/app/docs/[slug]/page.tsx
Comment thread frontend/app/page.tsx
Comment thread frontend/components/Chat.tsx
Comment thread frontend/app/docs/layout.tsx
Comment thread backend/api/routes.py
Comment thread frontend/components/docs/DocsHeader.tsx
Comment thread .github/workflows/endorlabs.yml
Comment thread backend/api/routes.py
Comment thread frontend/app/docs/[slug]/page.tsx
Comment thread .github/workflows/endorlabs.yml
@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (4) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Action required

1. Terminal toggle bypass 🐞 Bug ⛨ Security
Description
The new ENABLE_TERMINAL_TOOL gate is applied only in /api/chat, but /api/tools/terminal/execute
still executes commands unconditionally, so terminal execution cannot actually be disabled via the
new setting. This defeats the purpose of the toggle and leaves a command-execution endpoint exposed
even when the feature is configured "off".
Code

backend/api/routes.py[R189-205]

+@router.post("/tools/terminal/execute")  
+async def terminal_execute(command: str, timeout: int = 30, sandbox: bool = True):  
+    """Execute a terminal command with the specified timeout and sandbox setting.
+    
+    Parameters:
+        command (str): The terminal command to execute.
+        timeout (int): Maximum execution time in seconds.
+        sandbox (bool): Whether to run the command in a sandbox.
+    
+    Returns:
+        The terminal command execution result.
+    """  
+    try:  
+        result = TerminalTools.execute_command(command, timeout, sandbox)  
+        return result  
+    except Exception as e:  
+        raise HTTPException(status_code=500, detail=str(e))  
Evidence
The PR adds enable_terminal_tool to settings and checks it in /chat, but the
/tools/terminal/execute route calls TerminalTools.execute_command without checking the setting,
making the toggle ineffective for that endpoint.

backend/config/settings.py[10-19]
backend/api/routes.py[60-91]
backend/api/routes.py[189-205]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`ENABLE_TERMINAL_TOOL` is checked in `/api/chat` before running a terminal command, but `/api/tools/terminal/execute` still runs commands regardless of that setting.

## Issue Context
Operators will likely rely on `ENABLE_TERMINAL_TOOL=false` to prevent command execution. Currently, direct calls to `/api/tools/terminal/execute` bypass that control.

## Fix Focus Areas
- backend/api/routes.py[189-205]
- backend/config/settings.py[10-16]

## Suggested fix
- In `terminal_execute(...)`, add the same guard used in `/api/chat`:
 - If `not settings.enable_terminal_tool`, return `HTTPException(status_code=403, detail=...)` (or a structured error response).
- Consider refactoring the guard into a shared helper/dependency so *all* code paths that execute commands share the same control.
- Add a small test (if tests exist for the API) asserting that when disabled, both `/api/chat` tool execution and `/api/tools/terminal/execute` are denied.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Chat executes shell commands 🐞 Bug ⛨ Security
Description
When ENABLE_TERMINAL_TOOL is enabled and use_tools is true, /api/chat extracts a command from
user-controlled message text and executes it on the server. The command runner uses
subprocess.run(..., shell=True) and the sandbox flag is not enforced, so the feature executes
arbitrary shell input without isolation.
Code

backend/api/routes.py[R60-91]

+        if request.use_tools:  
+            command = extract_command(request.message)  
+            if command:  
+                if not settings.enable_terminal_tool:  
+                    denied = (  
+                        "Terminal tool dang bi tat. Dat ENABLE_TERMINAL_TOOL=true "  
+                        "trong backend/.env de cho phep chay lenh."  
+                    )  
+                    memory.add_message(request.conversation_id, "assistant", denied)  
+                    return ChatResponse(  
+                        conversation_id=request.conversation_id,  
+                        message=denied,  
+                        tool_calls=[],  
+                        timestamp=datetime.now(),  
+                        model=ollama_client.model,  
+                    )  
+  
+                result = TerminalTools.execute_command(command, timeout=30, sandbox=True)  
+                output = (  
+                    f"$ {command}\n"  
+                    f"[exit code: {result['returncode']}]\n\n"  
+                    f"--- stdout ---\n{result['stdout']}\n"  
+                    f"--- stderr ---\n{result['stderr']}"  
+                )  
+                memory.add_message(request.conversation_id, "assistant", output)  
+                return ChatResponse(  
+                    conversation_id=request.conversation_id,  
+                    message=output,  
+                    tool_calls=[{"tool": "terminal", "command": command, "result": result}],  
+                    timestamp=datetime.now(),  
+                    model=ollama_client.model,  
+                )  
Evidence
The chat endpoint executes extracted commands when tools are enabled, and the command execution
helper runs the command using a shell, while only returning the sandbox value without actually
sandboxing.

backend/api/routes.py[60-91]
backend/tools.py[36-56]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`/api/chat` can execute user-provided shell commands (prefixed by `!` or fenced bash/sh blocks) when `ENABLE_TERMINAL_TOOL` is enabled. Execution is performed with `shell=True`, and the `sandbox` parameter is only echoed back, not actually enforcing isolation.

## Issue Context
This is server-side command execution driven by request content. Even if intended for local/dev use, it is extremely dangerous if the API is reachable outside a fully trusted environment.

## Fix Focus Areas
- backend/api/routes.py[60-91]
- backend/tools.py[40-56]

## Suggested fix
- Make terminal execution require explicit authorization (e.g., API key / session auth) rather than only a config toggle.
- Avoid `shell=True`:
 - Parse commands into argv and run with `subprocess.run([...], shell=False, ...)`.
- Implement *real* sandboxing if this must exist (container/jail, restricted filesystem, no network, resource limits), or remove the feature from the API surface.
- If keeping a limited tool, enforce a strict allowlist of commands/flags and reject everything else.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Docs slug file read 🐞 Bug ⛨ Security
Description
DocsPage constructs a filesystem path from the route slug and calls fs.readFileSync without
checking existence or returning a 404, so unknown slugs will throw and surface as a server error.
Because the slug is not validated before building the path, it is also possible to read unintended
markdown files if a crafted slug resolves outside the intended docs directory.
Code

frontend/app/docs/[slug]/page.tsx[R18-27]

+  const filePath = path.join(
+    process.cwd(),
+    "docs",
+    `${slug}.md`
+  );
+
+  const content = fs.readFileSync(
+    filePath,
+    "utf8"
+  );
Evidence
The docs page directly uses the slug parameter to build a file path and synchronously reads it
without any existence check, error handling, or slug validation.

frontend/app/docs/[slug]/page.tsx[11-34]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The docs route reads markdown from disk based on a user-controlled `slug` and fails with an exception if the file is missing. The route also does not constrain `slug` to a known-safe set before using it in path construction.

## Issue Context
This code runs server-side (Next.js app router). A thrown `readFileSync` becomes a 500, and path construction from unvalidated input can lead to unintended file reads.

## Fix Focus Areas
- frontend/app/docs/[slug]/page.tsx[11-34]

## Suggested fix
- Validate the slug before use (e.g., `^[a-z0-9-]+$`), or better: build an allowlist/manifest of available docs and only serve those.
- Use `path.resolve` and verify the resolved path is within the intended docs root.
- Replace `readFileSync` with async I/O (`fs.promises.readFile`).
- On missing/invalid docs, return Next’s `notFound()` instead of throwing.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

4. Ignored .next type reference 🐞 Bug ☼ Reliability
Description
frontend/next-env.d.ts now references ./.next/types/routes.d.ts, but .next/ is gitignored, so
the referenced file is not present in a clean checkout. This can break standalone TypeScript tooling
or CI workflows that typecheck before Next.js generates build output.
Code

frontend/next-env.d.ts[R1-6]

/// <reference types="next" />
/// <reference types="next/image-types/global" />
+/// <reference path="./.next/types/routes.d.ts" />

// NOTE: This file should not be edited
-// see https://nextjs.org/docs/basic-features/typescript for more information.
+// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
Evidence
The PR adds a triple-slash reference into ignored build output, and the repository’s .gitignore
confirms .next/ and frontend/.next/ are excluded from source control.

frontend/next-env.d.ts[1-6]
.gitignore[220-226]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`next-env.d.ts` references a generated file under `.next/`, which is explicitly ignored by git. This can cause "file not found" typecheck errors in environments that run `tsc` (or IDE tooling) before Next has generated `.next/types/...`.

## Issue Context
`.next/` is a build artifact directory and is excluded from version control.

## Fix Focus Areas
- frontend/next-env.d.ts[1-6]
- .gitignore[224-226]

## Suggested fix
- If this line was manually added, remove it unless you can prove it is required for your Next version.
- If it was auto-generated and required, ensure CI/typecheck runs a Next command that generates `.next/types` before typechecking, and document that requirement.
- Prefer relying on `tsconfig.json` includes rather than hard-wiring a path to build output in `next-env.d.ts`.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

To customize comments, go to the Qodo configuration screen, or learn more in the docs.

Qodo Logo

Comment thread backend/api/routes.py
Comment thread backend/api/routes.py
Comment thread frontend/next-env.d.ts
Comment thread frontend/app/docs/[slug]/page.tsx
@zskbot
zskbot disabled auto-merge August 5, 2026 03:06
@zskbot
zskbot enabled auto-merge (squash) August 5, 2026 03:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ClaudeRiks dependencies Pull requests that update a dependency file documentation Improvements or additions to documentation duplicate This issue or pull request already exists enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed invalid This doesn't seem right javascript Pull requests that update javascript code python Pull requests that update python code question Further information is requested

Projects

Status: Todo
Status: Todo

Development

Successfully merging this pull request may close these issues.

trang mẫu hỗ trợ Auto <!-- This is an auto-generated reply by CodeRabbit --> tự đống hoá quy trình làm việc giao diện người dùng

1 participant