This is an automated email from the ASF dual-hosted git repository.
linkinstar pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/answer.git
from 3000e3ae Fix/translation (#1460)
add 666ab706 feat(ui): add min values for inputs and context-based
keyboards for inputs
add 157dbfd0 feat(ui): add types, logic and defaults for min, max value of
input component of form
add 54e602c5 fix(ui): refactor number input props (min,max)
add 9a7eb0f4 fix(service): set default language to "en_US" if invalid
language is provided
add 09b6b34b fix(comment): decode CommentID using DeShortID for consistency
add a15dd415 refactor(internal): compile regex once while clearing text
add ce053ccf fix: multi byte run boundary for cut long title
add 0777291e fix(ui): null pointer access if get branding fails
add bc629db1 chore(deps): bump mockgen to 0.6.0 for go1.25 support
add fc2a1d8a fix(answer): update QuestionID handling in answer update
process
add f723d120 feat: add golangci-lint into lint target
add 9540ef60 refactor(goimports): add goimports to golangci-lint
configuration #1432
add 5e705a12 refactor(lint): improve error handling and code consistency
across multiple files
add 670aa323 refactor(lint): add new linters and fix their issues
add 6660cdf6 fix: add missing revision data for default content (fixes
#1436)
add 740ac61b fix: get right lang
add 8e395d42 Polish translation
add 48b1de83 Update pt_BR.yaml
add 57ba2995 chore: turkish translation improved (#1454)
add d468e2ba feat: add env for glob load template files by gin debug render
add fbb877ab fix(translator): enhance error reporting for invalid
translator YAML files
add 3ddec998 Merge remote-tracking branch 'origin/main' into dev
add e35b9551 fix(lang): enhance language retrieval from gin context
add 59408774 fix(lang): correct translations in Polish and Turkish
language files
add b5ae2d03 fix: admin/themes add layout config
add 2ae309ab fix: delete log
add 92d853ce fix: add i18n
add f92d3a34 fix: update zh_CN.ymal content
add c8881889 fix: admin.themes layout initial value
add c2a62804 fix: add feedback after successfully adding a user in admin
panel (#1462)
add d3a29e7a feat(theme): add layout options for site theme configuration
add 462931a3 Merge remote-tracking branch 'origin/feat/1.7.2/layout' into
test
add cf7f601c Merge branch 'test' of github.com:apache/answer into test
add 9ef55ca0 feat(editor): integrate TipTap WYSIWYG editor with Markdown
support and enhance editor functionalities
add 762773ce chore: clean up pnpm-lock.yaml by removing unused
dependencies and updating existing ones
add 3d437005 refactor(editor): streamline editor component structure and
enhance command methods
add 498c1421 feat(editor): rename WYSIWYG editor to Rich editor and
implement new RichEditor component
add d87726bd refactor(editor): enhance editor components with base props
and initialization logic
add 7a4b57d1 refactor(editor): improve editor component functionality and
code clarity
add ffa8dc2b feat(editor): update TipTap dependencies and enhance table
functionality
add 1c2c7331 feat(editor): enhance plugin system and improve command
methods
add 0bad2c72 chore(dependencies): update TipTap packages to version 3.13.0
add aa7e19b8 Remove TipTap editor utility files including commands,
constants, error handling, events, position conversion, and table extension to
streamline the editor's functionality and reduce code complexity.
add 78714e83 feat(editor): implement image upload functionality with
validation and hooks
add 762e8a73 fix(gitignore): correct node_modules entry and remove
specific plugin exceptions
add 9e236f65 Merge remote-tracking branch 'origin/feat/1.7.2/ui' into test
add 61d9bf34 修复最佳评论越权问题
add 42f8947e fix(notification): use SSO provider for external_id lookup in
notifications
add c8908b7b fix(review): notifications from the specific external system
will take precedence
add 57f31ec7 fix: expand avatar column length from 1024 to 2048
add a1f0b096 fix: update migration version from v1.7.1 to v1.7.2
add d5c07f18 Merge remote-tracking branch 'origin/dev' into test
add d7d692bb fix: Fixed-layout navigation aligns with the width of the
main content.
add 26d868b1 refactor(queue): improve queues
add 5ff6106d fix: address comments and add a test
add 1fbb802e feat: load optional .env file and add .env.example
add d773b869 fix: remove unrelated generated files
add f6d30a5b chore: revert documentation changes in README
add 3d546533 fix: added the init fuction in install_main.go
add 5be6ec9e docs(lic): add MIT license file and clean up init function in
install_main.go
add 6b834c74 Merge remote-tracking branch 'origin/dev' into test
add f05f1eb8 feat(menu): update admin menu settings to include questions,
tags, and advanced options
add 9efa9471 feat(menu): update admin menu settings to include questions,
tags, and advanced options
add c2a0bee7 feat(siteinfo): add users settings endpoint and update
interface settings structure
add 3264fdd1 feat(siteinfo): refactor site legal and security settings to
use new policies and security endpoints
add 128c44f5 feat(menu): update schema to remove deprecated min_tags and
add MinimumTags to SiteQuestionsReq
add 63690569 feat(siteinfo): fix GetSiteTag method to correctly assign
response from siteInfoCommonService
add 18b76f3e feat(siteinfo): add site_security to response structure and
update related schemas
add 73cfbace feat(menu): deprecate default_avatar and gravatar_base_url in
SiteInterfaceReq schema
add 86c2d64d feat(docs): add Apache License 2.0 header to docs.go and
swagger.yaml
add 29ec29bd feat(menu): update admin menu settings to include questions,
tags, and advanced options
add 3cd3e4a8 feat(menu): update admin menu settings to include questions,
tags, and advanced options
add 0d7979e9 feat(siteinfo): add users settings endpoint and update
interface settings structure
add f0636d43 feat(siteinfo): refactor site legal and security settings to
use new policies and security endpoints
add 94de2136 feat(menu): update schema to remove deprecated min_tags and
add MinimumTags to SiteQuestionsReq
add 0bb33e7e feat(siteinfo): fix GetSiteTag method to correctly assign
response from siteInfoCommonService
add 60f8cd18 feat(siteinfo): add site_security to response structure and
update related schemas
add 81511e38 feat(menu): deprecate default_avatar and gravatar_base_url in
SiteInterfaceReq schema
add 8b8550e9 feat(docs): add Apache License 2.0 header to docs.go and
swagger.yaml
add d65e257f feat(docs): add Apache License 2.0 header to wire_gen.go
add f3dddfeb Merge remote-tracking branch 'origin/feat/1.8.0/menu' into
feat/1.8.0/menu
add 630ac20a Management Backend Menu and Function Adjustments (#1474)
add 2d02452e fix: Changes in the editor content will reset the values of
other form fields.
add 06e9d437 fix: Changes in the editor content will reset the values of
other form fields.
add c509723f feat(docs): add layout property with enum options to schema
definitions
add dc7f7521 Support AI Assistant and MCP functions (#1477)
add ce5aadf3 feat: add AI configuration support with related controllers
and services
add 94c03082 fix: correct loop iteration in AI conversation rounds
add f403eadb feat: add AI conversation management endpoints and update
related schemas
add cc1567ac fix: Fix incorrect default value when the input type is
number in SchemeForm.
add ef54781b fix: mcp menu moved to ai assistant
add 9ea13af8 feat(revision): enhance revision management with object
status handling
add b83d0214 feat(ci): add lint action
add bdd1949a Merge remote-tracking branch 'origin/dev' into test
add 8b61cad0 fix(lint): resolve the lint issue
add c1549d29 feat: add AI configuration support with related controllers
and services
add 9fbf9e4f fix: correct loop iteration in AI conversation rounds
add 2a99d234 Merge remote-tracking branch 'origin/feat/1.8.0/new-cp-fe'
into test
add a5edc4fc feat: add advanced site settings and related API endpoints
add 4fd96675 fix: improve Brotli compression handling and validate user
input in vote status
add 34c1e8a3 docs(Makefile): upgrade version to 2.0.0
No new revisions were added by this update.
Summary of changes:
.env.example | 36 +
.../workflows/{check-asf-header.yml => lint.yml} | 56 +-
.gitignore | 3 +
Makefile | 3 +-
README.md | 2 +-
cmd/main.go | 6 +
cmd/wire_gen.go | 71 +-
docs/docs.go | 2528 +++++++++++++++-----
...178-js-sha256.txt => LICENSE-joho-godotenv.txt} | 2 +-
docs/swagger.json | 2528 +++++++++++++++-----
docs/swagger.yaml | 1181 +++++++--
go.mod | 11 +-
go.sum | 24 +-
i18n/en_US.yaml | 93 +-
i18n/zh_CN.yaml | 105 +-
internal/base/constant/ai_config.go | 49 +
internal/base/constant/site_info.go | 3 +
internal/base/constant/site_type.go | 21 +-
internal/base/middleware/auth.go | 4 +-
.../{user_center_plugin_auth.go => mcp_auth.go} | 25 +-
internal/base/middleware/visit_img_auth.go | 4 +-
internal/base/queue/queue.go | 130 +
internal/base/queue/queue_test.go | 253 ++
internal/base/reason/reason.go | 1 +
internal/base/server/http.go | 8 +-
internal/base/translator/provider.go | 6 +-
internal/controller/ai_controller.go | 756 ++++++
internal/controller/ai_conversation_controller.go | 130 +
internal/controller/answer_controller.go | 2 +-
internal/controller/controller.go | 3 +
internal/controller/mcp_controller.go | 351 +++
internal/controller/revision_controller.go | 2 +
internal/controller/siteinfo_controller.go | 29 +-
internal/controller/template_controller.go | 8 +-
.../ai_conversation_admin_controller.go | 123 +
internal/controller_admin/controller.go | 2 +
internal/controller_admin/e_api_key_controller.go | 116 +
internal/controller_admin/siteinfo_controller.go | 290 ++-
.../entity/{power_entity.go => ai_conversation.go} | 22 +-
internal/entity/ai_conversation_record.go | 40 +
.../entity/{power_entity.go => api_key_entity.go} | 27 +-
internal/entity/user_entity.go | 2 +-
internal/install/install_main.go | 8 +-
internal/migrations/init.go | 87 +-
internal/migrations/migrations.go | 3 +
internal/migrations/{v1.go => v29.go} | 12 +-
internal/migrations/v30.go | 396 +++
internal/migrations/v31.go | 116 +
internal/migrations/v5.go | 3 +-
internal/repo/activity/answer_repo.go | 6 +-
internal/repo/activity/vote_repo.go | 6 +-
internal/repo/activity_common/vote.go | 6 +
.../repo/ai_conversation/ai_conversation_repo.go | 205 ++
internal/repo/api_key/api_key_repo.go | 83 +
internal/repo/provider.go | 4 +
internal/repo/site_info/siteinfo_repo.go | 10 +-
.../user_external_login_repo.go | 2 +-
internal/router/answer_api_router.go | 186 +-
.../ai_config_schema.go} | 36 +-
internal/schema/ai_conversation_schema.go | 123 +
internal/schema/api_key_schema.go | 60 +
internal/schema/mcp_schema.go | 194 ++
internal/schema/mcp_tools/mcp_tools.go | 105 +
internal/schema/revision_schema.go | 2 +
internal/schema/simple_obj_info_schema.go | 3 +
internal/schema/siteinfo_schema.go | 175 +-
internal/service/activity_common/activity.go | 6 +-
internal/service/activity_queue/activity_queue.go | 69 -
.../reason.go => activityqueue/activity_queue.go} | 11 +-
.../ai_conversation/ai_conversation_service.go | 372 +++
internal/service/apikey/apikey_service.go | 116 +
internal/service/badge/badge_award_service.go | 6 +-
internal/service/badge/badge_event_handler.go | 6 +-
internal/service/comment/comment_service.go | 22 +-
internal/service/content/answer_service.go | 27 +-
internal/service/content/question_service.go | 22 +-
internal/service/content/revision_service.go | 29 +-
internal/service/content/user_service.go | 6 +-
internal/service/content/vote_service.go | 6 +-
internal/service/dashboard/dashboard_service.go | 17 +-
internal/service/event_queue/event_queue.go | 69 -
.../reason.go => eventqueue/event_queue.go} | 11 +-
.../feature_toggle/feature_toggle_service.go | 130 +
internal/service/meta/meta_service.go | 6 +-
internal/service/mock/siteinfo_repo_mock.go | 150 +-
.../notice_queue/external_notification_queue.go | 69 -
internal/service/notice_queue/notice_queue.go | 69 -
.../noticequeue/notice_queue.go} | 17 +-
.../service/notification/external_notification.go | 6 +-
.../notification/new_question_notification.go | 13 +
.../service/notification_common/notification.go | 13 +-
internal/service/object_info/object_info.go | 12 +-
internal/service/provider.go | 20 +-
internal/service/question_common/question.go | 8 +-
internal/service/report/report_service.go | 6 +-
internal/service/review/review_service.go | 10 +-
internal/service/siteinfo/siteinfo_service.go | 331 ++-
.../service/siteinfo_common/siteinfo_service.go | 98 +-
internal/service/tag/tag_service.go | 6 +-
internal/service/tag_common/tag_common.go | 14 +-
internal/service/uploader/upload.go | 32 +-
script/check-asf-header.sh | 2 +-
ui/.gitignore | 4 +-
ui/package.json | 1 +
ui/pnpm-lock.yaml | 384 ++-
ui/src/common/constants.ts | 66 +-
ui/src/common/interface.ts | 109 +-
ui/src/components/AccordionNav/index.tsx | 65 +-
ui/src/components/AdminSideNav/index.tsx | 13 +-
ui/src/components/BubbleAi/index.tsx | 259 ++
.../{Modal/login.scss => BubbleUser/index.scss} | 9 +-
.../index.tsx | 19 +-
ui/src/components/Customize/index.tsx | 35 +
ui/src/components/Editor/EditorContext.ts | 4 +-
ui/src/components/Editor/MarkdownEditor.tsx | 98 +
ui/src/components/Editor/ToolBars/blockquote.tsx | 21 +-
ui/src/components/Editor/ToolBars/bold.tsx | 10 +-
ui/src/components/Editor/ToolBars/chart.tsx | 181 --
ui/src/components/Editor/ToolBars/code.tsx | 32 +-
ui/src/components/Editor/ToolBars/file.tsx | 15 +-
ui/src/components/Editor/ToolBars/heading.tsx | 24 +-
ui/src/components/Editor/ToolBars/hr.tsx | 11 +-
ui/src/components/Editor/ToolBars/image.tsx | 199 +-
ui/src/components/Editor/ToolBars/indent.tsx | 15 +-
ui/src/components/Editor/ToolBars/index.ts | 2 -
ui/src/components/Editor/ToolBars/italic.tsx | 11 +-
ui/src/components/Editor/ToolBars/link.tsx | 27 +-
ui/src/components/Editor/ToolBars/ol.tsx | 19 +-
ui/src/components/Editor/ToolBars/outdent.tsx | 16 +-
ui/src/components/Editor/ToolBars/table.tsx | 67 +-
ui/src/components/Editor/ToolBars/ul.tsx | 19 +-
ui/src/components/Editor/hooks/useImageUpload.ts | 129 +
ui/src/components/Editor/index.scss | 36 +
ui/src/components/Editor/index.tsx | 165 +-
ui/src/components/Editor/toolItem.tsx | 42 +-
ui/src/components/Editor/types.ts | 56 +-
.../components/Editor/utils/codemirror/adapter.ts | 59 +
ui/src/components/Editor/utils/codemirror/base.ts | 110 +
.../components/Editor/utils/codemirror/commands.ts | 279 +++
.../components/Editor/utils/codemirror/events.ts | 98 +
ui/src/components/Editor/utils/extension.ts | 255 --
ui/src/components/Editor/utils/index.ts | 32 +-
ui/src/components/Header/index.scss | 21 +
ui/src/components/Header/index.tsx | 8 +-
ui/src/components/Modal/Modal.tsx | 6 +-
ui/src/components/PluginRender/index.tsx | 105 +-
ui/src/components/SchemaForm/components/Input.tsx | 6 +-
ui/src/components/SchemaForm/components/Switch.tsx | 3 +-
ui/src/components/SchemaForm/index.tsx | 8 +-
ui/src/components/SchemaForm/types.ts | 2 +-
.../Settings => components/Sender}/index.scss | 38 +-
ui/src/components/Sender/index.tsx | 172 ++
ui/src/components/SideNav/index.tsx | 14 +-
.../{pages/Legal => components/TabNav}/index.tsx | 38 +-
ui/src/components/index.ts | 8 +
ui/src/pages/{ => 404}/403/index.tsx | 0
.../Admin/AiAssistant/components/Action/index.tsx | 72 +
.../AiAssistant/components/DetailModal/index.tsx | 86 +
ui/src/pages/Admin/AiAssistant/index.tsx | 130 +
ui/src/pages/Admin/AiSettings/index.tsx | 486 ++++
ui/src/pages/Admin/Answers/index.tsx | 8 +-
.../components/Action/index.tsx | 62 +-
.../Apikeys/components/AddOrEditModal/index.tsx | 184 ++
.../Apikeys/components/CreatedModal}/index.tsx | 48 +-
.../Apikeys}/components/index.ts | 7 +-
ui/src/pages/Admin/Apikeys/index.tsx | 138 ++
ui/src/pages/Admin/Branding/index.tsx | 16 +-
ui/src/pages/Admin/CssAndHtml/index.tsx | 16 +-
.../Dashboard/components/HealthStatus/index.tsx | 6 +-
ui/src/pages/Admin/Files/index.tsx | 261 ++
ui/src/pages/Admin/General/index.tsx | 29 +-
ui/src/pages/Admin/Interface/index.tsx | 75 +-
ui/src/pages/Admin/Login/index.tsx | 30 +-
ui/src/pages/Admin/Mcp/index.tsx | 113 +
ui/src/pages/Admin/Plugins/Config/index.tsx | 18 +-
ui/src/pages/Admin/{Legal => Policies}/index.tsx | 63 +-
ui/src/pages/Admin/Privileges/index.tsx | 32 +-
ui/src/pages/Admin/QaSettings/index.tsx | 153 ++
ui/src/pages/Admin/Questions/index.tsx | 4 +-
ui/src/pages/Admin/{Legal => Security}/index.tsx | 126 +-
ui/src/pages/Admin/Seo/index.tsx | 16 +-
ui/src/pages/Admin/Smtp/index.tsx | 16 +-
ui/src/pages/Admin/TagsSettings/index.tsx | 189 ++
ui/src/pages/Admin/Themes/index.tsx | 28 +-
ui/src/pages/Admin/Users/index.tsx | 14 +-
.../Admin/{Interface => UsersSettings}/index.tsx | 138 +-
ui/src/pages/Admin/Write/index.tsx | 473 ----
ui/src/pages/Admin/index.scss | 4 +
ui/src/pages/Admin/index.tsx | 16 +-
.../components/ConversationList/index.tsx | 70 +
ui/src/pages/AiAssistant/index.tsx | 380 +++
ui/src/pages/Layout/index.tsx | 14 +-
ui/src/pages/Questions/Ask/index.tsx | 12 +-
ui/src/pages/Questions/Detail/index.scss | 9 +-
ui/src/pages/Questions/EditAnswer/index.tsx | 8 +-
ui/src/pages/Search/components/AiCard/index.tsx | 189 ++
ui/src/pages/Search/components/index.ts | 3 +-
ui/src/pages/Search/index.tsx | 4 +
.../index.tsx | 17 +-
ui/src/pages/Tags/Create/index.tsx | 8 +-
ui/src/pages/Tags/Edit/index.tsx | 8 +-
ui/src/pages/Users/Settings/Profile/index.tsx | 10 +-
ui/src/router/routes.ts | 72 +-
ui/src/services/{client/badges.ts => admin/ai.ts} | 65 +-
ui/src/services/admin/{question.ts => apikeys.ts} | 27 +-
ui/src/services/admin/index.ts | 4 +
.../services.ts => services/admin/mcp.ts} | 27 +-
ui/src/services/admin/question.ts | 10 +
ui/src/services/admin/settings.ts | 38 +-
.../services/{client/search.ts => admin/tags.ts} | 10 +-
ui/src/services/admin/users.ts | 19 +
.../services/{admin/question.ts => client/ai.ts} | 32 +-
ui/src/services/client/index.ts | 1 +
ui/src/stores/{siteLegal.ts => aiControl.ts} | 16 +-
ui/src/stores/index.ts | 6 +-
ui/src/stores/interface.ts | 4 +-
ui/src/stores/loginSetting.ts | 1 -
ui/src/stores/siteInfo.ts | 3 +-
ui/src/stores/{siteLegal.ts => siteSecurity.ts} | 16 +-
ui/src/stores/themeSetting.ts | 2 +
ui/src/stores/writeSetting.ts | 12 +-
ui/src/utils/guard.ts | 17 +-
ui/src/utils/pluginKit/index.ts | 143 +-
ui/src/utils/pluginKit/interface.ts | 2 +
ui/src/utils/requestAi.ts | 319 +++
225 files changed, 16413 insertions(+), 4341 deletions(-)
create mode 100644 .env.example
copy .github/workflows/{check-asf-header.yml => lint.yml} (56%)
copy docs/release/licenses/{LICENSE-emn178-js-sha256.txt =>
LICENSE-joho-godotenv.txt} (96%)
create mode 100644 internal/base/constant/ai_config.go
copy internal/base/middleware/{user_center_plugin_auth.go => mcp_auth.go} (68%)
create mode 100644 internal/base/queue/queue.go
create mode 100644 internal/base/queue/queue_test.go
create mode 100644 internal/controller/ai_controller.go
create mode 100644 internal/controller/ai_conversation_controller.go
create mode 100644 internal/controller/mcp_controller.go
create mode 100644
internal/controller_admin/ai_conversation_admin_controller.go
create mode 100644 internal/controller_admin/e_api_key_controller.go
copy internal/entity/{power_entity.go => ai_conversation.go} (57%)
create mode 100644 internal/entity/ai_conversation_record.go
copy internal/entity/{power_entity.go => api_key_entity.go} (54%)
copy internal/migrations/{v1.go => v29.go} (74%)
create mode 100644 internal/migrations/v30.go
create mode 100644 internal/migrations/v31.go
create mode 100644 internal/repo/ai_conversation/ai_conversation_repo.go
create mode 100644 internal/repo/api_key/api_key_repo.go
copy internal/{service/role/power_service.go => schema/ai_config_schema.go}
(53%)
create mode 100644 internal/schema/ai_conversation_schema.go
create mode 100644 internal/schema/api_key_schema.go
create mode 100644 internal/schema/mcp_schema.go
create mode 100644 internal/schema/mcp_tools/mcp_tools.go
delete mode 100644 internal/service/activity_queue/activity_queue.go
copy internal/service/{reason_common/reason.go =>
activityqueue/activity_queue.go} (81%)
create mode 100644 internal/service/ai_conversation/ai_conversation_service.go
create mode 100644 internal/service/apikey/apikey_service.go
delete mode 100644 internal/service/event_queue/event_queue.go
copy internal/service/{reason_common/reason.go => eventqueue/event_queue.go}
(82%)
create mode 100644 internal/service/feature_toggle/feature_toggle_service.go
delete mode 100644 internal/service/notice_queue/external_notification_queue.go
delete mode 100644 internal/service/notice_queue/notice_queue.go
copy internal/{controller/template_render/answer.go =>
service/noticequeue/notice_queue.go} (68%)
create mode 100644 ui/src/components/BubbleAi/index.tsx
copy ui/src/components/{Modal/login.scss => BubbleUser/index.scss} (88%)
copy ui/src/components/{InitialLoadingPlaceholder => BubbleUser}/index.tsx
(73%)
create mode 100644 ui/src/components/Editor/MarkdownEditor.tsx
delete mode 100644 ui/src/components/Editor/ToolBars/chart.tsx
create mode 100644 ui/src/components/Editor/hooks/useImageUpload.ts
create mode 100644 ui/src/components/Editor/utils/codemirror/adapter.ts
create mode 100644 ui/src/components/Editor/utils/codemirror/base.ts
create mode 100644 ui/src/components/Editor/utils/codemirror/commands.ts
create mode 100644 ui/src/components/Editor/utils/codemirror/events.ts
delete mode 100644 ui/src/components/Editor/utils/extension.ts
copy ui/src/{pages/Users/Settings => components/Sender}/index.scss (68%)
create mode 100644 ui/src/components/Sender/index.tsx
copy ui/src/{pages/Legal => components/TabNav}/index.tsx (62%)
rename ui/src/pages/{ => 404}/403/index.tsx (100%)
create mode 100644 ui/src/pages/Admin/AiAssistant/components/Action/index.tsx
create mode 100644
ui/src/pages/Admin/AiAssistant/components/DetailModal/index.tsx
create mode 100644 ui/src/pages/Admin/AiAssistant/index.tsx
create mode 100644 ui/src/pages/Admin/AiSettings/index.tsx
copy ui/src/pages/Admin/{Answers => Apikeys}/components/Action/index.tsx (50%)
create mode 100644
ui/src/pages/Admin/Apikeys/components/AddOrEditModal/index.tsx
copy ui/src/pages/{Maintenance =>
Admin/Apikeys/components/CreatedModal}/index.tsx (53%)
copy ui/src/pages/{Users/Notifications => Admin/Apikeys}/components/index.ts
(82%)
create mode 100644 ui/src/pages/Admin/Apikeys/index.tsx
create mode 100644 ui/src/pages/Admin/Files/index.tsx
create mode 100644 ui/src/pages/Admin/Mcp/index.tsx
copy ui/src/pages/Admin/{Legal => Policies}/index.tsx (70%)
create mode 100644 ui/src/pages/Admin/QaSettings/index.tsx
rename ui/src/pages/Admin/{Legal => Security}/index.tsx (56%)
create mode 100644 ui/src/pages/Admin/TagsSettings/index.tsx
copy ui/src/pages/Admin/{Interface => UsersSettings}/index.tsx (53%)
delete mode 100644 ui/src/pages/Admin/Write/index.tsx
create mode 100644
ui/src/pages/AiAssistant/components/ConversationList/index.tsx
create mode 100644 ui/src/pages/AiAssistant/index.tsx
create mode 100644 ui/src/pages/Search/components/AiCard/index.tsx
copy ui/src/pages/{SideNavLayout => SideNavLayoutWithoutFooter}/index.tsx (69%)
copy ui/src/services/{client/badges.ts => admin/ai.ts} (54%)
copy ui/src/services/admin/{question.ts => apikeys.ts} (66%)
copy ui/src/{plugins/builtin/SearchInfo/services.ts => services/admin/mcp.ts}
(72%)
copy ui/src/services/{client/search.ts => admin/tags.ts} (77%)
copy ui/src/services/{admin/question.ts => client/ai.ts} (62%)
copy ui/src/stores/{siteLegal.ts => aiControl.ts} (74%)
rename ui/src/stores/{siteLegal.ts => siteSecurity.ts} (75%)
create mode 100644 ui/src/utils/requestAi.ts