You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@answer.apache.org by gi...@apache.org on 2024/07/01 03:01:17 UTC
(incubator-answer-website) branch dist-pages updated: deploy: 4ed5fa9c430af38aad51b11202e7db44131a6ab6
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch dist-pages
in repository https://gitbox.apache.org/repos/asf/incubator-answer-website.git
The following commit(s) were added to refs/heads/dist-pages by this push:
new 5ada8c07 deploy: 4ed5fa9c430af38aad51b11202e7db44131a6ab6
5ada8c07 is described below
commit 5ada8c07a77ab6dccd4bc89c9a664fe1f5ccd9ff
Author: shuashuai <sh...@users.noreply.github.com>
AuthorDate: Mon Jul 1 03:01:13 2024 +0000
deploy: 4ed5fa9c430af38aad51b11202e7db44131a6ab6
---
404.html | 4 +-
assets/js/0480b142.65cf541e.js | 1 -
assets/js/0480b142.f1ca8004.js | 1 +
assets/js/1620c6a0.06fbab5d.js | 1 -
assets/js/1a8837ce.8cf2b1aa.js | 1 +
assets/js/1a8837ce.d37c4f3e.js | 1 -
.../{221cde73.d31c082c.js => 221cde73.ab880396.js} | 2 +-
assets/js/2a510483.18f05482.js | 2 +
...ICENSE.txt => 2a510483.18f05482.js.LICENSE.txt} | 0
assets/js/2a510483.2790d134.js | 2 -
assets/js/306a8c6c.39e031f9.js | 1 -
assets/js/306a8c6c.df347ef3.js | 1 +
assets/js/3b752053.a90ab919.js | 1 +
assets/js/415707e9.859c5684.js | 1 -
assets/js/415707e9.b4f81d54.js | 1 +
assets/js/51168d66.2c937d97.js | 1 +
assets/js/51168d66.f3f273e6.js | 1 -
assets/js/52dfb191.74c1454e.js | 1 -
assets/js/52dfb191.f920ca1f.js | 1 +
assets/js/54f44165.55e235ac.js | 1 +
assets/js/54f44165.96048d96.js | 1 -
.../js/5771c448.4f727a4f.js | 2 +-
assets/js/5771c448.f127cd48.js | 1 -
assets/js/59e77115.3f84b6f1.js | 1 +
assets/js/5ac42693.633b398e.js | 1 -
assets/js/5ac42693.69f04c6f.js | 1 +
assets/js/5aeeabc8.3e63b6c5.js | 1 +
assets/js/5b5f4945.67fb97ee.js | 1 +
assets/js/5b5f4945.cab754e8.js | 1 -
assets/js/68eaa3f5.1e5e25f6.js | 1 -
assets/js/68eaa3f5.b48f3a8a.js | 1 +
assets/js/692c6f9f.a94cfe2a.js | 1 -
assets/js/6f494215.012af927.js | 1 +
assets/js/6f494215.66bfe840.js | 1 -
assets/js/6fd9b8bb.dc18b319.js | 1 +
assets/js/6fd9b8bb.f6e1f73b.js | 1 -
assets/js/72a4391e.2ece4e10.js | 1 +
assets/js/72a4391e.c716bad8.js | 1 -
assets/js/872d4ab4.38ab9c6d.js | 1 -
assets/js/872d4ab4.fa69a11c.js | 1 +
assets/js/8a3109ec.f5f58b2d.js | 1 +
assets/js/935f2afb.34a3900a.js | 1 -
assets/js/935f2afb.bac4eae3.js | 1 +
assets/js/977e6cb2.0bce323c.js | 1 -
assets/js/977e6cb2.2c243c4e.js | 1 +
assets/js/a09c2993.38c29059.js | 1 -
assets/js/a09c2993.7f46c57d.js | 1 +
assets/js/a4adfb7f.7f0bbe11.js | 1 -
assets/js/a5eff934.d6627d3c.js | 1 -
assets/js/a5eff934.e87fac74.js | 1 +
assets/js/a98c1148.665c7211.js | 1 -
assets/js/a98c1148.a7aa6db5.js | 1 +
assets/js/b2b494f3.7023b779.js | 1 -
assets/js/b2b494f3.8b9e507c.js | 1 +
assets/js/b2f554cd.b887b74b.js | 1 -
assets/js/b2f554cd.e87df29d.js | 1 +
assets/js/b7a6a582.73d6a31e.js | 1 +
assets/js/b7a6a582.8879c938.js | 1 -
assets/js/bb350c59.6bd4de4c.js | 1 -
assets/js/c1cb8fca.8e9e71bf.js | 1 +
assets/js/c1cb8fca.e6cbf5e4.js | 1 -
assets/js/d7ef3cd8.8a67078e.js | 1 -
assets/js/d7ef3cd8.93b6895c.js | 1 +
assets/js/da6654f2.75827c5d.js | 1 -
assets/js/da6654f2.dfdc939a.js | 1 +
assets/js/dc8b965f.353367be.js | 1 -
.../js/dc8b965f.8af9f35f.js | 2 +-
assets/js/e438ab2a.4000c92b.js | 1 +
assets/js/e438ab2a.c6047e9d.js | 1 -
assets/js/e4ae456e.77bec96f.js | 1 -
assets/js/eafd45de.cc9a51f9.js | 1 -
assets/js/eafd45de.d7433571.js | 1 +
assets/js/f493f8eb.157ca32a.js | 1 -
assets/js/f493f8eb.b0ec78f1.js | 1 +
assets/js/f8a2828b.5d49e894.js | 1 -
assets/js/f8a2828b.a4c7e460.js | 1 +
assets/js/fd15fd1f.fdf76e00.js | 1 +
assets/js/main.196736e5.js | 2 -
assets/js/main.9dfefd95.js | 2 +
...js.LICENSE.txt => main.9dfefd95.js.LICENSE.txt} | 0
assets/js/runtime~main.2f64086d.js | 1 -
assets/js/runtime~main.ca5b1b3c.js | 1 +
blog/2023/05/11/answer-1.0.9-release/index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
blog/2023/06/15/answer-1.1.0-release/index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../24/answer-enters-apache-incubator/index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../answer-1.2.1-ask-better-find-better/index.html | 4 +-
.../first-contribution-come-to-answer/index.html | 6 +-
blog/2024/01/26/deploy-answer-https/index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
blog/2024/02/20/answer-1.2.5-is-ready/index.html | 4 +-
.../index.html | 4 +-
.../what-is-new-in-apache-answer-1.3.0/index.html | 4 +-
blog/2024/05/09/answer-ospp-2024/index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../how-to-search-like-a-pro-in-answer/index.html | 4 +-
blog/archive/index.html | 4 +-
blog/atom.xml | 2 +-
blog/category/best-practice/index.html | 4 +-
blog/category/community/index.html | 4 +-
blog/category/insights/index.html | 4 +-
blog/category/release/index.html | 4 +-
blog/category/tech/index.html | 4 +-
blog/category/tutorials/index.html | 4 +-
blog/index.html | 4 +-
blog/page/2/index.html | 4 +-
blog/rss.xml | 2 +-
blog/tags/index.html | 4 +-
blog/tags/tutorials/index.html | 4 +-
community/blog-post/index.html | 8 +-
community/contributing/index.html | 10 +-
community/development/index.html | 65 ++-----------
community/how-to-release/index.html | 8 +-
community/issues/index.html | 8 +-
community/plugins/index.html | 108 ++-------------------
community/plugins/plugin-config/index.html | 71 ++------------
community/plugins/plugin-translation/index.html | 59 ++---------
community/pull-request/index.html | 10 +-
community/security/index.html | 8 +-
community/support/index.html | 8 +-
community/team/index.html | 8 +-
community/translation/index.html | 8 +-
docs/api/index.html | 8 +-
docs/command-line/index.html | 8 +-
docs/configfile/index.html | 8 +-
docs/database/index.html | 8 +-
docs/development/index.html | 64 ++++++++++++
{community => docs/development}/plugins/index.html | 98 ++++++++++++++++---
.../development}/plugins/plugin-config/index.html | 12 +--
.../plugins/plugin-translation/index.html | 12 +--
docs/env/index.html | 8 +-
docs/faq/index.html | 8 +-
docs/flags/index.html | 8 +-
docs/index.html | 8 +-
docs/installation/index.html | 8 +-
docs/moderation/index.html | 6 +-
docs/notice/index.html | 8 +-
docs/permission/index.html | 8 +-
docs/plugins/index.html | 91 +++++++++--------
docs/questions/index.html | 8 +-
docs/reputation/index.html | 8 +-
docs/review/index.html | 8 +-
docs/settings/index.html | 8 +-
docs/tags/index.html | 8 +-
docs/upgrade/index.html | 8 +-
docs/users/index.html | 8 +-
download/index.html | 4 +-
index.html | 4 +-
plugins/index.html | 4 +-
search/index.html | 4 +-
sitemap.xml | 2 +-
zh-CN/404.html | 4 +-
zh-CN/assets/js/0bbd7524.1cacdda5.js | 1 +
zh-CN/assets/js/0bbd7524.46a67489.js | 1 -
zh-CN/assets/js/1620c6a0.423cd8d5.js | 1 -
zh-CN/assets/js/1a8837ce.248e9cca.js | 1 -
zh-CN/assets/js/1a8837ce.3e5231aa.js | 1 +
.../{221cde73.c8cb6a62.js => 221cde73.bd0718df.js} | 2 +-
zh-CN/assets/js/26cbfb40.134f3304.js | 2 -
zh-CN/assets/js/26cbfb40.f60ead81.js | 2 +
...ICENSE.txt => 26cbfb40.f60ead81.js.LICENSE.txt} | 0
zh-CN/assets/js/283536cd.17f31dd5.js | 1 +
zh-CN/assets/js/283536cd.e23e90e4.js | 1 -
zh-CN/assets/js/306a8c6c.e1c457d2.js | 1 +
zh-CN/assets/js/306a8c6c.fcab2505.js | 1 -
zh-CN/assets/js/3a0bfb32.94528d7b.js | 1 -
zh-CN/assets/js/3a0bfb32.a01cf796.js | 1 +
zh-CN/assets/js/3b752053.fe61ff0f.js | 1 +
zh-CN/assets/js/415707e9.0c77a2e9.js | 1 +
zh-CN/assets/js/415707e9.605d6453.js | 1 -
zh-CN/assets/js/4958df33.4b037e11.js | 1 +
zh-CN/assets/js/4958df33.c3c5fb13.js | 1 -
zh-CN/assets/js/50bc71d4.710f9361.js | 1 -
zh-CN/assets/js/50bc71d4.bb12abdd.js | 1 +
zh-CN/assets/js/565f0463.10e6c227.js | 1 -
zh-CN/assets/js/565f0463.154be4ae.js | 1 +
zh-CN/assets/js/57264e0e.79860921.js | 1 +
zh-CN/assets/js/57264e0e.d658f27a.js | 1 -
zh-CN/assets/js/5771c448.53f3ad06.js | 1 +
zh-CN/assets/js/59e77115.fc77ead2.js | 1 +
zh-CN/assets/js/5ac42693.2b693fec.js | 1 -
zh-CN/assets/js/5ac42693.c9c79685.js | 1 +
zh-CN/assets/js/5aeeabc8.caa0390b.js | 1 +
zh-CN/assets/js/5b5253e0.3dec9cbf.js | 1 +
zh-CN/assets/js/5b5253e0.816ee5f1.js | 1 -
zh-CN/assets/js/5b5f4945.9a3f1669.js | 1 -
zh-CN/assets/js/5b5f4945.d3adcaf7.js | 1 +
zh-CN/assets/js/692c6f9f.b6486106.js | 1 -
zh-CN/assets/js/6b66dba1.31caed86.js | 1 +
zh-CN/assets/js/6b66dba1.fce6c001.js | 1 -
zh-CN/assets/js/6f494215.ab56cf1c.js | 1 -
zh-CN/assets/js/6f494215.bc3e2281.js | 1 +
zh-CN/assets/js/6fd9b8bb.16ba9183.js | 1 +
zh-CN/assets/js/6fd9b8bb.a3b2b588.js | 1 -
zh-CN/assets/js/719ef308.363d7e49.js | 1 -
zh-CN/assets/js/719ef308.6c16edb2.js | 1 +
zh-CN/assets/js/731fb1ee.38c186d9.js | 1 -
zh-CN/assets/js/731fb1ee.64532c03.js | 1 +
zh-CN/assets/js/7f220a89.7bb5db73.js | 1 -
zh-CN/assets/js/7f220a89.be794b2d.js | 1 +
zh-CN/assets/js/872d4ab4.657834c8.js | 1 +
zh-CN/assets/js/872d4ab4.faffc326.js | 1 -
zh-CN/assets/js/8a3109ec.84e952a5.js | 1 +
zh-CN/assets/js/935f2afb.0134276e.js | 1 +
zh-CN/assets/js/935f2afb.c14c47cc.js | 1 -
zh-CN/assets/js/a4adfb7f.f26c30c4.js | 1 -
zh-CN/assets/js/a5b0ceb9.5359f408.js | 1 +
zh-CN/assets/js/a5b0ceb9.a818a7b4.js | 1 -
zh-CN/assets/js/bb350c59.8d31bf66.js | 1 -
zh-CN/assets/js/c8c000df.86cb37f6.js | 1 -
zh-CN/assets/js/c8c000df.d385ba7e.js | 1 +
zh-CN/assets/js/ca3ced4f.362c548b.js | 1 +
zh-CN/assets/js/ca3ced4f.dce770b3.js | 1 -
zh-CN/assets/js/cb37bc33.7d2fdef0.js | 1 -
zh-CN/assets/js/cb37bc33.bcb5c79b.js | 1 +
zh-CN/assets/js/d7ef3cd8.1bd422b8.js | 1 -
zh-CN/assets/js/d7ef3cd8.24e3ebdd.js | 1 +
zh-CN/assets/js/da6654f2.32151595.js | 1 -
zh-CN/assets/js/da6654f2.a704abbe.js | 1 +
zh-CN/assets/js/dc8b965f.0b40c244.js | 1 +
zh-CN/assets/js/e4ae456e.8016823a.js | 1 -
zh-CN/assets/js/eafd45de.1fe3c84f.js | 1 +
zh-CN/assets/js/eafd45de.2fd9974d.js | 1 -
zh-CN/assets/js/f8a2828b.b66a6743.js | 1 -
zh-CN/assets/js/f8a2828b.d051f5a9.js | 1 +
zh-CN/assets/js/fd15fd1f.13a5f2c3.js | 1 +
zh-CN/assets/js/main.83a29ec0.js | 2 -
zh-CN/assets/js/main.bfe2f634.js | 2 +
...js.LICENSE.txt => main.bfe2f634.js.LICENSE.txt} | 0
zh-CN/assets/js/runtime~main.4bece41c.js | 1 +
zh-CN/assets/js/runtime~main.f7e6c917.js | 1 -
.../2023/05/11/answer-1.0.9-release/index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../2023/06/15/answer-1.1.0-release/index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../24/answer-enters-apache-incubator/index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../answer-1.2.1-ask-better-find-better/index.html | 4 +-
.../first-contribution-come-to-answer/index.html | 6 +-
.../blog/2024/01/26/deploy-answer-https/index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../2024/02/20/answer-1.2.5-is-ready/index.html | 4 +-
.../index.html | 4 +-
.../what-is-new-in-apache-answer-1.3.0/index.html | 4 +-
zh-CN/blog/2024/05/09/answer-ospp-2024/index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../how-to-search-like-a-pro-in-answer/index.html | 4 +-
zh-CN/blog/archive/index.html | 4 +-
zh-CN/blog/atom.xml | 2 +-
zh-CN/blog/category/best-practice/index.html | 4 +-
zh-CN/blog/category/community/index.html | 4 +-
zh-CN/blog/category/insights/index.html | 4 +-
zh-CN/blog/category/release/index.html | 4 +-
zh-CN/blog/category/tech/index.html | 4 +-
zh-CN/blog/category/tutorials/index.html | 4 +-
zh-CN/blog/index.html | 4 +-
zh-CN/blog/page/2/index.html | 4 +-
zh-CN/blog/rss.xml | 2 +-
zh-CN/blog/tags/index.html | 4 +-
zh-CN/blog/tags/tutorials/index.html | 4 +-
zh-CN/community/blog-post/index.html | 8 +-
zh-CN/community/contributing/index.html | 10 +-
zh-CN/community/development/index.html | 65 ++-----------
zh-CN/community/how-to-release/index.html | 8 +-
zh-CN/community/issues/index.html | 8 +-
zh-CN/community/plugins/index.html | 108 ++-------------------
zh-CN/community/plugins/plugin-config/index.html | 71 ++------------
.../plugins/plugin-translation/index.html | 59 ++---------
zh-CN/community/pull-request/index.html | 10 +-
zh-CN/community/security/index.html | 8 +-
zh-CN/community/support/index.html | 8 +-
zh-CN/community/team/index.html | 8 +-
zh-CN/community/translation/index.html | 8 +-
zh-CN/docs/api/index.html | 8 +-
zh-CN/docs/command-line/index.html | 8 +-
zh-CN/docs/configfile/index.html | 8 +-
zh-CN/docs/contributing/notice/index.html | 8 +-
zh-CN/docs/database/index.html | 8 +-
zh-CN/docs/development/index.html | 64 ++++++++++++
.../development}/plugins/index.html | 98 ++++++++++++++++---
.../development}/plugins/plugin-config/index.html | 12 +--
.../plugins/plugin-translation/index.html | 12 +--
zh-CN/docs/env/index.html | 8 +-
zh-CN/docs/faq/index.html | 8 +-
zh-CN/docs/flags/index.html | 8 +-
zh-CN/docs/index.html | 8 +-
zh-CN/docs/installation/index.html | 8 +-
zh-CN/docs/moderation/index.html | 6 +-
zh-CN/docs/permission/index.html | 8 +-
zh-CN/docs/plugins/index.html | 91 +++++++++--------
zh-CN/docs/questions/index.html | 8 +-
zh-CN/docs/reputation/index.html | 8 +-
zh-CN/docs/review/index.html | 8 +-
zh-CN/docs/settings/index.html | 6 +-
zh-CN/docs/tags/index.html | 8 +-
zh-CN/docs/upgrade/index.html | 8 +-
zh-CN/docs/users/index.html | 8 +-
zh-CN/download/index.html | 4 +-
zh-CN/index.html | 4 +-
zh-CN/plugins/index.html | 4 +-
zh-CN/search/index.html | 4 +-
zh-CN/sitemap.xml | 2 +-
336 files changed, 1015 insertions(+), 1163 deletions(-)
diff --git a/404.html b/404.html
index be18a50b..5d817def 100644
--- a/404.html
+++ b/404.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/assets/js/0480b142.65cf541e.js b/assets/js/0480b142.65cf541e.js
deleted file mode 100644
index d935a756..00000000
--- a/assets/js/0480b142.65cf541e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[836],{85218:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>l});var a=n(43010),s=n(90887);const i={slug:"/faq"},o="FAQ",r={id:"faq",title:"FAQ",description:"How do I access the installation page?",source:"@site/docs/faq.md",sourceDirName:".",slug:"/faq",permalink:"/docs/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/apache/incubator-answer-websit [...]
\ No newline at end of file
diff --git a/assets/js/0480b142.f1ca8004.js b/assets/js/0480b142.f1ca8004.js
new file mode 100644
index 00000000..1f21def7
--- /dev/null
+++ b/assets/js/0480b142.f1ca8004.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[836],{85218:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>l});var a=n(43010),s=n(90887);const i={slug:"/faq"},o="FAQ",r={id:"faq",title:"FAQ",description:"How do I access the installation page?",source:"@site/docs/faq.md",sourceDirName:".",slug:"/faq",permalink:"/docs/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/apache/incubator-answer-websit [...]
\ No newline at end of file
diff --git a/assets/js/1620c6a0.06fbab5d.js b/assets/js/1620c6a0.06fbab5d.js
deleted file mode 100644
index 92efbea8..00000000
--- a/assets/js/1620c6a0.06fbab5d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4945],{88084:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var t=i(43010),r=i(90887);const o={slug:"/plugins"},s="Contribute for Plugins",l={id:"contributing/plugins",title:"Contribute for Plugins",description:"Viewing the official plugin code will make you to quickly understand and learn plugin development.",source:"@site/community/contributing/p [...]
\ No newline at end of file
diff --git a/assets/js/1a8837ce.8cf2b1aa.js b/assets/js/1a8837ce.8cf2b1aa.js
new file mode 100644
index 00000000..f68ebb7f
--- /dev/null
+++ b/assets/js/1a8837ce.8cf2b1aa.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9849],{95221:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=i(43010),s=i(90887);const r={slug:"/contributing"},o="Contributing",l={id:"contributing/contributing",title:"Contributing",description:"Thanks for your interest in contributing to Apache Answer, hopefully, this document makes the process for contributing clear.",source:"@site/communi [...]
\ No newline at end of file
diff --git a/assets/js/1a8837ce.d37c4f3e.js b/assets/js/1a8837ce.d37c4f3e.js
deleted file mode 100644
index b29e6f37..00000000
--- a/assets/js/1a8837ce.d37c4f3e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9849],{95221:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=i(43010),s=i(90887);const r={slug:"/contributing"},o="Contributing",l={id:"contributing/contributing",title:"Contributing",description:"Thanks for your interest in contributing to Apache Answer, hopefully, this document makes the process for contributing clear.",source:"@site/communi [...]
\ No newline at end of file
diff --git a/assets/js/221cde73.d31c082c.js b/assets/js/221cde73.ab880396.js
similarity index 82%
rename from assets/js/221cde73.d31c082c.js
rename to assets/js/221cde73.ab880396.js
index 003a1c89..da761d1e 100644
--- a/assets/js/221cde73.d31c082c.js
+++ b/assets/js/221cde73.ab880396.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7187],{9072:(a,t,o)=>{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>n,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>m});var e=o(43010),i=o(90887);const c=JSON.parse('[{"rC":[{"name":"chrisdutz","avatar":"https://avatars.githubusercontent.com/u/651105","github":"https://github.com/chrisdutz","role":"Mentor"},{"name":"fenbox","avatar":"https://avatars.githubusercontent.com/u/360618","github":"https://github.co [...]
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7187],{9072:(a,t,o)=>{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>n,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>m});var e=o(43010),i=o(90887);const c=JSON.parse('[{"rC":[{"name":"chrisdutz","avatar":"https://avatars.githubusercontent.com/u/651105","github":"https://github.com/chrisdutz","role":"Mentor"},{"name":"fenbox","avatar":"https://avatars.githubusercontent.com/u/360618","github":"https://github.co [...]
\ No newline at end of file
diff --git a/assets/js/2a510483.18f05482.js b/assets/js/2a510483.18f05482.js
new file mode 100644
index 00000000..e784c095
--- /dev/null
+++ b/assets/js/2a510483.18f05482.js
@@ -0,0 +1,2 @@
+/*! For license information please see 2a510483.18f05482.js.LICENSE.txt */
+(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9304],{82762:(e,t,r)=>{"use strict";r.r(t),r.d(t,{assets:()=>y,contentTitle:()=>m,default:()=>g,frontMatter:()=>f,metadata:()=>b,toc:()=>x});var n=r(43010),s=r(90887),i=r(82829),o=r.n(i),a=r(16567),l=r(84875),c=r.n(l),u=r(85170),d=r(53437);const h=u.forwardRef((({bsPrefix:e,variant:t,animation:r="border",size:s,as:i="div",className:o,...a},l)=>{const u=`${e=(0,d.vE)(e,"spinner")}-${r}`;return(0,n.jsx)(i,{ref:l,...a,className:c( [...]
\ No newline at end of file
diff --git a/assets/js/2a510483.2790d134.js.LICENSE.txt b/assets/js/2a510483.18f05482.js.LICENSE.txt
similarity index 100%
rename from assets/js/2a510483.2790d134.js.LICENSE.txt
rename to assets/js/2a510483.18f05482.js.LICENSE.txt
diff --git a/assets/js/2a510483.2790d134.js b/assets/js/2a510483.2790d134.js
deleted file mode 100644
index 296375c1..00000000
--- a/assets/js/2a510483.2790d134.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 2a510483.2790d134.js.LICENSE.txt */
-(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9304],{82762:(e,t,r)=>{"use strict";r.r(t),r.d(t,{assets:()=>y,contentTitle:()=>m,default:()=>g,frontMatter:()=>f,metadata:()=>b,toc:()=>x});var n=r(43010),s=r(90887),i=r(82829),o=r.n(i),a=r(16567),l=r(84875),c=r.n(l),u=r(85170),d=r(53437);const h=u.forwardRef((({bsPrefix:e,variant:t,animation:r="border",size:s,as:i="div",className:o,...a},l)=>{const u=`${e=(0,d.vE)(e,"spinner")}-${r}`;return(0,n.jsx)(i,{ref:l,...a,className:c( [...]
\ No newline at end of file
diff --git a/assets/js/306a8c6c.39e031f9.js b/assets/js/306a8c6c.39e031f9.js
deleted file mode 100644
index 7c01ce51..00000000
--- a/assets/js/306a8c6c.39e031f9.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7616],{59479:e=>{e.exports=JSON.parse('{"pluginId":"community","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"community":[{"type":"link","label":"Support","href":"/community/support","docId":"support","unlisted":false},{"type":"link","label":"Team","href":"/community/team","docId":"team","unlisted":false},{"type":"link [...]
\ No newline at end of file
diff --git a/assets/js/306a8c6c.df347ef3.js b/assets/js/306a8c6c.df347ef3.js
new file mode 100644
index 00000000..b6a1dd2b
--- /dev/null
+++ b/assets/js/306a8c6c.df347ef3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7616],{59479:e=>{e.exports=JSON.parse('{"pluginId":"community","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"community":[{"type":"link","label":"Support","href":"/community/support","docId":"support","unlisted":false},{"type":"link","label":"Team","href":"/community/team","docId":"team","unlisted":false},{"type":"link [...]
\ No newline at end of file
diff --git a/assets/js/3b752053.a90ab919.js b/assets/js/3b752053.a90ab919.js
new file mode 100644
index 00000000..f4dc26da
--- /dev/null
+++ b/assets/js/3b752053.a90ab919.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1471],{10276:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>a});var t=i(43010),s=i(90887);const r={slug:"/development/plugins"},l="Overview",o={id:"development/plugins/overview",title:"Overview",description:"Viewing the official plugin code will make you to quickly understand and learn plugin development.",source:"@site/docs/development/plugins/overvie [...]
\ No newline at end of file
diff --git a/assets/js/415707e9.859c5684.js b/assets/js/415707e9.859c5684.js
deleted file mode 100644
index d78639e7..00000000
--- a/assets/js/415707e9.859c5684.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2289],{7603:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>d,default:()=>c,frontMatter:()=>t,metadata:()=>l,toc:()=>o});var i=n(43010),r=n(90887);const t={slug:"/users"},d="Users",l={id:"guides/users",title:"Users",description:"User status",source:"@site/docs/guides/users.md",sourceDirName:"guides",slug:"/users",permalink:"/docs/users",draft:!1,unlisted:!1,editUrl:"https://github.com/apache/incubator-answer- [...]
\ No newline at end of file
diff --git a/assets/js/415707e9.b4f81d54.js b/assets/js/415707e9.b4f81d54.js
new file mode 100644
index 00000000..58d54590
--- /dev/null
+++ b/assets/js/415707e9.b4f81d54.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2289],{7603:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>d,default:()=>c,frontMatter:()=>t,metadata:()=>l,toc:()=>o});var i=n(43010),r=n(90887);const t={slug:"/users"},d="Users",l={id:"guides/users",title:"Users",description:"User status",source:"@site/docs/guides/users.md",sourceDirName:"guides",slug:"/users",permalink:"/docs/users",draft:!1,unlisted:!1,editUrl:"https://github.com/apache/incubator-answer- [...]
\ No newline at end of file
diff --git a/assets/js/51168d66.2c937d97.js b/assets/js/51168d66.2c937d97.js
new file mode 100644
index 00000000..2cdae3a3
--- /dev/null
+++ b/assets/js/51168d66.2c937d97.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[8414],{1421:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>d,default:()=>h,frontMatter:()=>t,metadata:()=>c,toc:()=>o});var i=s(43010),l=s(90887);const t={slug:"/env"},d="Environment Variables",c={id:"getting-started/env",title:"Environment Variables",description:"Installation",source:"@site/docs/getting-started/env.md",sourceDirName:"getting-started",slug:"/env",permalink:"/docs/env",draft:!1,unlisted:!1,ed [...]
\ No newline at end of file
diff --git a/assets/js/51168d66.f3f273e6.js b/assets/js/51168d66.f3f273e6.js
deleted file mode 100644
index 44f671e9..00000000
--- a/assets/js/51168d66.f3f273e6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[8414],{1421:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>d,default:()=>h,frontMatter:()=>t,metadata:()=>c,toc:()=>o});var i=s(43010),l=s(90887);const t={slug:"/env"},d="Environment Variables",c={id:"getting-started/env",title:"Environment Variables",description:"Installation",source:"@site/docs/getting-started/env.md",sourceDirName:"getting-started",slug:"/env",permalink:"/docs/env",draft:!1,unlisted:!1,ed [...]
\ No newline at end of file
diff --git a/assets/js/52dfb191.74c1454e.js b/assets/js/52dfb191.74c1454e.js
deleted file mode 100644
index 77927ec0..00000000
--- a/assets/js/52dfb191.74c1454e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1447],{43205:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>r,metadata:()=>i,toc:()=>h});var o=n(43010),s=n(90887);const r={title:"First Contribution? Come to Answer.",authors:["Anne"],category:"Community",featured:!0,image:"2024-01-25-cover@4x.png",description:"Ready to leave your mark on the open-source world? Come join the welcoming Apache Answer community!"},a=void 0,i={pe [...]
\ No newline at end of file
diff --git a/assets/js/52dfb191.f920ca1f.js b/assets/js/52dfb191.f920ca1f.js
new file mode 100644
index 00000000..d7561d3d
--- /dev/null
+++ b/assets/js/52dfb191.f920ca1f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1447],{43205:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>h});var o=n(43010),s=n(90887);const r={title:"First Contribution? Come to Answer.",authors:["Anne"],category:"Community",featured:!0,image:"2024-01-25-cover@4x.png",description:"Ready to leave your mark on the open-source world? Come join the welcoming Apache Answer community!"},a=void 0,i={pe [...]
\ No newline at end of file
diff --git a/assets/js/54f44165.55e235ac.js b/assets/js/54f44165.55e235ac.js
new file mode 100644
index 00000000..bd67f632
--- /dev/null
+++ b/assets/js/54f44165.55e235ac.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[152],{89477:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var n=a(43010),s=a(90887),r=a(71981),l=a(71401);const i={slug:"/installation"},o="Installation",c={id:"getting-started/installation",title:"Installation",description:"Start Apache Answer",source:"@site/docs/getting-started/installation.md",sourceDirName:"getting-started",slug:"/installation [...]
\ No newline at end of file
diff --git a/assets/js/54f44165.96048d96.js b/assets/js/54f44165.96048d96.js
deleted file mode 100644
index 9df03a9e..00000000
--- a/assets/js/54f44165.96048d96.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[152],{89477:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>p,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var n=a(43010),s=a(90887),r=a(71981),i=a(71401);const l={slug:"/installation"},o="Installation",c={id:"getting-started/installation",title:"Installation",description:"Start Apache Answer",source:"@site/docs/getting-started/installation.md",sourceDirName:"getting-started",slug:"/installation [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/5771c448.a31a70ae.js b/assets/js/5771c448.4f727a4f.js
similarity index 91%
rename from zh-CN/assets/js/5771c448.a31a70ae.js
rename to assets/js/5771c448.4f727a4f.js
index 996109a7..9e542a13 100644
--- a/zh-CN/assets/js/5771c448.a31a70ae.js
+++ b/assets/js/5771c448.4f727a4f.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7872],{76564:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>l});var n=i(43010),s=i(90887);const r={slug:"/security"},c="Security",o={id:"security",title:"Security",description:"The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. If you find a security bug, with that in mind, please do not file [...]
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7872],{76564:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>l});var n=i(43010),s=i(90887);const r={slug:"/security"},c="Security",o={id:"security",title:"Security",description:"The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. If you find a security bug, with that in mind, please do not file [...]
\ No newline at end of file
diff --git a/assets/js/5771c448.f127cd48.js b/assets/js/5771c448.f127cd48.js
deleted file mode 100644
index 244dde5e..00000000
--- a/assets/js/5771c448.f127cd48.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7872],{76564:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>u});var n=i(43010),s=i(90887);const r={slug:"/security"},c="Security",o={id:"security",title:"Security",description:"The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. If you find a security bug, with that in mind, please do not file [...]
\ No newline at end of file
diff --git a/assets/js/59e77115.3f84b6f1.js b/assets/js/59e77115.3f84b6f1.js
new file mode 100644
index 00000000..5d840305
--- /dev/null
+++ b/assets/js/59e77115.3f84b6f1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6312],{10540:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>t,default:()=>u,frontMatter:()=>l,metadata:()=>r,toc:()=>c});var s=i(43010),a=i(90887);const l={slug:"/plugins"},t="Using Plugins",r={id:"getting-started/plugins",title:"Using Plugins",description:"When we need to extend Apache Answer's functionality, such as adding OAuth login, we can design plugins to implement these features.",source:"@site/docs/ [...]
\ No newline at end of file
diff --git a/assets/js/5ac42693.633b398e.js b/assets/js/5ac42693.633b398e.js
deleted file mode 100644
index 489586e2..00000000
--- a/assets/js/5ac42693.633b398e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5047],{75821:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var a=s(43010),n=s(90887);const r={slug:"/how-to-release"},i="How to Release",o={id:"contributing/how-to-release",title:"How to Release",description:"All Apache projects are required to follow the Apache Release Policy. This guide is intended to help you understand the policy and how to re [...]
\ No newline at end of file
diff --git a/assets/js/5ac42693.69f04c6f.js b/assets/js/5ac42693.69f04c6f.js
new file mode 100644
index 00000000..0db468cb
--- /dev/null
+++ b/assets/js/5ac42693.69f04c6f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5047],{75821:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var a=s(43010),n=s(90887);const r={slug:"/how-to-release"},i="How to Release",o={id:"contributing/how-to-release",title:"How to Release",description:"All Apache projects are required to follow the Apache Release Policy. This guide is intended to help you understand the policy and how to re [...]
\ No newline at end of file
diff --git a/assets/js/5aeeabc8.3e63b6c5.js b/assets/js/5aeeabc8.3e63b6c5.js
new file mode 100644
index 00000000..80d78792
--- /dev/null
+++ b/assets/js/5aeeabc8.3e63b6c5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5491],{55478:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>i,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var o=t(43010),r=t(90887);const s={slug:"/development"},i="Overview",l={id:"development/overview",title:"Overview",description:"Frontend",source:"@site/docs/development/overview.md",sourceDirName:"development",slug:"/development",permalink:"/docs/development",draft:!1,unlisted:!1,editUrl:" [...]
\ No newline at end of file
diff --git a/assets/js/5b5f4945.67fb97ee.js b/assets/js/5b5f4945.67fb97ee.js
new file mode 100644
index 00000000..7c9a24e9
--- /dev/null
+++ b/assets/js/5b5f4945.67fb97ee.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5253],{13769:(s,t,e)=>{e.r(t),e.d(t,{assets:()=>r,contentTitle:()=>o,default:()=>l,frontMatter:()=>a,metadata:()=>u,toc:()=>c});var n=e(43010),i=e(90887);const a={slug:"/questions"},o="Questions",u={id:"guides/questions",title:"Questions",description:"Question status",source:"@site/docs/guides/questions.md",sourceDirName:"guides",slug:"/questions",permalink:"/docs/questions",draft:!1,unlisted:!1,editUrl:"https://gi [...]
\ No newline at end of file
diff --git a/assets/js/5b5f4945.cab754e8.js b/assets/js/5b5f4945.cab754e8.js
deleted file mode 100644
index eccdd15b..00000000
--- a/assets/js/5b5f4945.cab754e8.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5253],{13769:(s,t,e)=>{e.r(t),e.d(t,{assets:()=>r,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>u,toc:()=>c});var n=e(43010),a=e(90887);const i={slug:"/questions"},o="Questions",u={id:"guides/questions",title:"Questions",description:"Question status",source:"@site/docs/guides/questions.md",sourceDirName:"guides",slug:"/questions",permalink:"/docs/questions",draft:!1,unlisted:!1,editUrl:"https://gi [...]
\ No newline at end of file
diff --git a/assets/js/68eaa3f5.1e5e25f6.js b/assets/js/68eaa3f5.1e5e25f6.js
deleted file mode 100644
index b2f586d2..00000000
--- a/assets/js/68eaa3f5.1e5e25f6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3362],{83895:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var n=a(43010),r=a(90887),s=a(71981),o=a(71401);const l={slug:"/upgrade"},u="Upgrade",i={id:"getting-started/upgrade",title:"Upgrade",description:"We recommend that you back up database and configuration files before upgrading. Generally, we guarantee that the upgrade does not affect the e [...]
\ No newline at end of file
diff --git a/assets/js/68eaa3f5.b48f3a8a.js b/assets/js/68eaa3f5.b48f3a8a.js
new file mode 100644
index 00000000..75c27816
--- /dev/null
+++ b/assets/js/68eaa3f5.b48f3a8a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3362],{83895:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>d});var n=a(43010),r=a(90887),s=a(71981),o=a(71401);const l={slug:"/upgrade"},u="Upgrade",i={id:"getting-started/upgrade",title:"Upgrade",description:"We recommend that you back up database and configuration files before upgrading. Generally, we guarantee that the upgrade does not affect the e [...]
\ No newline at end of file
diff --git a/assets/js/692c6f9f.a94cfe2a.js b/assets/js/692c6f9f.a94cfe2a.js
deleted file mode 100644
index 8ae260f3..00000000
--- a/assets/js/692c6f9f.a94cfe2a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3483],{56842:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>c});var o=t(43010),r=t(90887);const s={slug:"/development"},l="Development",i={id:"contributing/development",title:"Development",description:"Frontend",source:"@site/community/contributing/development.md",sourceDirName:"contributing",slug:"/development",permalink:"/community/development",draft [...]
\ No newline at end of file
diff --git a/assets/js/6f494215.012af927.js b/assets/js/6f494215.012af927.js
new file mode 100644
index 00000000..730b153a
--- /dev/null
+++ b/assets/js/6f494215.012af927.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[8773],{93928:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var a=t(43010),o=t(90887);const i={slug:"/api"},c="API Document",s={id:"development/api",title:"API Document",description:"Apache Answer using swagger to generate API document automatically. Swagger can display the API document in a friendly way, and can also provide a convenient way to te [...]
\ No newline at end of file
diff --git a/assets/js/6f494215.66bfe840.js b/assets/js/6f494215.66bfe840.js
deleted file mode 100644
index 17ad21e8..00000000
--- a/assets/js/6f494215.66bfe840.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[8773],{93928:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var a=t(43010),o=t(90887);const i={slug:"/api"},c="API Document",s={id:"development/api",title:"API Document",description:"Apache Answer using swagger to generate API document automatically. Swagger can display the API document in a friendly way, and can also provide a convenient way to te [...]
\ No newline at end of file
diff --git a/assets/js/6fd9b8bb.dc18b319.js b/assets/js/6fd9b8bb.dc18b319.js
new file mode 100644
index 00000000..30664740
--- /dev/null
+++ b/assets/js/6fd9b8bb.dc18b319.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5498],{43875:(d,t,e)=>{e.r(t),e.d(t,{assets:()=>c,contentTitle:()=>n,default:()=>h,frontMatter:()=>r,metadata:()=>l,toc:()=>x});var s=e(43010),i=e(90887);const r={slug:"/database"},n="Database",l={id:"development/database",title:"Database",description:"Different databases have different data types. The following table presumes use of mysql/mariadb as an example.",source:"@site/docs/development/database.md",sourceDi [...]
\ No newline at end of file
diff --git a/assets/js/6fd9b8bb.f6e1f73b.js b/assets/js/6fd9b8bb.f6e1f73b.js
deleted file mode 100644
index 156a97ad..00000000
--- a/assets/js/6fd9b8bb.f6e1f73b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5498],{43875:(d,t,e)=>{e.r(t),e.d(t,{assets:()=>l,contentTitle:()=>n,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>x});var s=e(43010),i=e(90887);const r={slug:"/database"},n="Database",c={id:"development/database",title:"Database",description:"Different databases have different data types. The following table presumes use of mysql/mariadb as an example.",source:"@site/docs/development/database.md",sourceDi [...]
\ No newline at end of file
diff --git a/assets/js/72a4391e.2ece4e10.js b/assets/js/72a4391e.2ece4e10.js
new file mode 100644
index 00000000..da0109c4
--- /dev/null
+++ b/assets/js/72a4391e.2ece4e10.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5527],{14986:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>r,contentTitle:()=>a,default:()=>h,frontMatter:()=>d,metadata:()=>c,toc:()=>t});var l=i(43010),s=i(90887);const d={slug:"/command-line"},a="Command Line",c={id:"getting-started/command-line",title:"Command Line",description:"Apache Answer binary support some command-line options",source:"@site/docs/getting-started/command-line.md",sourceDirName:"getting-started",slug: [...]
\ No newline at end of file
diff --git a/assets/js/72a4391e.c716bad8.js b/assets/js/72a4391e.c716bad8.js
deleted file mode 100644
index 19fcad2d..00000000
--- a/assets/js/72a4391e.c716bad8.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5527],{14986:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>r,contentTitle:()=>a,default:()=>h,frontMatter:()=>d,metadata:()=>c,toc:()=>t});var l=i(43010),s=i(90887);const d={slug:"/command-line"},a="Command Line",c={id:"getting-started/command-line",title:"Command Line",description:"Apache Answer binary support some command-line options",source:"@site/docs/getting-started/command-line.md",sourceDirName:"getting-started",slug: [...]
\ No newline at end of file
diff --git a/assets/js/872d4ab4.38ab9c6d.js b/assets/js/872d4ab4.38ab9c6d.js
deleted file mode 100644
index 3b71e88f..00000000
--- a/assets/js/872d4ab4.38ab9c6d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4759],{68581:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var n=t(43010),i=t(90887);const r={slug:"/issues"},d="Issues",o={id:"contributing/issues",title:"Issues",description:"There are some repos in the Apache Answer project, you can raise your issue for different repos.",source:"@site/community/contributing/issues.md",sourceDirName:"contributin [...]
\ No newline at end of file
diff --git a/assets/js/872d4ab4.fa69a11c.js b/assets/js/872d4ab4.fa69a11c.js
new file mode 100644
index 00000000..ea599a68
--- /dev/null
+++ b/assets/js/872d4ab4.fa69a11c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4759],{68581:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var i=t(43010),n=t(90887);const r={slug:"/issues"},d="Issues",o={id:"contributing/issues",title:"Issues",description:"There are some repos in the Apache Answer project, you can raise your issue for different repos.",source:"@site/community/contributing/issues.md",sourceDirName:"contributin [...]
\ No newline at end of file
diff --git a/assets/js/8a3109ec.f5f58b2d.js b/assets/js/8a3109ec.f5f58b2d.js
new file mode 100644
index 00000000..f85da08b
--- /dev/null
+++ b/assets/js/8a3109ec.f5f58b2d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4531],{76436:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>l,metadata:()=>r,toc:()=>c});var i=t(43010),o=t(90887);const l={slug:"/development/plugins/plugin-translation"},s="Plugin Translation",r={id:"development/plugins/plugin-translation",title:"Plugin Translation",description:"Since answer supports multiple languages, the plugin also needs to support multiple languages.",s [...]
\ No newline at end of file
diff --git a/assets/js/935f2afb.34a3900a.js b/assets/js/935f2afb.34a3900a.js
deleted file mode 100644
index 16447159..00000000
--- a/assets/js/935f2afb.34a3900a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","label":"Introduction","href":"/docs/","docId":"introduction","unlisted":false},{"type":"category","label":"Getting Started","collapsed":false,"items":[{"type":"link","label":"Installation","hr [...]
\ No newline at end of file
diff --git a/assets/js/935f2afb.bac4eae3.js b/assets/js/935f2afb.bac4eae3.js
new file mode 100644
index 00000000..87ae6034
--- /dev/null
+++ b/assets/js/935f2afb.bac4eae3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","label":"Introduction","href":"/docs/","docId":"introduction","unlisted":false},{"type":"category","label":"Getting Started","collapsed":false,"items":[{"type":"link","label":"Installation","hr [...]
\ No newline at end of file
diff --git a/assets/js/977e6cb2.0bce323c.js b/assets/js/977e6cb2.0bce323c.js
deleted file mode 100644
index 5234fae7..00000000
--- a/assets/js/977e6cb2.0bce323c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3412],{16110:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var n=s(43010),i=s(90887);const r={slug:"/settings"},o="Settings",a={id:"guides/settings",title:"Settings",description:"TODO",source:"@site/docs/guides/settings.md",sourceDirName:"guides",slug:"/settings",permalink:"/docs/settings",draft:!1,unlisted:!1,editUrl:"https://github.com/apache/in [...]
\ No newline at end of file
diff --git a/assets/js/977e6cb2.2c243c4e.js b/assets/js/977e6cb2.2c243c4e.js
new file mode 100644
index 00000000..879f0b7d
--- /dev/null
+++ b/assets/js/977e6cb2.2c243c4e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3412],{16110:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(43010),i=n(90887);const r={slug:"/settings"},o="Settings",a={id:"guides/settings",title:"Settings",description:"TODO",source:"@site/docs/guides/settings.md",sourceDirName:"guides",slug:"/settings",permalink:"/docs/settings",draft:!1,unlisted:!1,editUrl:"https://github.com/apache/in [...]
\ No newline at end of file
diff --git a/assets/js/a09c2993.38c29059.js b/assets/js/a09c2993.38c29059.js
deleted file mode 100644
index 5dafc504..00000000
--- a/assets/js/a09c2993.38c29059.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4128],{90449:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var i=t(43010),s=t(90887);const r={slug:"/"},o="Introduction",a={id:"introduction",title:"Introduction",description:"Apache Answer helps you to build a community between your users and your team. It's a place where you can share your knowledge and help your users to solve their problems.", [...]
\ No newline at end of file
diff --git a/assets/js/a09c2993.7f46c57d.js b/assets/js/a09c2993.7f46c57d.js
new file mode 100644
index 00000000..7540a95f
--- /dev/null
+++ b/assets/js/a09c2993.7f46c57d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4128],{90449:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var i=t(43010),s=t(90887);const r={slug:"/"},o="Introduction",a={id:"introduction",title:"Introduction",description:"Apache Answer helps you to build a community between your users and your team. It's a place where you can share your knowledge and help your users to solve their problems.", [...]
\ No newline at end of file
diff --git a/assets/js/a4adfb7f.7f0bbe11.js b/assets/js/a4adfb7f.7f0bbe11.js
deleted file mode 100644
index 2127eb4b..00000000
--- a/assets/js/a4adfb7f.7f0bbe11.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1508],{65457:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>u,contentTitle:()=>r,default:()=>p,frontMatter:()=>l,metadata:()=>s,toc:()=>c});var t=i(43010),o=i(90887);const l={sidebar_label:"Plugin Configuration Schema",slug:"/plugins/plugin-config"},r="Plugin Configuration Schema",s={id:"contributing/plugins/plugin-config",title:"Plugin Configuration Schema",description:"Feature",source:"@site/community/contributing/plugins/pl [...]
\ No newline at end of file
diff --git a/assets/js/a5eff934.d6627d3c.js b/assets/js/a5eff934.d6627d3c.js
deleted file mode 100644
index 12cbe51e..00000000
--- a/assets/js/a5eff934.d6627d3c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1134],{55669:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>d});var n=s(43010),a=s(90887);const r={slug:"/flags"},o="Flags",i={id:"guides/flags",title:"Flags",description:"User can flag the spam post.",source:"@site/docs/guides/flags.md",sourceDirName:"guides",slug:"/flags",permalink:"/docs/flags",draft:!1,unlisted:!1,editUrl:"https://github.com/apache [...]
\ No newline at end of file
diff --git a/assets/js/a5eff934.e87fac74.js b/assets/js/a5eff934.e87fac74.js
new file mode 100644
index 00000000..6fd52cdd
--- /dev/null
+++ b/assets/js/a5eff934.e87fac74.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1134],{55669:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>l});var n=s(43010),a=s(90887);const r={slug:"/flags"},o="Flags",i={id:"guides/flags",title:"Flags",description:"User can flag the spam post.",source:"@site/docs/guides/flags.md",sourceDirName:"guides",slug:"/flags",permalink:"/docs/flags",draft:!1,unlisted:!1,editUrl:"https://github.com/apache [...]
\ No newline at end of file
diff --git a/assets/js/a98c1148.665c7211.js b/assets/js/a98c1148.665c7211.js
deleted file mode 100644
index 2e324f94..00000000
--- a/assets/js/a98c1148.665c7211.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3610],{38425:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>d,contentTitle:()=>a,default:()=>m,frontMatter:()=>s,metadata:()=>i,toc:()=>c});var o=n(43010),r=n(90887);const s={slug:"/moderation"},a="Moderation",i={id:"guides/moderation",title:"Moderation",description:"TODO",source:"@site/docs/guides/moderation.md",sourceDirName:"guides",slug:"/moderation",permalink:"/docs/moderation",draft:!1,unlisted:!1,editUrl:"https://github [...]
\ No newline at end of file
diff --git a/assets/js/a98c1148.a7aa6db5.js b/assets/js/a98c1148.a7aa6db5.js
new file mode 100644
index 00000000..5dd7f91f
--- /dev/null
+++ b/assets/js/a98c1148.a7aa6db5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3610],{38425:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>d,contentTitle:()=>a,default:()=>m,frontMatter:()=>s,metadata:()=>i,toc:()=>c});var o=n(43010),r=n(90887);const s={slug:"/moderation"},a="Moderation",i={id:"guides/moderation",title:"Moderation",description:"TODO",source:"@site/docs/guides/moderation.md",sourceDirName:"guides",slug:"/moderation",permalink:"/docs/moderation",draft:!1,unlisted:!1,editUrl:"https://github [...]
\ No newline at end of file
diff --git a/assets/js/b2b494f3.7023b779.js b/assets/js/b2b494f3.7023b779.js
deleted file mode 100644
index 1bb90d77..00000000
--- a/assets/js/b2b494f3.7023b779.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6109],{21572:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>n,metadata:()=>r,toc:()=>o});var h=s(43010),i=s(90887);const n={slug:"/notice",sidebar_label:"Notice"},c="Open-Source Software Notice",r={id:"notice",title:"Open-Source Software Notice",description:"The project is built on and with the aid of the following open source projects. Credits are given to these projects.",so [...]
\ No newline at end of file
diff --git a/assets/js/b2b494f3.8b9e507c.js b/assets/js/b2b494f3.8b9e507c.js
new file mode 100644
index 00000000..305ff074
--- /dev/null
+++ b/assets/js/b2b494f3.8b9e507c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6109],{21572:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>n,metadata:()=>r,toc:()=>o});var h=s(43010),i=s(90887);const n={slug:"/notice",sidebar_label:"Notice"},c="Open-Source Software Notice",r={id:"notice",title:"Open-Source Software Notice",description:"The project is built on and with the aid of the following open source projects. Credits are given to these projects.",so [...]
\ No newline at end of file
diff --git a/assets/js/b2f554cd.b887b74b.js b/assets/js/b2f554cd.b887b74b.js
deleted file mode 100644
index 81bd485c..00000000
--- a/assets/js/b2f554cd.b887b74b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1477],{30010:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2024/06/20/how-to-search-like-a-pro-in-answer","metadata":{"permalink":"/blog/2024/06/20/how-to-search-like-a-pro-in-answer","editUrl":"https://github.com/apache/incubator-answer-website/edit/main/blog/2024-06-20-how-to-search-like-a-pro-in-answer/index.md","source":"@site/blog/2024-06-20-how-to-search-like-a-pro-in-answer/index.md","title":"How to Search [...]
\ No newline at end of file
diff --git a/assets/js/b2f554cd.e87df29d.js b/assets/js/b2f554cd.e87df29d.js
new file mode 100644
index 00000000..e599f761
--- /dev/null
+++ b/assets/js/b2f554cd.e87df29d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1477],{30010:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2024/06/20/how-to-search-like-a-pro-in-answer","metadata":{"permalink":"/blog/2024/06/20/how-to-search-like-a-pro-in-answer","editUrl":"https://github.com/apache/incubator-answer-website/edit/main/blog/2024-06-20-how-to-search-like-a-pro-in-answer/index.md","source":"@site/blog/2024-06-20-how-to-search-like-a-pro-in-answer/index.md","title":"How to Search [...]
\ No newline at end of file
diff --git a/assets/js/b7a6a582.73d6a31e.js b/assets/js/b7a6a582.73d6a31e.js
new file mode 100644
index 00000000..b9d3b9ab
--- /dev/null
+++ b/assets/js/b7a6a582.73d6a31e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2808],{46750:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>h});var o=n(43010),s=n(90887);const r={title:"First Contribution? Come to Answer.",authors:["Anne"],category:"Community",featured:!0,image:"2024-01-25-cover@4x.png",description:"Ready to leave your mark on the open-source world? Come join the welcoming Apache Answer community!"},a=void 0,i={pe [...]
\ No newline at end of file
diff --git a/assets/js/b7a6a582.8879c938.js b/assets/js/b7a6a582.8879c938.js
deleted file mode 100644
index 7cb44a04..00000000
--- a/assets/js/b7a6a582.8879c938.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2808],{46750:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>r,metadata:()=>i,toc:()=>h});var o=n(43010),s=n(90887);const r={title:"First Contribution? Come to Answer.",authors:["Anne"],category:"Community",featured:!0,image:"2024-01-25-cover@4x.png",description:"Ready to leave your mark on the open-source world? Come join the welcoming Apache Answer community!"},a=void 0,i={pe [...]
\ No newline at end of file
diff --git a/assets/js/bb350c59.6bd4de4c.js b/assets/js/bb350c59.6bd4de4c.js
deleted file mode 100644
index 820e63d3..00000000
--- a/assets/js/bb350c59.6bd4de4c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4517],{15002:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>d});var t=i(43010),s=i(90887);const a={slug:"/plugins"},r="Using Plugins",l={id:"guides/plugins",title:"Using Plugins",description:"When we need to do some extensions to Apache Answer's functionality, for example, OAuth login, we design a way to use plugins to implement these functions.",sourc [...]
\ No newline at end of file
diff --git a/assets/js/c1cb8fca.8e9e71bf.js b/assets/js/c1cb8fca.8e9e71bf.js
new file mode 100644
index 00000000..5f73c3e1
--- /dev/null
+++ b/assets/js/c1cb8fca.8e9e71bf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7630],{25974:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>n,default:()=>j,frontMatter:()=>i,metadata:()=>l,toc:()=>h});var d=s(43010),r=s(90887);const i={slug:"/permission"},n="Permission",l={id:"guides/permission",title:"Permission",description:"Privileges",source:"@site/docs/guides/permission.md",sourceDirName:"guides",slug:"/permission",permalink:"/docs/permission",draft:!1,unlisted:!1,editUrl:"https:// [...]
\ No newline at end of file
diff --git a/assets/js/c1cb8fca.e6cbf5e4.js b/assets/js/c1cb8fca.e6cbf5e4.js
deleted file mode 100644
index 4c07b800..00000000
--- a/assets/js/c1cb8fca.e6cbf5e4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7630],{25974:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>n,default:()=>j,frontMatter:()=>i,metadata:()=>l,toc:()=>h});var d=s(43010),r=s(90887);const i={slug:"/permission"},n="Permission",l={id:"guides/permission",title:"Permission",description:"Privileges",source:"@site/docs/guides/permission.md",sourceDirName:"guides",slug:"/permission",permalink:"/docs/permission",draft:!1,unlisted:!1,editUrl:"https:// [...]
\ No newline at end of file
diff --git a/assets/js/d7ef3cd8.8a67078e.js b/assets/js/d7ef3cd8.8a67078e.js
deleted file mode 100644
index ffe5cf1d..00000000
--- a/assets/js/d7ef3cd8.8a67078e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7944],{1430:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var o=t(43010),i=t(90887);const s={sidebar_label:"Blog Post",slug:"/blog-post"},r="Contribute a Blog Post",l={id:"contributing/blog-post",title:"Contribute a Blog Post",description:"Blogs are one of the easiest ways to get involved in Apache Answer. It is also a great way to share your know [...]
\ No newline at end of file
diff --git a/assets/js/d7ef3cd8.93b6895c.js b/assets/js/d7ef3cd8.93b6895c.js
new file mode 100644
index 00000000..85008def
--- /dev/null
+++ b/assets/js/d7ef3cd8.93b6895c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7944],{1430:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var o=t(43010),i=t(90887);const s={sidebar_label:"Blog Post",slug:"/blog-post"},r="Contribute a Blog Post",l={id:"contributing/blog-post",title:"Contribute a Blog Post",description:"Blogs are one of the easiest ways to get involved in Apache Answer. It is also a great way to share your know [...]
\ No newline at end of file
diff --git a/assets/js/da6654f2.75827c5d.js b/assets/js/da6654f2.75827c5d.js
deleted file mode 100644
index 1c65ddab..00000000
--- a/assets/js/da6654f2.75827c5d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3886],{33758:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var i=n(43010),s=n(90887);const r={slug:"/pull-request"},o="Pull Request",a={id:"contributing/pull-request",title:"Pull Request",description:"We appreciate you taking the time to contribute! Before submitting a pull request, we ask that you please create an issue that explains the bug or f [...]
\ No newline at end of file
diff --git a/assets/js/da6654f2.dfdc939a.js b/assets/js/da6654f2.dfdc939a.js
new file mode 100644
index 00000000..2dd1d817
--- /dev/null
+++ b/assets/js/da6654f2.dfdc939a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3886],{33758:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var i=n(43010),s=n(90887);const r={slug:"/pull-request"},o="Pull Request",a={id:"contributing/pull-request",title:"Pull Request",description:"We appreciate you taking the time to contribute! Before submitting a pull request, we ask that you please create an issue that explains the bug or f [...]
\ No newline at end of file
diff --git a/assets/js/dc8b965f.353367be.js b/assets/js/dc8b965f.353367be.js
deleted file mode 100644
index 6a2ab3d6..00000000
--- a/assets/js/dc8b965f.353367be.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2441],{89725:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var s=n(43010),r=n(90887);const i={slug:"/review"},o="Review",a={id:"guides/review",title:"Review",description:"TODO",source:"@site/docs/guides/review.md",sourceDirName:"guides",slug:"/review",permalink:"/docs/review",draft:!1,unlisted:!1,editUrl:"https://github.com/apache/incubator-answer [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/dc8b965f.c7d88dce.js b/assets/js/dc8b965f.8af9f35f.js
similarity index 67%
rename from zh-CN/assets/js/dc8b965f.c7d88dce.js
rename to assets/js/dc8b965f.8af9f35f.js
index fa37c396..a3cb0f6d 100644
--- a/zh-CN/assets/js/dc8b965f.c7d88dce.js
+++ b/assets/js/dc8b965f.8af9f35f.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2441],{89725:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=n(43010),r=n(90887);const i={slug:"/review"},o="Review",c={id:"guides/review",title:"Review",description:"TODO",source:"@site/docs/guides/review.md",sourceDirName:"guides",slug:"/review",permalink:"/zh-CN/docs/review",draft:!1,unlisted:!1,editUrl:"https://crowdin.com/project/answer-w [...]
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2441],{89725:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=n(43010),r=n(90887);const i={slug:"/review"},o="Review",c={id:"guides/review",title:"Review",description:"TODO",source:"@site/docs/guides/review.md",sourceDirName:"guides",slug:"/review",permalink:"/docs/review",draft:!1,unlisted:!1,editUrl:"https://github.com/apache/incubator-answer [...]
\ No newline at end of file
diff --git a/assets/js/e438ab2a.4000c92b.js b/assets/js/e438ab2a.4000c92b.js
new file mode 100644
index 00000000..07e21db1
--- /dev/null
+++ b/assets/js/e438ab2a.4000c92b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9617],{95508:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>c});var s=n(43010),i=n(90887);const r={slug:"/reputation"},o="Reputation",d={id:"guides/reputation",title:"Reputation",description:"Reputation used to automate the management of community ecology.",source:"@site/docs/guides/reputation.md",sourceDirName:"guides",slug:"/reputation",permalink:"/d [...]
\ No newline at end of file
diff --git a/assets/js/e438ab2a.c6047e9d.js b/assets/js/e438ab2a.c6047e9d.js
deleted file mode 100644
index c3e4b6f5..00000000
--- a/assets/js/e438ab2a.c6047e9d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9617],{95508:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>c});var s=n(43010),i=n(90887);const r={slug:"/reputation"},o="Reputation",d={id:"guides/reputation",title:"Reputation",description:"Reputation used to automate the management of community ecology.",source:"@site/docs/guides/reputation.md",sourceDirName:"guides",slug:"/reputation",permalink:"/d [...]
\ No newline at end of file
diff --git a/assets/js/e4ae456e.77bec96f.js b/assets/js/e4ae456e.77bec96f.js
deleted file mode 100644
index 696d0540..00000000
--- a/assets/js/e4ae456e.77bec96f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7073],{92990:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>a,contentTitle:()=>r,default:()=>d,frontMatter:()=>l,metadata:()=>s,toc:()=>c});var i=t(43010),o=t(90887);const l={slug:"/plugins/plugin-translation"},r="Plugin Translation",s={id:"contributing/plugins/plugin-translation",title:"Plugin Translation",description:"Since answer supports multiple languages, the plugin also needs to support multiple languages.",source:"@sit [...]
\ No newline at end of file
diff --git a/assets/js/eafd45de.cc9a51f9.js b/assets/js/eafd45de.cc9a51f9.js
deleted file mode 100644
index 894aa78a..00000000
--- a/assets/js/eafd45de.cc9a51f9.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6714],{54972:(n,t,e)=>{e.r(t),e.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var r=e(43010),o=e(90887);const i={slug:"/translation"},a="Translation",s={id:"contributing/translation",title:"Translation",description:"Our project is connected to crowdin for translation; we recommend contributing translations through crowdin.",source:"@site/community/contributing/trans [...]
\ No newline at end of file
diff --git a/assets/js/eafd45de.d7433571.js b/assets/js/eafd45de.d7433571.js
new file mode 100644
index 00000000..b49d4b92
--- /dev/null
+++ b/assets/js/eafd45de.d7433571.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6714],{54972:(n,t,e)=>{e.r(t),e.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var r=e(43010),o=e(90887);const i={slug:"/translation"},s="Translation",a={id:"contributing/translation",title:"Translation",description:"Our project is connected to crowdin for translation; we recommend contributing translations through crowdin.",source:"@site/community/contributing/trans [...]
\ No newline at end of file
diff --git a/assets/js/f493f8eb.157ca32a.js b/assets/js/f493f8eb.157ca32a.js
deleted file mode 100644
index 5f2df734..00000000
--- a/assets/js/f493f8eb.157ca32a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3600],{27150:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>f,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var a=n(43010),i=n(90887);const o={slug:"/configfile"},r="Config File",c={id:"getting-started/configfile",title:"Config File",description:"We use yaml configuration file. It will be created automatically after answer init command. The default path is /data/conf/config.yaml",source:"@site/d [...]
\ No newline at end of file
diff --git a/assets/js/f493f8eb.b0ec78f1.js b/assets/js/f493f8eb.b0ec78f1.js
new file mode 100644
index 00000000..c5322746
--- /dev/null
+++ b/assets/js/f493f8eb.b0ec78f1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3600],{27150:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>r,default:()=>f,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var a=n(43010),i=n(90887);const o={slug:"/configfile"},r="Config File",c={id:"getting-started/configfile",title:"Config File",description:"We use yaml configuration file. It will be created automatically after answer init command. The default path is /data/conf/config.yaml",source:"@site/d [...]
\ No newline at end of file
diff --git a/assets/js/f8a2828b.5d49e894.js b/assets/js/f8a2828b.5d49e894.js
deleted file mode 100644
index 28426373..00000000
--- a/assets/js/f8a2828b.5d49e894.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5297],{91569:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>i,toc:()=>d});var n=s(43010),a=s(90887);const r={slug:"/tags"},o="Tags",i={id:"guides/tags",title:"Tags",description:"TODO",source:"@site/docs/guides/tags.md",sourceDirName:"guides",slug:"/tags",permalink:"/docs/tags",draft:!1,unlisted:!1,editUrl:"https://github.com/apache/incubator-answer-website/edit/ [...]
\ No newline at end of file
diff --git a/assets/js/f8a2828b.a4c7e460.js b/assets/js/f8a2828b.a4c7e460.js
new file mode 100644
index 00000000..18864d73
--- /dev/null
+++ b/assets/js/f8a2828b.a4c7e460.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5297],{91569:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>r,metadata:()=>i,toc:()=>d});var n=s(43010),a=s(90887);const r={slug:"/tags"},o="Tags",i={id:"guides/tags",title:"Tags",description:"TODO",source:"@site/docs/guides/tags.md",sourceDirName:"guides",slug:"/tags",permalink:"/docs/tags",draft:!1,unlisted:!1,editUrl:"https://github.com/apache/incubator-answer-website/edit/ [...]
\ No newline at end of file
diff --git a/assets/js/fd15fd1f.fdf76e00.js b/assets/js/fd15fd1f.fdf76e00.js
new file mode 100644
index 00000000..819d3bb7
--- /dev/null
+++ b/assets/js/fd15fd1f.fdf76e00.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3587],{34343:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>p,contentTitle:()=>r,default:()=>c,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var t=i(43010),o=i(90887);const l={sidebar_label:"Plugin Configuration Schema",slug:"/development/plugins/plugin-config"},r="Plugin Configuration Schema",s={id:"development/plugins/plugin-config",title:"Plugin Configuration Schema",description:"Feature",source:"@site/docs/development/plugi [...]
\ No newline at end of file
diff --git a/assets/js/main.196736e5.js b/assets/js/main.196736e5.js
deleted file mode 100644
index e7c305ac..00000000
--- a/assets/js/main.196736e5.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.196736e5.js.LICENSE.txt */
-(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[179],{94288:(e,t,n)=>{var r={"./":91884};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=94288},55679:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r,o,a,i,s=n(85170);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<argu [...]
\ No newline at end of file
diff --git a/assets/js/main.9dfefd95.js b/assets/js/main.9dfefd95.js
new file mode 100644
index 00000000..0bd285dc
--- /dev/null
+++ b/assets/js/main.9dfefd95.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.9dfefd95.js.LICENSE.txt */
+(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[179],{94288:(e,t,n)=>{var r={"./":91884};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=94288},55679:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r,o,a,i,s=n(85170);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<argu [...]
\ No newline at end of file
diff --git a/assets/js/main.196736e5.js.LICENSE.txt b/assets/js/main.9dfefd95.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.196736e5.js.LICENSE.txt
rename to assets/js/main.9dfefd95.js.LICENSE.txt
diff --git a/assets/js/runtime~main.2f64086d.js b/assets/js/runtime~main.2f64086d.js
deleted file mode 100644
index 910dc07d..00000000
--- a/assets/js/runtime~main.2f64086d.js
+++ /dev/null
@@ -1 +0,0 @@
-(()=>{"use strict";var e,a,d,f,b,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return c[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=c,r.c=t,e=[],r.O=(a,d,f,b)=>{if(!d){var c=1/0;for(i=0;i<e.length;i++){d=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<d.length;o++)(!1&b||c>=b)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,b<c&&(c=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}b=b| [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.ca5b1b3c.js b/assets/js/runtime~main.ca5b1b3c.js
new file mode 100644
index 00000000..61f6f0c6
--- /dev/null
+++ b/assets/js/runtime~main.ca5b1b3c.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,a,d,f,b,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return c[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=c,r.c=t,e=[],r.O=(a,d,f,b)=>{if(!d){var c=1/0;for(i=0;i<e.length;i++){d=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<d.length;o++)(!1&b||c>=b)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,b<c&&(c=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}b=b| [...]
\ No newline at end of file
diff --git a/blog/2023/05/11/answer-1.0.9-release/index.html b/blog/2023/05/11/answer-1.0.9-release/index.html
index f085ff4a..45a9fccd 100644
--- a/blog/2023/05/11/answer-1.0.9-release/index.html
+++ b/blog/2023/05/11/answer-1.0.9-release/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/05/12/what-is-q-and-a-platform-and-how-to-use-it/index.html b/blog/2023/05/12/what-is-q-and-a-platform-and-how-to-use-it/index.html
index 277db1de..38916ff7 100644
--- a/blog/2023/05/12/what-is-q-and-a-platform-and-how-to-use-it/index.html
+++ b/blog/2023/05/12/what-is-q-and-a-platform-and-how-to-use-it/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/05/16/how-to-use-answer-for-effective-knowledge-retention/index.html b/blog/2023/05/16/how-to-use-answer-for-effective-knowledge-retention/index.html
index 1bf57b1a..f13587dc 100644
--- a/blog/2023/05/16/how-to-use-answer-for-effective-knowledge-retention/index.html
+++ b/blog/2023/05/16/how-to-use-answer-for-effective-knowledge-retention/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/05/23/why-open-source-is-the-essence-of-answer/index.html b/blog/2023/05/23/why-open-source-is-the-essence-of-answer/index.html
index eb9221f7..e4055cfc 100644
--- a/blog/2023/05/23/why-open-source-is-the-essence-of-answer/index.html
+++ b/blog/2023/05/23/why-open-source-is-the-essence-of-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/05/30/everything-you-need-to-know-about-knowledge-base/index.html b/blog/2023/05/30/everything-you-need-to-know-about-knowledge-base/index.html
index 43d0ae96..c29a59e4 100644
--- a/blog/2023/05/30/everything-you-need-to-know-about-knowledge-base/index.html
+++ b/blog/2023/05/30/everything-you-need-to-know-about-knowledge-base/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/06/15/answer-1.1.0-release/index.html b/blog/2023/06/15/answer-1.1.0-release/index.html
index 0b9181ad..9f7078af 100644
--- a/blog/2023/06/15/answer-1.1.0-release/index.html
+++ b/blog/2023/06/15/answer-1.1.0-release/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/06/20/how-to-improve-knowledge-sharing-with-answer/index.html b/blog/2023/06/20/how-to-improve-knowledge-sharing-with-answer/index.html
index 01d3e81b..e36c0d5a 100644
--- a/blog/2023/06/20/how-to-improve-knowledge-sharing-with-answer/index.html
+++ b/blog/2023/06/20/how-to-improve-knowledge-sharing-with-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/06/29/everything-you-need-to-know-about-answer/index.html b/blog/2023/06/29/everything-you-need-to-know-about-answer/index.html
index d32d6e5d..85a2ec38 100644
--- a/blog/2023/06/29/everything-you-need-to-know-about-answer/index.html
+++ b/blog/2023/06/29/everything-you-need-to-know-about-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/07/05/how-to-build-a-help-center-with-your-users-and-answer/index.html b/blog/2023/07/05/how-to-build-a-help-center-with-your-users-and-answer/index.html
index 052c07c2..db903872 100644
--- a/blog/2023/07/05/how-to-build-a-help-center-with-your-users-and-answer/index.html
+++ b/blog/2023/07/05/how-to-build-a-help-center-with-your-users-and-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/07/11/the-what-why-using-tags-for-online-community/index.html b/blog/2023/07/11/the-what-why-using-tags-for-online-community/index.html
index 9dee4d3c..7bb0a0c1 100644
--- a/blog/2023/07/11/the-what-why-using-tags-for-online-community/index.html
+++ b/blog/2023/07/11/the-what-why-using-tags-for-online-community/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/07/19/how-to-utilize-reputation-and-privilege-in-online-community/index.html b/blog/2023/07/19/how-to-utilize-reputation-and-privilege-in-online-community/index.html
index 739ffa85..575e8ce5 100644
--- a/blog/2023/07/19/how-to-utilize-reputation-and-privilege-in-online-community/index.html
+++ b/blog/2023/07/19/how-to-utilize-reputation-and-privilege-in-online-community/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/07/22/why-the-answer-plugin-system-was-designed-this-way/index.html b/blog/2023/07/22/why-the-answer-plugin-system-was-designed-this-way/index.html
index 5616dd1b..5e24baf0 100644
--- a/blog/2023/07/22/why-the-answer-plugin-system-was-designed-this-way/index.html
+++ b/blog/2023/07/22/why-the-answer-plugin-system-was-designed-this-way/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/08/09/how-to-manage-content-system-efficiently-with-answer/index.html b/blog/2023/08/09/how-to-manage-content-system-efficiently-with-answer/index.html
index ce24bc93..d3bbba8f 100644
--- a/blog/2023/08/09/how-to-manage-content-system-efficiently-with-answer/index.html
+++ b/blog/2023/08/09/how-to-manage-content-system-efficiently-with-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/09/14/build-your-online-community-like-the-pros-with-answer/index.html b/blog/2023/09/14/build-your-online-community-like-the-pros-with-answer/index.html
index 9b759d98..42d2e1a1 100644
--- a/blog/2023/09/14/build-your-online-community-like-the-pros-with-answer/index.html
+++ b/blog/2023/09/14/build-your-online-community-like-the-pros-with-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/09/27/celebrate-answer-first-anniversary-with-hacktoberfest-2023/index.html b/blog/2023/09/27/celebrate-answer-first-anniversary-with-hacktoberfest-2023/index.html
index 394b2ec8..54d27d0f 100644
--- a/blog/2023/09/27/celebrate-answer-first-anniversary-with-hacktoberfest-2023/index.html
+++ b/blog/2023/09/27/celebrate-answer-first-anniversary-with-hacktoberfest-2023/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/10/24/answer-enters-apache-incubator/index.html b/blog/2023/10/24/answer-enters-apache-incubator/index.html
index 077b9e0e..42b60556 100644
--- a/blog/2023/10/24/answer-enters-apache-incubator/index.html
+++ b/blog/2023/10/24/answer-enters-apache-incubator/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/10/31/answer-turns-one-and-is-now-apache-answer/index.html b/blog/2023/10/31/answer-turns-one-and-is-now-apache-answer/index.html
index 5a0858e7..c7fd020d 100644
--- a/blog/2023/10/31/answer-turns-one-and-is-now-apache-answer/index.html
+++ b/blog/2023/10/31/answer-turns-one-and-is-now-apache-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/12/07/a-new-chapter-begins-answer-first-apache-release-launches/index.html b/blog/2023/12/07/a-new-chapter-begins-answer-first-apache-release-launches/index.html
index 6cc821c3..a15d7092 100644
--- a/blog/2023/12/07/a-new-chapter-begins-answer-first-apache-release-launches/index.html
+++ b/blog/2023/12/07/a-new-chapter-begins-answer-first-apache-release-launches/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2023/12/13/behind-the-scene-how-we-launched-the-first-apache-release/index.html b/blog/2023/12/13/behind-the-scene-how-we-launched-the-first-apache-release/index.html
index 75d04b69..abc00fb3 100644
--- a/blog/2023/12/13/behind-the-scene-how-we-launched-the-first-apache-release/index.html
+++ b/blog/2023/12/13/behind-the-scene-how-we-launched-the-first-apache-release/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2024/01/08/answer-1.2.1-ask-better-find-better/index.html b/blog/2024/01/08/answer-1.2.1-ask-better-find-better/index.html
index 0b4ea516..ebf13f2e 100644
--- a/blog/2024/01/08/answer-1.2.1-ask-better-find-better/index.html
+++ b/blog/2024/01/08/answer-1.2.1-ask-better-find-better/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2024/01/25/first-contribution-come-to-answer/index.html b/blog/2024/01/25/first-contribution-come-to-answer/index.html
index 19527611..a48e6f65 100644
--- a/blog/2024/01/25/first-contribution-come-to-answer/index.html
+++ b/blog/2024/01/25/first-contribution-come-to-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
@@ -21,7 +21,7 @@
<!-- --><p>We are a group of Q&A enthusiasts, and it’s lovely to deliver a product that we truly love. Answer is an open-source Q&A software aiming to help people find the right answers, while unleashing collective wisdom for every team.</p>
<!-- --><p>We’ve tagged different issues for novices and veterans to get hands on in the <!-- --><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer">repository</a>.<!-- --></p>
<!-- --><p><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" alt="Issues" src="/assets/images/GitHub Screenshot-a6cda825a99b476195c3bb415d3067c6.jpeg" width="1241" height="507" class="img_WevL"></a></p>
-<!-- --><p>We know how important it is to have well-written and complete documentation to guide you. The Contributing doc covers everything you need, from how to submit an <!-- --><a href="https://answer.apache.org/community/issues" target="_blank" rel="noopener noreferrer">issue</a>, to develop a <!-- --><a href="https://answer.apache.org/community/plugins" target="_blank" rel="noopener noreferrer">plugin</a>, and how to write a <!-- --><a href="https://answer.apache.org/community/blog- [...]
+<!-- --><p>We know how important it is to have well-written and complete documentation to guide you. The Contributing doc covers everything you need, from how to submit an <!-- --><a href="https://answer.apache.org/community/issues" target="_blank" rel="noopener noreferrer">issue</a>, to develop a <!-- --><a href="https://answer.apache.org/docs/development/plugins" target="_blank" rel="noopener noreferrer">plugin</a>, and how to write a <!-- --><a href="https://answer.apache.org/communit [...]
<!-- --><p><img decoding="async" loading="lazy" alt="Answer Docs" src="/assets/images/Docs Screenshot-331f2a047565f822498c2eea3d5df60c.png" width="1891" height="695" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="not-sure-answer-is-a-good-fit">Not Sure Answer is a Good Fit?<!-- --><a href="#not-sure-answer-is-a-good-fit" class="hash-link" aria-label="Direct link to Not Sure Answer is a Good Fit?" title="Direct link to Not Sure Answer is a Good Fit?"></a></h2>
<!-- --><p>We know it takes courage to take the first step into the open-source world, and knowing what are the options out there is a must. These are some useful resources for you to explore and filter the project that matches your expertise.</p>
diff --git a/blog/2024/01/26/deploy-answer-https/index.html b/blog/2024/01/26/deploy-answer-https/index.html
index d20d4174..9af6f2c8 100644
--- a/blog/2024/01/26/deploy-answer-https/index.html
+++ b/blog/2024/01/26/deploy-answer-https/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2024/02/04/must-read-notes-for-your-first-answer-contribution/index.html b/blog/2024/02/04/must-read-notes-for-your-first-answer-contribution/index.html
index ecb3f895..1bd94917 100644
--- a/blog/2024/02/04/must-read-notes-for-your-first-answer-contribution/index.html
+++ b/blog/2024/02/04/must-read-notes-for-your-first-answer-contribution/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2024/02/05/project-ideas-for-google-summer-of-code-2024/index.html b/blog/2024/02/05/project-ideas-for-google-summer-of-code-2024/index.html
index f955543e..879c6b46 100644
--- a/blog/2024/02/05/project-ideas-for-google-summer-of-code-2024/index.html
+++ b/blog/2024/02/05/project-ideas-for-google-summer-of-code-2024/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2024/02/20/answer-1.2.5-is-ready/index.html b/blog/2024/02/20/answer-1.2.5-is-ready/index.html
index 57704724..258d17dd 100644
--- a/blog/2024/02/20/answer-1.2.5-is-ready/index.html
+++ b/blog/2024/02/20/answer-1.2.5-is-ready/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2024/03/18/meet-our-release-manager-linkinstars/index.html b/blog/2024/03/18/meet-our-release-manager-linkinstars/index.html
index 5b41d997..89aa3896 100644
--- a/blog/2024/03/18/meet-our-release-manager-linkinstars/index.html
+++ b/blog/2024/03/18/meet-our-release-manager-linkinstars/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2024/04/26/what-is-new-in-apache-answer-1.3.0/index.html b/blog/2024/04/26/what-is-new-in-apache-answer-1.3.0/index.html
index fc2a3931..44f2a55e 100644
--- a/blog/2024/04/26/what-is-new-in-apache-answer-1.3.0/index.html
+++ b/blog/2024/04/26/what-is-new-in-apache-answer-1.3.0/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2024/05/09/answer-ospp-2024/index.html b/blog/2024/05/09/answer-ospp-2024/index.html
index a4acbce7..3eef5360 100644
--- a/blog/2024/05/09/answer-ospp-2024/index.html
+++ b/blog/2024/05/09/answer-ospp-2024/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2024/05/28/build-a-save-and-respectful-community-with-answer-1.3.1/index.html b/blog/2024/05/28/build-a-save-and-respectful-community-with-answer-1.3.1/index.html
index 5c7dc6e8..bde5532b 100644
--- a/blog/2024/05/28/build-a-save-and-respectful-community-with-answer-1.3.1/index.html
+++ b/blog/2024/05/28/build-a-save-and-respectful-community-with-answer-1.3.1/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2024/06/03/install-and-run-apache-answer-on-ubuntu-vps/index.html b/blog/2024/06/03/install-and-run-apache-answer-on-ubuntu-vps/index.html
index bff1c7de..d49900ba 100644
--- a/blog/2024/06/03/install-and-run-apache-answer-on-ubuntu-vps/index.html
+++ b/blog/2024/06/03/install-and-run-apache-answer-on-ubuntu-vps/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2024/06/05/apache-answer-joined-first-alc-hangzhou-meetup/index.html b/blog/2024/06/05/apache-answer-joined-first-alc-hangzhou-meetup/index.html
index f583c811..e4aae5b1 100644
--- a/blog/2024/06/05/apache-answer-joined-first-alc-hangzhou-meetup/index.html
+++ b/blog/2024/06/05/apache-answer-joined-first-alc-hangzhou-meetup/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/2024/06/20/how-to-search-like-a-pro-in-answer/index.html b/blog/2024/06/20/how-to-search-like-a-pro-in-answer/index.html
index 03fc2486..b7e13f4a 100644
--- a/blog/2024/06/20/how-to-search-like-a-pro-in-answer/index.html
+++ b/blog/2024/06/20/how-to-search-like-a-pro-in-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 5d628b23..f68cdf36 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/atom.xml b/blog/atom.xml
index 58d50409..9989df86 100644
--- a/blog/atom.xml
+++ b/blog/atom.xml
@@ -628,7 +628,7 @@ Bonus: RMB 8,000 (before tax)<!-- --><br>
<!-- --><p>We are a group of Q&A enthusiasts, and it’s lovely to deliver a product that we truly love. Answer is an open-source Q&A software aiming to help people find the right answers, while unleashing collective wisdom for every team.</p>
<!-- --><p>We’ve tagged different issues for novices and veterans to get hands on in the <!-- --><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer">repository</a>.<!-- --></p>
<!-- --><p><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" alt="Issues" src="https://answer.apache.org/assets/images/GitHub%20Screenshot-a6cda825a99b476195c3bb415d3067c6.jpeg" width="1241" height="507" class="img_WevL"></a></p>
-<!-- --><p>We know how important it is to have well-written and complete documentation to guide you. The Contributing doc covers everything you need, from how to submit an <!-- --><a href="https://answer.apache.org/community/issues" target="_blank" rel="noopener noreferrer">issue</a>, to develop a <!-- --><a href="https://answer.apache.org/community/plugins" target="_blank" rel="noopener noreferrer">plugin</a>, and how to write a <!-- --><a href="https://answer.apache.org/community/blog- [...]
+<!-- --><p>We know how important it is to have well-written and complete documentation to guide you. The Contributing doc covers everything you need, from how to submit an <!-- --><a href="https://answer.apache.org/community/issues" target="_blank" rel="noopener noreferrer">issue</a>, to develop a <!-- --><a href="https://answer.apache.org/docs/development/plugins" target="_blank" rel="noopener noreferrer">plugin</a>, and how to write a <!-- --><a href="https://answer.apache.org/communit [...]
<!-- --><p><img decoding="async" loading="lazy" alt="Answer Docs" src="https://answer.apache.org/assets/images/Docs%20Screenshot-331f2a047565f822498c2eea3d5df60c.png" width="1891" height="695" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="not-sure-answer-is-a-good-fit">Not Sure Answer is a Good Fit?<!-- --><a href="https://answer.apache.org/blog/2024/01/25/first-contribution-come-to-answer#not-sure-answer-is-a-good-fit" class="hash-link" aria-label="Direct link to Not Sure Answer is a Good Fit?" title="Direct link to Not Sure Answer is a Good Fit?"></a></h2>
<!-- --><p>We know it takes courage to take the first step into the open-source world, and knowing what are the options out there is a must. These are some useful resources for you to explore and filter the project that matches your expertise.</p>
diff --git a/blog/category/best-practice/index.html b/blog/category/best-practice/index.html
index b88a5036..aa3f399d 100644
--- a/blog/category/best-practice/index.html
+++ b/blog/category/best-practice/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/category/community/index.html b/blog/category/community/index.html
index fbca996a..14218905 100644
--- a/blog/category/community/index.html
+++ b/blog/category/community/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/category/insights/index.html b/blog/category/insights/index.html
index 809769dc..a37ea8dc 100644
--- a/blog/category/insights/index.html
+++ b/blog/category/insights/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/category/release/index.html b/blog/category/release/index.html
index b9378584..999115e1 100644
--- a/blog/category/release/index.html
+++ b/blog/category/release/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/category/tech/index.html b/blog/category/tech/index.html
index 5b45dc8b..a242f143 100644
--- a/blog/category/tech/index.html
+++ b/blog/category/tech/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/category/tutorials/index.html b/blog/category/tutorials/index.html
index d7a0327f..1c94e332 100644
--- a/blog/category/tutorials/index.html
+++ b/blog/category/tutorials/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/index.html b/blog/index.html
index e6ad222a..9e15afee 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/page/2/index.html b/blog/page/2/index.html
index fb2d9cf3..d9b16a16 100644
--- a/blog/page/2/index.html
+++ b/blog/page/2/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/rss.xml b/blog/rss.xml
index 5cf331aa..48feff90 100644
--- a/blog/rss.xml
+++ b/blog/rss.xml
@@ -589,7 +589,7 @@ Bonus: RMB 8,000 (before tax)<!-- --><br>
<!-- --><p>We are a group of Q&A enthusiasts, and it’s lovely to deliver a product that we truly love. Answer is an open-source Q&A software aiming to help people find the right answers, while unleashing collective wisdom for every team.</p>
<!-- --><p>We’ve tagged different issues for novices and veterans to get hands on in the <!-- --><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer">repository</a>.<!-- --></p>
<!-- --><p><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" alt="Issues" src="https://answer.apache.org/assets/images/GitHub%20Screenshot-a6cda825a99b476195c3bb415d3067c6.jpeg" width="1241" height="507" class="img_WevL"></a></p>
-<!-- --><p>We know how important it is to have well-written and complete documentation to guide you. The Contributing doc covers everything you need, from how to submit an <!-- --><a href="https://answer.apache.org/community/issues" target="_blank" rel="noopener noreferrer">issue</a>, to develop a <!-- --><a href="https://answer.apache.org/community/plugins" target="_blank" rel="noopener noreferrer">plugin</a>, and how to write a <!-- --><a href="https://answer.apache.org/community/blog- [...]
+<!-- --><p>We know how important it is to have well-written and complete documentation to guide you. The Contributing doc covers everything you need, from how to submit an <!-- --><a href="https://answer.apache.org/community/issues" target="_blank" rel="noopener noreferrer">issue</a>, to develop a <!-- --><a href="https://answer.apache.org/docs/development/plugins" target="_blank" rel="noopener noreferrer">plugin</a>, and how to write a <!-- --><a href="https://answer.apache.org/communit [...]
<!-- --><p><img decoding="async" loading="lazy" alt="Answer Docs" src="https://answer.apache.org/assets/images/Docs%20Screenshot-331f2a047565f822498c2eea3d5df60c.png" width="1891" height="695" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="not-sure-answer-is-a-good-fit">Not Sure Answer is a Good Fit?<!-- --><a href="https://answer.apache.org/blog/2024/01/25/first-contribution-come-to-answer#not-sure-answer-is-a-good-fit" class="hash-link" aria-label="Direct link to Not Sure Answer is a Good Fit?" title="Direct link to Not Sure Answer is a Good Fit?"></a></h2>
<!-- --><p>We know it takes courage to take the first step into the open-source world, and knowing what are the options out there is a must. These are some useful resources for you to explore and filter the project that matches your expertise.</p>
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 1e26bda1..fa39f410 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/blog/tags/tutorials/index.html b/blog/tags/tutorials/index.html
index 74b320b0..8fd04469 100644
--- a/blog/tags/tutorials/index.html
+++ b/blog/tags/tutorials/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/community/blog-post/index.html b/community/blog-post/index.html
index fb20e844..4e033628 100644
--- a/community/blog-post/index.html
+++ b/community/blog-post/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>Blogs are one of the easiest ways to <!-- --><a href="/community/contributing#get-involved">get involved</a> in Apache Answer. It is also a great way to share your knowledge and experience with others.<!-- --></p>
<!-- --><p>If you've used Apache Answer to build your own Q&A community, or if Apache Answer has helped you solve a problem, we'd love to hear your story. We also encourage you to share tips and tricks for using Apache Answer, or to write about how to contribute to the project.</p>
<!-- --><p>To get started, just read our blog guidelines and get writing!</p>
@@ -96,6 +96,6 @@
<!-- --></li>
<!-- --></ol>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="others">Others<!-- --><a href="#others" class="hash-link" aria-label="Direct link to Others" title="Direct link to Others"></a></h2>
-<!-- --><p>For code submitting, you may also need to learn <!-- --><a href="https://git-scm.com/" target="_blank" rel="noopener noreferrer">Git</a> and <!-- --><a href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork" target="_blank" rel="noopener noreferrer">Pull Request</a>.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-m [...]
+<!-- --><p>For code submitting, you may also need to learn <!-- --><a href="https://git-scm.com/" target="_blank" rel="noopener noreferrer">Git</a> and <!-- --><a href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork" target="_blank" rel="noopener noreferrer">Pull Request</a>.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-m [...]
</body>
</html>
\ No newline at end of file
diff --git a/community/contributing/index.html b/community/contributing/index.html
index 603b51e5..ebf3de8e 100644
--- a/community/contributing/index.html
+++ b/community/contributing/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>Thanks for your interest in contributing to Apache Answer, hopefully, this document makes the process for contributing clear.</p>
<!-- --><p>The <!-- --><a href="https://opensource.guide/" target="_blank" rel="noopener noreferrer">Open Source Guides</a> website has a collection of resources for individuals, communities, and companies who want to learn how to run and contribute to an open source project. Contributors and people new to open source alike will find the following guides especially useful:<!-- --></p>
<!-- --><ul>
@@ -50,7 +50,7 @@
<!-- --><h5 class="anchor anchorWithStickyNavbar_pwhL" id="develop-plugins">Develop plugins<!-- --><a href="#develop-plugins" class="hash-link" aria-label="Direct link to Develop plugins" title="Direct link to Develop plugins"></a></h5>
<!-- --><ul>
<!-- --><li>Extend the functionality of Apache Answer with plugins.</li>
-<!-- --><li>There are features that users are expecting, and you can claim or create your needs with <!-- --><a href="/community/plugins">develop and submit</a>.<!-- --></li>
+<!-- --><li>There are features that users are expecting, and you can claim or create your needs with <!-- --><a href="/docs/development/plugins">develop and submit</a>.<!-- --></li>
<!-- --></ul>
<!-- --><h5 class="anchor anchorWithStickyNavbar_pwhL" id="helping-with-version-releases">Helping with version releases<!-- --><a href="#helping-with-version-releases" class="hash-link" aria-label="Direct link to Helping with version releases" title="Direct link to Helping with version releases"></a></h5>
<!-- --><ul>
@@ -88,6 +88,6 @@
<!-- --><li>The <!-- --><code>main</code> branch corresponds to the <!-- --><strong>latest version</strong> of answer. If you're doing a <!-- --><strong>fix</strong> for the latest version, then select the main branch.<!-- --></li>
<!-- --><li>The <!-- --><code>dev</code> branch is for the <!-- --><strong>next version</strong>, so if you're working on a <!-- --><strong>new feature</strong>, checkout of the dev branch and PR for it.<!-- --></li>
<!-- --></ul>
-<!-- --><p>Normally, we mark milestones on an issue to keep track of which version the issue should be fixed in. So you can check which version you should commit to based on the milestone.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/contributing/contributing.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page [...]
+<!-- --><p>Normally, we mark milestones on an issue to keep track of which version the issue should be fixed in. So you can check which version you should commit to based on the milestone.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/contributing/contributing.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page [...]
</body>
</html>
\ No newline at end of file
diff --git a/community/development/index.html b/community/development/index.html
index 416112d8..be3f8f08 100644
--- a/community/development/index.html
+++ b/community/development/index.html
@@ -1,56 +1,11 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/development" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Development | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/community/develop [...]
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Answer RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Answer Atom Feed">
-
-
-
-<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="frontend">Frontend<!-- --><a href="#frontend" class="hash-link" aria-label="Direct link to Frontend" title="Direct link to Frontend"></a></h2>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="installation">Installation<!-- --><a href="#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation"></a></h3>
-<!-- --><ol>
-<!-- --><li>Ensure you have <!-- --><a href="https://nodejs.org/en" target="_blank" rel="noopener noreferrer">node</a> and <!-- --><a href="https://pnpm.io/installation" target="_blank" rel="noopener noreferrer">pnpm</a> installed.<!-- --></li>
-<!-- --><li>After cloning the repository, run the following command. This will install all dependencies as well as build all local packages.</li>
-<!-- --></ol>
-<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">cd</span><span class="token plain"> ./ui</span><br></span><span class="token-line" style="color:#393A34"><span clas [...]
-<!-- --><ol start="3">
-<!-- --><li>To start a development server, run <!-- --><code>pnpm start</code>. now, your browser should already open automatically, and autoload <!-- --><code>http://localhost:3000</code>. you can also manually visit it.<!-- --></li>
-<!-- --><li>To switch API, you can modify the <!-- --><code>ui/.env.development</code> file and then re-run pnpm start. If you're just using it yourself, we recommend creating a <!-- --><code>.env.development.local</code> file that defines the address of the api you're going to use.<!-- --></li>
-<!-- --></ol>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="code-conventions">Code conventions<!-- --><a href="#code-conventions" class="hash-link" aria-label="Direct link to Code conventions" title="Direct link to Code conventions"></a></h3>
-<!-- --><ul>
-<!-- --><li><strong>Most important: Look around.</strong> Match the style you see used in the rest of the project. This includes formatting, naming files, naming things in code, naming things in documentation, etc.<!-- --></li>
-<!-- --><li>We do have Prettier (a formatter) and ESLint (a syntax linter) to catch most stylistic problems. If you are working locally, you can run <!-- --><code>pnpm lint</code> and <!-- --><code>pnpm prettier</code> to fix most code formatting.<!-- --></li>
-<!-- --><li><strong>No runtime errors</strong> Before submitting the code, please ensure that there will be no errors when running locally. This will greatly reduce the workload of review.<!-- --></li>
-<!-- --></ul>
-<!-- --><details class="details_feHX alert alert--info details_rGhr" data-collapsed="true"><summary>frontend package structure</summary><div><div class="collapsibleContent_jTXV"><div><div class="codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-text codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393 [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend">Backend<!-- --><a href="#backend" class="hash-link" aria-label="Direct link to Backend" title="Direct link to Backend"></a></h2>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="installation-1">Installation<!-- --><a href="#installation-1" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation"></a></h3>
-<!-- --><ol>
-<!-- --><li>Ensure you have <!-- --><a href="https://go.dev/doc/install" target="_blank" rel="noopener noreferrer">golang</a> installed.<!-- --></li>
-<!-- --><li>After cloning the repository, run the following command for build.</li>
-<!-- --></ol>
-<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go mod download</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">go run cmd/answer/main [...]
-<!-- --><ol start="3">
-<!-- --><li>
-<!-- --><p>Visit <!-- --><code>http://localhost</code> to see the installation page and complete the installation.<!-- --></p>
-<!-- --></li>
-<!-- --><li>
-<!-- --><p>Run the following command to start the server.</p>
-<!-- --></li>
-<!-- --></ol>
-<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go run cmd/answer/main.go run -C ./answer-data</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="code-conventions-1">Code conventions<!-- --><a href="#code-conventions-1" class="hash-link" aria-label="Direct link to Code conventions" title="Direct link to Code conventions"></a></h3>
-<!-- --><p>We recommend that you follow <!-- --><a href="https://github.com/uber-go/guide" target="_blank" rel="noopener noreferrer">uber's Golang Guidelines</a> code style.<!-- --></p>
-<!-- --><details class="details_feHX alert alert--info details_rGhr" data-collapsed="true"><summary>backend package structure</summary><div><div class="collapsibleContent_jTXV"><div><div class="codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-text codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A [...]
-</body>
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/development">
+ <link rel="canonical" href="/docs/development" />
+ </head>
+ <script>
+ window.location.href = '/docs/development' + window.location.search + window.location.hash;
+ </script>
</html>
\ No newline at end of file
diff --git a/community/how-to-release/index.html b/community/how-to-release/index.html
index 8b0a76b3..64ecd566 100644
--- a/community/how-to-release/index.html
+++ b/community/how-to-release/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>All Apache projects are required to follow the <!-- --><a href="https://www.apache.org/legal/release-policy.html" target="_blank" rel="noopener noreferrer">Apache Release Policy</a>. This guide is intended to help you understand the policy and how to release projects at Apache.<!-- --></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="release-process">Release process<!-- --><a href="#release-process" class="hash-link" aria-label="Direct link to Release process" title="Direct link to Release process"></a></h2>
<!-- --><ol>
@@ -91,6 +91,6 @@
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="note">Note<!-- --><a href="#note" class="hash-link" aria-label="Direct link to Note" title="Direct link to Note"></a></h2>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="rc-tag">RC Tag<!-- --><a href="#rc-tag" class="hash-link" aria-label="Direct link to RC Tag" title="Direct link to RC Tag"></a></h3>
<!-- --><p>When you want to release a new version, you need to create a new RC tag in the git repository firstly. The tag name should be <!-- --><code>v{release-version}-rc{rc-version}</code>. This has the advantage of avoiding tag deletion.<!-- --></p>
-<!-- --><p>For example, if you want to release version <!-- --><code>1.2.0</code>, you need to create a tag named <!-- --><code>v1.2.0-RC1</code>. RC means Release Candidate. After the release vote is passed, you need to create a new tag named <!-- --><code>v1.2.0</code> based on the RC tag. However, if the vote is not passed, you can fix the problems and create a new RC tag such as <!-- --><code>v1.2.0-RC2</code> and start a new vote.<!-- --></p></div><footer class="theme-doc-footer doc [...]
+<!-- --><p>For example, if you want to release version <!-- --><code>1.2.0</code>, you need to create a tag named <!-- --><code>v1.2.0-RC1</code>. RC means Release Candidate. After the release vote is passed, you need to create a new tag named <!-- --><code>v1.2.0</code> based on the RC tag. However, if the vote is not passed, you can fix the problems and create a new RC tag such as <!-- --><code>v1.2.0-RC2</code> and start a new vote.<!-- --></p></div><footer class="theme-doc-footer doc [...]
</body>
</html>
\ No newline at end of file
diff --git a/community/issues/index.html b/community/issues/index.html
index 3b6fd706..1fe31b08 100644
--- a/community/issues/index.html
+++ b/community/issues/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>There are some repos in the Apache Answer project, you can raise your issue for different repos.</p>
<!-- --><table><thead><tr><th>Repo</th><th>Description</th><th>Issues</th></tr></thead><tbody><tr><td>Apache Answer</td><td>Apache Answer core code</td><td><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer">Issues</a></td></tr><tr><td>Apache Answer Plugins</td><td>Apache Answer plugins code</td><td><a href="https://github.com/apache/incubator-answer-plugins/issues" target="_blank" rel="noopener noreferrer">Issues</a></td></tr><tr><td>Apa [...]
<!-- --><p>When opening a new issue, always make sure to fill out the issue template. <!-- --><strong>This step is very important!</strong> Not doing so may result in your issue not being managed in a timely fashion. Don't take this personally if this happens, and feel free to open a new issue once you've gathered all the information required by the template.<!-- --></p>
@@ -39,6 +39,6 @@
<!-- --><p>If we think the feature request is a good idea, we'll add it to the roadmap and set the milestone. If you want to implement it, comment on the issue, and we'll assign it to you.</p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="issues-labels">Issues labels<!-- --><a href="#issues-labels" class="hash-link" aria-label="Direct link to Issues labels" title="Direct link to Issues labels"></a></h2>
<!-- --><p>We use labels to categorize issues.</p>
-<!-- --><table><thead><tr><th>Label</th><th>Description</th></tr></thead><tbody><tr><td><code>bug</code></td><td>Indicates an unexpected problem or unintended behavior</td></tr><tr><td><code>documentation</code></td><td>Indicates a need for improvements or additions to documentation</td></tr><tr><td><code>duplicate</code></td><td>Indicates similar issues, pull requests, or discussions</td></tr><tr><td><code>feature</code></td><td>Indicates new feature requests</td></tr><tr><td><code>enha [...]
+<!-- --><table><thead><tr><th>Label</th><th>Description</th></tr></thead><tbody><tr><td><code>bug</code></td><td>Indicates an unexpected problem or unintended behavior</td></tr><tr><td><code>documentation</code></td><td>Indicates a need for improvements or additions to documentation</td></tr><tr><td><code>duplicate</code></td><td>Indicates similar issues, pull requests, or discussions</td></tr><tr><td><code>feature</code></td><td>Indicates new feature requests</td></tr><tr><td><code>enha [...]
</body>
</html>
\ No newline at end of file
diff --git a/community/plugins/index.html b/community/plugins/index.html
index f37b8ac1..6c4b17ca 100644
--- a/community/plugins/index.html
+++ b/community/plugins/index.html
@@ -1,99 +1,11 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/plugins" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Contribute for Plugins | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/commun [...]
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Answer RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Answer Atom Feed">
-
-
-
-<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="plugin-types">Plugin types<!-- --><a href="#plugin-types" class="hash-link" aria-label="Direct link to Plugin types" title="Direct link to Plugin types"></a></h2>
-<!-- --><p>Currently we have three types of plugins:</p>
-<!-- --><ul>
-<!-- --><li>Only Backend plugin</li>
-<!-- --><li>Frontend Builtin plugin</li>
-<!-- --><li>Standard UI plugin</li>
-<!-- --></ul>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend-plugin">Backend plugin<!-- --><a href="#backend-plugin" class="hash-link" aria-label="Direct link to Backend plugin" title="Direct link to Backend plugin"></a></h2>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="implement-the-base-interface">Implement the Base interface<!-- --><a href="#implement-the-base-interface" class="hash-link" aria-label="Direct link to Implement the Base interface" title="Direct link to Implement the Base interface"></a></h3>
-<!-- --><p>The <!-- --><code>Base</code> interface contains basic information about the plugin and is used to display.<!-- --></p>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Info presents the plugin information</span><span class="token plain"></span><br></span><s [...]
-<!-- --><div class="theme-admonition theme-admonition-caution admonition_eWuJ alert alert--warning"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>c [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="implement-the-function-interface">Implement the function interface<!-- --><a href="#implement-the-function-interface" class="hash-link" aria-label="Direct link to Implement the function interface" title="Direct link to Implement the function interface"></a></h3>
-<!-- --><div class="theme-admonition theme-admonition-note admonition_eWuJ alert alert--secondary"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.1 [...]
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> Connector </span><span class="token keyword" style="color:#00009f">inter [...]
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="implement-the-configuration-interface">Implement the configuration interface<!-- --><a href="#implement-the-configuration-interface" class="hash-link" aria-label="Direct link to Implement the configuration interface" title="Direct link to Implement the configuration interface"></a></h3>
-<!-- --><p>For details on the description of each configuration item, please refer to <!-- --><a href="/community/plugins/plugin-config">the documentation</a>.<!-- --></p>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> Config </span><span class="token keyword" style="color:#00009f">interfac [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="register-initialization-function">Register initialization function<!-- --><a href="#register-initialization-function" class="hash-link" aria-label="Direct link to Register initialization function" title="Direct link to Register initialization function"></a></h3>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"github.c [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="debugging-tips">Debugging tips<!-- --><a href="#debugging-tips" class="hash-link" aria-label="Direct link to Debugging tips" title="Direct link to Debugging tips"></a></h3>
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><ol>
-<!-- --><li>Use answer source code for development.</li>
-<!-- --><li>Write your plugin directly in the plugin directory.</li>
-<!-- --><li>Import your plugin in the main function</li>
-<!-- --></ol>
-<!-- --><p>After that you just need to start the answer project normally and it will contain the plugins you developed.</p>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="registration-and-activation-of-plugins">Registration and activation of plugins<!-- --><a href="#registration-and-activation-of-plugins" class="hash-link" aria-label="Direct link to Registration and activation of plugins" title="Direct link to Registration and activation of plugins"></a></h2>
-<!-- --><p>All types of plug-in activation registration (or display) logic are in the <!-- --><code>ui/utils/pluginKit/index.ts</code> file. During the development process, you can modify <!-- --><code>registerPlugins</code> or call <!-- --><code>changePluginActiveStatus</code> either of these two methods. to control whether your plugin is displayed.<!-- --></p>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="builtin-plugin">Builtin plugin<!-- --><a href="#builtin-plugin" class="hash-link" aria-label="Direct link to Builtin plugin" title="Direct link to Builtin plugin"></a></h2>
-<!-- --><p>It is not so different from React component, this plugin is more suitable for the following scenarios:</p>
-<!-- --><ol>
-<!-- --><li>There are complex business logics that cannot be separated from the code (such as Oauth).</li>
-<!-- --><li>Some back-end plug-ins require UI support for business purposes (such as Search).</li>
-<!-- --><li>This plug-in has extremely low requirements for developers and requires no additional configuration work.</li>
-<!-- --></ol>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="how-to-develop-builtin-plugin">How to develop builtin plugin<!-- --><a href="#how-to-develop-builtin-plugin" class="hash-link" aria-label="Direct link to How to develop builtin plugin" title="Direct link to How to develop builtin plugin"></a></h3>
-<!-- --><ol>
-<!-- --><li><strong>Get familiar with the directory structure</strong>. Go to the <!-- --><code>ui/src/plugins/builtin</code> directory and create a directory, such as Demo. Then refer to the existing plugins to create the necessary files to start development.<!-- --></li>
-<!-- --></ol>
-<!-- --><div class="language-txt codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-txt codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">// ui/src/plugins/builtin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">.</span><br></sp [...]
-<!-- --><ol start="2">
-<!-- --><li>Export the plugins you have just defined in the plugins list file <!-- --><code>plugins/builtin/index.ts</code></li>
-<!-- --></ol>
-<!-- --><div class="language-ts codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-ts codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> Demo </span><span class="token keyword" style="color:#00009f">from</sp [...]
-<!-- --><ol start="3">
-<!-- --><li>Now you can use the PluginRender component to render the just-defined plugin where you want it!</li>
-<!-- --></ol>
-<!-- --><div class="language-ts codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-ts codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34"><</span><span class="token plain">PluginRender</span><br></span><span c [...]
-<!-- --><ol start="4">
-<!-- --><li><strong>Publish plugin</strong>: initiate the PR process normally and describe the plug-in function and scope of influence in detail.<!-- --></li>
-<!-- --></ol>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="standard-ui-plugin">Standard UI plugin<!-- --><a href="#standard-ui-plugin" class="hash-link" aria-label="Direct link to Standard UI plugin" title="Direct link to Standard UI plugin"></a></h2>
-<!-- --><p>This plugin is suitable for the following scenarios</p>
-<!-- --><ol>
-<!-- --><li>A plug-in that can independently complete some UI functions and does not require back-end support;</li>
-<!-- --><li>The code needs to be isolated to prevent confusion with the main site;</li>
-<!-- --></ol>
-<!-- --><p>Existing examples:<!-- --><a href="https://github.com/apache/incubator-answer-plugins/tree/main/editor-chart" target="_blank" rel="noopener noreferrer">editor-chart</a>, <!-- --><a href="https://github.com/apache/incubator-answer-plugins/tree/main/editor-formula" target="_blank" rel="noopener noreferrer">editor-formula</a>.<!-- --></p>
-<!-- --><p>In order to simplify the development and compilation process, we use <!-- --><a href="https://pnpm.io/next/workspaces" target="_blank" rel="noopener noreferrer">workspace</a> to manage this independent front-end warehouse.<!-- --></p>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="how-to-develop-standard-ui-plugin">How to develop standard UI plugin<!-- --><a href="#how-to-develop-standard-ui-plugin" class="hash-link" aria-label="Direct link to How to develop standard UI plugin" title="Direct link to How to develop standard UI plugin"></a></h3>
-<!-- --><ol>
-<!-- --><li>First, refer to the two existing warehouses above to familiarize yourself with the basic configuration and component export methods.</li>
-<!-- --></ol>
-<!-- --><div class="theme-admonition theme-admonition-info admonition_eWuJ alert alert--info"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info<!-- --></div><div class="admonitionContent_ioOH"><p>The <!-- --><stro [...]
-<!-- -->"editor-chart" ❌<!-- --></p></div></div>
-<!-- --><ol start="2">
-<!-- --><li>Go to the <!-- --><code>ui/src/plugins</code> directory and create a directory, such as editor_chart, then add the components you want to develop, then modify the <!-- --><code>ui/src/plugins/index.ts</code> file to export your components; <!-- --><strong>changes here during the release phase do not need to be submitted</strong>.<!-- --></li>
-<!-- --></ol>
-<!-- --><div class="language-ts codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-ts codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span>< [...]
-<!-- --><ol start="3">
-<!-- --><li>Run <!-- --><code>pnpm pre-install</code>, and re-run <!-- --><code>pnpm start</code>, and finally call the changePluginActiveStatus method in PluginKit on the page where you need to load the plugin to activate the plugin. <!-- --><strong>Changes here during the release phase do not need to be submitted</strong>.<!-- --></li>
-<!-- --></ol>
-<!-- --><div class="language-ts codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-ts codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> PluginKit </span><span class="token keyword" style="color:#00009f">fro [...]
-<!-- --><ol start="4">
-<!-- --><li><strong>Publish plugin</strong>: after the function is developed, copy your entire plug-in folder to <!-- --><a href="https://github.com/apache/incubator-answer-plugins" target="_blank" rel="noopener noreferrer">incubator-answer-plugins</a>, <!-- --><strong>and add <!-- --><code>go.mod</code> <!-- --><code>[plugin_name].go</code> <!-- --><code>go.sum</code> these three files<!-- --></strong>; then initiate a PR and wait for review by relevant personnel; if incubator-answer I [...]
-<!-- --></ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/contributing/plugins.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3 [...]
-</body>
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/development/plugins">
+ <link rel="canonical" href="/docs/development/plugins" />
+ </head>
+ <script>
+ window.location.href = '/docs/development/plugins' + window.location.search + window.location.hash;
+ </script>
</html>
\ No newline at end of file
diff --git a/community/plugins/plugin-config/index.html b/community/plugins/plugin-config/index.html
index 25f8b63e..4907f2e0 100644
--- a/community/plugins/plugin-config/index.html
+++ b/community/plugins/plugin-config/index.html
@@ -1,62 +1,11 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/plugins/plugin-config" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Plugin Configuration Schema | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/c [...]
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Answer RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Answer Atom Feed">
-
-
-
-<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="feature">Feature<!-- --><a href="#feature" class="hash-link" aria-label="Direct link to Feature" title="Direct link to Feature"></a></h2>
-<!-- --><p>For plugins, we often need some configuration items to record the information necessary for the plugin.</p>
-<!-- --><p>For example, OAuth plugins require secret key configuration. These configurations need to be described by the developer and used by the user. So, the following is about how to describe the configuration required for a plugin.</p>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="backend--plugin-developer">Backend & plugin developer<!-- --><a href="#backend--plugin-developer" class="hash-link" aria-label="Direct link to Backend & plugin developer" title="Direct link to Backend & plugin developer"></a></h3>
-<!-- --><div class="theme-admonition theme-admonition-note admonition_eWuJ alert alert--secondary"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.1 [...]
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> ConfigField </span><span class="token keyword" style="color:#00009f">str [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="frontend">Frontend<!-- --><a href="#frontend" class="hash-link" aria-label="Direct link to Frontend" title="Direct link to Frontend"></a></h3>
-<!-- --><div class="theme-admonition theme-admonition-note admonition_eWuJ alert alert--secondary"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.1 [...]
-<!-- --><div class="language-json codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-json codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><sp [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="github-connector-plugin-configuration-example">GitHub Connector Plugin Configuration Example<!-- --><a href="#github-connector-plugin-configuration-example" class="hash-link" aria-label="Direct link to GitHub Connector Plugin Configuration Example" title="Direct link to GitHub Connector Plugin Configuration Example"></a></h3>
-<!-- --><div class="language-json codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-json codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><sp [...]
-<!-- --><p>The following is what looks like on the Admin Page.</p>
-<!-- --><p><img decoding="async" loading="lazy" alt="plugin-github-connector-config" src="/assets/images/plugin-github-connector-config-07bc10250eeffbadf333b16993113499.png" width="2648" height="830" class="img_WevL"></p>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="supported-config-types">Supported config types<!-- --><a href="#supported-config-types" class="hash-link" aria-label="Direct link to Supported config types" title="Direct link to Supported config types"></a></h3>
-<!-- --><p>Different types will be rendered as different UI.</p>
-<!-- --><ul>
-<!-- --><li>input</li>
-<!-- --><li>textarea</li>
-<!-- --><li>checkbox</li>
-<!-- --><li>radio</li>
-<!-- --><li>select</li>
-<!-- --><li>upload</li>
-<!-- --><li>timezone</li>
-<!-- --><li>switch</li>
-<!-- --></ul>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="supported-config-input-types">Supported config input types<!-- --><a href="#supported-config-input-types" class="hash-link" aria-label="Direct link to Supported config input types" title="Direct link to Supported config input types"></a></h3>
-<!-- --><p>Different formats are supported for the input type.</p>
-<!-- --><ul>
-<!-- --><li>text</li>
-<!-- --><li>color</li>
-<!-- --><li>date</li>
-<!-- --><li>datetime-local</li>
-<!-- --><li>email</li>
-<!-- --><li>month</li>
-<!-- --><li>number</li>
-<!-- --><li>password</li>
-<!-- --><li>range</li>
-<!-- --><li>search</li>
-<!-- --><li>tel</li>
-<!-- --><li>time</li>
-<!-- --><li>url</li>
-<!-- --><li>week</li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/contributing/plugins/plugin-config.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5 [...]
-</body>
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/development/plugins/plugin-config">
+ <link rel="canonical" href="/docs/development/plugins/plugin-config" />
+ </head>
+ <script>
+ window.location.href = '/docs/development/plugins/plugin-config' + window.location.search + window.location.hash;
+ </script>
</html>
\ No newline at end of file
diff --git a/community/plugins/plugin-translation/index.html b/community/plugins/plugin-translation/index.html
index 50d39af8..394ccf04 100644
--- a/community/plugins/plugin-translation/index.html
+++ b/community/plugins/plugin-translation/index.html
@@ -1,50 +1,11 @@
-<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/plugins/plugin-translation" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Plugin Translation | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/community/ [...]
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Answer RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Answer Atom Feed">
-
-
-
-<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><p>Since answer supports multiple languages, the plugin also needs to support multiple languages.
-The following is an example of how to make your plugin support multiple languages.</p>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="translator-structure">Translator structure<!-- --><a href="#translator-structure" class="hash-link" aria-label="Direct link to Translator structure" title="Direct link to Translator structure"></a></h2>
-<!-- --><p>In some plugins interface, you can see the <!-- --><code>Translator</code> structure, which is used to support multiple languages.<!-- --></p>
-<!-- --><p>For example, the <!-- --><code>ConfigField</code> structure has a <!-- --><code>Title</code> field of type <!-- --><code>Translator</code>.<!-- --></p>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> ConfigField </span><span class="token keyword" style="color:#00009f">str [...]
-<!-- --><p>It's easy to build a <!-- --><code>Translator</code> structure, just like this:<!-- --></p>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span>< [...]
-<!-- --><p>The <!-- --><code>plugin.github_connector.backend.name</code> is the key of the translation file, which will be introduced later.<!-- --></p>
-<!-- --><p>So, the first step is build a <!-- --><code>Translator</code> structure for each field that needs to be translated.<!-- --></p>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="translation-file">Translation file<!-- --><a href="#translation-file" class="hash-link" aria-label="Direct link to Translation file" title="Direct link to Translation file"></a></h2>
-<!-- --><p>Make directory <!-- --><code>i18n</code> in the root directory of your plugin, and then create a file named <!-- --><code>en_US.yaml</code> in it.<!-- --></p>
-<!-- --><p>The <!-- --><code>en_US.yaml</code> file is used to store the English translation of the plugin.<!-- --></p>
-<!-- --><p>The content of the <!-- --><code>en_US.yaml</code> file is as follows:<!-- --></p>
-<!-- --><div class="language-yaml codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-yaml codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">plugin</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></ [...]
-<!-- --><ul>
-<!-- --><li>The <!-- --><code>plugin</code> is the root key of the translation file.<!-- --></li>
-<!-- --><li>The <!-- --><code>github_connector</code> is the name of the plugin.<!-- --></li>
-<!-- --><li>The <!-- --><code>backend</code> is translation for the backend. The end of key like <!-- --><code>other</code> is just for <!-- --><a href="https://github.com/nicksnyder/go-i18n" target="_blank" rel="noopener noreferrer">go-i18n</a> to recognize the translation file.<!-- --></li>
-<!-- --><li>The <!-- --><code>ui</code> is translation for the frontend.<!-- --></li>
-<!-- --></ul>
-<!-- --><p>You can use the key like <!-- --><code>plugin.github_connector.backend.name</code> or <!-- --><code>plugin.github_connector.ui.login.title</code> for translation.<!-- --></p>
-<!-- --><p>Create a <!-- --><code>i18n.go</code> file in the root directory of your plugin, and then add the following code:<!-- --></p>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">package</span><span class="token plain"> i18n</span><br></span><span class="token-line" style="color:#393A34"> [...]
-<!-- --><p>The <!-- --><code>i18n.go</code> file is used to store the key of the translation file.<!-- --></p>
-<!-- --><p>Finally, the directory structure of the plugin is as follows:</p>
-<!-- --><div class="language-bash codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-bash codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend-translation">Backend translation<!-- --><a href="#backend-translation" class="hash-link" aria-label="Direct link to Backend translation" title="Direct link to Backend translation"></a></h2>
-<!-- --><p>You just need to return <!-- --><code>Translator</code> structure with the key of the translation file.<!-- --></p>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">func</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><sp [...]
-<!-- --><p>The <!-- --><code>Answer</code> will automatically translate the key of the translation file into the corresponding language.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/contributing/plugins/plugin-translation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" hei [...]
-</body>
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/development/plugins/plugin-translation">
+ <link rel="canonical" href="/docs/development/plugins/plugin-translation" />
+ </head>
+ <script>
+ window.location.href = '/docs/development/plugins/plugin-translation' + window.location.search + window.location.hash;
+ </script>
</html>
\ No newline at end of file
diff --git a/community/pull-request/index.html b/community/pull-request/index.html
index 4862318e..a0dbc37b 100644
--- a/community/pull-request/index.html
+++ b/community/pull-request/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>We appreciate you taking the time to contribute! Before submitting a pull request, we ask that you please create an issue that explains the bug or feature request and let us know that you plan on creating a pull request for it. If an issue already exists, please comment on that issue letting us know you would like to submit a pull request for it. This helps us to keep track of the pull request and make sure there isn't duplicated effort.</p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="semantic-commit-messages">Semantic commit messages<!-- --><a href="#semantic-commit-messages" class="hash-link" aria-label="Direct link to Semantic commit messages" title="Direct link to Semantic commit messages"></a></h2>
<!-- --><p>Following the format below when committing message can make you a better programmer.</p>
@@ -58,6 +58,8 @@
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="contributor-license-agreement-cla">Contributor license agreement (CLA)<!-- --><a href="#contributor-license-agreement-cla" class="hash-link" aria-label="Direct link to Contributor license agreement (CLA)" title="Direct link to Contributor license agreement (CLA)"></a></h2>
<!-- --><p>Apache CLA short for Apache Contributor License Agreement, the purpose of this agreement is to clearly define the terms under which intellectual property has been contributed to the ASF and thereby allow us to defend the project should there be a legal dispute regarding the software at some future time. A signed ICLA is required to be on file before an individual is given commit rights to any ASF project.</p>
<!-- --><p>For larger contributions, contributed by a single original author, we might ask you to submit an <!-- --><a href="https://www.apache.org/licenses/contributor-agreements.html" target="_blank" rel="noopener noreferrer">Individual Contributor License Agreement (ICLA)</a> form. The copyright on your code will still belong to you, but the ICLA helps protect the users of Apache Answer. All project Committers have also signed this form.<!-- --></p>
-<!-- --><p>If you have already signed an Apache ICLA, no need to send an email. As you have already submitted an ICLA under your public name, no need to resubmit it. If you have never signed an ICLA, please indicate this in your email, and PMC can apply for this account directly.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/contrib [...]
+<!-- --><p>If you have already signed an Apache ICLA, no need to send an email. As you have already submitted an ICLA under your public name, no need to resubmit it. If you have never signed an ICLA, please indicate this in your email, and PMC can apply for this account directly.</p>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="develop-and-contribute">Develop and Contribute<!-- --><a href="#develop-and-contribute" class="hash-link" aria-label="Direct link to Develop and Contribute" title="Direct link to Develop and Contribute"></a></h2>
+<!-- --><p>Please refer to <!-- --><a href="/docs/development">the documentation</a> for details.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/contributing/pull-request.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEd [...]
</body>
</html>
\ No newline at end of file
diff --git a/community/security/index.html b/community/security/index.html
index deda5b4b..4cf48a08 100644
--- a/community/security/index.html
+++ b/community/security/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. If you find a security bug, with that in mind, please do not file public issues. You can follow the instructions in the <!-- --><a href="https://github.com/apache/incubator-answer/security/policy" target="_blank" rel="noopener noreferrer">security policy</a> to report it privately. We will fix it as soon as possible.<!-- --></p>
<!-- --><h1>Security fixes</h1>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="v125">v1.2.5<!-- --><a href="#v125" class="hash-link" aria-label="Direct link to v1.2.5" title="Direct link to v1.2.5"></a></h2>
@@ -34,6 +34,6 @@
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="v120">v1.2.0<!-- --><a href="#v120" class="hash-link" aria-label="Direct link to v1.2.0" title="Direct link to v1.2.0"></a></h2>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="cve-2023-49619">CVE-2023-49619<!-- --><a href="#cve-2023-49619" class="hash-link" aria-label="Direct link to CVE-2023-49619" title="Direct link to CVE-2023-49619"></a></h3>
<!-- --><p>Under normal circumstances, a user can only bookmark a question once, and will only increase the number of questions bookmarked once. However, repeat submissions through the script can increase the number of collection of the question many times.</p>
-<!-- --><p><a href="https://www.cve.org/CVERecord?id=CVE-2023-49619" target="_blank" rel="noopener noreferrer">https://www.cve.org/CVERecord?id=CVE-2023-49619</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/security.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" widt [...]
+<!-- --><p><a href="https://www.cve.org/CVERecord?id=CVE-2023-49619" target="_blank" rel="noopener noreferrer">https://www.cve.org/CVERecord?id=CVE-2023-49619</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/security.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" widt [...]
</body>
</html>
\ No newline at end of file
diff --git a/community/support/index.html b/community/support/index.html
index 209f2421..636dc3c8 100644
--- a/community/support/index.html
+++ b/community/support/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>Hey there! Welcome to Apache Answer, a Q&A platform software. We've got a bunch of curious and helpful users who are always willing to give a hand.</p>
<!-- --><p>If you're having trouble finding an answer to your question, check out our <!-- --><a href="#answer-meta">community</a>, <!-- --><a href="/docs">documentations</a>, <!-- --><a href="/community/issues">issues</a>, or <!-- --><a href="#mailing-list">mailing list</a>. If you find a question that you can answer, please do! Even if your answer isn't perfect, our volunteers will be happy to help you fill in the gaps.<!-- --></p>
<!-- --><p>If you're still having trouble after checking our documentation and other resources, feel free to <!-- --><a href="#others">contact us</a>. Since our users and contributors come from all over the world, so we recommend using English as primary communication language for the best possible assistance.<!-- --></p>
@@ -30,6 +30,6 @@
<!-- --><p>If you don't find what you're looking for, please use the form below to submit your request. We'll try and get back to you as soon as possible.</p>
<!-- -->
<!-- -->
-<!-- --><div><div id="reactHubspotForm0" style="display:none"></div><div class="text-center"><div role="status" class="spinner-border text-secondary"><span class="visually-hidden">Loading...<!-- --></span></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/support.mdx" target="_blank" rel="noopener noreferrer" class="theme- [...]
+<!-- --><div><div id="reactHubspotForm0" style="display:none"></div><div class="text-center"><div role="status" class="spinner-border text-secondary"><span class="visually-hidden">Loading...<!-- --></span></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/support.mdx" target="_blank" rel="noopener noreferrer" class="theme- [...]
</body>
</html>
\ No newline at end of file
diff --git a/community/team/index.html b/community/team/index.html
index 0ac1ddb6..c4412682 100644
--- a/community/team/index.html
+++ b/community/team/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>The Apache Answer team works on the core functionality, plugins, as well as the documentation website. Current members of the team are listed in alphabetical order below.</p>
<!-- -->
<!-- -->
@@ -43,6 +43,6 @@
<!-- --><li><a href="https://community.apache.org/contributors/becomingacommitter.html" target="_blank" rel="noopener noreferrer">https://community.apache.org/contributors/becomingacommitter.html</a></li>
<!-- --><li><a href="https://incubator.apache.org/guides/ppmc.html" target="_blank" rel="noopener noreferrer">https://incubator.apache.org/guides/ppmc.html</a></li>
<!-- --><li><a href="https://www.apache.org/dev/pmc.html" target="_blank" rel="noopener noreferrer">https://www.apache.org/dev/pmc.html</a></li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/team.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/team.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 [...]
</body>
</html>
\ No newline at end of file
diff --git a/community/translation/index.html b/community/translation/index.html
index 4912d0c7..5ca657ad 100644
--- a/community/translation/index.html
+++ b/community/translation/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>Our project is connected to <!-- --><a href="https://crowdin.com/" target="_blank" rel="noopener noreferrer">crowdin</a> for translation; we recommend contributing translations through crowdin.<!-- --></p>
<!-- --><p>Translate project list:</p>
<!-- --><ul>
@@ -25,6 +25,6 @@
<!-- --><ol>
<!-- --><li>Through crowdin, translators only need to focus on the translation work itself, and crowdin will provide very convenient prompts;</li>
<!-- --><li>No additional operations are required, such as git commands. Our apache-answer project language file uses yaml. Some contributors are likely to format the indentation or operate by mistake, causing some formatting errors;</li>
-<!-- --></ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/contributing/translation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3 [...]
+<!-- --></ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/contributing/translation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3 [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/api/index.html b/docs/api/index.html
index 7357116c..b686f855 100644
--- a/docs/api/index.html
+++ b/docs/api/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="where-is-the-api-document">Where is the API document?<!-- --><a href="#where-is-the-api-document" class="hash-link" aria-label="Direct link to Where is the API document?" title="Direct link to Where is the API document?"></a></h2>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="quick-look">Quick Look<!-- --><a href="#quick-look" class="hash-link" aria-label="Direct link to Quick Look" title="Direct link to Quick Look"></a></h3>
@@ -27,6 +27,6 @@
<!-- --><div class="language-yaml codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_P25_">/data/conf/config.yaml</div><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-yaml codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">swaggerui</span><span class="token punctua [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="generate-api-document">Generate API document<!-- --><a href="#generate-api-document" class="hash-link" aria-label="Direct link to Generate API document" title="Direct link to Generate API document"></a></h2>
<!-- --><p>Apache Answer using <!-- --><a href="https://github.com/swaggo/swag" target="_blank" rel="noopener noreferrer">swag</a> to generate API document json/yaml file automatically according to the comments in the code. You can use the following steps to generate API document.<!-- --></p>
-<!-- --><div class="language-bash codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-bash codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># install swag cli</span><span class="token plain"></span><br></span><span class="token- [...]
+<!-- --><div class="language-bash codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-bash codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># install swag cli</span><span class="token plain"></span><br></span><span class="token- [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/command-line/index.html b/docs/command-line/index.html
index 2e65d047..b2544126 100644
--- a/docs/command-line/index.html
+++ b/docs/command-line/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="usage">Usage<!-- --><a href="#usage" class="hash-link" aria-label="Direct link to Usage" title="Direct link to Usage"></a></h2>
<!-- --><p><code>answer command [command or global options] [arguments...]</code></p>
@@ -141,6 +141,6 @@
<!-- --><li><code>answer config -C ./data/ --with allow_password_login</code></li>
<!-- --></ul>
<!-- --></li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/getting-started/command-line.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3. [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/getting-started/command-line.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3. [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/configfile/index.html b/docs/configfile/index.html
index 73fd326a..c4ba21ae 100644
--- a/docs/configfile/index.html
+++ b/docs/configfile/index.html
@@ -10,13 +10,13 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="configyaml-description">config.yaml description<!-- --><a href="#configyaml-description" class="hash-link" aria-label="Direct link to config.yaml description" title="Direct link to config.yaml description"></a></h2>
-<!-- --><div class="language-yaml codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_P25_">/data/conf/config.yaml</div><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-yaml codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">server</span><span class="token punctuatio [...]
+<!-- --><div class="language-yaml codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_P25_">/data/conf/config.yaml</div><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-yaml codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">server</span><span class="token punctuatio [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/database/index.html b/docs/database/index.html
index b09ea5b1..0b4fd27f 100644
--- a/docs/database/index.html
+++ b/docs/database/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><div class="theme-admonition theme-admonition-note admonition_eWuJ alert alert--secondary"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.1 [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="activity">activity<!-- --><a href="#activity" class="hash-link" aria-label="Direct link to activity" title="Direct link to activity"></a></h2>
<!-- --><blockquote>
@@ -117,6 +117,6 @@
<!-- --><blockquote>
<!-- --><p>The version of the current answer is recorded in version table for upgrade.</p>
<!-- --></blockquote>
-<!-- --><table><thead><tr><th>COLUMN</th><th>DATA TYPE</th><th>NULLABLE</th><th>KEY</th><th>DEFAULT</th><th>COMMENT</th></tr></thead><tbody><tr><td>id</td><td>int(11)</td><td>NO</td><td>PRI</td><td></td><td>id</td></tr><tr><td>version_number</td><td>int(11)</td><td>NO</td><td></td><td>0</td><td>version_number</td></tr></tbody></table></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/ [...]
+<!-- --><table><thead><tr><th>COLUMN</th><th>DATA TYPE</th><th>NULLABLE</th><th>KEY</th><th>DEFAULT</th><th>COMMENT</th></tr></thead><tbody><tr><td>id</td><td>int(11)</td><td>NO</td><td>PRI</td><td></td><td>id</td></tr><tr><td>version_number</td><td>int(11)</td><td>NO</td><td></td><td>0</td><td>version_number</td></tr></tbody></table></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/ [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/development/index.html b/docs/development/index.html
new file mode 100644
index 00000000..f5434560
--- /dev/null
+++ b/docs/development/index.html
@@ -0,0 +1,64 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-development/overview" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.1.1">
+<title data-rh="true">Overview | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/docs/development"><m [...]
+<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Answer RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Answer Atom Feed">
+
+
+
+<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="frontend">Frontend<!-- --><a href="#frontend" class="hash-link" aria-label="Direct link to Frontend" title="Direct link to Frontend"></a></h2>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="installation">Installation<!-- --><a href="#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation"></a></h3>
+<!-- --><ol>
+<!-- --><li>
+<!-- --><p>Ensure you have <!-- --><a href="https://nodejs.org/en" target="_blank" rel="noopener noreferrer">node</a> and <!-- --><a href="https://pnpm.io/installation" target="_blank" rel="noopener noreferrer">pnpm</a> installed.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>After cloning the repository, run the following command. This will install all dependencies as well as build all local packages.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">cd</span><span class="token plain"> ./ui</span><br></span><span class="token-line" style="color:#393A34"><span clas [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>To start a development server, run <!-- --><code>pnpm start</code>. now, your browser should already open automatically, and autoload <!-- --><code>http://localhost:3000</code>. you can also manually visit it.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>To switch API, you can modify the <!-- --><code>ui/.env.development</code> file and then re-run pnpm start. If you're just using it yourself, we recommend creating a <!-- --><code>.env.development.local</code> file that defines the address of the api you're going to use.<!-- --></p>
+<!-- --></li>
+<!-- --></ol>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="code-conventions">Code conventions<!-- --><a href="#code-conventions" class="hash-link" aria-label="Direct link to Code conventions" title="Direct link to Code conventions"></a></h3>
+<!-- --><ul>
+<!-- --><li><strong>Most important: Look around.</strong> Match the style you see used in the rest of the project. This includes formatting, naming files, naming things in code, naming things in documentation, etc.<!-- --></li>
+<!-- --><li>We do have Prettier (a formatter) and ESLint (a syntax linter) to catch most stylistic problems. If you are working locally, you can run <!-- --><code>pnpm lint</code> and <!-- --><code>pnpm prettier</code> to fix most code formatting.<!-- --></li>
+<!-- --><li><strong>No runtime errors</strong> Before submitting the code, please ensure that there will be no errors when running locally. This will greatly reduce the workload of review.<!-- --></li>
+<!-- --></ul>
+<!-- --><details class="details_feHX alert alert--info details_rGhr" data-collapsed="true"><summary>frontend package structure</summary><div><div class="collapsibleContent_jTXV"><div><div class="codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-text codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393 [...]
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend">Backend<!-- --><a href="#backend" class="hash-link" aria-label="Direct link to Backend" title="Direct link to Backend"></a></h2>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="installation-1">Installation<!-- --><a href="#installation-1" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation"></a></h3>
+<!-- --><ol>
+<!-- --><li>
+<!-- --><p>Ensure you have <!-- --><a href="https://go.dev/doc/install" target="_blank" rel="noopener noreferrer">golang</a> installed.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>After cloning the repository, run the following command for build.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go mod download</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">go run cmd/answer/main [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Visit <!-- --><code>http://localhost</code> to see the installation page and complete the installation.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Run the following command to start the server.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go run cmd/answer/main.go run -C ./answer-data</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" [...]
+<!-- --></li>
+<!-- --></ol>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="code-conventions-1">Code conventions<!-- --><a href="#code-conventions-1" class="hash-link" aria-label="Direct link to Code conventions" title="Direct link to Code conventions"></a></h3>
+<!-- --><p>We recommend that you follow <!-- --><a href="https://github.com/uber-go/guide" target="_blank" rel="noopener noreferrer">uber's Golang Guidelines</a> code style.<!-- --></p>
+<!-- --><details class="details_feHX alert alert--info details_rGhr" data-collapsed="true"><summary>backend package structure</summary><div><div class="collapsibleContent_jTXV"><div><div class="codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-text codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/community/plugins/index.html b/docs/development/plugins/index.html
similarity index 55%
copy from community/plugins/index.html
copy to docs/development/plugins/index.html
index f37b8ac1..e8b7479f 100644
--- a/community/plugins/index.html
+++ b/docs/development/plugins/index.html
@@ -1,29 +1,99 @@
<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/plugins" data-has-hydrated="false">
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-development/plugins/overview" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Contribute for Plugins | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/commun [...]
+<title data-rh="true">Overview | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/docs/development/plu [...]
<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Answer RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Answer Atom Feed">
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="plugin-types">Plugin types<!-- --><a href="#plugin-types" class="hash-link" aria-label="Direct link to Plugin types" title="Direct link to Plugin types"></a></h2>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="introduction">Introduction<!-- --><a href="#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction"></a></h2>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="plugin-template-types">Plugin template types<!-- --><a href="#plugin-template-types" class="hash-link" aria-label="Direct link to Plugin template types" title="Direct link to Plugin template types"></a></h3>
<!-- --><p>Currently we have three types of plugins:</p>
<!-- --><ul>
-<!-- --><li>Only Backend plugin</li>
-<!-- --><li>Frontend Builtin plugin</li>
+<!-- --><li>Backend plugin</li>
<!-- --><li>Standard UI plugin</li>
+<!-- --><li>Builtin plugin</li>
<!-- --></ul>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend-plugin">Backend plugin<!-- --><a href="#backend-plugin" class="hash-link" aria-label="Direct link to Backend plugin" title="Direct link to Backend plugin"></a></h2>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="plugin-type">Plugin type<!-- --><a href="#plugin-type" class="hash-link" aria-label="Direct link to Plugin type" title="Direct link to Plugin type"></a></h3>
+<!-- --><p>We classify plugins into different types. Different types of plugins have different functions. Plugins of the same type have the same effect, but are implemented differently.</p>
+<!-- --><ul>
+<!-- --><li><strong>Connector</strong>: The Connector plugin helps us to implement third-party login functionality.<!-- --></li>
+<!-- --><li><strong>Storage</strong>: The Storage plugin helps us to upload files to third-party storage.<!-- --></li>
+<!-- --><li><strong>Cache</strong>: Support for using different caching middleware.<!-- --></li>
+<!-- --><li><strong>Search</strong>: Support for using search engines to speed up the search for question answers.<!-- --></li>
+<!-- --><li><strong>User Center</strong>: Using the third-party user system to manage users.<!-- --></li>
+<!-- --><li><strong>Notification</strong>: The Notification plugin helps us to send messages to third-party notification systems.<!-- --></li>
+<!-- --><li><strong>Route</strong>: Provides support for custom routing.<!-- --></li>
+<!-- --><li><strong>Editor</strong>: Supports extending the markdown editor's toolbar.<!-- --></li>
+<!-- --><li><strong>Reviewer</strong>: Allows customizing the reviewer functionality.<!-- --></li>
+<!-- --><li><strong>Filter</strong>: Filter out illegal questions or answers. (coming soon)<!-- --></li>
+<!-- --><li><strong>Render</strong>: Parsers for different content formats. (coming soon)<!-- --></li>
+<!-- --></ul>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="create-a-plugin">Create a Plugin<!-- --><a href="#create-a-plugin" class="hash-link" aria-label="Direct link to Create a Plugin" title="Direct link to Create a Plugin"></a></h2>
+<!-- --><ol>
+<!-- --><li>
+<!-- --><p>Go to the <!-- --><code>ui > src > plugin</code> directory of the project.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Execute the following commands in that directory:</p>
+<!-- --></li>
+<!-- --></ol>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">npx create-answer-plugin </span><span class="token operator" style="color:#393A34"><</span><span class="token plain">pluginNa [...]
+<!-- --><ol start="3">
+<!-- --><li>Select the type of plugin you want to create.</li>
+<!-- --></ol>
+<!-- --><p>The plugin will be created in the <!-- --><code>ui > src > plugin</code> directory.<!-- --></p>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="debugging-plugins">Debugging Plugins<!-- --><a href="#debugging-plugins" class="hash-link" aria-label="Direct link to Debugging Plugins" title="Direct link to Debugging Plugins"></a></h2>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="debugging-backend-plugins">Debugging Backend Plugins<!-- --><a href="#debugging-backend-plugins" class="hash-link" aria-label="Direct link to Debugging Backend Plugins" title="Direct link to Debugging Backend Plugins"></a></h3>
+<!-- --><ol>
+<!-- --><li>
+<!-- --><p>First, execute <!-- --><code>make ui</code> to compile the front-end code.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>In the <!-- --><code>cmd > answer > main.go</code> file, import your plugin.<!-- --></p>
+<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span>< [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Use <!-- --><code>go mod edit</code> to add the plugin to the <!-- --><code>go.mod</code> file.<!-- --></p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go mod edit -replace</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">github.com/apach [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Update the dependencies.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go mod tidy</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="Copy code to clipboard [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Start the project.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go run cmd/answer/main.go run -C ./answer-data</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" [...]
+<!-- --></li>
+<!-- --></ol>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="debugging-standard-ui-plugins">Debugging Standard UI Plugins<!-- --><a href="#debugging-standard-ui-plugins" class="hash-link" aria-label="Direct link to Debugging Standard UI Plugins" title="Direct link to Debugging Standard UI Plugins"></a></h3>
+<!-- --><ol>
+<!-- --><li>
+<!-- --><p>Go to the <!-- --><code>ui</code> directory.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Install the dependencies.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">pnpm</span><span class="token plain"> pre-install</span><br></span></code></pre><div class="buttonGroup [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Start the project.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">pnpm</span><span class="token plain"> start</span><br></span></code></pre><div class="buttonGroup_6DOT" [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Refer to the <!-- --><a href="/docs/development/plugins#debugging-plugins">Debugging Backend Plugins</a> and add the plugin to the project.<!-- --></p>
+<!-- --></li>
+<!-- --></ol>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend-plugin-development">Backend Plugin Development<!-- --><a href="#backend-plugin-development" class="hash-link" aria-label="Direct link to Backend Plugin Development" title="Direct link to Backend Plugin Development"></a></h2>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="implement-the-base-interface">Implement the Base interface<!-- --><a href="#implement-the-base-interface" class="hash-link" aria-label="Direct link to Implement the Base interface" title="Direct link to Implement the Base interface"></a></h3>
<!-- --><p>The <!-- --><code>Base</code> interface contains basic information about the plugin and is used to display.<!-- --></p>
<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Info presents the plugin information</span><span class="token plain"></span><br></span><s [...]
@@ -31,9 +101,9 @@
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="implement-the-function-interface">Implement the function interface<!-- --><a href="#implement-the-function-interface" class="hash-link" aria-label="Direct link to Implement the function interface" title="Direct link to Implement the function interface"></a></h3>
<!-- --><div class="theme-admonition theme-admonition-note admonition_eWuJ alert alert--secondary"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.1 [...]
<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> Connector </span><span class="token keyword" style="color:#00009f">inter [...]
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
+<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="implement-the-configuration-interface">Implement the configuration interface<!-- --><a href="#implement-the-configuration-interface" class="hash-link" aria-label="Direct link to Implement the configuration interface" title="Direct link to Implement the configuration interface"></a></h3>
-<!-- --><p>For details on the description of each configuration item, please refer to <!-- --><a href="/community/plugins/plugin-config">the documentation</a>.<!-- --></p>
+<!-- --><p>For details on the description of each configuration item, please refer to <!-- --><a href="/docs/development/plugins/plugin-config">the documentation</a>.<!-- --></p>
<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> Config </span><span class="token keyword" style="color:#00009f">interfac [...]
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="register-initialization-function">Register initialization function<!-- --><a href="#register-initialization-function" class="hash-link" aria-label="Direct link to Register initialization function" title="Direct link to Register initialization function"></a></h3>
<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"github.c [...]
@@ -82,8 +152,8 @@
<!-- --><ol>
<!-- --><li>First, refer to the two existing warehouses above to familiarize yourself with the basic configuration and component export methods.</li>
<!-- --></ol>
-<!-- --><div class="theme-admonition theme-admonition-info admonition_eWuJ alert alert--info"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info<!-- --></div><div class="admonitionContent_ioOH"><p>The <!-- --><stro [...]
-<!-- -->"editor-chart" ❌<!-- --></p></div></div>
+<!-- --><div class="theme-admonition theme-admonition-info admonition_eWuJ alert alert--info"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info<!-- --></div><div class="admonitionContent_ioOH"><p>The <!-- --><stro [...]
+<!-- -->"editor_chart" ❌<!-- --></p></div></div>
<!-- --><ol start="2">
<!-- --><li>Go to the <!-- --><code>ui/src/plugins</code> directory and create a directory, such as editor_chart, then add the components you want to develop, then modify the <!-- --><code>ui/src/plugins/index.ts</code> file to export your components; <!-- --><strong>changes here during the release phase do not need to be submitted</strong>.<!-- --></li>
<!-- --></ol>
@@ -94,6 +164,6 @@
<!-- --><div class="language-ts codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-ts codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> PluginKit </span><span class="token keyword" style="color:#00009f">fro [...]
<!-- --><ol start="4">
<!-- --><li><strong>Publish plugin</strong>: after the function is developed, copy your entire plug-in folder to <!-- --><a href="https://github.com/apache/incubator-answer-plugins" target="_blank" rel="noopener noreferrer">incubator-answer-plugins</a>, <!-- --><strong>and add <!-- --><code>go.mod</code> <!-- --><code>[plugin_name].go</code> <!-- --><code>go.sum</code> these three files<!-- --></strong>; then initiate a PR and wait for review by relevant personnel; if incubator-answer I [...]
-<!-- --></ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/contributing/plugins.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3 [...]
+<!-- --></ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/development/plugins/overview.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3. [...]
</body>
</html>
\ No newline at end of file
diff --git a/community/plugins/plugin-config/index.html b/docs/development/plugins/plugin-config/index.html
similarity index 57%
copy from community/plugins/plugin-config/index.html
copy to docs/development/plugins/plugin-config/index.html
index 25f8b63e..c5361647 100644
--- a/community/plugins/plugin-config/index.html
+++ b/docs/development/plugins/plugin-config/index.html
@@ -1,20 +1,20 @@
<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/plugins/plugin-config" data-has-hydrated="false">
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-development/plugins/plugin-config" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Plugin Configuration Schema | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/c [...]
+<title data-rh="true">Plugin Configuration Schema | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/d [...]
<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Answer RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Answer Atom Feed">
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="feature">Feature<!-- --><a href="#feature" class="hash-link" aria-label="Direct link to Feature" title="Direct link to Feature"></a></h2>
<!-- --><p>For plugins, we often need some configuration items to record the information necessary for the plugin.</p>
<!-- --><p>For example, OAuth plugins require secret key configuration. These configurations need to be described by the developer and used by the user. So, the following is about how to describe the configuration required for a plugin.</p>
@@ -57,6 +57,6 @@
<!-- --><li>time</li>
<!-- --><li>url</li>
<!-- --><li>week</li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/contributing/plugins/plugin-config.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5 [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/development/plugins/plugin-config.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0 [...]
</body>
</html>
\ No newline at end of file
diff --git a/community/plugins/plugin-translation/index.html b/docs/development/plugins/plugin-translation/index.html
similarity index 56%
copy from community/plugins/plugin-translation/index.html
copy to docs/development/plugins/plugin-translation/index.html
index 50d39af8..fda5df4f 100644
--- a/community/plugins/plugin-translation/index.html
+++ b/docs/development/plugins/plugin-translation/index.html
@@ -1,20 +1,20 @@
<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/plugins/plugin-translation" data-has-hydrated="false">
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-development/plugins/plugin-translation" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Plugin Translation | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/community/ [...]
+<title data-rh="true">Plugin Translation | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/docs/devel [...]
<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Answer RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Answer Atom Feed">
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>Since answer supports multiple languages, the plugin also needs to support multiple languages.
The following is an example of how to make your plugin support multiple languages.</p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="translator-structure">Translator structure<!-- --><a href="#translator-structure" class="hash-link" aria-label="Direct link to Translator structure" title="Direct link to Translator structure"></a></h2>
@@ -45,6 +45,6 @@ The following is an example of how to make your plugin support multiple language
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend-translation">Backend translation<!-- --><a href="#backend-translation" class="hash-link" aria-label="Direct link to Backend translation" title="Direct link to Backend translation"></a></h2>
<!-- --><p>You just need to return <!-- --><code>Translator</code> structure with the key of the translation file.<!-- --></p>
<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">func</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><sp [...]
-<!-- --><p>The <!-- --><code>Answer</code> will automatically translate the key of the translation file into the corresponding language.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/community/contributing/plugins/plugin-translation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" hei [...]
+<!-- --><p>The <!-- --><code>Answer</code> will automatically translate the key of the translation file into the corresponding language.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/development/plugins/plugin-translation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="2 [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/env/index.html b/docs/env/index.html
index 0ae51f14..d33c223e 100644
--- a/docs/env/index.html
+++ b/docs/env/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="installation">Installation<!-- --><a href="#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation"></a></h2>
<!-- --><ul>
<!-- --><li><code>INSTALL_PORT</code>: specifies the port to boot when installation, default is <!-- --><code>80</code>.<!-- --></li>
@@ -40,6 +40,6 @@
<!-- --><ul>
<!-- --><li><code>LOG_LEVEL</code>: log level support [<!-- --><code>DEBUG</code> <!-- --><code>INFO</code> <!-- --><code>WARN</code> <!-- --><code>ERROR</code>]<!-- --></li>
<!-- --><li><code>LOG_PATH</code>: log storage location<!-- --></li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/getting-started/env.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/getting-started/env.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/faq/index.html b/docs/faq/index.html
index 1213831e..682c03ae 100644
--- a/docs/faq/index.html
+++ b/docs/faq/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="how-do-i-access-the-installation-page">How do I access the installation page?<!-- --><a href="#how-do-i-access-the-installation-page" class="hash-link" aria-label="Direct link to How do I access the installation page?" title="Direct link to How do I access the installation page?"></a></h2>
<!-- --><p>Heading to <!-- --><a href="http://localhost:9080/install" target="_blank" rel="noopener noreferrer">http://localhost:9080/install</a> to access installation page.<!-- --></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="why-cant-i-receive-the-registration-email">Why can't I receive the registration email?<!-- --><a href="#why-cant-i-receive-the-registration-email" class="hash-link" aria-label="Direct link to Why can't I receive the registration email?" title="Direct link to Why can't I receive the registration email?"></a></h2>
@@ -26,6 +26,6 @@
<!-- --></ul>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="what-are-the-currently-supported-database-types-is-migration-supported">What are the currently supported database types? Is migration supported?<!-- --><a href="#what-are-the-currently-supported-database-types-is-migration-supported" class="hash-link" aria-label="Direct link to What are the currently supported database types? Is migration supported?" title="Direct link to What are the currently supported database types? Is migrat [...]
<!-- --><p>We support MySQL, PostgreSQL, SQLite3. Unfortunately, we <!-- --><strong>do not</strong> currently support data migration.
-So we recommend using SQLite3 <!-- --><strong>just for the experience</strong> and MySQL for actual use.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/faq.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden [...]
+So we recommend using SQLite3 <!-- --><strong>just for the experience</strong> and MySQL for actual use.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/faq.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/flags/index.html b/docs/flags/index.html
index 61d3b709..1fd1a775 100644
--- a/docs/flags/index.html
+++ b/docs/flags/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><p>User can flag the spam post.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/flags.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2- [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<!-- --><p>User can flag the spam post.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/flags.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2- [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index aef3a33b..51b0550f 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>Apache Answer helps you to build a community between your users and your team. It's a place where you can share your knowledge and help your users to solve their problems.</p>
<!-- --><p><img decoding="async" loading="lazy" alt="screenshot" src="/assets/images/screenshot-c118d2fcfb1faaf1d9df2e8b5e8bc1a8.png" width="1298" height="824" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="features">Features<!-- --><a href="#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features"></a></h2>
@@ -58,6 +58,6 @@
<!-- --><li><strong>Responsive Layout</strong>: Join the community conversation seamlessly from any device.<!-- --></li>
<!-- --><li><strong>Dark Mode</strong>: Personalize community experience to stay concentrated.<!-- --></li>
<!-- --><li><strong>Separation of front-end and back-end</strong>: It is a monorepo that contains both the frontend and the backend.<!-- --></li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/introduction.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0. [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/introduction.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0. [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/installation/index.html b/docs/installation/index.html
index db15c2d7..721059b3 100644
--- a/docs/installation/index.html
+++ b/docs/installation/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="start-apache-answer">Start Apache Answer<!-- --><a href="#start-apache-answer" class="hash-link" aria-label="Direct link to Start Apache Answer" title="Direct link to Start Apache Answer"></a></h2>
<!-- -->
<!-- -->
@@ -38,6 +38,6 @@
<!-- --><p><img decoding="async" loading="lazy" alt="install-site-info" src="/assets/images/install-site-info-dd11f933444917d34aa90ae18166d00b.png" width="2400" height="1818" class="img_WevL"></p>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="step-5-complete">Step 5: Complete<!-- --><a href="#step-5-complete" class="hash-link" aria-label="Direct link to Step 5: Complete" title="Direct link to Step 5: Complete"></a></h3>
<!-- --><p>Congratulations, you can click the done button to start your answer journey!</p>
-<!-- --><p><img decoding="async" loading="lazy" alt="install-complete" src="/assets/images/install-complete-8a820174dc269858f3b46181385eb63e.png" width="2400" height="820" class="img_WevL"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/getting-started/installation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page" [...]
+<!-- --><p><img decoding="async" loading="lazy" alt="install-complete" src="/assets/images/install-complete-8a820174dc269858f3b46181385eb63e.png" width="2400" height="820" class="img_WevL"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/getting-started/installation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page" [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/moderation/index.html b/docs/moderation/index.html
index f39d5c60..af4eb174 100644
--- a/docs/moderation/index.html
+++ b/docs/moderation/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/moderation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9 [...]
+<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/moderation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9 [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/notice/index.html b/docs/notice/index.html
index 602476d8..b12afded 100644
--- a/docs/notice/index.html
+++ b/docs/notice/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>The project is built on and with the aid of the following open source projects. Credits are given to these projects.</p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="apache-20">Apache-2.0<!-- --><a href="#apache-20" class="hash-link" aria-label="Direct link to Apache-2.0" title="Direct link to Apache-2.0"></a></h2>
<!-- --><ul>
@@ -100,6 +100,6 @@
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="mpl-20">MPL-2.0<!-- --><a href="#mpl-20" class="hash-link" aria-label="Direct link to MPL-2.0" title="Direct link to MPL-2.0"></a></h2>
<!-- --><ul>
<!-- --><li><a href="https://github.com/go-sql-driver/mysql" target="_blank" rel="noopener noreferrer">https://github.com/go-sql-driver/mysql</a></li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/notice.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/notice.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/permission/index.html b/docs/permission/index.html
index ceffe8ef..77bfdee4 100644
--- a/docs/permission/index.html
+++ b/docs/permission/index.html
@@ -10,15 +10,15 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="privileges">Privileges<!-- --><a href="#privileges" class="hash-link" aria-label="Direct link to Privileges" title="Direct link to Privileges"></a></h2>
<!-- --><p>The number is the minimum reputation required for a privilege. There are three options available for your community. You can change this in Admin settings.</p>
<!-- --><table><thead><tr><th>Privileges</th><th>Level 1</th><th>Level 2 (default)</th><th>Level 3</th></tr></thead><tbody><tr><td>Description</td><td>Less reputation required for private team, group.</td><td>Low reputation required for startup community.</td><td>High reputation required for mature community.</td></tr><tr><td>Ask question</td><td>1</td><td>1</td><td>1</td></tr><tr><td>Write answer</td><td>1</td><td>1</td><td>1</td></tr><tr><td>Write comment</td><td>1</td><td>1</td><td>1< [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="user-roles">User roles<!-- --><a href="#user-roles" class="hash-link" aria-label="Direct link to User roles" title="Direct link to User roles"></a></h2>
-<!-- --><table><thead><tr><th>Permission \ Roles</th><th>User</th><th>Moderator</th><th>Admin</th></tr></thead><tbody><tr><td>Default with no special access</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>Has access to all posts except site admin</td><td>-</td><td>✓</td><td>✓</td></tr><tr><td>Have the full power to access the site</td><td>-</td><td>-</td><td>✓</td></tr></tbody></table></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row">< [...]
+<!-- --><table><thead><tr><th>Permission \ Roles</th><th>User</th><th>Moderator</th><th>Admin</th></tr></thead><tbody><tr><td>Default with no special access</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>Has access to all posts except site admin</td><td>-</td><td>✓</td><td>✓</td></tr><tr><td>Have the full power to access the site</td><td>-</td><td>-</td><td>✓</td></tr></tbody></table></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row">< [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/plugins/index.html b/docs/plugins/index.html
index e60eda83..744fd54c 100644
--- a/docs/plugins/index.html
+++ b/docs/plugins/index.html
@@ -1,73 +1,86 @@
<!doctype html>
-<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-guides/plugins" data-has-hydrated="false">
+<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-getting-started/plugins" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Using Plugins | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/docs/plugins">< [...]
+<title data-rh="true">Using Plugins | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/docs/plugins">< [...]
<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Answer RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Answer Atom Feed">
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="introduction">Introduction<!-- --><a href="#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction"></a></h2>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="official-plugins">Official plugins<!-- --><a href="#official-plugins" class="hash-link" aria-label="Direct link to Official plugins" title="Direct link to Official plugins"></a></h3>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="official-plugins">Official Plugins<!-- --><a href="#official-plugins" class="hash-link" aria-label="Direct link to Official Plugins" title="Direct link to Official Plugins"></a></h3>
<!-- --><p>You can find a list of officially supported plugins for Apache Answer <!-- --><a href="https://github.com/apache/incubator-answer-plugins" target="_blank" rel="noopener noreferrer">here</a>.<!-- --></p>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="plugin-type">Plugin type<!-- --><a href="#plugin-type" class="hash-link" aria-label="Direct link to Plugin type" title="Direct link to Plugin type"></a></h3>
-<!-- --><p>We classify plugins into different types. Different types of plugins have different functions. Plugins of the same type have the same effect, but are implemented differently.</p>
-<!-- --><ul>
-<!-- --><li><strong>Connector</strong>: The Connector plugin helps us to implement third-party login functionality. e.g. <!-- --><code>GitHub OAuth Login</code></li>
-<!-- --><li><strong>Storage</strong>: The Storage plugin helps us to upload files to third-party storage. (preview)<!-- --></li>
-<!-- --><li><strong>Cache</strong>: Support for using different caching middleware. e.g. <!-- --><code>Redis</code> (preview)<!-- --></li>
-<!-- --><li><strong>Filter</strong>: Filter out illegal questions or answers. (coming soon)<!-- --></li>
-<!-- --><li><strong>Render</strong>: Parsers for different content formats. (coming soon)<!-- --></li>
-<!-- --><li><strong>Finder</strong>: Support for using search engines to speed up the search for question answers. (coming soon)<!-- --></li>
-<!-- --></ul>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="build">Build<!-- --><a href="#build" class="hash-link" aria-label="Direct link to Build" title="Direct link to Build"></a></h2>
-<!-- --><p>Apache Answer binary supports packaging different required plugins into the binary.</p>
+<!-- --><p>The Apache Answer binary supports packaging different required plugins into the binary.</p>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="prerequisites">Prerequisites<!-- --><a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites"></a></h3>
<!-- --><ul>
<!-- --><li>Original Apache Answer binary</li>
-<!-- --><li><a href="https://go.dev/" target="_blank" rel="noopener noreferrer">Golang</a> <!-- --><code>>=1.18</code></li>
+<!-- --><li><a href="https://go.dev/" target="_blank" rel="noopener noreferrer">Go</a> <!-- --><code>>=1.18</code></li>
<!-- --><li><a href="https://nodejs.org/" target="_blank" rel="noopener noreferrer">Node.js</a> <!-- --><code>>=16.17</code></li>
<!-- --><li><a href="https://pnpm.io/" target="_blank" rel="noopener noreferrer">pnpm</a> <!-- --><code>>=7</code></li>
<!-- --></ul>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="command">Command<!-- --><a href="#command" class="hash-link" aria-label="Direct link to Command" title="Direct link to Command"></a></h3>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="binary-build">Binary Build<!-- --><a href="#binary-build" class="hash-link" aria-label="Direct link to Binary Build" title="Direct link to Binary Build"></a></h3>
<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><p>For example, let's see how to build an Apache Answer binary that includes the github third-party login plugin.</p>
-<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># answer build --with [plugin@plugin_version=[replacement]] --output [file]</span><spa [...]
+<!-- --><p>For example, let's see how to build an Apache Answer binary that includes the GitHub third-party login plugin.</p>
+<!-- --><h4 class="anchor anchorWithStickyNavbar_pwhL" id="using-official-plugins">Using Official Plugins<!-- --><a href="#using-official-plugins" class="hash-link" aria-label="Direct link to Using Official Plugins" title="Direct link to Using Official Plugins"></a></h4>
+<!-- --><p>You can specify the plugins to use with the <!-- --><code>--with</code> parameter:<!-- --></p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Build Answer with the GitHub connector plugin</span><span class="token plain"></span [...]
+<!-- --><p>You can also specify the plugin version:</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Build Answer with the GitHub connector plugin version 1.0.0</span><span class="token [...]
+<!-- --><p>You can use multiple plugins at the same time:</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">$ ./answer build </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></spa [...]
+<!-- --><h4 class="anchor anchorWithStickyNavbar_pwhL" id="using-local-plugins">Using Local Plugins<!-- --><a href="#using-local-plugins" class="hash-link" aria-label="Direct link to Using Local Plugins" title="Direct link to Using Local Plugins"></a></h4>
+<!-- --><p>If you need to use a local plugin, you can use the following command:</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">$ ./answer build --with github.com/apache/incubator-answer-plugins/connector-github@1.0.0</span><span class="token operator" sty [...]
+<!-- --><h4 class="anchor anchorWithStickyNavbar_pwhL" id="cross-compilation">Cross Compilation<!-- --><a href="#cross-compilation" class="hash-link" aria-label="Direct link to Cross Compilation" title="Direct link to Cross Compilation"></a></h4>
+<!-- --><p>You can use the following command to build a Linux-amd64 binary on macOS:</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token assign-left variable" style="color:#36acaa">CGO_ENABLED</span><span class="token operator" style="co [...]
+<!-- --><h4 class="anchor anchorWithStickyNavbar_pwhL" id="specifying-the-answer-version">Specifying the Answer Version<!-- --><a href="#specifying-the-answer-version" class="hash-link" aria-label="Direct link to Specifying the Answer Version" title="Direct link to Specifying the Answer Version"></a></h4>
+<!-- --><p>You can use the <!-- --><code>ANSWER_MODULE</code> environment variable to specify the Answer version:<!-- --></p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token assign-left variable" style="color:#36acaa">ANSWER_MODULE</span><span class="token operator" style=" [...]
<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">$ ./new_answer plugin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:i [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="build-docker-image-with-plugin-from-answer-base-image">Build docker image with plugin from answer base image<!-- --><a href="#build-docker-image-with-plugin-from-answer-base-image" class="hash-link" aria-label="Direct link to Build docker image with plugin from answer base image" title="Direct link to Build docker image with plugin from answer base image"></a></h3>
-<!-- --><blockquote>
-<!-- --><p>You can follow the steps above to build the binary with the plugin first, and then build a docker image that contains the binary. Of course, you can also build directly on top of the original image.</p>
-<!-- --></blockquote>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">$ ./new_answer plugin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:i [...]
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="docker-build">Docker Build<!-- --><a href="#docker-build" class="hash-link" aria-label="Direct link to Docker Build" title="Direct link to Docker Build"></a></h3>
+<!-- --><h4 class="anchor anchorWithStickyNavbar_pwhL" id="build-with-plugin-from-answer-base-image">build with plugin from answer base image<!-- --><a href="#build-with-plugin-from-answer-base-image" class="hash-link" aria-label="Direct link to build with plugin from answer base image" title="Direct link to build with plugin from answer base image"></a></h4>
<!-- --><div class="language-dockerfile codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_P25_">Dockerfile</div><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">FROM apache/answer as answer-builder</span><br></span><span class="to [...]
<!-- --><blockquote>
<!-- --><p>You can update the --with parameter to add more plugins that you need.</p>
<!-- --></blockquote>
-<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># create a Dockerfile and copy the content above</span><span class="token plain"></spa [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="third-party-plugin">Third-party plugin<!-- --><a href="#third-party-plugin" class="hash-link" aria-label="Direct link to Third-party plugin" title="Direct link to Third-party plugin"></a></h2>
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><ul>
-<!-- --><li>If the third-party plugin is publicly available, you can build with it like official plugins.</li>
-<!-- --><li>If the third-party plugin is private, you need to download it then build with.</li>
-<!-- --></ul>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Create a Dockerfile and copy the content above</span><span class="token plain"></spa [...]
+<!-- --><h4 class="anchor anchorWithStickyNavbar_pwhL" id="build-with-plugin-from-local-code">build with plugin from local code<!-- --><a href="#build-with-plugin-from-local-code" class="hash-link" aria-label="Direct link to build with plugin from local code" title="Direct link to build with plugin from local code"></a></h4>
+<!-- --><ol>
+<!-- --><li><strong>keep your code up-to-date</strong>: Make sure your local code is synchronized with the official repositories, or at least with the v1.3.5 version.<!-- --></li>
+<!-- --><li><strong>add required plugins</strong>: Add your required plugin repositories to the <!-- --><code>/script/plugin_list</code> file in the root directory, one per line.<!-- --></li>
+<!-- --></ol>
+<!-- --><div class="codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-text codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">github.com/apache/incubator-answer-plugins/connector-basic@latest </span><br></span><span class="token-line" style="color:#393A34"><span class= [...]
+<!-- --><ol start="3">
+<!-- --><li><strong>build the Docker image</strong>: Run the <!-- --><code>docker build -t <name[:tag]> . </code> command to start building the image.<!-- --></li>
+<!-- --><li><strong>verify image construction</strong>: Run the <!-- --><code>docker run -d -p 9080:80 -v answer-data:/data --name <container_name> <image_name></code> command to start the container and locally verify whether the image is built successfully.<!-- --></li>
+<!-- --></ol>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="usage">Usage<!-- --><a href="#usage" class="hash-link" aria-label="Direct link to Usage" title="Direct link to Usage"></a></h2>
<!-- --><p>The Apache Answer with the plugin version is used in the same way as before. You can find the plugin's configuration in the admin page.</p>
<!-- --><p><img decoding="async" loading="lazy" alt="plugin-config-admin-page" src="/assets/images/plugin-config-admin-page-e343b33766f45a10093fc621e741c811.png" width="2688" height="980" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="upgrade">Upgrade<!-- --><a href="#upgrade" class="hash-link" aria-label="Direct link to Upgrade" title="Direct link to Upgrade"></a></h2>
<!-- --><div class="theme-admonition theme-admonition-caution admonition_eWuJ alert alert--warning"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>c [...]
-<!-- --><p>You need build a new Apache Answer binary with the new plugin version, then replace the old Apache Answer binary with the new one. As with normal upgrades, you need to execute different <!-- --><a href="/docs/upgrade">upgrade steps</a> depending on the deployment method. For example, if you are using binary deployment, you need to execute the <!-- --><code>upgrade</code> command.<!-- --></p>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="develop-and-contributing">Develop and contributing<!-- --><a href="#develop-and-contributing" class="hash-link" aria-label="Direct link to Develop and contributing" title="Direct link to Develop and contributing"></a></h2>
-<!-- --><p>Please refer to <!-- --><a href="/community/plugins">the documentation</a> for details.<!-- --></p>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="design--principle">Design & principle<!-- --><a href="#design--principle" class="hash-link" aria-label="Direct link to Design & principle" title="Direct link to Design & principle"></a></h2>
-<!-- --><p>Since Golang is a static language, there is no friendly plugin mechanism. So instead of a dynamic approach, we use recompilation for deployment. Please refer to <!-- --><a href="/blog/2023/07/22/why-the-answer-plugin-system-was-designed-this-way">the blog</a> for details.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/g [...]
+<!-- --><p>You need to build a new Apache Answer binary with the new plugin version, then replace the old Apache Answer binary with the new one. As with normal upgrades, you need to execute different <!-- --><a href="/docs/upgrade">upgrade steps</a> depending on the deployment method. For example, if you are using binary deployment, you need to execute the <!-- --><code>upgrade</code> command.<!-- --></p>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="third-party-plugin">Third-party Plugin<!-- --><a href="#third-party-plugin" class="hash-link" aria-label="Direct link to Third-party Plugin" title="Direct link to Third-party Plugin"></a></h2>
+<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
+<!-- --><ul>
+<!-- --><li>If the third-party plugin is publicly available, you can build with it like official plugins.</li>
+<!-- --><li>If the third-party plugin is private, you need to download it and then build with it.</li>
+<!-- --></ul>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="develop-and-contribute">Develop and Contribute<!-- --><a href="#develop-and-contribute" class="hash-link" aria-label="Direct link to Develop and Contribute" title="Direct link to Develop and Contribute"></a></h2>
+<!-- --><p>Please refer to <!-- --><a href="/docs/development">the documentation</a> for details.<!-- --></p>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="design--principle">Design & Principle<!-- --><a href="#design--principle" class="hash-link" aria-label="Direct link to Design & Principle" title="Direct link to Design & Principle"></a></h2>
+<!-- --><p>Since Go is a static language, there is no friendly plugin mechanism. Instead of a dynamic approach, we use recompilation for deployment. Please refer to <!-- --><a href="/blog/2023/07/22/why-the-answer-plugin-system-was-designed-this-way">the blog</a> for details.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/getting- [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/questions/index.html b/docs/questions/index.html
index 28ddd4e7..2ec83657 100644
--- a/docs/questions/index.html
+++ b/docs/questions/index.html
@@ -10,14 +10,14 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="question-status">Question status<!-- --><a href="#question-status" class="hash-link" aria-label="Direct link to Question status" title="Direct link to Question status"></a></h2>
<!-- --><p><img decoding="async" loading="lazy" alt="Question state diagram" src="/assets/images/questions-question-status.drawio-ba8e6f72b87ff5452bcc4dd8cbdc7dea.svg" width="397" height="422" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="apache-answer-status">Apache Answer status<!-- --><a href="#apache-answer-status" class="hash-link" aria-label="Direct link to Apache Answer status" title="Direct link to Apache Answer status"></a></h2>
-<!-- --><p><img decoding="async" loading="lazy" alt="Apache Answer state diagram" src="/assets/images/questions-answer-status.drawio-c037079cbbf31ac37fdb578bb32a35c7.svg" width="187" height="422" class="img_WevL"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/questions.md" target="_blank" rel="noopener noreferrer" class="theme-edi [...]
+<!-- --><p><img decoding="async" loading="lazy" alt="Apache Answer state diagram" src="/assets/images/questions-answer-status.drawio-c037079cbbf31ac37fdb578bb32a35c7.svg" width="187" height="422" class="img_WevL"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/questions.md" target="_blank" rel="noopener noreferrer" class="theme-edi [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/reputation/index.html b/docs/reputation/index.html
index c46b1be1..7a16a5a5 100644
--- a/docs/reputation/index.html
+++ b/docs/reputation/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>Reputation used to automate the management of community ecology.</p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="reputation-change-rules">Reputation change rules<!-- --><a href="#reputation-change-rules" class="hash-link" aria-label="Direct link to Reputation change rules" title="Direct link to Reputation change rules"></a></h2>
<!-- --><table><thead><tr><th>Condition</th><th>Change</th></tr></thead><tbody><tr><td>Someone upvote your question</td><td>+10</td></tr><tr><td>Someone upvote your answer</td><td>+10</td></tr><tr><td>Someone accept your answer</td><td>+15</td></tr><tr><td>You accept someone's answer</td><td>+2</td></tr><tr><td>Your proposed was accepted</td><td>+2</td></tr><tr><td>You downvote someone's answer</td><td>-1</td></tr><tr><td>Your question was downvoted</td><td>-2</td></tr><tr><td> [...]
@@ -26,6 +26,6 @@
<!-- --><li>If an action results in a user gaining <!-- --><code>> 200</code> reputation for the day, any subsequent actions that increase reputation will not increase the user's reputation.<!-- --></li>
<!-- --><li>The reputation gained from accepted answers is not limited by the <!-- --><code>200</code> cap<!-- --></li>
<!-- --><li>No reputation gained for accepting your own answer</li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/reputation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0 [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/reputation.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0 [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/review/index.html b/docs/review/index.html
index 6dfde403..6526ac6e 100644
--- a/docs/review/index.html
+++ b/docs/review/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/review.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/review.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/settings/index.html b/docs/settings/index.html
index b80b76fd..fc732fdd 100644
--- a/docs/settings/index.html
+++ b/docs/settings/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/settings.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0 [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/settings.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0 [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/tags/index.html b/docs/tags/index.html
index e253d6b5..d81ee88c 100644
--- a/docs/tags/index.html
+++ b/docs/tags/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/tags.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0 [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/tags.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0 [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/upgrade/index.html b/docs/upgrade/index.html
index be7f9c18..d540e39f 100644
--- a/docs/upgrade/index.html
+++ b/docs/upgrade/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- -->
<!-- -->
<!-- --><div class="theme-admonition theme-admonition-caution admonition_eWuJ alert alert--warning"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>c [...]
@@ -24,6 +24,6 @@
<!-- --><li>Execute the upgrade command <!-- --><code>./answer upgrade -C ./answer-data/</code></li>
<!-- --><li>Run the latest version <!-- --><code>./answer run -C ./answer-data/</code></li>
<!-- --></ol></div></div></div>
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
+<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
</body>
</html>
\ No newline at end of file
diff --git a/docs/users/index.html b/docs/users/index.html
index f8069669..f44187a3 100644
--- a/docs/users/index.html
+++ b/docs/users/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="user-status">User status<!-- --><a href="#user-status" class="hash-link" aria-label="Direct link to User status" title="Direct link to User status"></a></h2>
<!-- --><p><img decoding="async" loading="lazy" alt="User state diagram" src="/assets/images/users-user-status.drawio-205ba145e81e04f5af6c654d44a3f437.svg" width="539" height="286" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="top-users">Top users<!-- --><a href="#top-users" class="hash-link" aria-label="Direct link to Top users" title="Direct link to Top users"></a></h2>
@@ -91,6 +91,6 @@
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="settings">Settings<!-- --><a href="#settings" class="hash-link" aria-label="Direct link to Settings" title="Direct link to Settings"></a></h2>
<!-- --><p>TODO</p>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="unsubscribe-email">Unsubscribe email<!-- --><a href="#unsubscribe-email" class="hash-link" aria-label="Direct link to Unsubscribe email" title="Direct link to Unsubscribe email"></a></h3>
-<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/users.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 [...]
+<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/incubator-answer-website/edit/main/docs/guides/users.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 [...]
</body>
</html>
\ No newline at end of file
diff --git a/download/index.html b/download/index.html
index 7101995e..88bfd132 100644
--- a/download/index.html
+++ b/download/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/index.html b/index.html
index 494fce47..e5782f54 100644
--- a/index.html
+++ b/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/plugins/index.html b/plugins/index.html
index 2b04b317..2ab2b6f0 100644
--- a/plugins/index.html
+++ b/plugins/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/search/index.html b/search/index.html
index d243d009..00981ea8 100644
--- a/search/index.html
+++ b/search/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/assets/css/styles.b81b0cfd.css">
-<script src="/assets/js/runtime~main.2f64086d.js" defer="defer"></script>
-<script src="/assets/js/main.196736e5.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.ca5b1b3c.js" defer="defer"></script>
+<script src="/assets/js/main.9dfefd95.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/sitemap.xml b/sitemap.xml
index 99a1cbb7..0c6c2d44 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://answer.apache.org/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://answer.apache.org/blog</loc><changefreq>we [...]
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://answer.apache.org/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://answer.apache.org/blog</loc><changefreq>we [...]
\ No newline at end of file
diff --git a/zh-CN/404.html b/zh-CN/404.html
index e628c661..c6a3cbb8 100644
--- a/zh-CN/404.html
+++ b/zh-CN/404.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/assets/js/0bbd7524.1cacdda5.js b/zh-CN/assets/js/0bbd7524.1cacdda5.js
new file mode 100644
index 00000000..e9443a59
--- /dev/null
+++ b/zh-CN/assets/js/0bbd7524.1cacdda5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1068],{54589:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>a,frontMatter:()=>d,metadata:()=>c,toc:()=>h});var r=n(43010),s=n(90887);const d={slug:"/reputation"},i="\u58f0\u671b",c={id:"guides/reputation",title:"\u58f0\u671b",description:"\u58f0\u671b\u7528\u4e8e\u81ea\u52a8\u5316\u793e\u533a\u751f\u6001\u7ba1\u7406\u3002",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/r [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/0bbd7524.46a67489.js b/zh-CN/assets/js/0bbd7524.46a67489.js
deleted file mode 100644
index 770d6026..00000000
--- a/zh-CN/assets/js/0bbd7524.46a67489.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1068],{54589:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>a,frontMatter:()=>d,metadata:()=>c,toc:()=>h});var s=n(43010),r=n(90887);const d={slug:"/reputation"},i="\u58f0\u671b",c={id:"guides/reputation",title:"\u58f0\u671b",description:"\u58f0\u671b\u7528\u4e8e\u81ea\u52a8\u5316\u793e\u533a\u751f\u6001\u7ba1\u7406\u3002",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/r [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/1620c6a0.423cd8d5.js b/zh-CN/assets/js/1620c6a0.423cd8d5.js
deleted file mode 100644
index fb96b54a..00000000
--- a/zh-CN/assets/js/1620c6a0.423cd8d5.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4945],{88084:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>l,toc:()=>c});var t=i(43010),r=i(90887);const o={slug:"/plugins"},s="Contribute for Plugins",l={id:"contributing/plugins",title:"Contribute for Plugins",description:"Viewing the official plugin code will make you to quickly understand and learn plugin development.",source:"@site/community/contributing/p [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/1a8837ce.248e9cca.js b/zh-CN/assets/js/1a8837ce.248e9cca.js
deleted file mode 100644
index 8f9bda5c..00000000
--- a/zh-CN/assets/js/1a8837ce.248e9cca.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9849],{95221:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=i(43010),s=i(90887);const r={slug:"/contributing"},o="Contributing",l={id:"contributing/contributing",title:"Contributing",description:"Thanks for your interest in contributing to Apache Answer, hopefully, this document makes the process for contributing clear.",source:"@site/communi [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/1a8837ce.3e5231aa.js b/zh-CN/assets/js/1a8837ce.3e5231aa.js
new file mode 100644
index 00000000..06aae01c
--- /dev/null
+++ b/zh-CN/assets/js/1a8837ce.3e5231aa.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9849],{95221:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=i(43010),s=i(90887);const r={slug:"/contributing"},o="Contributing",l={id:"contributing/contributing",title:"Contributing",description:"Thanks for your interest in contributing to Apache Answer, hopefully, this document makes the process for contributing clear.",source:"@site/communi [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/221cde73.c8cb6a62.js b/zh-CN/assets/js/221cde73.bd0718df.js
similarity index 82%
rename from zh-CN/assets/js/221cde73.c8cb6a62.js
rename to zh-CN/assets/js/221cde73.bd0718df.js
index 01d0e2fd..67a054b2 100644
--- a/zh-CN/assets/js/221cde73.c8cb6a62.js
+++ b/zh-CN/assets/js/221cde73.bd0718df.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7187],{9072:(a,t,o)=>{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>n,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>m});var e=o(43010),i=o(90887);const c=JSON.parse('[{"rC":[{"name":"chrisdutz","avatar":"https://avatars.githubusercontent.com/u/651105","github":"https://github.com/chrisdutz","role":"Mentor"},{"name":"fenbox","avatar":"https://avatars.githubusercontent.com/u/360618","github":"https://github.co [...]
\ No newline at end of file
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7187],{9072:(a,t,o)=>{o.r(t),o.d(t,{assets:()=>s,contentTitle:()=>n,default:()=>u,frontMatter:()=>r,metadata:()=>d,toc:()=>m});var e=o(43010),i=o(90887);const c=JSON.parse('[{"rC":[{"name":"chrisdutz","avatar":"https://avatars.githubusercontent.com/u/651105","github":"https://github.com/chrisdutz","role":"Mentor"},{"name":"fenbox","avatar":"https://avatars.githubusercontent.com/u/360618","github":"https://github.co [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/26cbfb40.134f3304.js b/zh-CN/assets/js/26cbfb40.134f3304.js
deleted file mode 100644
index e6c68ca7..00000000
--- a/zh-CN/assets/js/26cbfb40.134f3304.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 26cbfb40.134f3304.js.LICENSE.txt */
-(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2197],{17659:(e,t,r)=>{"use strict";r.r(t),r.d(t,{assets:()=>j,contentTitle:()=>m,default:()=>y,frontMatter:()=>f,metadata:()=>x,toc:()=>b});var n=r(43010),s=r(90887),i=r(82829),a=r.n(i),o=r(16567),c=r(84875),l=r.n(c),d=r(85170),h=r(53437);const u=d.forwardRef((({bsPrefix:e,variant:t,animation:r="border",size:s,as:i="div",className:a,...o},c)=>{const d=`${e=(0,h.vE)(e,"spinner")}-${r}`;return(0,n.jsx)(i,{ref:c,...o,className:l( [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/26cbfb40.f60ead81.js b/zh-CN/assets/js/26cbfb40.f60ead81.js
new file mode 100644
index 00000000..7108724d
--- /dev/null
+++ b/zh-CN/assets/js/26cbfb40.f60ead81.js
@@ -0,0 +1,2 @@
+/*! For license information please see 26cbfb40.f60ead81.js.LICENSE.txt */
+(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2197],{17659:(e,t,r)=>{"use strict";r.r(t),r.d(t,{assets:()=>j,contentTitle:()=>m,default:()=>y,frontMatter:()=>f,metadata:()=>x,toc:()=>b});var n=r(43010),s=r(90887),i=r(82829),a=r.n(i),o=r(16567),c=r(84875),l=r.n(c),d=r(85170),h=r(53437);const u=d.forwardRef((({bsPrefix:e,variant:t,animation:r="border",size:s,as:i="div",className:a,...o},c)=>{const d=`${e=(0,h.vE)(e,"spinner")}-${r}`;return(0,n.jsx)(i,{ref:c,...o,className:l( [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/26cbfb40.134f3304.js.LICENSE.txt b/zh-CN/assets/js/26cbfb40.f60ead81.js.LICENSE.txt
similarity index 100%
rename from zh-CN/assets/js/26cbfb40.134f3304.js.LICENSE.txt
rename to zh-CN/assets/js/26cbfb40.f60ead81.js.LICENSE.txt
diff --git a/zh-CN/assets/js/283536cd.17f31dd5.js b/zh-CN/assets/js/283536cd.17f31dd5.js
new file mode 100644
index 00000000..8179bdaf
--- /dev/null
+++ b/zh-CN/assets/js/283536cd.17f31dd5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[391],{78859:(n,e,s)=>{s.r(e),s.d(e,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var t=s(43010),r=s(90887);const i={slug:"/"},c="\u4ecb\u7ecd",l={id:"introduction",title:"\u4ecb\u7ecd",description:"Apache Answer \u53ef\u5e2e\u52a9\u4f60\u5728\u7528\u6237\u6216\u56e2\u961f\u4e4b\u95f4\u5efa\u7acb\u95ee\u7b54\u793e\u533a\u3002\u4f60\u53ef\u4ee5\u5728\u8fd9\u91cc\u5206\u4e [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/283536cd.e23e90e4.js b/zh-CN/assets/js/283536cd.e23e90e4.js
deleted file mode 100644
index 47d5378a..00000000
--- a/zh-CN/assets/js/283536cd.e23e90e4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[391],{78859:(n,e,s)=>{s.r(e),s.d(e,{assets:()=>d,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>o});var t=s(43010),r=s(90887);const i={slug:"/"},c="\u4ecb\u7ecd",l={id:"introduction",title:"\u4ecb\u7ecd",description:"Apache Answer \u53ef\u5e2e\u52a9\u4f60\u5728\u7528\u6237\u6216\u56e2\u961f\u4e4b\u95f4\u5efa\u7acb\u95ee\u7b54\u793e\u533a\u3002\u4f60\u53ef\u4ee5\u5728\u8fd9\u91cc\u5206\u4e [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/306a8c6c.e1c457d2.js b/zh-CN/assets/js/306a8c6c.e1c457d2.js
new file mode 100644
index 00000000..2f72166f
--- /dev/null
+++ b/zh-CN/assets/js/306a8c6c.e1c457d2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7616],{59479:e=>{e.exports=JSON.parse('{"pluginId":"community","version":"current","label":"\u4e0b\u4e00\u4e2a","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"community":[{"type":"link","label":"\u652f\u6301","href":"/zh-CN/community/support","docId":"support","unlisted":false},{"type":"link","label":"Team","href":"/zh-CN/community/team","docId":"team", [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/306a8c6c.fcab2505.js b/zh-CN/assets/js/306a8c6c.fcab2505.js
deleted file mode 100644
index dbde9c51..00000000
--- a/zh-CN/assets/js/306a8c6c.fcab2505.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7616],{59479:e=>{e.exports=JSON.parse('{"pluginId":"community","version":"current","label":"\u4e0b\u4e00\u4e2a","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"community":[{"type":"link","label":"\u652f\u6301","href":"/zh-CN/community/support","docId":"support","unlisted":false},{"type":"link","label":"Team","href":"/zh-CN/community/team","docId":"team", [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/3a0bfb32.94528d7b.js b/zh-CN/assets/js/3a0bfb32.94528d7b.js
deleted file mode 100644
index 136d59e6..00000000
--- a/zh-CN/assets/js/3a0bfb32.94528d7b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1511],{87224:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>r,metadata:()=>i,toc:()=>h});var o=n(43010),s=n(90887);const r={title:"First Contribution? Come to Answer.",authors:["Anne"],category:"Community",featured:!0,image:"2024-01-25-cover@4x.png",description:"Ready to leave your mark on the open-source world? Come join the welcoming Apache Answer community!"},a=void 0,i={pe [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/3a0bfb32.a01cf796.js b/zh-CN/assets/js/3a0bfb32.a01cf796.js
new file mode 100644
index 00000000..72928138
--- /dev/null
+++ b/zh-CN/assets/js/3a0bfb32.a01cf796.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1511],{87224:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>h});var o=n(43010),s=n(90887);const r={title:"First Contribution? Come to Answer.",authors:["Anne"],category:"Community",featured:!0,image:"2024-01-25-cover@4x.png",description:"Ready to leave your mark on the open-source world? Come join the welcoming Apache Answer community!"},a=void 0,i={pe [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/3b752053.fe61ff0f.js b/zh-CN/assets/js/3b752053.fe61ff0f.js
new file mode 100644
index 00000000..270d72f6
--- /dev/null
+++ b/zh-CN/assets/js/3b752053.fe61ff0f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1471],{10276:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>a});var t=i(43010),s=i(90887);const r={slug:"/development/plugins"},l="Overview",o={id:"development/plugins/overview",title:"Overview",description:"Viewing the official plugin code will make you to quickly understand and learn plugin development.",source:"@site/docs/development/plugins/overvie [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/415707e9.0c77a2e9.js b/zh-CN/assets/js/415707e9.0c77a2e9.js
new file mode 100644
index 00000000..7019b41a
--- /dev/null
+++ b/zh-CN/assets/js/415707e9.0c77a2e9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2289],{7603:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>d,default:()=>c,frontMatter:()=>t,metadata:()=>l,toc:()=>o});var i=n(43010),r=n(90887);const t={slug:"/users"},d="Users",l={id:"guides/users",title:"Users",description:"User status",source:"@site/docs/guides/users.md",sourceDirName:"guides",slug:"/users",permalink:"/zh-CN/docs/users",draft:!1,unlisted:!1,editUrl:"https://crowdin.com/project/answer-we [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/415707e9.605d6453.js b/zh-CN/assets/js/415707e9.605d6453.js
deleted file mode 100644
index a602bfb2..00000000
--- a/zh-CN/assets/js/415707e9.605d6453.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2289],{7603:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>d,default:()=>c,frontMatter:()=>t,metadata:()=>l,toc:()=>o});var i=n(43010),r=n(90887);const t={slug:"/users"},d="Users",l={id:"guides/users",title:"Users",description:"User status",source:"@site/docs/guides/users.md",sourceDirName:"guides",slug:"/users",permalink:"/zh-CN/docs/users",draft:!1,unlisted:!1,editUrl:"https://crowdin.com/project/answer-we [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/4958df33.4b037e11.js b/zh-CN/assets/js/4958df33.4b037e11.js
new file mode 100644
index 00000000..9949d47d
--- /dev/null
+++ b/zh-CN/assets/js/4958df33.4b037e11.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[291],{10680:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>r,metadata:()=>i,toc:()=>u});var s=n(43010),o=n(90887);const r={slug:"/flags"},c="\u4e3e\u62a5",i={id:"guides/flags",title:"\u4e3e\u62a5",description:"\u7528\u6237\u53ef\u4ee5\u901a\u8fc7\u4e3e\u62a5\u6765\u4e3e\u62a5\u975e\u6cd5\u5185\u5bb9\u3002",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/ [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/4958df33.c3c5fb13.js b/zh-CN/assets/js/4958df33.c3c5fb13.js
deleted file mode 100644
index e31f19bb..00000000
--- a/zh-CN/assets/js/4958df33.c3c5fb13.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[291],{10680:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>i,contentTitle:()=>c,default:()=>l,frontMatter:()=>r,metadata:()=>a,toc:()=>u});var s=n(43010),o=n(90887);const r={slug:"/flags"},c="\u4e3e\u62a5",a={id:"guides/flags",title:"\u4e3e\u62a5",description:"\u7528\u6237\u53ef\u4ee5\u901a\u8fc7\u4e3e\u62a5\u6765\u4e3e\u62a5\u975e\u6cd5\u5185\u5bb9\u3002",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/ [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/50bc71d4.710f9361.js b/zh-CN/assets/js/50bc71d4.710f9361.js
deleted file mode 100644
index 48dcd093..00000000
--- a/zh-CN/assets/js/50bc71d4.710f9361.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6406],{32885:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2024/06/20/how-to-search-like-a-pro-in-answer","metadata":{"permalink":"/zh-CN/blog/2024/06/20/how-to-search-like-a-pro-in-answer","editUrl":"https://crowdin.com/project/answer-website/zh-CN","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/2024-06-20-how-to-search-like-a-pro-in-answer/index.md","title":"How to Search Like a Pro in Answer","descr [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/50bc71d4.bb12abdd.js b/zh-CN/assets/js/50bc71d4.bb12abdd.js
new file mode 100644
index 00000000..1db9de3b
--- /dev/null
+++ b/zh-CN/assets/js/50bc71d4.bb12abdd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6406],{32885:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"/2024/06/20/how-to-search-like-a-pro-in-answer","metadata":{"permalink":"/zh-CN/blog/2024/06/20/how-to-search-like-a-pro-in-answer","editUrl":"https://crowdin.com/project/answer-website/zh-CN","source":"@site/i18n/zh-CN/docusaurus-plugin-content-blog/2024-06-20-how-to-search-like-a-pro-in-answer/index.md","title":"How to Search Like a Pro in Answer","descr [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/565f0463.10e6c227.js b/zh-CN/assets/js/565f0463.10e6c227.js
deleted file mode 100644
index 79ceffea..00000000
--- a/zh-CN/assets/js/565f0463.10e6c227.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5360],{50269:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var s=t(43010),r=t(90887);const i={slug:"/faq"},c="\u5e38\u89c1\u95ee\u9898",l={id:"faq",title:"\u5e38\u89c1\u95ee\u9898",description:"\u5982\u4f55\u8bbf\u95ee\u5b89\u88c5\u9875\u9762\uff1f",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq.md",sourceDirName:".",slug:"/fa [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/565f0463.154be4ae.js b/zh-CN/assets/js/565f0463.154be4ae.js
new file mode 100644
index 00000000..3b233ef7
--- /dev/null
+++ b/zh-CN/assets/js/565f0463.154be4ae.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5360],{50269:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var s=t(43010),r=t(90887);const i={slug:"/faq"},c="\u5e38\u89c1\u95ee\u9898",l={id:"faq",title:"\u5e38\u89c1\u95ee\u9898",description:"\u5982\u4f55\u8bbf\u95ee\u5b89\u88c5\u9875\u9762\uff1f",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq.md",sourceDirName:".",slug:"/fa [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/57264e0e.79860921.js b/zh-CN/assets/js/57264e0e.79860921.js
new file mode 100644
index 00000000..a9cfcccb
--- /dev/null
+++ b/zh-CN/assets/js/57264e0e.79860921.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1425],{4037:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>h});var o=n(43010),s=n(90887);const r={title:"First Contribution? Come to Answer.",authors:["Anne"],category:"Community",featured:!0,image:"2024-01-25-cover@4x.png",description:"Ready to leave your mark on the open-source world? Come join the welcoming Apache Answer community!"},a=void 0,i={per [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/57264e0e.d658f27a.js b/zh-CN/assets/js/57264e0e.d658f27a.js
deleted file mode 100644
index c7e5d8f4..00000000
--- a/zh-CN/assets/js/57264e0e.d658f27a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1425],{4037:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>r,metadata:()=>i,toc:()=>h});var o=n(43010),s=n(90887);const r={title:"First Contribution? Come to Answer.",authors:["Anne"],category:"Community",featured:!0,image:"2024-01-25-cover@4x.png",description:"Ready to leave your mark on the open-source world? Come join the welcoming Apache Answer community!"},a=void 0,i={per [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/5771c448.53f3ad06.js b/zh-CN/assets/js/5771c448.53f3ad06.js
new file mode 100644
index 00000000..6e8ab413
--- /dev/null
+++ b/zh-CN/assets/js/5771c448.53f3ad06.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7872],{76564:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>l});var n=i(43010),s=i(90887);const r={slug:"/security"},c="Security",o={id:"security",title:"Security",description:"The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. If you find a security bug, with that in mind, please do not file [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/59e77115.fc77ead2.js b/zh-CN/assets/js/59e77115.fc77ead2.js
new file mode 100644
index 00000000..998c8dd0
--- /dev/null
+++ b/zh-CN/assets/js/59e77115.fc77ead2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6312],{10540:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>t,default:()=>u,frontMatter:()=>l,metadata:()=>r,toc:()=>c});var s=i(43010),a=i(90887);const l={slug:"/plugins"},t="Using Plugins",r={id:"getting-started/plugins",title:"Using Plugins",description:"When we need to extend Apache Answer's functionality, such as adding OAuth login, we can design plugins to implement these features.",source:"@site/docs/ [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/5ac42693.2b693fec.js b/zh-CN/assets/js/5ac42693.2b693fec.js
deleted file mode 100644
index 2c617024..00000000
--- a/zh-CN/assets/js/5ac42693.2b693fec.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5047],{75821:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var a=s(43010),n=s(90887);const r={slug:"/how-to-release"},i="How to Release",o={id:"contributing/how-to-release",title:"How to Release",description:"All Apache projects are required to follow the Apache Release Policy. This guide is intended to help you understand the policy and how to re [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/5ac42693.c9c79685.js b/zh-CN/assets/js/5ac42693.c9c79685.js
new file mode 100644
index 00000000..72622e4e
--- /dev/null
+++ b/zh-CN/assets/js/5ac42693.c9c79685.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5047],{75821:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var a=s(43010),n=s(90887);const r={slug:"/how-to-release"},i="How to Release",o={id:"contributing/how-to-release",title:"How to Release",description:"All Apache projects are required to follow the Apache Release Policy. This guide is intended to help you understand the policy and how to re [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/5aeeabc8.caa0390b.js b/zh-CN/assets/js/5aeeabc8.caa0390b.js
new file mode 100644
index 00000000..44f33f0f
--- /dev/null
+++ b/zh-CN/assets/js/5aeeabc8.caa0390b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5491],{55478:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>d});var o=t(43010),r=t(90887);const s={slug:"/development"},l="Overview",i={id:"development/overview",title:"Overview",description:"Frontend",source:"@site/docs/development/overview.md",sourceDirName:"development",slug:"/development",permalink:"/zh-CN/docs/development",draft:!1,unlisted:!1,edi [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/5b5253e0.3dec9cbf.js b/zh-CN/assets/js/5b5253e0.3dec9cbf.js
new file mode 100644
index 00000000..3fa29e75
--- /dev/null
+++ b/zh-CN/assets/js/5b5253e0.3dec9cbf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7734],{64608:(t,s,e)=>{e.r(s),e.d(s,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>r,toc:()=>l});var h=e(43010),n=e(90887);const i={sidebar_label:"\u6240\u4f9d\u8d56\u7684\u5f00\u6e90\u9879\u76ee",slug:"/contributing/notice"},c="\u6240\u4f9d\u8d56\u7684\u5f00\u6e90\u9879\u76ee",r={id:"notice",title:"\u6240\u4f9d\u8d56\u7684\u5f00\u6e90\u9879\u76ee",description:"\u8be5\u9879\u76ee\u5ef [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/5b5253e0.816ee5f1.js b/zh-CN/assets/js/5b5253e0.816ee5f1.js
deleted file mode 100644
index 95679d51..00000000
--- a/zh-CN/assets/js/5b5253e0.816ee5f1.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7734],{64608:(t,s,e)=>{e.r(s),e.d(s,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>r,toc:()=>l});var h=e(43010),n=e(90887);const i={sidebar_label:"\u6240\u4f9d\u8d56\u7684\u5f00\u6e90\u9879\u76ee",slug:"/contributing/notice"},c="\u6240\u4f9d\u8d56\u7684\u5f00\u6e90\u9879\u76ee",r={id:"notice",title:"\u6240\u4f9d\u8d56\u7684\u5f00\u6e90\u9879\u76ee",description:"\u8be5\u9879\u76ee\u5ef [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/5b5f4945.9a3f1669.js b/zh-CN/assets/js/5b5f4945.9a3f1669.js
deleted file mode 100644
index 4ce5a0ff..00000000
--- a/zh-CN/assets/js/5b5f4945.9a3f1669.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5253],{13769:(s,t,e)=>{e.r(t),e.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>r,toc:()=>c});var n=e(43010),a=e(90887);const i={slug:"/questions"},o="Questions",r={id:"guides/questions",title:"Questions",description:"Question status",source:"@site/docs/guides/questions.md",sourceDirName:"guides",slug:"/questions",permalink:"/zh-CN/docs/questions",draft:!1,unlisted:!1,editUrl:"http [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/5b5f4945.d3adcaf7.js b/zh-CN/assets/js/5b5f4945.d3adcaf7.js
new file mode 100644
index 00000000..736d9a0e
--- /dev/null
+++ b/zh-CN/assets/js/5b5f4945.d3adcaf7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5253],{13769:(s,t,e)=>{e.r(t),e.d(t,{assets:()=>u,contentTitle:()=>o,default:()=>l,frontMatter:()=>a,metadata:()=>r,toc:()=>c});var n=e(43010),i=e(90887);const a={slug:"/questions"},o="Questions",r={id:"guides/questions",title:"Questions",description:"Question status",source:"@site/docs/guides/questions.md",sourceDirName:"guides",slug:"/questions",permalink:"/zh-CN/docs/questions",draft:!1,unlisted:!1,editUrl:"http [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/692c6f9f.b6486106.js b/zh-CN/assets/js/692c6f9f.b6486106.js
deleted file mode 100644
index 9097717d..00000000
--- a/zh-CN/assets/js/692c6f9f.b6486106.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3483],{56842:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>c});var o=t(43010),r=t(90887);const s={slug:"/development"},l="Development",i={id:"contributing/development",title:"Development",description:"Frontend",source:"@site/community/contributing/development.md",sourceDirName:"contributing",slug:"/development",permalink:"/zh-CN/community/development" [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/6b66dba1.31caed86.js b/zh-CN/assets/js/6b66dba1.31caed86.js
new file mode 100644
index 00000000..a5b52ced
--- /dev/null
+++ b/zh-CN/assets/js/6b66dba1.31caed86.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7250],{70873:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>m,frontMatter:()=>s,metadata:()=>i,toc:()=>d});var o=n(43010),r=n(90887);const s={slug:"/moderation"},a=void 0,i={id:"guides/moderation",title:"moderation",description:"",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/moderation.md",sourceDirName:"guides",slug:"/moderation",permalink:"/zh-CN/docs/moderation",dra [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/6b66dba1.fce6c001.js b/zh-CN/assets/js/6b66dba1.fce6c001.js
deleted file mode 100644
index f00d1015..00000000
--- a/zh-CN/assets/js/6b66dba1.fce6c001.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7250],{70873:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>m,frontMatter:()=>s,metadata:()=>i,toc:()=>d});var o=n(43010),r=n(90887);const s={slug:"/moderation"},a=void 0,i={id:"guides/moderation",title:"moderation",description:"",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/moderation.md",sourceDirName:"guides",slug:"/moderation",permalink:"/zh-CN/docs/moderation",dra [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/6f494215.ab56cf1c.js b/zh-CN/assets/js/6f494215.ab56cf1c.js
deleted file mode 100644
index 23156470..00000000
--- a/zh-CN/assets/js/6f494215.ab56cf1c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[8773],{93928:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var o=t(43010),a=t(90887);const i={slug:"/api"},c="API Document",s={id:"development/api",title:"API Document",description:"Apache Answer using swagger to generate API document automatically. Swagger can display the API document in a friendly way, and can also provide a convenient way to te [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/6f494215.bc3e2281.js b/zh-CN/assets/js/6f494215.bc3e2281.js
new file mode 100644
index 00000000..8f11e5d4
--- /dev/null
+++ b/zh-CN/assets/js/6f494215.bc3e2281.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[8773],{93928:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});var o=t(43010),a=t(90887);const i={slug:"/api"},c="API Document",s={id:"development/api",title:"API Document",description:"Apache Answer using swagger to generate API document automatically. Swagger can display the API document in a friendly way, and can also provide a convenient way to te [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/6fd9b8bb.16ba9183.js b/zh-CN/assets/js/6fd9b8bb.16ba9183.js
new file mode 100644
index 00000000..4d148715
--- /dev/null
+++ b/zh-CN/assets/js/6fd9b8bb.16ba9183.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5498],{43875:(d,t,e)=>{e.r(t),e.d(t,{assets:()=>c,contentTitle:()=>n,default:()=>h,frontMatter:()=>r,metadata:()=>l,toc:()=>x});var s=e(43010),i=e(90887);const r={slug:"/database"},n="Database",l={id:"development/database",title:"Database",description:"Different databases have different data types. The following table presumes use of mysql/mariadb as an example.",source:"@site/docs/development/database.md",sourceDi [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/6fd9b8bb.a3b2b588.js b/zh-CN/assets/js/6fd9b8bb.a3b2b588.js
deleted file mode 100644
index 109c4280..00000000
--- a/zh-CN/assets/js/6fd9b8bb.a3b2b588.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5498],{43875:(d,t,e)=>{e.r(t),e.d(t,{assets:()=>l,contentTitle:()=>n,default:()=>h,frontMatter:()=>r,metadata:()=>c,toc:()=>x});var s=e(43010),i=e(90887);const r={slug:"/database"},n="Database",c={id:"development/database",title:"Database",description:"Different databases have different data types. The following table presumes use of mysql/mariadb as an example.",source:"@site/docs/development/database.md",sourceDi [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/719ef308.363d7e49.js b/zh-CN/assets/js/719ef308.363d7e49.js
deleted file mode 100644
index f5a41e65..00000000
--- a/zh-CN/assets/js/719ef308.363d7e49.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6606],{62152:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>u,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var n=r(43010),a=r(90887),s=r(71981),l=r(71401);const o={slug:"/upgrade"},u="\u5347\u7ea7",c={id:"getting-started/upgrade",title:"\u5347\u7ea7",description:"\u6211\u4eec\u5efa\u8bae\u5728\u5347\u7ea7\u4e4b\u524d\u5907\u4efd\u6570\u636e\u5e93\u548c\u914d\u7f6e\u6587\u4ef6\u3002\u901a\u5e38\ [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/719ef308.6c16edb2.js b/zh-CN/assets/js/719ef308.6c16edb2.js
new file mode 100644
index 00000000..e5a074c8
--- /dev/null
+++ b/zh-CN/assets/js/719ef308.6c16edb2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6606],{62152:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>u,default:()=>h,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var n=r(43010),a=r(90887),s=r(71981),l=r(71401);const o={slug:"/upgrade"},u="\u5347\u7ea7",c={id:"getting-started/upgrade",title:"\u5347\u7ea7",description:"\u6211\u4eec\u5efa\u8bae\u5728\u5347\u7ea7\u4e4b\u524d\u5907\u4efd\u6570\u636e\u5e93\u548c\u914d\u7f6e\u6587\u4ef6\u3002\u901a\u5e38\ [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/731fb1ee.38c186d9.js b/zh-CN/assets/js/731fb1ee.38c186d9.js
deleted file mode 100644
index 85706e7e..00000000
--- a/zh-CN/assets/js/731fb1ee.38c186d9.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2542],{68752:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>l,metadata:()=>r,toc:()=>o});var i=s(43010),t=s(90887);const l={slug:"/env"},c="\u73af\u5883\u53d8\u91cf",r={id:"getting-started/env",title:"\u73af\u5883\u53d8\u91cf",description:"\u5b89\u88c5",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/getting-started/env.md",sourceDirName:"getting-started",slug: [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/731fb1ee.64532c03.js b/zh-CN/assets/js/731fb1ee.64532c03.js
new file mode 100644
index 00000000..f69bd3bd
--- /dev/null
+++ b/zh-CN/assets/js/731fb1ee.64532c03.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2542],{68752:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>a,frontMatter:()=>l,metadata:()=>c,toc:()=>o});var i=s(43010),t=s(90887);const l={slug:"/env"},r="\u73af\u5883\u53d8\u91cf",c={id:"getting-started/env",title:"\u73af\u5883\u53d8\u91cf",description:"\u5b89\u88c5",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/getting-started/env.md",sourceDirName:"getting-started",slug: [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/7f220a89.7bb5db73.js b/zh-CN/assets/js/7f220a89.7bb5db73.js
deleted file mode 100644
index 7d2cf86f..00000000
--- a/zh-CN/assets/js/7f220a89.7bb5db73.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5757],{64513:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var a=t(43010),s=t(90887),r=t(71981),l=t(71401);const i={slug:"/installation"},c="\u5b89\u88c5\u6d41\u7a0b",o={id:"getting-started/installation",title:"\u5b89\u88c5\u6d41\u7a0b",description:"\ud83d\ude80 \u542f\u52a8 Apache Answer",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/cu [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/7f220a89.be794b2d.js b/zh-CN/assets/js/7f220a89.be794b2d.js
new file mode 100644
index 00000000..2755d427
--- /dev/null
+++ b/zh-CN/assets/js/7f220a89.be794b2d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5757],{64513:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>o,toc:()=>u});var a=t(43010),s=t(90887),r=t(71981),l=t(71401);const i={slug:"/installation"},c="\u5b89\u88c5\u6d41\u7a0b",o={id:"getting-started/installation",title:"\u5b89\u88c5\u6d41\u7a0b",description:"\ud83d\ude80 \u542f\u52a8 Apache Answer",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/cu [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/872d4ab4.657834c8.js b/zh-CN/assets/js/872d4ab4.657834c8.js
new file mode 100644
index 00000000..0fdf97b9
--- /dev/null
+++ b/zh-CN/assets/js/872d4ab4.657834c8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4759],{68581:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var n=t(43010),i=t(90887);const r={slug:"/issues"},d="Issues",o={id:"contributing/issues",title:"Issues",description:"There are some repos in the Apache Answer project, you can raise your issue for different repos.",source:"@site/community/contributing/issues.md",sourceDirName:"contributin [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/872d4ab4.faffc326.js b/zh-CN/assets/js/872d4ab4.faffc326.js
deleted file mode 100644
index 9048a5b9..00000000
--- a/zh-CN/assets/js/872d4ab4.faffc326.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4759],{68581:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>o,toc:()=>c});var n=t(43010),i=t(90887);const r={slug:"/issues"},d="Issues",o={id:"contributing/issues",title:"Issues",description:"There are some repos in the Apache Answer project, you can raise your issue for different repos.",source:"@site/community/contributing/issues.md",sourceDirName:"contributin [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/8a3109ec.84e952a5.js b/zh-CN/assets/js/8a3109ec.84e952a5.js
new file mode 100644
index 00000000..631244de
--- /dev/null
+++ b/zh-CN/assets/js/8a3109ec.84e952a5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4531],{76436:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>a,contentTitle:()=>r,default:()=>u,frontMatter:()=>l,metadata:()=>s,toc:()=>c});var i=t(43010),o=t(90887);const l={slug:"/development/plugins/plugin-translation"},r="Plugin Translation",s={id:"development/plugins/plugin-translation",title:"Plugin Translation",description:"Since answer supports multiple languages, the plugin also needs to support multiple languages.",s [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/935f2afb.0134276e.js b/zh-CN/assets/js/935f2afb.0134276e.js
new file mode 100644
index 00000000..8ab19de6
--- /dev/null
+++ b/zh-CN/assets/js/935f2afb.0134276e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"\u4e0b\u4e00\u4e2a","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","label":"\u4ecb\u7ecd","href":"/zh-CN/docs/","docId":"introduction","unlisted":false},{"type":"category","label":"Getting Started","collapsed":false,"items":[{"type":"link","label [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/935f2afb.c14c47cc.js b/zh-CN/assets/js/935f2afb.c14c47cc.js
deleted file mode 100644
index 1e5f6f25..00000000
--- a/zh-CN/assets/js/935f2afb.c14c47cc.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"\u4e0b\u4e00\u4e2a","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","label":"\u4ecb\u7ecd","href":"/zh-CN/docs/","docId":"introduction","unlisted":false},{"type":"category","label":"Getting Started","collapsed":false,"items":[{"type":"link","label [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/a4adfb7f.f26c30c4.js b/zh-CN/assets/js/a4adfb7f.f26c30c4.js
deleted file mode 100644
index 99c2de39..00000000
--- a/zh-CN/assets/js/a4adfb7f.f26c30c4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[1508],{65457:(n,e,i)=>{i.r(e),i.d(e,{assets:()=>u,contentTitle:()=>r,default:()=>a,frontMatter:()=>l,metadata:()=>s,toc:()=>c});var t=i(43010),o=i(90887);const l={sidebar_label:"Plugin Configuration Schema",slug:"/plugins/plugin-config"},r="Plugin Configuration Schema",s={id:"contributing/plugins/plugin-config",title:"Plugin Configuration Schema",description:"Feature",source:"@site/community/contributing/plugins/pl [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/a5b0ceb9.5359f408.js b/zh-CN/assets/js/a5b0ceb9.5359f408.js
new file mode 100644
index 00000000..ac70cb2c
--- /dev/null
+++ b/zh-CN/assets/js/a5b0ceb9.5359f408.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6431],{38237:(d,e,s)=>{s.r(e),s.d(e,{assets:()=>l,contentTitle:()=>i,default:()=>j,frontMatter:()=>n,metadata:()=>c,toc:()=>h});var t=s(43010),r=s(90887);const n={slug:"/permission"},i="\u6743\u9650",c={id:"guides/permission",title:"\u6743\u9650",description:"\u6743\u9650",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/permission.md",sourceDirName:"guides",slug:"/permission",permalink:"/zh-C [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/a5b0ceb9.a818a7b4.js b/zh-CN/assets/js/a5b0ceb9.a818a7b4.js
deleted file mode 100644
index 7b45dbe4..00000000
--- a/zh-CN/assets/js/a5b0ceb9.a818a7b4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6431],{38237:(d,s,e)=>{e.r(s),e.d(s,{assets:()=>l,contentTitle:()=>i,default:()=>j,frontMatter:()=>n,metadata:()=>c,toc:()=>h});var t=e(43010),r=e(90887);const n={slug:"/permission"},i="\u6743\u9650",c={id:"guides/permission",title:"\u6743\u9650",description:"\u6743\u9650",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/permission.md",sourceDirName:"guides",slug:"/permission",permalink:"/zh-C [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/bb350c59.8d31bf66.js b/zh-CN/assets/js/bb350c59.8d31bf66.js
deleted file mode 100644
index 2cca94a9..00000000
--- a/zh-CN/assets/js/bb350c59.8d31bf66.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[4517],{15002:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var t=i(43010),s=i(90887);const a={slug:"/plugins"},r="Using Plugins",l={id:"guides/plugins",title:"Using Plugins",description:"When we need to do some extensions to Apache Answer's functionality, for example, OAuth login, we design a way to use plugins to implement these functions.",sourc [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/c8c000df.86cb37f6.js b/zh-CN/assets/js/c8c000df.86cb37f6.js
deleted file mode 100644
index f7ae573d..00000000
--- a/zh-CN/assets/js/c8c000df.86cb37f6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9185],{21783:(n,e,l)=>{l.r(e),l.d(e,{assets:()=>h,contentTitle:()=>c,default:()=>o,frontMatter:()=>d,metadata:()=>r,toc:()=>t});var i=l(43010),s=l(90887);const d={slug:"/command-line"},c="\u547d\u4ee4\u884c",r={id:"getting-started/command-line",title:"\u547d\u4ee4\u884c",description:"Apache Answer \u4e8c\u8fdb\u5236\u6587\u4ef6\u652f\u6301\u4e00\u4e9b\u547d\u4ee4\u884c\u9009\u9879",source:"@site/i18n/zh-CN/docusaur [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/c8c000df.d385ba7e.js b/zh-CN/assets/js/c8c000df.d385ba7e.js
new file mode 100644
index 00000000..a425e10e
--- /dev/null
+++ b/zh-CN/assets/js/c8c000df.d385ba7e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9185],{21783:(n,e,l)=>{l.r(e),l.d(e,{assets:()=>h,contentTitle:()=>c,default:()=>o,frontMatter:()=>d,metadata:()=>r,toc:()=>t});var i=l(43010),s=l(90887);const d={slug:"/command-line"},c="\u547d\u4ee4\u884c",r={id:"getting-started/command-line",title:"\u547d\u4ee4\u884c",description:"Apache Answer \u4e8c\u8fdb\u5236\u6587\u4ef6\u652f\u6301\u4e00\u4e9b\u547d\u4ee4\u884c\u9009\u9879",source:"@site/i18n/zh-CN/docusaur [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/ca3ced4f.362c548b.js b/zh-CN/assets/js/ca3ced4f.362c548b.js
new file mode 100644
index 00000000..f01c9365
--- /dev/null
+++ b/zh-CN/assets/js/ca3ced4f.362c548b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6161],{67999:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>i,default:()=>l,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var s=n(43010),r=n(90887);const o={slug:"/settings"},i=void 0,c={id:"guides/settings",title:"settings",description:"",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/settings.md",sourceDirName:"guides",slug:"/settings",permalink:"/zh-CN/docs/settings",draft:!1,unlist [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/ca3ced4f.dce770b3.js b/zh-CN/assets/js/ca3ced4f.dce770b3.js
deleted file mode 100644
index e5f1135c..00000000
--- a/zh-CN/assets/js/ca3ced4f.dce770b3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6161],{67999:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>l,frontMatter:()=>o,metadata:()=>a,toc:()=>u});var s=n(43010),r=n(90887);const o={slug:"/settings"},i=void 0,a={id:"guides/settings",title:"settings",description:"",source:"@site/i18n/zh-CN/docusaurus-plugin-content-docs/current/guides/settings.md",sourceDirName:"guides",slug:"/settings",permalink:"/zh-CN/docs/settings",draft:!1,unlist [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/cb37bc33.7d2fdef0.js b/zh-CN/assets/js/cb37bc33.7d2fdef0.js
deleted file mode 100644
index 535ba0a1..00000000
--- a/zh-CN/assets/js/cb37bc33.7d2fdef0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9835],{15067:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>s,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>r,toc:()=>d});var a=t(43010),o=t(90887);const i={slug:"/configfile"},c="\u914d\u7f6e\u6587\u4ef6",r={id:"getting-started/configfile",title:"\u914d\u7f6e\u6587\u4ef6",description:"\u6211\u4eec\u4f7f\u7528 yaml \u914d\u7f6e\u6587\u4ef6\u3002\u5b83\u5c06\u5728\u6267\u884c answer init \u547d\u4ee4\u540e\u81 [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/cb37bc33.bcb5c79b.js b/zh-CN/assets/js/cb37bc33.bcb5c79b.js
new file mode 100644
index 00000000..5bc9cc9f
--- /dev/null
+++ b/zh-CN/assets/js/cb37bc33.bcb5c79b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[9835],{15067:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>s,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>c,toc:()=>d});var o=t(43010),i=t(90887);const a={slug:"/configfile"},r="\u914d\u7f6e\u6587\u4ef6",c={id:"getting-started/configfile",title:"\u914d\u7f6e\u6587\u4ef6",description:"\u6211\u4eec\u4f7f\u7528 yaml \u914d\u7f6e\u6587\u4ef6\u3002\u5b83\u5c06\u5728\u6267\u884c answer init \u547d\u4ee4\u540e\u81 [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/d7ef3cd8.1bd422b8.js b/zh-CN/assets/js/d7ef3cd8.1bd422b8.js
deleted file mode 100644
index b6822eb2..00000000
--- a/zh-CN/assets/js/d7ef3cd8.1bd422b8.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7944],{1430:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var o=t(43010),i=t(90887);const s={sidebar_label:"Blog Post",slug:"/blog-post"},r="Contribute a Blog Post",l={id:"contributing/blog-post",title:"Contribute a Blog Post",description:"Blogs are one of the easiest ways to get involved in Apache Answer. It is also a great way to share your know [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/d7ef3cd8.24e3ebdd.js b/zh-CN/assets/js/d7ef3cd8.24e3ebdd.js
new file mode 100644
index 00000000..a243fab6
--- /dev/null
+++ b/zh-CN/assets/js/d7ef3cd8.24e3ebdd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7944],{1430:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>l,toc:()=>d});var o=t(43010),i=t(90887);const s={sidebar_label:"Blog Post",slug:"/blog-post"},r="Contribute a Blog Post",l={id:"contributing/blog-post",title:"Contribute a Blog Post",description:"Blogs are one of the easiest ways to get involved in Apache Answer. It is also a great way to share your know [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/da6654f2.32151595.js b/zh-CN/assets/js/da6654f2.32151595.js
deleted file mode 100644
index 1ab105e1..00000000
--- a/zh-CN/assets/js/da6654f2.32151595.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3886],{33758:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var i=n(43010),s=n(90887);const r={slug:"/pull-request"},o="Pull Request",a={id:"contributing/pull-request",title:"Pull Request",description:"We appreciate you taking the time to contribute! Before submitting a pull request, we ask that you please create an issue that explains the bug or f [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/da6654f2.a704abbe.js b/zh-CN/assets/js/da6654f2.a704abbe.js
new file mode 100644
index 00000000..c8a306cf
--- /dev/null
+++ b/zh-CN/assets/js/da6654f2.a704abbe.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3886],{33758:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var i=n(43010),s=n(90887);const r={slug:"/pull-request"},o="Pull Request",a={id:"contributing/pull-request",title:"Pull Request",description:"We appreciate you taking the time to contribute! Before submitting a pull request, we ask that you please create an issue that explains the bug or f [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/dc8b965f.0b40c244.js b/zh-CN/assets/js/dc8b965f.0b40c244.js
new file mode 100644
index 00000000..4c230bfc
--- /dev/null
+++ b/zh-CN/assets/js/dc8b965f.0b40c244.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[2441],{89725:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>l,frontMatter:()=>i,metadata:()=>c,toc:()=>d});var s=n(43010),r=n(90887);const i={slug:"/review"},o="Review",c={id:"guides/review",title:"Review",description:"TODO",source:"@site/docs/guides/review.md",sourceDirName:"guides",slug:"/review",permalink:"/zh-CN/docs/review",draft:!1,unlisted:!1,editUrl:"https://crowdin.com/project/answer-w [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/e4ae456e.8016823a.js b/zh-CN/assets/js/e4ae456e.8016823a.js
deleted file mode 100644
index 8e5bc39c..00000000
--- a/zh-CN/assets/js/e4ae456e.8016823a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[7073],{92990:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>a,contentTitle:()=>r,default:()=>d,frontMatter:()=>l,metadata:()=>s,toc:()=>c});var i=t(43010),o=t(90887);const l={slug:"/plugins/plugin-translation"},r="Plugin Translation",s={id:"contributing/plugins/plugin-translation",title:"Plugin Translation",description:"Since answer supports multiple languages, the plugin also needs to support multiple languages.",source:"@sit [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/eafd45de.1fe3c84f.js b/zh-CN/assets/js/eafd45de.1fe3c84f.js
new file mode 100644
index 00000000..901e5674
--- /dev/null
+++ b/zh-CN/assets/js/eafd45de.1fe3c84f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6714],{54972:(n,t,e)=>{e.r(t),e.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var r=e(43010),o=e(90887);const i={slug:"/translation"},s="Translation",a={id:"contributing/translation",title:"Translation",description:"Our project is connected to crowdin for translation; we recommend contributing translations through crowdin.",source:"@site/community/contributing/trans [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/eafd45de.2fd9974d.js b/zh-CN/assets/js/eafd45de.2fd9974d.js
deleted file mode 100644
index 230fc15b..00000000
--- a/zh-CN/assets/js/eafd45de.2fd9974d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[6714],{54972:(n,t,e)=>{e.r(t),e.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var r=e(43010),o=e(90887);const i={slug:"/translation"},s="Translation",a={id:"contributing/translation",title:"Translation",description:"Our project is connected to crowdin for translation; we recommend contributing translations through crowdin.",source:"@site/community/contributing/trans [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/f8a2828b.b66a6743.js b/zh-CN/assets/js/f8a2828b.b66a6743.js
deleted file mode 100644
index 45a9dc77..00000000
--- a/zh-CN/assets/js/f8a2828b.b66a6743.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5297],{91569:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>i,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var n=s(43010),r=s(90887);const o={slug:"/tags"},a="Tags",c={id:"guides/tags",title:"Tags",description:"TODO",source:"@site/docs/guides/tags.md",sourceDirName:"guides",slug:"/tags",permalink:"/zh-CN/docs/tags",draft:!1,unlisted:!1,editUrl:"https://crowdin.com/project/answer-website/zh-CN", [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/f8a2828b.d051f5a9.js b/zh-CN/assets/js/f8a2828b.d051f5a9.js
new file mode 100644
index 00000000..d78e911f
--- /dev/null
+++ b/zh-CN/assets/js/f8a2828b.d051f5a9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[5297],{91569:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>i,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>c,toc:()=>d});var n=s(43010),r=s(90887);const o={slug:"/tags"},a="Tags",c={id:"guides/tags",title:"Tags",description:"TODO",source:"@site/docs/guides/tags.md",sourceDirName:"guides",slug:"/tags",permalink:"/zh-CN/docs/tags",draft:!1,unlisted:!1,editUrl:"https://crowdin.com/project/answer-website/zh-CN", [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/fd15fd1f.13a5f2c3.js b/zh-CN/assets/js/fd15fd1f.13a5f2c3.js
new file mode 100644
index 00000000..66317e77
--- /dev/null
+++ b/zh-CN/assets/js/fd15fd1f.13a5f2c3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[3587],{34343:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>p,contentTitle:()=>r,default:()=>u,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var t=i(43010),o=i(90887);const l={sidebar_label:"Plugin Configuration Schema",slug:"/development/plugins/plugin-config"},r="Plugin Configuration Schema",s={id:"development/plugins/plugin-config",title:"Plugin Configuration Schema",description:"Feature",source:"@site/docs/development/plugi [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/main.83a29ec0.js b/zh-CN/assets/js/main.83a29ec0.js
deleted file mode 100644
index c25d7b9b..00000000
--- a/zh-CN/assets/js/main.83a29ec0.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.83a29ec0.js.LICENSE.txt */
-(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[179],{94288:(e,t,n)=>{var r={"./":91884};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=94288},55679:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r,o,a,i,s=n(85170);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<argu [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/main.bfe2f634.js b/zh-CN/assets/js/main.bfe2f634.js
new file mode 100644
index 00000000..34d15523
--- /dev/null
+++ b/zh-CN/assets/js/main.bfe2f634.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.bfe2f634.js.LICENSE.txt */
+(self.webpackChunkanswer=self.webpackChunkanswer||[]).push([[179],{94288:(e,t,n)=>{var r={"./":91884};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=94288},55679:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r,o,a,i,s=n(85170);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<argu [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/main.83a29ec0.js.LICENSE.txt b/zh-CN/assets/js/main.bfe2f634.js.LICENSE.txt
similarity index 100%
rename from zh-CN/assets/js/main.83a29ec0.js.LICENSE.txt
rename to zh-CN/assets/js/main.bfe2f634.js.LICENSE.txt
diff --git a/zh-CN/assets/js/runtime~main.4bece41c.js b/zh-CN/assets/js/runtime~main.4bece41c.js
new file mode 100644
index 00000000..5d3d980a
--- /dev/null
+++ b/zh-CN/assets/js/runtime~main.4bece41c.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,a,f,b,d,c={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return c[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=c,r.c=t,e=[],r.O=(a,f,b,d)=>{if(!f){var c=1/0;for(i=0;i<e.length;i++){f=e[i][0],b=e[i][1],d=e[i][2];for(var t=!0,o=0;o<f.length;o++)(!1&d||c>=d)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,d<c&&(c=d));if(t){e.splice(i--,1);var n=b();void 0!==n&&(a=n)}}return a}d=d| [...]
\ No newline at end of file
diff --git a/zh-CN/assets/js/runtime~main.f7e6c917.js b/zh-CN/assets/js/runtime~main.f7e6c917.js
deleted file mode 100644
index 93baa196..00000000
--- a/zh-CN/assets/js/runtime~main.f7e6c917.js
+++ /dev/null
@@ -1 +0,0 @@
-(()=>{"use strict";var e,a,f,b,c,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return d[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=d,r.c=t,e=[],r.O=(a,f,b,c)=>{if(!f){var d=1/0;for(i=0;i<e.length;i++){f=e[i][0],b=e[i][1],c=e[i][2];for(var t=!0,o=0;o<f.length;o++)(!1&c||d>=c)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,c<d&&(d=c));if(t){e.splice(i--,1);var n=b();void 0!==n&&(a=n)}}return a}c=c| [...]
\ No newline at end of file
diff --git a/zh-CN/blog/2023/05/11/answer-1.0.9-release/index.html b/zh-CN/blog/2023/05/11/answer-1.0.9-release/index.html
index 29f152b2..19ed9f49 100644
--- a/zh-CN/blog/2023/05/11/answer-1.0.9-release/index.html
+++ b/zh-CN/blog/2023/05/11/answer-1.0.9-release/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/05/12/what-is-q-and-a-platform-and-how-to-use-it/index.html b/zh-CN/blog/2023/05/12/what-is-q-and-a-platform-and-how-to-use-it/index.html
index e7362e4e..8a6e5ee8 100644
--- a/zh-CN/blog/2023/05/12/what-is-q-and-a-platform-and-how-to-use-it/index.html
+++ b/zh-CN/blog/2023/05/12/what-is-q-and-a-platform-and-how-to-use-it/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/05/16/how-to-use-answer-for-effective-knowledge-retention/index.html b/zh-CN/blog/2023/05/16/how-to-use-answer-for-effective-knowledge-retention/index.html
index 4b99d1ad..017e11e8 100644
--- a/zh-CN/blog/2023/05/16/how-to-use-answer-for-effective-knowledge-retention/index.html
+++ b/zh-CN/blog/2023/05/16/how-to-use-answer-for-effective-knowledge-retention/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/05/23/why-open-source-is-the-essence-of-answer/index.html b/zh-CN/blog/2023/05/23/why-open-source-is-the-essence-of-answer/index.html
index 7402b2f1..59734c99 100644
--- a/zh-CN/blog/2023/05/23/why-open-source-is-the-essence-of-answer/index.html
+++ b/zh-CN/blog/2023/05/23/why-open-source-is-the-essence-of-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/05/30/everything-you-need-to-know-about-knowledge-base/index.html b/zh-CN/blog/2023/05/30/everything-you-need-to-know-about-knowledge-base/index.html
index e864fd52..4bfc8302 100644
--- a/zh-CN/blog/2023/05/30/everything-you-need-to-know-about-knowledge-base/index.html
+++ b/zh-CN/blog/2023/05/30/everything-you-need-to-know-about-knowledge-base/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/06/15/answer-1.1.0-release/index.html b/zh-CN/blog/2023/06/15/answer-1.1.0-release/index.html
index 418ff08d..98b1148c 100644
--- a/zh-CN/blog/2023/06/15/answer-1.1.0-release/index.html
+++ b/zh-CN/blog/2023/06/15/answer-1.1.0-release/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/06/20/how-to-improve-knowledge-sharing-with-answer/index.html b/zh-CN/blog/2023/06/20/how-to-improve-knowledge-sharing-with-answer/index.html
index 10d35f28..967999ea 100644
--- a/zh-CN/blog/2023/06/20/how-to-improve-knowledge-sharing-with-answer/index.html
+++ b/zh-CN/blog/2023/06/20/how-to-improve-knowledge-sharing-with-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/06/29/everything-you-need-to-know-about-answer/index.html b/zh-CN/blog/2023/06/29/everything-you-need-to-know-about-answer/index.html
index 939de35d..0957f96f 100644
--- a/zh-CN/blog/2023/06/29/everything-you-need-to-know-about-answer/index.html
+++ b/zh-CN/blog/2023/06/29/everything-you-need-to-know-about-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/07/05/how-to-build-a-help-center-with-your-users-and-answer/index.html b/zh-CN/blog/2023/07/05/how-to-build-a-help-center-with-your-users-and-answer/index.html
index c92024e4..0f89732a 100644
--- a/zh-CN/blog/2023/07/05/how-to-build-a-help-center-with-your-users-and-answer/index.html
+++ b/zh-CN/blog/2023/07/05/how-to-build-a-help-center-with-your-users-and-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/07/11/the-what-why-using-tags-for-online-community/index.html b/zh-CN/blog/2023/07/11/the-what-why-using-tags-for-online-community/index.html
index 75bc2b94..540425ff 100644
--- a/zh-CN/blog/2023/07/11/the-what-why-using-tags-for-online-community/index.html
+++ b/zh-CN/blog/2023/07/11/the-what-why-using-tags-for-online-community/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/07/19/how-to-utilize-reputation-and-privilege-in-online-community/index.html b/zh-CN/blog/2023/07/19/how-to-utilize-reputation-and-privilege-in-online-community/index.html
index 9428c99c..59ca927c 100644
--- a/zh-CN/blog/2023/07/19/how-to-utilize-reputation-and-privilege-in-online-community/index.html
+++ b/zh-CN/blog/2023/07/19/how-to-utilize-reputation-and-privilege-in-online-community/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/07/22/why-the-answer-plugin-system-was-designed-this-way/index.html b/zh-CN/blog/2023/07/22/why-the-answer-plugin-system-was-designed-this-way/index.html
index 2db1a23b..072ac6a6 100644
--- a/zh-CN/blog/2023/07/22/why-the-answer-plugin-system-was-designed-this-way/index.html
+++ b/zh-CN/blog/2023/07/22/why-the-answer-plugin-system-was-designed-this-way/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/08/09/how-to-manage-content-system-efficiently-with-answer/index.html b/zh-CN/blog/2023/08/09/how-to-manage-content-system-efficiently-with-answer/index.html
index 7e910cc4..f592efbf 100644
--- a/zh-CN/blog/2023/08/09/how-to-manage-content-system-efficiently-with-answer/index.html
+++ b/zh-CN/blog/2023/08/09/how-to-manage-content-system-efficiently-with-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/09/14/build-your-online-community-like-the-pros-with-answer/index.html b/zh-CN/blog/2023/09/14/build-your-online-community-like-the-pros-with-answer/index.html
index 531905b7..f62d343e 100644
--- a/zh-CN/blog/2023/09/14/build-your-online-community-like-the-pros-with-answer/index.html
+++ b/zh-CN/blog/2023/09/14/build-your-online-community-like-the-pros-with-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/09/27/celebrate-answer-first-anniversary-with-hacktoberfest-2023/index.html b/zh-CN/blog/2023/09/27/celebrate-answer-first-anniversary-with-hacktoberfest-2023/index.html
index 3f05b712..e421b5d4 100644
--- a/zh-CN/blog/2023/09/27/celebrate-answer-first-anniversary-with-hacktoberfest-2023/index.html
+++ b/zh-CN/blog/2023/09/27/celebrate-answer-first-anniversary-with-hacktoberfest-2023/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/10/24/answer-enters-apache-incubator/index.html b/zh-CN/blog/2023/10/24/answer-enters-apache-incubator/index.html
index 421f76a0..1450482e 100644
--- a/zh-CN/blog/2023/10/24/answer-enters-apache-incubator/index.html
+++ b/zh-CN/blog/2023/10/24/answer-enters-apache-incubator/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/10/31/answer-turns-one-and-is-now-apache-answer/index.html b/zh-CN/blog/2023/10/31/answer-turns-one-and-is-now-apache-answer/index.html
index c4dc5aad..a85bc033 100644
--- a/zh-CN/blog/2023/10/31/answer-turns-one-and-is-now-apache-answer/index.html
+++ b/zh-CN/blog/2023/10/31/answer-turns-one-and-is-now-apache-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/12/07/a-new-chapter-begins-answer-first-apache-release-launches/index.html b/zh-CN/blog/2023/12/07/a-new-chapter-begins-answer-first-apache-release-launches/index.html
index 6e63d079..78327363 100644
--- a/zh-CN/blog/2023/12/07/a-new-chapter-begins-answer-first-apache-release-launches/index.html
+++ b/zh-CN/blog/2023/12/07/a-new-chapter-begins-answer-first-apache-release-launches/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2023/12/13/behind-the-scene-how-we-launched-the-first-apache-release/index.html b/zh-CN/blog/2023/12/13/behind-the-scene-how-we-launched-the-first-apache-release/index.html
index 3e724db7..38da39fb 100644
--- a/zh-CN/blog/2023/12/13/behind-the-scene-how-we-launched-the-first-apache-release/index.html
+++ b/zh-CN/blog/2023/12/13/behind-the-scene-how-we-launched-the-first-apache-release/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2024/01/08/answer-1.2.1-ask-better-find-better/index.html b/zh-CN/blog/2024/01/08/answer-1.2.1-ask-better-find-better/index.html
index 8055b75b..f49a1d31 100644
--- a/zh-CN/blog/2024/01/08/answer-1.2.1-ask-better-find-better/index.html
+++ b/zh-CN/blog/2024/01/08/answer-1.2.1-ask-better-find-better/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2024/01/25/first-contribution-come-to-answer/index.html b/zh-CN/blog/2024/01/25/first-contribution-come-to-answer/index.html
index 200c845c..585b7546 100644
--- a/zh-CN/blog/2024/01/25/first-contribution-come-to-answer/index.html
+++ b/zh-CN/blog/2024/01/25/first-contribution-come-to-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
@@ -21,7 +21,7 @@
<!-- --><p>We are a group of Q&A enthusiasts, and it’s lovely to deliver a product that we truly love. Answer is an open-source Q&A software aiming to help people find the right answers, while unleashing collective wisdom for every team.</p>
<!-- --><p>We’ve tagged different issues for novices and veterans to get hands on in the <!-- --><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer">repository</a>.<!-- --></p>
<!-- --><p><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" alt="Issues" src="/zh-CN/assets/images/GitHub Screenshot-a6cda825a99b476195c3bb415d3067c6.jpeg" width="1241" height="507" class="img_WevL"></a></p>
-<!-- --><p>We know how important it is to have well-written and complete documentation to guide you. The Contributing doc covers everything you need, from how to submit an <!-- --><a href="https://answer.apache.org/community/issues" target="_blank" rel="noopener noreferrer">issue</a>, to develop a <!-- --><a href="https://answer.apache.org/community/plugins" target="_blank" rel="noopener noreferrer">plugin</a>, and how to write a <!-- --><a href="https://answer.apache.org/community/blog- [...]
+<!-- --><p>We know how important it is to have well-written and complete documentation to guide you. The Contributing doc covers everything you need, from how to submit an <!-- --><a href="https://answer.apache.org/community/issues" target="_blank" rel="noopener noreferrer">issue</a>, to develop a <!-- --><a href="https://answer.apache.org/docs/development/plugins" target="_blank" rel="noopener noreferrer">plugin</a>, and how to write a <!-- --><a href="https://answer.apache.org/communit [...]
<!-- --><p><img decoding="async" loading="lazy" alt="Answer Docs" src="/zh-CN/assets/images/Docs Screenshot-331f2a047565f822498c2eea3d5df60c.png" width="1891" height="695" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="not-sure-answer-is-a-good-fit">Not Sure Answer is a Good Fit?<!-- --><a href="#not-sure-answer-is-a-good-fit" class="hash-link" aria-label="Not Sure Answer is a Good Fit?的直接链接" title="Not Sure Answer is a Good Fit?的直接链接"></a></h2>
<!-- --><p>We know it takes courage to take the first step into the open-source world, and knowing what are the options out there is a must. These are some useful resources for you to explore and filter the project that matches your expertise.</p>
diff --git a/zh-CN/blog/2024/01/26/deploy-answer-https/index.html b/zh-CN/blog/2024/01/26/deploy-answer-https/index.html
index b80529a9..a68ca42c 100644
--- a/zh-CN/blog/2024/01/26/deploy-answer-https/index.html
+++ b/zh-CN/blog/2024/01/26/deploy-answer-https/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2024/02/04/must-read-notes-for-your-first-answer-contribution/index.html b/zh-CN/blog/2024/02/04/must-read-notes-for-your-first-answer-contribution/index.html
index 74105e33..f57defbb 100644
--- a/zh-CN/blog/2024/02/04/must-read-notes-for-your-first-answer-contribution/index.html
+++ b/zh-CN/blog/2024/02/04/must-read-notes-for-your-first-answer-contribution/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2024/02/05/project-ideas-for-google-summer-of-code-2024/index.html b/zh-CN/blog/2024/02/05/project-ideas-for-google-summer-of-code-2024/index.html
index 7c0b5cb2..fe443b35 100644
--- a/zh-CN/blog/2024/02/05/project-ideas-for-google-summer-of-code-2024/index.html
+++ b/zh-CN/blog/2024/02/05/project-ideas-for-google-summer-of-code-2024/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2024/02/20/answer-1.2.5-is-ready/index.html b/zh-CN/blog/2024/02/20/answer-1.2.5-is-ready/index.html
index 6dc4f41b..0ae6a9f2 100644
--- a/zh-CN/blog/2024/02/20/answer-1.2.5-is-ready/index.html
+++ b/zh-CN/blog/2024/02/20/answer-1.2.5-is-ready/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2024/03/18/meet-our-release-manager-linkinstars/index.html b/zh-CN/blog/2024/03/18/meet-our-release-manager-linkinstars/index.html
index cff99fb4..fcd1de8c 100644
--- a/zh-CN/blog/2024/03/18/meet-our-release-manager-linkinstars/index.html
+++ b/zh-CN/blog/2024/03/18/meet-our-release-manager-linkinstars/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2024/04/26/what-is-new-in-apache-answer-1.3.0/index.html b/zh-CN/blog/2024/04/26/what-is-new-in-apache-answer-1.3.0/index.html
index f4847c67..21f990d6 100644
--- a/zh-CN/blog/2024/04/26/what-is-new-in-apache-answer-1.3.0/index.html
+++ b/zh-CN/blog/2024/04/26/what-is-new-in-apache-answer-1.3.0/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2024/05/09/answer-ospp-2024/index.html b/zh-CN/blog/2024/05/09/answer-ospp-2024/index.html
index fd5f1d8a..2111e162 100644
--- a/zh-CN/blog/2024/05/09/answer-ospp-2024/index.html
+++ b/zh-CN/blog/2024/05/09/answer-ospp-2024/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2024/05/28/build-a-save-and-respectful-community-with-answer-1.3.1/index.html b/zh-CN/blog/2024/05/28/build-a-save-and-respectful-community-with-answer-1.3.1/index.html
index f3dc557c..ff93ced3 100644
--- a/zh-CN/blog/2024/05/28/build-a-save-and-respectful-community-with-answer-1.3.1/index.html
+++ b/zh-CN/blog/2024/05/28/build-a-save-and-respectful-community-with-answer-1.3.1/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2024/06/03/install-and-run-apache-answer-on-ubuntu-vps/index.html b/zh-CN/blog/2024/06/03/install-and-run-apache-answer-on-ubuntu-vps/index.html
index 2d68aff4..8e4b3aa8 100644
--- a/zh-CN/blog/2024/06/03/install-and-run-apache-answer-on-ubuntu-vps/index.html
+++ b/zh-CN/blog/2024/06/03/install-and-run-apache-answer-on-ubuntu-vps/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2024/06/05/apache-answer-joined-first-alc-hangzhou-meetup/index.html b/zh-CN/blog/2024/06/05/apache-answer-joined-first-alc-hangzhou-meetup/index.html
index 49a3e026..098a76bf 100644
--- a/zh-CN/blog/2024/06/05/apache-answer-joined-first-alc-hangzhou-meetup/index.html
+++ b/zh-CN/blog/2024/06/05/apache-answer-joined-first-alc-hangzhou-meetup/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/2024/06/20/how-to-search-like-a-pro-in-answer/index.html b/zh-CN/blog/2024/06/20/how-to-search-like-a-pro-in-answer/index.html
index 32664e16..722c55a3 100644
--- a/zh-CN/blog/2024/06/20/how-to-search-like-a-pro-in-answer/index.html
+++ b/zh-CN/blog/2024/06/20/how-to-search-like-a-pro-in-answer/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/archive/index.html b/zh-CN/blog/archive/index.html
index ef746104..13cd2649 100644
--- a/zh-CN/blog/archive/index.html
+++ b/zh-CN/blog/archive/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/atom.xml b/zh-CN/blog/atom.xml
index 1251430d..c52df806 100644
--- a/zh-CN/blog/atom.xml
+++ b/zh-CN/blog/atom.xml
@@ -618,7 +618,7 @@ Here’s how it works.</p>
<!-- --><p>We are a group of Q&A enthusiasts, and it’s lovely to deliver a product that we truly love. Answer is an open-source Q&A software aiming to help people find the right answers, while unleashing collective wisdom for every team.</p>
<!-- --><p>We’ve tagged different issues for novices and veterans to get hands on in the <!-- --><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer">repository</a>.<!-- --></p>
<!-- --><p><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" alt="Issues" src="https://answer.apache.org/zh-CN/assets/images/GitHub%20Screenshot-a6cda825a99b476195c3bb415d3067c6.jpeg" width="1241" height="507" class="img_WevL"></a></p>
-<!-- --><p>We know how important it is to have well-written and complete documentation to guide you. The Contributing doc covers everything you need, from how to submit an <!-- --><a href="https://answer.apache.org/community/issues" target="_blank" rel="noopener noreferrer">issue</a>, to develop a <!-- --><a href="https://answer.apache.org/community/plugins" target="_blank" rel="noopener noreferrer">plugin</a>, and how to write a <!-- --><a href="https://answer.apache.org/community/blog- [...]
+<!-- --><p>We know how important it is to have well-written and complete documentation to guide you. The Contributing doc covers everything you need, from how to submit an <!-- --><a href="https://answer.apache.org/community/issues" target="_blank" rel="noopener noreferrer">issue</a>, to develop a <!-- --><a href="https://answer.apache.org/docs/development/plugins" target="_blank" rel="noopener noreferrer">plugin</a>, and how to write a <!-- --><a href="https://answer.apache.org/communit [...]
<!-- --><p><img decoding="async" loading="lazy" alt="Answer Docs" src="https://answer.apache.org/zh-CN/assets/images/Docs%20Screenshot-331f2a047565f822498c2eea3d5df60c.png" width="1891" height="695" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="not-sure-answer-is-a-good-fit">Not Sure Answer is a Good Fit?<!-- --><a href="https://answer.apache.org/zh-CN/blog/2024/01/25/first-contribution-come-to-answer#not-sure-answer-is-a-good-fit" class="hash-link" aria-label="Not Sure Answer is a Good Fit?的直接链接" title="Not Sure Answer is a Good Fit?的直接链接"></a></h2>
<!-- --><p>We know it takes courage to take the first step into the open-source world, and knowing what are the options out there is a must. These are some useful resources for you to explore and filter the project that matches your expertise.</p>
diff --git a/zh-CN/blog/category/best-practice/index.html b/zh-CN/blog/category/best-practice/index.html
index c15fa8ad..2a854fda 100644
--- a/zh-CN/blog/category/best-practice/index.html
+++ b/zh-CN/blog/category/best-practice/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/category/community/index.html b/zh-CN/blog/category/community/index.html
index 4e3bd781..b30d8108 100644
--- a/zh-CN/blog/category/community/index.html
+++ b/zh-CN/blog/category/community/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/category/insights/index.html b/zh-CN/blog/category/insights/index.html
index eadb4ba3..36cb10e1 100644
--- a/zh-CN/blog/category/insights/index.html
+++ b/zh-CN/blog/category/insights/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/category/release/index.html b/zh-CN/blog/category/release/index.html
index 82d25750..6923648a 100644
--- a/zh-CN/blog/category/release/index.html
+++ b/zh-CN/blog/category/release/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/category/tech/index.html b/zh-CN/blog/category/tech/index.html
index 5f669dcb..bfdbd236 100644
--- a/zh-CN/blog/category/tech/index.html
+++ b/zh-CN/blog/category/tech/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/category/tutorials/index.html b/zh-CN/blog/category/tutorials/index.html
index 90bb6320..935e41d9 100644
--- a/zh-CN/blog/category/tutorials/index.html
+++ b/zh-CN/blog/category/tutorials/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/index.html b/zh-CN/blog/index.html
index 971ea0c0..e5a347d1 100644
--- a/zh-CN/blog/index.html
+++ b/zh-CN/blog/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/page/2/index.html b/zh-CN/blog/page/2/index.html
index 211a3e14..54584de7 100644
--- a/zh-CN/blog/page/2/index.html
+++ b/zh-CN/blog/page/2/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/rss.xml b/zh-CN/blog/rss.xml
index 138a0e5b..71081f49 100644
--- a/zh-CN/blog/rss.xml
+++ b/zh-CN/blog/rss.xml
@@ -579,7 +579,7 @@ Here’s how it works.</p>
<!-- --><p>We are a group of Q&A enthusiasts, and it’s lovely to deliver a product that we truly love. Answer is an open-source Q&A software aiming to help people find the right answers, while unleashing collective wisdom for every team.</p>
<!-- --><p>We’ve tagged different issues for novices and veterans to get hands on in the <!-- --><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer">repository</a>.<!-- --></p>
<!-- --><p><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" alt="Issues" src="https://answer.apache.org/zh-CN/assets/images/GitHub%20Screenshot-a6cda825a99b476195c3bb415d3067c6.jpeg" width="1241" height="507" class="img_WevL"></a></p>
-<!-- --><p>We know how important it is to have well-written and complete documentation to guide you. The Contributing doc covers everything you need, from how to submit an <!-- --><a href="https://answer.apache.org/community/issues" target="_blank" rel="noopener noreferrer">issue</a>, to develop a <!-- --><a href="https://answer.apache.org/community/plugins" target="_blank" rel="noopener noreferrer">plugin</a>, and how to write a <!-- --><a href="https://answer.apache.org/community/blog- [...]
+<!-- --><p>We know how important it is to have well-written and complete documentation to guide you. The Contributing doc covers everything you need, from how to submit an <!-- --><a href="https://answer.apache.org/community/issues" target="_blank" rel="noopener noreferrer">issue</a>, to develop a <!-- --><a href="https://answer.apache.org/docs/development/plugins" target="_blank" rel="noopener noreferrer">plugin</a>, and how to write a <!-- --><a href="https://answer.apache.org/communit [...]
<!-- --><p><img decoding="async" loading="lazy" alt="Answer Docs" src="https://answer.apache.org/zh-CN/assets/images/Docs%20Screenshot-331f2a047565f822498c2eea3d5df60c.png" width="1891" height="695" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="not-sure-answer-is-a-good-fit">Not Sure Answer is a Good Fit?<!-- --><a href="https://answer.apache.org/zh-CN/blog/2024/01/25/first-contribution-come-to-answer#not-sure-answer-is-a-good-fit" class="hash-link" aria-label="Not Sure Answer is a Good Fit?的直接链接" title="Not Sure Answer is a Good Fit?的直接链接"></a></h2>
<!-- --><p>We know it takes courage to take the first step into the open-source world, and knowing what are the options out there is a must. These are some useful resources for you to explore and filter the project that matches your expertise.</p>
diff --git a/zh-CN/blog/tags/index.html b/zh-CN/blog/tags/index.html
index b9478fe0..cccbb614 100644
--- a/zh-CN/blog/tags/index.html
+++ b/zh-CN/blog/tags/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/blog/tags/tutorials/index.html b/zh-CN/blog/tags/tutorials/index.html
index 1d012848..8296dfb4 100644
--- a/zh-CN/blog/tags/tutorials/index.html
+++ b/zh-CN/blog/tags/tutorials/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/community/blog-post/index.html b/zh-CN/community/blog-post/index.html
index 6fa83c78..1f302b4f 100644
--- a/zh-CN/community/blog-post/index.html
+++ b/zh-CN/community/blog-post/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>Blogs are one of the easiest ways to <!-- --><a href="/zh-CN/community/contributing#get-involved">get involved</a> in Apache Answer. It is also a great way to share your knowledge and experience with others.<!-- --></p>
<!-- --><p>If you've used Apache Answer to build your own Q&A community, or if Apache Answer has helped you solve a problem, we'd love to hear your story. We also encourage you to share tips and tricks for using Apache Answer, or to write about how to contribute to the project.</p>
<!-- --><p>To get started, just read our blog guidelines and get writing!</p>
@@ -96,6 +96,6 @@
<!-- --></li>
<!-- --></ol>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="others">Others<!-- --><a href="#others" class="hash-link" aria-label="Others的直接链接" title="Others的直接链接"></a></h2>
-<!-- --><p>For code submitting, you may also need to learn <!-- --><a href="https://git-scm.com/" target="_blank" rel="noopener noreferrer">Git</a> and <!-- --><a href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork" target="_blank" rel="noopener noreferrer">Pull Request</a>.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-m [...]
+<!-- --><p>For code submitting, you may also need to learn <!-- --><a href="https://git-scm.com/" target="_blank" rel="noopener noreferrer">Git</a> and <!-- --><a href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork" target="_blank" rel="noopener noreferrer">Pull Request</a>.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-m [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/contributing/index.html b/zh-CN/community/contributing/index.html
index f9b501f9..4c79682d 100644
--- a/zh-CN/community/contributing/index.html
+++ b/zh-CN/community/contributing/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>Thanks for your interest in contributing to Apache Answer, hopefully, this document makes the process for contributing clear.</p>
<!-- --><p>The <!-- --><a href="https://opensource.guide/" target="_blank" rel="noopener noreferrer">Open Source Guides</a> website has a collection of resources for individuals, communities, and companies who want to learn how to run and contribute to an open source project. Contributors and people new to open source alike will find the following guides especially useful:<!-- --></p>
<!-- --><ul>
@@ -50,7 +50,7 @@
<!-- --><h5 class="anchor anchorWithStickyNavbar_pwhL" id="develop-plugins">Develop plugins<!-- --><a href="#develop-plugins" class="hash-link" aria-label="Develop plugins的直接链接" title="Develop plugins的直接链接"></a></h5>
<!-- --><ul>
<!-- --><li>Extend the functionality of Apache Answer with plugins.</li>
-<!-- --><li>There are features that users are expecting, and you can claim or create your needs with <!-- --><a href="/zh-CN/community/plugins">develop and submit</a>.<!-- --></li>
+<!-- --><li>There are features that users are expecting, and you can claim or create your needs with <!-- --><a href="/zh-CN/docs/development/plugins">develop and submit</a>.<!-- --></li>
<!-- --></ul>
<!-- --><h5 class="anchor anchorWithStickyNavbar_pwhL" id="helping-with-version-releases">Helping with version releases<!-- --><a href="#helping-with-version-releases" class="hash-link" aria-label="Helping with version releases的直接链接" title="Helping with version releases的直接链接"></a></h5>
<!-- --><ul>
@@ -88,6 +88,6 @@
<!-- --><li>The <!-- --><code>main</code> branch corresponds to the <!-- --><strong>latest version</strong> of answer. If you're doing a <!-- --><strong>fix</strong> for the latest version, then select the main branch.<!-- --></li>
<!-- --><li>The <!-- --><code>dev</code> branch is for the <!-- --><strong>next version</strong>, so if you're working on a <!-- --><strong>new feature</strong>, checkout of the dev branch and PR for it.<!-- --></li>
<!-- --></ul>
-<!-- --><p>Normally, we mark milestones on an issue to keep track of which version the issue should be fixed in. So you can check which version you should commit to based on the milestone.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" v [...]
+<!-- --><p>Normally, we mark milestones on an issue to keep track of which version the issue should be fixed in. So you can check which version you should commit to based on the milestone.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" v [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/development/index.html b/zh-CN/community/development/index.html
index f75c23b6..aab2eafe 100644
--- a/zh-CN/community/development/index.html
+++ b/zh-CN/community/development/index.html
@@ -1,56 +1,11 @@
-<!doctype html>
-<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/development" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Development | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/zh-CN [...]
-<link rel="alternate" type="application/rss+xml" href="/zh-CN/blog/rss.xml" title="Apache Answer RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/zh-CN/blog/atom.xml" title="Apache Answer Atom Feed">
-
-
-
-<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="frontend">Frontend<!-- --><a href="#frontend" class="hash-link" aria-label="Frontend的直接链接" title="Frontend的直接链接"></a></h2>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="installation">Installation<!-- --><a href="#installation" class="hash-link" aria-label="Installation的直接链接" title="Installation的直接链接"></a></h3>
-<!-- --><ol>
-<!-- --><li>Ensure you have <!-- --><a href="https://nodejs.org/en" target="_blank" rel="noopener noreferrer">node</a> and <!-- --><a href="https://pnpm.io/installation" target="_blank" rel="noopener noreferrer">pnpm</a> installed.<!-- --></li>
-<!-- --><li>After cloning the repository, run the following command. This will install all dependencies as well as build all local packages.</li>
-<!-- --></ol>
-<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">cd</span><span class="token plain"> ./ui</span><br></span><span class="token-line" style="color:#393A34"><span clas [...]
-<!-- --><ol start="3">
-<!-- --><li>To start a development server, run <!-- --><code>pnpm start</code>. now, your browser should already open automatically, and autoload <!-- --><code>http://localhost:3000</code>. you can also manually visit it.<!-- --></li>
-<!-- --><li>To switch API, you can modify the <!-- --><code>ui/.env.development</code> file and then re-run pnpm start. If you're just using it yourself, we recommend creating a <!-- --><code>.env.development.local</code> file that defines the address of the api you're going to use.<!-- --></li>
-<!-- --></ol>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="code-conventions">Code conventions<!-- --><a href="#code-conventions" class="hash-link" aria-label="Code conventions的直接链接" title="Code conventions的直接链接"></a></h3>
-<!-- --><ul>
-<!-- --><li><strong>Most important: Look around.</strong> Match the style you see used in the rest of the project. This includes formatting, naming files, naming things in code, naming things in documentation, etc.<!-- --></li>
-<!-- --><li>We do have Prettier (a formatter) and ESLint (a syntax linter) to catch most stylistic problems. If you are working locally, you can run <!-- --><code>pnpm lint</code> and <!-- --><code>pnpm prettier</code> to fix most code formatting.<!-- --></li>
-<!-- --><li><strong>No runtime errors</strong> Before submitting the code, please ensure that there will be no errors when running locally. This will greatly reduce the workload of review.<!-- --></li>
-<!-- --></ul>
-<!-- --><details class="details_feHX alert alert--info details_rGhr" data-collapsed="true"><summary>frontend package structure</summary><div><div class="collapsibleContent_jTXV"><div><div class="codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-text codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393 [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend">Backend<!-- --><a href="#backend" class="hash-link" aria-label="Backend的直接链接" title="Backend的直接链接"></a></h2>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="installation-1">Installation<!-- --><a href="#installation-1" class="hash-link" aria-label="Installation的直接链接" title="Installation的直接链接"></a></h3>
-<!-- --><ol>
-<!-- --><li>Ensure you have <!-- --><a href="https://go.dev/doc/install" target="_blank" rel="noopener noreferrer">golang</a> installed.<!-- --></li>
-<!-- --><li>After cloning the repository, run the following command for build.</li>
-<!-- --></ol>
-<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go mod download</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">go run cmd/answer/main [...]
-<!-- --><ol start="3">
-<!-- --><li>
-<!-- --><p>Visit <!-- --><code>http://localhost</code> to see the installation page and complete the installation.<!-- --></p>
-<!-- --></li>
-<!-- --><li>
-<!-- --><p>Run the following command to start the server.</p>
-<!-- --></li>
-<!-- --></ol>
-<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go run cmd/answer/main.go run -C ./answer-data</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="code-conventions-1">Code conventions<!-- --><a href="#code-conventions-1" class="hash-link" aria-label="Code conventions的直接链接" title="Code conventions的直接链接"></a></h3>
-<!-- --><p>We recommend that you follow <!-- --><a href="https://github.com/uber-go/guide" target="_blank" rel="noopener noreferrer">uber's Golang Guidelines</a> code style.<!-- --></p>
-<!-- --><details class="details_feHX alert alert--info details_rGhr" data-collapsed="true"><summary>backend package structure</summary><div><div class="collapsibleContent_jTXV"><div><div class="codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-text codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A [...]
-</body>
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/zh-CN/docs/development">
+ <link rel="canonical" href="/zh-CN/docs/development" />
+ </head>
+ <script>
+ window.location.href = '/zh-CN/docs/development' + window.location.search + window.location.hash;
+ </script>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/how-to-release/index.html b/zh-CN/community/how-to-release/index.html
index 8d4c96b5..7e5ebab3 100644
--- a/zh-CN/community/how-to-release/index.html
+++ b/zh-CN/community/how-to-release/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>All Apache projects are required to follow the <!-- --><a href="https://www.apache.org/legal/release-policy.html" target="_blank" rel="noopener noreferrer">Apache Release Policy</a>. This guide is intended to help you understand the policy and how to release projects at Apache.<!-- --></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="release-process">Release process<!-- --><a href="#release-process" class="hash-link" aria-label="Release process的直接链接" title="Release process的直接链接"></a></h2>
<!-- --><ol>
@@ -91,6 +91,6 @@
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="note">Note<!-- --><a href="#note" class="hash-link" aria-label="Note的直接链接" title="Note的直接链接"></a></h2>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="rc-tag">RC Tag<!-- --><a href="#rc-tag" class="hash-link" aria-label="RC Tag的直接链接" title="RC Tag的直接链接"></a></h3>
<!-- --><p>When you want to release a new version, you need to create a new RC tag in the git repository firstly. The tag name should be <!-- --><code>v{release-version}-rc{rc-version}</code>. This has the advantage of avoiding tag deletion.<!-- --></p>
-<!-- --><p>For example, if you want to release version <!-- --><code>1.2.0</code>, you need to create a tag named <!-- --><code>v1.2.0-RC1</code>. RC means Release Candidate. After the release vote is passed, you need to create a new tag named <!-- --><code>v1.2.0</code> based on the RC tag. However, if the vote is not passed, you can fix the problems and create a new RC tag such as <!-- --><code>v1.2.0-RC2</code> and start a new vote.<!-- --></p></div><footer class="theme-doc-footer doc [...]
+<!-- --><p>For example, if you want to release version <!-- --><code>1.2.0</code>, you need to create a tag named <!-- --><code>v1.2.0-RC1</code>. RC means Release Candidate. After the release vote is passed, you need to create a new tag named <!-- --><code>v1.2.0</code> based on the RC tag. However, if the vote is not passed, you can fix the problems and create a new RC tag such as <!-- --><code>v1.2.0-RC2</code> and start a new vote.<!-- --></p></div><footer class="theme-doc-footer doc [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/issues/index.html b/zh-CN/community/issues/index.html
index d8f2d4fd..74192c9b 100644
--- a/zh-CN/community/issues/index.html
+++ b/zh-CN/community/issues/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>There are some repos in the Apache Answer project, you can raise your issue for different repos.</p>
<!-- --><table><thead><tr><th>Repo</th><th>Description</th><th>Issues</th></tr></thead><tbody><tr><td>Apache Answer</td><td>Apache Answer core code</td><td><a href="https://github.com/apache/incubator-answer/issues" target="_blank" rel="noopener noreferrer">Issues</a></td></tr><tr><td>Apache Answer Plugins</td><td>Apache Answer plugins code</td><td><a href="https://github.com/apache/incubator-answer-plugins/issues" target="_blank" rel="noopener noreferrer">Issues</a></td></tr><tr><td>Apa [...]
<!-- --><p>When opening a new issue, always make sure to fill out the issue template. <!-- --><strong>This step is very important!</strong> Not doing so may result in your issue not being managed in a timely fashion. Don't take this personally if this happens, and feel free to open a new issue once you've gathered all the information required by the template.<!-- --></p>
@@ -39,6 +39,6 @@
<!-- --><p>If we think the feature request is a good idea, we'll add it to the roadmap and set the milestone. If you want to implement it, comment on the issue, and we'll assign it to you.</p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="issues-labels">Issues labels<!-- --><a href="#issues-labels" class="hash-link" aria-label="Issues labels的直接链接" title="Issues labels的直接链接"></a></h2>
<!-- --><p>We use labels to categorize issues.</p>
-<!-- --><table><thead><tr><th>Label</th><th>Description</th></tr></thead><tbody><tr><td><code>bug</code></td><td>Indicates an unexpected problem or unintended behavior</td></tr><tr><td><code>documentation</code></td><td>Indicates a need for improvements or additions to documentation</td></tr><tr><td><code>duplicate</code></td><td>Indicates similar issues, pull requests, or discussions</td></tr><tr><td><code>feature</code></td><td>Indicates new feature requests</td></tr><tr><td><code>enha [...]
+<!-- --><table><thead><tr><th>Label</th><th>Description</th></tr></thead><tbody><tr><td><code>bug</code></td><td>Indicates an unexpected problem or unintended behavior</td></tr><tr><td><code>documentation</code></td><td>Indicates a need for improvements or additions to documentation</td></tr><tr><td><code>duplicate</code></td><td>Indicates similar issues, pull requests, or discussions</td></tr><tr><td><code>feature</code></td><td>Indicates new feature requests</td></tr><tr><td><code>enha [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/plugins/index.html b/zh-CN/community/plugins/index.html
index 0d6ab49e..adf3b123 100644
--- a/zh-CN/community/plugins/index.html
+++ b/zh-CN/community/plugins/index.html
@@ -1,99 +1,11 @@
-<!doctype html>
-<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/plugins" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Contribute for Plugins | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apach [...]
-<link rel="alternate" type="application/rss+xml" href="/zh-CN/blog/rss.xml" title="Apache Answer RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/zh-CN/blog/atom.xml" title="Apache Answer Atom Feed">
-
-
-
-<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="plugin-types">Plugin types<!-- --><a href="#plugin-types" class="hash-link" aria-label="Plugin types的直接链接" title="Plugin types的直接链接"></a></h2>
-<!-- --><p>Currently we have three types of plugins:</p>
-<!-- --><ul>
-<!-- --><li>Only Backend plugin</li>
-<!-- --><li>Frontend Builtin plugin</li>
-<!-- --><li>Standard UI plugin</li>
-<!-- --></ul>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend-plugin">Backend plugin<!-- --><a href="#backend-plugin" class="hash-link" aria-label="Backend plugin的直接链接" title="Backend plugin的直接链接"></a></h2>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="implement-the-base-interface">Implement the Base interface<!-- --><a href="#implement-the-base-interface" class="hash-link" aria-label="Implement the Base interface的直接链接" title="Implement the Base interface的直接链接"></a></h3>
-<!-- --><p>The <!-- --><code>Base</code> interface contains basic information about the plugin and is used to display.<!-- --></p>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Info presents the plugin information</span><span class="token plain"></span><br></span><s [...]
-<!-- --><div class="theme-admonition theme-admonition-caution admonition_eWuJ alert alert--warning"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>警 [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="implement-the-function-interface">Implement the function interface<!-- --><a href="#implement-the-function-interface" class="hash-link" aria-label="Implement the function interface的直接链接" title="Implement the function interface的直接链接"></a></h3>
-<!-- --><div class="theme-admonition theme-admonition-note admonition_eWuJ alert alert--secondary"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.1 [...]
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> Connector </span><span class="token keyword" style="color:#00009f">inter [...]
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="implement-the-configuration-interface">Implement the configuration interface<!-- --><a href="#implement-the-configuration-interface" class="hash-link" aria-label="Implement the configuration interface的直接链接" title="Implement the configuration interface的直接链接"></a></h3>
-<!-- --><p>For details on the description of each configuration item, please refer to <!-- --><a href="/zh-CN/community/plugins/plugin-config">the documentation</a>.<!-- --></p>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> Config </span><span class="token keyword" style="color:#00009f">interfac [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="register-initialization-function">Register initialization function<!-- --><a href="#register-initialization-function" class="hash-link" aria-label="Register initialization function的直接链接" title="Register initialization function的直接链接"></a></h3>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"github.c [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="debugging-tips">Debugging tips<!-- --><a href="#debugging-tips" class="hash-link" aria-label="Debugging tips的直接链接" title="Debugging tips的直接链接"></a></h3>
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><ol>
-<!-- --><li>Use answer source code for development.</li>
-<!-- --><li>Write your plugin directly in the plugin directory.</li>
-<!-- --><li>Import your plugin in the main function</li>
-<!-- --></ol>
-<!-- --><p>After that you just need to start the answer project normally and it will contain the plugins you developed.</p>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="registration-and-activation-of-plugins">Registration and activation of plugins<!-- --><a href="#registration-and-activation-of-plugins" class="hash-link" aria-label="Registration and activation of plugins的直接链接" title="Registration and activation of plugins的直接链接"></a></h2>
-<!-- --><p>All types of plug-in activation registration (or display) logic are in the <!-- --><code>ui/utils/pluginKit/index.ts</code> file. During the development process, you can modify <!-- --><code>registerPlugins</code> or call <!-- --><code>changePluginActiveStatus</code> either of these two methods. to control whether your plugin is displayed.<!-- --></p>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="builtin-plugin">Builtin plugin<!-- --><a href="#builtin-plugin" class="hash-link" aria-label="Builtin plugin的直接链接" title="Builtin plugin的直接链接"></a></h2>
-<!-- --><p>It is not so different from React component, this plugin is more suitable for the following scenarios:</p>
-<!-- --><ol>
-<!-- --><li>There are complex business logics that cannot be separated from the code (such as Oauth).</li>
-<!-- --><li>Some back-end plug-ins require UI support for business purposes (such as Search).</li>
-<!-- --><li>This plug-in has extremely low requirements for developers and requires no additional configuration work.</li>
-<!-- --></ol>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="how-to-develop-builtin-plugin">How to develop builtin plugin<!-- --><a href="#how-to-develop-builtin-plugin" class="hash-link" aria-label="How to develop builtin plugin的直接链接" title="How to develop builtin plugin的直接链接"></a></h3>
-<!-- --><ol>
-<!-- --><li><strong>Get familiar with the directory structure</strong>. Go to the <!-- --><code>ui/src/plugins/builtin</code> directory and create a directory, such as Demo. Then refer to the existing plugins to create the necessary files to start development.<!-- --></li>
-<!-- --></ol>
-<!-- --><div class="language-txt codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-txt codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">// ui/src/plugins/builtin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">.</span><br></sp [...]
-<!-- --><ol start="2">
-<!-- --><li>Export the plugins you have just defined in the plugins list file <!-- --><code>plugins/builtin/index.ts</code></li>
-<!-- --></ol>
-<!-- --><div class="language-ts codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-ts codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> Demo </span><span class="token keyword" style="color:#00009f">from</sp [...]
-<!-- --><ol start="3">
-<!-- --><li>Now you can use the PluginRender component to render the just-defined plugin where you want it!</li>
-<!-- --></ol>
-<!-- --><div class="language-ts codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-ts codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token operator" style="color:#393A34"><</span><span class="token plain">PluginRender</span><br></span><span c [...]
-<!-- --><ol start="4">
-<!-- --><li><strong>Publish plugin</strong>: initiate the PR process normally and describe the plug-in function and scope of influence in detail.<!-- --></li>
-<!-- --></ol>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="standard-ui-plugin">Standard UI plugin<!-- --><a href="#standard-ui-plugin" class="hash-link" aria-label="Standard UI plugin的直接链接" title="Standard UI plugin的直接链接"></a></h2>
-<!-- --><p>This plugin is suitable for the following scenarios</p>
-<!-- --><ol>
-<!-- --><li>A plug-in that can independently complete some UI functions and does not require back-end support;</li>
-<!-- --><li>The code needs to be isolated to prevent confusion with the main site;</li>
-<!-- --></ol>
-<!-- --><p>Existing examples:<!-- --><a href="https://github.com/apache/incubator-answer-plugins/tree/main/editor-chart" target="_blank" rel="noopener noreferrer">editor-chart</a>, <!-- --><a href="https://github.com/apache/incubator-answer-plugins/tree/main/editor-formula" target="_blank" rel="noopener noreferrer">editor-formula</a>.<!-- --></p>
-<!-- --><p>In order to simplify the development and compilation process, we use <!-- --><a href="https://pnpm.io/next/workspaces" target="_blank" rel="noopener noreferrer">workspace</a> to manage this independent front-end warehouse.<!-- --></p>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="how-to-develop-standard-ui-plugin">How to develop standard UI plugin<!-- --><a href="#how-to-develop-standard-ui-plugin" class="hash-link" aria-label="How to develop standard UI plugin的直接链接" title="How to develop standard UI plugin的直接链接"></a></h3>
-<!-- --><ol>
-<!-- --><li>First, refer to the two existing warehouses above to familiarize yourself with the basic configuration and component export methods.</li>
-<!-- --></ol>
-<!-- --><div class="theme-admonition theme-admonition-info admonition_eWuJ alert alert--info"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>信息<!-- --></div><div class="admonitionContent_ioOH"><p>The <!-- --><strong [...]
-<!-- -->"editor-chart" ❌<!-- --></p></div></div>
-<!-- --><ol start="2">
-<!-- --><li>Go to the <!-- --><code>ui/src/plugins</code> directory and create a directory, such as editor_chart, then add the components you want to develop, then modify the <!-- --><code>ui/src/plugins/index.ts</code> file to export your components; <!-- --><strong>changes here during the release phase do not need to be submitted</strong>.<!-- --></li>
-<!-- --></ol>
-<!-- --><div class="language-ts codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-ts codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span>< [...]
-<!-- --><ol start="3">
-<!-- --><li>Run <!-- --><code>pnpm pre-install</code>, and re-run <!-- --><code>pnpm start</code>, and finally call the changePluginActiveStatus method in PluginKit on the page where you need to load the plugin to activate the plugin. <!-- --><strong>Changes here during the release phase do not need to be submitted</strong>.<!-- --></li>
-<!-- --></ol>
-<!-- --><div class="language-ts codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-ts codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> PluginKit </span><span class="token keyword" style="color:#00009f">fro [...]
-<!-- --><ol start="4">
-<!-- --><li><strong>Publish plugin</strong>: after the function is developed, copy your entire plug-in folder to <!-- --><a href="https://github.com/apache/incubator-answer-plugins" target="_blank" rel="noopener noreferrer">incubator-answer-plugins</a>, <!-- --><strong>and add <!-- --><code>go.mod</code> <!-- --><code>[plugin_name].go</code> <!-- --><code>go.sum</code> these three files<!-- --></strong>; then initiate a PR and wait for review by relevant personnel; if incubator-answer I [...]
-<!-- --></ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
-</body>
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/zh-CN/docs/development/plugins">
+ <link rel="canonical" href="/zh-CN/docs/development/plugins" />
+ </head>
+ <script>
+ window.location.href = '/zh-CN/docs/development/plugins' + window.location.search + window.location.hash;
+ </script>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/plugins/plugin-config/index.html b/zh-CN/community/plugins/plugin-config/index.html
index 095f9415..1e65a612 100644
--- a/zh-CN/community/plugins/plugin-config/index.html
+++ b/zh-CN/community/plugins/plugin-config/index.html
@@ -1,62 +1,11 @@
-<!doctype html>
-<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/plugins/plugin-config" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Plugin Configuration Schema | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer. [...]
-<link rel="alternate" type="application/rss+xml" href="/zh-CN/blog/rss.xml" title="Apache Answer RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/zh-CN/blog/atom.xml" title="Apache Answer Atom Feed">
-
-
-
-<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="feature">Feature<!-- --><a href="#feature" class="hash-link" aria-label="Feature的直接链接" title="Feature的直接链接"></a></h2>
-<!-- --><p>For plugins, we often need some configuration items to record the information necessary for the plugin.</p>
-<!-- --><p>For example, OAuth plugins require secret key configuration. These configurations need to be described by the developer and used by the user. So, the following is about how to describe the configuration required for a plugin.</p>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="backend--plugin-developer">Backend & plugin developer<!-- --><a href="#backend--plugin-developer" class="hash-link" aria-label="Backend & plugin developer的直接链接" title="Backend & plugin developer的直接链接"></a></h3>
-<!-- --><div class="theme-admonition theme-admonition-note admonition_eWuJ alert alert--secondary"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.1 [...]
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> ConfigField </span><span class="token keyword" style="color:#00009f">str [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="frontend">Frontend<!-- --><a href="#frontend" class="hash-link" aria-label="Frontend的直接链接" title="Frontend的直接链接"></a></h3>
-<!-- --><div class="theme-admonition theme-admonition-note admonition_eWuJ alert alert--secondary"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.1 [...]
-<!-- --><div class="language-json codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-json codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><sp [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="github-connector-plugin-configuration-example">GitHub Connector Plugin Configuration Example<!-- --><a href="#github-connector-plugin-configuration-example" class="hash-link" aria-label="GitHub Connector Plugin Configuration Example的直接链接" title="GitHub Connector Plugin Configuration Example的直接链接"></a></h3>
-<!-- --><div class="language-json codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-json codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><sp [...]
-<!-- --><p>The following is what looks like on the Admin Page.</p>
-<!-- --><p><img decoding="async" loading="lazy" alt="plugin-github-connector-config" src="/zh-CN/assets/images/plugin-github-connector-config-07bc10250eeffbadf333b16993113499.png" width="2648" height="830" class="img_WevL"></p>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="supported-config-types">Supported config types<!-- --><a href="#supported-config-types" class="hash-link" aria-label="Supported config types的直接链接" title="Supported config types的直接链接"></a></h3>
-<!-- --><p>Different types will be rendered as different UI.</p>
-<!-- --><ul>
-<!-- --><li>input</li>
-<!-- --><li>textarea</li>
-<!-- --><li>checkbox</li>
-<!-- --><li>radio</li>
-<!-- --><li>select</li>
-<!-- --><li>upload</li>
-<!-- --><li>timezone</li>
-<!-- --><li>switch</li>
-<!-- --></ul>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="supported-config-input-types">Supported config input types<!-- --><a href="#supported-config-input-types" class="hash-link" aria-label="Supported config input types的直接链接" title="Supported config input types的直接链接"></a></h3>
-<!-- --><p>Different formats are supported for the input type.</p>
-<!-- --><ul>
-<!-- --><li>text</li>
-<!-- --><li>color</li>
-<!-- --><li>date</li>
-<!-- --><li>datetime-local</li>
-<!-- --><li>email</li>
-<!-- --><li>month</li>
-<!-- --><li>number</li>
-<!-- --><li>password</li>
-<!-- --><li>range</li>
-<!-- --><li>search</li>
-<!-- --><li>tel</li>
-<!-- --><li>time</li>
-<!-- --><li>url</li>
-<!-- --><li>week</li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
-</body>
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/zh-CN/docs/development/plugins/plugin-config">
+ <link rel="canonical" href="/zh-CN/docs/development/plugins/plugin-config" />
+ </head>
+ <script>
+ window.location.href = '/zh-CN/docs/development/plugins/plugin-config' + window.location.search + window.location.hash;
+ </script>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/plugins/plugin-translation/index.html b/zh-CN/community/plugins/plugin-translation/index.html
index e0972d43..6cde328f 100644
--- a/zh-CN/community/plugins/plugin-translation/index.html
+++ b/zh-CN/community/plugins/plugin-translation/index.html
@@ -1,50 +1,11 @@
-<!doctype html>
-<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/plugins/plugin-translation" data-has-hydrated="false">
-<head>
-<meta charset="UTF-8">
-<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Plugin Translation | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.or [...]
-<link rel="alternate" type="application/rss+xml" href="/zh-CN/blog/rss.xml" title="Apache Answer RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/zh-CN/blog/atom.xml" title="Apache Answer Atom Feed">
-
-
-
-<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
-</head>
-<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><p>Since answer supports multiple languages, the plugin also needs to support multiple languages.
-The following is an example of how to make your plugin support multiple languages.</p>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="translator-structure">Translator structure<!-- --><a href="#translator-structure" class="hash-link" aria-label="Translator structure的直接链接" title="Translator structure的直接链接"></a></h2>
-<!-- --><p>In some plugins interface, you can see the <!-- --><code>Translator</code> structure, which is used to support multiple languages.<!-- --></p>
-<!-- --><p>For example, the <!-- --><code>ConfigField</code> structure has a <!-- --><code>Title</code> field of type <!-- --><code>Translator</code>.<!-- --></p>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> ConfigField </span><span class="token keyword" style="color:#00009f">str [...]
-<!-- --><p>It's easy to build a <!-- --><code>Translator</code> structure, just like this:<!-- --></p>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span>< [...]
-<!-- --><p>The <!-- --><code>plugin.github_connector.backend.name</code> is the key of the translation file, which will be introduced later.<!-- --></p>
-<!-- --><p>So, the first step is build a <!-- --><code>Translator</code> structure for each field that needs to be translated.<!-- --></p>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="translation-file">Translation file<!-- --><a href="#translation-file" class="hash-link" aria-label="Translation file的直接链接" title="Translation file的直接链接"></a></h2>
-<!-- --><p>Make directory <!-- --><code>i18n</code> in the root directory of your plugin, and then create a file named <!-- --><code>en_US.yaml</code> in it.<!-- --></p>
-<!-- --><p>The <!-- --><code>en_US.yaml</code> file is used to store the English translation of the plugin.<!-- --></p>
-<!-- --><p>The content of the <!-- --><code>en_US.yaml</code> file is as follows:<!-- --></p>
-<!-- --><div class="language-yaml codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-yaml codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">plugin</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></ [...]
-<!-- --><ul>
-<!-- --><li>The <!-- --><code>plugin</code> is the root key of the translation file.<!-- --></li>
-<!-- --><li>The <!-- --><code>github_connector</code> is the name of the plugin.<!-- --></li>
-<!-- --><li>The <!-- --><code>backend</code> is translation for the backend. The end of key like <!-- --><code>other</code> is just for <!-- --><a href="https://github.com/nicksnyder/go-i18n" target="_blank" rel="noopener noreferrer">go-i18n</a> to recognize the translation file.<!-- --></li>
-<!-- --><li>The <!-- --><code>ui</code> is translation for the frontend.<!-- --></li>
-<!-- --></ul>
-<!-- --><p>You can use the key like <!-- --><code>plugin.github_connector.backend.name</code> or <!-- --><code>plugin.github_connector.ui.login.title</code> for translation.<!-- --></p>
-<!-- --><p>Create a <!-- --><code>i18n.go</code> file in the root directory of your plugin, and then add the following code:<!-- --></p>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">package</span><span class="token plain"> i18n</span><br></span><span class="token-line" style="color:#393A34"> [...]
-<!-- --><p>The <!-- --><code>i18n.go</code> file is used to store the key of the translation file.<!-- --></p>
-<!-- --><p>Finally, the directory structure of the plugin is as follows:</p>
-<!-- --><div class="language-bash codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-bash codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend-translation">Backend translation<!-- --><a href="#backend-translation" class="hash-link" aria-label="Backend translation的直接链接" title="Backend translation的直接链接"></a></h2>
-<!-- --><p>You just need to return <!-- --><code>Translator</code> structure with the key of the translation file.<!-- --></p>
-<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">func</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><sp [...]
-<!-- --><p>The <!-- --><code>Answer</code> will automatically translate the key of the translation file into the corresponding language.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" ari [...]
-</body>
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/zh-CN/docs/development/plugins/plugin-translation">
+ <link rel="canonical" href="/zh-CN/docs/development/plugins/plugin-translation" />
+ </head>
+ <script>
+ window.location.href = '/zh-CN/docs/development/plugins/plugin-translation' + window.location.search + window.location.hash;
+ </script>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/pull-request/index.html b/zh-CN/community/pull-request/index.html
index 04ef8395..34139970 100644
--- a/zh-CN/community/pull-request/index.html
+++ b/zh-CN/community/pull-request/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>We appreciate you taking the time to contribute! Before submitting a pull request, we ask that you please create an issue that explains the bug or feature request and let us know that you plan on creating a pull request for it. If an issue already exists, please comment on that issue letting us know you would like to submit a pull request for it. This helps us to keep track of the pull request and make sure there isn't duplicated effort.</p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="semantic-commit-messages">Semantic commit messages<!-- --><a href="#semantic-commit-messages" class="hash-link" aria-label="Semantic commit messages的直接链接" title="Semantic commit messages的直接链接"></a></h2>
<!-- --><p>Following the format below when committing message can make you a better programmer.</p>
@@ -58,6 +58,8 @@
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="contributor-license-agreement-cla">Contributor license agreement (CLA)<!-- --><a href="#contributor-license-agreement-cla" class="hash-link" aria-label="Contributor license agreement (CLA)的直接链接" title="Contributor license agreement (CLA)的直接链接"></a></h2>
<!-- --><p>Apache CLA short for Apache Contributor License Agreement, the purpose of this agreement is to clearly define the terms under which intellectual property has been contributed to the ASF and thereby allow us to defend the project should there be a legal dispute regarding the software at some future time. A signed ICLA is required to be on file before an individual is given commit rights to any ASF project.</p>
<!-- --><p>For larger contributions, contributed by a single original author, we might ask you to submit an <!-- --><a href="https://www.apache.org/licenses/contributor-agreements.html" target="_blank" rel="noopener noreferrer">Individual Contributor License Agreement (ICLA)</a> form. The copyright on your code will still belong to you, but the ICLA helps protect the users of Apache Answer. All project Committers have also signed this form.<!-- --></p>
-<!-- --><p>If you have already signed an Apache ICLA, no need to send an email. As you have already submitted an ICLA under your public name, no need to resubmit it. If you have never signed an ICLA, please indicate this in your email, and PMC can apply for this account directly.</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopene [...]
+<!-- --><p>If you have already signed an Apache ICLA, no need to send an email. As you have already submitted an ICLA under your public name, no need to resubmit it. If you have never signed an ICLA, please indicate this in your email, and PMC can apply for this account directly.</p>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="develop-and-contribute">Develop and Contribute<!-- --><a href="#develop-and-contribute" class="hash-link" aria-label="Develop and Contribute的直接链接" title="Develop and Contribute的直接链接"></a></h2>
+<!-- --><p>Please refer to <!-- --><a href="/zh-CN/docs/development">the documentation</a> for details.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/security/index.html b/zh-CN/community/security/index.html
index ce7fcfab..c7d0ca13 100644
--- a/zh-CN/community/security/index.html
+++ b/zh-CN/community/security/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>The Apache Software Foundation takes a rigorous stance on eliminating security issues in its software projects. If you find a security bug, with that in mind, please do not file public issues. You can follow the instructions in the <!-- --><a href="https://github.com/apache/incubator-answer/security/policy" target="_blank" rel="noopener noreferrer">security policy</a> to report it privately. We will fix it as soon as possible.<!-- --></p>
<!-- --><h1>Security fixes</h1>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="v125">v1.2.5<!-- --><a href="#v125" class="hash-link" aria-label="v1.2.5的直接链接" title="v1.2.5的直接链接"></a></h2>
@@ -34,6 +34,6 @@
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="v120">v1.2.0<!-- --><a href="#v120" class="hash-link" aria-label="v1.2.0的直接链接" title="v1.2.0的直接链接"></a></h2>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="cve-2023-49619">CVE-2023-49619<!-- --><a href="#cve-2023-49619" class="hash-link" aria-label="CVE-2023-49619的直接链接" title="CVE-2023-49619的直接链接"></a></h3>
<!-- --><p>Under normal circumstances, a user can only bookmark a question once, and will only increase the number of questions bookmarked once. However, repeat submissions through the script can increase the number of collection of the question many times.</p>
-<!-- --><p><a href="https://www.cve.org/CVERecord?id=CVE-2023-49619" target="_blank" rel="noopener noreferrer">https://www.cve.org/CVERecord?id=CVE-2023-49619</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class=" [...]
+<!-- --><p><a href="https://www.cve.org/CVERecord?id=CVE-2023-49619" target="_blank" rel="noopener noreferrer">https://www.cve.org/CVERecord?id=CVE-2023-49619</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class=" [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/support/index.html b/zh-CN/community/support/index.html
index 173e4814..b6229642 100644
--- a/zh-CN/community/support/index.html
+++ b/zh-CN/community/support/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>你好!欢迎使用 Apache Answer。作为一款问答平台软件,我们吸引了一群好奇并乐于助人的用户,他们总是愿意帮助解答你的疑问。</p>
<!-- --><p>如果你在寻找答案时遇到了困难,可以查看我们的<!-- --><a href="#answer-meta">社区</a>、<!-- --><a href="/zh-CN/docs">文档</a>、<!-- --><a href="/zh-CN/community/issues">问题</a>或者<!-- --><a href="#mailing-list">邮件列表</a>。如果你找到了你能回答的问题,请解答它吧!即使你的回答可能不完美,我们的志愿者也很高兴帮助你查漏补缺。<!-- --></p>
<!-- --><p>如果你在查看我们的文档与资源之后仍然有疑问,可以随时<!-- --><a href="#others">与我们联系</a>。由于我们的用户和贡献者来自世界各地,所以我们建议使用英文作为作为主要沟通语言,以获得更好的帮助。<!-- --></p>
@@ -29,6 +29,6 @@
<!-- --><p>关于 Apache Answer 的最新消息,请在公众号上关注 Answer Dev 和<!-- --><a href="/zh-CN/blog">官方博客</a>。你也可以通过 <!-- --><a href="https://discord.gg/a6PZZbfnFx" target="_blank" rel="noopener noreferrer">Discord</a> 和我们联系,但是由于团队规模限制,我们不能确保回复的即时性,感谢你的理解。<!-- --></p>
<!-- -->
<!-- -->
-<!-- --><div><div id="reactHubspotForm0" style="display:none"></div><div class="text-center"><div role="status" class="spinner-border text-secondary"><span class="visually-hidden">加载中...<!-- --></span></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColo [...]
+<!-- --><div><div id="reactHubspotForm0" style="display:none"></div><div class="text-center"><div role="status" class="spinner-border text-secondary"><span class="visually-hidden">加载中...<!-- --></span></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColo [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/team/index.html b/zh-CN/community/team/index.html
index ca534b70..3a15a6f5 100644
--- a/zh-CN/community/team/index.html
+++ b/zh-CN/community/team/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>The Apache Answer team works on the core functionality, plugins, as well as the documentation website. Current members of the team are listed in alphabetical order below.</p>
<!-- -->
<!-- -->
@@ -43,6 +43,6 @@
<!-- --><li><a href="https://community.apache.org/contributors/becomingacommitter.html" target="_blank" rel="noopener noreferrer">https://community.apache.org/contributors/becomingacommitter.html</a></li>
<!-- --><li><a href="https://incubator.apache.org/guides/ppmc.html" target="_blank" rel="noopener noreferrer">https://incubator.apache.org/guides/ppmc.html</a></li>
<!-- --><li><a href="https://www.apache.org/dev/pmc.html" target="_blank" rel="noopener noreferrer">https://www.apache.org/dev/pmc.html</a></li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/translation/index.html b/zh-CN/community/translation/index.html
index a8725b31..d28f37c9 100644
--- a/zh-CN/community/translation/index.html
+++ b/zh-CN/community/translation/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>Our project is connected to <!-- --><a href="https://crowdin.com/" target="_blank" rel="noopener noreferrer">crowdin</a> for translation; we recommend contributing translations through crowdin.<!-- --></p>
<!-- --><p>Translate project list:</p>
<!-- --><ul>
@@ -25,6 +25,6 @@
<!-- --><ol>
<!-- --><li>Through crowdin, translators only need to focus on the translation work itself, and crowdin will provide very convenient prompts;</li>
<!-- --><li>No additional operations are required, such as git commands. Our apache-answer project language file uses yaml. Some contributors are likely to format the indentation or operate by mistake, causing some formatting errors;</li>
-<!-- --></ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
+<!-- --></ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/api/index.html b/zh-CN/docs/api/index.html
index ab4943d0..03b7e6d8 100644
--- a/zh-CN/docs/api/index.html
+++ b/zh-CN/docs/api/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="where-is-the-api-document">Where is the API document?<!-- --><a href="#where-is-the-api-document" class="hash-link" aria-label="Where is the API document?的直接链接" title="Where is the API document?的直接链接"></a></h2>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="quick-look">Quick Look<!-- --><a href="#quick-look" class="hash-link" aria-label="Quick Look的直接链接" title="Quick Look的直接链接"></a></h3>
@@ -27,6 +27,6 @@
<!-- --><div class="language-yaml codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_P25_">/data/conf/config.yaml</div><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-yaml codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">swaggerui</span><span class="token punctua [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="generate-api-document">Generate API document<!-- --><a href="#generate-api-document" class="hash-link" aria-label="Generate API document的直接链接" title="Generate API document的直接链接"></a></h2>
<!-- --><p>Apache Answer using <!-- --><a href="https://github.com/swaggo/swag" target="_blank" rel="noopener noreferrer">swag</a> to generate API document json/yaml file automatically according to the comments in the code. You can use the following steps to generate API document.<!-- --></p>
-<!-- --><div class="language-bash codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-bash codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># install swag cli</span><span class="token plain"></span><br></span><span class="token- [...]
+<!-- --><div class="language-bash codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-bash codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># install swag cli</span><span class="token plain"></span><br></span><span class="token- [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/command-line/index.html b/zh-CN/docs/command-line/index.html
index 6dffea24..6d5a3bff 100644
--- a/zh-CN/docs/command-line/index.html
+++ b/zh-CN/docs/command-line/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="用法">用法<!-- --><a href="#用法" class="hash-link" aria-label="用法的直接链接" title="用法的直接链接"></a></h2>
<!-- --><p><code>answer command [command or global options] [arguments...]</code></p>
@@ -141,6 +141,6 @@
<!-- --><li><code>answer config -C ./data/ --with allow_password_login</code></li>
<!-- --></ul>
<!-- --></li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/configfile/index.html b/zh-CN/docs/configfile/index.html
index 749c00f1..a91f52cf 100644
--- a/zh-CN/docs/configfile/index.html
+++ b/zh-CN/docs/configfile/index.html
@@ -10,13 +10,13 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="configyaml-描述">config.yaml 描述<!-- --><a href="#configyaml-描述" class="hash-link" aria-label="config.yaml 描述的直接链接" title="config.yaml 描述的直接链接"></a></h2>
-<!-- --><div class="language-yaml codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-yaml codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">server</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></ [...]
+<!-- --><div class="language-yaml codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-yaml codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">server</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></ [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/contributing/notice/index.html b/zh-CN/docs/contributing/notice/index.html
index 20c92614..7421abae 100644
--- a/zh-CN/docs/contributing/notice/index.html
+++ b/zh-CN/docs/contributing/notice/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>该项目建立在以下开源项目的基础上并得到其帮助。我们向这些项目致以敬意。</p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="apache-20">Apache-2.0<!-- --><a href="#apache-20" class="hash-link" aria-label="Apache-2.0的直接链接" title="Apache-2.0的直接链接"></a></h2>
<!-- --><ul>
@@ -100,6 +100,6 @@
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="mpl-20">MPL-2.0<!-- --><a href="#mpl-20" class="hash-link" aria-label="MPL-2.0的直接链接" title="MPL-2.0的直接链接"></a></h2>
<!-- --><ul>
<!-- --><li><a href="https://github.com/go-sql-driver/mysql" target="_blank" rel="noopener noreferrer">https://github.com/go-sql-driver/mysql</a></li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/database/index.html b/zh-CN/docs/database/index.html
index 086bc6c1..ef44b8f4 100644
--- a/zh-CN/docs/database/index.html
+++ b/zh-CN/docs/database/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><div class="theme-admonition theme-admonition-note admonition_eWuJ alert alert--secondary"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.1 [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="activity">activity<!-- --><a href="#activity" class="hash-link" aria-label="activity的直接链接" title="activity的直接链接"></a></h2>
<!-- --><blockquote>
@@ -117,6 +117,6 @@
<!-- --><blockquote>
<!-- --><p>The version of the current answer is recorded in version table for upgrade.</p>
<!-- --></blockquote>
-<!-- --><table><thead><tr><th>COLUMN</th><th>DATA TYPE</th><th>NULLABLE</th><th>KEY</th><th>DEFAULT</th><th>COMMENT</th></tr></thead><tbody><tr><td>id</td><td>int(11)</td><td>NO</td><td>PRI</td><td></td><td>id</td></tr><tr><td>version_number</td><td>int(11)</td><td>NO</td><td></td><td>0</td><td>version_number</td></tr></tbody></table></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/projec [...]
+<!-- --><table><thead><tr><th>COLUMN</th><th>DATA TYPE</th><th>NULLABLE</th><th>KEY</th><th>DEFAULT</th><th>COMMENT</th></tr></thead><tbody><tr><td>id</td><td>int(11)</td><td>NO</td><td>PRI</td><td></td><td>id</td></tr><tr><td>version_number</td><td>int(11)</td><td>NO</td><td></td><td>0</td><td>version_number</td></tr></tbody></table></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/projec [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/development/index.html b/zh-CN/docs/development/index.html
new file mode 100644
index 00000000..45a3f26a
--- /dev/null
+++ b/zh-CN/docs/development/index.html
@@ -0,0 +1,64 @@
+<!doctype html>
+<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-development/overview" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.1.1">
+<title data-rh="true">Overview | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/zh-CN/do [...]
+<link rel="alternate" type="application/rss+xml" href="/zh-CN/blog/rss.xml" title="Apache Answer RSS Feed">
+<link rel="alternate" type="application/atom+xml" href="/zh-CN/blog/atom.xml" title="Apache Answer Atom Feed">
+
+
+
+<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="frontend">Frontend<!-- --><a href="#frontend" class="hash-link" aria-label="Frontend的直接链接" title="Frontend的直接链接"></a></h2>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="installation">Installation<!-- --><a href="#installation" class="hash-link" aria-label="Installation的直接链接" title="Installation的直接链接"></a></h3>
+<!-- --><ol>
+<!-- --><li>
+<!-- --><p>Ensure you have <!-- --><a href="https://nodejs.org/en" target="_blank" rel="noopener noreferrer">node</a> and <!-- --><a href="https://pnpm.io/installation" target="_blank" rel="noopener noreferrer">pnpm</a> installed.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>After cloning the repository, run the following command. This will install all dependencies as well as build all local packages.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">cd</span><span class="token plain"> ./ui</span><br></span><span class="token-line" style="color:#393A34"><span clas [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>To start a development server, run <!-- --><code>pnpm start</code>. now, your browser should already open automatically, and autoload <!-- --><code>http://localhost:3000</code>. you can also manually visit it.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>To switch API, you can modify the <!-- --><code>ui/.env.development</code> file and then re-run pnpm start. If you're just using it yourself, we recommend creating a <!-- --><code>.env.development.local</code> file that defines the address of the api you're going to use.<!-- --></p>
+<!-- --></li>
+<!-- --></ol>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="code-conventions">Code conventions<!-- --><a href="#code-conventions" class="hash-link" aria-label="Code conventions的直接链接" title="Code conventions的直接链接"></a></h3>
+<!-- --><ul>
+<!-- --><li><strong>Most important: Look around.</strong> Match the style you see used in the rest of the project. This includes formatting, naming files, naming things in code, naming things in documentation, etc.<!-- --></li>
+<!-- --><li>We do have Prettier (a formatter) and ESLint (a syntax linter) to catch most stylistic problems. If you are working locally, you can run <!-- --><code>pnpm lint</code> and <!-- --><code>pnpm prettier</code> to fix most code formatting.<!-- --></li>
+<!-- --><li><strong>No runtime errors</strong> Before submitting the code, please ensure that there will be no errors when running locally. This will greatly reduce the workload of review.<!-- --></li>
+<!-- --></ul>
+<!-- --><details class="details_feHX alert alert--info details_rGhr" data-collapsed="true"><summary>frontend package structure</summary><div><div class="collapsibleContent_jTXV"><div><div class="codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-text codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393 [...]
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend">Backend<!-- --><a href="#backend" class="hash-link" aria-label="Backend的直接链接" title="Backend的直接链接"></a></h2>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="installation-1">Installation<!-- --><a href="#installation-1" class="hash-link" aria-label="Installation的直接链接" title="Installation的直接链接"></a></h3>
+<!-- --><ol>
+<!-- --><li>
+<!-- --><p>Ensure you have <!-- --><a href="https://go.dev/doc/install" target="_blank" rel="noopener noreferrer">golang</a> installed.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>After cloning the repository, run the following command for build.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go mod download</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">go run cmd/answer/main [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Visit <!-- --><code>http://localhost</code> to see the installation page and complete the installation.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Run the following command to start the server.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go run cmd/answer/main.go run -C ./answer-data</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" [...]
+<!-- --></li>
+<!-- --></ol>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="code-conventions-1">Code conventions<!-- --><a href="#code-conventions-1" class="hash-link" aria-label="Code conventions的直接链接" title="Code conventions的直接链接"></a></h3>
+<!-- --><p>We recommend that you follow <!-- --><a href="https://github.com/uber-go/guide" target="_blank" rel="noopener noreferrer">uber's Golang Guidelines</a> code style.<!-- --></p>
+<!-- --><details class="details_feHX alert alert--info details_rGhr" data-collapsed="true"><summary>backend package structure</summary><div><div class="collapsibleContent_jTXV"><div><div class="codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-text codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A [...]
+</body>
+</html>
\ No newline at end of file
diff --git a/zh-CN/community/plugins/index.html b/zh-CN/docs/development/plugins/index.html
similarity index 54%
copy from zh-CN/community/plugins/index.html
copy to zh-CN/docs/development/plugins/index.html
index 0d6ab49e..4a86f926 100644
--- a/zh-CN/community/plugins/index.html
+++ b/zh-CN/docs/development/plugins/index.html
@@ -1,29 +1,99 @@
<!doctype html>
-<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/plugins" data-has-hydrated="false">
+<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-development/plugins/overview" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Contribute for Plugins | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apach [...]
+<title data-rh="true">Overview | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/zh-CN/do [...]
<link rel="alternate" type="application/rss+xml" href="/zh-CN/blog/rss.xml" title="Apache Answer RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/zh-CN/blog/atom.xml" title="Apache Answer Atom Feed">
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="plugin-types">Plugin types<!-- --><a href="#plugin-types" class="hash-link" aria-label="Plugin types的直接链接" title="Plugin types的直接链接"></a></h2>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="introduction">Introduction<!-- --><a href="#introduction" class="hash-link" aria-label="Introduction的直接链接" title="Introduction的直接链接"></a></h2>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="plugin-template-types">Plugin template types<!-- --><a href="#plugin-template-types" class="hash-link" aria-label="Plugin template types的直接链接" title="Plugin template types的直接链接"></a></h3>
<!-- --><p>Currently we have three types of plugins:</p>
<!-- --><ul>
-<!-- --><li>Only Backend plugin</li>
-<!-- --><li>Frontend Builtin plugin</li>
+<!-- --><li>Backend plugin</li>
<!-- --><li>Standard UI plugin</li>
+<!-- --><li>Builtin plugin</li>
<!-- --></ul>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend-plugin">Backend plugin<!-- --><a href="#backend-plugin" class="hash-link" aria-label="Backend plugin的直接链接" title="Backend plugin的直接链接"></a></h2>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="plugin-type">Plugin type<!-- --><a href="#plugin-type" class="hash-link" aria-label="Plugin type的直接链接" title="Plugin type的直接链接"></a></h3>
+<!-- --><p>We classify plugins into different types. Different types of plugins have different functions. Plugins of the same type have the same effect, but are implemented differently.</p>
+<!-- --><ul>
+<!-- --><li><strong>Connector</strong>: The Connector plugin helps us to implement third-party login functionality.<!-- --></li>
+<!-- --><li><strong>Storage</strong>: The Storage plugin helps us to upload files to third-party storage.<!-- --></li>
+<!-- --><li><strong>Cache</strong>: Support for using different caching middleware.<!-- --></li>
+<!-- --><li><strong>Search</strong>: Support for using search engines to speed up the search for question answers.<!-- --></li>
+<!-- --><li><strong>User Center</strong>: Using the third-party user system to manage users.<!-- --></li>
+<!-- --><li><strong>Notification</strong>: The Notification plugin helps us to send messages to third-party notification systems.<!-- --></li>
+<!-- --><li><strong>Route</strong>: Provides support for custom routing.<!-- --></li>
+<!-- --><li><strong>Editor</strong>: Supports extending the markdown editor's toolbar.<!-- --></li>
+<!-- --><li><strong>Reviewer</strong>: Allows customizing the reviewer functionality.<!-- --></li>
+<!-- --><li><strong>Filter</strong>: Filter out illegal questions or answers. (coming soon)<!-- --></li>
+<!-- --><li><strong>Render</strong>: Parsers for different content formats. (coming soon)<!-- --></li>
+<!-- --></ul>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="create-a-plugin">Create a Plugin<!-- --><a href="#create-a-plugin" class="hash-link" aria-label="Create a Plugin的直接链接" title="Create a Plugin的直接链接"></a></h2>
+<!-- --><ol>
+<!-- --><li>
+<!-- --><p>Go to the <!-- --><code>ui > src > plugin</code> directory of the project.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Execute the following commands in that directory:</p>
+<!-- --></li>
+<!-- --></ol>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">npx create-answer-plugin </span><span class="token operator" style="color:#393A34"><</span><span class="token plain">pluginNa [...]
+<!-- --><ol start="3">
+<!-- --><li>Select the type of plugin you want to create.</li>
+<!-- --></ol>
+<!-- --><p>The plugin will be created in the <!-- --><code>ui > src > plugin</code> directory.<!-- --></p>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="debugging-plugins">Debugging Plugins<!-- --><a href="#debugging-plugins" class="hash-link" aria-label="Debugging Plugins的直接链接" title="Debugging Plugins的直接链接"></a></h2>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="debugging-backend-plugins">Debugging Backend Plugins<!-- --><a href="#debugging-backend-plugins" class="hash-link" aria-label="Debugging Backend Plugins的直接链接" title="Debugging Backend Plugins的直接链接"></a></h3>
+<!-- --><ol>
+<!-- --><li>
+<!-- --><p>First, execute <!-- --><code>make ui</code> to compile the front-end code.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>In the <!-- --><code>cmd > answer > main.go</code> file, import your plugin.<!-- --></p>
+<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span>< [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Use <!-- --><code>go mod edit</code> to add the plugin to the <!-- --><code>go.mod</code> file.<!-- --></p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go mod edit -replace</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">github.com/apach [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Update the dependencies.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go mod tidy</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" aria-label="复制代码到剪贴板" title="复制" c [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Start the project.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">go run cmd/answer/main.go run -C ./answer-data</span><br></span></code></pre><div class="buttonGroup_6DOT"><button type="button" [...]
+<!-- --></li>
+<!-- --></ol>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="debugging-standard-ui-plugins">Debugging Standard UI Plugins<!-- --><a href="#debugging-standard-ui-plugins" class="hash-link" aria-label="Debugging Standard UI Plugins的直接链接" title="Debugging Standard UI Plugins的直接链接"></a></h3>
+<!-- --><ol>
+<!-- --><li>
+<!-- --><p>Go to the <!-- --><code>ui</code> directory.<!-- --></p>
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Install the dependencies.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">pnpm</span><span class="token plain"> pre-install</span><br></span></code></pre><div class="buttonGroup [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Start the project.</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">pnpm</span><span class="token plain"> start</span><br></span></code></pre><div class="buttonGroup_6DOT" [...]
+<!-- --></li>
+<!-- --><li>
+<!-- --><p>Refer to the <!-- --><a href="/zh-CN/docs/development/plugins#debugging-plugins">Debugging Backend Plugins</a> and add the plugin to the project.<!-- --></p>
+<!-- --></li>
+<!-- --></ol>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend-plugin-development">Backend Plugin Development<!-- --><a href="#backend-plugin-development" class="hash-link" aria-label="Backend Plugin Development的直接链接" title="Backend Plugin Development的直接链接"></a></h2>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="implement-the-base-interface">Implement the Base interface<!-- --><a href="#implement-the-base-interface" class="hash-link" aria-label="Implement the Base interface的直接链接" title="Implement the Base interface的直接链接"></a></h3>
<!-- --><p>The <!-- --><code>Base</code> interface contains basic information about the plugin and is used to display.<!-- --></p>
<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic">// Info presents the plugin information</span><span class="token plain"></span><br></span><s [...]
@@ -31,9 +101,9 @@
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="implement-the-function-interface">Implement the function interface<!-- --><a href="#implement-the-function-interface" class="hash-link" aria-label="Implement the function interface的直接链接" title="Implement the function interface的直接链接"></a></h3>
<!-- --><div class="theme-admonition theme-admonition-note admonition_eWuJ alert alert--secondary"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.1 [...]
<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> Connector </span><span class="token keyword" style="color:#00009f">inter [...]
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
+<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="implement-the-configuration-interface">Implement the configuration interface<!-- --><a href="#implement-the-configuration-interface" class="hash-link" aria-label="Implement the configuration interface的直接链接" title="Implement the configuration interface的直接链接"></a></h3>
-<!-- --><p>For details on the description of each configuration item, please refer to <!-- --><a href="/zh-CN/community/plugins/plugin-config">the documentation</a>.<!-- --></p>
+<!-- --><p>For details on the description of each configuration item, please refer to <!-- --><a href="/zh-CN/docs/development/plugins/plugin-config">the documentation</a>.<!-- --></p>
<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> Config </span><span class="token keyword" style="color:#00009f">interfac [...]
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="register-initialization-function">Register initialization function<!-- --><a href="#register-initialization-function" class="hash-link" aria-label="Register initialization function的直接链接" title="Register initialization function的直接链接"></a></h3>
<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"github.c [...]
@@ -82,8 +152,8 @@
<!-- --><ol>
<!-- --><li>First, refer to the two existing warehouses above to familiarize yourself with the basic configuration and component export methods.</li>
<!-- --></ol>
-<!-- --><div class="theme-admonition theme-admonition-info admonition_eWuJ alert alert--info"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>信息<!-- --></div><div class="admonitionContent_ioOH"><p>The <!-- --><strong [...]
-<!-- -->"editor-chart" ❌<!-- --></p></div></div>
+<!-- --><div class="theme-admonition theme-admonition-info admonition_eWuJ alert alert--info"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>信息<!-- --></div><div class="admonitionContent_ioOH"><p>The <!-- --><strong [...]
+<!-- -->"editor_chart" ❌<!-- --></p></div></div>
<!-- --><ol start="2">
<!-- --><li>Go to the <!-- --><code>ui/src/plugins</code> directory and create a directory, such as editor_chart, then add the components you want to develop, then modify the <!-- --><code>ui/src/plugins/index.ts</code> file to export your components; <!-- --><strong>changes here during the release phase do not need to be submitted</strong>.<!-- --></li>
<!-- --></ol>
@@ -94,6 +164,6 @@
<!-- --><div class="language-ts codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-ts codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> PluginKit </span><span class="token keyword" style="color:#00009f">fro [...]
<!-- --><ol start="4">
<!-- --><li><strong>Publish plugin</strong>: after the function is developed, copy your entire plug-in folder to <!-- --><a href="https://github.com/apache/incubator-answer-plugins" target="_blank" rel="noopener noreferrer">incubator-answer-plugins</a>, <!-- --><strong>and add <!-- --><code>go.mod</code> <!-- --><code>[plugin_name].go</code> <!-- --><code>go.sum</code> these three files<!-- --></strong>; then initiate a PR and wait for review by relevant personnel; if incubator-answer I [...]
-<!-- --></ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
+<!-- --></ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/plugins/plugin-config/index.html b/zh-CN/docs/development/plugins/plugin-config/index.html
similarity index 58%
copy from zh-CN/community/plugins/plugin-config/index.html
copy to zh-CN/docs/development/plugins/plugin-config/index.html
index 095f9415..35c9cea3 100644
--- a/zh-CN/community/plugins/plugin-config/index.html
+++ b/zh-CN/docs/development/plugins/plugin-config/index.html
@@ -1,20 +1,20 @@
<!doctype html>
-<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/plugins/plugin-config" data-has-hydrated="false">
+<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-development/plugins/plugin-config" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Plugin Configuration Schema | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer. [...]
+<title data-rh="true">Plugin Configuration Schema | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer. [...]
<link rel="alternate" type="application/rss+xml" href="/zh-CN/blog/rss.xml" title="Apache Answer RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/zh-CN/blog/atom.xml" title="Apache Answer Atom Feed">
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="feature">Feature<!-- --><a href="#feature" class="hash-link" aria-label="Feature的直接链接" title="Feature的直接链接"></a></h2>
<!-- --><p>For plugins, we often need some configuration items to record the information necessary for the plugin.</p>
<!-- --><p>For example, OAuth plugins require secret key configuration. These configurations need to be described by the developer and used by the user. So, the following is about how to describe the configuration required for a plugin.</p>
@@ -57,6 +57,6 @@
<!-- --><li>time</li>
<!-- --><li>url</li>
<!-- --><li>week</li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/community/plugins/plugin-translation/index.html b/zh-CN/docs/development/plugins/plugin-translation/index.html
similarity index 57%
copy from zh-CN/community/plugins/plugin-translation/index.html
copy to zh-CN/docs/development/plugins/plugin-translation/index.html
index e0972d43..0bed68f4 100644
--- a/zh-CN/community/plugins/plugin-translation/index.html
+++ b/zh-CN/docs/development/plugins/plugin-translation/index.html
@@ -1,20 +1,20 @@
<!doctype html>
-<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-contributing/plugins/plugin-translation" data-has-hydrated="false">
+<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-development/plugins/plugin-translation" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Plugin Translation | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.or [...]
+<title data-rh="true">Plugin Translation | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.or [...]
<link rel="alternate" type="application/rss+xml" href="/zh-CN/blog/rss.xml" title="Apache Answer RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/zh-CN/blog/atom.xml" title="Apache Answer Atom Feed">
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>Since answer supports multiple languages, the plugin also needs to support multiple languages.
The following is an example of how to make your plugin support multiple languages.</p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="translator-structure">Translator structure<!-- --><a href="#translator-structure" class="hash-link" aria-label="Translator structure的直接链接" title="Translator structure的直接链接"></a></h2>
@@ -45,6 +45,6 @@ The following is an example of how to make your plugin support multiple language
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="backend-translation">Backend translation<!-- --><a href="#backend-translation" class="hash-link" aria-label="Backend translation的直接链接" title="Backend translation的直接链接"></a></h2>
<!-- --><p>You just need to return <!-- --><code>Translator</code> structure with the key of the translation file.<!-- --></p>
<!-- --><div class="language-go codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-go codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">func</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><sp [...]
-<!-- --><p>The <!-- --><code>Answer</code> will automatically translate the key of the translation file into the corresponding language.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" ari [...]
+<!-- --><p>The <!-- --><code>Answer</code> will automatically translate the key of the translation file into the corresponding language.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" ari [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/env/index.html b/zh-CN/docs/env/index.html
index 99ac5758..fcf8d776 100644
--- a/zh-CN/docs/env/index.html
+++ b/zh-CN/docs/env/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="安装">安装<!-- --><a href="#安装" class="hash-link" aria-label="安装的直接链接" title="安装的直接链接"></a></h2>
<!-- --><ul>
<!-- --><li>INSTALL_PORT:指定安装时启动的端口,默认为 80。</li>
@@ -40,6 +40,6 @@
<!-- --><ul>
<!-- --><li>LOG_LEVEL:日志级别,支持 [<!-- --><code>DEBUG</code> <!-- --><code>INFO</code> <!-- --><code>WARN</code> <!-- --><code>ERROR</code>]<!-- --></li>
<!-- --><li>LOG_PATH:日志存储位置。</li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/faq/index.html b/zh-CN/docs/faq/index.html
index 990a724a..812a8d52 100644
--- a/zh-CN/docs/faq/index.html
+++ b/zh-CN/docs/faq/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="如何访问安装页面">如何访问安装页面?<!-- --><a href="#如何访问安装页面" class="hash-link" aria-label="如何访问安装页面?的直接链接" title="如何访问安装页面?的直接链接"></a></h2>
<!-- --><p>请前往 <!-- --><a href="http://localhost:9080/install" target="_blank" rel="noopener noreferrer">http://localhost:9080/install</a> 访问安装页面。<!-- --></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="为什么我无法收到注册邮件">为什么我无法收到注册邮件?<!-- --><a href="#为什么我无法收到注册邮件" class="hash-link" aria-label="为什么我无法收到注册邮件?的直接链接" title="为什么我无法收到注册邮件?的直接链接"></a></h2>
@@ -25,6 +25,6 @@
<!-- --><li>用户可以在自己的 <!-- --><code>设置 -> 界面</code> 中切换语言。<!-- --></li>
<!-- --></ul>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="目前支持哪些数据库类型是否支持迁移">目前支持哪些数据库类型?是否支持迁移?<!-- --><a href="#目前支持哪些数据库类型是否支持迁移" class="hash-link" aria-label="目前支持哪些数据库类型?是否支持迁移?的直接链接" title="目前支持哪些数据库类型?是否支持迁移?的直接链接"></a></h2>
-<!-- --><p>我们支持 MySQL、PostgreSQL 和 SQLite3 数据库。不幸的是,我们目前<!-- --><strong>不支持</strong>数据迁移。因此,我们建议仅使用 SQLite3 来<!-- --><strong>体验</strong>,而实际使用时应选择 MySQL。<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="i [...]
+<!-- --><p>我们支持 MySQL、PostgreSQL 和 SQLite3 数据库。不幸的是,我们目前<!-- --><strong>不支持</strong>数据迁移。因此,我们建议仅使用 SQLite3 来<!-- --><strong>体验</strong>,而实际使用时应选择 MySQL。<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="i [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/flags/index.html b/zh-CN/docs/flags/index.html
index 6c56f7c6..f43eeef4 100644
--- a/zh-CN/docs/flags/index.html
+++ b/zh-CN/docs/flags/index.html
@@ -10,13 +10,13 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><blockquote>
<!-- --><p>用户可以通过举报来举报非法内容。</p>
-<!-- --></blockquote></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17 [...]
+<!-- --></blockquote></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17 [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/index.html b/zh-CN/docs/index.html
index cfa995e2..06175458 100644
--- a/zh-CN/docs/index.html
+++ b/zh-CN/docs/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>Apache Answer 可帮助你在用户或团队之间建立问答社区。你可以在这里分享知识并帮助用户解决问题。</p>
<!-- --><p>主要功能:</p>
<!-- --><ul>
@@ -30,6 +30,6 @@
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="前后端分离">前后端分离<!-- --><a href="#前后端分离" class="hash-link" aria-label="前后端分离的直接链接" title="前后端分离的直接链接"></a></h3>
<!-- --><p>Apache Answer 是一个单体库,包含前端和后端。</p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="用户界面预览">用户界面预览<!-- --><a href="#用户界面预览" class="hash-link" aria-label="用户界面预览的直接链接" title="用户界面预览的直接链接"></a></h2>
-<!-- --><p><img decoding="async" loading="lazy" alt="screenshot" src="/zh-CN/assets/images/screenshot-c118d2fcfb1faaf1d9df2e8b5e8bc1a8.png" width="1298" height="824" class="img_WevL"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBo [...]
+<!-- --><p><img decoding="async" loading="lazy" alt="screenshot" src="/zh-CN/assets/images/screenshot-c118d2fcfb1faaf1d9df2e8b5e8bc1a8.png" width="1298" height="824" class="img_WevL"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBo [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/installation/index.html b/zh-CN/docs/installation/index.html
index d10d8372..7b80fc8d 100644
--- a/zh-CN/docs/installation/index.html
+++ b/zh-CN/docs/installation/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="-启动-apache-answer">🚀 启动 Apache Answer<!-- --><a href="#-启动-apache-answer" class="hash-link" aria-label="🚀 启动 Apache Answer的直接链接" title="🚀 启动 Apache Answer的直接链接"></a></h2>
<!-- -->
<!-- -->
@@ -38,6 +38,6 @@
<!-- --><p><img decoding="async" loading="lazy" alt="install-site-info" src="/zh-CN/assets/images/install-site-info-dd11f933444917d34aa90ae18166d00b.png" width="2400" height="1818" class="img_WevL"></p>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="第五步完成">第五步:完成<!-- --><a href="#第五步完成" class="hash-link" aria-label="第五步:完成的直接链接" title="第五步:完成的直接链接"></a></h3>
<!-- --><p>🎉 恭喜你,单击“完成”按钮即可开始 Apache Answer 之旅!
-<!-- --><img decoding="async" loading="lazy" alt="install-complete" src="/zh-CN/assets/images/install-complete-8a820174dc269858f3b46181385eb63e.png" width="2400" height="820" class="img_WevL"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="2 [...]
+<!-- --><img decoding="async" loading="lazy" alt="install-complete" src="/zh-CN/assets/images/install-complete-8a820174dc269858f3b46181385eb63e.png" width="2400" height="820" class="img_WevL"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="2 [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/moderation/index.html b/zh-CN/docs/moderation/index.html
index 9af9ec40..625bc60e 100644
--- a/zh-CN/docs/moderation/index.html
+++ b/zh-CN/docs/moderation/index.html
@@ -10,10 +10,10 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/permission/index.html b/zh-CN/docs/permission/index.html
index 99719c46..90a16f2e 100644
--- a/zh-CN/docs/permission/index.html
+++ b/zh-CN/docs/permission/index.html
@@ -10,15 +10,15 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="权限-1">权限<!-- --><a href="#权限-1" class="hash-link" aria-label="权限的直接链接" title="权限的直接链接"></a></h2>
<!-- --><p>数字表示所需的最低声望等级。社区中有三个选项可用。你可以在管理设置中更改此设置。</p>
<!-- --><table><thead><tr><th>权限</th><th>级别 1</th><th>级别 2(默认)</th><th>级别 3</th></tr></thead><tbody><tr><td>描述</td><td>个人团队、群组所需的较低声望。</td><td>创业社区所需的较低声望。</td><td>成熟社区所需的较高声望。</td></tr><tr><td>提问</td><td>1</td><td>1</td><td>1</td></tr><tr><td>写回答</td><td>1</td><td>1</td><td>1</td></tr><tr><td>写评论</td><td>1</td><td>1</td><td>1</td></tr><tr><td>举报</td><td>1</td><td>1</td><td>1</td></tr><tr><td>点赞评论</td><td>1</td><td>1</td><td>1</td></tr><tr><td>同时发布超过 2 个链接</td><td>1</td><td>10</td><td>10 [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="用户角色">用户角色<!-- --><a href="#用户角色" class="hash-link" aria-label="用户角色的直接链接" title="用户角色的直接链接"></a></h2>
-<!-- --><table><thead><tr><th>权限 \ 角色</th><th>用户</th><th>版主</th><th>管理员</th></tr></thead><tbody><tr><td>默认无特殊访问权限</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>除站点管理界面外可以访问所有帖子</td><td>-</td><td>✓</td><td>✓</td></tr><tr><td>具有访问站点的全部权限</td><td>-</td><td>-</td><td>✓</td></tr></tbody></table></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel= [...]
+<!-- --><table><thead><tr><th>权限 \ 角色</th><th>用户</th><th>版主</th><th>管理员</th></tr></thead><tbody><tr><td>默认无特殊访问权限</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>除站点管理界面外可以访问所有帖子</td><td>-</td><td>✓</td><td>✓</td></tr><tr><td>具有访问站点的全部权限</td><td>-</td><td>-</td><td>✓</td></tr></tbody></table></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel= [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/plugins/index.html b/zh-CN/docs/plugins/index.html
index 1f543885..f150db48 100644
--- a/zh-CN/docs/plugins/index.html
+++ b/zh-CN/docs/plugins/index.html
@@ -1,73 +1,86 @@
<!doctype html>
-<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-guides/plugins" data-has-hydrated="false">
+<html lang="zh-CN" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-getting-started/plugins" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.1.1">
-<title data-rh="true">Using Plugins | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/zh- [...]
+<title data-rh="true">Using Plugins | Apache Answer</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" name="twitter:image" content="https://answer.apache.org/zh-CN/img/head-icon.png"><meta data-rh="true" property="og:url" content="https://answer.apache.org/zh- [...]
<link rel="alternate" type="application/rss+xml" href="/zh-CN/blog/rss.xml" title="Apache Answer RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/zh-CN/blog/atom.xml" title="Apache Answer Atom Feed">
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="introduction">Introduction<!-- --><a href="#introduction" class="hash-link" aria-label="Introduction的直接链接" title="Introduction的直接链接"></a></h2>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="official-plugins">Official plugins<!-- --><a href="#official-plugins" class="hash-link" aria-label="Official plugins的直接链接" title="Official plugins的直接链接"></a></h3>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="official-plugins">Official Plugins<!-- --><a href="#official-plugins" class="hash-link" aria-label="Official Plugins的直接链接" title="Official Plugins的直接链接"></a></h3>
<!-- --><p>You can find a list of officially supported plugins for Apache Answer <!-- --><a href="https://github.com/apache/incubator-answer-plugins" target="_blank" rel="noopener noreferrer">here</a>.<!-- --></p>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="plugin-type">Plugin type<!-- --><a href="#plugin-type" class="hash-link" aria-label="Plugin type的直接链接" title="Plugin type的直接链接"></a></h3>
-<!-- --><p>We classify plugins into different types. Different types of plugins have different functions. Plugins of the same type have the same effect, but are implemented differently.</p>
-<!-- --><ul>
-<!-- --><li><strong>Connector</strong>: The Connector plugin helps us to implement third-party login functionality. e.g. <!-- --><code>GitHub OAuth Login</code></li>
-<!-- --><li><strong>Storage</strong>: The Storage plugin helps us to upload files to third-party storage. (preview)<!-- --></li>
-<!-- --><li><strong>Cache</strong>: Support for using different caching middleware. e.g. <!-- --><code>Redis</code> (preview)<!-- --></li>
-<!-- --><li><strong>Filter</strong>: Filter out illegal questions or answers. (coming soon)<!-- --></li>
-<!-- --><li><strong>Render</strong>: Parsers for different content formats. (coming soon)<!-- --></li>
-<!-- --><li><strong>Finder</strong>: Support for using search engines to speed up the search for question answers. (coming soon)<!-- --></li>
-<!-- --></ul>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="build">Build<!-- --><a href="#build" class="hash-link" aria-label="Build的直接链接" title="Build的直接链接"></a></h2>
-<!-- --><p>Apache Answer binary supports packaging different required plugins into the binary.</p>
+<!-- --><p>The Apache Answer binary supports packaging different required plugins into the binary.</p>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="prerequisites">Prerequisites<!-- --><a href="#prerequisites" class="hash-link" aria-label="Prerequisites的直接链接" title="Prerequisites的直接链接"></a></h3>
<!-- --><ul>
<!-- --><li>Original Apache Answer binary</li>
-<!-- --><li><a href="https://go.dev/" target="_blank" rel="noopener noreferrer">Golang</a> <!-- --><code>>=1.18</code></li>
+<!-- --><li><a href="https://go.dev/" target="_blank" rel="noopener noreferrer">Go</a> <!-- --><code>>=1.18</code></li>
<!-- --><li><a href="https://nodejs.org/" target="_blank" rel="noopener noreferrer">Node.js</a> <!-- --><code>>=16.17</code></li>
<!-- --><li><a href="https://pnpm.io/" target="_blank" rel="noopener noreferrer">pnpm</a> <!-- --><code>>=7</code></li>
<!-- --></ul>
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="command">Command<!-- --><a href="#command" class="hash-link" aria-label="Command的直接链接" title="Command的直接链接"></a></h3>
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="binary-build">Binary Build<!-- --><a href="#binary-build" class="hash-link" aria-label="Binary Build的直接链接" title="Binary Build的直接链接"></a></h3>
<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><p>For example, let's see how to build an Apache Answer binary that includes the github third-party login plugin.</p>
-<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># answer build --with [plugin@plugin_version=[replacement]] --output [file]</span><spa [...]
+<!-- --><p>For example, let's see how to build an Apache Answer binary that includes the GitHub third-party login plugin.</p>
+<!-- --><h4 class="anchor anchorWithStickyNavbar_pwhL" id="using-official-plugins">Using Official Plugins<!-- --><a href="#using-official-plugins" class="hash-link" aria-label="Using Official Plugins的直接链接" title="Using Official Plugins的直接链接"></a></h4>
+<!-- --><p>You can specify the plugins to use with the <!-- --><code>--with</code> parameter:<!-- --></p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Build Answer with the GitHub connector plugin</span><span class="token plain"></span [...]
+<!-- --><p>You can also specify the plugin version:</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Build Answer with the GitHub connector plugin version 1.0.0</span><span class="token [...]
+<!-- --><p>You can use multiple plugins at the same time:</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">$ ./answer build </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></spa [...]
+<!-- --><h4 class="anchor anchorWithStickyNavbar_pwhL" id="using-local-plugins">Using Local Plugins<!-- --><a href="#using-local-plugins" class="hash-link" aria-label="Using Local Plugins的直接链接" title="Using Local Plugins的直接链接"></a></h4>
+<!-- --><p>If you need to use a local plugin, you can use the following command:</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">$ ./answer build --with github.com/apache/incubator-answer-plugins/connector-github@1.0.0</span><span class="token operator" sty [...]
+<!-- --><h4 class="anchor anchorWithStickyNavbar_pwhL" id="cross-compilation">Cross Compilation<!-- --><a href="#cross-compilation" class="hash-link" aria-label="Cross Compilation的直接链接" title="Cross Compilation的直接链接"></a></h4>
+<!-- --><p>You can use the following command to build a Linux-amd64 binary on macOS:</p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token assign-left variable" style="color:#36acaa">CGO_ENABLED</span><span class="token operator" style="co [...]
+<!-- --><h4 class="anchor anchorWithStickyNavbar_pwhL" id="specifying-the-answer-version">Specifying the Answer Version<!-- --><a href="#specifying-the-answer-version" class="hash-link" aria-label="Specifying the Answer Version的直接链接" title="Specifying the Answer Version的直接链接"></a></h4>
+<!-- --><p>You can use the <!-- --><code>ANSWER_MODULE</code> environment variable to specify the Answer version:<!-- --></p>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token assign-left variable" style="color:#36acaa">ANSWER_MODULE</span><span class="token operator" style=" [...]
<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">$ ./new_answer plugin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:i [...]
-<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="build-docker-image-with-plugin-from-answer-base-image">Build docker image with plugin from answer base image<!-- --><a href="#build-docker-image-with-plugin-from-answer-base-image" class="hash-link" aria-label="Build docker image with plugin from answer base image的直接链接" title="Build docker image with plugin from answer base image的直接链接"></a></h3>
-<!-- --><blockquote>
-<!-- --><p>You can follow the steps above to build the binary with the plugin first, and then build a docker image that contains the binary. Of course, you can also build directly on top of the original image.</p>
-<!-- --></blockquote>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">$ ./new_answer plugin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:i [...]
+<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="docker-build">Docker Build<!-- --><a href="#docker-build" class="hash-link" aria-label="Docker Build的直接链接" title="Docker Build的直接链接"></a></h3>
+<!-- --><h4 class="anchor anchorWithStickyNavbar_pwhL" id="build-with-plugin-from-answer-base-image">build with plugin from answer base image<!-- --><a href="#build-with-plugin-from-answer-base-image" class="hash-link" aria-label="build with plugin from answer base image的直接链接" title="build with plugin from answer base image的直接链接"></a></h4>
<!-- --><div class="language-dockerfile codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockTitle_P25_">Dockerfile</div><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">FROM apache/answer as answer-builder</span><br></span><span class="to [...]
<!-- --><blockquote>
<!-- --><p>You can update the --with parameter to add more plugins that you need.</p>
<!-- --></blockquote>
-<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># create a Dockerfile and copy the content above</span><span class="token plain"></spa [...]
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="third-party-plugin">Third-party plugin<!-- --><a href="#third-party-plugin" class="hash-link" aria-label="Third-party plugin的直接链接" title="Third-party plugin的直接链接"></a></h2>
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
-<!-- --><ul>
-<!-- --><li>If the third-party plugin is publicly available, you can build with it like official plugins.</li>
-<!-- --><li>If the third-party plugin is private, you need to download it then build with.</li>
-<!-- --></ul>
+<!-- --><div class="language-shell codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-shell codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Create a Dockerfile and copy the content above</span><span class="token plain"></spa [...]
+<!-- --><h4 class="anchor anchorWithStickyNavbar_pwhL" id="build-with-plugin-from-local-code">build with plugin from local code<!-- --><a href="#build-with-plugin-from-local-code" class="hash-link" aria-label="build with plugin from local code的直接链接" title="build with plugin from local code的直接链接"></a></h4>
+<!-- --><ol>
+<!-- --><li><strong>keep your code up-to-date</strong>: Make sure your local code is synchronized with the official repositories, or at least with the v1.3.5 version.<!-- --></li>
+<!-- --><li><strong>add required plugins</strong>: Add your required plugin repositories to the <!-- --><code>/script/plugin_list</code> file in the root directory, one per line.<!-- --></li>
+<!-- --></ol>
+<!-- --><div class="codeBlockContainer_APcc theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_m3Ux"><pre tabindex="0" class="prism-code language-text codeBlock_qGQc thin-scrollbar"><code class="codeBlockLines_p187"><span class="token-line" style="color:#393A34"><span class="token plain">github.com/apache/incubator-answer-plugins/connector-basic@latest </span><br></span><span class="token-line" style="color:#393A34"><span class= [...]
+<!-- --><ol start="3">
+<!-- --><li><strong>build the Docker image</strong>: Run the <!-- --><code>docker build -t <name[:tag]> . </code> command to start building the image.<!-- --></li>
+<!-- --><li><strong>verify image construction</strong>: Run the <!-- --><code>docker run -d -p 9080:80 -v answer-data:/data --name <container_name> <image_name></code> command to start the container and locally verify whether the image is built successfully.<!-- --></li>
+<!-- --></ol>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="usage">Usage<!-- --><a href="#usage" class="hash-link" aria-label="Usage的直接链接" title="Usage的直接链接"></a></h2>
<!-- --><p>The Apache Answer with the plugin version is used in the same way as before. You can find the plugin's configuration in the admin page.</p>
<!-- --><p><img decoding="async" loading="lazy" alt="plugin-config-admin-page" src="/zh-CN/assets/images/plugin-config-admin-page-e343b33766f45a10093fc621e741c811.png" width="2688" height="980" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="upgrade">Upgrade<!-- --><a href="#upgrade" class="hash-link" aria-label="Upgrade的直接链接" title="Upgrade的直接链接"></a></h2>
<!-- --><div class="theme-admonition theme-admonition-caution admonition_eWuJ alert alert--warning"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>警 [...]
-<!-- --><p>You need build a new Apache Answer binary with the new plugin version, then replace the old Apache Answer binary with the new one. As with normal upgrades, you need to execute different <!-- --><a href="/zh-CN/docs/upgrade">upgrade steps</a> depending on the deployment method. For example, if you are using binary deployment, you need to execute the <!-- --><code>upgrade</code> command.<!-- --></p>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="develop-and-contributing">Develop and contributing<!-- --><a href="#develop-and-contributing" class="hash-link" aria-label="Develop and contributing的直接链接" title="Develop and contributing的直接链接"></a></h2>
-<!-- --><p>Please refer to <!-- --><a href="/zh-CN/community/plugins">the documentation</a> for details.<!-- --></p>
-<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="design--principle">Design & principle<!-- --><a href="#design--principle" class="hash-link" aria-label="Design & principle的直接链接" title="Design & principle的直接链接"></a></h2>
-<!-- --><p>Since Golang is a static language, there is no friendly plugin mechanism. So instead of a dynamic approach, we use recompilation for deployment. Please refer to <!-- --><a href="/zh-CN/blog/2023/07/22/why-the-answer-plugin-system-was-designed-this-way">the blog</a> for details.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_bl [...]
+<!-- --><p>You need to build a new Apache Answer binary with the new plugin version, then replace the old Apache Answer binary with the new one. As with normal upgrades, you need to execute different <!-- --><a href="/zh-CN/docs/upgrade">upgrade steps</a> depending on the deployment method. For example, if you are using binary deployment, you need to execute the <!-- --><code>upgrade</code> command.<!-- --></p>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="third-party-plugin">Third-party Plugin<!-- --><a href="#third-party-plugin" class="hash-link" aria-label="Third-party Plugin的直接链接" title="Third-party Plugin的直接链接"></a></h2>
+<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
+<!-- --><ul>
+<!-- --><li>If the third-party plugin is publicly available, you can build with it like official plugins.</li>
+<!-- --><li>If the third-party plugin is private, you need to download it and then build with it.</li>
+<!-- --></ul>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="develop-and-contribute">Develop and Contribute<!-- --><a href="#develop-and-contribute" class="hash-link" aria-label="Develop and Contribute的直接链接" title="Develop and Contribute的直接链接"></a></h2>
+<!-- --><p>Please refer to <!-- --><a href="/zh-CN/docs/development">the documentation</a> for details.<!-- --></p>
+<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="design--principle">Design & Principle<!-- --><a href="#design--principle" class="hash-link" aria-label="Design & Principle的直接链接" title="Design & Principle的直接链接"></a></h2>
+<!-- --><p>Since Go is a static language, there is no friendly plugin mechanism. Instead of a dynamic approach, we use recompilation for deployment. Please refer to <!-- --><a href="/zh-CN/blog/2023/07/22/why-the-answer-plugin-system-was-designed-this-way">the blog</a> for details.<!-- --></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" re [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/questions/index.html b/zh-CN/docs/questions/index.html
index 140a8626..8df6a553 100644
--- a/zh-CN/docs/questions/index.html
+++ b/zh-CN/docs/questions/index.html
@@ -10,14 +10,14 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="question-status">Question status<!-- --><a href="#question-status" class="hash-link" aria-label="Question status的直接链接" title="Question status的直接链接"></a></h2>
<!-- --><p><img decoding="async" loading="lazy" alt="Question state diagram" src="/zh-CN/assets/images/questions-question-status.drawio-ba8e6f72b87ff5452bcc4dd8cbdc7dea.svg" width="397" height="422" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="apache-answer-status">Apache Answer status<!-- --><a href="#apache-answer-status" class="hash-link" aria-label="Apache Answer status的直接链接" title="Apache Answer status的直接链接"></a></h2>
-<!-- --><p><img decoding="async" loading="lazy" alt="Apache Answer state diagram" src="/zh-CN/assets/images/questions-answer-status.drawio-c037079cbbf31ac37fdb578bb32a35c7.svg" width="187" height="422" class="img_WevL"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="current [...]
+<!-- --><p><img decoding="async" loading="lazy" alt="Apache Answer state diagram" src="/zh-CN/assets/images/questions-answer-status.drawio-c037079cbbf31ac37fdb578bb32a35c7.svg" width="187" height="422" class="img_WevL"></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="current [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/reputation/index.html b/zh-CN/docs/reputation/index.html
index 3377fae2..2e1de351 100644
--- a/zh-CN/docs/reputation/index.html
+++ b/zh-CN/docs/reputation/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><p>声望用于自动化社区生态管理。</p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="声望变化规则">声望变化规则<!-- --><a href="#声望变化规则" class="hash-link" aria-label="声望变化规则的直接链接" title="声望变化规则的直接链接"></a></h2>
<!-- --><table><thead><tr><th>条件</th><th>变化</th></tr></thead><tbody><tr><td>有人点赞你的问题</td><td>+10</td></tr><tr><td>有人点赞你的回答</td><td>+10</td></tr><tr><td>有人接受了你的回答</td><td>+15</td></tr><tr><td>你接受了某人的回答</td><td>+2</td></tr><tr><td>你的提议被采纳</td><td>+2</td></tr><tr><td>你踩了某人的回答</td><td>-1</td></tr><tr><td>你的问题被踩</td><td>-2</td></tr><tr><td>你的回答被踩</td><td>-2</td></tr></tbody></table>
@@ -26,6 +26,6 @@
<!-- --><li>如果某项操作导致用户一天内获得 <!-- --><code>> 200</code> 声望,那么任何后续增加声望的操作都不会增加用户的声望。<!-- --></li>
<!-- --><li>接受回答获得的声望不受 200 声望限制。</li>
<!-- --><li>自己接受的回答不会获得声望。</li>
-<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
+<!-- --></ul></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4- [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/review/index.html b/zh-CN/docs/review/index.html
index 6acf9d10..f6c214f8 100644
--- a/zh-CN/docs/review/index.html
+++ b/zh-CN/docs/review/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1 [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1 [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/settings/index.html b/zh-CN/docs/settings/index.html
index 576b7cc6..cf60cafb 100644
--- a/zh-CN/docs/settings/index.html
+++ b/zh-CN/docs/settings/index.html
@@ -10,10 +10,10 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/tags/index.html b/zh-CN/docs/tags/index.html
index 732b790d..83f077ae 100644
--- a/zh-CN/docs/tags/index.html
+++ b/zh-CN/docs/tags/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
-<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1 [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1 [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/upgrade/index.html b/zh-CN/docs/upgrade/index.html
index a1602de1..33f2acae 100644
--- a/zh-CN/docs/upgrade/index.html
+++ b/zh-CN/docs/upgrade/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- -->
<!-- -->
<!-- --><div class="theme-admonition theme-admonition-caution admonition_eWuJ alert alert--warning"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>警 [...]
@@ -25,6 +25,6 @@
<!-- --><li>执行升级命令 <!-- --><code>./answer upgrade -C ./answer-data/</code></li>
<!-- --><li>运行最新版本 <!-- --><code>./answer run -C ./answer-data/</code></li>
<!-- --></ol></div></div></div>
-<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
+<!-- --><div class="theme-admonition theme-admonition-tip admonition_eWuJ alert alert--success"><div class="admonitionHeading_oigS"><span class="admonitionIcon_Mjm5"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.3 [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/docs/users/index.html b/zh-CN/docs/users/index.html
index 732df877..09d254e3 100644
--- a/zh-CN/docs/users/index.html
+++ b/zh-CN/docs/users/index.html
@@ -10,11 +10,11 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
-<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="user-status">User status<!-- --><a href="#user-status" class="hash-link" aria-label="User status的直接链接" title="User status的直接链接"></a></h2>
<!-- --><p><img decoding="async" loading="lazy" alt="User state diagram" src="/zh-CN/assets/images/users-user-status.drawio-205ba145e81e04f5af6c654d44a3f437.svg" width="539" height="286" class="img_WevL"></p>
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="top-users">Top users<!-- --><a href="#top-users" class="hash-link" aria-label="Top users的直接链接" title="Top users的直接链接"></a></h2>
@@ -91,6 +91,6 @@
<!-- --><h2 class="anchor anchorWithStickyNavbar_pwhL" id="settings">Settings<!-- --><a href="#settings" class="hash-link" aria-label="Settings的直接链接" title="Settings的直接链接"></a></h2>
<!-- --><p>TODO</p>
<!-- --><h3 class="anchor anchorWithStickyNavbar_pwhL" id="unsubscribe-email">Unsubscribe email<!-- --><a href="#unsubscribe-email" class="hash-link" aria-label="Unsubscribe email的直接链接" title="Unsubscribe email的直接链接"></a></h3>
-<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1 [...]
+<!-- --><p>TODO</p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://crowdin.com/project/answer-website/zh-CN" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_N_05" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1 [...]
</body>
</html>
\ No newline at end of file
diff --git a/zh-CN/download/index.html b/zh-CN/download/index.html
index 6f553d81..dfdd98cf 100644
--- a/zh-CN/download/index.html
+++ b/zh-CN/download/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/index.html b/zh-CN/index.html
index 9db2726a..ce1dbe5b 100644
--- a/zh-CN/index.html
+++ b/zh-CN/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/plugins/index.html b/zh-CN/plugins/index.html
index e3c7ef3f..cce02b22 100644
--- a/zh-CN/plugins/index.html
+++ b/zh-CN/plugins/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/search/index.html b/zh-CN/search/index.html
index eca4c6d5..eb33b438 100644
--- a/zh-CN/search/index.html
+++ b/zh-CN/search/index.html
@@ -10,8 +10,8 @@
<link rel="stylesheet" href="/fonts/fonts.css"><link rel="stylesheet" href="/zh-CN/assets/css/styles.f3a8200c.css">
-<script src="/zh-CN/assets/js/runtime~main.f7e6c917.js" defer="defer"></script>
-<script src="/zh-CN/assets/js/main.83a29ec0.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/runtime~main.4bece41c.js" defer="defer"></script>
+<script src="/zh-CN/assets/js/main.bfe2f634.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.se [...]
diff --git a/zh-CN/sitemap.xml b/zh-CN/sitemap.xml
index 67b545b1..832dcd3e 100644
--- a/zh-CN/sitemap.xml
+++ b/zh-CN/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://answer.apache.org/zh-CN/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://answer.apache.org/zh-CN/blog</loc><c [...]
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://answer.apache.org/zh-CN/blog</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://answer.apache.org/zh-CN/blog</loc><c [...]
\ No newline at end of file