diff --git a/.github/workflows/hugo.yml b/.github/workflows/hugo.yml index ff1172e3e1..50cf9928b0 100644 --- a/.github/workflows/hugo.yml +++ b/.github/workflows/hugo.yml @@ -28,6 +28,7 @@ on: concurrency: group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && format('pr-{0}', github.event.pull_request.number) || (inputs.operation == 'staging-next' && 'asf-staging-oink' || 'asf-site') }} + # A newer commit supersedes previous work for the same PR or publish target. cancel-in-progress: true env: @@ -51,6 +52,7 @@ jobs: artifact_prefix: ${{ steps.plan.outputs.artifact_prefix }} publish_branch: ${{ steps.plan.outputs.publish_branch }} latest_sha: ${{ steps.plan.outputs.latest_sha }} + source_sha: ${{ steps.plan.outputs.source_sha }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: @@ -103,7 +105,6 @@ jobs: latest_sha="$EVENT_SHA" if [[ "$EVENT_NAME" == workflow_dispatch ]]; then - test "$GITHUB_REF" = refs/heads/master candidate="$CANDIDATE_BRANCH" test -n "$candidate" [[ "$candidate" =~ ^[A-Za-z0-9][A-Za-z0-9._/-]*$ ]] @@ -119,6 +120,9 @@ jobs: case "$OPERATION" in staging-next) + # Dispatches must load this privileged workflow from master; + # the candidate is data resolved to an immutable commit below. + test "$GITHUB_REF" = "refs/heads/master" test "$CONFIRMATION" = "publish asf-staging-oink" site_origin="$STAGING_ORIGIN" artifact_prefix="staging" @@ -131,6 +135,7 @@ jobs: fi ;; production-history-refresh) + test "$GITHUB_REF" = refs/heads/master test "$CONFIRMATION" = "publish asf-site" test "$candidate" = "$latest_ref" test "$SCOPE" = full @@ -152,11 +157,13 @@ jobs: echo "artifact_prefix=$artifact_prefix" echo "publish_branch=$publish_branch" echo "latest_sha=$latest_sha" + echo "source_sha=$latest_sha" } >> "$GITHUB_OUTPUT" - name: Validate source and version tooling run: | bash dist/validate-links.sh + go mod download PYTHONDONTWRITEBYTECODE=1 \ python3 -m unittest discover -s scripts -p 'test_*.py' -v - name: Resolve immutable version matrix @@ -172,10 +179,12 @@ jobs: - name: Upload resolved version manifest uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: - name: resolved-versions-${{ github.run_id }}-${{ github.run_attempt }} + # Keep dependency artifact names stable across selective job reruns. + name: resolved-versions-${{ github.run_id }} path: resolved-versions.json retention-days: 7 if-no-files-found: error + overwrite: true build: needs: prepare @@ -193,7 +202,7 @@ jobs: steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: - ref: ${{ github.event.pull_request.head.sha || github.sha }} + ref: ${{ needs.prepare.outputs.source_sha }} fetch-depth: 0 persist-credentials: false - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6 @@ -223,11 +232,10 @@ jobs: restore-keys: ${{ runner.os }}-hugo-${{ env.HUGO_VERSION }}-${{ matrix.version.id }}- - name: Verify pinned OINK module run: | - go mod verify test "$(go list -m -f '{{ .Path }}')" = "github.com/apache/hugegraph-doc" test "$(go list -m all | wc -l)" -eq 2 - test "$(go list -m -f '{{ .Path }}@{{ .Version }}' github.com/pgsty/oink)" = "github.com/pgsty/oink@v1.0.0" - test -z "$(go list -m -f '{{ with .Replace }}{{ .Path }}@{{ .Version }}{{ end }}' github.com/pgsty/oink)" + test -z "$(go list -m -f '{{ with .Replace }}{{ .Path }}{{ end }}' github.com/pgsty/oink)" + python3 scripts/update_oink.py --check-baseline - name: Build isolated version artifact env: OINK_PYTHON: python3 @@ -245,32 +253,36 @@ jobs: - name: Upload isolated version artifact uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: - name: ${{ needs.prepare.outputs.artifact_prefix }}-${{ matrix.version.id }}-${{ github.run_id }}-${{ github.run_attempt }} + name: ${{ needs.prepare.outputs.artifact_prefix }}-${{ matrix.version.id }}-${{ github.run_id }} path: ${{ runner.temp }}/version-public include-hidden-files: true retention-days: 1 if-no-files-found: error + overwrite: true + # Assembly and browser checks are serial; reuse one runner and its local output. aggregate: needs: [prepare, build] runs-on: ubuntu-latest - timeout-minutes: 15 + timeout-minutes: 35 permissions: { contents: read } + env: + HUGO_CACHEDIR: /tmp/hugo-cache-${{ github.run_id }}-${{ github.run_attempt }}-aggregate steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: - ref: ${{ github.event.pull_request.head.sha || github.sha }} + ref: ${{ needs.prepare.outputs.source_sha }} persist-credentials: false - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6 with: python-version: "3.13" - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 with: - name: resolved-versions-${{ github.run_id }}-${{ github.run_attempt }} + name: resolved-versions-${{ github.run_id }} path: resolved - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 with: - pattern: ${{ needs.prepare.outputs.artifact_prefix }}-*-${{ github.run_id }}-${{ github.run_attempt }} + pattern: ${{ needs.prepare.outputs.artifact_prefix }}-*-${{ github.run_id }} path: version-artifacts - name: Assemble publishable site env: @@ -285,32 +297,25 @@ jobs: fi python3 scripts/versioning.py aggregate \ --artifacts version-artifacts --artifact-prefix "$PREFIX-" \ - --artifact-suffix="-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}" \ + --artifact-suffix="-${GITHUB_RUN_ID}" \ --resolved-manifest resolved/resolved-versions.json \ --site-origin "$SITE_ORIGIN" --historical-origin "$HISTORICAL_ORIGIN" \ --select "$SELECTION" \ --output "${RUNNER_TEMP}/public-site" "${extra[@]}" + - name: Verify rendered download contracts + env: + DOWNLOAD_PUBLIC_DIR: ${{ runner.temp }}/public-site + run: python3 -m unittest scripts.test_download_data.DownloadDataTest.test_rendered_download_pages_have_verified_rows -v - name: Upload publishable aggregate uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: - name: hugegraph-site-${{ needs.prepare.outputs.artifact_prefix }}-${{ github.run_id }}-${{ github.run_attempt }} + name: hugegraph-site-${{ needs.prepare.outputs.artifact_prefix }}-${{ github.run_id }} path: ${{ runner.temp }}/public-site include-hidden-files: true retention-days: ${{ github.event_name == 'pull_request' && 1 || 7 }} if-no-files-found: error + overwrite: true - e2e: - needs: [prepare, aggregate] - runs-on: ubuntu-latest - timeout-minutes: 20 - permissions: { contents: read } - env: - HUGO_CACHEDIR: /tmp/hugo-cache-${{ github.run_id }}-${{ github.run_attempt }}-e2e - steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - with: - ref: ${{ github.event.pull_request.head.sha || github.sha }} - persist-credentials: false - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: "24" @@ -325,10 +330,6 @@ jobs: with: hugo-version: ${{ env.HUGO_VERSION }} extended: true - - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 - with: - name: hugegraph-site-${{ needs.prepare.outputs.artifact_prefix }}-${{ github.run_id }}-${{ github.run_attempt }} - path: public-site - name: Install Chromium test workspace working-directory: tests/e2e run: | @@ -345,15 +346,27 @@ jobs: --config "hugo.yaml,${RUNNER_TEMP}/ai-version-config.json,tests/e2e/ai-enabled.yaml" \ --destination "${RUNNER_TEMP}/ai-site" \ --cleanDestinationDir --gc --minify --environment production + - name: Build AI-disabled rollback fixture + run: | + python3 scripts/versioning.py config \ + --version latest \ + --site-origin http://127.0.0.1:4175/ \ + --historical-origin "$PRODUCTION_ORIGIN" \ + --output "${RUNNER_TEMP}/ai-disabled-version-config.json" + hugo \ + --config "hugo.yaml,${RUNNER_TEMP}/ai-disabled-version-config.json,tests/e2e/ai-disabled.yaml" \ + --destination "${RUNNER_TEMP}/ai-disabled-site" \ + --cleanDestinationDir --gc --minify --environment production - name: Run blocking Chromium contracts working-directory: tests/e2e env: - SITE_ROOT: ${{ github.workspace }}/public-site + SITE_ROOT: ${{ runner.temp }}/public-site AI_SITE_ROOT: ${{ runner.temp }}/ai-site + AI_DISABLED_SITE_ROOT: ${{ runner.temp }}/ai-disabled-site EXPECTED_VERSIONS: ${{ needs.prepare.outputs.selection }} run: npm run test:ci - name: Upload E2E report - if: always() + if: ${{ !cancelled() }} uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: name: playwright-report-${{ github.run_id }}-${{ github.run_attempt }} @@ -372,7 +385,7 @@ jobs: steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 with: - ref: ${{ github.event.pull_request.head.sha || github.sha }} + ref: ${{ needs.prepare.outputs.source_sha }} persist-credentials: false - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: @@ -381,7 +394,7 @@ jobs: cache-dependency-path: tests/e2e/package-lock.json - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 with: - name: hugegraph-site-${{ needs.prepare.outputs.artifact_prefix }}-${{ github.run_id }}-${{ github.run_attempt }} + name: hugegraph-site-${{ needs.prepare.outputs.artifact_prefix }}-${{ github.run_id }} path: public-site - name: Capture advisory visual states working-directory: tests/e2e @@ -392,7 +405,7 @@ jobs: npx playwright install --with-deps chromium npm run test:visual - name: Upload advisory visual evidence - if: always() + if: ${{ !cancelled() }} uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: name: visual-evidence-${{ github.run_id }}-${{ github.run_attempt }} @@ -402,8 +415,8 @@ jobs: # Required check name in .asf.yaml. It gates artifacts without write access. deploy: - if: always() - needs: [prepare, build, aggregate, e2e] + if: ${{ !cancelled() }} + needs: [prepare, build, aggregate] runs-on: ubuntu-latest timeout-minutes: 5 permissions: { contents: read } @@ -413,12 +426,10 @@ jobs: PREPARE_RESULT: ${{ needs.prepare.result }} BUILD_RESULT: ${{ needs.build.result }} AGGREGATE_RESULT: ${{ needs.aggregate.result }} - E2E_RESULT: ${{ needs.e2e.result }} run: | test "$PREPARE_RESULT" = success test "$BUILD_RESULT" = success test "$AGGREGATE_RESULT" = success - test "$E2E_RESULT" = success publish: if: needs.prepare.outputs.publish_branch != '' @@ -429,7 +440,7 @@ jobs: steps: - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 with: - name: hugegraph-site-${{ needs.prepare.outputs.artifact_prefix }}-${{ github.run_id }}-${{ github.run_attempt }} + name: hugegraph-site-${{ needs.prepare.outputs.artifact_prefix }}-${{ github.run_id }} path: public-site - name: Verify fixed publication target env: diff --git a/.gitignore b/.gitignore index cc2d3a9949..66380f186d 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ GEMINI.md .gemini/ WARP.md /.goal-task + +__pycache__/ +*.pyc diff --git a/.htaccess b/.htaccess index 295223cc29..a53d7c803e 100644 --- a/.htaccess +++ b/.htaccess @@ -1,2 +1,7 @@ RedirectMatch 404 "(?i)(?:^|/)\.git(?:/|$)" ErrorDocument 404 /404.html +# Reuse the existing HugeGraph Kapa/hCaptcha integration, PR #459. +# Source: https://github.com/apache/hugegraph-doc/commit/7662b8afb64265ed7412f6d704b8adfa9a836fff +# Preserve ASF default CSP; no Google CAPTCHA or optional metrics domains. +# Existing deployment evidence is not a separate VP Privacy approval record. +SetEnv CSP_PROJECT_DOMAINS "https://widget.kapa.ai https://proxy.kapa.ai https://kapa-widget-proxy-la7dkmplpq-uc.a.run.app https://hcaptcha.com https://*.hcaptcha.com" diff --git a/AGENTS.md b/AGENTS.md index c4a0545150..6e89817082 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,110 +1,38 @@ -# AGENTS.md - -This file provides guidance to AI coding assistants (Claude Code, Cursor, GitHub Copilot, etc.) when working with code in this repository. - -## Project Overview - -Apache HugeGraph documentation website built with Hugo static site generator and the Docsy theme. The site is bilingual (Chinese/English) and covers the complete HugeGraph graph database ecosystem. - -## Development Commands - -```bash -# Install dependencies -npm install - -# Start development server (auto-reload enabled) -hugo server - -# Build production site (output to ./public) -hugo --minify - -# Clean build -rm -rf public/ - -# Production build with garbage collection -HUGO_ENV="production" hugo --gc - -# Custom server configuration -hugo server -b http://127.0.0.1 -p 80 --bind=0.0.0.0 -``` - -## Prerequisites - -- **Hugo Extended** v0.95.0 recommended (v0.102.3 in CI) - must be the "extended" version for SASS/SCSS support -- **Node.js** v16+ and npm -- Download Hugo from: https://github.com/gohugoio/hugo/releases - -## Architecture - -``` -content/ -├── cn/ # Chinese documentation (default language) -│ ├── docs/ # Main documentation -│ ├── blog/ # Blog posts -│ ├── community/ -│ └── about/ -└── en/ # English documentation (parallel structure) - -themes/docsy/ # Docsy theme (submodule) -layouts/ # Custom template overrides -assets/ # Processed assets (SCSS, images) -static/ # Static files served directly -config.toml # Main site configuration -``` - -### Content Structure - -Documentation sections in `content/{cn,en}/docs/`: -- `quickstart/` - Getting started guides for HugeGraph components -- `config/` - Configuration documentation -- `clients/` - Client API documentation (Gremlin, RESTful) -- `guides/` - User guides and tutorials -- `performance/` - Benchmarks and optimization -- `language/` - Query language docs -- `contribution-guidelines/` - Contributing guides -- `changelog/` - Release notes -- `download/` - Download instructions - -## Key Configuration Files - -- `config.toml` - Site-wide settings, language config, menu structure, version (currently 0.13) -- `package.json` - Node dependencies for CSS processing (postcss, autoprefixer, mermaid) -- `.editorconfig` - UTF-8, LF line endings, spaces for indentation - -## Working with Content - -When editing documentation: -1. Maintain parallel structure between `content/cn/` and `content/en/` -2. Use Markdown with Hugo front matter (title, weight, description) -3. For bilingual changes, update both Chinese and English versions -4. Include mermaid diagrams where appropriate (mermaid.js is available) - -## Deployment - -- **CI/CD**: GitHub Actions (`.github/workflows/hugo.yml`) -- **Trigger**: Push to `master` branch or pull requests -- **Build**: `npm i && hugo --minify` with Node v16 and Hugo v0.102.3 extended -- **Deploy**: Publishes to `asf-site` branch (GitHub Pages) -- **PR Requirements**: Include screenshots showing before/after changes - -## HugeGraph Ecosystem Context - -This documentation covers: -- **HugeGraph-Server** - Core graph database with REST API -- **HugeGraph-Store** - Distributed storage engine -- **HugeGraph-PD** - Placement Driver for metadata -- **Toolchain** - Client, Loader, Hubble (web UI), Tools -- **HugeGraph-Computer** - Distributed OLAP graph processing -- **HugeGraph-AI** - GNN, LLM/RAG components - -## Troubleshooting - -**"TOCSS: failed to transform scss/main.scss"** -- Install Hugo Extended (not standard Hugo) - -**Theme/module not found** -- Run: `git submodule update --init --recursive` - -**CI build fails but works locally** -- Match Hugo version (v0.102.3) and Node.js (v16) -- Verify npm dependencies are installed +# HugeGraph documentation + +Bilingual Hugo site using OINK as a pinned Go module. English routes live under +`/docs/`, Chinese routes under `/cn/docs/`; historical releases share the current +site shell. + +## Task entry points + +- Preview or build: `scripts/hugo.sh server` / `scripts/hugo.sh build`. +- Content and contribution checks: [contribution.md](contribution.md). +- OINK upgrades, customization boundaries and recovery: + [scripts/oink-upgrade.md](scripts/oink-upgrade.md). +- Version assembly and publishing: `scripts/versioning.py` and + `.github/workflows/hugo.yml`; release selection comes from `versions.json`. +- Browser regression: `tests/e2e/package.json` and its Playwright configuration. + Node dependencies are for tests, not the Hugo site build. + +Read the entry relevant to the task; small content edits do not require the full +upgrade or deployment workflow. Use `go.mod` / `go.sum` and CI for pinned versions. + +## Project constraints + +- Keep English and Chinese documentation aligned when a change applies to both. +- Preserve public routes, historical-version navigation and language switching. +- Keep HugeGraph branding and behavior in site configuration, data, hooks and + public OINK APIs. Do not edit the module cache or vendor a theme fork. +- Record necessary upstream template overrides in the upgrade inventory; when + upstream changes them, reconcile the customization with the new implementation. +- AI resources load only after explicit user consent; disabled AI must make no + third-party AI requests. +- Validate behavior affected by the change. Theme/runtime changes require strict + builds and browser checks; visual/navigation changes also need before/after + screenshots. A rendered site alone does not prove interaction compatibility. +- Independent work may run in parallel. Review the final combined diff independently + for changes affecting runtime behavior or multiple components; local content + edits can use self-review. +- Local builds and disposable tests may run without repeated confirmation. Remote + writes and publishing follow the user's explicit task scope. diff --git a/NOTICE b/NOTICE index 91cb6e33a5..c7bce531b6 100644 --- a/NOTICE +++ b/NOTICE @@ -6,5 +6,5 @@ The Apache Software Foundation (http://www.apache.org/). The initial codebase was donated to the ASF by HugeGraph Authors, copyright 2017-2021. -This product includes OINK v1.0.0 (https://github.com/pgsty/oink), +This product includes OINK (https://github.com/pgsty/oink), Copyright 2026 PGSTY contributors, licensed under the Apache License 2.0. diff --git a/README.md b/README.md index 6b2b71db2c..1e618d088d 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ scripts/hugo.sh server Open http://localhost:1313 to preview. -The module graph must resolve `github.com/pgsty/oink@v1.0.0`. For a production-equivalent check, run the strict build command shown below. +The module graph must resolve the OINK version pinned in `go.mod`; verify it with `python3 scripts/oink_module.py`. For a production-equivalent check, run the strict build command shown below. ## Repository Structure @@ -51,7 +51,7 @@ hugegraph-doc/ │ └── en/ # 🇺🇸 English documentation (mirrors cn/ structure) │ ├── data/ # 🧭 Landing-page and footer data -├── i18n/zh-CN.yaml # 🌐 OINK interface strings for the /cn/ locale +├── i18n/zh-CN.yaml # 🌐 HugeGraph labels for the /cn/ locale ├── assets/ # 🖼️ Project brand assets ├── layouts/ # 📐 Hugo template overrides ├── static/ # 📁 Static files @@ -79,6 +79,7 @@ hugegraph-doc/ ### Detailed Guide See [contribution.md](./contribution.md) for the pinned toolchain, strict build, OINK customization, and translation rules. +For theme updates, compatibility review and rollback, use the [OINK upgrade SOP](./scripts/oink-upgrade.md). ## Commands @@ -87,6 +88,7 @@ See [contribution.md](./contribution.md) for the pinned toolchain, strict build, | `scripts/hugo.sh server` | Start the manifest-aware dev server (hot reload) | | `scripts/hugo.sh build` | Strict, production-equivalent build to `./public/` | | `scripts/hugo.sh server -p 8080` | Start the dev server on a custom port | +| `scripts/update-oink.sh v1.1.0` | Update the theme and run compatibility checks (see the SOP) | --- @@ -116,7 +118,7 @@ scripts/hugo.sh server 打开 http://localhost:1313 预览网站。 -模块图必须解析为 `github.com/pgsty/oink@v1.0.0`。需要执行与生产一致的检查时,请运行下方的严格构建命令。 +模块图必须解析为 `go.mod` 固定的 OINK 版本,可运行 `python3 scripts/oink_module.py` 校验。需要执行与生产一致的检查时,请运行下方的严格构建命令。 ### 仓库结构 @@ -135,7 +137,7 @@ hugegraph-doc/ │ └── en/ # 🇺🇸 英文文档(与 cn/ 结构一致) │ ├── data/ # 🧭 首页与页尾数据 -├── i18n/zh-CN.yaml # 🌐 /cn/ 语言的 OINK 界面文案 +├── i18n/zh-CN.yaml # 🌐 /cn/ 语言的 HugeGraph 专属文案 ├── assets/ # 🖼️ 项目品牌资源 ├── layouts/ # 📐 Hugo 模板覆盖 ├── static/ # 📁 静态文件 @@ -163,6 +165,7 @@ hugegraph-doc/ #### 详细指南 查看 [contribution.md](./contribution.md) 了解固定工具链、严格构建、OINK 定制和翻译要求。 +主题升级、兼容适配和回退请按 [OINK 升级 SOP](./scripts/oink-upgrade.md) 操作。 ### 常用命令 @@ -171,6 +174,7 @@ hugegraph-doc/ | `scripts/hugo.sh server` | 启动读取版本清单的开发服务器(支持热重载) | | `scripts/hugo.sh build` | 严格构建与生产等价的站点到 `./public/` | | `scripts/hugo.sh server -p 8080` | 在指定端口启动开发服务器 | +| `scripts/update-oink.sh v1.1.0` | 更新主题并执行兼容检查(详见升级 SOP) | --- diff --git a/assets/js/hugegraph-shell.js b/assets/js/hugegraph-shell.js index f5e51ba453..2cbf2e7028 100644 --- a/assets/js/hugegraph-shell.js +++ b/assets/js/hugegraph-shell.js @@ -2,8 +2,7 @@ * HugeGraph additions around OINK's shell. * * This file deliberately does not replace OINK's command palette. It only - * persists authored tree disclosures, makes a collapsed/dismissed sidebar - * inert, and adds an explicit retry control to the existing search error. + * persists authored tree disclosures through OINK's public API and adds an explicit retry control to the existing search error. */ (function (global) { 'use strict'; @@ -32,133 +31,89 @@ } } - function setTreeExpanded(button, expanded, documentObject) { - var target = documentObject.getElementById( - button.getAttribute('aria-controls'), - ); - if (!target) return; - button.setAttribute('aria-expanded', expanded ? 'true' : 'false'); - target.classList.toggle('td-is-open', expanded); - var label = expanded - ? button.dataset.tdLabelCollapse - : button.dataset.tdLabelExpand; - if (label) button.setAttribute('aria-label', label); - } - function initTreePersistence(windowObject, documentObject, config) { - var buttons = Array.prototype.slice.call( - documentObject.querySelectorAll('[data-td-shell-tree-toggle][aria-controls]'), - ); - if (!buttons.length) return; - var storage = safeStorage(windowObject); - var key = - 'oink.sidebar.v1.' + - String(config.version || 'latest') + - '.' + - String(config.locale || 'en'); - var valid = new Set( - buttons.map(function (button) { + var sidebar = windowObject.OinkSidebar; + if (!sidebar) return; + return sidebar.ready.then(function () { + var buttons = Array.prototype.slice.call(documentObject.querySelectorAll( + '#td-shell-sidebar [data-td-shell-tree-toggle][aria-controls], ' + + '[data-td-shell-aside] [data-td-shell-tree-toggle][aria-controls]', + )); + if (!buttons.length) return; + var storage = safeStorage(windowObject); + var scope = String(config.version || 'latest') + '.' + String(config.locale || 'en'); + var key = 'oink.sidebar.v3.' + scope; + var valid = new Set(buttons.map(function (button) { return button.getAttribute('aria-controls'); - }), - ); - var saved = []; - if (storage) { - try { - var parsed = JSON.parse(storage.getItem(key) || '[]'); - if (Array.isArray(parsed)) { - saved = parsed.filter(function (id) { - return typeof id === 'string' && valid.has(id); - }); - } - } catch (_) { - saved = []; - } - } - var remembered = new Set(saved); - - buttons.forEach(function (button) { - var item = button.closest('li'); - var activePath = item && item.classList.contains('td-active-path'); - setTreeExpanded( - button, - Boolean(activePath || remembered.has(button.getAttribute('aria-controls'))), - documentObject, - ); - button.addEventListener('click', function () { - global.setTimeout(function () { - if (!storage) return; - var expanded = buttons - .filter(function (candidate) { - var candidateItem = candidate.closest('li'); - return ( - candidate.getAttribute('aria-expanded') === 'true' && - !(candidateItem && - candidateItem.classList.contains('td-active-path')) - ); - }) - .map(function (candidate) { - return candidate.getAttribute('aria-controls'); - }); - try { - storage.setItem(key, JSON.stringify(expanded)); - } catch (_) { - /* Active-path expansion remains the storage-free fallback. */ + })); + var remembered = new Set(); + var hasSavedState = false; + var legacyState = false; + if (storage) { + try { + var stored = storage.getItem(key); + if (stored === null) { + stored = storage.getItem('oink.sidebar.v2.' + scope); + legacyState = stored !== null; + } + var parsed = JSON.parse(stored || '[]'); + if (Array.isArray(parsed)) { + hasSavedState = stored !== null; + remembered = new Set(parsed.filter(function (id) { + return typeof id === 'string' && valid.has(id); + })); } - }, 0); + } catch (_) { /* Keep active-path and docs-home defaults. */ } + } + var docsRoot = /(?:^|\/)(?:cn\/)?docs\/?$/.test(windowObject.location.pathname); + buttons.forEach(function (button) { + var id = button.getAttribute('aria-controls'); + var isAside = Boolean(button.closest('[data-td-shell-aside]')); + // v2 stored only the main tree: an absent aside id was not a choice + // to collapse it. v3 records both, including an explicitly empty set. + var defaultOpen = isAside + ? (!hasSavedState || legacyState) && sidebar.getState(id).expanded + : !hasSavedState && docsRoot && /_nav(?:start|components)-children$/.test(id); + // OINK preserves the active path and owns DOM, inert and ARIA state. + sidebar.setExpanded(id, remembered.has(id) || defaultOpen, { source: 'api' }); }); - }); - // Rewriting the filtered set removes stale node IDs after navigation - // changes without retaining a second schema/version marker. - if (storage) { - try { - storage.setItem(key, JSON.stringify(saved)); - } catch (_) { - /* Ignore storage becoming unavailable after the probe. */ + function persist() { + if (!storage) return; + var expanded = buttons.filter(function (button) { + var item = button.closest('li'); + var state = sidebar.getState(button.getAttribute('aria-controls')); + return state && state.expanded && + !(item && item.classList.contains('td-active-path')); + }).map(function (button) { return button.getAttribute('aria-controls'); }); + try { storage.setItem(key, JSON.stringify(expanded)); } + catch (_) { /* Storage can become unavailable after initialization. */ } } - } + documentObject.addEventListener('oink:sidebar-disclosure', function (event) { + if (event.detail && event.detail.source === 'user' && valid.has(event.detail.id)) persist(); + }); + if (!hasSavedState || legacyState) persist(); + }); } - function initSidebarIsolation(windowObject, documentObject) { - var html = documentObject.documentElement; - var sidebar = documentObject.getElementById('td-shell-sidebar'); - if (!sidebar) return; - var restore = documentObject.querySelector('.hg-sidebar-restore'); - var desktop = windowObject.matchMedia('(min-width: 768px)'); - - function sync() { - var collapsed = - html.getAttribute('data-td-shell-sidebar') === 'collapsed'; - var drawerOpen = - html.getAttribute('data-td-shell-drawer') === 'open'; - var isolated = desktop.matches ? collapsed : !drawerOpen; - if (restore) restore.hidden = !desktop.matches || !collapsed; - sidebar.inert = isolated; - if (isolated) sidebar.setAttribute('aria-hidden', 'true'); - else sidebar.removeAttribute('aria-hidden'); - if ( - isolated && - sidebar.contains(documentObject.activeElement) && - restore && - restore.offsetParent !== null - ) { - restore.focus(); - } - } - - new MutationObserver(sync).observe(html, { - attributes: true, - attributeFilter: ['data-td-shell-sidebar', 'data-td-shell-drawer'], - }); - desktop.addEventListener('change', sync); - documentObject - .querySelectorAll('[data-td-shell-sidebar-toggle], [data-td-shell-drawer-close]') - .forEach(function (button) { - button.addEventListener('click', function () { - global.queueMicrotask(sync); - }); + function initScrollableTables(documentObject) { + documentObject.querySelectorAll('[data-td-asset-table-scroll]').forEach(function (region) { + if (region.dataset.hgTableScrollBound !== undefined) return; + region.dataset.hgTableScrollBound = ''; + region.addEventListener('keydown', function (event) { + // Keep native keyboard behavior for links and other descendants in the table. + if (event.target !== region) return; + if (region.scrollWidth <= region.clientWidth) return; + var delta = 0; + if (event.key === 'ArrowRight') delta = 80; + else if (event.key === 'ArrowLeft') delta = -80; + else if (event.key === 'Home') delta = -region.scrollLeft; + else if (event.key === 'End') delta = region.scrollWidth - region.clientWidth - region.scrollLeft; + else return; + event.preventDefault(); + region.scrollBy({ left: delta, behavior: 'smooth' }); }); - sync(); + }); } function initSearchRetry(windowObject, documentObject) { @@ -323,7 +278,7 @@ consumeVersionFallback(windowObject, documentObject, config); initVersionSwitching(windowObject, documentObject); initTreePersistence(windowObject, documentObject, config); - initSidebarIsolation(windowObject, documentObject); + initScrollableTables(documentObject); initSearchRetry(windowObject, documentObject); } @@ -331,7 +286,7 @@ init: init, readConfig: readConfig, safeStorage: safeStorage, - setTreeExpanded: setTreeExpanded, + initTreePersistence: initTreePersistence, versionTarget: versionTarget, initVersionSwitching: initVersionSwitching, consumeVersionFallback: consumeVersionFallback, diff --git a/assets/js/kapa-adapter.js b/assets/js/kapa-adapter.js index e964ec2465..0cda8dd6f8 100644 --- a/assets/js/kapa-adapter.js +++ b/assets/js/kapa-adapter.js @@ -70,6 +70,7 @@ 'data-source-group-ids-include': config.sourceGroupId, 'data-language': config.locale, 'data-project-name': 'Apache HugeGraph', + 'data-project-logo': '/img/logo.svg', 'data-project-color': config.themeColor, 'data-project-color-dark': mixWithWhite(config.themeColor, 48), 'data-surface-color': '#ffffff', @@ -90,6 +91,7 @@ 'data-font-family': '-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, sans-serif', 'data-modal-content-border-radius': '12px', + 'data-modal-z-index': '1050', 'data-modal-content-border': '1px solid #d9d4e4', 'data-modal-content-border-dark': '1px solid #494254', 'data-launcher-button-hidden': 'true', @@ -107,11 +109,15 @@ function createController(windowObject, documentObject, config) { var state = 'idle'; + var consented = false; + var pending = null; + var consent = documentObject.querySelector('[data-hg-ai-consent]'); var attempt = 0; var timer = 0; var lastTrigger = null; var activeScript = null; var activeQueue = null; + var operation = null; var status = documentObject.querySelector('[data-hg-ai-status]'); function renderState(next, message) { @@ -130,13 +136,29 @@ } } + function settle(error) { + if (!operation) return; + var current = operation; + operation = null; + current.signal.removeEventListener('abort', current.abort); + if (error) current.reject(error); + else current.resolve(); + } + function openWidget(query, submit) { - invokeKapa(windowObject, 'setSourceGroupIDs', [config.sourceGroupId]); - invokeKapa(windowObject, 'open', { - mode: 'ai', - query: query, - submit: submit, - }); + try { + invokeKapa(windowObject, 'setSourceGroupIDs', [config.sourceGroupId]); + invokeKapa(windowObject, 'open', { + mode: 'ai', + query: query, + submit: submit, + }); + settle(); + } catch (_) { + discardAttempt(attempt); + renderState('error', config.labels.error); + settle(new Error(config.labels.error)); + } } function discardAttempt(serial) { @@ -169,6 +191,7 @@ windowObject.clearTimeout(timer); discardAttempt(serial); renderState('error', config.labels.error); + settle(new Error(config.labels.error)); } function ready(serial, query, submit) { @@ -220,15 +243,14 @@ documentObject.head.appendChild(script); } - function activate(query, submit, trigger) { + function load(query, submit) { query = trimmedQuery(query); - lastTrigger = trigger || documentObject.activeElement; if (state === 'loading') return; if (state === 'ready') { openWidget(query, Boolean(submit && query)); return; } - var retrying = state === 'error'; + var retrying = attempt > 0; var serial = ++attempt; renderState('loading', ''); timer = windowObject.setTimeout(function () { @@ -237,6 +259,80 @@ ensureScript(serial, query, Boolean(submit && query), retrying); } + function cancelConsent() { + pending = null; + renderState('idle', ''); + if (consent && consent.open) consent.close(); + restoreFocus(); + settle(); + } + + function activate(query, submit, trigger, context) { + if (state === 'loading' || state === 'consent') return; + if (context && context.signal.aborted) return Promise.resolve(); + lastTrigger = trigger || documentObject.activeElement; + var completion; + if (context) { + completion = new Promise(function (resolve, reject) { + operation = { signal: context.signal, resolve: resolve, reject: reject }; + operation.abort = function () { + windowObject.clearTimeout(timer); + if (state === 'loading') discardAttempt(attempt); + attempt += 1; + pending = null; + if (consent && consent.open) consent.close(); + renderState('idle', ''); + settle(); + }; + context.signal.addEventListener('abort', operation.abort, { once: true }); + }); + // Transfer focus before opening a dialog; OINK keeps cancellation alive + // until this promise settles, including when search is opened again. + if (!context.handoff()) { + settle(); + return completion; + } + } + if (consented) { + load(query, submit); + return completion; + } + // Fail closed if the local consent panel is unavailable. + if (!consent || typeof consent.showModal !== 'function') { + renderState('error', config.labels.error); + settle(new Error(config.labels.error)); + return completion; + } + pending = { query: trimmedQuery(query), submit: submit }; + renderState('consent', ''); + consent.showModal(); + return completion; + } + + if (consent) { + // Keep the underlying search palette from consuming modal keyboard events. + consent.addEventListener('keydown', function (event) { + event.stopPropagation(); + if (event.key === 'Escape') { + event.preventDefault(); + cancelConsent(); + } + }); + consent.querySelector('[data-hg-ai-continue]').addEventListener('click', function () { + if (!pending) return; + var request = pending; + pending = null; + consented = true; + consent.close(); + load(request.query, request.submit); + }); + consent.querySelector('[data-hg-ai-cancel]').addEventListener('click', cancelConsent); + consent.addEventListener('cancel', function (event) { + event.preventDefault(); + cancelConsent(); + }); + } + function restoreFocus() { if (lastTrigger && typeof lastTrigger.focus === 'function') { lastTrigger.focus(); @@ -256,104 +352,48 @@ var config = readConfig(documentObject); if (!config) return null; var controller = createController(windowObject, documentObject, config); - var root = documentObject.getElementById('td-shell-search'); - var input = root && root.querySelector('.td-shell-search__input'); - var list = root && root.querySelector('.td-shell-search__list'); - var syncing = false; - - function bind(button) { + documentObject.querySelectorAll('[data-hg-ask-ai]').forEach(function (button) { if (button.dataset.hgAiBound !== undefined) return; button.dataset.hgAiBound = ''; button.addEventListener('click', function () { - controller.activate( - button.dataset.hgAiQuery || '', - button.dataset.hgAiSubmit === 'true', - button, - ); + controller.activate('', false, button); }); - } - documentObject.querySelectorAll('[data-hg-ask-ai]').forEach(bind); - - function syncTail() { - syncing = false; - if (!root || !input || !list || root.hidden) return; - var old = list.querySelector('[data-hg-ai-search-tail]'); - var query = trimmedQuery(input.value); - if (!query || query.charAt(0) === '>') { - if (old) old.remove(); - return; - } - var choiceLabel = root.dataset.tdTChoice || ''; - if ( - choiceLabel && - Array.prototype.some.call( - list.querySelectorAll('.td-shell-search__group-label'), - function (label) { return label.textContent.trim() === choiceLabel; }, - ) - ) { - if (old) old.remove(); - return; - } - var loading = root.dataset.tdTLoading || ''; - if ( - loading && - Array.prototype.some.call( - list.querySelectorAll('.td-shell-search__empty'), - function (node) { return node.textContent.trim() === loading; }, - ) - ) { - if (old) old.remove(); - return; - } - var oldButton = old && old.querySelector('[data-hg-ask-ai]'); - if (oldButton && oldButton.dataset.hgAiQuery === query) return; - if (old) old.remove(); - - var group = documentObject.createElement('div'); - group.className = 'td-shell-search__group hg-ai-search-tail'; - group.dataset.hgAiSearchTail = ''; - group.setAttribute('role', 'group'); - var label = documentObject.createElement('div'); - label.className = 'td-shell-search__group-label'; - label.textContent = config.labels.ask; - var row = documentObject.createElement('button'); - row.type = 'button'; - row.className = 'td-shell-search__item hg-ai-search-tail__button'; - row.dataset.hgAskAi = ''; - row.dataset.hgAiQuery = query; - row.dataset.hgAiSubmit = 'true'; - var icon = documentObject.createElement('i'); - icon.className = - 'fa-solid fa-wand-magic-sparkles td-shell-search__item-icon'; - icon.setAttribute('aria-hidden', 'true'); - var meta = documentObject.createElement('span'); - meta.className = 'td-shell-search__item-meta'; - var title = documentObject.createElement('span'); - title.className = 'td-shell-search__item-title'; - title.textContent = config.labels.ask + ': “' + query + '”'; - var detail = documentObject.createElement('span'); - detail.className = 'td-shell-search__item-ref'; - detail.textContent = - config.labels.description + - (config.historical ? ' ' + config.labels.latest + '.' : ''); - meta.appendChild(title); - meta.appendChild(detail); - row.appendChild(icon); - row.appendChild(meta); - group.appendChild(label); - group.appendChild(row); - list.appendChild(group); - bind(row); - } + }); - if (list) { - new MutationObserver(function () { - if (syncing) return; - syncing = true; - windowObject.requestAnimationFrame(syncTail); - }).observe(list, { childList: true, subtree: true }); - input.addEventListener('input', syncTail); - syncTail(); + var palette = windowObject.OinkCommandPalette; + if (palette && typeof palette.registerSearchTail === 'function') { + palette.registerSearchTail({ + id: 'hugegraph-ai', + rows: function (context) { + return [{ + id: 'ask', + title: config.labels.ask + ': “' + context.query + '”', + description: config.historical ? config.labels.latest + '.' : '', + icon: 'fa-solid fa-wand-magic-sparkles', + }]; + }, + activate: function (_, context) { + // OINK debounces row rendering; Enter can activate an older row. + var input = documentObject.querySelector('#td-shell-search .td-shell-search__input'); + var query = trimmedQuery(input ? input.value : context.query); + if (query !== context.query) { + // Refresh OINK's cancellation token as well as the submitted text; + // otherwise its pending render aborts a handoff for the old query. + var instance = palette.instance; + instance.render(query); + var rows = instance.rows(); + var index = rows.findIndex(function (row) { + return row.type === 'extension' && row.owner.id === 'hugegraph-ai'; + }); + if (index >= 0) instance.activate(index); + return; + } + if (!query || query.charAt(0) === '>') return; + // Search options are ephemeral and become hidden on handoff. + var trigger = documentObject.querySelector('.hg-ask-ai-launcher'); + return controller.activate(query, true, trigger, context); + }, + }); } return controller; } diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss index 14bfd7e77c..29fbad69f6 100644 --- a/assets/scss/_styles_project.scss +++ b/assets/scss/_styles_project.scss @@ -352,6 +352,26 @@ } } } + + // A hover preview is a continuation of the global header, rather than a + // second offset card. Align its panel to the same top and left edges so the + // brand row and navbar read as one surface while the normal sidebar keeps + // its authored overlay geometry. + [data-td-shell-sidebar='collapsed'] + .td-shell-sidebar--overlay + .td-shell-sidebar__panel { + inset-block-start: 0; + transform: translateX(0); + border-block-start: 0; + border-start-start-radius: 0; + border-start-end-radius: 0; + } + + [dir='rtl'][data-td-shell-sidebar='collapsed'] + .td-shell-sidebar--overlay + .td-shell-sidebar__panel { + transform: translateX(0); + } } @media (forced-colors: active) and (min-width: 768px) { @@ -487,29 +507,14 @@ display: none; } -.td-nav-util.hg-sidebar-restore { - display: none; -} - -@media (min-width: 768px) { - [data-td-shell-sidebar='collapsed'] { - #td-shell-sidebar { - visibility: hidden; - pointer-events: none; - } - - // OINK v1.0 exposes a left-edge hover overlay after collapse. HugeGraph's - // explicit restore control replaces that hidden target entirely. - #td-shell-sidebar.td-shell-sidebar--overlay - .td-shell-sidebar__panel { - visibility: hidden; - transform: translateX(-100%); - pointer-events: none; - } - - .td-nav-util.hg-sidebar-restore:not([hidden]) { - display: inline-flex; - } +.hg-version-overflow { + color: var(--bs-body-color); + summary { + cursor: pointer; + padding: .5rem .75rem; + list-style: none; + &::-webkit-details-marker { display: none; } + &:focus-visible { outline: 2px solid var(--bs-primary); } } } @@ -527,29 +532,14 @@ font-size: 0.84rem; } -.hg-ai-search-tail { - border-block-start: 1px solid var(--bs-border-color); - - &__button { - width: 100%; - border: 0; - background: transparent; - color: inherit; - text-align: start; - - &:hover, - &:focus-visible { - background: var(--hg-theme-color-soft); - color: inherit; - } - } -} - .hg-ask-ai-launcher { position: fixed; z-index: 1040; inset-inline-end: unquote('max(1rem, env(safe-area-inset-right))'); - inset-block-end: unquote('max(1rem, env(safe-area-inset-bottom))'); + // Keep the launcher clear of the footer while preserving the safe-area + // inset on mobile. The offset is intentionally site-owned so OINK upgrades + // do not require changing the widget or theme source. + inset-block-end: unquote('calc(max(1rem, env(safe-area-inset-bottom)) + 4rem)'); display: inline-flex; align-items: center; gap: 0.45rem; @@ -583,7 +573,7 @@ z-index: 1039; inset-inline-end: unquote('max(1rem, env(safe-area-inset-right))'); inset-block-end: unquote( - 'calc(max(1rem, env(safe-area-inset-bottom)) + 3.4rem)' + 'calc(max(1rem, env(safe-area-inset-bottom)) + 6.8rem)' ); width: unquote('min(18rem, calc(100vw - 2rem))'); padding: 0.55rem 0.7rem; @@ -645,7 +635,8 @@ gap: 0.35rem; > a, - > button { + > button, + > .hg-version-overflow > a { display: inline-flex; align-items: center; gap: 0.4rem; @@ -660,12 +651,18 @@ } > a[aria-current='page'], + > .hg-version-overflow > a[aria-current='page'], > button[aria-pressed='true'] { background: var(--bs-primary-bg-subtle); color: var(--bs-primary-text-emphasis); } } + .hg-shell-mobile-utils__links > .hg-version-overflow > a { + margin-inline-end: 0.35rem; + margin-block-start: 0.35rem; + } + .hg-shell-mobile-utils__github { display: inline-flex; align-items: center; @@ -834,3 +831,56 @@ } } } + +// ASF download tables (layouts/_partials/asf-downloads.html): keep the cells +// on one line so the wide table scrolls inside td-asset-list__table-wrap +// instead of squeezing every column, and lay the release meta out inline. +.hg-asf-release { + // The focusable wrapper owns horizontal scrolling, not td-content's table. + .td-asset-list__table-wrap { + overflow-x: auto !important; + overflow-y: hidden; + } + + .td-asset-list__table { + display: table !important; + width: max-content; + min-width: 100%; + overflow: visible !important; + } + + .td-asset-list__table th, + .td-asset-list__table td { + white-space: nowrap; + } +} + +.hg-asf-release__meta { + list-style: none; + padding-left: 0; + display: flex; + flex-wrap: wrap; + gap: 0.25rem 1.5rem; +} + + +// Local disclosure renders before any third-party AI resource is requested. +.hg-ai-consent { + width: calc(100% - 2rem); + max-width: 28rem; + padding: 1.5rem; + border: 1px solid var(--bs-border-color); + border-radius: .75rem; + background: var(--bs-body-bg); + color: var(--bs-body-color); + box-shadow: 0 .75rem 3rem rgba(0, 0, 0, .2); + &::backdrop { background: rgba(0, 0, 0, .4); } + h2 { font-size: 1.25rem; } + .hg-ai-consent-actions { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + gap: .75rem; + margin-top: 1.25rem; + } +} diff --git a/assets/scss/community-members.scss b/assets/scss/community-members.scss new file mode 100644 index 0000000000..0ed28310f4 --- /dev/null +++ b/assets/scss/community-members.scss @@ -0,0 +1,99 @@ +.hg-community-members { + --hg-community-columns: 4; + padding-block: 3rem; + &__role { + padding-block: 1.5rem; + } + &__role + &__role { margin-top: 1rem; } + .td-landing-section__header h2 { + margin-bottom: .65rem; + font-size: clamp(2rem, 3vw, 2.75rem); + letter-spacing: -.035em; + } + &__grid { + --td-columns: var(--hg-community-columns); + display: grid; + grid-template-columns: repeat(var(--hg-community-columns), minmax(0, 1fr)); + gap: 1rem; + padding: 0; + margin: 1rem 0 0; + list-style: none; + } +} +.td-default main .hg-community-members { padding: 3rem 0; } +.td-default main .hg-community-members__role { padding: 1.5rem 0; } +.hg-community-member { + display: block; + min-width: 0; + padding: 0; + border: 0; + border-radius: 0; + background: transparent; + box-shadow: none; + &__surface { + display: flex; + width: 100%; + min-height: 5.25rem; + align-items: center; + gap: .9rem; + padding: .85rem 1rem; + color: inherit; + text-decoration: none; + border: 1px solid var(--td-line, var(--bs-border-color)); + border-radius: 1rem; + background: var(--td-card-bg, var(--bs-body-bg)); + box-shadow: 0 .35rem 1rem rgba(35, 45, 75, .07); + } + &__link { + transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease; + &:hover, &:focus-visible { + color: var(--td-link-color, var(--bs-link-color)); + border-color: currentColor; + box-shadow: 0 .55rem 1.3rem rgba(35, 45, 75, .13); + transform: translateY(-1px); + } + } + &__avatar { + position: relative; + display: grid; + flex: 0 0 3.35rem; + width: 3.35rem; + height: 3.35rem; + overflow: hidden; + place-items: center; + border-radius: 50%; + background: var(--td-secondary-bg, var(--bs-secondary-bg)); + img, .hg-community-member__initials { position: absolute; inset: 0; width: 100%; height: 100%; } + img { object-fit: cover; } + } + &__initials { + display: grid; + place-items: center; + font-size: 1rem; + font-weight: 700; + color: var(--td-body-color, var(--bs-body-color)); + } + &__identity { min-width: 0; max-width: 100%; overflow-wrap: anywhere; font-size: .96rem; font-weight: 700; } +} +@media (max-width: 1199.98px) { + .hg-community-members { --hg-community-columns: 3; } +} +@media (max-width: 767.98px) { + .hg-community-members { + --hg-community-columns: 2; + padding: 2rem 0; + } + .td-default main .hg-community-members { padding: 2rem 0; } + .td-default main .hg-community-members__role { padding: 1rem 0; } + .hg-community-members__grid { gap: .75rem; } + .hg-community-member__surface { gap: .65rem; padding: .7rem; } + .hg-community-member__avatar { + flex-basis: 2.8rem; + width: 2.8rem; + height: 2.8rem; + } + .hg-community-member__identity { + font-size: .9rem; + overflow-wrap: break-word; + } +} diff --git a/content/cn/docs/_nav/operate.md b/content/cn/docs/_nav/operate.md index 5516b6ab7b..99b13577ac 100644 --- a/content/cn/docs/_nav/operate.md +++ b/content/cn/docs/_nav/operate.md @@ -1,6 +1,6 @@ --- -title: "运维" -linkTitle: "运维" +title: "配置" +linkTitle: "配置" description: "从配置开始,再查看安全、备份和性能调优指南。" manual_link: /cn/docs/config/ search_exclude: true diff --git a/content/cn/docs/clients/_index.md b/content/cn/docs/clients/_index.md index b31bade126..5fd06188dc 100644 --- a/content/cn/docs/clients/_index.md +++ b/content/cn/docs/clients/_index.md @@ -1,7 +1,10 @@ --- title: "客户端与 API" +description: "通过 Java 客户端、REST API、Gremlin Console 和其他客户端库连接 HugeGraph。" linkTitle: "客户端与 API" weight: 5 +search_keywords: [HugeGraph 客户端, Java 客户端, 客户端库] +search_boost: 1.5 --- 本节包含 REST API、Gremlin Console 和客户端说明。当前 Server REST API 使用图空间和图名称组成资源路径;具体路径以各 API 页面和 Server 的 OpenAPI 页面为准。 diff --git a/content/cn/docs/clients/restful-api/_index.md b/content/cn/docs/clients/restful-api/_index.md index 6094321b29..ab79ed10b8 100644 --- a/content/cn/docs/clients/restful-api/_index.md +++ b/content/cn/docs/clients/restful-api/_index.md @@ -2,6 +2,8 @@ title: "HugeGraph RESTful API" linkTitle: "RESTful API" weight: 1 +search_keywords: [HugeGraph REST API, RESTful API, OpenAPI] +search_boost: 1.7 --- > ⚠️ **版本兼容性说明** diff --git a/content/cn/docs/clients/restful-api/vertex.md b/content/cn/docs/clients/restful-api/vertex.md index 1318da72f2..3e9c5d69f1 100644 --- a/content/cn/docs/clients/restful-api/vertex.md +++ b/content/cn/docs/clients/restful-api/vertex.md @@ -5,7 +5,7 @@ weight: 7 description: "Vertex(顶点)REST 接口:创建、查询、更新和删除图中的顶点数据,支持批量操作和条件过滤。" --- -### 2.1 Vertex +## 2.1 Vertex {#vertex-api} 顶点类型中的 `Id` 策略决定了顶点的 `Id` 类型,其对应的 `id` 类型如下: @@ -16,6 +16,7 @@ description: "Vertex(顶点)REST 接口:创建、查询、更新和删除图 | CUSTOMIZE_STRING | string | | CUSTOMIZE_NUMBER | number | | CUSTOMIZE_UUID | uuid | +{#vertex-id-strategy .full-width caption="顶点 ID 策略"} 顶点的 `GET/PUT/DELETE` API 中 url 的 id 部分应该传入带有类型信息的 id 值,这个类型信息通过 json 串是否带引号来表示,也就是说: @@ -41,24 +42,24 @@ schema.vertexLabel("software").properties("name", "lang", "price").primaryKeys(" schema.indexLabel("personByAge").onV("person").by("age").range().ifNotExist().create(); ``` -#### 2.1.1 创建一个顶点 +### 2.1.1 创建一个顶点 {#create-vertex} -##### Params +#### Params **路径参数说明:** - graphspace: 图空间名称 - graph: 图名称 -##### Method & Url +#### Method & Url ``` POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices ``` -##### Request Body +#### Request Body -```json +```json {filename="request.json" wrap=true} { "label": "person", "properties": { @@ -68,15 +69,15 @@ POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices } ``` -##### Response Status +#### Response Status ```json 201 ``` -##### Response Body +#### Response Body -```json +```json {filename="response.json" wrap=true} { "id": "1:marko", "label": "person", @@ -88,22 +89,22 @@ POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices } ``` -#### 2.1.2 创建多个顶点 +### 2.1.2 创建多个顶点 -##### Params +#### Params **路径参数说明:** - graphspace: 图空间名称 - graph: 图名称 -##### Method & Url +#### Method & Url ``` POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/batch ``` -##### Request Body +#### Request Body ```json [ @@ -125,13 +126,13 @@ POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/b ] ``` -##### Response Status +#### Response Status ```json 201 ``` -##### Response Body +#### Response Body ```json [ @@ -140,9 +141,9 @@ POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/b ] ``` -#### 2.1.3 更新顶点属性 +### 2.1.3 更新顶点属性 -##### Params +#### Params **路径参数说明:** @@ -150,13 +151,13 @@ POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/b - graph: 图名称 - id: 顶点 id,需要包含引号,例如"1:marko" -##### Method & Url +#### Method & Url ``` PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1:marko"?action=append ``` -##### Request Body +#### Request Body ```json { @@ -170,13 +171,13 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 > 注意:属性的取值有三种类别,分别为 single、set 和 list。single 表示增加或更新属性值,set 或 list 表示追加属性值。 -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -191,9 +192,9 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 } ``` -#### 2.1.4 批量更新顶点属性 +### 2.1.4 批量更新顶点属性 -##### 功能说明 +#### 功能说明 批量更新顶点的属性时,可以选择多种更新策略,如下: @@ -246,20 +247,20 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 curl -H "Content-Type: application/json" -d '[{"label":"person","properties":{"name":"josh","age":32,"city":"Beijing","weight":0.1,"hobby":["reading","football"]}},{"label":"software","properties":{"name":"lop","lang":"java","price":328}}]' http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/batch ``` -##### Params +#### Params **路径参数说明:** - graphspace: 图空间名称 - graph: 图名称 -##### Method & Url +#### Method & Url ``` PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/batch ``` -##### Request Body +#### Request Body ```json { @@ -297,13 +298,13 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/ba } ``` -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -349,9 +350,9 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/ba 其他更新策略的使用方式与此类似,此处不再详述。 -#### 2.1.5 删除顶点属性 +### 2.1.5 删除顶点属性 -##### Params +#### Params **路径参数说明:** @@ -359,13 +360,13 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/ba - graph: 图名称 - id: 顶点 id,需要包含引号,例如"1:marko" -##### Method & Url +#### Method & Url ``` PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1:marko"?action=eliminate ``` -##### Request Body +#### Request Body ```json { @@ -378,13 +379,13 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 > 注意:这里会直接删除属性(删除 key 和所有 value),无论其属性的取值是 single、set 或 list。 -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -398,9 +399,9 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 } ``` -#### 2.1.6 获取符合条件的顶点 +### 2.1.6 获取符合条件的顶点 -##### Params +#### Params **路径参数说明:** @@ -435,19 +436,19 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 **查询所有 age 为 29 且 label 为 person 的顶点** -##### Method & Url +#### Method & Url ``` GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices?label=person&properties={"age":29}&limit=1 ``` -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -473,19 +474,19 @@ GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices?la curl -H "Content-Type: application/json" -d '[{"label":"person","properties":{"name":"peter","age":29,"city":"Shanghai"}},{"label":"person","properties":{"name":"vadas","age":27,"city":"Hongkong"}}]' http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/batch ``` -##### Method & Url +#### Method & Url ``` GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices?page&limit=3 ``` -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -534,19 +535,19 @@ GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices?pa **分页查询所有顶点,获取下一页(page 带上上一页返回的 page 值),限定 3 条** -##### Method & Url +#### Method & Url ``` GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices?page=CIYxOnBldGVyAAAAAAAAAAM=&limit=3 ``` -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -588,9 +589,9 @@ GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices?pa 当`"page": null`时,表示已经没有下一页了(注:如果后端使用的是 Cassandra,为了提高性能,当返回的页数刚好是最后一页时,返回的 `page` 值可能不为空,但是如果用这个 `page` 值再请求下一页数据时,就会返回 `空数据` 和 `page = null`,其他情况也类似) -#### 2.1.7 根据 Id 获取顶点 +### 2.1.7 根据 Id 获取顶点 -##### Params +#### Params **路径参数说明:** @@ -598,19 +599,19 @@ GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices?pa - graph: 图名称 - id: 顶点 id,需要包含引号,例如"1:marko" -##### Method & Url +#### Method & Url ``` GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1:marko" ``` -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -624,9 +625,9 @@ GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 } ``` -#### 2.1.8 根据 Id 删除顶点 +### 2.1.8 根据 Id 删除顶点 -##### Params +#### Params **路径参数说明:** @@ -640,13 +641,13 @@ GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 **仅根据 Id 删除顶点** -##### Method & Url +#### Method & Url ``` DELETE http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1:marko" ``` -##### Response Status +#### Response Status ```json 204 @@ -656,13 +657,13 @@ DELETE http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices 通过指定 Label 参数和 Id 来删除顶点时,一般来说其性能比仅根据 Id 删除会更好。 -##### Method & Url +#### Method & Url ``` DELETE http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1:marko"?label=person ``` -##### Response Status +#### Response Status ```json 204 diff --git a/content/cn/docs/config/config-authentication.md b/content/cn/docs/config/config-authentication.md index a6b67d1b5c..481edd5038 100644 --- a/content/cn/docs/config/config-authentication.md +++ b/content/cn/docs/config/config-authentication.md @@ -2,6 +2,8 @@ title: "HugeGraph 内置用户权限与扩展权限配置及使用" linkTitle: "权限配置" weight: 3 +search_keywords: [HugeGraph 认证, 权限配置, StandardAuthenticator] +search_boost: 1.7 --- ### 概述 diff --git a/content/cn/docs/config/config-guide.md b/content/cn/docs/config/config-guide.md index c8d8d3c942..7d76a80f6f 100644 --- a/content/cn/docs/config/config-guide.md +++ b/content/cn/docs/config/config-guide.md @@ -2,6 +2,8 @@ title: "Server 启动指南" linkTitle: "Server 启动指南" weight: 1 +search_keywords: [HugeGraph 配置, Server 配置, 配置指南] +search_boost: 1.6 --- ### 1 概述 @@ -21,7 +23,7 @@ HugeGraphServer 内部集成了 GremlinServer 和 RestServer,而 gremlin-serve `gremlin-server.yaml` 的主要结构如下。示例省略了部分导入项;完整内容以发布包中的文件为准。 -```yaml +```yaml {filename="conf/gremlin-server.yaml" wrap=true collapse=18} # host and port of gremlin server, need to be consistent with host and port in rest-server.properties #host: 127.0.0.1 #port: 8182 diff --git a/content/cn/docs/download/download.md b/content/cn/docs/download/download.md index 831c22faaa..c9c67ef5a5 100644 --- a/content/cn/docs/download/download.md +++ b/content/cn/docs/download/download.md @@ -2,6 +2,8 @@ title: "下载 Apache HugeGraph" linkTitle: "Download" weight: 2 +search_keywords: [HugeGraph 下载, 发布包, SHA512] +search_boost: 3 --- > 指南: @@ -11,25 +13,11 @@ weight: 2 > - 检查哈希 (SHA512)、签名的说明在 [版本验证](/docs/contribution-guidelines/validate-release/) 页面, 也可参考 [ASF 验证说明](https://www.apache.org/dyn/closer.cgi#verify) > - 注: HugeGraph 所有组件版本号已保持一致, `client/loader/hubble/common` 等 maven 仓库版本号同理, 依赖引用可参考 [maven 示例](https://github.com/apache/hugegraph-toolchain#maven-dependencies) > - 兼容说明: HugeGraph 于 2026 年 1 月毕业后,下载路径已从 `/incubator/hugegraph` 迁移到 `/hugegraph`。历史版本的发布文件名可能仍包含 `-incubating-`。 +> - 从源码构建请参考 [编译构建说明](/cn/docs/quickstart/hugegraph/hugegraph-server/) -### 最新版本 1.7.0 +### 最新版本 -- Release Date: 2025-11-28 -- [Release Notes](/docs/changelog/hugegraph-1.7.0-release-notes/) - -#### 二进制包 - -| Server | Toolchain | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0.tar.gz.sha512)] | [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.7.0/apache-hugegraph-toolchain-incubating-1.7.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-toolchain-incubating-1.7.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-toolchain-incubating-1.7.0.tar.gz.sha512)] | - -#### 源码包 - -Please refer to [build from source](/docs/quickstart/hugegraph/hugegraph-server/). - -| Server | Toolchain | AI | Computer | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.7.0/apache-hugegraph-toolchain-incubating-1.7.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-toolchain-incubating-1.7.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-toolchain-incubating-1.7.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.7.0/apache-hugegraph-ai-incubating-1.7.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-ai-incubating-1.7.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-ai-incubating-1.7.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.7.0/apache-hugegraph-computer-incubating-1.7.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-computer-incubating-1.7.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-computer-incubating-1.7.0-src.tar.gz.sha512)] | +{{< asf-downloads latest >}} --- @@ -41,75 +29,4 @@ Please refer to [build from source](/docs/quickstart/hugegraph/hugegraph-server/ > 2. `1.3.0` 是最后一个兼容 Java8 的主版本, 请尽早使用/迁移运行时为 Java11 (低版本 Java 有潜在更多的 SEC 风险和性能影响) > 3. 从版本 `1.5.0` 开始,需要 Java11 运行时环境 -#### 1.5.0 - -- Release Date: 2024-12-10 -- [Release Notes](/docs/changelog/hugegraph-1.5.0-release-notes/) - -##### 二进制包 - -| Server | Toolchain | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.5.0/apache-hugegraph-incubating-1.5.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-incubating-1.5.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-incubating-1.5.0.tar.gz.sha512)] | [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.5.0/apache-hugegraph-toolchain-incubating-1.5.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-toolchain-incubating-1.5.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-toolchain-incubating-1.5.0.tar.gz.sha512)] | - -##### 源码包 - -Please refer to [build from source](/docs/quickstart/hugegraph/hugegraph-server/). - -| Server | Toolchain | AI | Computer | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.5.0/apache-hugegraph-incubating-1.5.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-incubating-1.5.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-incubating-1.5.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.5.0/apache-hugegraph-toolchain-incubating-1.5.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-toolchain-incubating-1.5.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-toolchain-incubating-1.5.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.5.0/apache-hugegraph-ai-incubating-1.5.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-ai-incubating-1.5.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-ai-incubating-1.5.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.5.0/apache-hugegraph-computer-incubating-1.5.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-computer-incubating-1.5.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-computer-incubating-1.5.0-src.tar.gz.sha512)] | - -#### 1.3.0 - -- Release Date: 2024-04-01 -- [Release Notes](/docs/changelog/hugegraph-1.3.0-release-notes/) - -##### 二进制包 - -| Server | Toolchain | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.3.0/apache-hugegraph-incubating-1.3.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-incubating-1.3.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-incubating-1.3.0.tar.gz.sha512)] | [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.3.0/apache-hugegraph-toolchain-incubating-1.3.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-toolchain-incubating-1.3.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-toolchain-incubating-1.3.0.tar.gz.sha512)] | - -##### 源码包 - -Please refer to [build from source](/docs/quickstart/hugegraph/hugegraph-server/). - -| Server | Toolchain | AI | Common | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.3.0/apache-hugegraph-incubating-1.3.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-incubating-1.3.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-incubating-1.3.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.3.0/apache-hugegraph-toolchain-incubating-1.3.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-toolchain-incubating-1.3.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-toolchain-incubating-1.3.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.3.0/apache-hugegraph-ai-incubating-1.3.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-ai-incubating-1.3.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-ai-incubating-1.3.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.3.0/apache-hugegraph-commons-incubating-1.3.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-commons-incubating-1.3.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-commons-incubating-1.3.0-src.tar.gz.sha512)] | - - -#### 1.2.0 - -- Release Date: 2023-12-28 -- [Release Notes](/docs/changelog/hugegraph-1.2.0-release-notes/) - -##### 二进制包 - -| Server | Toolchain | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.2.0/apache-hugegraph-incubating-1.2.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-incubating-1.2.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-incubating-1.2.0.tar.gz.sha512)] | [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.2.0/apache-hugegraph-toolchain-incubating-1.2.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-toolchain-incubating-1.2.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-toolchain-incubating-1.2.0.tar.gz.sha512)] | - -##### 源码包 - -| Server | Toolchain | Computer | Common | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.2.0/apache-hugegraph-incubating-1.2.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-incubating-1.2.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-incubating-1.2.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.2.0/apache-hugegraph-toolchain-incubating-1.2.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-toolchain-incubating-1.2.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-toolchain-incubating-1.2.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.2.0/apache-hugegraph-computer-incubating-1.2.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-computer-incubating-1.2.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-computer-incubating-1.2.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.2.0/apache-hugegraph-commons-incubating-1.2.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-commons-incubating-1.2.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-commons-incubating-1.2.0-src.tar.gz.sha512)] | - -#### 1.0.0 - -- Release Date: 2023-02-22 -- [Release Notes](/docs/changelog/hugegraph-1.0.0-release-notes/) - -##### 二进制包 - -| Server | Toolchain | Computer | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-incubating-1.0.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-incubating-1.0.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-incubating-1.0.0.tar.gz.sha512)] | [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-toolchain-incubating-1.0.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-toolchain-incubating-1.0.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-toolchain-incubating-1.0.0.tar.gz.sha512)] | [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-computer-incubating-1.0.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-computer-incubating-1.0.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-computer-incubating-1.0.0.tar.gz.sha512)] | - -##### 源码包 - -| Server | Toolchain | Computer | Common | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-incubating-1.0.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-incubating-1.0.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-incubating-1.0.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-toolchain-incubating-1.0.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-toolchain-incubating-1.0.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-toolchain-incubating-1.0.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-computer-incubating-1.0.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-computer-incubating-1.0.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-computer-incubating-1.0.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-commons-incubating-1.0.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-commons-incubating-1.0.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-commons-incubating-1.0.0-src.tar.gz.sha512)] | +{{< asf-downloads archived >}} diff --git a/content/cn/docs/introduction/_index.md b/content/cn/docs/introduction/_index.md index d57559c4dc..26a64a2015 100644 --- a/content/cn/docs/introduction/_index.md +++ b/content/cn/docs/introduction/_index.md @@ -2,6 +2,8 @@ title: "Apache HugeGraph 介绍" linkTitle: "系统介绍" weight: 1 +search_keywords: [HugeGraph 介绍, 图数据库简介, 系统架构] +search_boost: 3 aliases: # Hugo 0.165 prefixes aliases with the current language path. - /docs/introduction/readme/ @@ -111,7 +113,7 @@ HugeGraph-AI 连接图技术与大语言模型、图机器学习框架。仓库 | 运行图算法 | [Vermeer 与 Computer](/cn/docs/quickstart/computing/) | | 构建 GraphRAG 或图机器学习应用 | [HugeGraph-AI](/cn/docs/quickstart/hugegraph-ai/) | -## 社区 +## 社区 {#community} - [GitHub Issues](https://github.com/apache/hugegraph/issues) - 开发者邮件列表:[dev@hugegraph.apache.org](mailto:dev@hugegraph.apache.org) diff --git a/content/cn/docs/quickstart/computing/hugegraph-computer.md b/content/cn/docs/quickstart/computing/hugegraph-computer.md index 297d0f7fc4..134e9f3b1a 100644 --- a/content/cn/docs/quickstart/computing/hugegraph-computer.md +++ b/content/cn/docs/quickstart/computing/hugegraph-computer.md @@ -2,6 +2,8 @@ title: "HugeGraph-Computer Quick Start" linkTitle: "使用 Computer 进行 OLAP 分析" weight: 2 +search_keywords: [HugeGraph Computer, 图计算, OLAP] +search_boost: 1.6 --- ## 1 HugeGraph-Computer 概述 diff --git a/content/cn/docs/quickstart/hugegraph/hugegraph-hstore.md b/content/cn/docs/quickstart/hugegraph/hugegraph-hstore.md index 34d5db1f01..f41c3d7e62 100644 --- a/content/cn/docs/quickstart/hugegraph/hugegraph-hstore.md +++ b/content/cn/docs/quickstart/hugegraph/hugegraph-hstore.md @@ -3,10 +3,12 @@ title: "HugeGraph-Store Quick Start" linkTitle: "安装/构建 HugeGraph-Store" weight: 3 search_keywords: - - server.port + - HugeGraph HStore + - 分布式存储 - REST 端口 - Store REST 端口 -search_boost: 1.5 + - server.port +search_boost: 1.6 --- ### 1 HugeGraph-Store 概述 diff --git a/content/cn/docs/quickstart/hugegraph/hugegraph-pd.md b/content/cn/docs/quickstart/hugegraph/hugegraph-pd.md index 532d11f893..403283cb3c 100644 --- a/content/cn/docs/quickstart/hugegraph/hugegraph-pd.md +++ b/content/cn/docs/quickstart/hugegraph/hugegraph-pd.md @@ -2,6 +2,8 @@ title: "HugeGraph-PD Quick Start" linkTitle: "安装/构建 HugeGraph-PD" weight: 2 +search_keywords: [HugeGraph PD, 元数据管理, 集群调度] +search_boost: 1.6 --- ### 1 HugeGraph-PD 概述 diff --git a/content/cn/docs/quickstart/hugegraph/hugegraph-server.md b/content/cn/docs/quickstart/hugegraph/hugegraph-server.md index 1e08171ff7..bddbb9020e 100644 --- a/content/cn/docs/quickstart/hugegraph/hugegraph-server.md +++ b/content/cn/docs/quickstart/hugegraph/hugegraph-server.md @@ -2,6 +2,8 @@ title: "HugeGraph Server 快速开始" linkTitle: "安装/构建 HugeGraph Server" weight: 1 +search_keywords: [HugeGraph Server, Server 快速开始, 图数据库服务] +search_boost: 1.7 aliases: - /docs/quickstart/hugegraph-server/ --- @@ -34,10 +36,11 @@ HugeGraph 1.7.0 中的 `hugegraph-server` 模块使用 Java 11 编译,运行 有四种方式可以部署 Server 服务: -- 方式 1:使用 Docker 容器 (便于**测试**) -- 方式 2:下载 tar 包 -- 方式 3:源码编译 -- 方式 4:使用 tools 工具部署 (Outdated) +1. 使用 Docker 容器进行测试或开发。 +1. 下载二进制 tar 包。 +1. 从源码编译。 +1. 使用已过时的一键部署工具。 +{.steps} > 不要把 Gremlin、Cypher 等查询接口直接暴露到公网。生产环境应启用[认证与授权](/cn/docs/config/config-authentication/),限制网络访问并保留审计日志;部署建议见[安全指南](/cn/docs/guides/security/)。 @@ -72,7 +75,7 @@ HugeGraph 1.7.0 中的 `hugegraph-server` 模块使用 Java 11 编译,运行 | HA 参考 | `docker-compose-3pd-3store-3server.yml` | 3 PD + 3 Store + 3 Server + 1 Hubble | | 最小 HStore 拓扑的源码构建覆盖文件 | `docker-compose.dev.yml` | (需与 `docker-compose-hstore.yml` 一起使用) | -```bash +```bash {wrap=true} cd hugegraph/docker # 注意版本号请随时保持更新 → 1.x.0 HUGEGRAPH_VERSION=1.7.0 docker compose -f docker-compose.yml up -d --wait @@ -92,7 +95,7 @@ compose 文件从 `HUGEGRAPH_ADMIN_PASSWORD` 读取管理员密码,从 `HUGEGR ### 3.2 下载 tar 包 -```bash +```bash {filename="download-release.sh" wrap=true collapse=2} # 1.7.0 是项目孵化期发布的历史版本,因此文件名仍带 incubating wget https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0.tar.gz tar zxf apache-hugegraph-incubating-1.7.0.tar.gz @@ -104,7 +107,7 @@ tar zxf apache-hugegraph-incubating-1.7.0.tar.gz 下载 HugeGraph 源代码 -```bash +```bash {filename="build-from-source.sh" wrap=true collapse=2} git clone https://github.com/apache/hugegraph.git ``` diff --git a/content/cn/docs/quickstart/toolchain/hugegraph-hubble.md b/content/cn/docs/quickstart/toolchain/hugegraph-hubble.md index 92f2ac76e8..313e5173cd 100644 --- a/content/cn/docs/quickstart/toolchain/hugegraph-hubble.md +++ b/content/cn/docs/quickstart/toolchain/hugegraph-hubble.md @@ -1,7 +1,10 @@ --- title: "HugeGraph-Hubble Quick Start" +description: "部署 HugeGraph-Hubble,进行图可视化、元数据管理、数据导入,以及 Gremlin 或 Cypher 查询。" linkTitle: "使用 Hubble 实现图可视化" weight: 1 +search_keywords: [HugeGraph Hubble, 图可视化, Web 管理界面] +search_boost: 1.6 --- ### 1 HugeGraph-Hubble 概述 diff --git a/content/cn/docs/quickstart/toolchain/hugegraph-loader.md b/content/cn/docs/quickstart/toolchain/hugegraph-loader.md index d58ff7785c..5a9916bdc1 100644 --- a/content/cn/docs/quickstart/toolchain/hugegraph-loader.md +++ b/content/cn/docs/quickstart/toolchain/hugegraph-loader.md @@ -2,6 +2,8 @@ title: "HugeGraph-Loader Quick Start" linkTitle: "使用 Loader 实时/流式导入数据" weight: 2 +search_keywords: [HugeGraph Loader, 批量导入, 数据导入] +search_boost: 1.6 --- ### 1 HugeGraph-Loader 概述 diff --git a/content/en/docs/clients/_index.md b/content/en/docs/clients/_index.md index 48a709f4f2..3ac8c6fc20 100644 --- a/content/en/docs/clients/_index.md +++ b/content/en/docs/clients/_index.md @@ -1,7 +1,10 @@ --- title: "Clients and APIs" +description: "Connect to HugeGraph with the Java client, REST API, Gremlin Console, and other client libraries." linkTitle: "Clients and APIs" weight: 5 +search_keywords: [HugeGraph clients, Java client, client libraries] +search_boost: 1.5 --- This section covers the REST API, Gremlin Console, and client libraries. The current Server REST API identifies graph resources with both a graph space and a graph name. Refer to each API page and the Server OpenAPI page for the exact paths. diff --git a/content/en/docs/clients/restful-api/_index.md b/content/en/docs/clients/restful-api/_index.md index 7c35ce9e30..764a37fb28 100644 --- a/content/en/docs/clients/restful-api/_index.md +++ b/content/en/docs/clients/restful-api/_index.md @@ -2,6 +2,9 @@ title: "HugeGraph RESTful API" linkTitle: "RESTful API" weight: 1 +search_keywords: [HugeGraph REST API, RESTful API, OpenAPI] +search_boost: 1.7 +description: "HugeGraph RESTful API reference for graph, schema, vertex, and edge operations." --- > ⚠️ **Version compatibility notes** diff --git a/content/en/docs/clients/restful-api/vertex.md b/content/en/docs/clients/restful-api/vertex.md index 52d604c4ee..2792a2d413 100644 --- a/content/en/docs/clients/restful-api/vertex.md +++ b/content/en/docs/clients/restful-api/vertex.md @@ -5,7 +5,7 @@ weight: 7 description: "Vertex REST API: Create, query, update, and delete vertex data in the graph with support for batch operations and conditional filtering." --- -### 2.1 Vertex +## 2.1 Vertex {#vertex-api} In vertex types, the `Id` strategy determines the type of the vertex `Id`, with the corresponding relationships as follows: @@ -16,6 +16,7 @@ In vertex types, the `Id` strategy determines the type of the vertex `Id`, with | CUSTOMIZE_STRING | string | | CUSTOMIZE_NUMBER | number | | CUSTOMIZE_UUID | uuid | +{#vertex-id-strategy .full-width caption="Vertex ID strategies"} For the `GET/PUT/DELETE` API of a vertex, the id part in the URL should be passed as the id value with type information. This type information is indicated by whether the JSON string is enclosed in quotes, meaning: @@ -41,17 +42,17 @@ schema.vertexLabel("software").properties("name", "lang", "price").primaryKeys(" schema.indexLabel("personByAge").onV("person").by("age").range().ifNotExist().create(); ``` -#### 2.1.1 Create a vertex +### 2.1.1 Create a vertex {#create-vertex} -##### Method & Url +#### Method & Url ``` POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices ``` -##### Request Body +#### Request Body -```json +```json {filename="request.json" wrap=true} { "label": "person", "properties": { @@ -61,15 +62,15 @@ POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices } ``` -##### Response Status +#### Response Status ```json 201 ``` -##### Response Body +#### Response Body -```json +```json {filename="response.json" wrap=true} { "id": "1:marko", "label": "person", @@ -81,15 +82,15 @@ POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices } ``` -#### 2.1.2 Create multiple vertices +### 2.1.2 Create multiple vertices -##### Method & Url +#### Method & Url ``` POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/batch ``` -##### Request Body +#### Request Body ```json [ @@ -111,13 +112,13 @@ POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/b ] ``` -##### Response Status +#### Response Status ```json 201 ``` -##### Response Body +#### Response Body ```json [ @@ -126,15 +127,15 @@ POST http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/b ] ``` -#### 2.1.3 Update vertex properties +### 2.1.3 Update vertex properties -##### Method & Url +#### Method & Url ``` PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1:marko"?action=append ``` -##### Request Body +#### Request Body ```json { @@ -148,13 +149,13 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 > Note: There are three categories for property values: single, set, and list. If it is single, it means adding or updating the property value. If it is set or list, it means appending the property value. -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -169,9 +170,9 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 } ``` -#### 2.1.4 Batch Update Vertex Properties +### 2.1.4 Batch Update Vertex Properties -##### Function Description +#### Function Description Batch update properties of vertices and support various update strategies, including: @@ -224,13 +225,13 @@ Add vertices with the following command: curl -H "Content-Type: application/json" -d '[{"label":"person","properties":{"name":"josh","age":32,"city":"Beijing","weight":0.1,"hobby":["reading","football"]}},{"label":"software","properties":{"name":"lop","lang":"java","price":328}}]' http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/batch ``` -##### Method & Url +#### Method & Url ``` PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/batch ``` -##### Request Body +#### Request Body ```json { @@ -268,13 +269,13 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/ba } ``` -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -320,15 +321,15 @@ Result Analysis: The usage of other update strategies can be inferred in a similar manner and will not be further elaborated. -#### 2.1.5 Delete Vertex Properties +### 2.1.5 Delete Vertex Properties -##### Method & Url +#### Method & Url ``` PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1:marko"?action=eliminate ``` -##### Request Body +#### Request Body ```json { @@ -341,13 +342,13 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 > Note: Here, the properties (keys and all values) will be directly deleted, regardless of whether the property values are single, set, or list. -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -361,9 +362,9 @@ PUT http://127.0.0.1:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 } ``` -#### 2.1.6 Get Vertices that Meet the Criteria +### 2.1.6 Get Vertices that Meet the Criteria -##### Params +#### Params - label: Vertex type - properties: Property key-value pairs (precondition: indexes are created for property queries) @@ -391,19 +392,19 @@ Property key-value pairs consist of the property name and value in JSON format. **Query all vertices with age 29 and label person** -##### Method & Url +#### Method & Url ``` GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices?label=person&properties={"age":29}&limit=1 ``` -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -429,19 +430,19 @@ Add vertices with the following command: curl -H "Content-Type: application/json" -d '[{"label":"person","properties":{"name":"peter","age":29,"city":"Shanghai"}},{"label":"person","properties":{"name":"vadas","age":27,"city":"Hongkong"}}]' http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/batch ``` -##### Method & Url +#### Method & Url ``` GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices?page&limit=3 ``` -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -490,19 +491,19 @@ The returned `body` contains information about the page number of the next `page **Paginate and retrieve all vertices, including the next page (passing the `page` value returned from the previous page), limited to 3 items.** -##### Method & Url +#### Method & Url ``` GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices?page=CIYxOnBldGVyAAAAAAAAAAM=&limit=3 ``` -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -544,21 +545,21 @@ GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices?pa At this point, `"page": null` indicates that there are no more pages available. (Note: When using Cassandra as the backend for performance reasons, if the returned page happens to be the last page, the `page` value may not be empty. When requesting the next page using that `page` value, it will return `empty data` and `page = null`. The same applies to other similar situations.) -#### 2.1.7 Retrieve Vertex by ID +### 2.1.7 Retrieve Vertex by ID -##### Method & Url +#### Method & Url ``` GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1:marko" ``` -##### Response Status +#### Response Status ```json 200 ``` -##### Response Body +#### Response Body ```json { @@ -572,21 +573,21 @@ GET http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1 } ``` -#### 2.1.8 Delete Vertex by ID +### 2.1.8 Delete Vertex by ID -##### Params +#### Params - label: Vertex type, optional parameter **Delete the vertex based on ID only.** -##### Method & Url +#### Method & Url ``` DELETE http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1:marko" ``` -##### Response Status +#### Response Status ```json 204 @@ -596,13 +597,13 @@ DELETE http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices When deleting a vertex by specifying both the Label parameter and the ID, it generally offers better performance compared to deleting by ID alone. -##### Method & Url +#### Method & Url ``` DELETE http://localhost:8080/graphspaces/DEFAULT/graphs/hugegraph/graph/vertices/"1:marko"?label=person ``` -##### Response Status +#### Response Status ```json 204 diff --git a/content/en/docs/config/config-authentication.md b/content/en/docs/config/config-authentication.md index f5de712c55..2461c43ea5 100644 --- a/content/en/docs/config/config-authentication.md +++ b/content/en/docs/config/config-authentication.md @@ -2,6 +2,8 @@ title: "Built-in User Authentication and Authorization Configuration and Usage in HugeGraph" linkTitle: "Config Authentication" weight: 3 +search_keywords: [HugeGraph authentication, authorization, StandardAuthenticator] +search_boost: 1.7 --- ### Overview diff --git a/content/en/docs/config/config-guide.md b/content/en/docs/config/config-guide.md index 3e24f49ed9..d8a583f422 100644 --- a/content/en/docs/config/config-guide.md +++ b/content/en/docs/config/config-guide.md @@ -2,6 +2,8 @@ title: "Server Startup Guide" linkTitle: "Server Startup Guide" weight: 1 +search_keywords: [HugeGraph configuration, server config, configuration guide] +search_boost: 1.6 --- ### 1 Overview @@ -21,7 +23,7 @@ Now let's introduce these three configuration files one by one. The main structure of `gremlin-server.yaml` is shown below. Some imports are omitted from this example; refer to the file included in the release package for the complete content. -```yaml +```yaml {filename="conf/gremlin-server.yaml" wrap=true collapse=18} # host and port of gremlin server, need to be consistent with host and port in rest-server.properties #host: 127.0.0.1 #port: 8182 diff --git a/content/en/docs/download/download.md b/content/en/docs/download/download.md index a23907c5c9..46e5f31038 100644 --- a/content/en/docs/download/download.md +++ b/content/en/docs/download/download.md @@ -2,6 +2,8 @@ title: "Download Apache HugeGraph" linkTitle: "Download" weight: 2 +search_keywords: [HugeGraph download, release artifacts, SHA512] +search_boost: 3 --- @@ -12,25 +14,11 @@ weight: 2 > - Instructions for checking hash (SHA512) and signatures are on the [Validate Release](/docs/contribution-guidelines/validate-release) page, and you can also refer to [ASF official instructions](https://www.apache.org/dyn/closer.cgi#verify). > - Note: The version numbers of all components of HugeGraph have been kept consistent, and the version numbers of Maven repositories such as `client/loader/hubble/common` are the same. You can refer to these for dependency references [maven example](https://github.com/apache/hugegraph-toolchain#maven-dependencies). > - Compatibility note: after HugeGraph graduated in January 2026, download paths moved from `/incubator/hugegraph` to `/hugegraph`. Historical release file names may still include `-incubating-`. +> - To build from source, refer to [build from source](/docs/quickstart/hugegraph/hugegraph-server). -### Latest Version 1.7.0 +### Latest Version -- Release Date: 2025-11-28 -- [Release Notes](/docs/changelog/hugegraph-1.7.0-release-notes) - -#### Binary Packages - -| Server | Toolchain | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0.tar.gz.sha512)] | [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.7.0/apache-hugegraph-toolchain-incubating-1.7.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-toolchain-incubating-1.7.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-toolchain-incubating-1.7.0.tar.gz.sha512)] | - -#### Source Packages - -Please refer to [build from source](/docs/quickstart/hugegraph/hugegraph-server). - -| Server | Toolchain | AI | Computer | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.7.0/apache-hugegraph-toolchain-incubating-1.7.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-toolchain-incubating-1.7.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-toolchain-incubating-1.7.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.7.0/apache-hugegraph-ai-incubating-1.7.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-ai-incubating-1.7.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-ai-incubating-1.7.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.7.0/apache-hugegraph-computer-incubating-1.7.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-computer-incubating-1.7.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-computer-incubating-1.7.0-src.tar.gz.sha512)] | +{{< asf-downloads latest >}} --- @@ -38,70 +26,4 @@ Please refer to [build from source](/docs/quickstart/hugegraph/hugegraph-server) > Note: `1.3.0` is the last major version compatible with Java8, please switch to or migrate to Java11 as soon as possible (lower versions of Java have potentially more SEC risks and performance impacts). Starting from version `1.5.0`, a Java11 runtime environment is required. -#### 1.5.0 - -- Release Date: 2024-12-10 -- [Release Notes](/docs/changelog/hugegraph-1.5.0-release-notes) - -##### Binary Packages - -| Server | Toolchain | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.5.0/apache-hugegraph-incubating-1.5.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-incubating-1.5.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-incubating-1.5.0.tar.gz.sha512)] | [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.5.0/apache-hugegraph-toolchain-incubating-1.5.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-toolchain-incubating-1.5.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-toolchain-incubating-1.5.0.tar.gz.sha512)] | - -##### Source Packages - -| Server | Toolchain | AI | Computer | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.5.0/apache-hugegraph-incubating-1.5.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-incubating-1.5.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-incubating-1.5.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.5.0/apache-hugegraph-toolchain-incubating-1.5.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-toolchain-incubating-1.5.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-toolchain-incubating-1.5.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.5.0/apache-hugegraph-ai-incubating-1.5.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-ai-incubating-1.5.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-ai-incubating-1.5.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.5.0/apache-hugegraph-computer-incubating-1.5.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-computer-incubating-1.5.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.5.0/apache-hugegraph-computer-incubating-1.5.0-src.tar.gz.sha512)] | - -#### 1.3.0 - -- Release Date: 2024-04-01 -- [Release Notes](/docs/changelog/hugegraph-1.3.0-release-notes) - -##### Binary Packages - -| Server | Toolchain | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.3.0/apache-hugegraph-incubating-1.3.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-incubating-1.3.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-incubating-1.3.0.tar.gz.sha512)] | [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.3.0/apache-hugegraph-toolchain-incubating-1.3.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-toolchain-incubating-1.3.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-toolchain-incubating-1.3.0.tar.gz.sha512)] | - -##### Source Packages - -| Server | Toolchain | AI | Common | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.3.0/apache-hugegraph-incubating-1.3.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-incubating-1.3.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-incubating-1.3.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.3.0/apache-hugegraph-toolchain-incubating-1.3.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-toolchain-incubating-1.3.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-toolchain-incubating-1.3.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.3.0/apache-hugegraph-ai-incubating-1.3.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-ai-incubating-1.3.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-ai-incubating-1.3.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.3.0/apache-hugegraph-commons-incubating-1.3.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-commons-incubating-1.3.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.3.0/apache-hugegraph-commons-incubating-1.3.0-src.tar.gz.sha512)] | - -#### 1.2.0 - -- Release Date: 2023-12-28 -- [Release Notes](/docs/changelog/hugegraph-1.2.0-release-notes) - -##### Binary Packages - -| Server | Toolchain | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.2.0/apache-hugegraph-incubating-1.2.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-incubating-1.2.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-incubating-1.2.0.tar.gz.sha512)] | [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.2.0/apache-hugegraph-toolchain-incubating-1.2.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-toolchain-incubating-1.2.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-toolchain-incubating-1.2.0.tar.gz.sha512)] | - -##### Source Packages - -| Server | Toolchain | Computer | Common | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.2.0/apache-hugegraph-incubating-1.2.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-incubating-1.2.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-incubating-1.2.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.2.0/apache-hugegraph-toolchain-incubating-1.2.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-toolchain-incubating-1.2.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-toolchain-incubating-1.2.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.2.0/apache-hugegraph-computer-incubating-1.2.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-computer-incubating-1.2.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-computer-incubating-1.2.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.2.0/apache-hugegraph-commons-incubating-1.2.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-commons-incubating-1.2.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.2.0/apache-hugegraph-commons-incubating-1.2.0-src.tar.gz.sha512)] | - -#### 1.0.0 - -- Release Date: 2023-02-22 -- [Release Notes](/docs/changelog/hugegraph-1.0.0-release-notes) - -##### Binary Packages - -| Server | Toolchain | Computer | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-incubating-1.0.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-incubating-1.0.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-incubating-1.0.0.tar.gz.sha512)] | [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-toolchain-incubating-1.0.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-toolchain-incubating-1.0.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-toolchain-incubating-1.0.0.tar.gz.sha512)] | [[Binary](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-computer-incubating-1.0.0.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-computer-incubating-1.0.0.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-computer-incubating-1.0.0.tar.gz.sha512)] | - -##### Source Packages - -| Server | Toolchain | Computer | Common | -|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-incubating-1.0.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-incubating-1.0.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-incubating-1.0.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-toolchain-incubating-1.0.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-toolchain-incubating-1.0.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-toolchain-incubating-1.0.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-computer-incubating-1.0.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-computer-incubating-1.0.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-computer-incubating-1.0.0-src.tar.gz.sha512)] | [[Source](https://www.apache.org/dyn/closer.lua/hugegraph/1.0.0/apache-hugegraph-commons-incubating-1.0.0-src.tar.gz?action=download)] [[Sign](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-commons-incubating-1.0.0-src.tar.gz.asc)] [[SHA512](https://downloads.apache.org/hugegraph/1.0.0/apache-hugegraph-commons-incubating-1.0.0-src.tar.gz.sha512)] | +{{< asf-downloads archived >}} diff --git a/content/en/docs/introduction/_index.md b/content/en/docs/introduction/_index.md index e83b690e18..2a01045b37 100644 --- a/content/en/docs/introduction/_index.md +++ b/content/en/docs/introduction/_index.md @@ -2,6 +2,8 @@ title: "Apache HugeGraph Introduction" linkTitle: "System Introduction" weight: 1 +search_keywords: [HugeGraph overview, graph database introduction, architecture] +search_boost: 3 aliases: # Hugo 0.165 prefixes aliases with the current language path. - /docs/introduction/readme/ @@ -111,7 +113,7 @@ Graph computing is an OLAP workload. Its capacity and resource requirements depe | Run graph algorithms | [Vermeer and Computer](/docs/quickstart/computing/) | | Build GraphRAG or graph machine learning applications | [HugeGraph-AI](/docs/quickstart/hugegraph-ai/) | -## Community +## Community {#community} - [GitHub Issues](https://github.com/apache/hugegraph/issues) - Developer mailing list: [dev@hugegraph.apache.org](mailto:dev@hugegraph.apache.org) diff --git a/content/en/docs/quickstart/computing/hugegraph-computer.md b/content/en/docs/quickstart/computing/hugegraph-computer.md index a153e6b437..8c445841e4 100644 --- a/content/en/docs/quickstart/computing/hugegraph-computer.md +++ b/content/en/docs/quickstart/computing/hugegraph-computer.md @@ -2,6 +2,8 @@ title: "HugeGraph-Computer Quick Start" linkTitle: "Analysis with HugeGraph-Computer" weight: 2 +search_keywords: [HugeGraph Computer, graph computing, OLAP] +search_boost: 1.6 --- ## 1 HugeGraph-Computer Overview diff --git a/content/en/docs/quickstart/hugegraph/hugegraph-hstore.md b/content/en/docs/quickstart/hugegraph/hugegraph-hstore.md index cabd39d74d..39dc6ee699 100644 --- a/content/en/docs/quickstart/hugegraph/hugegraph-hstore.md +++ b/content/en/docs/quickstart/hugegraph/hugegraph-hstore.md @@ -3,10 +3,12 @@ title: "HugeGraph-Store Quick Start" linkTitle: "Install/Build HugeGraph-Store" weight: 3 search_keywords: - - server.port + - HugeGraph HStore + - distributed storage - REST port - Store REST port -search_boost: 1.5 + - server.port +search_boost: 1.6 --- ### 1 HugeGraph-Store Overview diff --git a/content/en/docs/quickstart/hugegraph/hugegraph-pd.md b/content/en/docs/quickstart/hugegraph/hugegraph-pd.md index 2a8cefd7a8..8a5d56afa3 100644 --- a/content/en/docs/quickstart/hugegraph/hugegraph-pd.md +++ b/content/en/docs/quickstart/hugegraph/hugegraph-pd.md @@ -2,6 +2,8 @@ title: "HugeGraph-PD Quick Start" linkTitle: "Install/Build HugeGraph-PD" weight: 2 +search_keywords: [HugeGraph PD, placement driver, cluster metadata] +search_boost: 1.6 --- ### 1 HugeGraph-PD Overview diff --git a/content/en/docs/quickstart/hugegraph/hugegraph-server.md b/content/en/docs/quickstart/hugegraph/hugegraph-server.md index 5288908f5f..ef0b0f39d5 100644 --- a/content/en/docs/quickstart/hugegraph/hugegraph-server.md +++ b/content/en/docs/quickstart/hugegraph/hugegraph-server.md @@ -2,6 +2,8 @@ title: "HugeGraph Server Quick Start" linkTitle: "Install/Build HugeGraph Server" weight: 1 +search_keywords: [HugeGraph Server, server quickstart, graph database] +search_boost: 1.7 aliases: - /docs/quickstart/hugegraph-server/ --- @@ -34,10 +36,11 @@ The `hugegraph-server` module in HugeGraph 1.7.0 is compiled with Java 11. Runni There are four ways to deploy the Server service: -- Method 1: Use Docker container (Convenient for Test/Dev) -- Method 2: Download the binary tarball -- Method 3: Source code compilation -- Method 4: One-click deployment +1. Use a Docker container for test or development. +1. Download the binary tarball. +1. Compile the source code. +1. Use the legacy one-click deployment tool. +{.steps} > Do not expose Gremlin, Cypher, or other query endpoints directly to the public Internet. In production, enable [authentication and authorization](/docs/config/config-authentication/), restrict network access, and retain audit logs. See the [Security Guide](/docs/guides/security/) for deployment guidance. @@ -70,7 +73,7 @@ Four compose files are available in the [`docker/`](https://github.com/apache/hu | HA reference | `docker-compose-3pd-3store-3server.yml` | 3 PD + 3 Store + 3 Server + 1 Hubble | | Source build override for the minimal HStore topology | `docker-compose.dev.yml` | (used together with `docker-compose-hstore.yml`) | -```bash +```bash {wrap=true} cd hugegraph/docker # Keep the version aligned with the latest release, for example 1.x.0 HUGEGRAPH_VERSION=1.7.0 docker compose -f docker-compose.yml up -d --wait @@ -91,7 +94,7 @@ See [docker/README.md](https://github.com/apache/hugegraph/blob/master/docker/RE ### 3.2 Download the binary tarball You could download the binary tarball from the download page of the ASF site like this: -```bash +```bash {filename="download-and-verify.sh" wrap=true collapse=5} # 1.7.0 is a historical release from the incubation period, so its file name still includes "incubating" wget https://downloads.apache.org/hugegraph/1.7.0/apache-hugegraph-incubating-1.7.0.tar.gz tar zxf apache-hugegraph-incubating-1.7.0.tar.gz @@ -109,7 +112,7 @@ Download HugeGraph **source code** in either of the following 2 ways (so as the - download the stable/release version from the ASF site - clone the unstable/latest version by GitBox(ASF) or GitHub -```bash +```bash {filename="build-from-source.sh" wrap=true collapse=5} # Way 1. download release package from the ASF site wget https://downloads.apache.org/hugegraph/{version}/apache-hugegraph-incubating-src-{version}.tar.gz tar zxf *hugegraph*.tar.gz diff --git a/content/en/docs/quickstart/toolchain/hugegraph-hubble.md b/content/en/docs/quickstart/toolchain/hugegraph-hubble.md index da7bb23e62..fcac006c69 100644 --- a/content/en/docs/quickstart/toolchain/hugegraph-hubble.md +++ b/content/en/docs/quickstart/toolchain/hugegraph-hubble.md @@ -1,7 +1,10 @@ --- title: "HugeGraph-Hubble Quick Start" +description: "Deploy HugeGraph-Hubble for graph visualization, schema management, data import, and Gremlin or Cypher queries." linkTitle: "Visual with HugeGraph-Hubble" weight: 1 +search_keywords: [HugeGraph Hubble, graph visualization, web console] +search_boost: 1.6 --- ### 1 HugeGraph-Hubble Overview diff --git a/content/en/docs/quickstart/toolchain/hugegraph-loader.md b/content/en/docs/quickstart/toolchain/hugegraph-loader.md index 5cf06bd120..ce448b5a7f 100644 --- a/content/en/docs/quickstart/toolchain/hugegraph-loader.md +++ b/content/en/docs/quickstart/toolchain/hugegraph-loader.md @@ -2,6 +2,8 @@ title: "HugeGraph-Loader Quick Start" linkTitle: "Load data with HugeGraph-Loader" weight: 2 +search_keywords: [HugeGraph Loader, bulk import, data loading] +search_boost: 1.6 --- ### 1 HugeGraph-Loader Overview diff --git a/contribution.md b/contribution.md index cd95f7ce47..3b239726c4 100644 --- a/contribution.md +++ b/contribution.md @@ -14,23 +14,23 @@ For the short workflow, start with [README.md](./README.md). This file records t The site uses the Hugo Module recorded in `go.mod` and `go.sum`: -```text -Go: 1.27.0 or newer -Hugo Extended: 0.165.0 -OINK: v1.0.0 -``` - -Node.js, npm, PostCSS, and a vendored Docsy checkout are not part of the build. +Toolchain versions are maintained in `go.mod` and `.github/workflows/hugo.yml`; +`go.mod` / `go.sum` pin the theme. Node.js is needed only for the browser tests, +with its version declared by `tests/e2e/package.json` and CI. -Verify the resolved theme before editing: +Verify the installed toolchain and locked module: ```bash hugo version go version -hugo mod graph +python3 scripts/oink_module.py ``` -The module graph must contain exactly the pinned `github.com/pgsty/oink@v1.0.0` dependency for this site. +For theme updates and breaking-change recovery, follow +[scripts/oink-upgrade.md](scripts/oink-upgrade.md). + +For Kapa staging, consent/CSP checks and production activation, follow +[scripts/kapa-rollout.md](scripts/kapa-rollout.md). ## Local preview @@ -65,13 +65,26 @@ the generated local origin. A successful command proves that Hugo rendered the configured outputs. It does not replace browser checks for navigation, search, language switching, accessibility, mobile layout, print, or Content Security Policy behavior. +## CI queue and reruns + +Each PR has its own concurrency group; a new commit cancels its previous run. +Cancelled runs skip report uploads and the final gate instead of holding the +queue with `always()`. A queued job with no runner has not started testing; +repeated reruns do not resolve runner capacity shortages. + +Version builds remain parallel. Site assembly and blocking browser tests share +one runner and the same local artifact. The required `deploy` check still +requires all blocking jobs to succeed; visual captures remain advisory and +publication alone receives write permission. For a test failure, rerun failed +jobs after inspecting the cause; artifact names remain stable within the run. + ## Repository structure - `content/en/` and `content/cn/` contain the bilingual source pages. - `hugo.yaml` owns routing, languages, outputs, search, navigation, and OINK parameters. - `data/home/.yaml` owns the bilingual homepage. - `data/footer/.yaml` owns the bilingual footer. -- `i18n/zh-CN.yaml` carries the Simplified Chinese OINK interface catalogue for the preserved `cn` URL language key; the file is named after the `zh-CN` locale because Hugo resolves translations by locale, not by the URL key. +- `i18n/zh-CN.yaml` carries only HugeGraph-specific Simplified Chinese labels; generic interface translations come from OINK for the preserved `cn` URL language key; the file is named after the `zh-CN` locale because Hugo resolves translations by locale, not by the URL key. - `assets/` and `static/` contain site-owned brand and compatibility assets. OINK is a module dependency. Do not copy or edit generated module-cache files. Site-specific overrides belong in the corresponding root `layouts/`, `assets/`, or data path and require focused regression evidence. diff --git a/data/community/github-map.json b/data/community/github-map.json new file mode 100644 index 0000000000..5676d57ea1 --- /dev/null +++ b/data/community/github-map.json @@ -0,0 +1,92 @@ +{ + "schema_version": 1, + "public_names": { + "jin": "Imba Jin", + "jermy": "Jermy Li", + "jsong010123": "Jason", + "ningjiang": "Willem Ning Jiang", + "spica": "Thespica", + "yangjiaqi": "Jacky Yang" + }, + "display_order": { + "pmc": ["jin", "zhaocong", "lidongdai", "liyu"] + }, + "mappings": { + "guoshoujing": { + "login": "corgiboygsj", + "user_id": 24729637 + }, + "hxd": { + "login": "jixuan1989", + "user_id": 1021782 + }, + "jin": { + "login": "imbajin", + "user_id": 17706099 + }, + "jermy": { + "login": "javeme", + "user_id": 9625821 + }, + "jsong010123": { + "login": "MrJs133", + "user_id": 102796027 + }, + "leizou": { + "login": "z7658329", + "user_id": 5474723 + }, + "linary": { + "login": "Linary", + "user_id": 9151831 + }, + "liuxiaocs": { + "login": "liuxiaocs7", + "user_id": 42756849 + }, + "lidongdai": { + "login": "davidzollo", + "user_id": 15833811 + }, + "liyu": { + "login": "carp84", + "user_id": 6239804 + }, + "ming": { + "login": "simon824", + "user_id": 18065113 + }, + "pengjunzhi": { + "login": "Pengzna", + "user_id": 78788603 + }, + "vgalaxies": { + "login": "VGalaxies", + "user_id": 79143929 + }, + "vaughn": { + "login": "zyxxoo", + "user_id": 11863049 + }, + "yangjiaqi": { + "login": "JackyYangPassion", + "user_id": 13795366 + }, + "wangjing": { + "login": "wanganjuan", + "user_id": 10061479 + }, + "ningjiang": { + "login": "WillemJiang", + "user_id": 219644 + }, + "panjuan": { + "login": "tristaZero", + "user_id": 27757146 + }, + "zhaocong": { + "login": "coderzc", + "user_id": 26179648 + } + } +} diff --git a/data/community/roster.json b/data/community/roster.json new file mode 100644 index 0000000000..1bf64cecb3 --- /dev/null +++ b/data/community/roster.json @@ -0,0 +1,304 @@ +{ + "schema_version": 1, + "project": "hugegraph", + "retrieved_at": "2026-09-18T18:07:38Z", + "source": { + "committee": "https://whimsy.apache.org/public/committee-info.json", + "projects": "https://whimsy.apache.org/public/public_ldap_projects.json", + "people": "https://whimsy.apache.org/public/public_ldap_people.json", + "chair": "jermy", + "owners": [ + "hxd", + "jermy", + "jin", + "lidongdai", + "linary", + "liyu", + "ming", + "ningjiang", + "panjuan", + "vaughn", + "vgalaxies", + "zhaocong" + ], + "members": [ + "guoshoujing", + "hxd", + "jermy", + "jin", + "jsong010123", + "leizou", + "lidongdai", + "linary", + "liuxiaocs", + "liyu", + "ming", + "ningjiang", + "panjuan", + "pengjunzhi", + "spica", + "vaughn", + "vgalaxies", + "vichayturen", + "wangjing", + "yangjiaqi", + "zhangyi89817", + "zhaocong" + ] + }, + "roles": { + "pmc": [ + { + "asf_id": "jermy", + "name": "Jermy Li", + "initials": "JL", + "chair": true, + "profile_url": "https://github.com/javeme", + "github": { + "login": "javeme", + "user_id": 9625821 + }, + "avatar": "/img/community/avatars/3953b178d91c3cfec7f994316117bfb1d1bbee78ea050d920047f3e9874f81f1.webp" + }, + { + "asf_id": "jin", + "name": "Imba Jin", + "initials": "IJ", + "chair": false, + "profile_url": "https://github.com/imbajin", + "github": { + "login": "imbajin", + "user_id": 17706099 + }, + "avatar": "/img/community/avatars/d3ecd2b51f116bece9a9c4cd6b6df651b1459206d2973b8bbb5bd302015d1a14.webp" + }, + { + "asf_id": "zhaocong", + "name": "coderzc", + "initials": "C", + "chair": false, + "profile_url": "https://github.com/coderzc", + "github": { + "login": "coderzc", + "user_id": 26179648 + }, + "avatar": "/img/community/avatars/d959beeff7a37e2528ca79ee2aa2baadb2b03b284dfb3b6159e792fb9a44e31d.webp" + }, + { + "asf_id": "lidongdai", + "name": "davidzollo", + "initials": "D", + "chair": false, + "profile_url": "https://github.com/davidzollo", + "github": { + "login": "davidzollo", + "user_id": 15833811 + }, + "avatar": "/img/community/avatars/6962957beb238414dd798740aada61a514377c349d8fed86f091792b303e76e0.webp" + }, + { + "asf_id": "liyu", + "name": "carp84", + "initials": "C", + "chair": false, + "profile_url": "https://github.com/carp84", + "github": { + "login": "carp84", + "user_id": 6239804 + }, + "avatar": "/img/community/avatars/7590d40579ad10dacf0a2f9de0439a8cedd7c8ab613b49be5e75991f98c78dac.webp" + }, + { + "asf_id": "hxd", + "name": "jixuan1989", + "initials": "J", + "chair": false, + "profile_url": "https://github.com/jixuan1989", + "github": { + "login": "jixuan1989", + "user_id": 1021782 + }, + "avatar": "/img/community/avatars/266c764e5bf245a1e02fbb808268a96e04b8acb73f1e9dc8a4c1cd9053ce65b0.webp" + }, + { + "asf_id": "linary", + "name": "Linary", + "initials": "L", + "chair": false, + "profile_url": "https://github.com/Linary", + "github": { + "login": "Linary", + "user_id": 9151831 + }, + "avatar": "/img/community/avatars/695bd7904d7f4cfab98b7d812c769f481b73cf9d8f1d6d985e865d87e633e36a.webp" + }, + { + "asf_id": "ming", + "name": "simon824", + "initials": "S", + "chair": false, + "profile_url": "https://github.com/simon824", + "github": { + "login": "simon824", + "user_id": 18065113 + }, + "avatar": "/img/community/avatars/c936571abaf109fd7049f976c1767bc21d05f4a7ed018bc232cdc0c83cbf2346.webp" + }, + { + "asf_id": "panjuan", + "name": "tristaZero", + "initials": "T", + "chair": false, + "profile_url": "https://github.com/tristaZero", + "github": { + "login": "tristaZero", + "user_id": 27757146 + }, + "avatar": "/img/community/avatars/045e2234792e0baba143f9c0bfd0064d012d3de1d57dec883c3e3fa6901d3f85.webp" + }, + { + "asf_id": "vgalaxies", + "name": "VGalaxies", + "initials": "V", + "chair": false, + "profile_url": "https://github.com/VGalaxies", + "github": { + "login": "VGalaxies", + "user_id": 79143929 + }, + "avatar": "/img/community/avatars/657d7c6a76e43a96d9da26ab4eab361172ebb3dae217a71f79b7531a7637abdc.webp" + }, + { + "asf_id": "ningjiang", + "name": "Willem Ning Jiang", + "initials": "WN", + "chair": false, + "profile_url": "https://github.com/WillemJiang", + "github": { + "login": "WillemJiang", + "user_id": 219644 + }, + "avatar": "/img/community/avatars/df8a3cbc33555abcdef083793429fe405a8846fb2994d700d079b9215786aa17.webp" + }, + { + "asf_id": "vaughn", + "name": "zyxxoo", + "initials": "Z", + "chair": false, + "profile_url": "https://github.com/zyxxoo", + "github": { + "login": "zyxxoo", + "user_id": 11863049 + }, + "avatar": "/img/community/avatars/62e0171bfb271e4938963a26876ae28f5f44d874454d197fd5f7a08595f8d7a3.webp" + } + ], + "committers": [ + { + "asf_id": "guoshoujing", + "name": "corgiboygsj", + "initials": "C", + "chair": false, + "profile_url": "https://github.com/corgiboygsj", + "github": { + "login": "corgiboygsj", + "user_id": 24729637 + }, + "avatar": "/img/community/avatars/ce12f31198b55a4acaf56732f5d00c5701e4384bb4414126ccfccb9dadacfe1a.webp" + }, + { + "asf_id": "yangjiaqi", + "name": "Jacky Yang", + "initials": "JY", + "chair": false, + "profile_url": "https://github.com/JackyYangPassion", + "github": { + "login": "JackyYangPassion", + "user_id": 13795366 + }, + "avatar": "/img/community/avatars/55d7d9385e8d21e38d7cfcdadfc559f0002ef1b63a2a517fda0cd5a09f4a820d.webp" + }, + { + "asf_id": "jsong010123", + "name": "Jason", + "initials": "J", + "chair": false, + "profile_url": "https://github.com/MrJs133", + "github": { + "login": "MrJs133", + "user_id": 102796027 + }, + "avatar": "/img/community/avatars/af583d1e4ffed9bc08ef7ec2e555b619058c665b2cc67eadac43df2e454b68e6.webp" + }, + { + "asf_id": "vichayturen", + "name": "Kaiyichen Wei", + "initials": "KW", + "chair": false, + "profile_url": "https://people.apache.org/phonebook.html?uid=vichayturen" + }, + { + "asf_id": "liuxiaocs", + "name": "liuxiaocs7", + "initials": "L", + "chair": false, + "profile_url": "https://github.com/liuxiaocs7", + "github": { + "login": "liuxiaocs7", + "user_id": 42756849 + }, + "avatar": "/img/community/avatars/08f13d01a0fc2048ef26199ee51aee806047a84fecaed5829893494dbd35736b.webp" + }, + { + "asf_id": "pengjunzhi", + "name": "Pengzna", + "initials": "P", + "chair": false, + "profile_url": "https://github.com/Pengzna", + "github": { + "login": "Pengzna", + "user_id": 78788603 + }, + "avatar": "/img/community/avatars/87ba3c0066e31c0f584706ea1b7782a18a74ed0957ca02c1ac16e1bfa58c899f.webp" + }, + { + "asf_id": "spica", + "name": "Thespica", + "initials": "T", + "chair": false, + "profile_url": "https://people.apache.org/phonebook.html?uid=spica" + }, + { + "asf_id": "wangjing", + "name": "wanganjuan", + "initials": "W", + "chair": false, + "profile_url": "https://github.com/wanganjuan", + "github": { + "login": "wanganjuan", + "user_id": 10061479 + }, + "avatar": "/img/community/avatars/ab585341e46cfbf10b3fe426030f37ae54cdc12eac678debcd8989b12f64ee59.webp" + }, + { + "asf_id": "zhangyi89817", + "name": "Yi Zhang", + "initials": "YZ", + "chair": false, + "profile_url": "https://people.apache.org/phonebook.html?uid=zhangyi89817" + }, + { + "asf_id": "leizou", + "name": "z7658329", + "initials": "Z", + "chair": false, + "profile_url": "https://github.com/z7658329", + "github": { + "login": "z7658329", + "user_id": 5474723 + }, + "avatar": "/img/community/avatars/2b8f6cf3f85038d5a0668a64df2ef2131eaf935f9e8abf69e468cbeb1474ac75.webp" + } + ] + } +} diff --git a/data/downloads/asf.json b/data/downloads/asf.json new file mode 100644 index 0000000000..af81244a6f --- /dev/null +++ b/data/downloads/asf.json @@ -0,0 +1,53 @@ +{ + "$comment": "Single source of truth for the ASF release download facts. Both language download pages render from this file through layouts/_partials/asf-downloads.html; do not edit the page tables by hand. Every filename was verified against https://downloads.apache.org/hugegraph// on 2026-09-13. file = [-incubating]-[-src].tar.gz where -incubating applies when the release has incubating: true; mirror = https://www.apache.org/dyn/closer.lua///?action=download ; asc/sha512 = https://downloads.apache.org///.asc|.sha512", + "dist_path": "hugegraph", + "components": { + "server": { "prefix": "apache-hugegraph", "label_key": "download_component_server" }, + "toolchain": { "prefix": "apache-hugegraph-toolchain", "label_key": "download_component_toolchain" }, + "ai": { "prefix": "apache-hugegraph-ai", "label_key": "download_component_ai" }, + "computer": { "prefix": "apache-hugegraph-computer", "label_key": "download_component_computer" }, + "commons": { "prefix": "apache-hugegraph-commons", "label_key": "download_component_commons" } + }, + "releases": [ + { + "version": "1.7.0", + "date": "2025-11-28", + "latest": true, + "incubating": true, + "binary": ["server", "toolchain"], + "source": ["server", "toolchain", "ai", "computer"] + }, + { + "version": "1.5.0", + "date": "2024-12-10", + "latest": false, + "incubating": true, + "binary": ["server", "toolchain"], + "source": ["server", "toolchain", "ai", "computer"] + }, + { + "version": "1.3.0", + "date": "2024-04-01", + "latest": false, + "incubating": true, + "binary": ["server", "toolchain"], + "source": ["server", "toolchain", "ai", "commons"] + }, + { + "version": "1.2.0", + "date": "2023-12-28", + "latest": false, + "incubating": true, + "binary": ["server", "toolchain"], + "source": ["server", "toolchain", "computer", "commons"] + }, + { + "version": "1.0.0", + "date": "2023-02-22", + "latest": false, + "incubating": true, + "binary": ["server", "toolchain", "computer"], + "source": ["server", "toolchain", "computer", "commons"] + } + ] +} diff --git a/data/home/cn.yaml b/data/home/cn.yaml index 8479292614..7b94a27fd2 100644 --- a/data/home/cn.yaml +++ b/data/home/cn.yaml @@ -56,7 +56,8 @@ community: items: - title: 使用易用的**工具链** icon: fa-solid fa-screwdriver-wrench - desc: 可从[此](https://github.com/apache/hugegraph-toolchain)获取图数据导入工具, 可视化界面以及备份还原迁移工具, 欢迎使用 + url: /cn/docs/quickstart/toolchain/ + desc: 获取图数据导入工具、可视化界面以及备份还原迁移工具,欢迎使用。 - title: 参与开源 icon: fa-brands fa-github url: https://github.com/apache/hugegraph @@ -64,10 +65,11 @@ community: desc: 我们可以在 **Github** 上提交 [Pull Request](https://github.com/apache/hugegraph/pulls). 热烈欢迎大家加入! - title: 关注微信 icon: fa-brands fa-weixin + url: /cn/docs/introduction/#community desc: |- 关注微信公众号 "HugeGraph" 获取最新动态 - 也可以加入 [ASF Slack 频道](https://the-asf.slack.com/archives/C059UU2FJ23)参与讨论 + 也可以加入 [ASF Slack 频道](https://the-asf.slack.com/archives/C059UU2FJ23)参与社区讨论 welcome: class: hg-home-band hg-home-welcome diff --git a/data/home/en.yaml b/data/home/en.yaml index 2ddded8504..64c0c18019 100644 --- a/data/home/en.yaml +++ b/data/home/en.yaml @@ -56,7 +56,8 @@ community: items: - title: Get The **Toolchain** icon: fa-solid fa-screwdriver-wrench - desc: '[It](https://github.com/apache/hugegraph-toolchain) includes graph loader & dashboard & backup tools' + url: /docs/quickstart/toolchain/ + desc: Explore graph loading, visualization, backup, restore, and migration tools. - title: Efficient icon: fa-brands fa-github url: https://github.com/apache/hugegraph @@ -69,8 +70,6 @@ community: desc: |- Join the [ASF Slack channel](https://the-asf.slack.com/archives/C059UU2FJ23) for community discussions - Could also follow the WeChat account "HugeGraph" for updates - welcome: class: hg-home-band hg-home-welcome title: Welcome to the HugeGraph open source community! diff --git a/data/landing/community/cn.yaml b/data/landing/community/cn.yaml index 9bf9f66f4c..3095009dee 100644 --- a/data/landing/community/cn.yaml +++ b/data/landing/community/cn.yaml @@ -8,6 +8,11 @@ sections: - { label: 参与贡献, url: /docs/contribution-guidelines/, icon: fa-solid fa-code-pull-request, style: primary } - { label: 前往 GitHub, url: 'https://github.com/apache/hugegraph', icon: fa-brands fa-github, external: true, style: ghost } + - type: community-members + partial: landing/sections/community-members.html + data: + id: project-members + - type: cards data: title: 参与社区 @@ -30,9 +35,9 @@ sections: - [GitHub](https://github.com/apache/hugegraph) — Apache HugeGraph 的开发在各项目仓库中公开进行。 - [开发者邮件列表](/cn/docs/contribution-guidelines/subscribe/) — 讨论项目开发和社区事务。 - - [安全邮件列表](mailto:security@hugegraph.apache.org) — 私下报告安全问题。 - - [安全策略](/cn/docs/guides/security/) — 了解项目的安全问题报告流程。 + - [安全报告](mailto:security@hugegraph.apache.org) 与 [安全策略](/cn/docs/guides/security/) — 私下报告安全问题并了解处理流程。 - [贡献指南](/cn/docs/contribution-guidelines/) — 了解如何贡献代码和文档。 + - [Committer 资源](https://infra.apache.org/committers.html) — 了解面向 Apache Committers 的 ASF 工具、服务与指引。 - type: markdown data: diff --git a/data/landing/community/en.yaml b/data/landing/community/en.yaml index 9f54604f72..4f5ae5e52b 100644 --- a/data/landing/community/en.yaml +++ b/data/landing/community/en.yaml @@ -8,6 +8,11 @@ sections: - { label: Contribute, url: /docs/contribution-guidelines/, icon: fa-solid fa-code-pull-request, style: primary } - { label: View on GitHub, url: 'https://github.com/apache/hugegraph', icon: fa-brands fa-github, external: true, style: ghost } + - type: community-members + partial: landing/sections/community-members.html + data: + id: project-members + - type: cards data: title: Get involved @@ -30,9 +35,9 @@ sections: - [GitHub](https://github.com/apache/hugegraph) — development takes place in the Apache HugeGraph repositories. - [Developer mailing list](/docs/contribution-guidelines/subscribe/) — discuss project and community topics. - - [Security mailing list](mailto:security@hugegraph.apache.org) — report security issues privately. - - [Security policy](/docs/guides/security/) — follow the project's security reporting process. + - [Security reporting](mailto:security@hugegraph.apache.org) and [security policy](/docs/guides/security/) — report issues and follow the project's process. - [Contribution guidelines](/docs/contribution-guidelines/) — learn how to contribute code and documentation. + - [Committer resources](https://infra.apache.org/committers.html) — ASF tools, services, and guidance for project committers. - type: cta data: diff --git a/dist/validate-site-output.py b/dist/validate-site-output.py index 28a5b82e16..4b9894037c 100644 --- a/dist/validate-site-output.py +++ b/dist/validate-site-output.py @@ -74,7 +74,7 @@ } DOCS_NAV_GROUP_TITLES = { "en": ("Get Started", "Components", "Develop", "Operate", "Reference"), - "cn": ("开始", "组件", "开发", "运维", "参考"), + "cn": ("开始", "组件", "开发", "配置", "参考"), } EXTERNAL_ACTIVE_RESOURCE_ATTRIBUTES = { ("script", "src"), diff --git a/go.mod b/go.mod index 685c7ce27f..d4cb4ccab0 100644 --- a/go.mod +++ b/go.mod @@ -2,5 +2,4 @@ module github.com/apache/hugegraph-doc go 1.27.0 -require github.com/pgsty/oink v1.0.0 - +require github.com/pgsty/oink v1.1.0 diff --git a/go.sum b/go.sum index 8bd5c21c7b..946ebedd7e 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,2 @@ -github.com/pgsty/oink v1.0.0 h1:E+WHFP9zSRT+5RKoIkWNp+ASRGS1BKG+rDEi9by/BjE= -github.com/pgsty/oink v1.0.0/go.mod h1:pHvbUhJCfseB41n5RGwsF7abT3i32VSTpofLQoq4b7Y= - +github.com/pgsty/oink v1.1.0 h1:121L5g57ChRCPyidzEBBcln2Co+0zYRQ+XDDXjymd0Q= +github.com/pgsty/oink v1.1.0/go.mod h1:pHvbUhJCfseB41n5RGwsF7abT3i32VSTpofLQoq4b7Y= diff --git a/hugo.yaml b/hugo.yaml index d276b93c56..b5c402a1be 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -45,7 +45,7 @@ languages: - { identifier: docs-start, parent: docs, name: 开始, pageRef: /docs/quickstart, weight: 11, params: { icon: 'fa-solid fa-rocket' } } - { identifier: docs-components, parent: docs, name: 组件, pageRef: /docs/quickstart/hugegraph, weight: 12, params: { icon: 'fa-solid fa-cubes' } } - { identifier: docs-develop, parent: docs, name: 开发, pageRef: /docs/clients, weight: 13, params: { icon: 'fa-solid fa-code' } } - - { identifier: docs-operate, parent: docs, name: 运维, pageRef: /docs/config, weight: 14, params: { icon: 'fa-solid fa-screwdriver-wrench' } } + - { identifier: docs-operate, parent: docs, name: 配置, pageRef: /docs/config, weight: 14, params: { icon: 'fa-solid fa-screwdriver-wrench' } } - { identifier: docs-reference, parent: docs, name: 参考, pageRef: /docs/changelog, weight: 15, params: { icon: 'fa-solid fa-book-open' } } - { identifier: download, name: 下载, pageRef: /docs/download/download, weight: 20 } - { identifier: blog, name: 博客, pageRef: /blog, weight: 30 } @@ -105,15 +105,15 @@ params: offline_search_index: summary offline_search_summary_length: 70 offline_search_max_results: 10 - # Optional enhancement: keep disabled until both reviewed latest-only Kapa - # source groups and the staging CSP/corpus acceptance gates pass. + # Consent-gated Kapa; set false to disable. Rollout evidence and source + # readiness are tracked in scripts/kapa-rollout.md and issue #495. ai_search: - enabled: false + enabled: true provider: kapa website_id: 0b277570-4740-451e-96fa-1e4ac1ac5e88 source_groups: - en: '' - cn: '' + en: 32769e2a-abfc-42f6-891f-09af6c123eb2 + cn: ddce6795-32c8-40ac-8b27-73d73facd042 footer_center_info: '' # The compact ASF footer owns the legal line; global controls stay in header. copyright: false diff --git a/i18n/en.yaml b/i18n/en.yaml index 4c0e1c29af..ad2a00080f 100644 --- a/i18n/en.yaml +++ b/i18n/en.yaml @@ -4,3 +4,23 @@ ui_ask_ai_description: Powered by Kapa; only your question is sent. ui_ask_ai_latest: Answers use the latest documentation ui_retry: Retry ui_ai_error: AI is temporarily unavailable. Local search is unaffected. +ui_more_versions: More versions +download_release_version: Version +download_release_date: Release Date +download_release_notes: Release Notes +download_table_component: Component +download_table_type: Type +download_table_mirror: Download (ASF mirror) +download_type_binary: Binary +download_type_source: Source +download_component_server: Server +download_component_toolchain: Toolchain +download_component_ai: AI +download_component_computer: Computer +download_component_commons: Common +download_asf_note: Source archives are the official Apache Software Foundation releases; binary packages are convenience builds made from them. All files are served from ASF mirrors, with signatures and checksums hosted on downloads.apache.org. Source archives generated automatically by GitHub are not ASF releases. + +ui_ai_consent_description: "Continuing loads Kapa, a third-party service. Your question will be sent to Kapa to generate an answer." +ui_ai_consent_continue: "Continue to Ask AI" +ui_ai_consent_cancel: "Cancel" +ui_ai_privacy: "Privacy policy" diff --git a/i18n/zh-CN.yaml b/i18n/zh-CN.yaml index f173ec727e..a75023877f 100644 --- a/i18n/zh-CN.yaml +++ b/i18n/zh-CN.yaml @@ -1,242 +1,27 @@ -# Alert labels -callout_caution: 注意 -callout_important: 重要 -callout_note: 说明 -callout_tip: 提示 -callout_warning: 警告 -callout_success: 成功 -callout_danger: 危险 -callout_question: 问题 -callout_example: 示例 -callout_quote: 引用 -callout_details: 详情 - -# UI strings. Buttons and similar. -ui_pager_prev: 上一页 -ui_pager_next: 下一页 -ui_search: 搜索… -ui_search_empty: 未找到结果 -ui_search_loading: 正在加载搜索索引…… -ui_search_results: '找到 {count} 条结果' -ui_search_nav: 选择 -ui_search_open: 打开 -ui_search_close: 关闭 -ui_palette_actions: 操作 -ui_palette_page_actions: 页面操作 -ui_palette_preferences: 偏好设置 -ui_palette_commands: 命令 -ui_palette_quick_links: 快速链接 -ui_palette_no_commands: 未找到匹配命令 -ui_palette_choose: 请选择一项 -ui_palette_action_failed: 无法完成此操作 -ui_palette_pages: 页面 -ui_palette_index_unavailable: 页面索引暂不可用,操作仍可使用 -ui_sidebar_nav: 章节导航 -ui_heading_self_link: 标题锚点 -ui_field_self_link: 链接到此字段 -ui_preview_source: Markdown -ui_preview_rendered: 渲染结果 -ui_main_nav: 主导航 -ui_home: 首页 -ui_sidebar_expand: 展开侧栏 -ui_sidebar_collapse: 收起侧栏 -ui_drawer_open: 打开导航 -ui_drawer_close: 关闭导航 -ui_root_menu_label: 选择栏目 -ui_tags_title: 标签 -ui_tag_title: 标签 -ui_categories_title: 分类 -ui_category_title: 分类 -ui_modules_title: 模块 -ui_module_title: 模块 -ui_authors_title: 作者 -ui_author_title: 作者 -ui_theme_toggle: 切换配色 -ui_language: 语言切换 -ui_theme: 主题颜色 -ui_theme_auto: 跟随系统 -ui_theme_light: 亮色 -ui_theme_dark: 暗色 -ui_toc_hide: 隐藏目录 -ui_toc_show: 显示目录 -ui_language_select: 选择语言 -ui_language_switch: 切换语言 -ui_skip_to_content: 跳转到主要内容 -ui_page_actions: 操作 -ui_open_in_chatgpt: 在 ChatGPT 中打开 -ui_open_in_claude: 在 Claude 中打开 -ui_open_in_prompt: 请阅读 %s 的内容,以便我就此向你提问。 -ui_copy_markdown: 复制 Markdown 文本 -ui_copy_success: 已复制 Markdown -ui_copy_error: 无法复制 Markdown -ui_share: 分享 -ui_share_email: 邮件 -ui_copy_link: 复制链接 -ui_copy_link_success: 已复制链接 -ui_copy_link_error: 无法复制链接 -ui_code_copy: 复制 -ui_code_copy_label: 复制代码 -ui_code_copied: 已复制 -ui_code_copy_error: 复制失败 -ui_code_show_all: 显示全部 {{ .Count }} 行 -ui_code_collapse: 收起代码 -ui_tabs_label: 选项卡 -ui_pricing_featured: 推荐 -ui_pricing_included: 包含 -ui_pricing_excluded: 不包含 -ui_marquee_pause: 暂停滚动 -ui_kbd_with: 加 -ui_keyboard_shortcuts: 键盘快捷键 -ui_shortcut_tree_move: 在侧栏中移动 -ui_shortcut_tree_toggle: 收起或展开章节 -ui_shortcut_tree_open: 打开当前页面 -ui_shortcut_heading_move: 上一个或下一个标题 -ui_shortcut_page_move: 上一页或下一页 -ui_shortcut_search: 搜索 -ui_shortcut_commands: 命令面板 -ui_shortcut_reading_mode: 专注阅读模式 -ui_shortcut_language: 切换语言 -ui_shortcut_theme: 切换主题 -ui_shortcut_route: 切换顶层页面 -ui_page_annotation: 页面信息 -ui_backlinks: 反链 -ui_backlinks_more: "再显示 {{ . }} 条" -ui_field_required: 必填 -ui_action_unavailable: 暂不可用 -ui_image_zoom_dialog: 图片预览 -ui_image_zoom_open: 打开图片预览 -ui_image_zoom_close: 关闭图片预览 -ui_print_page: 打印此页面 -ui_sidebar_expand_section: 展开章节 -ui_sidebar_collapse_section: 收起章节 -ui_asciinema_timer: 播放时间 -ui_openapi_spec: OpenAPI 规格文件 -ui_release_view: 查看发布 -ui_release_source: 源码 -ui_release_compare: 比较变更 -ui_release_released: 发布于 -ui_release_checksums: 校验和 -ui_assets_file: 文件 -ui_assets_checksum: 校验和 -ui_assets_copy: 复制校验和 -ui_assets_copied: 已复制 -ui_assets_copy_all: 复制全部校验和 -ui_assets_download: 下载资产 -ui_download_channels: 下载渠道 -ui_download_unpublished: 待发布 - -# Used in sentences such as "All Tags" -ui_all: 全部 - -# Footer text -footer_all_rights_reserved: 保留所有权利 - -ui_footer_collapse: 收起页脚链接 -ui_footer_expand: 展开页脚链接 - -# Post (blog, article, etc.) -post_last_mod: 最后修改 -post_upstream: "{{ .work }},{{ .copyright }},依 {{ .license }} 授权使用,详见{{ .notice }}。" -post_upstream_adapted: 本页改编自 {{ .work }},{{ .copyright }},依 {{ .license }} 授权,详见{{ .notice }}与{{ .history }}。 -post_upstream_adapted_plain: 本页改编自 {{ .work }},{{ .copyright }},依 {{ .license }} 授权,详见{{ .notice }}。 -post_upstream_notice: 归属声明 -post_upstream_history: 修改历史 -post_translated: 本页为译文,如有出入以{{ .original }}为准。 -post_translated_original: 原文 -post_edit_this: 编辑当前页面 -post_view_markdown: 查阅 Markdown 源码 -post_create_child_page: 添加子页面 -post_create_issue: 提交文档议题 -post_create_project_issue: 提交项目议题 -post_reading_time: 分钟阅读 -post_less_than_a_minute_read: 1分钟内可阅读完 -post_word_count: '{{ .Count }} 字' -post_reading_minutes: '{{ .Minutes }} 分钟' -post_read_original: 阅读原文 - -# Print support -print_printable_section: 这是本节的多页打印视图。 -print_click_to_print: 点击此处打印 -print_show_regular: 返回本页常规视图 -print_entire_section: 打印完整章节 - -# Feedback -feedback_question: 这篇文档解决了你的问题吗? -feedback_positive: 是 -feedback_negative: 否 -feedback_thanks: 感谢反馈,我们会据此改进这篇文档。 -feedback_reason_prompt: 哪里没有解决?(可选) -feedback_reason_missing: 缺少必要信息 -feedback_reason_outdated: 内容错误或已过时 -feedback_reason_failed: 操作步骤没有生效 -feedback_reason_unclear: 内容难以理解 -feedback_details: 在评论区补充详情 -feedback_change: 修改反馈 - -# Table of contents -toc_on_this_page: 目录 - -# Error pages -error_404_title: 页面不存在 -error_404_body: >- - 抱歉,该页面不存在。可以从首页重新开始。 -error_404_home: 返回首页 - -# Version banner -version_banner_archived: >- - 文档 {{ .Version }} 版本已不再积极维护,你当前浏览的是一份归档快照。 -version_banner_latest: 最新文档请参阅 {{ .Link }}。 -version_banner_latest_link: 最新版本 - -# Comments -comments_noscript: 加载评论需要启用 JavaScript。 -comments_noscript_link: 在 GitHub 上查看讨论。 - -# LLM 页面操作 -ui_open_in_prompt_label: 就本页提问 -ui_view_history: 查阅编辑历史 -ui_table_scroll: "可横向滚动的表格" -ui_filetree_divider: "拖动以调整目录树备注列宽度" -book_figure: 图 -book_table: 表 -book_equation: 公式 -book_example: 示例 -book_toc: 全书目录 -book_draft: 草稿 -book_draft_notice: 本章仍在修订中。 -contributors_count: 位贡献者 - -# Article series -ui_series_title: 系列 -ui_series_part: 第 {{ .Part }} / 共 {{ .Total }} 篇 - -# Replace these values with reviewed translations when available. -ui_list_separator: 、 - -# Footer text -post_meta_by_in: "{{ .Authors }} 发布于 {{ .Section }}" -post_meta_in: "发布于 {{ .Section }}" - -# Replace these values with reviewed translations when available. -ui_blog_index_toggle: 切换布局 - -# Markdown output -markdown_llms_index: "LLMS 索引:" -markdown_backlinks: "反链:" -markdown_section_pages: "本节页面:" - -# Explicit English fallbacks for untranslated OINK UI strings. -# Replace these values with reviewed translations when available. -ui_diagram_expand: 放大图表 -ui_diagram_zoom_dialog: 图表预览 -ui_diagram_zoom_close: 关闭图表预览 -ui_diagram_zoom_in: 放大 -ui_diagram_zoom_out: 缩小 -ui_diagram_zoom_reset: 复位视图 -ui_diagram_error: 图表无法渲染 +# HugeGraph-specific labels. Generic UI translations come from OINK. ui_version_fallback: 目标版本没有此页面,已转到该版本的文档首页。 ui_ask_ai: 询问 AI ui_ask_ai_description: 由 Kapa 提供;仅发送你的问题。 ui_ask_ai_latest: 回答基于 latest 文档 ui_retry: 重试 ui_ai_error: AI 暂时不可用,本地搜索不受影响。 +ui_more_versions: 更多版本 +download_release_version: 版本 +download_release_date: 发布日期 +download_release_notes: 发布说明 +download_table_component: 组件 +download_table_type: 类型 +download_table_mirror: 下载 (ASF 镜像) +download_type_binary: 二进制 +download_type_source: 源码 +download_component_server: Server +download_component_toolchain: Toolchain +download_component_ai: AI +download_component_computer: Computer +download_component_commons: Common +download_asf_note: 源码归档是 Apache 软件基金会的正式发布物;二进制软件包是基于源码构建的便利用品。所有文件均通过 ASF 镜像分发,签名与校验和托管在 downloads.apache.org。GitHub 自动生成的源码归档不是 ASF 正式发布版本。 + +ui_ai_consent_description: "继续后将加载第三方服务 Kapa,并将你的问题发送给 Kapa 生成回答。" +ui_ai_consent_continue: "继续使用 Ask AI" +ui_ai_consent_cancel: "取消" +ui_ai_privacy: "隐私政策" diff --git a/layouts/_partials/asf-downloads.html b/layouts/_partials/asf-downloads.html new file mode 100644 index 0000000000..e561159488 --- /dev/null +++ b/layouts/_partials/asf-downloads.html @@ -0,0 +1,104 @@ +{{- /* Render ASF release download tables from data/downloads/asf.json. + + The data file is the single source of truth for both languages; this + partial only derives presentation. Malformed site-owned data fails the + build via errorf so a broken table can never publish silently. + + mode: "latest" renders the one latest release, "archived" renders the + rest. The mode is required so a page cannot render duplicate sections + (and duplicate element ids) by accident. */ -}} +{{- $page := .page -}} +{{- $mode := .mode -}} +{{- $position := .position | default $page.Path -}} +{{- if not (in (slice "latest" "archived") $mode) -}} + {{- errorf "%s: asf-downloads mode must be latest or archived; got %q" $position $mode -}} +{{- end -}} +{{- $data := index (index hugo.Data "downloads" | default dict) "asf" | default dict -}} +{{- $dist := $data.dist_path | default "" -}} +{{- $components := $data.components | default dict -}} +{{- $releases := $data.releases | default slice -}} +{{- if not (and $dist $components $releases) -}} + {{- errorf "%s: data/downloads/asf.json must define dist_path, components, and releases" $position -}} +{{- end -}} +{{- $selected := slice -}} +{{- range $releases -}} + {{- $isLatest := .latest | default false -}} + {{- if or (and (eq $mode "latest") $isLatest) (and (eq $mode "archived") (not $isLatest)) -}} + {{- $selected = $selected | append . -}} + {{- end -}} +{{- end -}} +{{- if and (eq $mode "latest") (not $selected) -}} + {{- errorf "%s: asf-downloads latest mode requires one release marked latest" $position -}} +{{- end -}} +{{- range $release := $selected -}} +{{- $version := $release.version -}} +{{- if not $version -}}{{- errorf "%s: asf-downloads release without a version" $position -}}{{- end -}} +{{- $infix := cond ($release.incubating | default false) "-incubating" "" -}} +{{- $rows := slice -}} +{{- range $kind := slice "binary" "source" -}} + {{- range $componentID := index $release $kind | default slice -}} + {{- $component := index $components $componentID -}} + {{- if not $component -}} + {{- errorf "%s: asf-downloads release %s references unknown component %q" $position $version $componentID -}} + {{- end -}} + {{- if not (and $component.prefix $component.label_key) -}} + {{- errorf "%s: asf-downloads component %q must define prefix and label_key" $position $componentID -}} + {{- end -}} + {{- $suffix := cond (eq $kind "source") "-src" "" -}} + {{- $file := printf "%s%s-%s%s.tar.gz" $component.prefix $infix $version $suffix -}} + {{- $rows = $rows | append (dict + "label" (T $component.label_key) + "kind" $kind + "file" $file + "mirror" (printf "https://www.apache.org/dyn/closer.lua/%s/%s/%s?action=download" $dist $version $file) + "asc" (printf "https://downloads.apache.org/%s/%s/%s.asc" $dist $version $file) + "sha512" (printf "https://downloads.apache.org/%s/%s/%s.sha512" $dist $version $file) + ) -}} + {{- end -}} +{{- end -}} +{{- if not $rows -}}{{- errorf "%s: asf-downloads release %s has no artifacts" $position $version -}}{{- end -}} +
+ {{- if ne $mode "latest" }} +

{{ $version }}

+ {{- end }} + +
+
+ + + + + + + + + + + + + {{- range $row := $rows }} + + + + + + + + {{- end }} + +
{{ T "ui_assets_download" }} · Apache HugeGraph {{ $version }}
{{ T "download_table_component" }}{{ T "download_table_type" }}{{ T "download_table_mirror" }}ASCSHA512
{{ $row.label }}{{ T (printf "download_type_%s" $row.kind) }} + {{ $row.file }} + ASCSHA512
+
+
+
+{{- end -}} +{{- if eq $mode "latest" }} +

{{ T "download_asf_note" }}

+{{- end -}} diff --git a/layouts/_partials/community/members.html b/layouts/_partials/community/members.html new file mode 100644 index 0000000000..9dff73fe7e --- /dev/null +++ b/layouts/_partials/community/members.html @@ -0,0 +1,41 @@ +{{- $page := .page -}} +{{- $data := hugo.Data.community.roster -}} +{{- $labels := dict + "en" (dict "title" "Project members" "lead" "Current Apache HugeGraph PMC members and Committers, sourced from ASF records." "guide" "(Note: How to become a HugeGraph Committer)" "guideNote" "" "chair" "Chair" "pmc" "PMC" "committers" "Committers" "github" "on GitHub") + "cn" (dict "title" "项目成员" "lead" "Apache HugeGraph 当前的 PMC 成员与 Committers,数据来自 ASF 记录。" "guide" "(注: 如何成为 HugeGraph Committer)" "guideNote" "" "chair" "主席" "pmc" "PMC" "committers" "Committers" "github" "的 GitHub 主页") +-}} +{{- $copy := index $labels $page.Language.Lang | default (index $labels "en") -}} +{{- $style := resources.Get "scss/community-members.scss" | toCSS | minify | fingerprint -}} + +
+
+
+

{{ $copy.title }}

+

{{ $copy.lead }} {{ $copy.guide }}{{ with $copy.guideNote }}{{ . }}{{ end }}

+
+ {{- range $role := slice "pmc" "committers" }} + {{- $members := index $data.roles $role }} +
+

{{ index $copy $role }}

+ +
+ {{- end }} +
+
diff --git a/layouts/_partials/community/members.md b/layouts/_partials/community/members.md new file mode 100644 index 0000000000..632a106664 --- /dev/null +++ b/layouts/_partials/community/members.md @@ -0,0 +1,26 @@ +{{- $page := .page -}} +{{- $data := hugo.Data.community.roster -}} +{{- $labels := dict + "en" (dict "title" "Project members" "lead" "Current Apache HugeGraph PMC members and Committers, sourced from ASF records. [(Note: How to become a HugeGraph Committer)](/docs/contribution-guidelines/committer-guidelines/)" "chair" "Chair") + "cn" (dict "title" "项目成员" "lead" "Apache HugeGraph 当前的 PMC 成员与 Committers,数据来自 ASF 记录。[(注: 如何成为 HugeGraph Committer)](/cn/docs/contribution-guidelines/committer-guidelines/)" "chair" "主席") +-}} +{{- $copy := index $labels $page.Language.Lang | default (index $labels "en") -}} +## {{ $copy.title }} + +{{ $copy.lead }} + +{{ range $role := slice "pmc" "committers" -}} +### {{ if eq $role "pmc" }}PMC{{ else }}Committers{{ end }} + +{{ range (index $data.roles $role) -}} +{{- $label := .name -}} +{{- $label = partial "content/markdown-escape.html" $label -}} +{{- if .github -}} +{{- $url := partial "content/markdown-url.html" .profile_url -}} +- [{{ $label }}]({{ $url }}) +{{- else -}} +- {{ $label }} +{{- end }} +{{ end }} + +{{ end -}} diff --git a/layouts/_partials/hooks/body-end.html b/layouts/_partials/hooks/body-end.html index bca33d724a..06d57502bb 100644 --- a/layouts/_partials/hooks/body-end.html +++ b/layouts/_partials/hooks/body-end.html @@ -24,7 +24,6 @@ "ask" (T "ui_ask_ai") "description" (T "ui_ask_ai_description") "latest" (T "ui_ask_ai_latest") - "retry" (T "ui_retry") "error" (T "ui_ai_error") -}} {{- $clientConfig := dict @@ -37,13 +36,20 @@ -}} -

- {{ index $labels "description" }}{{ if $historical }} {{ index $labels "latest" }}.{{ end }} -

+ + +

{{ T "ui_ai_consent_description" }}

+ {{ if $historical }}

{{ index $labels "latest" }}.

{{ end }} +

{{ T "ui_ai_privacy" }}

+ +
{{- $adapter := resources.Get "js/kapa-adapter.js" -}} {{- if hugo.IsProduction }}{{ $adapter = $adapter | minify | fingerprint }}{{ end }} diff --git a/layouts/_partials/landing/sections/community-members.html b/layouts/_partials/landing/sections/community-members.html new file mode 100644 index 0000000000..2e1abd08b0 --- /dev/null +++ b/layouts/_partials/landing/sections/community-members.html @@ -0,0 +1 @@ +{{- partial "community/members.html" (dict "page" .page) -}} diff --git a/layouts/_partials/navbar-item.html b/layouts/_partials/navbar-item.html index d07dd32d2e..74c9b0ca30 100644 --- a/layouts/_partials/navbar-item.html +++ b/layouts/_partials/navbar-item.html @@ -1,4 +1,4 @@ -{{- /* OINK v1.0.0 override: Documentation gains manifest-driven versions. +{{- /* OINK override (reviewed against v1.1.0): Documentation gains manifest-driven versions. One top-level Hugo Menu item. Leaves keep the historical link path; parents add a separate disclosure and one dropdown/accordion panel. */ -}} {{- $page := .page -}} diff --git a/layouts/_partials/navbar.html b/layouts/_partials/navbar.html index 0f7d8ab88c..74dfc846c1 100644 --- a/layouts/_partials/navbar.html +++ b/layouts/_partials/navbar.html @@ -53,13 +53,6 @@ {{- /* Right zone: the search box leads as the elastic boundary before the fixed controls — version, language, theme, GitHub. */ -}} {{- end }} @@ -168,16 +145,7 @@ {{- else if and (eq .Identifier "docs") $.Site.Params.versions }}
- {{- range $.Site.Params.versions }} - {{- $url := strings.TrimSuffix "/" (.url | default "") -}} - {{- if $url }} - {{- partial "version-link.html" (dict - "page" $ "version" . "active" (eq .version $.Site.Params.version) - "class" "td-site-nav__menu-link td-site-nav__menu-child" - "iconKey" (printf "landing-mobile-version-%s" .version) - ) -}} - {{- end }} - {{- end }} + {{ partial "version-menu-links.html" (dict "page" $ "versions" $.Site.Params.versions "class" "td-site-nav__menu-link td-site-nav__menu-child" "key" "landing-mobile") }}
{{- end }} {{- end }} diff --git a/layouts/_partials/print/page-content.html b/layouts/_partials/print/page-content.html index 2234924f8e..b616a79380 100644 --- a/layouts/_partials/print/page-content.html +++ b/layouts/_partials/print/page-content.html @@ -1,8 +1,22 @@ +{{- /* One cache key owns both Print render modes for a Book page. Hugo may + render the plain page and overlapping Book aggregates in parallel, so + computing the variants in a fixed order keeps tdBookAggregate local to + this coordinator instead of racing two differently keyed partials. */ -}} {{- $page := .page -}} {{- $page.Store.Set "tdOutputFormat" "print" -}} -{{- if .book }}{{ $page.Store.Set "tdBookAggregate" true }}{{ end -}} -{{- $content := $page.RenderString (dict "display" "block") $page.RawContent -}} -{{- $content = partial "content/static-image-output.html" $content -}} -{{- partial "code/register-rendered-ids.html" (dict "page" $page "content" $content) -}} -{{- if .book }}{{ $page.Store.Delete "tdBookAggregate" }}{{ end -}} -{{- return (printf "%s" $content | safeHTML) -}} +{{- $page.Store.Delete "tdBookAggregate" -}} +{{- $plain := $page.RenderString (dict "display" "block") $page.RawContent -}} +{{- $plain = partial "content/static-image-output.html" $plain -}} +{{- partial "code/register-rendered-ids.html" (dict "page" $page "content" $plain) -}} +{{- $book := $plain -}} +{{- if eq $page.Type "book" -}} + {{- $page.Store.Set "tdBookAggregate" true -}} + {{- $book = $page.RenderString (dict "display" "block") $page.RawContent -}} + {{- $book = partial "content/static-image-output.html" $book -}} + {{- partial "code/register-rendered-ids.html" (dict "page" $page "content" $book) -}} + {{- $page.Store.Delete "tdBookAggregate" -}} +{{- end -}} +{{- /* Keep publication scanning scoped to authored content in both modes. */ -}} +{{- $plain = printf "%s" $plain | safeHTML -}} +{{- $book = printf "%s" $book | safeHTML -}} +{{- return (dict "plain" $plain "book" $book) -}} diff --git a/layouts/_partials/shell/config.html b/layouts/_partials/shell/config.html index bc01845f07..b297268761 100644 --- a/layouts/_partials/shell/config.html +++ b/layouts/_partials/shell/config.html @@ -1,4 +1,4 @@ -{{- /* OINK v1.0.0 override: separate the visible lockup from the SEO title. */ -}} +{{- /* OINK override (reviewed against v1.1.0): separate the visible lockup from the SEO title. */ -}} {{- $name := .Site.Params.brand_name | default .Site.Title -}} {{- $logoPath := .Site.Params.logo | default "icons/logo.svg" -}} {{- $logoURL := (partial "content/url.html" (dict diff --git a/layouts/_partials/shell/sidebar-panel.html b/layouts/_partials/shell/sidebar-panel.html index a433197ba4..b6c4bc6ba9 100644 --- a/layouts/_partials/shell/sidebar-panel.html +++ b/layouts/_partials/shell/sidebar-panel.html @@ -1,4 +1,4 @@ -{{- /* OINK v1.0.0 override: the mobile Docs drawer owns global controls that +{{- /* OINK override (reviewed against v1.1.0): the mobile Docs drawer owns global controls that disappear from the compact header and no longer repeat in the footer. */ -}} {{- $config := partialCached "shell/config.html" . .Site.Language.Lang -}} {{- $darkMode := partialCached "dark-mode-config.html" "dark-mode-global" -}} @@ -63,15 +63,7 @@
{{ $.Site.Params.version_menu | default "Version" }}
{{- end }} diff --git a/layouts/_partials/shell/toc.html b/layouts/_partials/shell/toc.html index 600866385f..d6f2aed5a5 100644 --- a/layouts/_partials/shell/toc.html +++ b/layouts/_partials/shell/toc.html @@ -1,4 +1,4 @@ -{{- /* OINK v1.0.0 shell/toc.html with an accessible name on Hugo's TOC nav. */ -}} +{{- /* OINK v1.1.0 shell/toc.html with an accessible name on Hugo's TOC nav. */ -}} {{- $toc := .TableOfContents -}} {{- $label := T "toc_on_this_page" | htmlEscape -}} {{- $toc = replace $toc `