gitextract_8j8m3hg4/ ├── .asf.yaml ├── .editorconfig ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── config.yml │ │ ├── enhancement_request.md │ │ └── feature_request.md │ ├── PULL_REQUEST_TEMPLATE/ │ │ └── pull_request_template.md │ └── workflows/ │ ├── build-binary-for-release.yml │ ├── build-image-for-latest-release.yml │ ├── build-image-for-manual.yml │ ├── build-image-for-release.yml │ ├── build-image-for-test.yml │ ├── check-asf-header.yml │ └── lint.yml ├── .gitignore ├── .gitlab-ci.yml ├── .golangci.yaml ├── .goreleaser.yaml ├── .vaunt/ │ └── config.yaml ├── .vscode/ │ └── settings.json ├── Dockerfile ├── LICENSE ├── Makefile ├── NOTICE ├── README.md ├── build/ │ └── README.md ├── charts/ │ ├── .helmignore │ ├── Chart.yaml │ ├── README.md │ ├── templates/ │ │ ├── _helpers.tpl │ │ ├── deployment.yaml │ │ ├── hpa.yaml │ │ ├── ingress.yaml │ │ ├── pvc.yaml │ │ ├── service.yaml │ │ └── serviceaccount.yaml │ └── values.yaml ├── cmd/ │ ├── answer/ │ │ └── main.go │ ├── command.go │ ├── main.go │ ├── wire.go │ └── wire_gen.go ├── configs/ │ ├── config.go │ ├── config.yaml │ ├── path_ignore.yaml │ └── reserved-usernames.json ├── crowdin.yml ├── docker-compose.yaml ├── docs/ │ ├── docs.go │ ├── release/ │ │ ├── LICENSE │ │ ├── NOTICE │ │ └── licenses/ │ │ ├── LICENSE-JedWatson-classnames.txt │ │ ├── LICENSE-Machiel-slugify.txt │ │ ├── LICENSE-Masterminds-semver.txt │ │ ├── LICENSE-Qix--color.txt │ │ ├── LICENSE-anargu-gin-brotli.txt │ │ ├── LICENSE-asaskevich-govalidator.txt │ │ ├── LICENSE-axios-axios.txt │ │ ├── LICENSE-bwmarrin-snowflake.txt │ │ ├── LICENSE-codemirror-basic-setup.txt │ │ ├── LICENSE-codemirror-lang-markdown.txt │ │ ├── LICENSE-codemirror-language-data.txt │ │ ├── LICENSE-codemirror-state.txt │ │ ├── LICENSE-codemirror-view.txt │ │ ├── LICENSE-cznic-sqlite.txt │ │ ├── LICENSE-disintegration-imaging.txt │ │ ├── LICENSE-emn178-js-sha256.txt │ │ ├── LICENSE-facebook-react.txt │ │ ├── LICENSE-gin-gonic-gin.txt │ │ ├── LICENSE-go-gomail-gomail.txt │ │ ├── LICENSE-go-playground-locales.txt │ │ ├── LICENSE-go-playground-universal-translator.txt │ │ ├── LICENSE-go-playground-validator.txt │ │ ├── LICENSE-go-resty-resty.txt │ │ ├── LICENSE-go-sql-driver-mysql.txt │ │ ├── LICENSE-go-yaml-yaml.txt │ │ ├── LICENSE-goccy-go-json.txt │ │ ├── LICENSE-golang-org-x.txt │ │ ├── LICENSE-google-uuid.txt │ │ ├── LICENSE-google-wire.txt │ │ ├── LICENSE-grokify-html-strip-tags-go.txt │ │ ├── LICENSE-i18next-i18next.txt │ │ ├── LICENSE-i18next-react-i18next.txt │ │ ├── LICENSE-iamkun-dayjs.txt │ │ ├── LICENSE-jinzhu-copier.txt │ │ ├── LICENSE-jinzhu-now.txt │ │ ├── LICENSE-joho-godotenv.txt │ │ ├── LICENSE-jordan-wright-email.txt │ │ ├── LICENSE-jxson-front-matter.txt │ │ ├── LICENSE-kpdecker-jsdiff.txt │ │ ├── LICENSE-lib-pq.txt │ │ ├── LICENSE-ljharb-qs.txt │ │ ├── LICENSE-lodash-lodash.txt │ │ ├── LICENSE-mark3labs-mcp-go.txt │ │ ├── LICENSE-markedjs-marked.txt │ │ ├── LICENSE-mattn-go-sqlite3.txt │ │ ├── LICENSE-microcosm-cc-bluemonday.txt │ │ ├── LICENSE-mojocn-base64Captcha.txt │ │ ├── LICENSE-mozillazg-go-pinyin.txt │ │ ├── LICENSE-npm-node-semver.txt │ │ ├── LICENSE-ory-dockertest.txt │ │ ├── LICENSE-pmndrs-zustand.txt │ │ ├── LICENSE-react-bootstrap-react-bootstrap.txt │ │ ├── LICENSE-remix-run-react-router.txt │ │ ├── LICENSE-robfig-cron.txt │ │ ├── LICENSE-sashabaranov-go-openai.txt │ │ ├── LICENSE-scottleedavis-go-exif-remove.txt │ │ ├── LICENSE-segmentfault-pacman.txt │ │ ├── LICENSE-soldair-qrcode.txt │ │ ├── LICENSE-spf13-cobra.txt │ │ ├── LICENSE-staylor-react-helmet-async.txt │ │ ├── LICENSE-stretchr-testify.txt │ │ ├── LICENSE-sudodoki-copy-to-clipboard.txt │ │ ├── LICENSE-swaggo-files.txt │ │ ├── LICENSE-swaggo-gin-swagger.txt │ │ ├── LICENSE-swaggo-swag.txt │ │ ├── LICENSE-tidwall-gjson.txt │ │ ├── LICENSE-twbs-bootstrap.txt │ │ ├── LICENSE-twbs-icons.txt │ │ ├── LICENSE-uber-go-mock.txt │ │ ├── LICENSE-vercel-swr.txt │ │ ├── LICENSE-xorm.txt │ │ ├── LICENSE-yuin-goldmark.txt │ │ └── LIcENSE-Bunlong-next-share.txt │ ├── swagger.json │ └── swagger.yaml ├── go.mod ├── go.sum ├── i18n/ │ ├── af_ZA.yaml │ ├── ar_SA.yaml │ ├── az_AZ.yaml │ ├── bal_BA.yaml │ ├── ban_ID.yaml │ ├── bn_BD.yaml │ ├── bs_BA.yaml │ ├── ca_ES.yaml │ ├── cs_CZ.yaml │ ├── cy_GB.yaml │ ├── da_DK.yaml │ ├── de_DE.yaml │ ├── el_GR.yaml │ ├── en_US.yaml │ ├── es_ES.yaml │ ├── fa_IR.yaml │ ├── fi_FI.yaml │ ├── fr_FR.yaml │ ├── he_IL.yaml │ ├── hi_IN.yaml │ ├── hu_HU.yaml │ ├── hy_AM.yaml │ ├── i18n.go │ ├── i18n.yaml │ ├── id_ID.yaml │ ├── it_IT.yaml │ ├── ja_JP.yaml │ ├── ko_KR.yaml │ ├── ml_IN.yaml │ ├── nl_NL.yaml │ ├── no_NO.yaml │ ├── pl_PL.yaml │ ├── pt_BR.yaml │ ├── pt_PT.yaml │ ├── ro_RO.yaml │ ├── ru_RU.yaml │ ├── sk_SK.yaml │ ├── sq_AL.yaml │ ├── sr_SP.yaml │ ├── sv_SE.yaml │ ├── te_IN.yaml │ ├── tr_TR.yaml │ ├── uk_UA.yaml │ ├── vi_VN.yaml │ ├── zh_CN.yaml │ └── zh_TW.yaml ├── internal/ │ ├── base/ │ │ ├── conf/ │ │ │ └── conf.go │ │ ├── constant/ │ │ │ ├── acticity.go │ │ │ ├── ai_config.go │ │ │ ├── cache_key.go │ │ │ ├── comment.go │ │ │ ├── constant.go │ │ │ ├── ctx_flag.go │ │ │ ├── email_tpl_key.go │ │ │ ├── event.go │ │ │ ├── meta.go │ │ │ ├── notification.go │ │ │ ├── object_type.go │ │ │ ├── plugin_config_key.go │ │ │ ├── privilege.go │ │ │ ├── question.go │ │ │ ├── reason.go │ │ │ ├── revision.go │ │ │ ├── site_info.go │ │ │ ├── site_type.go │ │ │ ├── upload.go │ │ │ └── user.go │ │ ├── cron/ │ │ │ ├── cron.go │ │ │ └── provider.go │ │ ├── data/ │ │ │ ├── config.go │ │ │ └── data.go │ │ ├── handler/ │ │ │ ├── handler.go │ │ │ ├── lang.go │ │ │ ├── response.go │ │ │ └── short_id.go │ │ ├── middleware/ │ │ │ ├── accept_language.go │ │ │ ├── api_key_auth.go │ │ │ ├── auth.go │ │ │ ├── avatar.go │ │ │ ├── header.go │ │ │ ├── mcp_auth.go │ │ │ ├── provider.go │ │ │ ├── rate_limit.go │ │ │ ├── short_id.go │ │ │ ├── user_center_plugin_auth.go │ │ │ └── visit_img_auth.go │ │ ├── pager/ │ │ │ ├── pager.go │ │ │ └── pagination.go │ │ ├── path/ │ │ │ └── path.go │ │ ├── queue/ │ │ │ ├── queue.go │ │ │ └── queue_test.go │ │ ├── reason/ │ │ │ ├── privilege.go │ │ │ └── reason.go │ │ ├── server/ │ │ │ ├── config.go │ │ │ ├── http.go │ │ │ ├── http_funcmap.go │ │ │ └── provider.go │ │ ├── translator/ │ │ │ ├── config.go │ │ │ └── provider.go │ │ └── validator/ │ │ └── validator.go │ ├── cli/ │ │ ├── build.go │ │ ├── config.go │ │ ├── dump.go │ │ ├── i18n.go │ │ ├── install.go │ │ ├── install_check.go │ │ └── reset_password.go │ ├── controller/ │ │ ├── activity_controller.go │ │ ├── ai_controller.go │ │ ├── ai_conversation_controller.go │ │ ├── answer_controller.go │ │ ├── badge_controller.go │ │ ├── collection_controller.go │ │ ├── comment_controller.go │ │ ├── connector_controller.go │ │ ├── controller.go │ │ ├── dashboard_controller.go │ │ ├── embed_controller.go │ │ ├── follow_controller.go │ │ ├── lang_controller.go │ │ ├── mcp_controller.go │ │ ├── meta_controller.go │ │ ├── notification_controller.go │ │ ├── permission_controller.go │ │ ├── plugin_captcha_controller.go │ │ ├── plugin_sidebar_controller.go │ │ ├── plugin_user_center_controller.go │ │ ├── question_controller.go │ │ ├── rank_controller.go │ │ ├── reason_controller.go │ │ ├── render_controller.go │ │ ├── report_controller.go │ │ ├── review_controller.go │ │ ├── revision_controller.go │ │ ├── search_controller.go │ │ ├── siteinfo_controller.go │ │ ├── tag_controller.go │ │ ├── template_controller.go │ │ ├── template_render/ │ │ │ ├── answer.go │ │ │ ├── comment.go │ │ │ ├── controller.go │ │ │ ├── question.go │ │ │ ├── tags.go │ │ │ └── userinfo.go │ │ ├── upload_controller.go │ │ ├── user_controller.go │ │ ├── user_plugin_controller.go │ │ └── vote_controller.go │ ├── controller_admin/ │ │ ├── ai_conversation_admin_controller.go │ │ ├── badge_controller.go │ │ ├── controller.go │ │ ├── e_api_key_controller.go │ │ ├── plugin_controller.go │ │ ├── role_controller.go │ │ ├── siteinfo_controller.go │ │ ├── theme_controller.go │ │ └── user_backyard_controller.go │ ├── entity/ │ │ ├── activity_entity.go │ │ ├── ai_conversation.go │ │ ├── ai_conversation_record.go │ │ ├── answer_entity.go │ │ ├── api_key_entity.go │ │ ├── auth_user_entity.go │ │ ├── badge_award_entity.go │ │ ├── badge_entity.go │ │ ├── badge_group_entity.go │ │ ├── captcha_entity.go │ │ ├── collection_entity.go │ │ ├── collection_group_entity.go │ │ ├── comment_entity.go │ │ ├── config_entity.go │ │ ├── file_record_entity.go │ │ ├── meta_entity.go │ │ ├── notification_entity.go │ │ ├── plugin_config_entity.go │ │ ├── plugin_kv_storage_entity.go │ │ ├── plugin_user_config_entity.go │ │ ├── power_entity.go │ │ ├── question_entity.go │ │ ├── question_link_entity.go │ │ ├── report_entity.go │ │ ├── review_entity.go │ │ ├── revision_entity.go │ │ ├── role_entity.go │ │ ├── role_power_rel_entity.go │ │ ├── site_info.go │ │ ├── tag_entity.go │ │ ├── tag_rel_entity.go │ │ ├── uniqid_entity.go │ │ ├── user_entity.go │ │ ├── user_external_login_entity.go │ │ ├── user_notification_config_entity.go │ │ ├── user_role_rel_entity.go │ │ └── version_entity.go │ ├── install/ │ │ ├── install_controller.go │ │ ├── install_from_env.go │ │ ├── install_main.go │ │ ├── install_req.go │ │ └── install_server.go │ ├── migrations/ │ │ ├── init.go │ │ ├── init_data.go │ │ ├── migrations.go │ │ ├── v1.go │ │ ├── v10.go │ │ ├── v11.go │ │ ├── v12.go │ │ ├── v13.go │ │ ├── v14.go │ │ ├── v15.go │ │ ├── v16.go │ │ ├── v17.go │ │ ├── v18.go │ │ ├── v19.go │ │ ├── v2.go │ │ ├── v20.go │ │ ├── v21.go │ │ ├── v22.go │ │ ├── v23.go │ │ ├── v24.go │ │ ├── v25.go │ │ ├── v26.go │ │ ├── v27.go │ │ ├── v28.go │ │ ├── v29.go │ │ ├── v3.go │ │ ├── v30.go │ │ ├── v31.go │ │ ├── v4.go │ │ ├── v5.go │ │ ├── v6.go │ │ ├── v7.go │ │ ├── v8.go │ │ └── v9.go │ ├── repo/ │ │ ├── activity/ │ │ │ ├── activity_repo.go │ │ │ ├── answer_repo.go │ │ │ ├── follow_repo.go │ │ │ ├── review_repo.go │ │ │ ├── user_active_repo.go │ │ │ └── vote_repo.go │ │ ├── activity_common/ │ │ │ ├── activity_repo.go │ │ │ ├── follow.go │ │ │ └── vote.go │ │ ├── ai_conversation/ │ │ │ └── ai_conversation_repo.go │ │ ├── answer/ │ │ │ └── answer_repo.go │ │ ├── api_key/ │ │ │ └── api_key_repo.go │ │ ├── auth/ │ │ │ └── auth.go │ │ ├── badge/ │ │ │ ├── badge_event_rule.go │ │ │ └── badge_repo.go │ │ ├── badge_award/ │ │ │ └── badge_award_repo.go │ │ ├── badge_group/ │ │ │ └── badge_group_repo.go │ │ ├── captcha/ │ │ │ └── captcha.go │ │ ├── collection/ │ │ │ ├── collection_group_repo.go │ │ │ └── collection_repo.go │ │ ├── comment/ │ │ │ └── comment_repo.go │ │ ├── config/ │ │ │ └── config_repo.go │ │ ├── export/ │ │ │ └── email_repo.go │ │ ├── file_record/ │ │ │ └── file_record_repo.go │ │ ├── limit/ │ │ │ └── limit.go │ │ ├── meta/ │ │ │ └── meta_repo.go │ │ ├── notification/ │ │ │ └── notification_repo.go │ │ ├── plugin_config/ │ │ │ ├── plugin_config_repo.go │ │ │ └── plugin_user_config_repo.go │ │ ├── provider.go │ │ ├── question/ │ │ │ └── question_repo.go │ │ ├── rank/ │ │ │ └── user_rank_repo.go │ │ ├── reason/ │ │ │ └── reason_repo.go │ │ ├── repo_test/ │ │ │ ├── auth_test.go │ │ │ ├── captcha_test.go │ │ │ ├── comment_repo_test.go │ │ │ ├── email_repo_test.go │ │ │ ├── meta_repo_test.go │ │ │ ├── notification_repo_test.go │ │ │ ├── reason_repo_test.go │ │ │ ├── recommend_test.go │ │ │ ├── repo_main_test.go │ │ │ ├── revision_repo_test.go │ │ │ ├── siteinfo_repo_test.go │ │ │ ├── tag_rel_repo_test.go │ │ │ ├── tag_repo_test.go │ │ │ ├── user_backyard_repo_test.go │ │ │ └── user_repo_test.go │ │ ├── report/ │ │ │ └── report_repo.go │ │ ├── review/ │ │ │ └── review_repo.go │ │ ├── revision/ │ │ │ └── revision_repo.go │ │ ├── role/ │ │ │ ├── power_repo.go │ │ │ ├── role_power_rel_repo.go │ │ │ ├── role_repo.go │ │ │ └── user_role_rel_repo.go │ │ ├── search_common/ │ │ │ └── search_repo.go │ │ ├── search_sync/ │ │ │ └── search_sync.go │ │ ├── site_info/ │ │ │ └── siteinfo_repo.go │ │ ├── tag/ │ │ │ ├── tag_rel_repo.go │ │ │ └── tag_repo.go │ │ ├── tag_common/ │ │ │ └── tag_common_repo.go │ │ ├── unique/ │ │ │ └── uniqid_repo.go │ │ ├── user/ │ │ │ ├── user_backyard_repo.go │ │ │ └── user_repo.go │ │ ├── user_external_login/ │ │ │ └── user_external_login_repo.go │ │ └── user_notification_config/ │ │ └── user_notification_config_repo.go │ ├── router/ │ │ ├── answer_api_router.go │ │ ├── config.go │ │ ├── mcp_router.go │ │ ├── plugin_api_router.go │ │ ├── provider.go │ │ ├── static_router.go │ │ ├── swagger_router.go │ │ ├── template_router.go │ │ ├── ui.go │ │ └── ui_test.go │ ├── schema/ │ │ ├── activity.go │ │ ├── ai_config_schema.go │ │ ├── ai_conversation_schema.go │ │ ├── answer_activity_schema.go │ │ ├── answer_schema.go │ │ ├── api_key_schema.go │ │ ├── backyard_user_schema.go │ │ ├── badge_schema.go │ │ ├── collection_group_schema.go │ │ ├── comment_schema.go │ │ ├── config_schema.go │ │ ├── connector_schema.go │ │ ├── dashboard_schema.go │ │ ├── email_template.go │ │ ├── err_schema.go │ │ ├── event_schema.go │ │ ├── follow_schema.go │ │ ├── forbidden_schema.go │ │ ├── mcp_schema.go │ │ ├── mcp_tools/ │ │ │ └── mcp_tools.go │ │ ├── meta_schema.go │ │ ├── new_question_queue_schema.go │ │ ├── notification_schema.go │ │ ├── permission.go │ │ ├── plugin_admin_schema.go │ │ ├── plugin_user_center.go │ │ ├── plugin_user_schema.go │ │ ├── question_schema.go │ │ ├── rank_schema.go │ │ ├── reason_schema.go │ │ ├── render_schema.go │ │ ├── report_schema.go │ │ ├── review_schema.go │ │ ├── revision_schema.go │ │ ├── role_schema.go │ │ ├── search_schema.go │ │ ├── search_schema_test.go │ │ ├── simple_obj_info_schema.go │ │ ├── siteinfo_schema.go │ │ ├── sitemap_schema.go │ │ ├── tag_list_schema.go │ │ ├── tag_schema.go │ │ ├── template_schema.go │ │ ├── theme_schema.go │ │ ├── user_external_login_schema.go │ │ ├── user_notification_schema.go │ │ ├── user_schema.go │ │ └── vote_schema.go │ └── service/ │ ├── action/ │ │ ├── captcha_service.go │ │ └── captcha_strategy.go │ ├── activity/ │ │ ├── activity.go │ │ ├── answer_activity_service.go │ │ ├── review_active.go │ │ └── user_active.go │ ├── activity_common/ │ │ ├── activity.go │ │ ├── follow.go │ │ └── vote.go │ ├── activity_type/ │ │ └── activity_type.go │ ├── activityqueue/ │ │ └── activity_queue.go │ ├── ai_conversation/ │ │ └── ai_conversation_service.go │ ├── answer_common/ │ │ └── answer.go │ ├── apikey/ │ │ └── apikey_service.go │ ├── auth/ │ │ └── auth.go │ ├── badge/ │ │ ├── badge_award_service.go │ │ ├── badge_event_handler.go │ │ ├── badge_group_service.go │ │ └── badge_service.go │ ├── collection/ │ │ ├── collection_group_service.go │ │ └── collection_service.go │ ├── collection_common/ │ │ └── collection.go │ ├── comment/ │ │ └── comment_service.go │ ├── comment_common/ │ │ └── comment_service.go │ ├── config/ │ │ └── config_service.go │ ├── content/ │ │ ├── answer_service.go │ │ ├── question_hottest_service.go │ │ ├── question_service.go │ │ ├── revision_service.go │ │ ├── search_service.go │ │ ├── user_service.go │ │ └── vote_service.go │ ├── dashboard/ │ │ ├── dashboard_service.go │ │ └── dashboard_test.go │ ├── eventqueue/ │ │ └── event_queue.go │ ├── export/ │ │ └── email_service.go │ ├── feature_toggle/ │ │ └── feature_toggle_service.go │ ├── file_record/ │ │ └── file_record_service.go │ ├── follow/ │ │ └── follow_service.go │ ├── importer/ │ │ └── importer_service.go │ ├── meta/ │ │ └── meta_service.go │ ├── meta_common/ │ │ └── meta_common_service.go │ ├── mock/ │ │ └── siteinfo_repo_mock.go │ ├── noticequeue/ │ │ └── notice_queue.go │ ├── notification/ │ │ ├── external_notification.go │ │ ├── invite_answer_notification.go │ │ ├── new_answer_notification.go │ │ ├── new_comment_notification.go │ │ ├── new_question_notification.go │ │ └── notification_service.go │ ├── notification_common/ │ │ └── notification.go │ ├── object_info/ │ │ └── object_info.go │ ├── permission/ │ │ ├── answer_permission.go │ │ ├── comment_permission.go │ │ ├── permission_name.go │ │ ├── question_permission.go │ │ └── tag_permission.go │ ├── plugin_common/ │ │ └── plugin_common_service.go │ ├── provider.go │ ├── question_common/ │ │ └── question.go │ ├── rank/ │ │ └── rank_service.go │ ├── reason/ │ │ └── reason_service.go │ ├── reason_common/ │ │ └── reason.go │ ├── report/ │ │ └── report_service.go │ ├── report_common/ │ │ └── report_common.go │ ├── report_handle/ │ │ └── report_handle.go │ ├── review/ │ │ └── review_service.go │ ├── revision/ │ │ └── revision.go │ ├── revision_common/ │ │ └── revision_service.go │ ├── role/ │ │ ├── power_service.go │ │ ├── role_power_rel_service.go │ │ ├── role_service.go │ │ └── user_role_rel_service.go │ ├── search_common/ │ │ └── search.go │ ├── search_parser/ │ │ └── search_parser.go │ ├── service_config/ │ │ └── service_config.go │ ├── siteinfo/ │ │ └── siteinfo_service.go │ ├── siteinfo_common/ │ │ ├── siteinfo_service.go │ │ └── siteinfo_service_test.go │ ├── tag/ │ │ └── tag_service.go │ ├── tag_common/ │ │ └── tag_common.go │ ├── unique/ │ │ └── uniqid_service.go │ ├── uploader/ │ │ └── upload.go │ ├── user_admin/ │ │ └── user_backyard.go │ ├── user_common/ │ │ └── user.go │ ├── user_external_login/ │ │ ├── user_center_login_service.go │ │ └── user_external_login_service.go │ └── user_notification_config/ │ └── user_notification_config_service.go ├── licenserc.toml ├── pkg/ │ ├── checker/ │ │ ├── chinese.go │ │ ├── email.go │ │ ├── file_type.go │ │ ├── password.go │ │ ├── path_ignore.go │ │ ├── question_link.go │ │ ├── question_link_test.go │ │ ├── reserved_username.go │ │ ├── url.go │ │ ├── username.go │ │ └── zero_string.go │ ├── converter/ │ │ ├── array.go │ │ ├── markdown.go │ │ ├── str.go │ │ └── user.go │ ├── day/ │ │ ├── day.go │ │ └── day_test.go │ ├── dir/ │ │ └── dir.go │ ├── display/ │ │ └── url.go │ ├── encryption/ │ │ └── md5.go │ ├── gravatar/ │ │ ├── gravatar.go │ │ └── gravatar_test.go │ ├── htmltext/ │ │ ├── htmltext.go │ │ └── htmltext_test.go │ ├── obj/ │ │ └── obj.go │ ├── random/ │ │ └── random_username.go │ ├── token/ │ │ └── token.go │ ├── uid/ │ │ ├── id.go │ │ └── sid.go │ └── writer/ │ └── writer.go ├── plugin/ │ ├── agent.go │ ├── base.go │ ├── cache.go │ ├── captcha.go │ ├── cdn.go │ ├── config.go │ ├── connector.go │ ├── embed.go │ ├── filter.go │ ├── importer.go │ ├── kv_storage.go │ ├── notification.go │ ├── parser.go │ ├── plugin.go │ ├── plugin_test/ │ │ ├── kv_storage_test.go │ │ └── plugin_main_test.go │ ├── render.go │ ├── reviewer.go │ ├── search.go │ ├── sidebar.go │ ├── storage.go │ ├── user_center.go │ └── user_config.go ├── script/ │ ├── build_plugin.sh │ ├── check-asf-header.sh │ ├── entrypoint.sh │ ├── gen-api.sh │ └── plugin_list └── ui/ ├── .browserslistrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .lintstagedrc.json ├── .npmrc ├── .prettierrc.json ├── commitlint.config.js ├── config-overrides.js ├── package.json ├── pnpm-workspace.yaml ├── public/ │ ├── index.html │ ├── manifest.json │ └── robots.txt ├── scripts/ │ ├── env.js │ ├── importPlugins.js │ ├── loadPlugins.js │ ├── preinstall.js │ └── setup-eslint.js ├── src/ │ ├── App.test.tsx │ ├── App.tsx │ ├── behaviour/ │ │ └── useLegalClick.tsx │ ├── common/ │ │ ├── _variable.scss │ │ ├── color.scss │ │ ├── constants.ts │ │ ├── interface.ts │ │ ├── pattern.ts │ │ └── sideNavLayout.scss │ ├── components/ │ │ ├── AccordionNav/ │ │ │ ├── index.css │ │ │ └── index.tsx │ │ ├── Actions/ │ │ │ └── index.tsx │ │ ├── AdminSideNav/ │ │ │ └── index.tsx │ │ ├── Avatar/ │ │ │ └── index.tsx │ │ ├── BaseUserCard/ │ │ │ └── index.tsx │ │ ├── BrandUpload/ │ │ │ └── index.tsx │ │ ├── BubbleAi/ │ │ │ └── index.tsx │ │ ├── BubbleUser/ │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── CardBadge/ │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── Comment/ │ │ │ ├── components/ │ │ │ │ ├── ActionBar/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Form/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Reply/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── Counts/ │ │ │ └── index.tsx │ │ ├── CustomSidebar/ │ │ │ └── index.tsx │ │ ├── Customize/ │ │ │ └── index.tsx │ │ ├── CustomizeTheme/ │ │ │ └── index.tsx │ │ ├── DiffContent/ │ │ │ └── index.tsx │ │ ├── Editor/ │ │ │ ├── EditorContext.ts │ │ │ ├── MarkdownEditor.tsx │ │ │ ├── Select/ │ │ │ │ └── index.tsx │ │ │ ├── ToolBars/ │ │ │ │ ├── blockquote.tsx │ │ │ │ ├── bold.tsx │ │ │ │ ├── code.tsx │ │ │ │ ├── file.tsx │ │ │ │ ├── heading.tsx │ │ │ │ ├── help.tsx │ │ │ │ ├── hr.tsx │ │ │ │ ├── image.tsx │ │ │ │ ├── indent.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── italic.tsx │ │ │ │ ├── link.tsx │ │ │ │ ├── ol.tsx │ │ │ │ ├── outdent.tsx │ │ │ │ ├── table.tsx │ │ │ │ └── ul.tsx │ │ │ ├── Viewer.tsx │ │ │ ├── hooks/ │ │ │ │ └── useImageUpload.ts │ │ │ ├── index.scss │ │ │ ├── index.tsx │ │ │ ├── toolItem.tsx │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── codemirror/ │ │ │ │ ├── adapter.ts │ │ │ │ ├── base.ts │ │ │ │ ├── commands.ts │ │ │ │ └── events.ts │ │ │ └── index.ts │ │ ├── Empty/ │ │ │ └── index.tsx │ │ ├── FollowingTags/ │ │ │ └── index.tsx │ │ ├── Footer/ │ │ │ └── index.tsx │ │ ├── FormatTime/ │ │ │ └── index.tsx │ │ ├── Header/ │ │ │ ├── components/ │ │ │ │ ├── NavItems/ │ │ │ │ │ └── index.tsx │ │ │ │ └── SearchInput/ │ │ │ │ └── index.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── HighlightText/ │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── HotQuestions/ │ │ │ └── index.tsx │ │ ├── HttpErrorContent/ │ │ │ └── index.tsx │ │ ├── Icon/ │ │ │ ├── index.tsx │ │ │ └── svg.tsx │ │ ├── ImgViewer/ │ │ │ ├── index.css │ │ │ └── index.tsx │ │ ├── InitialLoadingPlaceholder/ │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── Mentions/ │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── MobileSideNav/ │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── Modal/ │ │ │ ├── BadgeModal.tsx │ │ │ ├── Confirm.tsx │ │ │ ├── LoginToContinueModal.tsx │ │ │ ├── Modal.tsx │ │ │ ├── index.tsx │ │ │ └── login.scss │ │ ├── Operate/ │ │ │ └── index.tsx │ │ ├── PageTags/ │ │ │ └── index.tsx │ │ ├── Pagination/ │ │ │ └── index.tsx │ │ ├── PinList/ │ │ │ └── index.tsx │ │ ├── PluginRender/ │ │ │ └── index.tsx │ │ ├── QueryGroup/ │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── QuestionList/ │ │ │ └── index.tsx │ │ ├── QuestionListLoader/ │ │ │ └── index.tsx │ │ ├── SchemaForm/ │ │ │ ├── README.md │ │ │ ├── components/ │ │ │ │ ├── Button.tsx │ │ │ │ ├── Check.tsx │ │ │ │ ├── Input.tsx │ │ │ │ ├── InputGroup.tsx │ │ │ │ ├── Legend.tsx │ │ │ │ ├── Select.tsx │ │ │ │ ├── Switch.tsx │ │ │ │ ├── TagSelector.tsx │ │ │ │ ├── Textarea.tsx │ │ │ │ ├── Timezone.tsx │ │ │ │ ├── Upload.tsx │ │ │ │ └── index.ts │ │ │ ├── index.tsx │ │ │ └── types.ts │ │ ├── Sender/ │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── Share/ │ │ │ └── index.tsx │ │ ├── SideNav/ │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── TabNav/ │ │ │ └── index.tsx │ │ ├── Tag/ │ │ │ └── index.tsx │ │ ├── TagSelector/ │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── TagsLoader/ │ │ │ └── index.tsx │ │ ├── TextArea/ │ │ │ └── index.tsx │ │ ├── TimeZonePicker/ │ │ │ └── index.tsx │ │ ├── Toast/ │ │ │ └── index.tsx │ │ ├── Unactivate/ │ │ │ └── index.tsx │ │ ├── UploadImg/ │ │ │ └── index.tsx │ │ ├── UserCard/ │ │ │ └── index.tsx │ │ ├── WelcomeTitle/ │ │ │ └── index.tsx │ │ └── index.ts │ ├── hooks/ │ │ ├── index.ts │ │ ├── useActivationEmailModal/ │ │ │ └── index.tsx │ │ ├── useCaptchaModal/ │ │ │ └── index.tsx │ │ ├── useChangePasswordModal/ │ │ │ └── index.tsx │ │ ├── useChangeProfileModal/ │ │ │ └── index.tsx │ │ ├── useChangeUserRoleModal/ │ │ │ └── index.tsx │ │ ├── useExternalToast/ │ │ │ └── index.tsx │ │ ├── useLoginRedirect/ │ │ │ └── index.tsx │ │ ├── usePageTags/ │ │ │ └── index.tsx │ │ ├── usePageUsers/ │ │ │ └── index.tsx │ │ ├── usePrompt/ │ │ │ └── index.tsx │ │ ├── useReportModal/ │ │ │ └── index.tsx │ │ ├── useSkeletonControl/ │ │ │ └── index.tsx │ │ ├── useTagModal/ │ │ │ └── index.tsx │ │ ├── useToast/ │ │ │ └── index.tsx │ │ └── useUserModal/ │ │ └── index.tsx │ ├── i18n/ │ │ └── init.ts │ ├── index.scss │ ├── index.tsx │ ├── pages/ │ │ ├── 404/ │ │ │ ├── 403/ │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── 50X/ │ │ │ └── index.tsx │ │ ├── Admin/ │ │ │ ├── AiAssistant/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Action/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── DetailModal/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── AiSettings/ │ │ │ │ └── index.tsx │ │ │ ├── Answers/ │ │ │ │ ├── components/ │ │ │ │ │ └── Action/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── Apikeys/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Action/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── AddOrEditModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── CreatedModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── index.tsx │ │ │ ├── Badges/ │ │ │ │ ├── components/ │ │ │ │ │ └── Action/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── Branding/ │ │ │ │ └── index.tsx │ │ │ ├── CssAndHtml/ │ │ │ │ └── index.tsx │ │ │ ├── Dashboard/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AnswerLinks/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── HealthStatus/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Statistics/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── SystemInfo/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── index.tsx │ │ │ ├── Files/ │ │ │ │ └── index.tsx │ │ │ ├── General/ │ │ │ │ └── index.tsx │ │ │ ├── Interface/ │ │ │ │ └── index.tsx │ │ │ ├── Login/ │ │ │ │ └── index.tsx │ │ │ ├── Mcp/ │ │ │ │ └── index.tsx │ │ │ ├── Plugins/ │ │ │ │ ├── Config/ │ │ │ │ │ └── index.tsx │ │ │ │ └── Installed/ │ │ │ │ └── index.tsx │ │ │ ├── Policies/ │ │ │ │ └── index.tsx │ │ │ ├── Privileges/ │ │ │ │ └── index.tsx │ │ │ ├── QaSettings/ │ │ │ │ └── index.tsx │ │ │ ├── Questions/ │ │ │ │ ├── components/ │ │ │ │ │ └── Action/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── Security/ │ │ │ │ └── index.tsx │ │ │ ├── Seo/ │ │ │ │ └── index.tsx │ │ │ ├── Smtp/ │ │ │ │ └── index.tsx │ │ │ ├── TagsSettings/ │ │ │ │ └── index.tsx │ │ │ ├── Themes/ │ │ │ │ └── index.tsx │ │ │ ├── Users/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Action/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── DeleteUserModal/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── SuspenseUserModal/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── UsersSettings/ │ │ │ │ └── index.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── AiAssistant/ │ │ │ ├── components/ │ │ │ │ └── ConversationList/ │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── Badges/ │ │ │ ├── Detail/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Badge/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── HeaderLoader/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Loader/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── UserCard/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── Install/ │ │ │ ├── components/ │ │ │ │ ├── FifthStep/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── FirstStep/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── FourthStep/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Progress/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SecondStep/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ThirdStep/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ └── index.tsx │ │ ├── Layout/ │ │ │ └── index.tsx │ │ ├── Legal/ │ │ │ ├── Privacy/ │ │ │ │ └── index.tsx │ │ │ ├── Tos/ │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── Maintenance/ │ │ │ └── index.tsx │ │ ├── Questions/ │ │ │ ├── Ask/ │ │ │ │ ├── components/ │ │ │ │ │ └── SearchQuestion/ │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── Detail/ │ │ │ │ ├── components/ │ │ │ │ │ ├── Alert/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Answer/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── AnswerHead/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ContentLoader/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── InviteToAnswer/ │ │ │ │ │ │ ├── PeopleDropdown.scss │ │ │ │ │ │ ├── PeopleDropdown.tsx │ │ │ │ │ │ ├── index.scss │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── LinkedQuestions/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Question/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Reactions/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RelatedQuestions/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── WriteAnswer/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── EditAnswer/ │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── Linked/ │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── Review/ │ │ │ ├── components/ │ │ │ │ ├── ApproveDropdown/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── EditPostModal/ │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ ├── FlagContent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── QueuedContent/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ReviewType/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SuggestContent/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── index.tsx │ │ │ └── utils/ │ │ │ └── generateData.ts │ │ ├── Search/ │ │ │ ├── components/ │ │ │ │ ├── AiCard/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Empty/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Head/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ListLoader/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchHead/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── SearchItem/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Tips/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ └── index.tsx │ │ ├── SideNavLayout/ │ │ │ └── index.tsx │ │ ├── SideNavLayoutWithoutFooter/ │ │ │ └── index.tsx │ │ ├── Tags/ │ │ │ ├── Create/ │ │ │ │ └── index.tsx │ │ │ ├── Detail/ │ │ │ │ └── index.tsx │ │ │ ├── Edit/ │ │ │ │ └── index.tsx │ │ │ ├── Info/ │ │ │ │ ├── components/ │ │ │ │ │ └── MergeTagModal/ │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── Timeline/ │ │ │ ├── components/ │ │ │ │ └── Item/ │ │ │ │ └── index.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── UserCenter/ │ │ │ ├── Auth/ │ │ │ │ ├── components/ │ │ │ │ │ └── WeCom/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── service.ts │ │ │ │ └── index.tsx │ │ │ └── AuthFailed/ │ │ │ ├── components/ │ │ │ │ └── WeCom.tsx │ │ │ └── index.tsx │ │ └── Users/ │ │ ├── AccountForgot/ │ │ │ ├── components/ │ │ │ │ └── sendEmail.tsx │ │ │ └── index.tsx │ │ ├── ActivationResult/ │ │ │ └── index.tsx │ │ ├── ActiveEmail/ │ │ │ └── index.tsx │ │ ├── AuthCallback/ │ │ │ └── index.tsx │ │ ├── ChangeEmail/ │ │ │ ├── components/ │ │ │ │ └── sendEmail.tsx │ │ │ └── index.tsx │ │ ├── ConfirmNewEmail/ │ │ │ └── index.tsx │ │ ├── Login/ │ │ │ └── index.tsx │ │ ├── Logout/ │ │ │ └── index.tsx │ │ ├── Notifications/ │ │ │ ├── components/ │ │ │ │ ├── Achievements/ │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.tsx │ │ │ │ ├── Inbox/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── OauthBindEmail/ │ │ │ └── index.tsx │ │ ├── PasswordReset/ │ │ │ └── index.tsx │ │ ├── Personal/ │ │ │ ├── components/ │ │ │ │ ├── Alert/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Answers/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Badges/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Comments/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── DefaultList/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ListHead/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── NavBar/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Overview/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Reputation/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── TopList/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UserInfo/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Votes/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.ts │ │ │ └── index.tsx │ │ ├── Register/ │ │ │ ├── components/ │ │ │ │ └── SignUpForm/ │ │ │ │ └── index.tsx │ │ │ └── index.tsx │ │ ├── Settings/ │ │ │ ├── Account/ │ │ │ │ ├── components/ │ │ │ │ │ ├── ModifyEmail/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ModifyPass/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── MyLogins/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.ts │ │ │ │ └── index.tsx │ │ │ ├── Interface/ │ │ │ │ └── index.tsx │ │ │ ├── Notification/ │ │ │ │ └── index.tsx │ │ │ ├── Plugins/ │ │ │ │ └── index.tsx │ │ │ ├── Profile/ │ │ │ │ └── index.tsx │ │ │ ├── components/ │ │ │ │ └── Nav/ │ │ │ │ └── index.tsx │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ ├── Suspended/ │ │ │ └── index.tsx │ │ ├── Unsubscribe/ │ │ │ └── index.tsx │ │ └── index.tsx │ ├── plugins/ │ │ ├── builtin/ │ │ │ ├── HostingConnector/ │ │ │ │ ├── i18n/ │ │ │ │ │ ├── en_US.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh_CN.yaml │ │ │ │ ├── index.tsx │ │ │ │ └── info.yaml │ │ │ ├── SearchInfo/ │ │ │ │ ├── i18n/ │ │ │ │ │ ├── en_US.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh_CN.yaml │ │ │ │ ├── index.tsx │ │ │ │ ├── info.yaml │ │ │ │ └── services.ts │ │ │ ├── ThirdPartyConnector/ │ │ │ │ ├── i18n/ │ │ │ │ │ ├── en_US.yaml │ │ │ │ │ ├── index.ts │ │ │ │ │ └── zh_CN.yaml │ │ │ │ ├── index.tsx │ │ │ │ ├── info.yaml │ │ │ │ └── services.ts │ │ │ └── index.ts │ │ └── index.ts │ ├── react-app-env.d.ts │ ├── router/ │ │ ├── RouteErrorBoundary.tsx │ │ ├── RouteGuard.tsx │ │ ├── alias.ts │ │ ├── index.tsx │ │ ├── pathFactory.ts │ │ └── routes.ts │ ├── services/ │ │ ├── admin/ │ │ │ ├── ai.ts │ │ │ ├── answer.ts │ │ │ ├── apikeys.ts │ │ │ ├── badges.ts │ │ │ ├── dashboard.ts │ │ │ ├── flag.ts │ │ │ ├── index.ts │ │ │ ├── mcp.ts │ │ │ ├── plugins.ts │ │ │ ├── question.ts │ │ │ ├── settings.ts │ │ │ ├── tags.ts │ │ │ └── users.ts │ │ ├── client/ │ │ │ ├── Oauth.ts │ │ │ ├── activity.ts │ │ │ ├── ai.ts │ │ │ ├── badges.ts │ │ │ ├── index.ts │ │ │ ├── legal.ts │ │ │ ├── notification.ts │ │ │ ├── personal.ts │ │ │ ├── question.ts │ │ │ ├── review.ts │ │ │ ├── revision.ts │ │ │ ├── search.ts │ │ │ ├── settings.ts │ │ │ ├── tag.ts │ │ │ ├── timeline.ts │ │ │ └── user.ts │ │ ├── common.ts │ │ ├── index.ts │ │ ├── install/ │ │ │ └── index.ts │ │ └── user-center/ │ │ └── index.ts │ ├── stores/ │ │ ├── aiControl.ts │ │ ├── branding.ts │ │ ├── commentReply.ts │ │ ├── customize.ts │ │ ├── errorCode.ts │ │ ├── index.ts │ │ ├── interface.ts │ │ ├── loggedUserInfo.ts │ │ ├── loginSetting.ts │ │ ├── loginToContinue.ts │ │ ├── pageTags.ts │ │ ├── seoSetting.ts │ │ ├── sideNav.ts │ │ ├── siteInfo.ts │ │ ├── siteSecurity.ts │ │ ├── themeSetting.ts │ │ ├── toast.ts │ │ ├── userCenter.ts │ │ └── writeSetting.ts │ └── utils/ │ ├── animateGift.ts │ ├── color.ts │ ├── common.ts │ ├── floppyNavigation.ts │ ├── guard.ts │ ├── index.ts │ ├── localize.ts │ ├── pluginKit/ │ │ ├── index.ts │ │ ├── interface.ts │ │ └── utils.ts │ ├── progress.ts │ ├── request.ts │ ├── requestAi.ts │ ├── saveDraft.ts │ ├── storage.ts │ ├── storageWithExpires.ts │ └── userCenter.ts ├── static.go ├── template/ │ ├── 404.html │ ├── comment.html │ ├── footer.html │ ├── header.html │ ├── homepage.html │ ├── hot-question.html │ ├── opensearch.xml │ ├── page.html │ ├── question-detail.html │ ├── question.html │ ├── related-question.html │ ├── sidenav.html │ ├── sitemap-list.xml │ ├── sitemap.xml │ ├── sort-btns.html │ ├── tag-detail.html │ └── tags.html └── tsconfig.json