From a3cda6502735c4f8fe444ef0c2ba22beb46ceb8d Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Tue, 23 Aug 2022 16:31:33 +0800 Subject: [PATCH] refactor: move all files into client --- .github/workflows/vercel-nightly.yml | 4 ++-- .dockerignore => client/.dockerignore | 0 .editorconfig => client/.editorconfig | 0 .eslintignore => client/.eslintignore | 0 .eslintrc.js => client/.eslintrc.js | 0 .gitattributes => client/.gitattributes | 0 {.github => client/.github}/workflows/ci.yaml | 0 .../.github}/workflows/docker-publish.yml | 0 .../.github}/workflows/playwright.yml | 0 {.husky => client/.husky}/commit-msg | 0 {.husky => client/.husky}/pre-commit | 0 .npmrc => client/.npmrc | 0 {.vscode => client/.vscode}/launch.json | 0 {.vscode => client/.vscode}/react.code-snippets | 0 {.vscode => client/.vscode}/settings.json | 0 Dockerfile => client/Dockerfile | 0 LICENSE => client/LICENSE | 0 {app => client/app}/.gitignore | 0 {app => client/app}/.npmrc | 0 {app => client/app}/App.tsx | 0 {app => client/app}/app.json | 0 {app => client/app}/assets/adaptive-icon.png | Bin {app => client/app}/assets/favicon.png | Bin {app => client/app}/assets/icon.png | Bin {app => client/app}/assets/splash.png | Bin {app => client/app}/babel.config.js | 0 {app => client/app}/components/AppMain.tsx | 0 {app => client/app}/package.json | 0 {app => client/app}/tsconfig.json | 0 {app => client/app}/yarn.lock | 0 .../build}/config/i18next-scanner.config.js | 0 .../build}/script/buildPublicTranslation.js | 0 {build => client/build}/script/scanTranslation.js | 0 commitlint.config.js => client/commitlint.config.js | 0 {desktop-old => client/desktop-old}/.gitignore | 0 {desktop-old => client/desktop-old}/.npmrc | 0 {desktop-old => client/desktop-old}/build/icon.icns | Bin {desktop-old => client/desktop-old}/build/icon.ico | Bin {desktop-old => client/desktop-old}/forge.config.js | 0 {desktop-old => client/desktop-old}/package.json | 0 .../desktop-old}/scripts/update.ts | 0 .../src/lib/electron-update-notifier.ts | 0 .../desktop-old}/src/lib/update-electron-app.ts | 0 .../desktop-old}/src/main/config.ts | 0 .../desktop-old}/src/main/index.ts | 0 .../desktop-old}/src/main/menu.ts | 0 .../desktop-old}/src/main/update.ts | 0 {desktop-old => client/desktop-old}/tsconfig.json | 0 {desktop-old => client/desktop-old}/yarn.lock | 0 {desktop => client/desktop}/.editorconfig | 0 {desktop => client/desktop}/.erb/configs/.eslintrc | 0 {desktop => client/desktop}/.erb/configs/utils.ts | 0 .../desktop}/.erb/configs/webpack.config.base.ts | 0 .../desktop}/.erb/configs/webpack.config.eslint.ts | 0 .../.erb/configs/webpack.config.main.prod.ts | 0 .../.erb/configs/webpack.config.preload.dev.ts | 0 .../.erb/configs/webpack.config.renderer.dev.ts | 0 .../.erb/configs/webpack.config.renderer.prod.ts | 0 .../desktop}/.erb/configs/webpack.paths.ts | 0 {desktop => client/desktop}/.erb/img/erb-banner.svg | 0 {desktop => client/desktop}/.erb/img/erb-logo.png | Bin {desktop => client/desktop}/.erb/mocks/fileMock.js | 0 {desktop => client/desktop}/.erb/scripts/.eslintrc | 0 .../desktop}/.erb/scripts/check-build-exists.ts | 0 .../desktop}/.erb/scripts/check-native-dep.js | 0 .../desktop}/.erb/scripts/check-node-env.js | 0 .../desktop}/.erb/scripts/check-port-in-use.js | 0 {desktop => client/desktop}/.erb/scripts/clean.js | 0 .../desktop}/.erb/scripts/delete-source-maps.js | 0 .../desktop}/.erb/scripts/electron-rebuild.js | 0 .../desktop}/.erb/scripts/link-modules.ts | 0 .../desktop}/.erb/scripts/notarize.js | 0 {desktop => client/desktop}/.gitattributes | 0 .../desktop}/.github/workflows/publish.yml | 0 .../desktop}/.github/workflows/test.yml | 0 {desktop => client/desktop}/.gitignore | 0 {desktop => client/desktop}/.npmrc | 0 {desktop => client/desktop}/.vscode/extensions.json | 0 {desktop => client/desktop}/.vscode/launch.json | 0 {desktop => client/desktop}/.vscode/settings.json | 0 {desktop => client/desktop}/.vscode/tasks.json | 0 {desktop => client/desktop}/LICENSE | 0 {desktop => client/desktop}/README.md | 0 {desktop => client/desktop}/assets/assets.d.ts | 0 .../desktop}/assets/entitlements.mac.plist | 0 {desktop => client/desktop}/assets/icon.icns | Bin {desktop => client/desktop}/assets/icon.ico | Bin {desktop => client/desktop}/assets/icon.png | Bin {desktop => client/desktop}/assets/icon.svg | 0 {desktop => client/desktop}/electron-builder.yml | 0 {desktop => client/desktop}/package.json | 0 .../desktop}/release/app/package.json | 0 {desktop => client/desktop}/release/app/yarn.lock | 0 .../desktop}/src/__tests__/App.test.tsx | 0 .../desktop}/src/main/lib/electron-serve.ts | 0 {desktop => client/desktop}/src/main/lib/http.ts | 0 {desktop => client/desktop}/src/main/main.ts | 0 {desktop => client/desktop}/src/main/menu.ts | 0 {desktop => client/desktop}/src/main/preload.ts | 0 {desktop => client/desktop}/src/main/util.ts | 0 {desktop => client/desktop}/src/renderer/App.css | 0 {desktop => client/desktop}/src/renderer/App.tsx | 0 {desktop => client/desktop}/src/renderer/index.ejs | 0 {desktop => client/desktop}/src/renderer/index.tsx | 0 .../desktop}/src/renderer/preload.d.ts | 0 {desktop => client/desktop}/tailwind.config.js | 0 {desktop => client/desktop}/test/http-server.ts | 0 {desktop => client/desktop}/tsconfig.json | 0 {desktop => client/desktop}/yarn.lock | 0 docker-compose.yml => client/docker-compose.yml | 0 package.json => client/package.json | 0 {packages => client/packages}/design/.gitignore | 0 .../packages}/design/.storybook/main.js | 0 .../packages}/design/.storybook/preview.js | 0 {packages => client/packages}/design/README.md | 0 .../design/components/AutoFolder/index.stories.tsx | 0 .../design/components/AutoFolder/index.tsx | 0 .../packages}/design/components/Avatar/combined.css | 0 .../packages}/design/components/Avatar/combined.tsx | 0 .../design/components/Avatar/index.stories.tsx | 0 .../packages}/design/components/Avatar/index.tsx | 0 .../packages}/design/components/Avatar/utils.ts | 0 .../components/AvatarWithPreview/index.stories.tsx | 0 .../design/components/AvatarWithPreview/index.tsx | 0 .../design/components/DelayTip/index.stories.tsx | 0 .../packages}/design/components/DelayTip/index.tsx | 0 .../design/components/Highlight/index.module.less | 0 .../packages}/design/components/Highlight/index.tsx | 0 .../packages}/design/components/Icon/index.tsx | 0 .../design/components/Image/index.stories.tsx | 0 .../packages}/design/components/Image/index.tsx | 0 .../design/components/Introduction.stories.mdx | 0 .../components/SensitiveText/index.stories.tsx | 0 .../design/components/SensitiveText/index.tsx | 0 .../components/WebMetaForm/__tests__/utils.spec.ts | 0 .../design/components/WebMetaForm/index.tsx | 0 .../components/WebMetaForm/types/Checkbox.tsx | 0 .../design/components/WebMetaForm/types/Custom.tsx | 0 .../components/WebMetaForm/types/Password.tsx | 0 .../design/components/WebMetaForm/types/Select.tsx | 0 .../design/components/WebMetaForm/types/Text.tsx | 0 .../components/WebMetaForm/types/TextArea.tsx | 0 .../design/components/WebMetaForm/utils.ts | 0 .../packages}/design/components/index.ts | 0 .../packages}/design/components/utils.ts | 0 {packages => client/packages}/design/package.json | 0 {packages => client/packages}/design/tsconfig.json | 0 .../packages}/design/types/index.d.ts | 0 .../plugin-declaration-generator/.gitignore | 0 .../plugin-declaration-generator/README.md | 0 .../plugin-declaration-generator/package.json | 0 .../plugin-declaration-generator/src/index.ts | 0 .../plugin-declaration-generator/src/tsgenerator.ts | 0 .../plugin-declaration-generator/test/demo/bar.ts | 0 .../plugin-declaration-generator/test/demo/foo.ts | 0 .../plugin-declaration-generator/test/demo/index.ts | 0 .../test/demo/tsconfig.json | 0 .../plugin-declaration-generator/test/index.d.ts | 0 .../plugin-declaration-generator/test/index.ts | 0 .../plugin-declaration-generator/tsconfig.json | 0 pnpm-lock.yaml => client/pnpm-lock.yaml | 0 pnpm-workspace.yaml => client/pnpm-workspace.yaml | 0 {shared => client/shared}/api/buildStorage.ts | 0 {shared => client/shared}/api/request.ts | 0 {shared => client/shared}/api/socket.ts | 0 {shared => client/shared}/cache/Provider.tsx | 0 {shared => client/shared}/cache/cache.ts | 0 {shared => client/shared}/cache/index.ts | 0 {shared => client/shared}/cache/useCache.ts | 0 {shared => client/shared}/cache/utils.ts | 0 .../shared}/components/Portal/Consumer.tsx | 0 .../shared}/components/Portal/Manager.tsx | 0 .../shared}/components/Portal/README.md | 0 .../shared}/components/Portal/buildPortal.tsx | 0 .../shared}/components/Portal/context.ts | 0 .../components/Portal/defaultEventEmitter.tsx | 0 .../shared}/components/Portal/index.ts | 0 {shared => client/shared}/components/Provider.tsx | 0 .../shared}/contexts/ChatBoxContext.tsx | 0 .../shared}/contexts/ColorSchemeContext.tsx | 0 .../shared}/contexts/GroupInfoContext.tsx | 0 {shared => client/shared}/event/index.ts | 0 {shared => client/shared}/helper/converse-helper.ts | 0 .../shared}/hooks/factory/createUpdateEffect.ts | 0 .../shared}/hooks/factory/createUseStorageState.ts | 0 .../shared}/hooks/model/useAvailableServices.ts | 0 .../shared}/hooks/model/useUserInfoList.ts | 0 .../shared}/hooks/model/useUserSettings.ts | 0 .../shared}/hooks/model/useUsernames.ts | 0 {shared => client/shared}/hooks/useAsync.ts | 0 {shared => client/shared}/hooks/useAsyncFn.ts | 0 {shared => client/shared}/hooks/useAsyncRefresh.ts | 0 {shared => client/shared}/hooks/useAsyncRequest.ts | 0 {shared => client/shared}/hooks/useDebounce.ts | 0 {shared => client/shared}/hooks/useEffectOnce.ts | 0 {shared => client/shared}/hooks/useInterval.ts | 0 {shared => client/shared}/hooks/useMemoizedFn.ts | 0 {shared => client/shared}/hooks/useMountedState.ts | 0 {shared => client/shared}/hooks/usePrevious.ts | 0 {shared => client/shared}/hooks/useRafState.ts | 0 {shared => client/shared}/hooks/useSearch.ts | 0 {shared => client/shared}/hooks/useShallowObject.ts | 0 {shared => client/shared}/hooks/useTimeoutFn.ts | 0 {shared => client/shared}/hooks/useUnmount.ts | 0 {shared => client/shared}/hooks/useUpdateEffect.ts | 0 {shared => client/shared}/hooks/useUpdateRef.ts | 0 .../shared}/hooks/useWhyDidYouUpdate.ts | 0 {shared => client/shared}/i18n/Trans.tsx | 0 {shared => client/shared}/i18n/__mocks__/index.ts | 0 {shared => client/shared}/i18n/index.ts | 0 .../shared}/i18n/langs/en-US/translation.json | 0 .../shared}/i18n/langs/zh-CN/translation.json | 0 {shared => client/shared}/i18n/language.ts | 0 {shared => client/shared}/index.tsx | 0 .../shared}/manager/__tests__/buildRegFn.spec.ts | 0 {shared => client/shared}/manager/buildRegFn.ts | 0 {shared => client/shared}/manager/buildRegList.ts | 0 {shared => client/shared}/manager/buildRegMap.ts | 0 {shared => client/shared}/manager/request.ts | 0 {shared => client/shared}/manager/service.ts | 0 {shared => client/shared}/manager/socket.ts | 0 {shared => client/shared}/manager/storage.ts | 0 {shared => client/shared}/manager/ui.ts | 0 {shared => client/shared}/model/__all__.ts | 0 {shared => client/shared}/model/common.ts | 0 {shared => client/shared}/model/config.ts | 0 {shared => client/shared}/model/converse.ts | 0 {shared => client/shared}/model/friend.ts | 0 {shared => client/shared}/model/group.ts | 0 {shared => client/shared}/model/message.ts | 0 {shared => client/shared}/model/plugin.ts | 0 {shared => client/shared}/model/user.ts | 0 {shared => client/shared}/package.json | 0 .../shared}/redux/hooks/useAppSelector.ts | 0 .../shared}/redux/hooks/useConverse.ts | 0 .../shared}/redux/hooks/useConverseAck.ts | 0 .../shared}/redux/hooks/useConverseMessage.ts | 0 .../shared}/redux/hooks/useDMConverseName.ts | 0 {shared => client/shared}/redux/hooks/useGroup.ts | 0 .../shared}/redux/hooks/useGroupMemberMute.ts | 0 {shared => client/shared}/redux/hooks/useUnread.ts | 0 .../shared}/redux/hooks/useUserInfo.ts | 0 {shared => client/shared}/redux/setup.ts | 0 {shared => client/shared}/redux/slices/chat.ts | 0 {shared => client/shared}/redux/slices/global.ts | 0 {shared => client/shared}/redux/slices/group.ts | 0 {shared => client/shared}/redux/slices/index.ts | 0 {shared => client/shared}/redux/slices/ui.ts | 0 {shared => client/shared}/redux/slices/user.ts | 0 {shared => client/shared}/redux/store.ts | 0 {shared => client/shared}/types.ts | 0 .../shared}/utils/__tests__/array-helper.spec.ts | 0 .../utils/__tests__/color-scheme-helper.spec.ts | 0 .../shared}/utils/__tests__/date-helper.spec.ts | 0 .../shared}/utils/__tests__/is-promise.spec.ts | 0 .../shared}/utils/__tests__/json-helper.spec.ts | 0 .../shared}/utils/__tests__/string-helper.spec.ts | 0 {shared => client/shared}/utils/array-helper.ts | 0 .../shared}/utils/color-scheme-helper.ts | 0 {shared => client/shared}/utils/consts.ts | 0 {shared => client/shared}/utils/date-helper.ts | 0 {shared => client/shared}/utils/environment.ts | 0 {shared => client/shared}/utils/is-promise.ts | 0 {shared => client/shared}/utils/json-helper.ts | 0 {shared => client/shared}/utils/message-helper.ts | 0 {shared => client/shared}/utils/request.ts | 0 {shared => client/shared}/utils/string-helper.ts | 0 {shared => client/shared}/utils/upload-helper.ts | 0 {shared => client/shared}/utils/url-helper.ts | 0 {shared => client/shared}/utils/utils.ts | 0 {test => client/test}/client.ts | 0 tsconfig.json => client/tsconfig.json | 0 vercel.json => client/vercel.json | 0 {web => client/web}/.ministarrc.js | 0 {web => client/web}/.npmrc | 0 {web => client/web}/assets/config.json | 0 {web => client/web}/assets/images/bg.jpg | Bin {web => client/web}/assets/images/fallback/403.svg | 0 {web => client/web}/assets/images/fallback/404.svg | 0 .../web}/assets/images/fallback/failed.svg | 0 .../web}/assets/images/fallback/in-develop.svg | 0 .../web}/assets/images/fallback/no-content.svg | 0 .../web}/assets/images/fallback/no-image.svg | 0 .../web}/assets/images/fallback/no-message.svg | 0 .../web}/assets/images/fallback/no-network.svg | 0 .../web}/assets/images/fallback/no-permission.svg | 0 .../web}/assets/images/fallback/no-searchresult.svg | 0 {web => client/web}/assets/images/login-pattern.svg | 0 {web => client/web}/assets/images/logo.svg | 0 {web => client/web}/assets/images/logo/logo@192.png | Bin {web => client/web}/assets/images/logo/logo@32.png | Bin {web => client/web}/assets/images/logo/logo@512.png | Bin {web => client/web}/assets/images/problem.svg | 0 {web => client/web}/assets/images/ripple.svg | 0 {web => client/web}/assets/pwa.webmanifest | 0 {web => client/web}/assets/template.html | 0 {web => client/web}/build/__tests__/utils.spec.ts | 0 {web => client/web}/build/inject-analytics.js | 0 {web => client/web}/build/utils.ts | 0 {web => client/web}/build/webpack.config.ts | 0 {web => client/web}/e2e/cypress/.gitignore | 0 {web => client/web}/e2e/cypress/cypress.json | 0 .../e2e/cypress/cypress/components/antd.test.tsx | 0 .../cypress/components/utils/TestWrapper.tsx | 0 .../web}/e2e/cypress/cypress/plugins/index.js | 0 .../e2e/cypress/cypress/plugins/load-webpack.js | 0 .../cypress/plugins/utils/tryLoadWebpackConfig.js | 0 .../web}/e2e/cypress/cypress/support/commands.ts | 0 .../web}/e2e/cypress/cypress/support/index.ts | 0 {web => client/web}/e2e/cypress/package.json | 0 {web => client/web}/e2e/cypress/yarn.lock | 0 {web => client/web}/e2e/playwright/.gitignore | 0 {web => client/web}/e2e/playwright/.npmrc | 0 {web => client/web}/e2e/playwright/package.json | 0 .../web}/e2e/playwright/playwright.config.ts | 0 .../web}/e2e/playwright/tests/entry.spec.ts | 0 .../web}/e2e/playwright/tests/example.spec.ts.skip | 0 .../web}/e2e/playwright/tests/main.spec.ts | 0 .../web}/e2e/playwright/tests/utils/user.ts | 0 {web => client/web}/e2e/playwright/yarn.lock | 0 {web => client/web}/jest.config.js | 0 {web => client/web}/package.json | 0 {web => client/web}/plugins/.eslintrc.js | 0 {web => client/web}/plugins/README.md | 0 .../web}/plugins/com.msgbyte.bbcode/manifest.json | 0 .../web}/plugins/com.msgbyte.bbcode/package.json | 0 .../__tests__/__snapshots__/render.spec.tsx.snap | 0 .../src/__tests__/render.spec.tsx | 0 .../src/bbcode/__tests__/index.spec.ts | 0 .../src/bbcode/__tests__/parser.spec.ts | 0 .../src/bbcode/__tests__/serialize.spec.ts | 0 .../src/bbcode/__tests__/utils.spec.ts | 0 .../plugins/com.msgbyte.bbcode/src/bbcode/index.tsx | 0 .../com.msgbyte.bbcode/src/bbcode/parser.tsx | 0 .../com.msgbyte.bbcode/src/bbcode/serialize.ts | 0 .../plugins/com.msgbyte.bbcode/src/bbcode/type.ts | 0 .../plugins/com.msgbyte.bbcode/src/bbcode/utils.tsx | 0 .../com.msgbyte.bbcode/src/components/Highlight.tsx | 0 .../web}/plugins/com.msgbyte.bbcode/src/index.tsx | 0 .../web}/plugins/com.msgbyte.bbcode/src/render.ts | 0 .../plugins/com.msgbyte.bbcode/src/tags/CodeTag.tsx | 0 .../com.msgbyte.bbcode/src/tags/EmojiTag.tsx | 0 .../plugins/com.msgbyte.bbcode/src/tags/ImgTag.tsx | 0 .../com.msgbyte.bbcode/src/tags/MentionTag.tsx | 0 .../com.msgbyte.bbcode/src/tags/PlainText.tsx | 0 .../plugins/com.msgbyte.bbcode/src/tags/UrlTag.tsx | 0 .../plugins/com.msgbyte.bbcode/src/tags/__all__.ts | 0 .../plugins/com.msgbyte.bbcode/src/tags/styles.less | 0 .../web}/plugins/com.msgbyte.bbcode/tsconfig.json | 0 .../plugins/com.msgbyte.bbcode/types/index.d.ts | 0 .../web}/plugins/com.msgbyte.draw/manifest.json | 0 .../web}/plugins/com.msgbyte.draw/package.json | 0 .../web}/plugins/com.msgbyte.draw/src/DrawModal.tsx | 0 .../web}/plugins/com.msgbyte.draw/src/index.tsx | 0 .../web}/plugins/com.msgbyte.draw/src/translate.ts | 0 .../web}/plugins/com.msgbyte.draw/tsconfig.json | 0 .../web}/plugins/com.msgbyte.genshin/manifest.json | 0 .../web}/plugins/com.msgbyte.genshin/package.json | 0 .../src/GenshinPanel/GachaPool/GachaPoolItem.tsx | 0 .../src/GenshinPanel/GachaPool/GachaResult.tsx | 0 .../src/GenshinPanel/GachaPool/WishResultModal.tsx | 0 .../src/GenshinPanel/GachaPool/WishResultText.tsx | 0 .../src/GenshinPanel/GachaPool/index.tsx | 0 .../src/GenshinPanel/GachaPool/useWish.tsx | 0 .../com.msgbyte.genshin/src/GenshinPanel/consts.ts | 0 .../com.msgbyte.genshin/src/GenshinPanel/index.less | 0 .../com.msgbyte.genshin/src/GenshinPanel/index.tsx | 0 .../com.msgbyte.genshin/src/GenshinPanel/utils.ts | 0 .../src/components/GenshinLoading.less | 0 .../src/components/GenshinLoading.tsx | 0 .../src/components/GenshinRichtext.tsx | 0 .../components/__tests__/GenshinRichtext.spec.tsx | 0 .../__snapshots__/GenshinRichtext.spec.tsx.snap | 0 .../web}/plugins/com.msgbyte.genshin/src/index.ts | 0 .../plugins/com.msgbyte.genshin/src/translate.ts | 0 .../src/utils/openFullScreenVideo.ts | 0 .../web}/plugins/com.msgbyte.genshin/tsconfig.json | 0 .../web}/plugins/com.msgbyte.intro/manifest.json | 0 .../web}/plugins/com.msgbyte.intro/package.json | 0 .../web}/plugins/com.msgbyte.intro/src/index.ts | 0 .../web}/plugins/com.msgbyte.intro/src/steps.ts | 0 .../web}/plugins/com.msgbyte.intro/src/style.less | 0 .../web}/plugins/com.msgbyte.intro/src/tour.ts | 0 .../web}/plugins/com.msgbyte.intro/tsconfig.json | 0 .../web}/plugins/com.msgbyte.miaolang/README.md | 0 .../plugins/com.msgbyte.miaolang/docs/output.png | Bin .../web}/plugins/com.msgbyte.miaolang/docs/send.png | Bin .../web}/plugins/com.msgbyte.miaolang/manifest.json | 0 .../web}/plugins/com.msgbyte.miaolang/package.json | 0 .../com.msgbyte.miaolang/src/SendMiaoModal.tsx | 0 .../web}/plugins/com.msgbyte.miaolang/src/index.ts | 0 .../plugins/com.msgbyte.miaolang/src/miaotrans.ts | 0 .../web}/plugins/com.msgbyte.miaolang/src/reg.ts | 0 .../plugins/com.msgbyte.miaolang/src/translate.ts | 0 .../web}/plugins/com.msgbyte.miaolang/tsconfig.json | 0 .../web}/plugins/com.msgbyte.notify/manifest.json | 0 .../web}/plugins/com.msgbyte.notify/package.json | 0 .../web}/plugins/com.msgbyte.notify/src/index.ts | 0 .../web}/plugins/com.msgbyte.notify/src/notify.ts | 0 .../web}/plugins/com.msgbyte.notify/tsconfig.json | 0 .../web}/plugins/com.msgbyte.openapi/manifest.json | 0 .../web}/plugins/com.msgbyte.openapi/package.json | 0 .../src/MainPanel/AppInfo/Bot.tsx | 0 .../src/MainPanel/AppInfo/OAuth.tsx | 0 .../src/MainPanel/AppInfo/Profile.less | 0 .../src/MainPanel/AppInfo/Profile.tsx | 0 .../src/MainPanel/AppInfo/Summary.tsx | 0 .../src/MainPanel/AppInfo/Webpage.tsx | 0 .../src/MainPanel/AppInfo/index.less | 0 .../src/MainPanel/AppInfo/index.tsx | 0 .../com.msgbyte.openapi/src/MainPanel/context.tsx | 0 .../com.msgbyte.openapi/src/MainPanel/index.less | 0 .../com.msgbyte.openapi/src/MainPanel/index.tsx | 0 .../com.msgbyte.openapi/src/MainPanel/types.ts | 0 .../src/MainPanel/useOpenAppList.ts | 0 .../src/components/SecretValue.less | 0 .../src/components/SecretValue.tsx | 0 .../src/components/ServiceChecker.tsx | 0 .../web}/plugins/com.msgbyte.openapi/src/index.ts | 0 .../src/modals/CreateOpenApp.tsx | 0 .../plugins/com.msgbyte.openapi/src/translate.ts | 0 .../web}/plugins/com.msgbyte.openapi/tsconfig.json | 0 .../web}/plugins/com.msgbyte.snapdrop/README.md | 0 .../web}/plugins/com.msgbyte.snapdrop/manifest.json | 0 .../web}/plugins/com.msgbyte.snapdrop/package.json | 0 .../web}/plugins/com.msgbyte.snapdrop/src/index.tsx | 0 .../plugins/com.msgbyte.snapdrop/src/translate.ts | 0 .../web}/plugins/com.msgbyte.snapdrop/tsconfig.json | 0 .../com.msgbyte.theme.genshin/assets/icon.jpg | Bin .../plugins/com.msgbyte.theme.genshin/manifest.json | 0 .../plugins/com.msgbyte.theme.genshin/package.json | 0 .../com.msgbyte.theme.genshin/src/amber/avatar.png | Bin .../com.msgbyte.theme.genshin/src/amber/bg.jpeg | Bin .../com.msgbyte.theme.genshin/src/amber/theme.less | 0 .../com.msgbyte.theme.genshin/src/hutao/avatar.png | Bin .../com.msgbyte.theme.genshin/src/hutao/bg.jpg | Bin .../com.msgbyte.theme.genshin/src/hutao/theme.less | 0 .../plugins/com.msgbyte.theme.genshin/src/index.ts | 0 .../com.msgbyte.theme.genshin/src/jean/avatar.png | Bin .../com.msgbyte.theme.genshin/src/jean/bg.jpeg | Bin .../com.msgbyte.theme.genshin/src/jean/theme.less | 0 .../com.msgbyte.theme.genshin/src/mona/avatar.png | Bin .../com.msgbyte.theme.genshin/src/mona/bg.jpeg | Bin .../com.msgbyte.theme.genshin/src/mona/theme.less | 0 .../src/rosaria/avatar.png | Bin .../com.msgbyte.theme.genshin/src/rosaria/bg.jpeg | Bin .../src/rosaria/theme.less | 0 .../plugins/com.msgbyte.theme.genshin/tsconfig.json | 0 .../com.msgbyte.theme.genshin/types/index.d.ts | 0 .../plugins/com.msgbyte.theme.miku/manifest.json | 0 .../plugins/com.msgbyte.theme.miku/package.json | 0 .../web}/plugins/com.msgbyte.theme.miku/src/bg.jpg | Bin .../plugins/com.msgbyte.theme.miku/src/index.ts | 0 .../plugins/com.msgbyte.theme.miku/src/theme.less | 0 .../plugins/com.msgbyte.theme.miku/tsconfig.json | 0 .../plugins/com.msgbyte.theme.miku/types/index.d.ts | 0 .../web}/plugins/com.msgbyte.webview/README.md | 0 .../web}/plugins/com.msgbyte.webview/manifest.json | 0 .../web}/plugins/com.msgbyte.webview/package.json | 0 .../src/group/GroupCustomWebPanelRender.tsx | 0 .../src/group/GroupWebPanelRender.tsx | 0 .../web}/plugins/com.msgbyte.webview/src/index.tsx | 0 .../plugins/com.msgbyte.webview/src/translate.ts | 0 .../web}/plugins/com.msgbyte.webview/tsconfig.json | 0 {web => client/web}/postcss.config.js | 0 {web => client/web}/registry.json | 0 .../scripts/generate-plugin-declaration.babel.ts | 0 .../generate-plugin-declaration.typescript.ts | 0 {web => client/web}/scripts/plugin-declaration.ts | 0 {web => client/web}/scripts/sync-config-from-env.js | 0 {web => client/web}/src/App.tsx | 0 .../web}/src/components/AlertErrorView.tsx | 0 {web => client/web}/src/components/Avatar.tsx | 0 {web => client/web}/src/components/AvatarPicker.tsx | 0 .../web}/src/components/AvatarUploader.tsx | 0 .../src/components/ChatBox/ChatBoxPlaceholder.tsx | 0 .../src/components/ChatBox/ChatInputBox/Addon.tsx | 0 .../src/components/ChatBox/ChatInputBox/Emotion.tsx | 0 .../ChatBox/ChatInputBox/clipboard-helper.ts | 0 .../src/components/ChatBox/ChatInputBox/context.tsx | 0 .../src/components/ChatBox/ChatInputBox/index.tsx | 0 .../src/components/ChatBox/ChatInputBox/input.less | 0 .../src/components/ChatBox/ChatInputBox/input.tsx | 0 .../src/components/ChatBox/ChatInputBox/utils.tsx | 0 .../components/ChatBox/ChatMessageList/Item.less | 0 .../src/components/ChatBox/ChatMessageList/Item.tsx | 0 .../ChatBox/ChatMessageList/NormalList.tsx | 0 .../ChatBox/ChatMessageList/VirtualizedList.tsx | 0 .../src/components/ChatBox/ChatMessageList/const.ts | 0 .../components/ChatBox/ChatMessageList/index.tsx | 0 .../src/components/ChatBox/ChatMessageList/types.ts | 0 .../ChatMessageList/useChatMessageItemAction.tsx | 0 .../ChatMessageList/useChatMessageReaction.tsx | 0 .../ChatBox/ChatMessageList/useMessageReactions.tsx | 0 .../useRenderPluginMessageInterpreter.tsx | 0 .../web}/src/components/ChatBox/ChatReply.tsx | 0 .../ChatBox/__tests__/preprocessMessage.spec.ts | 0 .../web}/src/components/ChatBox/index.tsx | 0 .../src/components/ChatBox/preprocessMessage.tsx | 0 .../web}/src/components/ChatBox/useMessageAck.ts | 0 .../web}/src/components/CommonSidebarWrapper.tsx | 0 {web => client/web}/src/components/DelayTip.tsx | 0 {web => client/web}/src/components/DevContainer.tsx | 0 .../DynamicVirtualizedList/DynamicSizeList.tsx | 0 .../DynamicVirtualizedList/ItemMeasurer.tsx | 0 .../src/components/DynamicVirtualizedList/README.md | 0 {web => client/web}/src/components/Emoji/Emoji.tsx | 0 .../web}/src/components/Emoji/Picker.less | 0 {web => client/web}/src/components/Emoji/Picker.tsx | 0 {web => client/web}/src/components/Emoji/const.ts | 0 {web => client/web}/src/components/Emoji/index.tsx | 0 .../web}/src/components/ErrorBoundary.tsx | 0 {web => client/web}/src/components/ErrorView.tsx | 0 {web => client/web}/src/components/FileSelector.tsx | 0 .../web}/src/components/FullModal/CommonTitle.tsx | 0 .../web}/src/components/FullModal/Field.tsx | 0 .../web}/src/components/FullModal/index.tsx | 0 .../web}/src/components/GlobalTemporaryTip.tsx | 0 .../web}/src/components/GroupPanelItem.tsx | 0 .../web}/src/components/GroupPanelSelector.tsx | 0 {web => client/web}/src/components/GroupSection.tsx | 0 {web => client/web}/src/components/Highlight.tsx | 0 {web => client/web}/src/components/Icon.tsx | 0 {web => client/web}/src/components/IconBtn.tsx | 0 {web => client/web}/src/components/Image.tsx | 0 .../web}/src/components/InviteCodeExpiredAt.tsx | 0 {web => client/web}/src/components/IsDeveloping.tsx | 0 .../web}/src/components/LanguageSelect.tsx | 0 {web => client/web}/src/components/Loadable.tsx | 0 {web => client/web}/src/components/Loading.tsx | 0 .../web}/src/components/LoadingOnFirst.tsx | 0 .../web}/src/components/LoadingSpinner.tsx | 0 {web => client/web}/src/components/Markdown.less | 0 {web => client/web}/src/components/Markdown.tsx | 0 {web => client/web}/src/components/Modal.less | 0 {web => client/web}/src/components/Modal.tsx | 0 {web => client/web}/src/components/NoData.tsx | 0 .../web}/src/components/OpenedPanelTip.tsx | 0 .../web}/src/components/Panel/common/Header.tsx | 0 .../web}/src/components/Panel/common/Wrapper.tsx | 0 .../src/components/Panel/group/MembersPanel.tsx | 0 .../web}/src/components/Panel/group/PluginPanel.tsx | 0 .../web}/src/components/Panel/group/TextPanel.tsx | 0 .../web}/src/components/Panel/group/Wrapper.tsx | 0 .../src/components/Panel/personal/ConversePanel.tsx | 0 {web => client/web}/src/components/PillTabs.less | 0 {web => client/web}/src/components/PillTabs.tsx | 0 {web => client/web}/src/components/Portal.tsx | 0 {web => client/web}/src/components/Problem.tsx | 0 .../web}/src/components/QuickSwitcher/index.tsx | 0 .../QuickSwitcher/useQuickSwitcherActionContext.tsx | 0 .../QuickSwitcher/useQuickSwitcherAllAction.ts | 0 .../useQuickSwitcherFilteredActions.tsx | 0 .../web}/src/components/SectionHeader.tsx | 0 {web => client/web}/src/components/SidebarView.tsx | 0 {web => client/web}/src/components/Slides.less | 0 {web => client/web}/src/components/Slides.tsx | 0 {web => client/web}/src/components/Spinner.tsx | 0 {web => client/web}/src/components/SplitPanel.less | 0 {web => client/web}/src/components/SplitPanel.tsx | 0 {web => client/web}/src/components/TcPopover.tsx | 0 {web => client/web}/src/components/TipIcon.tsx | 0 .../web}/src/components/UpdateNotificationBtn.tsx | 0 {web => client/web}/src/components/UserListItem.tsx | 0 {web => client/web}/src/components/UserName.tsx | 0 .../web}/src/components/UserPicker/FriendPicker.tsx | 0 .../web}/src/components/UserPicker/UserPicker.tsx | 0 .../web}/src/components/UserProfileContainer.tsx | 0 {web => client/web}/src/components/UserSelector.tsx | 0 .../web}/src/components/__mocks__/Loadable.tsx | 0 .../components/__tests__/AlertErrorView.spec.tsx | 0 .../web}/src/components/__tests__/DelayTip.spec.tsx | 0 .../src/components/__tests__/Highlight.spec.tsx | 0 .../web}/src/components/__tests__/IconBtn.spec.tsx | 0 .../src/components/__tests__/IsDeveloping.spec.tsx | 0 .../components/__tests__/LoadingSpinner.spec.tsx | 0 .../web}/src/components/__tests__/Markdown.spec.tsx | 0 .../web}/src/components/__tests__/NoData.spec.tsx | 0 .../web}/src/components/__tests__/PillTabs.spec.tsx | 0 .../web}/src/components/__tests__/Slides.spec.tsx | 0 .../web}/src/components/__tests__/Spinner.spec.tsx | 0 .../__snapshots__/AlertErrorView.spec.tsx.snap | 0 .../__tests__/__snapshots__/DelayTip.spec.tsx.snap | 0 .../__tests__/__snapshots__/Highlight.spec.tsx.snap | 0 .../__tests__/__snapshots__/IconBtn.spec.tsx.snap | 0 .../__snapshots__/IsDeveloping.spec.tsx.snap | 0 .../__snapshots__/LoadingSpinner.spec.tsx.snap | 0 .../__tests__/__snapshots__/Markdown.spec.tsx.snap | 0 .../__tests__/__snapshots__/NoData.spec.tsx.snap | 0 .../__tests__/__snapshots__/PillTabs.spec.tsx.snap | 0 .../__tests__/__snapshots__/Slides.spec.tsx.snap | 0 .../__tests__/__snapshots__/Spinner.spec.tsx.snap | 0 .../components/modals/AppendDMConverseMembers.tsx | 0 .../web}/src/components/modals/AvatarCropper.tsx | 0 .../src/components/modals/ClaimTemporaryUser.tsx | 0 .../web}/src/components/modals/CreateDMConverse.tsx | 0 .../web}/src/components/modals/CreateGroup.tsx | 0 .../CreateGroupInvite/CreateInviteCode.module.less | 0 .../modals/CreateGroupInvite/CreateInviteCode.tsx | 0 .../components/modals/CreateGroupInvite/index.tsx | 0 .../src/components/modals/GroupDetail/Invite.tsx | 0 .../modals/GroupDetail/Panel/GroupPanelTree.tsx | 0 .../Panel/__tests__/GroupPanelTree.spec.tsx | 0 .../__snapshots__/GroupPanelTree.spec.tsx.snap | 0 .../GroupDetail/Panel/__tests__/utils.spec.ts | 0 .../components/modals/GroupDetail/Panel/index.tsx | 0 .../GroupDetail/Panel/useGroupPanelTreeDrag.tsx | 0 .../components/modals/GroupDetail/Panel/utils.ts | 0 .../modals/GroupDetail/Role/PermissionItem.tsx | 0 .../components/modals/GroupDetail/Role/RoleItem.tsx | 0 .../components/modals/GroupDetail/Role/index.tsx | 0 .../modals/GroupDetail/Role/tabs/member.tsx | 0 .../modals/GroupDetail/Role/tabs/permission.tsx | 0 .../modals/GroupDetail/Role/tabs/summary.tsx | 0 .../modals/GroupDetail/Role/useModifyPermission.ts | 0 .../modals/GroupDetail/Role/useRoleActions.ts | 0 .../src/components/modals/GroupDetail/Summary.tsx | 0 .../src/components/modals/GroupDetail/index.tsx | 0 .../modals/GroupPanel/CreateGroupPanel.tsx | 0 .../modals/GroupPanel/ModifyGroupPanel.tsx | 0 .../modals/GroupPanel/__tests__/helper.spec.ts | 0 .../web}/src/components/modals/GroupPanel/helper.ts | 0 .../web}/src/components/modals/GroupPanel/types.ts | 0 .../modals/GroupPanel/useGroupPanelFields.tsx | 0 .../src/components/modals/ImageUploadPreviewer.tsx | 0 .../web}/src/components/modals/ModifyPassword.tsx | 0 .../src/components/modals/SelectGroupMember.tsx | 0 .../src/components/modals/ServiceUrlSettings.tsx | 0 .../src/components/modals/SettingsView/About.tsx | 0 .../src/components/modals/SettingsView/Account.tsx | 0 .../src/components/modals/SettingsView/Debug.tsx | 0 .../components/modals/SettingsView/Performance.tsx | 0 .../src/components/modals/SettingsView/Status.tsx | 0 .../src/components/modals/SettingsView/System.tsx | 0 .../src/components/modals/SettingsView/index.tsx | 0 .../src/components/popover/GroupUserPopover.tsx | 0 {web => client/web}/src/context/GroupIdContext.tsx | 0 {web => client/web}/src/context/SocketContext.tsx | 0 {web => client/web}/src/dev.ts | 0 {web => client/web}/src/hooks/useGlobalKeyDown.ts | 0 {web => client/web}/src/hooks/useHistoryNav.ts | 0 {web => client/web}/src/hooks/useIsMobile.ts | 0 {web => client/web}/src/hooks/useLocalStorage.ts | 0 {web => client/web}/src/hooks/usePanelWindow.ts | 0 {web => client/web}/src/hooks/useSearchParam.ts | 0 .../web}/src/hooks/useSessionStorageState.ts | 0 {web => client/web}/src/hooks/useUserPreference.ts | 0 {web => client/web}/src/hooks/useWindowSize.ts | 0 {web => client/web}/src/index.tsx | 0 {web => client/web}/src/init.tsx | 0 .../DocumentView/DocumentMarkdownRender.tsx | 0 .../src/plugin/PluginStore/DocumentView/index.tsx | 0 {web => client/web}/src/plugin/PluginStore/Item.tsx | 0 .../web}/src/plugin/PluginStore/ManualInstall.tsx | 0 .../web}/src/plugin/PluginStore/index.module.less | 0 .../web}/src/plugin/PluginStore/index.tsx | 0 .../web}/src/plugin/__tests__/utils.spec.ts | 0 {web => client/web}/src/plugin/builtin.ts | 0 {web => client/web}/src/plugin/common/index.ts | 0 {web => client/web}/src/plugin/common/reg.ts | 0 {web => client/web}/src/plugin/component/index.tsx | 0 {web => client/web}/src/plugin/loader.ts | 0 {web => client/web}/src/plugin/manager.ts | 0 .../web}/src/plugin/showPluginLoadError.tsx | 0 {web => client/web}/src/plugin/utils.ts | 0 .../web}/src/routes/Entry/ForgetPasswordView.tsx | 0 {web => client/web}/src/routes/Entry/GuestView.tsx | 0 {web => client/web}/src/routes/Entry/LoginView.tsx | 0 .../web}/src/routes/Entry/RegisterView.tsx | 0 .../web}/src/routes/Entry/index.module.less | 0 {web => client/web}/src/routes/Entry/index.tsx | 0 {web => client/web}/src/routes/Entry/utils.ts | 0 .../web}/src/routes/Invite/InviteInfo.tsx | 0 {web => client/web}/src/routes/Invite/JoinBtn.tsx | 0 .../web}/src/routes/Invite/SuccessModal.tsx | 0 {web => client/web}/src/routes/Invite/index.tsx | 0 .../src/routes/Main/Content/Group/GroupHeader.tsx | 0 .../web}/src/routes/Main/Content/Group/Panel.tsx | 0 .../src/routes/Main/Content/Group/PanelRedirect.tsx | 0 .../web}/src/routes/Main/Content/Group/Sidebar.tsx | 0 .../src/routes/Main/Content/Group/SidebarItem.tsx | 0 .../src/routes/Main/Content/Group/TextPanelItem.tsx | 0 .../web}/src/routes/Main/Content/Group/context.tsx | 0 .../web}/src/routes/Main/Content/Group/index.tsx | 0 .../Main/Content/Group/useGroupHeaderAction.tsx | 0 .../web}/src/routes/Main/Content/Group/utils.ts | 0 .../web}/src/routes/Main/Content/PageContent.tsx | 0 .../routes/Main/Content/Personal/Converse/index.tsx | 0 .../Main/Content/Personal/Friends/AddFriend.tsx | 0 .../Main/Content/Personal/Friends/FriendList.tsx | 0 .../Content/Personal/Friends/RequestReceived.tsx | 0 .../Main/Content/Personal/Friends/RequestSend.tsx | 0 .../routes/Main/Content/Personal/Friends/index.tsx | 0 .../routes/Main/Content/Personal/Plugins/index.tsx | 0 .../src/routes/Main/Content/Personal/Sidebar.tsx | 0 .../routes/Main/Content/Personal/SidebarDMItem.tsx | 0 .../web}/src/routes/Main/Content/Personal/index.tsx | 0 .../web}/src/routes/Main/Content/SidebarItem.tsx | 0 .../web}/src/routes/Main/Content/index.tsx | 0 .../web}/src/routes/Main/Navbar/GroupNav.tsx | 0 .../web}/src/routes/Main/Navbar/MobileMenuBtn.tsx | 0 .../web}/src/routes/Main/Navbar/NavItem.tsx | 0 .../web}/src/routes/Main/Navbar/PersonalNav.tsx | 0 .../web}/src/routes/Main/Navbar/SettingBtn.tsx | 0 .../web}/src/routes/Main/Navbar/index.tsx | 0 {web => client/web}/src/routes/Main/Provider.tsx | 0 .../web}/src/routes/Main/SidebarContext.tsx | 0 {web => client/web}/src/routes/Main/index.tsx | 0 .../web}/src/routes/Main/useShortcuts.tsx | 0 {web => client/web}/src/routes/Panel/README.md | 0 {web => client/web}/src/routes/Panel/index.tsx | 0 {web => client/web}/src/styles/antd/dark.less | 0 {web => client/web}/src/styles/antd/index.less | 0 {web => client/web}/src/styles/antd/overwrite.less | 0 {web => client/web}/src/styles/antd/theme.less | 0 {web => client/web}/src/styles/global.less | 0 {web => client/web}/src/styles/index.ts | 0 {web => client/web}/src/styles/tailwind.less | 0 .../web}/src/utils/__tests__/jwt-helper.spec.ts | 0 .../web}/src/utils/__tests__/url-helper.spec.ts | 0 .../web}/src/utils/__tests__/window-helper.spec.ts | 0 {web => client/web}/src/utils/dom-helper.ts | 0 {web => client/web}/src/utils/file-helper.ts | 0 .../web}/src/utils/global-state-helper.ts | 0 {web => client/web}/src/utils/hot-key.ts | 0 {web => client/web}/src/utils/image-helper.ts | 0 {web => client/web}/src/utils/jwt-helper.ts | 0 {web => client/web}/src/utils/location-helper.ts | 0 {web => client/web}/src/utils/measure-helper.ts | 0 {web => client/web}/src/utils/plugin-helper.ts | 0 {web => client/web}/src/utils/role-helper.ts | 0 {web => client/web}/src/utils/sw-helper.ts | 0 {web => client/web}/src/utils/url-helper.ts | 0 {web => client/web}/src/utils/user-helper.ts | 0 {web => client/web}/src/utils/window-helper.ts | 0 {web => client/web}/tailchat.d.ts | 0 {web => client/web}/tailwind.config.js | 0 {web => client/web}/test/fileTransformer.js | 0 {web => client/web}/test/setup.js | 0 {web => client/web}/test/utils/lazy.tsx | 0 {web => client/web}/tsconfig.json | 0 {web => client/web}/tsconfig.node.json | 0 {web => client/web}/tsconfig.test.json | 0 {web => client/web}/types/index.d.ts | 0 {widget => client/widget}/.gitignore | 0 {widget => client/widget}/.yarnrc | 0 {widget => client/widget}/demo/.gitignore | 0 {widget => client/widget}/demo/index.html | 0 {widget => client/widget}/demo/package.json | 0 {widget => client/widget}/demo/yarn.lock | 0 {widget => client/widget}/package.json | 0 {widget => client/widget}/src/index.ts | 0 {widget => client/widget}/tsconfig.json | 0 {widget => client/widget}/yarn.lock | 0 754 files changed, 2 insertions(+), 2 deletions(-) rename .dockerignore => client/.dockerignore (100%) rename .editorconfig => client/.editorconfig (100%) rename .eslintignore => client/.eslintignore (100%) rename .eslintrc.js => client/.eslintrc.js (100%) rename .gitattributes => client/.gitattributes (100%) rename {.github => client/.github}/workflows/ci.yaml (100%) rename {.github => client/.github}/workflows/docker-publish.yml (100%) rename {.github => client/.github}/workflows/playwright.yml (100%) rename {.husky => client/.husky}/commit-msg (100%) rename {.husky => client/.husky}/pre-commit (100%) rename .npmrc => client/.npmrc (100%) rename {.vscode => client/.vscode}/launch.json (100%) rename {.vscode => client/.vscode}/react.code-snippets (100%) rename {.vscode => client/.vscode}/settings.json (100%) rename Dockerfile => client/Dockerfile (100%) rename LICENSE => client/LICENSE (100%) rename {app => client/app}/.gitignore (100%) rename {app => client/app}/.npmrc (100%) rename {app => client/app}/App.tsx (100%) rename {app => client/app}/app.json (100%) rename {app => client/app}/assets/adaptive-icon.png (100%) rename {app => client/app}/assets/favicon.png (100%) rename {app => client/app}/assets/icon.png (100%) rename {app => client/app}/assets/splash.png (100%) rename {app => client/app}/babel.config.js (100%) rename {app => client/app}/components/AppMain.tsx (100%) rename {app => client/app}/package.json (100%) rename {app => client/app}/tsconfig.json (100%) rename {app => client/app}/yarn.lock (100%) rename {build => client/build}/config/i18next-scanner.config.js (100%) rename {build => client/build}/script/buildPublicTranslation.js (100%) rename {build => client/build}/script/scanTranslation.js (100%) rename commitlint.config.js => client/commitlint.config.js (100%) rename {desktop-old => client/desktop-old}/.gitignore (100%) rename {desktop-old => client/desktop-old}/.npmrc (100%) rename {desktop-old => client/desktop-old}/build/icon.icns (100%) rename {desktop-old => client/desktop-old}/build/icon.ico (100%) rename {desktop-old => client/desktop-old}/forge.config.js (100%) rename {desktop-old => client/desktop-old}/package.json (100%) rename {desktop-old => client/desktop-old}/scripts/update.ts (100%) rename {desktop-old => client/desktop-old}/src/lib/electron-update-notifier.ts (100%) rename {desktop-old => client/desktop-old}/src/lib/update-electron-app.ts (100%) rename {desktop-old => client/desktop-old}/src/main/config.ts (100%) rename {desktop-old => client/desktop-old}/src/main/index.ts (100%) rename {desktop-old => client/desktop-old}/src/main/menu.ts (100%) rename {desktop-old => client/desktop-old}/src/main/update.ts (100%) rename {desktop-old => client/desktop-old}/tsconfig.json (100%) rename {desktop-old => client/desktop-old}/yarn.lock (100%) rename {desktop => client/desktop}/.editorconfig (100%) rename {desktop => client/desktop}/.erb/configs/.eslintrc (100%) rename {desktop => client/desktop}/.erb/configs/utils.ts (100%) rename {desktop => client/desktop}/.erb/configs/webpack.config.base.ts (100%) rename {desktop => client/desktop}/.erb/configs/webpack.config.eslint.ts (100%) rename {desktop => client/desktop}/.erb/configs/webpack.config.main.prod.ts (100%) rename {desktop => client/desktop}/.erb/configs/webpack.config.preload.dev.ts (100%) rename {desktop => client/desktop}/.erb/configs/webpack.config.renderer.dev.ts (100%) rename {desktop => client/desktop}/.erb/configs/webpack.config.renderer.prod.ts (100%) rename {desktop => client/desktop}/.erb/configs/webpack.paths.ts (100%) rename {desktop => client/desktop}/.erb/img/erb-banner.svg (100%) rename {desktop => client/desktop}/.erb/img/erb-logo.png (100%) rename {desktop => client/desktop}/.erb/mocks/fileMock.js (100%) rename {desktop => client/desktop}/.erb/scripts/.eslintrc (100%) rename {desktop => client/desktop}/.erb/scripts/check-build-exists.ts (100%) rename {desktop => client/desktop}/.erb/scripts/check-native-dep.js (100%) rename {desktop => client/desktop}/.erb/scripts/check-node-env.js (100%) rename {desktop => client/desktop}/.erb/scripts/check-port-in-use.js (100%) rename {desktop => client/desktop}/.erb/scripts/clean.js (100%) rename {desktop => client/desktop}/.erb/scripts/delete-source-maps.js (100%) rename {desktop => client/desktop}/.erb/scripts/electron-rebuild.js (100%) rename {desktop => client/desktop}/.erb/scripts/link-modules.ts (100%) rename {desktop => client/desktop}/.erb/scripts/notarize.js (100%) rename {desktop => client/desktop}/.gitattributes (100%) rename {desktop => client/desktop}/.github/workflows/publish.yml (100%) rename {desktop => client/desktop}/.github/workflows/test.yml (100%) rename {desktop => client/desktop}/.gitignore (100%) rename {desktop => client/desktop}/.npmrc (100%) rename {desktop => client/desktop}/.vscode/extensions.json (100%) rename {desktop => client/desktop}/.vscode/launch.json (100%) rename {desktop => client/desktop}/.vscode/settings.json (100%) rename {desktop => client/desktop}/.vscode/tasks.json (100%) rename {desktop => client/desktop}/LICENSE (100%) rename {desktop => client/desktop}/README.md (100%) rename {desktop => client/desktop}/assets/assets.d.ts (100%) rename {desktop => client/desktop}/assets/entitlements.mac.plist (100%) rename {desktop => client/desktop}/assets/icon.icns (100%) rename {desktop => client/desktop}/assets/icon.ico (100%) rename {desktop => client/desktop}/assets/icon.png (100%) rename {desktop => client/desktop}/assets/icon.svg (100%) rename {desktop => client/desktop}/electron-builder.yml (100%) rename {desktop => client/desktop}/package.json (100%) rename {desktop => client/desktop}/release/app/package.json (100%) rename {desktop => client/desktop}/release/app/yarn.lock (100%) rename {desktop => client/desktop}/src/__tests__/App.test.tsx (100%) rename {desktop => client/desktop}/src/main/lib/electron-serve.ts (100%) rename {desktop => client/desktop}/src/main/lib/http.ts (100%) rename {desktop => client/desktop}/src/main/main.ts (100%) rename {desktop => client/desktop}/src/main/menu.ts (100%) rename {desktop => client/desktop}/src/main/preload.ts (100%) rename {desktop => client/desktop}/src/main/util.ts (100%) rename {desktop => client/desktop}/src/renderer/App.css (100%) rename {desktop => client/desktop}/src/renderer/App.tsx (100%) rename {desktop => client/desktop}/src/renderer/index.ejs (100%) rename {desktop => client/desktop}/src/renderer/index.tsx (100%) rename {desktop => client/desktop}/src/renderer/preload.d.ts (100%) rename {desktop => client/desktop}/tailwind.config.js (100%) rename {desktop => client/desktop}/test/http-server.ts (100%) rename {desktop => client/desktop}/tsconfig.json (100%) rename {desktop => client/desktop}/yarn.lock (100%) rename docker-compose.yml => client/docker-compose.yml (100%) rename package.json => client/package.json (100%) rename {packages => client/packages}/design/.gitignore (100%) rename {packages => client/packages}/design/.storybook/main.js (100%) rename {packages => client/packages}/design/.storybook/preview.js (100%) rename {packages => client/packages}/design/README.md (100%) rename {packages => client/packages}/design/components/AutoFolder/index.stories.tsx (100%) rename {packages => client/packages}/design/components/AutoFolder/index.tsx (100%) rename {packages => client/packages}/design/components/Avatar/combined.css (100%) rename {packages => client/packages}/design/components/Avatar/combined.tsx (100%) rename {packages => client/packages}/design/components/Avatar/index.stories.tsx (100%) rename {packages => client/packages}/design/components/Avatar/index.tsx (100%) rename {packages => client/packages}/design/components/Avatar/utils.ts (100%) rename {packages => client/packages}/design/components/AvatarWithPreview/index.stories.tsx (100%) rename {packages => client/packages}/design/components/AvatarWithPreview/index.tsx (100%) rename {packages => client/packages}/design/components/DelayTip/index.stories.tsx (100%) rename {packages => client/packages}/design/components/DelayTip/index.tsx (100%) rename {packages => client/packages}/design/components/Highlight/index.module.less (100%) rename {packages => client/packages}/design/components/Highlight/index.tsx (100%) rename {packages => client/packages}/design/components/Icon/index.tsx (100%) rename {packages => client/packages}/design/components/Image/index.stories.tsx (100%) rename {packages => client/packages}/design/components/Image/index.tsx (100%) rename {packages => client/packages}/design/components/Introduction.stories.mdx (100%) rename {packages => client/packages}/design/components/SensitiveText/index.stories.tsx (100%) rename {packages => client/packages}/design/components/SensitiveText/index.tsx (100%) rename {packages => client/packages}/design/components/WebMetaForm/__tests__/utils.spec.ts (100%) rename {packages => client/packages}/design/components/WebMetaForm/index.tsx (100%) rename {packages => client/packages}/design/components/WebMetaForm/types/Checkbox.tsx (100%) rename {packages => client/packages}/design/components/WebMetaForm/types/Custom.tsx (100%) rename {packages => client/packages}/design/components/WebMetaForm/types/Password.tsx (100%) rename {packages => client/packages}/design/components/WebMetaForm/types/Select.tsx (100%) rename {packages => client/packages}/design/components/WebMetaForm/types/Text.tsx (100%) rename {packages => client/packages}/design/components/WebMetaForm/types/TextArea.tsx (100%) rename {packages => client/packages}/design/components/WebMetaForm/utils.ts (100%) rename {packages => client/packages}/design/components/index.ts (100%) rename {packages => client/packages}/design/components/utils.ts (100%) rename {packages => client/packages}/design/package.json (100%) rename {packages => client/packages}/design/tsconfig.json (100%) rename {packages => client/packages}/design/types/index.d.ts (100%) rename {packages => client/packages}/plugin-declaration-generator/.gitignore (100%) rename {packages => client/packages}/plugin-declaration-generator/README.md (100%) rename {packages => client/packages}/plugin-declaration-generator/package.json (100%) rename {packages => client/packages}/plugin-declaration-generator/src/index.ts (100%) rename {packages => client/packages}/plugin-declaration-generator/src/tsgenerator.ts (100%) rename {packages => client/packages}/plugin-declaration-generator/test/demo/bar.ts (100%) rename {packages => client/packages}/plugin-declaration-generator/test/demo/foo.ts (100%) rename {packages => client/packages}/plugin-declaration-generator/test/demo/index.ts (100%) rename {packages => client/packages}/plugin-declaration-generator/test/demo/tsconfig.json (100%) rename {packages => client/packages}/plugin-declaration-generator/test/index.d.ts (100%) rename {packages => client/packages}/plugin-declaration-generator/test/index.ts (100%) rename {packages => client/packages}/plugin-declaration-generator/tsconfig.json (100%) rename pnpm-lock.yaml => client/pnpm-lock.yaml (100%) rename pnpm-workspace.yaml => client/pnpm-workspace.yaml (100%) rename {shared => client/shared}/api/buildStorage.ts (100%) rename {shared => client/shared}/api/request.ts (100%) rename {shared => client/shared}/api/socket.ts (100%) rename {shared => client/shared}/cache/Provider.tsx (100%) rename {shared => client/shared}/cache/cache.ts (100%) rename {shared => client/shared}/cache/index.ts (100%) rename {shared => client/shared}/cache/useCache.ts (100%) rename {shared => client/shared}/cache/utils.ts (100%) rename {shared => client/shared}/components/Portal/Consumer.tsx (100%) rename {shared => client/shared}/components/Portal/Manager.tsx (100%) rename {shared => client/shared}/components/Portal/README.md (100%) rename {shared => client/shared}/components/Portal/buildPortal.tsx (100%) rename {shared => client/shared}/components/Portal/context.ts (100%) rename {shared => client/shared}/components/Portal/defaultEventEmitter.tsx (100%) rename {shared => client/shared}/components/Portal/index.ts (100%) rename {shared => client/shared}/components/Provider.tsx (100%) rename {shared => client/shared}/contexts/ChatBoxContext.tsx (100%) rename {shared => client/shared}/contexts/ColorSchemeContext.tsx (100%) rename {shared => client/shared}/contexts/GroupInfoContext.tsx (100%) rename {shared => client/shared}/event/index.ts (100%) rename {shared => client/shared}/helper/converse-helper.ts (100%) rename {shared => client/shared}/hooks/factory/createUpdateEffect.ts (100%) rename {shared => client/shared}/hooks/factory/createUseStorageState.ts (100%) rename {shared => client/shared}/hooks/model/useAvailableServices.ts (100%) rename {shared => client/shared}/hooks/model/useUserInfoList.ts (100%) rename {shared => client/shared}/hooks/model/useUserSettings.ts (100%) rename {shared => client/shared}/hooks/model/useUsernames.ts (100%) rename {shared => client/shared}/hooks/useAsync.ts (100%) rename {shared => client/shared}/hooks/useAsyncFn.ts (100%) rename {shared => client/shared}/hooks/useAsyncRefresh.ts (100%) rename {shared => client/shared}/hooks/useAsyncRequest.ts (100%) rename {shared => client/shared}/hooks/useDebounce.ts (100%) rename {shared => client/shared}/hooks/useEffectOnce.ts (100%) rename {shared => client/shared}/hooks/useInterval.ts (100%) rename {shared => client/shared}/hooks/useMemoizedFn.ts (100%) rename {shared => client/shared}/hooks/useMountedState.ts (100%) rename {shared => client/shared}/hooks/usePrevious.ts (100%) rename {shared => client/shared}/hooks/useRafState.ts (100%) rename {shared => client/shared}/hooks/useSearch.ts (100%) rename {shared => client/shared}/hooks/useShallowObject.ts (100%) rename {shared => client/shared}/hooks/useTimeoutFn.ts (100%) rename {shared => client/shared}/hooks/useUnmount.ts (100%) rename {shared => client/shared}/hooks/useUpdateEffect.ts (100%) rename {shared => client/shared}/hooks/useUpdateRef.ts (100%) rename {shared => client/shared}/hooks/useWhyDidYouUpdate.ts (100%) rename {shared => client/shared}/i18n/Trans.tsx (100%) rename {shared => client/shared}/i18n/__mocks__/index.ts (100%) rename {shared => client/shared}/i18n/index.ts (100%) rename {shared => client/shared}/i18n/langs/en-US/translation.json (100%) rename {shared => client/shared}/i18n/langs/zh-CN/translation.json (100%) rename {shared => client/shared}/i18n/language.ts (100%) rename {shared => client/shared}/index.tsx (100%) rename {shared => client/shared}/manager/__tests__/buildRegFn.spec.ts (100%) rename {shared => client/shared}/manager/buildRegFn.ts (100%) rename {shared => client/shared}/manager/buildRegList.ts (100%) rename {shared => client/shared}/manager/buildRegMap.ts (100%) rename {shared => client/shared}/manager/request.ts (100%) rename {shared => client/shared}/manager/service.ts (100%) rename {shared => client/shared}/manager/socket.ts (100%) rename {shared => client/shared}/manager/storage.ts (100%) rename {shared => client/shared}/manager/ui.ts (100%) rename {shared => client/shared}/model/__all__.ts (100%) rename {shared => client/shared}/model/common.ts (100%) rename {shared => client/shared}/model/config.ts (100%) rename {shared => client/shared}/model/converse.ts (100%) rename {shared => client/shared}/model/friend.ts (100%) rename {shared => client/shared}/model/group.ts (100%) rename {shared => client/shared}/model/message.ts (100%) rename {shared => client/shared}/model/plugin.ts (100%) rename {shared => client/shared}/model/user.ts (100%) rename {shared => client/shared}/package.json (100%) rename {shared => client/shared}/redux/hooks/useAppSelector.ts (100%) rename {shared => client/shared}/redux/hooks/useConverse.ts (100%) rename {shared => client/shared}/redux/hooks/useConverseAck.ts (100%) rename {shared => client/shared}/redux/hooks/useConverseMessage.ts (100%) rename {shared => client/shared}/redux/hooks/useDMConverseName.ts (100%) rename {shared => client/shared}/redux/hooks/useGroup.ts (100%) rename {shared => client/shared}/redux/hooks/useGroupMemberMute.ts (100%) rename {shared => client/shared}/redux/hooks/useUnread.ts (100%) rename {shared => client/shared}/redux/hooks/useUserInfo.ts (100%) rename {shared => client/shared}/redux/setup.ts (100%) rename {shared => client/shared}/redux/slices/chat.ts (100%) rename {shared => client/shared}/redux/slices/global.ts (100%) rename {shared => client/shared}/redux/slices/group.ts (100%) rename {shared => client/shared}/redux/slices/index.ts (100%) rename {shared => client/shared}/redux/slices/ui.ts (100%) rename {shared => client/shared}/redux/slices/user.ts (100%) rename {shared => client/shared}/redux/store.ts (100%) rename {shared => client/shared}/types.ts (100%) rename {shared => client/shared}/utils/__tests__/array-helper.spec.ts (100%) rename {shared => client/shared}/utils/__tests__/color-scheme-helper.spec.ts (100%) rename {shared => client/shared}/utils/__tests__/date-helper.spec.ts (100%) rename {shared => client/shared}/utils/__tests__/is-promise.spec.ts (100%) rename {shared => client/shared}/utils/__tests__/json-helper.spec.ts (100%) rename {shared => client/shared}/utils/__tests__/string-helper.spec.ts (100%) rename {shared => client/shared}/utils/array-helper.ts (100%) rename {shared => client/shared}/utils/color-scheme-helper.ts (100%) rename {shared => client/shared}/utils/consts.ts (100%) rename {shared => client/shared}/utils/date-helper.ts (100%) rename {shared => client/shared}/utils/environment.ts (100%) rename {shared => client/shared}/utils/is-promise.ts (100%) rename {shared => client/shared}/utils/json-helper.ts (100%) rename {shared => client/shared}/utils/message-helper.ts (100%) rename {shared => client/shared}/utils/request.ts (100%) rename {shared => client/shared}/utils/string-helper.ts (100%) rename {shared => client/shared}/utils/upload-helper.ts (100%) rename {shared => client/shared}/utils/url-helper.ts (100%) rename {shared => client/shared}/utils/utils.ts (100%) rename {test => client/test}/client.ts (100%) rename tsconfig.json => client/tsconfig.json (100%) rename vercel.json => client/vercel.json (100%) rename {web => client/web}/.ministarrc.js (100%) rename {web => client/web}/.npmrc (100%) rename {web => client/web}/assets/config.json (100%) rename {web => client/web}/assets/images/bg.jpg (100%) rename {web => client/web}/assets/images/fallback/403.svg (100%) rename {web => client/web}/assets/images/fallback/404.svg (100%) rename {web => client/web}/assets/images/fallback/failed.svg (100%) rename {web => client/web}/assets/images/fallback/in-develop.svg (100%) rename {web => client/web}/assets/images/fallback/no-content.svg (100%) rename {web => client/web}/assets/images/fallback/no-image.svg (100%) rename {web => client/web}/assets/images/fallback/no-message.svg (100%) rename {web => client/web}/assets/images/fallback/no-network.svg (100%) rename {web => client/web}/assets/images/fallback/no-permission.svg (100%) rename {web => client/web}/assets/images/fallback/no-searchresult.svg (100%) rename {web => client/web}/assets/images/login-pattern.svg (100%) rename {web => client/web}/assets/images/logo.svg (100%) rename {web => client/web}/assets/images/logo/logo@192.png (100%) rename {web => client/web}/assets/images/logo/logo@32.png (100%) rename {web => client/web}/assets/images/logo/logo@512.png (100%) rename {web => client/web}/assets/images/problem.svg (100%) rename {web => client/web}/assets/images/ripple.svg (100%) rename {web => client/web}/assets/pwa.webmanifest (100%) rename {web => client/web}/assets/template.html (100%) rename {web => client/web}/build/__tests__/utils.spec.ts (100%) rename {web => client/web}/build/inject-analytics.js (100%) rename {web => client/web}/build/utils.ts (100%) rename {web => client/web}/build/webpack.config.ts (100%) rename {web => client/web}/e2e/cypress/.gitignore (100%) rename {web => client/web}/e2e/cypress/cypress.json (100%) rename {web => client/web}/e2e/cypress/cypress/components/antd.test.tsx (100%) rename {web => client/web}/e2e/cypress/cypress/components/utils/TestWrapper.tsx (100%) rename {web => client/web}/e2e/cypress/cypress/plugins/index.js (100%) rename {web => client/web}/e2e/cypress/cypress/plugins/load-webpack.js (100%) rename {web => client/web}/e2e/cypress/cypress/plugins/utils/tryLoadWebpackConfig.js (100%) rename {web => client/web}/e2e/cypress/cypress/support/commands.ts (100%) rename {web => client/web}/e2e/cypress/cypress/support/index.ts (100%) rename {web => client/web}/e2e/cypress/package.json (100%) rename {web => client/web}/e2e/cypress/yarn.lock (100%) rename {web => client/web}/e2e/playwright/.gitignore (100%) rename {web => client/web}/e2e/playwright/.npmrc (100%) rename {web => client/web}/e2e/playwright/package.json (100%) rename {web => client/web}/e2e/playwright/playwright.config.ts (100%) rename {web => client/web}/e2e/playwright/tests/entry.spec.ts (100%) rename {web => client/web}/e2e/playwright/tests/example.spec.ts.skip (100%) rename {web => client/web}/e2e/playwright/tests/main.spec.ts (100%) rename {web => client/web}/e2e/playwright/tests/utils/user.ts (100%) rename {web => client/web}/e2e/playwright/yarn.lock (100%) rename {web => client/web}/jest.config.js (100%) rename {web => client/web}/package.json (100%) rename {web => client/web}/plugins/.eslintrc.js (100%) rename {web => client/web}/plugins/README.md (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/manifest.json (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/package.json (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/__tests__/__snapshots__/render.spec.tsx.snap (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/__tests__/render.spec.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/index.spec.ts (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/parser.spec.ts (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/serialize.spec.ts (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/utils.spec.ts (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/bbcode/index.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/bbcode/parser.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/bbcode/serialize.ts (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/bbcode/type.ts (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/bbcode/utils.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/components/Highlight.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/index.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/render.ts (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/tags/CodeTag.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/tags/EmojiTag.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/tags/ImgTag.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/tags/MentionTag.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/tags/PlainText.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/tags/UrlTag.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/tags/__all__.ts (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/src/tags/styles.less (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/tsconfig.json (100%) rename {web => client/web}/plugins/com.msgbyte.bbcode/types/index.d.ts (100%) rename {web => client/web}/plugins/com.msgbyte.draw/manifest.json (100%) rename {web => client/web}/plugins/com.msgbyte.draw/package.json (100%) rename {web => client/web}/plugins/com.msgbyte.draw/src/DrawModal.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.draw/src/index.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.draw/src/translate.ts (100%) rename {web => client/web}/plugins/com.msgbyte.draw/tsconfig.json (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/manifest.json (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/package.json (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/GachaPoolItem.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/GachaResult.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/WishResultModal.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/WishResultText.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/index.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/useWish.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/GenshinPanel/consts.ts (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/GenshinPanel/index.less (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/GenshinPanel/index.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/GenshinPanel/utils.ts (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/components/GenshinLoading.less (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/components/GenshinLoading.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/components/GenshinRichtext.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/components/__tests__/GenshinRichtext.spec.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/components/__tests__/__snapshots__/GenshinRichtext.spec.tsx.snap (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/index.ts (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/translate.ts (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/src/utils/openFullScreenVideo.ts (100%) rename {web => client/web}/plugins/com.msgbyte.genshin/tsconfig.json (100%) rename {web => client/web}/plugins/com.msgbyte.intro/manifest.json (100%) rename {web => client/web}/plugins/com.msgbyte.intro/package.json (100%) rename {web => client/web}/plugins/com.msgbyte.intro/src/index.ts (100%) rename {web => client/web}/plugins/com.msgbyte.intro/src/steps.ts (100%) rename {web => client/web}/plugins/com.msgbyte.intro/src/style.less (100%) rename {web => client/web}/plugins/com.msgbyte.intro/src/tour.ts (100%) rename {web => client/web}/plugins/com.msgbyte.intro/tsconfig.json (100%) rename {web => client/web}/plugins/com.msgbyte.miaolang/README.md (100%) rename {web => client/web}/plugins/com.msgbyte.miaolang/docs/output.png (100%) rename {web => client/web}/plugins/com.msgbyte.miaolang/docs/send.png (100%) rename {web => client/web}/plugins/com.msgbyte.miaolang/manifest.json (100%) rename {web => client/web}/plugins/com.msgbyte.miaolang/package.json (100%) rename {web => client/web}/plugins/com.msgbyte.miaolang/src/SendMiaoModal.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.miaolang/src/index.ts (100%) rename {web => client/web}/plugins/com.msgbyte.miaolang/src/miaotrans.ts (100%) rename {web => client/web}/plugins/com.msgbyte.miaolang/src/reg.ts (100%) rename {web => client/web}/plugins/com.msgbyte.miaolang/src/translate.ts (100%) rename {web => client/web}/plugins/com.msgbyte.miaolang/tsconfig.json (100%) rename {web => client/web}/plugins/com.msgbyte.notify/manifest.json (100%) rename {web => client/web}/plugins/com.msgbyte.notify/package.json (100%) rename {web => client/web}/plugins/com.msgbyte.notify/src/index.ts (100%) rename {web => client/web}/plugins/com.msgbyte.notify/src/notify.ts (100%) rename {web => client/web}/plugins/com.msgbyte.notify/tsconfig.json (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/manifest.json (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/package.json (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Bot.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/OAuth.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Profile.less (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Profile.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Summary.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Webpage.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/index.less (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/index.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/context.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/index.less (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/index.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/types.ts (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/MainPanel/useOpenAppList.ts (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/components/SecretValue.less (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/components/SecretValue.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/components/ServiceChecker.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/index.ts (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/modals/CreateOpenApp.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/src/translate.ts (100%) rename {web => client/web}/plugins/com.msgbyte.openapi/tsconfig.json (100%) rename {web => client/web}/plugins/com.msgbyte.snapdrop/README.md (100%) rename {web => client/web}/plugins/com.msgbyte.snapdrop/manifest.json (100%) rename {web => client/web}/plugins/com.msgbyte.snapdrop/package.json (100%) rename {web => client/web}/plugins/com.msgbyte.snapdrop/src/index.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.snapdrop/src/translate.ts (100%) rename {web => client/web}/plugins/com.msgbyte.snapdrop/tsconfig.json (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/assets/icon.jpg (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/manifest.json (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/package.json (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/amber/avatar.png (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/amber/bg.jpeg (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/amber/theme.less (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/hutao/avatar.png (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/hutao/bg.jpg (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/hutao/theme.less (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/index.ts (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/jean/avatar.png (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/jean/bg.jpeg (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/jean/theme.less (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/mona/avatar.png (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/mona/bg.jpeg (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/mona/theme.less (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/rosaria/avatar.png (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/rosaria/bg.jpeg (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/src/rosaria/theme.less (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/tsconfig.json (100%) rename {web => client/web}/plugins/com.msgbyte.theme.genshin/types/index.d.ts (100%) rename {web => client/web}/plugins/com.msgbyte.theme.miku/manifest.json (100%) rename {web => client/web}/plugins/com.msgbyte.theme.miku/package.json (100%) rename {web => client/web}/plugins/com.msgbyte.theme.miku/src/bg.jpg (100%) rename {web => client/web}/plugins/com.msgbyte.theme.miku/src/index.ts (100%) rename {web => client/web}/plugins/com.msgbyte.theme.miku/src/theme.less (100%) rename {web => client/web}/plugins/com.msgbyte.theme.miku/tsconfig.json (100%) rename {web => client/web}/plugins/com.msgbyte.theme.miku/types/index.d.ts (100%) rename {web => client/web}/plugins/com.msgbyte.webview/README.md (100%) rename {web => client/web}/plugins/com.msgbyte.webview/manifest.json (100%) rename {web => client/web}/plugins/com.msgbyte.webview/package.json (100%) rename {web => client/web}/plugins/com.msgbyte.webview/src/group/GroupCustomWebPanelRender.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.webview/src/group/GroupWebPanelRender.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.webview/src/index.tsx (100%) rename {web => client/web}/plugins/com.msgbyte.webview/src/translate.ts (100%) rename {web => client/web}/plugins/com.msgbyte.webview/tsconfig.json (100%) rename {web => client/web}/postcss.config.js (100%) rename {web => client/web}/registry.json (100%) rename {web => client/web}/scripts/generate-plugin-declaration.babel.ts (100%) rename {web => client/web}/scripts/generate-plugin-declaration.typescript.ts (100%) rename {web => client/web}/scripts/plugin-declaration.ts (100%) rename {web => client/web}/scripts/sync-config-from-env.js (100%) rename {web => client/web}/src/App.tsx (100%) rename {web => client/web}/src/components/AlertErrorView.tsx (100%) rename {web => client/web}/src/components/Avatar.tsx (100%) rename {web => client/web}/src/components/AvatarPicker.tsx (100%) rename {web => client/web}/src/components/AvatarUploader.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatBoxPlaceholder.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatInputBox/Addon.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatInputBox/Emotion.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatInputBox/clipboard-helper.ts (100%) rename {web => client/web}/src/components/ChatBox/ChatInputBox/context.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatInputBox/index.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatInputBox/input.less (100%) rename {web => client/web}/src/components/ChatBox/ChatInputBox/input.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatInputBox/utils.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatMessageList/Item.less (100%) rename {web => client/web}/src/components/ChatBox/ChatMessageList/Item.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatMessageList/NormalList.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatMessageList/VirtualizedList.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatMessageList/const.ts (100%) rename {web => client/web}/src/components/ChatBox/ChatMessageList/index.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatMessageList/types.ts (100%) rename {web => client/web}/src/components/ChatBox/ChatMessageList/useChatMessageItemAction.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatMessageList/useChatMessageReaction.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatMessageList/useMessageReactions.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatMessageList/useRenderPluginMessageInterpreter.tsx (100%) rename {web => client/web}/src/components/ChatBox/ChatReply.tsx (100%) rename {web => client/web}/src/components/ChatBox/__tests__/preprocessMessage.spec.ts (100%) rename {web => client/web}/src/components/ChatBox/index.tsx (100%) rename {web => client/web}/src/components/ChatBox/preprocessMessage.tsx (100%) rename {web => client/web}/src/components/ChatBox/useMessageAck.ts (100%) rename {web => client/web}/src/components/CommonSidebarWrapper.tsx (100%) rename {web => client/web}/src/components/DelayTip.tsx (100%) rename {web => client/web}/src/components/DevContainer.tsx (100%) rename {web => client/web}/src/components/DynamicVirtualizedList/DynamicSizeList.tsx (100%) rename {web => client/web}/src/components/DynamicVirtualizedList/ItemMeasurer.tsx (100%) rename {web => client/web}/src/components/DynamicVirtualizedList/README.md (100%) rename {web => client/web}/src/components/Emoji/Emoji.tsx (100%) rename {web => client/web}/src/components/Emoji/Picker.less (100%) rename {web => client/web}/src/components/Emoji/Picker.tsx (100%) rename {web => client/web}/src/components/Emoji/const.ts (100%) rename {web => client/web}/src/components/Emoji/index.tsx (100%) rename {web => client/web}/src/components/ErrorBoundary.tsx (100%) rename {web => client/web}/src/components/ErrorView.tsx (100%) rename {web => client/web}/src/components/FileSelector.tsx (100%) rename {web => client/web}/src/components/FullModal/CommonTitle.tsx (100%) rename {web => client/web}/src/components/FullModal/Field.tsx (100%) rename {web => client/web}/src/components/FullModal/index.tsx (100%) rename {web => client/web}/src/components/GlobalTemporaryTip.tsx (100%) rename {web => client/web}/src/components/GroupPanelItem.tsx (100%) rename {web => client/web}/src/components/GroupPanelSelector.tsx (100%) rename {web => client/web}/src/components/GroupSection.tsx (100%) rename {web => client/web}/src/components/Highlight.tsx (100%) rename {web => client/web}/src/components/Icon.tsx (100%) rename {web => client/web}/src/components/IconBtn.tsx (100%) rename {web => client/web}/src/components/Image.tsx (100%) rename {web => client/web}/src/components/InviteCodeExpiredAt.tsx (100%) rename {web => client/web}/src/components/IsDeveloping.tsx (100%) rename {web => client/web}/src/components/LanguageSelect.tsx (100%) rename {web => client/web}/src/components/Loadable.tsx (100%) rename {web => client/web}/src/components/Loading.tsx (100%) rename {web => client/web}/src/components/LoadingOnFirst.tsx (100%) rename {web => client/web}/src/components/LoadingSpinner.tsx (100%) rename {web => client/web}/src/components/Markdown.less (100%) rename {web => client/web}/src/components/Markdown.tsx (100%) rename {web => client/web}/src/components/Modal.less (100%) rename {web => client/web}/src/components/Modal.tsx (100%) rename {web => client/web}/src/components/NoData.tsx (100%) rename {web => client/web}/src/components/OpenedPanelTip.tsx (100%) rename {web => client/web}/src/components/Panel/common/Header.tsx (100%) rename {web => client/web}/src/components/Panel/common/Wrapper.tsx (100%) rename {web => client/web}/src/components/Panel/group/MembersPanel.tsx (100%) rename {web => client/web}/src/components/Panel/group/PluginPanel.tsx (100%) rename {web => client/web}/src/components/Panel/group/TextPanel.tsx (100%) rename {web => client/web}/src/components/Panel/group/Wrapper.tsx (100%) rename {web => client/web}/src/components/Panel/personal/ConversePanel.tsx (100%) rename {web => client/web}/src/components/PillTabs.less (100%) rename {web => client/web}/src/components/PillTabs.tsx (100%) rename {web => client/web}/src/components/Portal.tsx (100%) rename {web => client/web}/src/components/Problem.tsx (100%) rename {web => client/web}/src/components/QuickSwitcher/index.tsx (100%) rename {web => client/web}/src/components/QuickSwitcher/useQuickSwitcherActionContext.tsx (100%) rename {web => client/web}/src/components/QuickSwitcher/useQuickSwitcherAllAction.ts (100%) rename {web => client/web}/src/components/QuickSwitcher/useQuickSwitcherFilteredActions.tsx (100%) rename {web => client/web}/src/components/SectionHeader.tsx (100%) rename {web => client/web}/src/components/SidebarView.tsx (100%) rename {web => client/web}/src/components/Slides.less (100%) rename {web => client/web}/src/components/Slides.tsx (100%) rename {web => client/web}/src/components/Spinner.tsx (100%) rename {web => client/web}/src/components/SplitPanel.less (100%) rename {web => client/web}/src/components/SplitPanel.tsx (100%) rename {web => client/web}/src/components/TcPopover.tsx (100%) rename {web => client/web}/src/components/TipIcon.tsx (100%) rename {web => client/web}/src/components/UpdateNotificationBtn.tsx (100%) rename {web => client/web}/src/components/UserListItem.tsx (100%) rename {web => client/web}/src/components/UserName.tsx (100%) rename {web => client/web}/src/components/UserPicker/FriendPicker.tsx (100%) rename {web => client/web}/src/components/UserPicker/UserPicker.tsx (100%) rename {web => client/web}/src/components/UserProfileContainer.tsx (100%) rename {web => client/web}/src/components/UserSelector.tsx (100%) rename {web => client/web}/src/components/__mocks__/Loadable.tsx (100%) rename {web => client/web}/src/components/__tests__/AlertErrorView.spec.tsx (100%) rename {web => client/web}/src/components/__tests__/DelayTip.spec.tsx (100%) rename {web => client/web}/src/components/__tests__/Highlight.spec.tsx (100%) rename {web => client/web}/src/components/__tests__/IconBtn.spec.tsx (100%) rename {web => client/web}/src/components/__tests__/IsDeveloping.spec.tsx (100%) rename {web => client/web}/src/components/__tests__/LoadingSpinner.spec.tsx (100%) rename {web => client/web}/src/components/__tests__/Markdown.spec.tsx (100%) rename {web => client/web}/src/components/__tests__/NoData.spec.tsx (100%) rename {web => client/web}/src/components/__tests__/PillTabs.spec.tsx (100%) rename {web => client/web}/src/components/__tests__/Slides.spec.tsx (100%) rename {web => client/web}/src/components/__tests__/Spinner.spec.tsx (100%) rename {web => client/web}/src/components/__tests__/__snapshots__/AlertErrorView.spec.tsx.snap (100%) rename {web => client/web}/src/components/__tests__/__snapshots__/DelayTip.spec.tsx.snap (100%) rename {web => client/web}/src/components/__tests__/__snapshots__/Highlight.spec.tsx.snap (100%) rename {web => client/web}/src/components/__tests__/__snapshots__/IconBtn.spec.tsx.snap (100%) rename {web => client/web}/src/components/__tests__/__snapshots__/IsDeveloping.spec.tsx.snap (100%) rename {web => client/web}/src/components/__tests__/__snapshots__/LoadingSpinner.spec.tsx.snap (100%) rename {web => client/web}/src/components/__tests__/__snapshots__/Markdown.spec.tsx.snap (100%) rename {web => client/web}/src/components/__tests__/__snapshots__/NoData.spec.tsx.snap (100%) rename {web => client/web}/src/components/__tests__/__snapshots__/PillTabs.spec.tsx.snap (100%) rename {web => client/web}/src/components/__tests__/__snapshots__/Slides.spec.tsx.snap (100%) rename {web => client/web}/src/components/__tests__/__snapshots__/Spinner.spec.tsx.snap (100%) rename {web => client/web}/src/components/modals/AppendDMConverseMembers.tsx (100%) rename {web => client/web}/src/components/modals/AvatarCropper.tsx (100%) rename {web => client/web}/src/components/modals/ClaimTemporaryUser.tsx (100%) rename {web => client/web}/src/components/modals/CreateDMConverse.tsx (100%) rename {web => client/web}/src/components/modals/CreateGroup.tsx (100%) rename {web => client/web}/src/components/modals/CreateGroupInvite/CreateInviteCode.module.less (100%) rename {web => client/web}/src/components/modals/CreateGroupInvite/CreateInviteCode.tsx (100%) rename {web => client/web}/src/components/modals/CreateGroupInvite/index.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/Invite.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/Panel/GroupPanelTree.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/Panel/__tests__/GroupPanelTree.spec.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/Panel/__tests__/__snapshots__/GroupPanelTree.spec.tsx.snap (100%) rename {web => client/web}/src/components/modals/GroupDetail/Panel/__tests__/utils.spec.ts (100%) rename {web => client/web}/src/components/modals/GroupDetail/Panel/index.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/Panel/useGroupPanelTreeDrag.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/Panel/utils.ts (100%) rename {web => client/web}/src/components/modals/GroupDetail/Role/PermissionItem.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/Role/RoleItem.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/Role/index.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/Role/tabs/member.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/Role/tabs/permission.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/Role/tabs/summary.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/Role/useModifyPermission.ts (100%) rename {web => client/web}/src/components/modals/GroupDetail/Role/useRoleActions.ts (100%) rename {web => client/web}/src/components/modals/GroupDetail/Summary.tsx (100%) rename {web => client/web}/src/components/modals/GroupDetail/index.tsx (100%) rename {web => client/web}/src/components/modals/GroupPanel/CreateGroupPanel.tsx (100%) rename {web => client/web}/src/components/modals/GroupPanel/ModifyGroupPanel.tsx (100%) rename {web => client/web}/src/components/modals/GroupPanel/__tests__/helper.spec.ts (100%) rename {web => client/web}/src/components/modals/GroupPanel/helper.ts (100%) rename {web => client/web}/src/components/modals/GroupPanel/types.ts (100%) rename {web => client/web}/src/components/modals/GroupPanel/useGroupPanelFields.tsx (100%) rename {web => client/web}/src/components/modals/ImageUploadPreviewer.tsx (100%) rename {web => client/web}/src/components/modals/ModifyPassword.tsx (100%) rename {web => client/web}/src/components/modals/SelectGroupMember.tsx (100%) rename {web => client/web}/src/components/modals/ServiceUrlSettings.tsx (100%) rename {web => client/web}/src/components/modals/SettingsView/About.tsx (100%) rename {web => client/web}/src/components/modals/SettingsView/Account.tsx (100%) rename {web => client/web}/src/components/modals/SettingsView/Debug.tsx (100%) rename {web => client/web}/src/components/modals/SettingsView/Performance.tsx (100%) rename {web => client/web}/src/components/modals/SettingsView/Status.tsx (100%) rename {web => client/web}/src/components/modals/SettingsView/System.tsx (100%) rename {web => client/web}/src/components/modals/SettingsView/index.tsx (100%) rename {web => client/web}/src/components/popover/GroupUserPopover.tsx (100%) rename {web => client/web}/src/context/GroupIdContext.tsx (100%) rename {web => client/web}/src/context/SocketContext.tsx (100%) rename {web => client/web}/src/dev.ts (100%) rename {web => client/web}/src/hooks/useGlobalKeyDown.ts (100%) rename {web => client/web}/src/hooks/useHistoryNav.ts (100%) rename {web => client/web}/src/hooks/useIsMobile.ts (100%) rename {web => client/web}/src/hooks/useLocalStorage.ts (100%) rename {web => client/web}/src/hooks/usePanelWindow.ts (100%) rename {web => client/web}/src/hooks/useSearchParam.ts (100%) rename {web => client/web}/src/hooks/useSessionStorageState.ts (100%) rename {web => client/web}/src/hooks/useUserPreference.ts (100%) rename {web => client/web}/src/hooks/useWindowSize.ts (100%) rename {web => client/web}/src/index.tsx (100%) rename {web => client/web}/src/init.tsx (100%) rename {web => client/web}/src/plugin/PluginStore/DocumentView/DocumentMarkdownRender.tsx (100%) rename {web => client/web}/src/plugin/PluginStore/DocumentView/index.tsx (100%) rename {web => client/web}/src/plugin/PluginStore/Item.tsx (100%) rename {web => client/web}/src/plugin/PluginStore/ManualInstall.tsx (100%) rename {web => client/web}/src/plugin/PluginStore/index.module.less (100%) rename {web => client/web}/src/plugin/PluginStore/index.tsx (100%) rename {web => client/web}/src/plugin/__tests__/utils.spec.ts (100%) rename {web => client/web}/src/plugin/builtin.ts (100%) rename {web => client/web}/src/plugin/common/index.ts (100%) rename {web => client/web}/src/plugin/common/reg.ts (100%) rename {web => client/web}/src/plugin/component/index.tsx (100%) rename {web => client/web}/src/plugin/loader.ts (100%) rename {web => client/web}/src/plugin/manager.ts (100%) rename {web => client/web}/src/plugin/showPluginLoadError.tsx (100%) rename {web => client/web}/src/plugin/utils.ts (100%) rename {web => client/web}/src/routes/Entry/ForgetPasswordView.tsx (100%) rename {web => client/web}/src/routes/Entry/GuestView.tsx (100%) rename {web => client/web}/src/routes/Entry/LoginView.tsx (100%) rename {web => client/web}/src/routes/Entry/RegisterView.tsx (100%) rename {web => client/web}/src/routes/Entry/index.module.less (100%) rename {web => client/web}/src/routes/Entry/index.tsx (100%) rename {web => client/web}/src/routes/Entry/utils.ts (100%) rename {web => client/web}/src/routes/Invite/InviteInfo.tsx (100%) rename {web => client/web}/src/routes/Invite/JoinBtn.tsx (100%) rename {web => client/web}/src/routes/Invite/SuccessModal.tsx (100%) rename {web => client/web}/src/routes/Invite/index.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Group/GroupHeader.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Group/Panel.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Group/PanelRedirect.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Group/Sidebar.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Group/SidebarItem.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Group/TextPanelItem.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Group/context.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Group/index.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Group/useGroupHeaderAction.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Group/utils.ts (100%) rename {web => client/web}/src/routes/Main/Content/PageContent.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Personal/Converse/index.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Personal/Friends/AddFriend.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Personal/Friends/FriendList.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Personal/Friends/RequestReceived.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Personal/Friends/RequestSend.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Personal/Friends/index.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Personal/Plugins/index.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Personal/Sidebar.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Personal/SidebarDMItem.tsx (100%) rename {web => client/web}/src/routes/Main/Content/Personal/index.tsx (100%) rename {web => client/web}/src/routes/Main/Content/SidebarItem.tsx (100%) rename {web => client/web}/src/routes/Main/Content/index.tsx (100%) rename {web => client/web}/src/routes/Main/Navbar/GroupNav.tsx (100%) rename {web => client/web}/src/routes/Main/Navbar/MobileMenuBtn.tsx (100%) rename {web => client/web}/src/routes/Main/Navbar/NavItem.tsx (100%) rename {web => client/web}/src/routes/Main/Navbar/PersonalNav.tsx (100%) rename {web => client/web}/src/routes/Main/Navbar/SettingBtn.tsx (100%) rename {web => client/web}/src/routes/Main/Navbar/index.tsx (100%) rename {web => client/web}/src/routes/Main/Provider.tsx (100%) rename {web => client/web}/src/routes/Main/SidebarContext.tsx (100%) rename {web => client/web}/src/routes/Main/index.tsx (100%) rename {web => client/web}/src/routes/Main/useShortcuts.tsx (100%) rename {web => client/web}/src/routes/Panel/README.md (100%) rename {web => client/web}/src/routes/Panel/index.tsx (100%) rename {web => client/web}/src/styles/antd/dark.less (100%) rename {web => client/web}/src/styles/antd/index.less (100%) rename {web => client/web}/src/styles/antd/overwrite.less (100%) rename {web => client/web}/src/styles/antd/theme.less (100%) rename {web => client/web}/src/styles/global.less (100%) rename {web => client/web}/src/styles/index.ts (100%) rename {web => client/web}/src/styles/tailwind.less (100%) rename {web => client/web}/src/utils/__tests__/jwt-helper.spec.ts (100%) rename {web => client/web}/src/utils/__tests__/url-helper.spec.ts (100%) rename {web => client/web}/src/utils/__tests__/window-helper.spec.ts (100%) rename {web => client/web}/src/utils/dom-helper.ts (100%) rename {web => client/web}/src/utils/file-helper.ts (100%) rename {web => client/web}/src/utils/global-state-helper.ts (100%) rename {web => client/web}/src/utils/hot-key.ts (100%) rename {web => client/web}/src/utils/image-helper.ts (100%) rename {web => client/web}/src/utils/jwt-helper.ts (100%) rename {web => client/web}/src/utils/location-helper.ts (100%) rename {web => client/web}/src/utils/measure-helper.ts (100%) rename {web => client/web}/src/utils/plugin-helper.ts (100%) rename {web => client/web}/src/utils/role-helper.ts (100%) rename {web => client/web}/src/utils/sw-helper.ts (100%) rename {web => client/web}/src/utils/url-helper.ts (100%) rename {web => client/web}/src/utils/user-helper.ts (100%) rename {web => client/web}/src/utils/window-helper.ts (100%) rename {web => client/web}/tailchat.d.ts (100%) rename {web => client/web}/tailwind.config.js (100%) rename {web => client/web}/test/fileTransformer.js (100%) rename {web => client/web}/test/setup.js (100%) rename {web => client/web}/test/utils/lazy.tsx (100%) rename {web => client/web}/tsconfig.json (100%) rename {web => client/web}/tsconfig.node.json (100%) rename {web => client/web}/tsconfig.test.json (100%) rename {web => client/web}/types/index.d.ts (100%) rename {widget => client/widget}/.gitignore (100%) rename {widget => client/widget}/.yarnrc (100%) rename {widget => client/widget}/demo/.gitignore (100%) rename {widget => client/widget}/demo/index.html (100%) rename {widget => client/widget}/demo/package.json (100%) rename {widget => client/widget}/demo/yarn.lock (100%) rename {widget => client/widget}/package.json (100%) rename {widget => client/widget}/src/index.ts (100%) rename {widget => client/widget}/tsconfig.json (100%) rename {widget => client/widget}/yarn.lock (100%) diff --git a/.github/workflows/vercel-nightly.yml b/.github/workflows/vercel-nightly.yml index a883a0f4..f5f39291 100644 --- a/.github/workflows/vercel-nightly.yml +++ b/.github/workflows/vercel-nightly.yml @@ -13,7 +13,7 @@ jobs: - name: checkout uses: actions/checkout@v2 - name: Inject Analytics - run: node ./web/build/inject-analytics.js + run: node ./client/web/build/inject-analytics.js - name: Deploy Prod uses: amondnet/vercel-action@master env: @@ -22,7 +22,7 @@ jobs: vercel-token: ${{ secrets.VERCEL_TOKEN }} vercel-org-id: ${{ secrets.ORG_ID}} vercel-project-id: ${{ secrets.PROJECT_ID}} - working-directory: ./ + working-directory: ./client vercel-args: '--prod' - name: Notify to Service uses: muinmomin/webhook-action@v1.0.0 diff --git a/.dockerignore b/client/.dockerignore similarity index 100% rename from .dockerignore rename to client/.dockerignore diff --git a/.editorconfig b/client/.editorconfig similarity index 100% rename from .editorconfig rename to client/.editorconfig diff --git a/.eslintignore b/client/.eslintignore similarity index 100% rename from .eslintignore rename to client/.eslintignore diff --git a/.eslintrc.js b/client/.eslintrc.js similarity index 100% rename from .eslintrc.js rename to client/.eslintrc.js diff --git a/.gitattributes b/client/.gitattributes similarity index 100% rename from .gitattributes rename to client/.gitattributes diff --git a/.github/workflows/ci.yaml b/client/.github/workflows/ci.yaml similarity index 100% rename from .github/workflows/ci.yaml rename to client/.github/workflows/ci.yaml diff --git a/.github/workflows/docker-publish.yml b/client/.github/workflows/docker-publish.yml similarity index 100% rename from .github/workflows/docker-publish.yml rename to client/.github/workflows/docker-publish.yml diff --git a/.github/workflows/playwright.yml b/client/.github/workflows/playwright.yml similarity index 100% rename from .github/workflows/playwright.yml rename to client/.github/workflows/playwright.yml diff --git a/.husky/commit-msg b/client/.husky/commit-msg similarity index 100% rename from .husky/commit-msg rename to client/.husky/commit-msg diff --git a/.husky/pre-commit b/client/.husky/pre-commit similarity index 100% rename from .husky/pre-commit rename to client/.husky/pre-commit diff --git a/.npmrc b/client/.npmrc similarity index 100% rename from .npmrc rename to client/.npmrc diff --git a/.vscode/launch.json b/client/.vscode/launch.json similarity index 100% rename from .vscode/launch.json rename to client/.vscode/launch.json diff --git a/.vscode/react.code-snippets b/client/.vscode/react.code-snippets similarity index 100% rename from .vscode/react.code-snippets rename to client/.vscode/react.code-snippets diff --git a/.vscode/settings.json b/client/.vscode/settings.json similarity index 100% rename from .vscode/settings.json rename to client/.vscode/settings.json diff --git a/Dockerfile b/client/Dockerfile similarity index 100% rename from Dockerfile rename to client/Dockerfile diff --git a/LICENSE b/client/LICENSE similarity index 100% rename from LICENSE rename to client/LICENSE diff --git a/app/.gitignore b/client/app/.gitignore similarity index 100% rename from app/.gitignore rename to client/app/.gitignore diff --git a/app/.npmrc b/client/app/.npmrc similarity index 100% rename from app/.npmrc rename to client/app/.npmrc diff --git a/app/App.tsx b/client/app/App.tsx similarity index 100% rename from app/App.tsx rename to client/app/App.tsx diff --git a/app/app.json b/client/app/app.json similarity index 100% rename from app/app.json rename to client/app/app.json diff --git a/app/assets/adaptive-icon.png b/client/app/assets/adaptive-icon.png similarity index 100% rename from app/assets/adaptive-icon.png rename to client/app/assets/adaptive-icon.png diff --git a/app/assets/favicon.png b/client/app/assets/favicon.png similarity index 100% rename from app/assets/favicon.png rename to client/app/assets/favicon.png diff --git a/app/assets/icon.png b/client/app/assets/icon.png similarity index 100% rename from app/assets/icon.png rename to client/app/assets/icon.png diff --git a/app/assets/splash.png b/client/app/assets/splash.png similarity index 100% rename from app/assets/splash.png rename to client/app/assets/splash.png diff --git a/app/babel.config.js b/client/app/babel.config.js similarity index 100% rename from app/babel.config.js rename to client/app/babel.config.js diff --git a/app/components/AppMain.tsx b/client/app/components/AppMain.tsx similarity index 100% rename from app/components/AppMain.tsx rename to client/app/components/AppMain.tsx diff --git a/app/package.json b/client/app/package.json similarity index 100% rename from app/package.json rename to client/app/package.json diff --git a/app/tsconfig.json b/client/app/tsconfig.json similarity index 100% rename from app/tsconfig.json rename to client/app/tsconfig.json diff --git a/app/yarn.lock b/client/app/yarn.lock similarity index 100% rename from app/yarn.lock rename to client/app/yarn.lock diff --git a/build/config/i18next-scanner.config.js b/client/build/config/i18next-scanner.config.js similarity index 100% rename from build/config/i18next-scanner.config.js rename to client/build/config/i18next-scanner.config.js diff --git a/build/script/buildPublicTranslation.js b/client/build/script/buildPublicTranslation.js similarity index 100% rename from build/script/buildPublicTranslation.js rename to client/build/script/buildPublicTranslation.js diff --git a/build/script/scanTranslation.js b/client/build/script/scanTranslation.js similarity index 100% rename from build/script/scanTranslation.js rename to client/build/script/scanTranslation.js diff --git a/commitlint.config.js b/client/commitlint.config.js similarity index 100% rename from commitlint.config.js rename to client/commitlint.config.js diff --git a/desktop-old/.gitignore b/client/desktop-old/.gitignore similarity index 100% rename from desktop-old/.gitignore rename to client/desktop-old/.gitignore diff --git a/desktop-old/.npmrc b/client/desktop-old/.npmrc similarity index 100% rename from desktop-old/.npmrc rename to client/desktop-old/.npmrc diff --git a/desktop-old/build/icon.icns b/client/desktop-old/build/icon.icns similarity index 100% rename from desktop-old/build/icon.icns rename to client/desktop-old/build/icon.icns diff --git a/desktop-old/build/icon.ico b/client/desktop-old/build/icon.ico similarity index 100% rename from desktop-old/build/icon.ico rename to client/desktop-old/build/icon.ico diff --git a/desktop-old/forge.config.js b/client/desktop-old/forge.config.js similarity index 100% rename from desktop-old/forge.config.js rename to client/desktop-old/forge.config.js diff --git a/desktop-old/package.json b/client/desktop-old/package.json similarity index 100% rename from desktop-old/package.json rename to client/desktop-old/package.json diff --git a/desktop-old/scripts/update.ts b/client/desktop-old/scripts/update.ts similarity index 100% rename from desktop-old/scripts/update.ts rename to client/desktop-old/scripts/update.ts diff --git a/desktop-old/src/lib/electron-update-notifier.ts b/client/desktop-old/src/lib/electron-update-notifier.ts similarity index 100% rename from desktop-old/src/lib/electron-update-notifier.ts rename to client/desktop-old/src/lib/electron-update-notifier.ts diff --git a/desktop-old/src/lib/update-electron-app.ts b/client/desktop-old/src/lib/update-electron-app.ts similarity index 100% rename from desktop-old/src/lib/update-electron-app.ts rename to client/desktop-old/src/lib/update-electron-app.ts diff --git a/desktop-old/src/main/config.ts b/client/desktop-old/src/main/config.ts similarity index 100% rename from desktop-old/src/main/config.ts rename to client/desktop-old/src/main/config.ts diff --git a/desktop-old/src/main/index.ts b/client/desktop-old/src/main/index.ts similarity index 100% rename from desktop-old/src/main/index.ts rename to client/desktop-old/src/main/index.ts diff --git a/desktop-old/src/main/menu.ts b/client/desktop-old/src/main/menu.ts similarity index 100% rename from desktop-old/src/main/menu.ts rename to client/desktop-old/src/main/menu.ts diff --git a/desktop-old/src/main/update.ts b/client/desktop-old/src/main/update.ts similarity index 100% rename from desktop-old/src/main/update.ts rename to client/desktop-old/src/main/update.ts diff --git a/desktop-old/tsconfig.json b/client/desktop-old/tsconfig.json similarity index 100% rename from desktop-old/tsconfig.json rename to client/desktop-old/tsconfig.json diff --git a/desktop-old/yarn.lock b/client/desktop-old/yarn.lock similarity index 100% rename from desktop-old/yarn.lock rename to client/desktop-old/yarn.lock diff --git a/desktop/.editorconfig b/client/desktop/.editorconfig similarity index 100% rename from desktop/.editorconfig rename to client/desktop/.editorconfig diff --git a/desktop/.erb/configs/.eslintrc b/client/desktop/.erb/configs/.eslintrc similarity index 100% rename from desktop/.erb/configs/.eslintrc rename to client/desktop/.erb/configs/.eslintrc diff --git a/desktop/.erb/configs/utils.ts b/client/desktop/.erb/configs/utils.ts similarity index 100% rename from desktop/.erb/configs/utils.ts rename to client/desktop/.erb/configs/utils.ts diff --git a/desktop/.erb/configs/webpack.config.base.ts b/client/desktop/.erb/configs/webpack.config.base.ts similarity index 100% rename from desktop/.erb/configs/webpack.config.base.ts rename to client/desktop/.erb/configs/webpack.config.base.ts diff --git a/desktop/.erb/configs/webpack.config.eslint.ts b/client/desktop/.erb/configs/webpack.config.eslint.ts similarity index 100% rename from desktop/.erb/configs/webpack.config.eslint.ts rename to client/desktop/.erb/configs/webpack.config.eslint.ts diff --git a/desktop/.erb/configs/webpack.config.main.prod.ts b/client/desktop/.erb/configs/webpack.config.main.prod.ts similarity index 100% rename from desktop/.erb/configs/webpack.config.main.prod.ts rename to client/desktop/.erb/configs/webpack.config.main.prod.ts diff --git a/desktop/.erb/configs/webpack.config.preload.dev.ts b/client/desktop/.erb/configs/webpack.config.preload.dev.ts similarity index 100% rename from desktop/.erb/configs/webpack.config.preload.dev.ts rename to client/desktop/.erb/configs/webpack.config.preload.dev.ts diff --git a/desktop/.erb/configs/webpack.config.renderer.dev.ts b/client/desktop/.erb/configs/webpack.config.renderer.dev.ts similarity index 100% rename from desktop/.erb/configs/webpack.config.renderer.dev.ts rename to client/desktop/.erb/configs/webpack.config.renderer.dev.ts diff --git a/desktop/.erb/configs/webpack.config.renderer.prod.ts b/client/desktop/.erb/configs/webpack.config.renderer.prod.ts similarity index 100% rename from desktop/.erb/configs/webpack.config.renderer.prod.ts rename to client/desktop/.erb/configs/webpack.config.renderer.prod.ts diff --git a/desktop/.erb/configs/webpack.paths.ts b/client/desktop/.erb/configs/webpack.paths.ts similarity index 100% rename from desktop/.erb/configs/webpack.paths.ts rename to client/desktop/.erb/configs/webpack.paths.ts diff --git a/desktop/.erb/img/erb-banner.svg b/client/desktop/.erb/img/erb-banner.svg similarity index 100% rename from desktop/.erb/img/erb-banner.svg rename to client/desktop/.erb/img/erb-banner.svg diff --git a/desktop/.erb/img/erb-logo.png b/client/desktop/.erb/img/erb-logo.png similarity index 100% rename from desktop/.erb/img/erb-logo.png rename to client/desktop/.erb/img/erb-logo.png diff --git a/desktop/.erb/mocks/fileMock.js b/client/desktop/.erb/mocks/fileMock.js similarity index 100% rename from desktop/.erb/mocks/fileMock.js rename to client/desktop/.erb/mocks/fileMock.js diff --git a/desktop/.erb/scripts/.eslintrc b/client/desktop/.erb/scripts/.eslintrc similarity index 100% rename from desktop/.erb/scripts/.eslintrc rename to client/desktop/.erb/scripts/.eslintrc diff --git a/desktop/.erb/scripts/check-build-exists.ts b/client/desktop/.erb/scripts/check-build-exists.ts similarity index 100% rename from desktop/.erb/scripts/check-build-exists.ts rename to client/desktop/.erb/scripts/check-build-exists.ts diff --git a/desktop/.erb/scripts/check-native-dep.js b/client/desktop/.erb/scripts/check-native-dep.js similarity index 100% rename from desktop/.erb/scripts/check-native-dep.js rename to client/desktop/.erb/scripts/check-native-dep.js diff --git a/desktop/.erb/scripts/check-node-env.js b/client/desktop/.erb/scripts/check-node-env.js similarity index 100% rename from desktop/.erb/scripts/check-node-env.js rename to client/desktop/.erb/scripts/check-node-env.js diff --git a/desktop/.erb/scripts/check-port-in-use.js b/client/desktop/.erb/scripts/check-port-in-use.js similarity index 100% rename from desktop/.erb/scripts/check-port-in-use.js rename to client/desktop/.erb/scripts/check-port-in-use.js diff --git a/desktop/.erb/scripts/clean.js b/client/desktop/.erb/scripts/clean.js similarity index 100% rename from desktop/.erb/scripts/clean.js rename to client/desktop/.erb/scripts/clean.js diff --git a/desktop/.erb/scripts/delete-source-maps.js b/client/desktop/.erb/scripts/delete-source-maps.js similarity index 100% rename from desktop/.erb/scripts/delete-source-maps.js rename to client/desktop/.erb/scripts/delete-source-maps.js diff --git a/desktop/.erb/scripts/electron-rebuild.js b/client/desktop/.erb/scripts/electron-rebuild.js similarity index 100% rename from desktop/.erb/scripts/electron-rebuild.js rename to client/desktop/.erb/scripts/electron-rebuild.js diff --git a/desktop/.erb/scripts/link-modules.ts b/client/desktop/.erb/scripts/link-modules.ts similarity index 100% rename from desktop/.erb/scripts/link-modules.ts rename to client/desktop/.erb/scripts/link-modules.ts diff --git a/desktop/.erb/scripts/notarize.js b/client/desktop/.erb/scripts/notarize.js similarity index 100% rename from desktop/.erb/scripts/notarize.js rename to client/desktop/.erb/scripts/notarize.js diff --git a/desktop/.gitattributes b/client/desktop/.gitattributes similarity index 100% rename from desktop/.gitattributes rename to client/desktop/.gitattributes diff --git a/desktop/.github/workflows/publish.yml b/client/desktop/.github/workflows/publish.yml similarity index 100% rename from desktop/.github/workflows/publish.yml rename to client/desktop/.github/workflows/publish.yml diff --git a/desktop/.github/workflows/test.yml b/client/desktop/.github/workflows/test.yml similarity index 100% rename from desktop/.github/workflows/test.yml rename to client/desktop/.github/workflows/test.yml diff --git a/desktop/.gitignore b/client/desktop/.gitignore similarity index 100% rename from desktop/.gitignore rename to client/desktop/.gitignore diff --git a/desktop/.npmrc b/client/desktop/.npmrc similarity index 100% rename from desktop/.npmrc rename to client/desktop/.npmrc diff --git a/desktop/.vscode/extensions.json b/client/desktop/.vscode/extensions.json similarity index 100% rename from desktop/.vscode/extensions.json rename to client/desktop/.vscode/extensions.json diff --git a/desktop/.vscode/launch.json b/client/desktop/.vscode/launch.json similarity index 100% rename from desktop/.vscode/launch.json rename to client/desktop/.vscode/launch.json diff --git a/desktop/.vscode/settings.json b/client/desktop/.vscode/settings.json similarity index 100% rename from desktop/.vscode/settings.json rename to client/desktop/.vscode/settings.json diff --git a/desktop/.vscode/tasks.json b/client/desktop/.vscode/tasks.json similarity index 100% rename from desktop/.vscode/tasks.json rename to client/desktop/.vscode/tasks.json diff --git a/desktop/LICENSE b/client/desktop/LICENSE similarity index 100% rename from desktop/LICENSE rename to client/desktop/LICENSE diff --git a/desktop/README.md b/client/desktop/README.md similarity index 100% rename from desktop/README.md rename to client/desktop/README.md diff --git a/desktop/assets/assets.d.ts b/client/desktop/assets/assets.d.ts similarity index 100% rename from desktop/assets/assets.d.ts rename to client/desktop/assets/assets.d.ts diff --git a/desktop/assets/entitlements.mac.plist b/client/desktop/assets/entitlements.mac.plist similarity index 100% rename from desktop/assets/entitlements.mac.plist rename to client/desktop/assets/entitlements.mac.plist diff --git a/desktop/assets/icon.icns b/client/desktop/assets/icon.icns similarity index 100% rename from desktop/assets/icon.icns rename to client/desktop/assets/icon.icns diff --git a/desktop/assets/icon.ico b/client/desktop/assets/icon.ico similarity index 100% rename from desktop/assets/icon.ico rename to client/desktop/assets/icon.ico diff --git a/desktop/assets/icon.png b/client/desktop/assets/icon.png similarity index 100% rename from desktop/assets/icon.png rename to client/desktop/assets/icon.png diff --git a/desktop/assets/icon.svg b/client/desktop/assets/icon.svg similarity index 100% rename from desktop/assets/icon.svg rename to client/desktop/assets/icon.svg diff --git a/desktop/electron-builder.yml b/client/desktop/electron-builder.yml similarity index 100% rename from desktop/electron-builder.yml rename to client/desktop/electron-builder.yml diff --git a/desktop/package.json b/client/desktop/package.json similarity index 100% rename from desktop/package.json rename to client/desktop/package.json diff --git a/desktop/release/app/package.json b/client/desktop/release/app/package.json similarity index 100% rename from desktop/release/app/package.json rename to client/desktop/release/app/package.json diff --git a/desktop/release/app/yarn.lock b/client/desktop/release/app/yarn.lock similarity index 100% rename from desktop/release/app/yarn.lock rename to client/desktop/release/app/yarn.lock diff --git a/desktop/src/__tests__/App.test.tsx b/client/desktop/src/__tests__/App.test.tsx similarity index 100% rename from desktop/src/__tests__/App.test.tsx rename to client/desktop/src/__tests__/App.test.tsx diff --git a/desktop/src/main/lib/electron-serve.ts b/client/desktop/src/main/lib/electron-serve.ts similarity index 100% rename from desktop/src/main/lib/electron-serve.ts rename to client/desktop/src/main/lib/electron-serve.ts diff --git a/desktop/src/main/lib/http.ts b/client/desktop/src/main/lib/http.ts similarity index 100% rename from desktop/src/main/lib/http.ts rename to client/desktop/src/main/lib/http.ts diff --git a/desktop/src/main/main.ts b/client/desktop/src/main/main.ts similarity index 100% rename from desktop/src/main/main.ts rename to client/desktop/src/main/main.ts diff --git a/desktop/src/main/menu.ts b/client/desktop/src/main/menu.ts similarity index 100% rename from desktop/src/main/menu.ts rename to client/desktop/src/main/menu.ts diff --git a/desktop/src/main/preload.ts b/client/desktop/src/main/preload.ts similarity index 100% rename from desktop/src/main/preload.ts rename to client/desktop/src/main/preload.ts diff --git a/desktop/src/main/util.ts b/client/desktop/src/main/util.ts similarity index 100% rename from desktop/src/main/util.ts rename to client/desktop/src/main/util.ts diff --git a/desktop/src/renderer/App.css b/client/desktop/src/renderer/App.css similarity index 100% rename from desktop/src/renderer/App.css rename to client/desktop/src/renderer/App.css diff --git a/desktop/src/renderer/App.tsx b/client/desktop/src/renderer/App.tsx similarity index 100% rename from desktop/src/renderer/App.tsx rename to client/desktop/src/renderer/App.tsx diff --git a/desktop/src/renderer/index.ejs b/client/desktop/src/renderer/index.ejs similarity index 100% rename from desktop/src/renderer/index.ejs rename to client/desktop/src/renderer/index.ejs diff --git a/desktop/src/renderer/index.tsx b/client/desktop/src/renderer/index.tsx similarity index 100% rename from desktop/src/renderer/index.tsx rename to client/desktop/src/renderer/index.tsx diff --git a/desktop/src/renderer/preload.d.ts b/client/desktop/src/renderer/preload.d.ts similarity index 100% rename from desktop/src/renderer/preload.d.ts rename to client/desktop/src/renderer/preload.d.ts diff --git a/desktop/tailwind.config.js b/client/desktop/tailwind.config.js similarity index 100% rename from desktop/tailwind.config.js rename to client/desktop/tailwind.config.js diff --git a/desktop/test/http-server.ts b/client/desktop/test/http-server.ts similarity index 100% rename from desktop/test/http-server.ts rename to client/desktop/test/http-server.ts diff --git a/desktop/tsconfig.json b/client/desktop/tsconfig.json similarity index 100% rename from desktop/tsconfig.json rename to client/desktop/tsconfig.json diff --git a/desktop/yarn.lock b/client/desktop/yarn.lock similarity index 100% rename from desktop/yarn.lock rename to client/desktop/yarn.lock diff --git a/docker-compose.yml b/client/docker-compose.yml similarity index 100% rename from docker-compose.yml rename to client/docker-compose.yml diff --git a/package.json b/client/package.json similarity index 100% rename from package.json rename to client/package.json diff --git a/packages/design/.gitignore b/client/packages/design/.gitignore similarity index 100% rename from packages/design/.gitignore rename to client/packages/design/.gitignore diff --git a/packages/design/.storybook/main.js b/client/packages/design/.storybook/main.js similarity index 100% rename from packages/design/.storybook/main.js rename to client/packages/design/.storybook/main.js diff --git a/packages/design/.storybook/preview.js b/client/packages/design/.storybook/preview.js similarity index 100% rename from packages/design/.storybook/preview.js rename to client/packages/design/.storybook/preview.js diff --git a/packages/design/README.md b/client/packages/design/README.md similarity index 100% rename from packages/design/README.md rename to client/packages/design/README.md diff --git a/packages/design/components/AutoFolder/index.stories.tsx b/client/packages/design/components/AutoFolder/index.stories.tsx similarity index 100% rename from packages/design/components/AutoFolder/index.stories.tsx rename to client/packages/design/components/AutoFolder/index.stories.tsx diff --git a/packages/design/components/AutoFolder/index.tsx b/client/packages/design/components/AutoFolder/index.tsx similarity index 100% rename from packages/design/components/AutoFolder/index.tsx rename to client/packages/design/components/AutoFolder/index.tsx diff --git a/packages/design/components/Avatar/combined.css b/client/packages/design/components/Avatar/combined.css similarity index 100% rename from packages/design/components/Avatar/combined.css rename to client/packages/design/components/Avatar/combined.css diff --git a/packages/design/components/Avatar/combined.tsx b/client/packages/design/components/Avatar/combined.tsx similarity index 100% rename from packages/design/components/Avatar/combined.tsx rename to client/packages/design/components/Avatar/combined.tsx diff --git a/packages/design/components/Avatar/index.stories.tsx b/client/packages/design/components/Avatar/index.stories.tsx similarity index 100% rename from packages/design/components/Avatar/index.stories.tsx rename to client/packages/design/components/Avatar/index.stories.tsx diff --git a/packages/design/components/Avatar/index.tsx b/client/packages/design/components/Avatar/index.tsx similarity index 100% rename from packages/design/components/Avatar/index.tsx rename to client/packages/design/components/Avatar/index.tsx diff --git a/packages/design/components/Avatar/utils.ts b/client/packages/design/components/Avatar/utils.ts similarity index 100% rename from packages/design/components/Avatar/utils.ts rename to client/packages/design/components/Avatar/utils.ts diff --git a/packages/design/components/AvatarWithPreview/index.stories.tsx b/client/packages/design/components/AvatarWithPreview/index.stories.tsx similarity index 100% rename from packages/design/components/AvatarWithPreview/index.stories.tsx rename to client/packages/design/components/AvatarWithPreview/index.stories.tsx diff --git a/packages/design/components/AvatarWithPreview/index.tsx b/client/packages/design/components/AvatarWithPreview/index.tsx similarity index 100% rename from packages/design/components/AvatarWithPreview/index.tsx rename to client/packages/design/components/AvatarWithPreview/index.tsx diff --git a/packages/design/components/DelayTip/index.stories.tsx b/client/packages/design/components/DelayTip/index.stories.tsx similarity index 100% rename from packages/design/components/DelayTip/index.stories.tsx rename to client/packages/design/components/DelayTip/index.stories.tsx diff --git a/packages/design/components/DelayTip/index.tsx b/client/packages/design/components/DelayTip/index.tsx similarity index 100% rename from packages/design/components/DelayTip/index.tsx rename to client/packages/design/components/DelayTip/index.tsx diff --git a/packages/design/components/Highlight/index.module.less b/client/packages/design/components/Highlight/index.module.less similarity index 100% rename from packages/design/components/Highlight/index.module.less rename to client/packages/design/components/Highlight/index.module.less diff --git a/packages/design/components/Highlight/index.tsx b/client/packages/design/components/Highlight/index.tsx similarity index 100% rename from packages/design/components/Highlight/index.tsx rename to client/packages/design/components/Highlight/index.tsx diff --git a/packages/design/components/Icon/index.tsx b/client/packages/design/components/Icon/index.tsx similarity index 100% rename from packages/design/components/Icon/index.tsx rename to client/packages/design/components/Icon/index.tsx diff --git a/packages/design/components/Image/index.stories.tsx b/client/packages/design/components/Image/index.stories.tsx similarity index 100% rename from packages/design/components/Image/index.stories.tsx rename to client/packages/design/components/Image/index.stories.tsx diff --git a/packages/design/components/Image/index.tsx b/client/packages/design/components/Image/index.tsx similarity index 100% rename from packages/design/components/Image/index.tsx rename to client/packages/design/components/Image/index.tsx diff --git a/packages/design/components/Introduction.stories.mdx b/client/packages/design/components/Introduction.stories.mdx similarity index 100% rename from packages/design/components/Introduction.stories.mdx rename to client/packages/design/components/Introduction.stories.mdx diff --git a/packages/design/components/SensitiveText/index.stories.tsx b/client/packages/design/components/SensitiveText/index.stories.tsx similarity index 100% rename from packages/design/components/SensitiveText/index.stories.tsx rename to client/packages/design/components/SensitiveText/index.stories.tsx diff --git a/packages/design/components/SensitiveText/index.tsx b/client/packages/design/components/SensitiveText/index.tsx similarity index 100% rename from packages/design/components/SensitiveText/index.tsx rename to client/packages/design/components/SensitiveText/index.tsx diff --git a/packages/design/components/WebMetaForm/__tests__/utils.spec.ts b/client/packages/design/components/WebMetaForm/__tests__/utils.spec.ts similarity index 100% rename from packages/design/components/WebMetaForm/__tests__/utils.spec.ts rename to client/packages/design/components/WebMetaForm/__tests__/utils.spec.ts diff --git a/packages/design/components/WebMetaForm/index.tsx b/client/packages/design/components/WebMetaForm/index.tsx similarity index 100% rename from packages/design/components/WebMetaForm/index.tsx rename to client/packages/design/components/WebMetaForm/index.tsx diff --git a/packages/design/components/WebMetaForm/types/Checkbox.tsx b/client/packages/design/components/WebMetaForm/types/Checkbox.tsx similarity index 100% rename from packages/design/components/WebMetaForm/types/Checkbox.tsx rename to client/packages/design/components/WebMetaForm/types/Checkbox.tsx diff --git a/packages/design/components/WebMetaForm/types/Custom.tsx b/client/packages/design/components/WebMetaForm/types/Custom.tsx similarity index 100% rename from packages/design/components/WebMetaForm/types/Custom.tsx rename to client/packages/design/components/WebMetaForm/types/Custom.tsx diff --git a/packages/design/components/WebMetaForm/types/Password.tsx b/client/packages/design/components/WebMetaForm/types/Password.tsx similarity index 100% rename from packages/design/components/WebMetaForm/types/Password.tsx rename to client/packages/design/components/WebMetaForm/types/Password.tsx diff --git a/packages/design/components/WebMetaForm/types/Select.tsx b/client/packages/design/components/WebMetaForm/types/Select.tsx similarity index 100% rename from packages/design/components/WebMetaForm/types/Select.tsx rename to client/packages/design/components/WebMetaForm/types/Select.tsx diff --git a/packages/design/components/WebMetaForm/types/Text.tsx b/client/packages/design/components/WebMetaForm/types/Text.tsx similarity index 100% rename from packages/design/components/WebMetaForm/types/Text.tsx rename to client/packages/design/components/WebMetaForm/types/Text.tsx diff --git a/packages/design/components/WebMetaForm/types/TextArea.tsx b/client/packages/design/components/WebMetaForm/types/TextArea.tsx similarity index 100% rename from packages/design/components/WebMetaForm/types/TextArea.tsx rename to client/packages/design/components/WebMetaForm/types/TextArea.tsx diff --git a/packages/design/components/WebMetaForm/utils.ts b/client/packages/design/components/WebMetaForm/utils.ts similarity index 100% rename from packages/design/components/WebMetaForm/utils.ts rename to client/packages/design/components/WebMetaForm/utils.ts diff --git a/packages/design/components/index.ts b/client/packages/design/components/index.ts similarity index 100% rename from packages/design/components/index.ts rename to client/packages/design/components/index.ts diff --git a/packages/design/components/utils.ts b/client/packages/design/components/utils.ts similarity index 100% rename from packages/design/components/utils.ts rename to client/packages/design/components/utils.ts diff --git a/packages/design/package.json b/client/packages/design/package.json similarity index 100% rename from packages/design/package.json rename to client/packages/design/package.json diff --git a/packages/design/tsconfig.json b/client/packages/design/tsconfig.json similarity index 100% rename from packages/design/tsconfig.json rename to client/packages/design/tsconfig.json diff --git a/packages/design/types/index.d.ts b/client/packages/design/types/index.d.ts similarity index 100% rename from packages/design/types/index.d.ts rename to client/packages/design/types/index.d.ts diff --git a/packages/plugin-declaration-generator/.gitignore b/client/packages/plugin-declaration-generator/.gitignore similarity index 100% rename from packages/plugin-declaration-generator/.gitignore rename to client/packages/plugin-declaration-generator/.gitignore diff --git a/packages/plugin-declaration-generator/README.md b/client/packages/plugin-declaration-generator/README.md similarity index 100% rename from packages/plugin-declaration-generator/README.md rename to client/packages/plugin-declaration-generator/README.md diff --git a/packages/plugin-declaration-generator/package.json b/client/packages/plugin-declaration-generator/package.json similarity index 100% rename from packages/plugin-declaration-generator/package.json rename to client/packages/plugin-declaration-generator/package.json diff --git a/packages/plugin-declaration-generator/src/index.ts b/client/packages/plugin-declaration-generator/src/index.ts similarity index 100% rename from packages/plugin-declaration-generator/src/index.ts rename to client/packages/plugin-declaration-generator/src/index.ts diff --git a/packages/plugin-declaration-generator/src/tsgenerator.ts b/client/packages/plugin-declaration-generator/src/tsgenerator.ts similarity index 100% rename from packages/plugin-declaration-generator/src/tsgenerator.ts rename to client/packages/plugin-declaration-generator/src/tsgenerator.ts diff --git a/packages/plugin-declaration-generator/test/demo/bar.ts b/client/packages/plugin-declaration-generator/test/demo/bar.ts similarity index 100% rename from packages/plugin-declaration-generator/test/demo/bar.ts rename to client/packages/plugin-declaration-generator/test/demo/bar.ts diff --git a/packages/plugin-declaration-generator/test/demo/foo.ts b/client/packages/plugin-declaration-generator/test/demo/foo.ts similarity index 100% rename from packages/plugin-declaration-generator/test/demo/foo.ts rename to client/packages/plugin-declaration-generator/test/demo/foo.ts diff --git a/packages/plugin-declaration-generator/test/demo/index.ts b/client/packages/plugin-declaration-generator/test/demo/index.ts similarity index 100% rename from packages/plugin-declaration-generator/test/demo/index.ts rename to client/packages/plugin-declaration-generator/test/demo/index.ts diff --git a/packages/plugin-declaration-generator/test/demo/tsconfig.json b/client/packages/plugin-declaration-generator/test/demo/tsconfig.json similarity index 100% rename from packages/plugin-declaration-generator/test/demo/tsconfig.json rename to client/packages/plugin-declaration-generator/test/demo/tsconfig.json diff --git a/packages/plugin-declaration-generator/test/index.d.ts b/client/packages/plugin-declaration-generator/test/index.d.ts similarity index 100% rename from packages/plugin-declaration-generator/test/index.d.ts rename to client/packages/plugin-declaration-generator/test/index.d.ts diff --git a/packages/plugin-declaration-generator/test/index.ts b/client/packages/plugin-declaration-generator/test/index.ts similarity index 100% rename from packages/plugin-declaration-generator/test/index.ts rename to client/packages/plugin-declaration-generator/test/index.ts diff --git a/packages/plugin-declaration-generator/tsconfig.json b/client/packages/plugin-declaration-generator/tsconfig.json similarity index 100% rename from packages/plugin-declaration-generator/tsconfig.json rename to client/packages/plugin-declaration-generator/tsconfig.json diff --git a/pnpm-lock.yaml b/client/pnpm-lock.yaml similarity index 100% rename from pnpm-lock.yaml rename to client/pnpm-lock.yaml diff --git a/pnpm-workspace.yaml b/client/pnpm-workspace.yaml similarity index 100% rename from pnpm-workspace.yaml rename to client/pnpm-workspace.yaml diff --git a/shared/api/buildStorage.ts b/client/shared/api/buildStorage.ts similarity index 100% rename from shared/api/buildStorage.ts rename to client/shared/api/buildStorage.ts diff --git a/shared/api/request.ts b/client/shared/api/request.ts similarity index 100% rename from shared/api/request.ts rename to client/shared/api/request.ts diff --git a/shared/api/socket.ts b/client/shared/api/socket.ts similarity index 100% rename from shared/api/socket.ts rename to client/shared/api/socket.ts diff --git a/shared/cache/Provider.tsx b/client/shared/cache/Provider.tsx similarity index 100% rename from shared/cache/Provider.tsx rename to client/shared/cache/Provider.tsx diff --git a/shared/cache/cache.ts b/client/shared/cache/cache.ts similarity index 100% rename from shared/cache/cache.ts rename to client/shared/cache/cache.ts diff --git a/shared/cache/index.ts b/client/shared/cache/index.ts similarity index 100% rename from shared/cache/index.ts rename to client/shared/cache/index.ts diff --git a/shared/cache/useCache.ts b/client/shared/cache/useCache.ts similarity index 100% rename from shared/cache/useCache.ts rename to client/shared/cache/useCache.ts diff --git a/shared/cache/utils.ts b/client/shared/cache/utils.ts similarity index 100% rename from shared/cache/utils.ts rename to client/shared/cache/utils.ts diff --git a/shared/components/Portal/Consumer.tsx b/client/shared/components/Portal/Consumer.tsx similarity index 100% rename from shared/components/Portal/Consumer.tsx rename to client/shared/components/Portal/Consumer.tsx diff --git a/shared/components/Portal/Manager.tsx b/client/shared/components/Portal/Manager.tsx similarity index 100% rename from shared/components/Portal/Manager.tsx rename to client/shared/components/Portal/Manager.tsx diff --git a/shared/components/Portal/README.md b/client/shared/components/Portal/README.md similarity index 100% rename from shared/components/Portal/README.md rename to client/shared/components/Portal/README.md diff --git a/shared/components/Portal/buildPortal.tsx b/client/shared/components/Portal/buildPortal.tsx similarity index 100% rename from shared/components/Portal/buildPortal.tsx rename to client/shared/components/Portal/buildPortal.tsx diff --git a/shared/components/Portal/context.ts b/client/shared/components/Portal/context.ts similarity index 100% rename from shared/components/Portal/context.ts rename to client/shared/components/Portal/context.ts diff --git a/shared/components/Portal/defaultEventEmitter.tsx b/client/shared/components/Portal/defaultEventEmitter.tsx similarity index 100% rename from shared/components/Portal/defaultEventEmitter.tsx rename to client/shared/components/Portal/defaultEventEmitter.tsx diff --git a/shared/components/Portal/index.ts b/client/shared/components/Portal/index.ts similarity index 100% rename from shared/components/Portal/index.ts rename to client/shared/components/Portal/index.ts diff --git a/shared/components/Provider.tsx b/client/shared/components/Provider.tsx similarity index 100% rename from shared/components/Provider.tsx rename to client/shared/components/Provider.tsx diff --git a/shared/contexts/ChatBoxContext.tsx b/client/shared/contexts/ChatBoxContext.tsx similarity index 100% rename from shared/contexts/ChatBoxContext.tsx rename to client/shared/contexts/ChatBoxContext.tsx diff --git a/shared/contexts/ColorSchemeContext.tsx b/client/shared/contexts/ColorSchemeContext.tsx similarity index 100% rename from shared/contexts/ColorSchemeContext.tsx rename to client/shared/contexts/ColorSchemeContext.tsx diff --git a/shared/contexts/GroupInfoContext.tsx b/client/shared/contexts/GroupInfoContext.tsx similarity index 100% rename from shared/contexts/GroupInfoContext.tsx rename to client/shared/contexts/GroupInfoContext.tsx diff --git a/shared/event/index.ts b/client/shared/event/index.ts similarity index 100% rename from shared/event/index.ts rename to client/shared/event/index.ts diff --git a/shared/helper/converse-helper.ts b/client/shared/helper/converse-helper.ts similarity index 100% rename from shared/helper/converse-helper.ts rename to client/shared/helper/converse-helper.ts diff --git a/shared/hooks/factory/createUpdateEffect.ts b/client/shared/hooks/factory/createUpdateEffect.ts similarity index 100% rename from shared/hooks/factory/createUpdateEffect.ts rename to client/shared/hooks/factory/createUpdateEffect.ts diff --git a/shared/hooks/factory/createUseStorageState.ts b/client/shared/hooks/factory/createUseStorageState.ts similarity index 100% rename from shared/hooks/factory/createUseStorageState.ts rename to client/shared/hooks/factory/createUseStorageState.ts diff --git a/shared/hooks/model/useAvailableServices.ts b/client/shared/hooks/model/useAvailableServices.ts similarity index 100% rename from shared/hooks/model/useAvailableServices.ts rename to client/shared/hooks/model/useAvailableServices.ts diff --git a/shared/hooks/model/useUserInfoList.ts b/client/shared/hooks/model/useUserInfoList.ts similarity index 100% rename from shared/hooks/model/useUserInfoList.ts rename to client/shared/hooks/model/useUserInfoList.ts diff --git a/shared/hooks/model/useUserSettings.ts b/client/shared/hooks/model/useUserSettings.ts similarity index 100% rename from shared/hooks/model/useUserSettings.ts rename to client/shared/hooks/model/useUserSettings.ts diff --git a/shared/hooks/model/useUsernames.ts b/client/shared/hooks/model/useUsernames.ts similarity index 100% rename from shared/hooks/model/useUsernames.ts rename to client/shared/hooks/model/useUsernames.ts diff --git a/shared/hooks/useAsync.ts b/client/shared/hooks/useAsync.ts similarity index 100% rename from shared/hooks/useAsync.ts rename to client/shared/hooks/useAsync.ts diff --git a/shared/hooks/useAsyncFn.ts b/client/shared/hooks/useAsyncFn.ts similarity index 100% rename from shared/hooks/useAsyncFn.ts rename to client/shared/hooks/useAsyncFn.ts diff --git a/shared/hooks/useAsyncRefresh.ts b/client/shared/hooks/useAsyncRefresh.ts similarity index 100% rename from shared/hooks/useAsyncRefresh.ts rename to client/shared/hooks/useAsyncRefresh.ts diff --git a/shared/hooks/useAsyncRequest.ts b/client/shared/hooks/useAsyncRequest.ts similarity index 100% rename from shared/hooks/useAsyncRequest.ts rename to client/shared/hooks/useAsyncRequest.ts diff --git a/shared/hooks/useDebounce.ts b/client/shared/hooks/useDebounce.ts similarity index 100% rename from shared/hooks/useDebounce.ts rename to client/shared/hooks/useDebounce.ts diff --git a/shared/hooks/useEffectOnce.ts b/client/shared/hooks/useEffectOnce.ts similarity index 100% rename from shared/hooks/useEffectOnce.ts rename to client/shared/hooks/useEffectOnce.ts diff --git a/shared/hooks/useInterval.ts b/client/shared/hooks/useInterval.ts similarity index 100% rename from shared/hooks/useInterval.ts rename to client/shared/hooks/useInterval.ts diff --git a/shared/hooks/useMemoizedFn.ts b/client/shared/hooks/useMemoizedFn.ts similarity index 100% rename from shared/hooks/useMemoizedFn.ts rename to client/shared/hooks/useMemoizedFn.ts diff --git a/shared/hooks/useMountedState.ts b/client/shared/hooks/useMountedState.ts similarity index 100% rename from shared/hooks/useMountedState.ts rename to client/shared/hooks/useMountedState.ts diff --git a/shared/hooks/usePrevious.ts b/client/shared/hooks/usePrevious.ts similarity index 100% rename from shared/hooks/usePrevious.ts rename to client/shared/hooks/usePrevious.ts diff --git a/shared/hooks/useRafState.ts b/client/shared/hooks/useRafState.ts similarity index 100% rename from shared/hooks/useRafState.ts rename to client/shared/hooks/useRafState.ts diff --git a/shared/hooks/useSearch.ts b/client/shared/hooks/useSearch.ts similarity index 100% rename from shared/hooks/useSearch.ts rename to client/shared/hooks/useSearch.ts diff --git a/shared/hooks/useShallowObject.ts b/client/shared/hooks/useShallowObject.ts similarity index 100% rename from shared/hooks/useShallowObject.ts rename to client/shared/hooks/useShallowObject.ts diff --git a/shared/hooks/useTimeoutFn.ts b/client/shared/hooks/useTimeoutFn.ts similarity index 100% rename from shared/hooks/useTimeoutFn.ts rename to client/shared/hooks/useTimeoutFn.ts diff --git a/shared/hooks/useUnmount.ts b/client/shared/hooks/useUnmount.ts similarity index 100% rename from shared/hooks/useUnmount.ts rename to client/shared/hooks/useUnmount.ts diff --git a/shared/hooks/useUpdateEffect.ts b/client/shared/hooks/useUpdateEffect.ts similarity index 100% rename from shared/hooks/useUpdateEffect.ts rename to client/shared/hooks/useUpdateEffect.ts diff --git a/shared/hooks/useUpdateRef.ts b/client/shared/hooks/useUpdateRef.ts similarity index 100% rename from shared/hooks/useUpdateRef.ts rename to client/shared/hooks/useUpdateRef.ts diff --git a/shared/hooks/useWhyDidYouUpdate.ts b/client/shared/hooks/useWhyDidYouUpdate.ts similarity index 100% rename from shared/hooks/useWhyDidYouUpdate.ts rename to client/shared/hooks/useWhyDidYouUpdate.ts diff --git a/shared/i18n/Trans.tsx b/client/shared/i18n/Trans.tsx similarity index 100% rename from shared/i18n/Trans.tsx rename to client/shared/i18n/Trans.tsx diff --git a/shared/i18n/__mocks__/index.ts b/client/shared/i18n/__mocks__/index.ts similarity index 100% rename from shared/i18n/__mocks__/index.ts rename to client/shared/i18n/__mocks__/index.ts diff --git a/shared/i18n/index.ts b/client/shared/i18n/index.ts similarity index 100% rename from shared/i18n/index.ts rename to client/shared/i18n/index.ts diff --git a/shared/i18n/langs/en-US/translation.json b/client/shared/i18n/langs/en-US/translation.json similarity index 100% rename from shared/i18n/langs/en-US/translation.json rename to client/shared/i18n/langs/en-US/translation.json diff --git a/shared/i18n/langs/zh-CN/translation.json b/client/shared/i18n/langs/zh-CN/translation.json similarity index 100% rename from shared/i18n/langs/zh-CN/translation.json rename to client/shared/i18n/langs/zh-CN/translation.json diff --git a/shared/i18n/language.ts b/client/shared/i18n/language.ts similarity index 100% rename from shared/i18n/language.ts rename to client/shared/i18n/language.ts diff --git a/shared/index.tsx b/client/shared/index.tsx similarity index 100% rename from shared/index.tsx rename to client/shared/index.tsx diff --git a/shared/manager/__tests__/buildRegFn.spec.ts b/client/shared/manager/__tests__/buildRegFn.spec.ts similarity index 100% rename from shared/manager/__tests__/buildRegFn.spec.ts rename to client/shared/manager/__tests__/buildRegFn.spec.ts diff --git a/shared/manager/buildRegFn.ts b/client/shared/manager/buildRegFn.ts similarity index 100% rename from shared/manager/buildRegFn.ts rename to client/shared/manager/buildRegFn.ts diff --git a/shared/manager/buildRegList.ts b/client/shared/manager/buildRegList.ts similarity index 100% rename from shared/manager/buildRegList.ts rename to client/shared/manager/buildRegList.ts diff --git a/shared/manager/buildRegMap.ts b/client/shared/manager/buildRegMap.ts similarity index 100% rename from shared/manager/buildRegMap.ts rename to client/shared/manager/buildRegMap.ts diff --git a/shared/manager/request.ts b/client/shared/manager/request.ts similarity index 100% rename from shared/manager/request.ts rename to client/shared/manager/request.ts diff --git a/shared/manager/service.ts b/client/shared/manager/service.ts similarity index 100% rename from shared/manager/service.ts rename to client/shared/manager/service.ts diff --git a/shared/manager/socket.ts b/client/shared/manager/socket.ts similarity index 100% rename from shared/manager/socket.ts rename to client/shared/manager/socket.ts diff --git a/shared/manager/storage.ts b/client/shared/manager/storage.ts similarity index 100% rename from shared/manager/storage.ts rename to client/shared/manager/storage.ts diff --git a/shared/manager/ui.ts b/client/shared/manager/ui.ts similarity index 100% rename from shared/manager/ui.ts rename to client/shared/manager/ui.ts diff --git a/shared/model/__all__.ts b/client/shared/model/__all__.ts similarity index 100% rename from shared/model/__all__.ts rename to client/shared/model/__all__.ts diff --git a/shared/model/common.ts b/client/shared/model/common.ts similarity index 100% rename from shared/model/common.ts rename to client/shared/model/common.ts diff --git a/shared/model/config.ts b/client/shared/model/config.ts similarity index 100% rename from shared/model/config.ts rename to client/shared/model/config.ts diff --git a/shared/model/converse.ts b/client/shared/model/converse.ts similarity index 100% rename from shared/model/converse.ts rename to client/shared/model/converse.ts diff --git a/shared/model/friend.ts b/client/shared/model/friend.ts similarity index 100% rename from shared/model/friend.ts rename to client/shared/model/friend.ts diff --git a/shared/model/group.ts b/client/shared/model/group.ts similarity index 100% rename from shared/model/group.ts rename to client/shared/model/group.ts diff --git a/shared/model/message.ts b/client/shared/model/message.ts similarity index 100% rename from shared/model/message.ts rename to client/shared/model/message.ts diff --git a/shared/model/plugin.ts b/client/shared/model/plugin.ts similarity index 100% rename from shared/model/plugin.ts rename to client/shared/model/plugin.ts diff --git a/shared/model/user.ts b/client/shared/model/user.ts similarity index 100% rename from shared/model/user.ts rename to client/shared/model/user.ts diff --git a/shared/package.json b/client/shared/package.json similarity index 100% rename from shared/package.json rename to client/shared/package.json diff --git a/shared/redux/hooks/useAppSelector.ts b/client/shared/redux/hooks/useAppSelector.ts similarity index 100% rename from shared/redux/hooks/useAppSelector.ts rename to client/shared/redux/hooks/useAppSelector.ts diff --git a/shared/redux/hooks/useConverse.ts b/client/shared/redux/hooks/useConverse.ts similarity index 100% rename from shared/redux/hooks/useConverse.ts rename to client/shared/redux/hooks/useConverse.ts diff --git a/shared/redux/hooks/useConverseAck.ts b/client/shared/redux/hooks/useConverseAck.ts similarity index 100% rename from shared/redux/hooks/useConverseAck.ts rename to client/shared/redux/hooks/useConverseAck.ts diff --git a/shared/redux/hooks/useConverseMessage.ts b/client/shared/redux/hooks/useConverseMessage.ts similarity index 100% rename from shared/redux/hooks/useConverseMessage.ts rename to client/shared/redux/hooks/useConverseMessage.ts diff --git a/shared/redux/hooks/useDMConverseName.ts b/client/shared/redux/hooks/useDMConverseName.ts similarity index 100% rename from shared/redux/hooks/useDMConverseName.ts rename to client/shared/redux/hooks/useDMConverseName.ts diff --git a/shared/redux/hooks/useGroup.ts b/client/shared/redux/hooks/useGroup.ts similarity index 100% rename from shared/redux/hooks/useGroup.ts rename to client/shared/redux/hooks/useGroup.ts diff --git a/shared/redux/hooks/useGroupMemberMute.ts b/client/shared/redux/hooks/useGroupMemberMute.ts similarity index 100% rename from shared/redux/hooks/useGroupMemberMute.ts rename to client/shared/redux/hooks/useGroupMemberMute.ts diff --git a/shared/redux/hooks/useUnread.ts b/client/shared/redux/hooks/useUnread.ts similarity index 100% rename from shared/redux/hooks/useUnread.ts rename to client/shared/redux/hooks/useUnread.ts diff --git a/shared/redux/hooks/useUserInfo.ts b/client/shared/redux/hooks/useUserInfo.ts similarity index 100% rename from shared/redux/hooks/useUserInfo.ts rename to client/shared/redux/hooks/useUserInfo.ts diff --git a/shared/redux/setup.ts b/client/shared/redux/setup.ts similarity index 100% rename from shared/redux/setup.ts rename to client/shared/redux/setup.ts diff --git a/shared/redux/slices/chat.ts b/client/shared/redux/slices/chat.ts similarity index 100% rename from shared/redux/slices/chat.ts rename to client/shared/redux/slices/chat.ts diff --git a/shared/redux/slices/global.ts b/client/shared/redux/slices/global.ts similarity index 100% rename from shared/redux/slices/global.ts rename to client/shared/redux/slices/global.ts diff --git a/shared/redux/slices/group.ts b/client/shared/redux/slices/group.ts similarity index 100% rename from shared/redux/slices/group.ts rename to client/shared/redux/slices/group.ts diff --git a/shared/redux/slices/index.ts b/client/shared/redux/slices/index.ts similarity index 100% rename from shared/redux/slices/index.ts rename to client/shared/redux/slices/index.ts diff --git a/shared/redux/slices/ui.ts b/client/shared/redux/slices/ui.ts similarity index 100% rename from shared/redux/slices/ui.ts rename to client/shared/redux/slices/ui.ts diff --git a/shared/redux/slices/user.ts b/client/shared/redux/slices/user.ts similarity index 100% rename from shared/redux/slices/user.ts rename to client/shared/redux/slices/user.ts diff --git a/shared/redux/store.ts b/client/shared/redux/store.ts similarity index 100% rename from shared/redux/store.ts rename to client/shared/redux/store.ts diff --git a/shared/types.ts b/client/shared/types.ts similarity index 100% rename from shared/types.ts rename to client/shared/types.ts diff --git a/shared/utils/__tests__/array-helper.spec.ts b/client/shared/utils/__tests__/array-helper.spec.ts similarity index 100% rename from shared/utils/__tests__/array-helper.spec.ts rename to client/shared/utils/__tests__/array-helper.spec.ts diff --git a/shared/utils/__tests__/color-scheme-helper.spec.ts b/client/shared/utils/__tests__/color-scheme-helper.spec.ts similarity index 100% rename from shared/utils/__tests__/color-scheme-helper.spec.ts rename to client/shared/utils/__tests__/color-scheme-helper.spec.ts diff --git a/shared/utils/__tests__/date-helper.spec.ts b/client/shared/utils/__tests__/date-helper.spec.ts similarity index 100% rename from shared/utils/__tests__/date-helper.spec.ts rename to client/shared/utils/__tests__/date-helper.spec.ts diff --git a/shared/utils/__tests__/is-promise.spec.ts b/client/shared/utils/__tests__/is-promise.spec.ts similarity index 100% rename from shared/utils/__tests__/is-promise.spec.ts rename to client/shared/utils/__tests__/is-promise.spec.ts diff --git a/shared/utils/__tests__/json-helper.spec.ts b/client/shared/utils/__tests__/json-helper.spec.ts similarity index 100% rename from shared/utils/__tests__/json-helper.spec.ts rename to client/shared/utils/__tests__/json-helper.spec.ts diff --git a/shared/utils/__tests__/string-helper.spec.ts b/client/shared/utils/__tests__/string-helper.spec.ts similarity index 100% rename from shared/utils/__tests__/string-helper.spec.ts rename to client/shared/utils/__tests__/string-helper.spec.ts diff --git a/shared/utils/array-helper.ts b/client/shared/utils/array-helper.ts similarity index 100% rename from shared/utils/array-helper.ts rename to client/shared/utils/array-helper.ts diff --git a/shared/utils/color-scheme-helper.ts b/client/shared/utils/color-scheme-helper.ts similarity index 100% rename from shared/utils/color-scheme-helper.ts rename to client/shared/utils/color-scheme-helper.ts diff --git a/shared/utils/consts.ts b/client/shared/utils/consts.ts similarity index 100% rename from shared/utils/consts.ts rename to client/shared/utils/consts.ts diff --git a/shared/utils/date-helper.ts b/client/shared/utils/date-helper.ts similarity index 100% rename from shared/utils/date-helper.ts rename to client/shared/utils/date-helper.ts diff --git a/shared/utils/environment.ts b/client/shared/utils/environment.ts similarity index 100% rename from shared/utils/environment.ts rename to client/shared/utils/environment.ts diff --git a/shared/utils/is-promise.ts b/client/shared/utils/is-promise.ts similarity index 100% rename from shared/utils/is-promise.ts rename to client/shared/utils/is-promise.ts diff --git a/shared/utils/json-helper.ts b/client/shared/utils/json-helper.ts similarity index 100% rename from shared/utils/json-helper.ts rename to client/shared/utils/json-helper.ts diff --git a/shared/utils/message-helper.ts b/client/shared/utils/message-helper.ts similarity index 100% rename from shared/utils/message-helper.ts rename to client/shared/utils/message-helper.ts diff --git a/shared/utils/request.ts b/client/shared/utils/request.ts similarity index 100% rename from shared/utils/request.ts rename to client/shared/utils/request.ts diff --git a/shared/utils/string-helper.ts b/client/shared/utils/string-helper.ts similarity index 100% rename from shared/utils/string-helper.ts rename to client/shared/utils/string-helper.ts diff --git a/shared/utils/upload-helper.ts b/client/shared/utils/upload-helper.ts similarity index 100% rename from shared/utils/upload-helper.ts rename to client/shared/utils/upload-helper.ts diff --git a/shared/utils/url-helper.ts b/client/shared/utils/url-helper.ts similarity index 100% rename from shared/utils/url-helper.ts rename to client/shared/utils/url-helper.ts diff --git a/shared/utils/utils.ts b/client/shared/utils/utils.ts similarity index 100% rename from shared/utils/utils.ts rename to client/shared/utils/utils.ts diff --git a/test/client.ts b/client/test/client.ts similarity index 100% rename from test/client.ts rename to client/test/client.ts diff --git a/tsconfig.json b/client/tsconfig.json similarity index 100% rename from tsconfig.json rename to client/tsconfig.json diff --git a/vercel.json b/client/vercel.json similarity index 100% rename from vercel.json rename to client/vercel.json diff --git a/web/.ministarrc.js b/client/web/.ministarrc.js similarity index 100% rename from web/.ministarrc.js rename to client/web/.ministarrc.js diff --git a/web/.npmrc b/client/web/.npmrc similarity index 100% rename from web/.npmrc rename to client/web/.npmrc diff --git a/web/assets/config.json b/client/web/assets/config.json similarity index 100% rename from web/assets/config.json rename to client/web/assets/config.json diff --git a/web/assets/images/bg.jpg b/client/web/assets/images/bg.jpg similarity index 100% rename from web/assets/images/bg.jpg rename to client/web/assets/images/bg.jpg diff --git a/web/assets/images/fallback/403.svg b/client/web/assets/images/fallback/403.svg similarity index 100% rename from web/assets/images/fallback/403.svg rename to client/web/assets/images/fallback/403.svg diff --git a/web/assets/images/fallback/404.svg b/client/web/assets/images/fallback/404.svg similarity index 100% rename from web/assets/images/fallback/404.svg rename to client/web/assets/images/fallback/404.svg diff --git a/web/assets/images/fallback/failed.svg b/client/web/assets/images/fallback/failed.svg similarity index 100% rename from web/assets/images/fallback/failed.svg rename to client/web/assets/images/fallback/failed.svg diff --git a/web/assets/images/fallback/in-develop.svg b/client/web/assets/images/fallback/in-develop.svg similarity index 100% rename from web/assets/images/fallback/in-develop.svg rename to client/web/assets/images/fallback/in-develop.svg diff --git a/web/assets/images/fallback/no-content.svg b/client/web/assets/images/fallback/no-content.svg similarity index 100% rename from web/assets/images/fallback/no-content.svg rename to client/web/assets/images/fallback/no-content.svg diff --git a/web/assets/images/fallback/no-image.svg b/client/web/assets/images/fallback/no-image.svg similarity index 100% rename from web/assets/images/fallback/no-image.svg rename to client/web/assets/images/fallback/no-image.svg diff --git a/web/assets/images/fallback/no-message.svg b/client/web/assets/images/fallback/no-message.svg similarity index 100% rename from web/assets/images/fallback/no-message.svg rename to client/web/assets/images/fallback/no-message.svg diff --git a/web/assets/images/fallback/no-network.svg b/client/web/assets/images/fallback/no-network.svg similarity index 100% rename from web/assets/images/fallback/no-network.svg rename to client/web/assets/images/fallback/no-network.svg diff --git a/web/assets/images/fallback/no-permission.svg b/client/web/assets/images/fallback/no-permission.svg similarity index 100% rename from web/assets/images/fallback/no-permission.svg rename to client/web/assets/images/fallback/no-permission.svg diff --git a/web/assets/images/fallback/no-searchresult.svg b/client/web/assets/images/fallback/no-searchresult.svg similarity index 100% rename from web/assets/images/fallback/no-searchresult.svg rename to client/web/assets/images/fallback/no-searchresult.svg diff --git a/web/assets/images/login-pattern.svg b/client/web/assets/images/login-pattern.svg similarity index 100% rename from web/assets/images/login-pattern.svg rename to client/web/assets/images/login-pattern.svg diff --git a/web/assets/images/logo.svg b/client/web/assets/images/logo.svg similarity index 100% rename from web/assets/images/logo.svg rename to client/web/assets/images/logo.svg diff --git a/web/assets/images/logo/logo@192.png b/client/web/assets/images/logo/logo@192.png similarity index 100% rename from web/assets/images/logo/logo@192.png rename to client/web/assets/images/logo/logo@192.png diff --git a/web/assets/images/logo/logo@32.png b/client/web/assets/images/logo/logo@32.png similarity index 100% rename from web/assets/images/logo/logo@32.png rename to client/web/assets/images/logo/logo@32.png diff --git a/web/assets/images/logo/logo@512.png b/client/web/assets/images/logo/logo@512.png similarity index 100% rename from web/assets/images/logo/logo@512.png rename to client/web/assets/images/logo/logo@512.png diff --git a/web/assets/images/problem.svg b/client/web/assets/images/problem.svg similarity index 100% rename from web/assets/images/problem.svg rename to client/web/assets/images/problem.svg diff --git a/web/assets/images/ripple.svg b/client/web/assets/images/ripple.svg similarity index 100% rename from web/assets/images/ripple.svg rename to client/web/assets/images/ripple.svg diff --git a/web/assets/pwa.webmanifest b/client/web/assets/pwa.webmanifest similarity index 100% rename from web/assets/pwa.webmanifest rename to client/web/assets/pwa.webmanifest diff --git a/web/assets/template.html b/client/web/assets/template.html similarity index 100% rename from web/assets/template.html rename to client/web/assets/template.html diff --git a/web/build/__tests__/utils.spec.ts b/client/web/build/__tests__/utils.spec.ts similarity index 100% rename from web/build/__tests__/utils.spec.ts rename to client/web/build/__tests__/utils.spec.ts diff --git a/web/build/inject-analytics.js b/client/web/build/inject-analytics.js similarity index 100% rename from web/build/inject-analytics.js rename to client/web/build/inject-analytics.js diff --git a/web/build/utils.ts b/client/web/build/utils.ts similarity index 100% rename from web/build/utils.ts rename to client/web/build/utils.ts diff --git a/web/build/webpack.config.ts b/client/web/build/webpack.config.ts similarity index 100% rename from web/build/webpack.config.ts rename to client/web/build/webpack.config.ts diff --git a/web/e2e/cypress/.gitignore b/client/web/e2e/cypress/.gitignore similarity index 100% rename from web/e2e/cypress/.gitignore rename to client/web/e2e/cypress/.gitignore diff --git a/web/e2e/cypress/cypress.json b/client/web/e2e/cypress/cypress.json similarity index 100% rename from web/e2e/cypress/cypress.json rename to client/web/e2e/cypress/cypress.json diff --git a/web/e2e/cypress/cypress/components/antd.test.tsx b/client/web/e2e/cypress/cypress/components/antd.test.tsx similarity index 100% rename from web/e2e/cypress/cypress/components/antd.test.tsx rename to client/web/e2e/cypress/cypress/components/antd.test.tsx diff --git a/web/e2e/cypress/cypress/components/utils/TestWrapper.tsx b/client/web/e2e/cypress/cypress/components/utils/TestWrapper.tsx similarity index 100% rename from web/e2e/cypress/cypress/components/utils/TestWrapper.tsx rename to client/web/e2e/cypress/cypress/components/utils/TestWrapper.tsx diff --git a/web/e2e/cypress/cypress/plugins/index.js b/client/web/e2e/cypress/cypress/plugins/index.js similarity index 100% rename from web/e2e/cypress/cypress/plugins/index.js rename to client/web/e2e/cypress/cypress/plugins/index.js diff --git a/web/e2e/cypress/cypress/plugins/load-webpack.js b/client/web/e2e/cypress/cypress/plugins/load-webpack.js similarity index 100% rename from web/e2e/cypress/cypress/plugins/load-webpack.js rename to client/web/e2e/cypress/cypress/plugins/load-webpack.js diff --git a/web/e2e/cypress/cypress/plugins/utils/tryLoadWebpackConfig.js b/client/web/e2e/cypress/cypress/plugins/utils/tryLoadWebpackConfig.js similarity index 100% rename from web/e2e/cypress/cypress/plugins/utils/tryLoadWebpackConfig.js rename to client/web/e2e/cypress/cypress/plugins/utils/tryLoadWebpackConfig.js diff --git a/web/e2e/cypress/cypress/support/commands.ts b/client/web/e2e/cypress/cypress/support/commands.ts similarity index 100% rename from web/e2e/cypress/cypress/support/commands.ts rename to client/web/e2e/cypress/cypress/support/commands.ts diff --git a/web/e2e/cypress/cypress/support/index.ts b/client/web/e2e/cypress/cypress/support/index.ts similarity index 100% rename from web/e2e/cypress/cypress/support/index.ts rename to client/web/e2e/cypress/cypress/support/index.ts diff --git a/web/e2e/cypress/package.json b/client/web/e2e/cypress/package.json similarity index 100% rename from web/e2e/cypress/package.json rename to client/web/e2e/cypress/package.json diff --git a/web/e2e/cypress/yarn.lock b/client/web/e2e/cypress/yarn.lock similarity index 100% rename from web/e2e/cypress/yarn.lock rename to client/web/e2e/cypress/yarn.lock diff --git a/web/e2e/playwright/.gitignore b/client/web/e2e/playwright/.gitignore similarity index 100% rename from web/e2e/playwright/.gitignore rename to client/web/e2e/playwright/.gitignore diff --git a/web/e2e/playwright/.npmrc b/client/web/e2e/playwright/.npmrc similarity index 100% rename from web/e2e/playwright/.npmrc rename to client/web/e2e/playwright/.npmrc diff --git a/web/e2e/playwright/package.json b/client/web/e2e/playwright/package.json similarity index 100% rename from web/e2e/playwright/package.json rename to client/web/e2e/playwright/package.json diff --git a/web/e2e/playwright/playwright.config.ts b/client/web/e2e/playwright/playwright.config.ts similarity index 100% rename from web/e2e/playwright/playwright.config.ts rename to client/web/e2e/playwright/playwright.config.ts diff --git a/web/e2e/playwright/tests/entry.spec.ts b/client/web/e2e/playwright/tests/entry.spec.ts similarity index 100% rename from web/e2e/playwright/tests/entry.spec.ts rename to client/web/e2e/playwright/tests/entry.spec.ts diff --git a/web/e2e/playwright/tests/example.spec.ts.skip b/client/web/e2e/playwright/tests/example.spec.ts.skip similarity index 100% rename from web/e2e/playwright/tests/example.spec.ts.skip rename to client/web/e2e/playwright/tests/example.spec.ts.skip diff --git a/web/e2e/playwright/tests/main.spec.ts b/client/web/e2e/playwright/tests/main.spec.ts similarity index 100% rename from web/e2e/playwright/tests/main.spec.ts rename to client/web/e2e/playwright/tests/main.spec.ts diff --git a/web/e2e/playwright/tests/utils/user.ts b/client/web/e2e/playwright/tests/utils/user.ts similarity index 100% rename from web/e2e/playwright/tests/utils/user.ts rename to client/web/e2e/playwright/tests/utils/user.ts diff --git a/web/e2e/playwright/yarn.lock b/client/web/e2e/playwright/yarn.lock similarity index 100% rename from web/e2e/playwright/yarn.lock rename to client/web/e2e/playwright/yarn.lock diff --git a/web/jest.config.js b/client/web/jest.config.js similarity index 100% rename from web/jest.config.js rename to client/web/jest.config.js diff --git a/web/package.json b/client/web/package.json similarity index 100% rename from web/package.json rename to client/web/package.json diff --git a/web/plugins/.eslintrc.js b/client/web/plugins/.eslintrc.js similarity index 100% rename from web/plugins/.eslintrc.js rename to client/web/plugins/.eslintrc.js diff --git a/web/plugins/README.md b/client/web/plugins/README.md similarity index 100% rename from web/plugins/README.md rename to client/web/plugins/README.md diff --git a/web/plugins/com.msgbyte.bbcode/manifest.json b/client/web/plugins/com.msgbyte.bbcode/manifest.json similarity index 100% rename from web/plugins/com.msgbyte.bbcode/manifest.json rename to client/web/plugins/com.msgbyte.bbcode/manifest.json diff --git a/web/plugins/com.msgbyte.bbcode/package.json b/client/web/plugins/com.msgbyte.bbcode/package.json similarity index 100% rename from web/plugins/com.msgbyte.bbcode/package.json rename to client/web/plugins/com.msgbyte.bbcode/package.json diff --git a/web/plugins/com.msgbyte.bbcode/src/__tests__/__snapshots__/render.spec.tsx.snap b/client/web/plugins/com.msgbyte.bbcode/src/__tests__/__snapshots__/render.spec.tsx.snap similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/__tests__/__snapshots__/render.spec.tsx.snap rename to client/web/plugins/com.msgbyte.bbcode/src/__tests__/__snapshots__/render.spec.tsx.snap diff --git a/web/plugins/com.msgbyte.bbcode/src/__tests__/render.spec.tsx b/client/web/plugins/com.msgbyte.bbcode/src/__tests__/render.spec.tsx similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/__tests__/render.spec.tsx rename to client/web/plugins/com.msgbyte.bbcode/src/__tests__/render.spec.tsx diff --git a/web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/index.spec.ts b/client/web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/index.spec.ts similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/index.spec.ts rename to client/web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/index.spec.ts diff --git a/web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/parser.spec.ts b/client/web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/parser.spec.ts similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/parser.spec.ts rename to client/web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/parser.spec.ts diff --git a/web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/serialize.spec.ts b/client/web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/serialize.spec.ts similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/serialize.spec.ts rename to client/web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/serialize.spec.ts diff --git a/web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/utils.spec.ts b/client/web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/utils.spec.ts similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/utils.spec.ts rename to client/web/plugins/com.msgbyte.bbcode/src/bbcode/__tests__/utils.spec.ts diff --git a/web/plugins/com.msgbyte.bbcode/src/bbcode/index.tsx b/client/web/plugins/com.msgbyte.bbcode/src/bbcode/index.tsx similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/bbcode/index.tsx rename to client/web/plugins/com.msgbyte.bbcode/src/bbcode/index.tsx diff --git a/web/plugins/com.msgbyte.bbcode/src/bbcode/parser.tsx b/client/web/plugins/com.msgbyte.bbcode/src/bbcode/parser.tsx similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/bbcode/parser.tsx rename to client/web/plugins/com.msgbyte.bbcode/src/bbcode/parser.tsx diff --git a/web/plugins/com.msgbyte.bbcode/src/bbcode/serialize.ts b/client/web/plugins/com.msgbyte.bbcode/src/bbcode/serialize.ts similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/bbcode/serialize.ts rename to client/web/plugins/com.msgbyte.bbcode/src/bbcode/serialize.ts diff --git a/web/plugins/com.msgbyte.bbcode/src/bbcode/type.ts b/client/web/plugins/com.msgbyte.bbcode/src/bbcode/type.ts similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/bbcode/type.ts rename to client/web/plugins/com.msgbyte.bbcode/src/bbcode/type.ts diff --git a/web/plugins/com.msgbyte.bbcode/src/bbcode/utils.tsx b/client/web/plugins/com.msgbyte.bbcode/src/bbcode/utils.tsx similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/bbcode/utils.tsx rename to client/web/plugins/com.msgbyte.bbcode/src/bbcode/utils.tsx diff --git a/web/plugins/com.msgbyte.bbcode/src/components/Highlight.tsx b/client/web/plugins/com.msgbyte.bbcode/src/components/Highlight.tsx similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/components/Highlight.tsx rename to client/web/plugins/com.msgbyte.bbcode/src/components/Highlight.tsx diff --git a/web/plugins/com.msgbyte.bbcode/src/index.tsx b/client/web/plugins/com.msgbyte.bbcode/src/index.tsx similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/index.tsx rename to client/web/plugins/com.msgbyte.bbcode/src/index.tsx diff --git a/web/plugins/com.msgbyte.bbcode/src/render.ts b/client/web/plugins/com.msgbyte.bbcode/src/render.ts similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/render.ts rename to client/web/plugins/com.msgbyte.bbcode/src/render.ts diff --git a/web/plugins/com.msgbyte.bbcode/src/tags/CodeTag.tsx b/client/web/plugins/com.msgbyte.bbcode/src/tags/CodeTag.tsx similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/tags/CodeTag.tsx rename to client/web/plugins/com.msgbyte.bbcode/src/tags/CodeTag.tsx diff --git a/web/plugins/com.msgbyte.bbcode/src/tags/EmojiTag.tsx b/client/web/plugins/com.msgbyte.bbcode/src/tags/EmojiTag.tsx similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/tags/EmojiTag.tsx rename to client/web/plugins/com.msgbyte.bbcode/src/tags/EmojiTag.tsx diff --git a/web/plugins/com.msgbyte.bbcode/src/tags/ImgTag.tsx b/client/web/plugins/com.msgbyte.bbcode/src/tags/ImgTag.tsx similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/tags/ImgTag.tsx rename to client/web/plugins/com.msgbyte.bbcode/src/tags/ImgTag.tsx diff --git a/web/plugins/com.msgbyte.bbcode/src/tags/MentionTag.tsx b/client/web/plugins/com.msgbyte.bbcode/src/tags/MentionTag.tsx similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/tags/MentionTag.tsx rename to client/web/plugins/com.msgbyte.bbcode/src/tags/MentionTag.tsx diff --git a/web/plugins/com.msgbyte.bbcode/src/tags/PlainText.tsx b/client/web/plugins/com.msgbyte.bbcode/src/tags/PlainText.tsx similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/tags/PlainText.tsx rename to client/web/plugins/com.msgbyte.bbcode/src/tags/PlainText.tsx diff --git a/web/plugins/com.msgbyte.bbcode/src/tags/UrlTag.tsx b/client/web/plugins/com.msgbyte.bbcode/src/tags/UrlTag.tsx similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/tags/UrlTag.tsx rename to client/web/plugins/com.msgbyte.bbcode/src/tags/UrlTag.tsx diff --git a/web/plugins/com.msgbyte.bbcode/src/tags/__all__.ts b/client/web/plugins/com.msgbyte.bbcode/src/tags/__all__.ts similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/tags/__all__.ts rename to client/web/plugins/com.msgbyte.bbcode/src/tags/__all__.ts diff --git a/web/plugins/com.msgbyte.bbcode/src/tags/styles.less b/client/web/plugins/com.msgbyte.bbcode/src/tags/styles.less similarity index 100% rename from web/plugins/com.msgbyte.bbcode/src/tags/styles.less rename to client/web/plugins/com.msgbyte.bbcode/src/tags/styles.less diff --git a/web/plugins/com.msgbyte.bbcode/tsconfig.json b/client/web/plugins/com.msgbyte.bbcode/tsconfig.json similarity index 100% rename from web/plugins/com.msgbyte.bbcode/tsconfig.json rename to client/web/plugins/com.msgbyte.bbcode/tsconfig.json diff --git a/web/plugins/com.msgbyte.bbcode/types/index.d.ts b/client/web/plugins/com.msgbyte.bbcode/types/index.d.ts similarity index 100% rename from web/plugins/com.msgbyte.bbcode/types/index.d.ts rename to client/web/plugins/com.msgbyte.bbcode/types/index.d.ts diff --git a/web/plugins/com.msgbyte.draw/manifest.json b/client/web/plugins/com.msgbyte.draw/manifest.json similarity index 100% rename from web/plugins/com.msgbyte.draw/manifest.json rename to client/web/plugins/com.msgbyte.draw/manifest.json diff --git a/web/plugins/com.msgbyte.draw/package.json b/client/web/plugins/com.msgbyte.draw/package.json similarity index 100% rename from web/plugins/com.msgbyte.draw/package.json rename to client/web/plugins/com.msgbyte.draw/package.json diff --git a/web/plugins/com.msgbyte.draw/src/DrawModal.tsx b/client/web/plugins/com.msgbyte.draw/src/DrawModal.tsx similarity index 100% rename from web/plugins/com.msgbyte.draw/src/DrawModal.tsx rename to client/web/plugins/com.msgbyte.draw/src/DrawModal.tsx diff --git a/web/plugins/com.msgbyte.draw/src/index.tsx b/client/web/plugins/com.msgbyte.draw/src/index.tsx similarity index 100% rename from web/plugins/com.msgbyte.draw/src/index.tsx rename to client/web/plugins/com.msgbyte.draw/src/index.tsx diff --git a/web/plugins/com.msgbyte.draw/src/translate.ts b/client/web/plugins/com.msgbyte.draw/src/translate.ts similarity index 100% rename from web/plugins/com.msgbyte.draw/src/translate.ts rename to client/web/plugins/com.msgbyte.draw/src/translate.ts diff --git a/web/plugins/com.msgbyte.draw/tsconfig.json b/client/web/plugins/com.msgbyte.draw/tsconfig.json similarity index 100% rename from web/plugins/com.msgbyte.draw/tsconfig.json rename to client/web/plugins/com.msgbyte.draw/tsconfig.json diff --git a/web/plugins/com.msgbyte.genshin/manifest.json b/client/web/plugins/com.msgbyte.genshin/manifest.json similarity index 100% rename from web/plugins/com.msgbyte.genshin/manifest.json rename to client/web/plugins/com.msgbyte.genshin/manifest.json diff --git a/web/plugins/com.msgbyte.genshin/package.json b/client/web/plugins/com.msgbyte.genshin/package.json similarity index 100% rename from web/plugins/com.msgbyte.genshin/package.json rename to client/web/plugins/com.msgbyte.genshin/package.json diff --git a/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/GachaPoolItem.tsx b/client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/GachaPoolItem.tsx similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/GachaPoolItem.tsx rename to client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/GachaPoolItem.tsx diff --git a/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/GachaResult.tsx b/client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/GachaResult.tsx similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/GachaResult.tsx rename to client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/GachaResult.tsx diff --git a/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/WishResultModal.tsx b/client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/WishResultModal.tsx similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/WishResultModal.tsx rename to client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/WishResultModal.tsx diff --git a/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/WishResultText.tsx b/client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/WishResultText.tsx similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/WishResultText.tsx rename to client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/WishResultText.tsx diff --git a/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/index.tsx b/client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/index.tsx similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/index.tsx rename to client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/index.tsx diff --git a/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/useWish.tsx b/client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/useWish.tsx similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/useWish.tsx rename to client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/GachaPool/useWish.tsx diff --git a/web/plugins/com.msgbyte.genshin/src/GenshinPanel/consts.ts b/client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/consts.ts similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/GenshinPanel/consts.ts rename to client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/consts.ts diff --git a/web/plugins/com.msgbyte.genshin/src/GenshinPanel/index.less b/client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/index.less similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/GenshinPanel/index.less rename to client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/index.less diff --git a/web/plugins/com.msgbyte.genshin/src/GenshinPanel/index.tsx b/client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/index.tsx similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/GenshinPanel/index.tsx rename to client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/index.tsx diff --git a/web/plugins/com.msgbyte.genshin/src/GenshinPanel/utils.ts b/client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/utils.ts similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/GenshinPanel/utils.ts rename to client/web/plugins/com.msgbyte.genshin/src/GenshinPanel/utils.ts diff --git a/web/plugins/com.msgbyte.genshin/src/components/GenshinLoading.less b/client/web/plugins/com.msgbyte.genshin/src/components/GenshinLoading.less similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/components/GenshinLoading.less rename to client/web/plugins/com.msgbyte.genshin/src/components/GenshinLoading.less diff --git a/web/plugins/com.msgbyte.genshin/src/components/GenshinLoading.tsx b/client/web/plugins/com.msgbyte.genshin/src/components/GenshinLoading.tsx similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/components/GenshinLoading.tsx rename to client/web/plugins/com.msgbyte.genshin/src/components/GenshinLoading.tsx diff --git a/web/plugins/com.msgbyte.genshin/src/components/GenshinRichtext.tsx b/client/web/plugins/com.msgbyte.genshin/src/components/GenshinRichtext.tsx similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/components/GenshinRichtext.tsx rename to client/web/plugins/com.msgbyte.genshin/src/components/GenshinRichtext.tsx diff --git a/web/plugins/com.msgbyte.genshin/src/components/__tests__/GenshinRichtext.spec.tsx b/client/web/plugins/com.msgbyte.genshin/src/components/__tests__/GenshinRichtext.spec.tsx similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/components/__tests__/GenshinRichtext.spec.tsx rename to client/web/plugins/com.msgbyte.genshin/src/components/__tests__/GenshinRichtext.spec.tsx diff --git a/web/plugins/com.msgbyte.genshin/src/components/__tests__/__snapshots__/GenshinRichtext.spec.tsx.snap b/client/web/plugins/com.msgbyte.genshin/src/components/__tests__/__snapshots__/GenshinRichtext.spec.tsx.snap similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/components/__tests__/__snapshots__/GenshinRichtext.spec.tsx.snap rename to client/web/plugins/com.msgbyte.genshin/src/components/__tests__/__snapshots__/GenshinRichtext.spec.tsx.snap diff --git a/web/plugins/com.msgbyte.genshin/src/index.ts b/client/web/plugins/com.msgbyte.genshin/src/index.ts similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/index.ts rename to client/web/plugins/com.msgbyte.genshin/src/index.ts diff --git a/web/plugins/com.msgbyte.genshin/src/translate.ts b/client/web/plugins/com.msgbyte.genshin/src/translate.ts similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/translate.ts rename to client/web/plugins/com.msgbyte.genshin/src/translate.ts diff --git a/web/plugins/com.msgbyte.genshin/src/utils/openFullScreenVideo.ts b/client/web/plugins/com.msgbyte.genshin/src/utils/openFullScreenVideo.ts similarity index 100% rename from web/plugins/com.msgbyte.genshin/src/utils/openFullScreenVideo.ts rename to client/web/plugins/com.msgbyte.genshin/src/utils/openFullScreenVideo.ts diff --git a/web/plugins/com.msgbyte.genshin/tsconfig.json b/client/web/plugins/com.msgbyte.genshin/tsconfig.json similarity index 100% rename from web/plugins/com.msgbyte.genshin/tsconfig.json rename to client/web/plugins/com.msgbyte.genshin/tsconfig.json diff --git a/web/plugins/com.msgbyte.intro/manifest.json b/client/web/plugins/com.msgbyte.intro/manifest.json similarity index 100% rename from web/plugins/com.msgbyte.intro/manifest.json rename to client/web/plugins/com.msgbyte.intro/manifest.json diff --git a/web/plugins/com.msgbyte.intro/package.json b/client/web/plugins/com.msgbyte.intro/package.json similarity index 100% rename from web/plugins/com.msgbyte.intro/package.json rename to client/web/plugins/com.msgbyte.intro/package.json diff --git a/web/plugins/com.msgbyte.intro/src/index.ts b/client/web/plugins/com.msgbyte.intro/src/index.ts similarity index 100% rename from web/plugins/com.msgbyte.intro/src/index.ts rename to client/web/plugins/com.msgbyte.intro/src/index.ts diff --git a/web/plugins/com.msgbyte.intro/src/steps.ts b/client/web/plugins/com.msgbyte.intro/src/steps.ts similarity index 100% rename from web/plugins/com.msgbyte.intro/src/steps.ts rename to client/web/plugins/com.msgbyte.intro/src/steps.ts diff --git a/web/plugins/com.msgbyte.intro/src/style.less b/client/web/plugins/com.msgbyte.intro/src/style.less similarity index 100% rename from web/plugins/com.msgbyte.intro/src/style.less rename to client/web/plugins/com.msgbyte.intro/src/style.less diff --git a/web/plugins/com.msgbyte.intro/src/tour.ts b/client/web/plugins/com.msgbyte.intro/src/tour.ts similarity index 100% rename from web/plugins/com.msgbyte.intro/src/tour.ts rename to client/web/plugins/com.msgbyte.intro/src/tour.ts diff --git a/web/plugins/com.msgbyte.intro/tsconfig.json b/client/web/plugins/com.msgbyte.intro/tsconfig.json similarity index 100% rename from web/plugins/com.msgbyte.intro/tsconfig.json rename to client/web/plugins/com.msgbyte.intro/tsconfig.json diff --git a/web/plugins/com.msgbyte.miaolang/README.md b/client/web/plugins/com.msgbyte.miaolang/README.md similarity index 100% rename from web/plugins/com.msgbyte.miaolang/README.md rename to client/web/plugins/com.msgbyte.miaolang/README.md diff --git a/web/plugins/com.msgbyte.miaolang/docs/output.png b/client/web/plugins/com.msgbyte.miaolang/docs/output.png similarity index 100% rename from web/plugins/com.msgbyte.miaolang/docs/output.png rename to client/web/plugins/com.msgbyte.miaolang/docs/output.png diff --git a/web/plugins/com.msgbyte.miaolang/docs/send.png b/client/web/plugins/com.msgbyte.miaolang/docs/send.png similarity index 100% rename from web/plugins/com.msgbyte.miaolang/docs/send.png rename to client/web/plugins/com.msgbyte.miaolang/docs/send.png diff --git a/web/plugins/com.msgbyte.miaolang/manifest.json b/client/web/plugins/com.msgbyte.miaolang/manifest.json similarity index 100% rename from web/plugins/com.msgbyte.miaolang/manifest.json rename to client/web/plugins/com.msgbyte.miaolang/manifest.json diff --git a/web/plugins/com.msgbyte.miaolang/package.json b/client/web/plugins/com.msgbyte.miaolang/package.json similarity index 100% rename from web/plugins/com.msgbyte.miaolang/package.json rename to client/web/plugins/com.msgbyte.miaolang/package.json diff --git a/web/plugins/com.msgbyte.miaolang/src/SendMiaoModal.tsx b/client/web/plugins/com.msgbyte.miaolang/src/SendMiaoModal.tsx similarity index 100% rename from web/plugins/com.msgbyte.miaolang/src/SendMiaoModal.tsx rename to client/web/plugins/com.msgbyte.miaolang/src/SendMiaoModal.tsx diff --git a/web/plugins/com.msgbyte.miaolang/src/index.ts b/client/web/plugins/com.msgbyte.miaolang/src/index.ts similarity index 100% rename from web/plugins/com.msgbyte.miaolang/src/index.ts rename to client/web/plugins/com.msgbyte.miaolang/src/index.ts diff --git a/web/plugins/com.msgbyte.miaolang/src/miaotrans.ts b/client/web/plugins/com.msgbyte.miaolang/src/miaotrans.ts similarity index 100% rename from web/plugins/com.msgbyte.miaolang/src/miaotrans.ts rename to client/web/plugins/com.msgbyte.miaolang/src/miaotrans.ts diff --git a/web/plugins/com.msgbyte.miaolang/src/reg.ts b/client/web/plugins/com.msgbyte.miaolang/src/reg.ts similarity index 100% rename from web/plugins/com.msgbyte.miaolang/src/reg.ts rename to client/web/plugins/com.msgbyte.miaolang/src/reg.ts diff --git a/web/plugins/com.msgbyte.miaolang/src/translate.ts b/client/web/plugins/com.msgbyte.miaolang/src/translate.ts similarity index 100% rename from web/plugins/com.msgbyte.miaolang/src/translate.ts rename to client/web/plugins/com.msgbyte.miaolang/src/translate.ts diff --git a/web/plugins/com.msgbyte.miaolang/tsconfig.json b/client/web/plugins/com.msgbyte.miaolang/tsconfig.json similarity index 100% rename from web/plugins/com.msgbyte.miaolang/tsconfig.json rename to client/web/plugins/com.msgbyte.miaolang/tsconfig.json diff --git a/web/plugins/com.msgbyte.notify/manifest.json b/client/web/plugins/com.msgbyte.notify/manifest.json similarity index 100% rename from web/plugins/com.msgbyte.notify/manifest.json rename to client/web/plugins/com.msgbyte.notify/manifest.json diff --git a/web/plugins/com.msgbyte.notify/package.json b/client/web/plugins/com.msgbyte.notify/package.json similarity index 100% rename from web/plugins/com.msgbyte.notify/package.json rename to client/web/plugins/com.msgbyte.notify/package.json diff --git a/web/plugins/com.msgbyte.notify/src/index.ts b/client/web/plugins/com.msgbyte.notify/src/index.ts similarity index 100% rename from web/plugins/com.msgbyte.notify/src/index.ts rename to client/web/plugins/com.msgbyte.notify/src/index.ts diff --git a/web/plugins/com.msgbyte.notify/src/notify.ts b/client/web/plugins/com.msgbyte.notify/src/notify.ts similarity index 100% rename from web/plugins/com.msgbyte.notify/src/notify.ts rename to client/web/plugins/com.msgbyte.notify/src/notify.ts diff --git a/web/plugins/com.msgbyte.notify/tsconfig.json b/client/web/plugins/com.msgbyte.notify/tsconfig.json similarity index 100% rename from web/plugins/com.msgbyte.notify/tsconfig.json rename to client/web/plugins/com.msgbyte.notify/tsconfig.json diff --git a/web/plugins/com.msgbyte.openapi/manifest.json b/client/web/plugins/com.msgbyte.openapi/manifest.json similarity index 100% rename from web/plugins/com.msgbyte.openapi/manifest.json rename to client/web/plugins/com.msgbyte.openapi/manifest.json diff --git a/web/plugins/com.msgbyte.openapi/package.json b/client/web/plugins/com.msgbyte.openapi/package.json similarity index 100% rename from web/plugins/com.msgbyte.openapi/package.json rename to client/web/plugins/com.msgbyte.openapi/package.json diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Bot.tsx b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Bot.tsx similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Bot.tsx rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Bot.tsx diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/OAuth.tsx b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/OAuth.tsx similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/OAuth.tsx rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/OAuth.tsx diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Profile.less b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Profile.less similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Profile.less rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Profile.less diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Profile.tsx b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Profile.tsx similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Profile.tsx rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Profile.tsx diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Summary.tsx b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Summary.tsx similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Summary.tsx rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Summary.tsx diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Webpage.tsx b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Webpage.tsx similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Webpage.tsx rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/Webpage.tsx diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/index.less b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/index.less similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/index.less rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/index.less diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/index.tsx b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/index.tsx similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/index.tsx rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/AppInfo/index.tsx diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/context.tsx b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/context.tsx similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/context.tsx rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/context.tsx diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/index.less b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/index.less similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/index.less rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/index.less diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/index.tsx b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/index.tsx similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/index.tsx rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/index.tsx diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/types.ts b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/types.ts similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/types.ts rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/types.ts diff --git a/web/plugins/com.msgbyte.openapi/src/MainPanel/useOpenAppList.ts b/client/web/plugins/com.msgbyte.openapi/src/MainPanel/useOpenAppList.ts similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/MainPanel/useOpenAppList.ts rename to client/web/plugins/com.msgbyte.openapi/src/MainPanel/useOpenAppList.ts diff --git a/web/plugins/com.msgbyte.openapi/src/components/SecretValue.less b/client/web/plugins/com.msgbyte.openapi/src/components/SecretValue.less similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/components/SecretValue.less rename to client/web/plugins/com.msgbyte.openapi/src/components/SecretValue.less diff --git a/web/plugins/com.msgbyte.openapi/src/components/SecretValue.tsx b/client/web/plugins/com.msgbyte.openapi/src/components/SecretValue.tsx similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/components/SecretValue.tsx rename to client/web/plugins/com.msgbyte.openapi/src/components/SecretValue.tsx diff --git a/web/plugins/com.msgbyte.openapi/src/components/ServiceChecker.tsx b/client/web/plugins/com.msgbyte.openapi/src/components/ServiceChecker.tsx similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/components/ServiceChecker.tsx rename to client/web/plugins/com.msgbyte.openapi/src/components/ServiceChecker.tsx diff --git a/web/plugins/com.msgbyte.openapi/src/index.ts b/client/web/plugins/com.msgbyte.openapi/src/index.ts similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/index.ts rename to client/web/plugins/com.msgbyte.openapi/src/index.ts diff --git a/web/plugins/com.msgbyte.openapi/src/modals/CreateOpenApp.tsx b/client/web/plugins/com.msgbyte.openapi/src/modals/CreateOpenApp.tsx similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/modals/CreateOpenApp.tsx rename to client/web/plugins/com.msgbyte.openapi/src/modals/CreateOpenApp.tsx diff --git a/web/plugins/com.msgbyte.openapi/src/translate.ts b/client/web/plugins/com.msgbyte.openapi/src/translate.ts similarity index 100% rename from web/plugins/com.msgbyte.openapi/src/translate.ts rename to client/web/plugins/com.msgbyte.openapi/src/translate.ts diff --git a/web/plugins/com.msgbyte.openapi/tsconfig.json b/client/web/plugins/com.msgbyte.openapi/tsconfig.json similarity index 100% rename from web/plugins/com.msgbyte.openapi/tsconfig.json rename to client/web/plugins/com.msgbyte.openapi/tsconfig.json diff --git a/web/plugins/com.msgbyte.snapdrop/README.md b/client/web/plugins/com.msgbyte.snapdrop/README.md similarity index 100% rename from web/plugins/com.msgbyte.snapdrop/README.md rename to client/web/plugins/com.msgbyte.snapdrop/README.md diff --git a/web/plugins/com.msgbyte.snapdrop/manifest.json b/client/web/plugins/com.msgbyte.snapdrop/manifest.json similarity index 100% rename from web/plugins/com.msgbyte.snapdrop/manifest.json rename to client/web/plugins/com.msgbyte.snapdrop/manifest.json diff --git a/web/plugins/com.msgbyte.snapdrop/package.json b/client/web/plugins/com.msgbyte.snapdrop/package.json similarity index 100% rename from web/plugins/com.msgbyte.snapdrop/package.json rename to client/web/plugins/com.msgbyte.snapdrop/package.json diff --git a/web/plugins/com.msgbyte.snapdrop/src/index.tsx b/client/web/plugins/com.msgbyte.snapdrop/src/index.tsx similarity index 100% rename from web/plugins/com.msgbyte.snapdrop/src/index.tsx rename to client/web/plugins/com.msgbyte.snapdrop/src/index.tsx diff --git a/web/plugins/com.msgbyte.snapdrop/src/translate.ts b/client/web/plugins/com.msgbyte.snapdrop/src/translate.ts similarity index 100% rename from web/plugins/com.msgbyte.snapdrop/src/translate.ts rename to client/web/plugins/com.msgbyte.snapdrop/src/translate.ts diff --git a/web/plugins/com.msgbyte.snapdrop/tsconfig.json b/client/web/plugins/com.msgbyte.snapdrop/tsconfig.json similarity index 100% rename from web/plugins/com.msgbyte.snapdrop/tsconfig.json rename to client/web/plugins/com.msgbyte.snapdrop/tsconfig.json diff --git a/web/plugins/com.msgbyte.theme.genshin/assets/icon.jpg b/client/web/plugins/com.msgbyte.theme.genshin/assets/icon.jpg similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/assets/icon.jpg rename to client/web/plugins/com.msgbyte.theme.genshin/assets/icon.jpg diff --git a/web/plugins/com.msgbyte.theme.genshin/manifest.json b/client/web/plugins/com.msgbyte.theme.genshin/manifest.json similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/manifest.json rename to client/web/plugins/com.msgbyte.theme.genshin/manifest.json diff --git a/web/plugins/com.msgbyte.theme.genshin/package.json b/client/web/plugins/com.msgbyte.theme.genshin/package.json similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/package.json rename to client/web/plugins/com.msgbyte.theme.genshin/package.json diff --git a/web/plugins/com.msgbyte.theme.genshin/src/amber/avatar.png b/client/web/plugins/com.msgbyte.theme.genshin/src/amber/avatar.png similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/amber/avatar.png rename to client/web/plugins/com.msgbyte.theme.genshin/src/amber/avatar.png diff --git a/web/plugins/com.msgbyte.theme.genshin/src/amber/bg.jpeg b/client/web/plugins/com.msgbyte.theme.genshin/src/amber/bg.jpeg similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/amber/bg.jpeg rename to client/web/plugins/com.msgbyte.theme.genshin/src/amber/bg.jpeg diff --git a/web/plugins/com.msgbyte.theme.genshin/src/amber/theme.less b/client/web/plugins/com.msgbyte.theme.genshin/src/amber/theme.less similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/amber/theme.less rename to client/web/plugins/com.msgbyte.theme.genshin/src/amber/theme.less diff --git a/web/plugins/com.msgbyte.theme.genshin/src/hutao/avatar.png b/client/web/plugins/com.msgbyte.theme.genshin/src/hutao/avatar.png similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/hutao/avatar.png rename to client/web/plugins/com.msgbyte.theme.genshin/src/hutao/avatar.png diff --git a/web/plugins/com.msgbyte.theme.genshin/src/hutao/bg.jpg b/client/web/plugins/com.msgbyte.theme.genshin/src/hutao/bg.jpg similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/hutao/bg.jpg rename to client/web/plugins/com.msgbyte.theme.genshin/src/hutao/bg.jpg diff --git a/web/plugins/com.msgbyte.theme.genshin/src/hutao/theme.less b/client/web/plugins/com.msgbyte.theme.genshin/src/hutao/theme.less similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/hutao/theme.less rename to client/web/plugins/com.msgbyte.theme.genshin/src/hutao/theme.less diff --git a/web/plugins/com.msgbyte.theme.genshin/src/index.ts b/client/web/plugins/com.msgbyte.theme.genshin/src/index.ts similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/index.ts rename to client/web/plugins/com.msgbyte.theme.genshin/src/index.ts diff --git a/web/plugins/com.msgbyte.theme.genshin/src/jean/avatar.png b/client/web/plugins/com.msgbyte.theme.genshin/src/jean/avatar.png similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/jean/avatar.png rename to client/web/plugins/com.msgbyte.theme.genshin/src/jean/avatar.png diff --git a/web/plugins/com.msgbyte.theme.genshin/src/jean/bg.jpeg b/client/web/plugins/com.msgbyte.theme.genshin/src/jean/bg.jpeg similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/jean/bg.jpeg rename to client/web/plugins/com.msgbyte.theme.genshin/src/jean/bg.jpeg diff --git a/web/plugins/com.msgbyte.theme.genshin/src/jean/theme.less b/client/web/plugins/com.msgbyte.theme.genshin/src/jean/theme.less similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/jean/theme.less rename to client/web/plugins/com.msgbyte.theme.genshin/src/jean/theme.less diff --git a/web/plugins/com.msgbyte.theme.genshin/src/mona/avatar.png b/client/web/plugins/com.msgbyte.theme.genshin/src/mona/avatar.png similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/mona/avatar.png rename to client/web/plugins/com.msgbyte.theme.genshin/src/mona/avatar.png diff --git a/web/plugins/com.msgbyte.theme.genshin/src/mona/bg.jpeg b/client/web/plugins/com.msgbyte.theme.genshin/src/mona/bg.jpeg similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/mona/bg.jpeg rename to client/web/plugins/com.msgbyte.theme.genshin/src/mona/bg.jpeg diff --git a/web/plugins/com.msgbyte.theme.genshin/src/mona/theme.less b/client/web/plugins/com.msgbyte.theme.genshin/src/mona/theme.less similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/mona/theme.less rename to client/web/plugins/com.msgbyte.theme.genshin/src/mona/theme.less diff --git a/web/plugins/com.msgbyte.theme.genshin/src/rosaria/avatar.png b/client/web/plugins/com.msgbyte.theme.genshin/src/rosaria/avatar.png similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/rosaria/avatar.png rename to client/web/plugins/com.msgbyte.theme.genshin/src/rosaria/avatar.png diff --git a/web/plugins/com.msgbyte.theme.genshin/src/rosaria/bg.jpeg b/client/web/plugins/com.msgbyte.theme.genshin/src/rosaria/bg.jpeg similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/rosaria/bg.jpeg rename to client/web/plugins/com.msgbyte.theme.genshin/src/rosaria/bg.jpeg diff --git a/web/plugins/com.msgbyte.theme.genshin/src/rosaria/theme.less b/client/web/plugins/com.msgbyte.theme.genshin/src/rosaria/theme.less similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/src/rosaria/theme.less rename to client/web/plugins/com.msgbyte.theme.genshin/src/rosaria/theme.less diff --git a/web/plugins/com.msgbyte.theme.genshin/tsconfig.json b/client/web/plugins/com.msgbyte.theme.genshin/tsconfig.json similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/tsconfig.json rename to client/web/plugins/com.msgbyte.theme.genshin/tsconfig.json diff --git a/web/plugins/com.msgbyte.theme.genshin/types/index.d.ts b/client/web/plugins/com.msgbyte.theme.genshin/types/index.d.ts similarity index 100% rename from web/plugins/com.msgbyte.theme.genshin/types/index.d.ts rename to client/web/plugins/com.msgbyte.theme.genshin/types/index.d.ts diff --git a/web/plugins/com.msgbyte.theme.miku/manifest.json b/client/web/plugins/com.msgbyte.theme.miku/manifest.json similarity index 100% rename from web/plugins/com.msgbyte.theme.miku/manifest.json rename to client/web/plugins/com.msgbyte.theme.miku/manifest.json diff --git a/web/plugins/com.msgbyte.theme.miku/package.json b/client/web/plugins/com.msgbyte.theme.miku/package.json similarity index 100% rename from web/plugins/com.msgbyte.theme.miku/package.json rename to client/web/plugins/com.msgbyte.theme.miku/package.json diff --git a/web/plugins/com.msgbyte.theme.miku/src/bg.jpg b/client/web/plugins/com.msgbyte.theme.miku/src/bg.jpg similarity index 100% rename from web/plugins/com.msgbyte.theme.miku/src/bg.jpg rename to client/web/plugins/com.msgbyte.theme.miku/src/bg.jpg diff --git a/web/plugins/com.msgbyte.theme.miku/src/index.ts b/client/web/plugins/com.msgbyte.theme.miku/src/index.ts similarity index 100% rename from web/plugins/com.msgbyte.theme.miku/src/index.ts rename to client/web/plugins/com.msgbyte.theme.miku/src/index.ts diff --git a/web/plugins/com.msgbyte.theme.miku/src/theme.less b/client/web/plugins/com.msgbyte.theme.miku/src/theme.less similarity index 100% rename from web/plugins/com.msgbyte.theme.miku/src/theme.less rename to client/web/plugins/com.msgbyte.theme.miku/src/theme.less diff --git a/web/plugins/com.msgbyte.theme.miku/tsconfig.json b/client/web/plugins/com.msgbyte.theme.miku/tsconfig.json similarity index 100% rename from web/plugins/com.msgbyte.theme.miku/tsconfig.json rename to client/web/plugins/com.msgbyte.theme.miku/tsconfig.json diff --git a/web/plugins/com.msgbyte.theme.miku/types/index.d.ts b/client/web/plugins/com.msgbyte.theme.miku/types/index.d.ts similarity index 100% rename from web/plugins/com.msgbyte.theme.miku/types/index.d.ts rename to client/web/plugins/com.msgbyte.theme.miku/types/index.d.ts diff --git a/web/plugins/com.msgbyte.webview/README.md b/client/web/plugins/com.msgbyte.webview/README.md similarity index 100% rename from web/plugins/com.msgbyte.webview/README.md rename to client/web/plugins/com.msgbyte.webview/README.md diff --git a/web/plugins/com.msgbyte.webview/manifest.json b/client/web/plugins/com.msgbyte.webview/manifest.json similarity index 100% rename from web/plugins/com.msgbyte.webview/manifest.json rename to client/web/plugins/com.msgbyte.webview/manifest.json diff --git a/web/plugins/com.msgbyte.webview/package.json b/client/web/plugins/com.msgbyte.webview/package.json similarity index 100% rename from web/plugins/com.msgbyte.webview/package.json rename to client/web/plugins/com.msgbyte.webview/package.json diff --git a/web/plugins/com.msgbyte.webview/src/group/GroupCustomWebPanelRender.tsx b/client/web/plugins/com.msgbyte.webview/src/group/GroupCustomWebPanelRender.tsx similarity index 100% rename from web/plugins/com.msgbyte.webview/src/group/GroupCustomWebPanelRender.tsx rename to client/web/plugins/com.msgbyte.webview/src/group/GroupCustomWebPanelRender.tsx diff --git a/web/plugins/com.msgbyte.webview/src/group/GroupWebPanelRender.tsx b/client/web/plugins/com.msgbyte.webview/src/group/GroupWebPanelRender.tsx similarity index 100% rename from web/plugins/com.msgbyte.webview/src/group/GroupWebPanelRender.tsx rename to client/web/plugins/com.msgbyte.webview/src/group/GroupWebPanelRender.tsx diff --git a/web/plugins/com.msgbyte.webview/src/index.tsx b/client/web/plugins/com.msgbyte.webview/src/index.tsx similarity index 100% rename from web/plugins/com.msgbyte.webview/src/index.tsx rename to client/web/plugins/com.msgbyte.webview/src/index.tsx diff --git a/web/plugins/com.msgbyte.webview/src/translate.ts b/client/web/plugins/com.msgbyte.webview/src/translate.ts similarity index 100% rename from web/plugins/com.msgbyte.webview/src/translate.ts rename to client/web/plugins/com.msgbyte.webview/src/translate.ts diff --git a/web/plugins/com.msgbyte.webview/tsconfig.json b/client/web/plugins/com.msgbyte.webview/tsconfig.json similarity index 100% rename from web/plugins/com.msgbyte.webview/tsconfig.json rename to client/web/plugins/com.msgbyte.webview/tsconfig.json diff --git a/web/postcss.config.js b/client/web/postcss.config.js similarity index 100% rename from web/postcss.config.js rename to client/web/postcss.config.js diff --git a/web/registry.json b/client/web/registry.json similarity index 100% rename from web/registry.json rename to client/web/registry.json diff --git a/web/scripts/generate-plugin-declaration.babel.ts b/client/web/scripts/generate-plugin-declaration.babel.ts similarity index 100% rename from web/scripts/generate-plugin-declaration.babel.ts rename to client/web/scripts/generate-plugin-declaration.babel.ts diff --git a/web/scripts/generate-plugin-declaration.typescript.ts b/client/web/scripts/generate-plugin-declaration.typescript.ts similarity index 100% rename from web/scripts/generate-plugin-declaration.typescript.ts rename to client/web/scripts/generate-plugin-declaration.typescript.ts diff --git a/web/scripts/plugin-declaration.ts b/client/web/scripts/plugin-declaration.ts similarity index 100% rename from web/scripts/plugin-declaration.ts rename to client/web/scripts/plugin-declaration.ts diff --git a/web/scripts/sync-config-from-env.js b/client/web/scripts/sync-config-from-env.js similarity index 100% rename from web/scripts/sync-config-from-env.js rename to client/web/scripts/sync-config-from-env.js diff --git a/web/src/App.tsx b/client/web/src/App.tsx similarity index 100% rename from web/src/App.tsx rename to client/web/src/App.tsx diff --git a/web/src/components/AlertErrorView.tsx b/client/web/src/components/AlertErrorView.tsx similarity index 100% rename from web/src/components/AlertErrorView.tsx rename to client/web/src/components/AlertErrorView.tsx diff --git a/web/src/components/Avatar.tsx b/client/web/src/components/Avatar.tsx similarity index 100% rename from web/src/components/Avatar.tsx rename to client/web/src/components/Avatar.tsx diff --git a/web/src/components/AvatarPicker.tsx b/client/web/src/components/AvatarPicker.tsx similarity index 100% rename from web/src/components/AvatarPicker.tsx rename to client/web/src/components/AvatarPicker.tsx diff --git a/web/src/components/AvatarUploader.tsx b/client/web/src/components/AvatarUploader.tsx similarity index 100% rename from web/src/components/AvatarUploader.tsx rename to client/web/src/components/AvatarUploader.tsx diff --git a/web/src/components/ChatBox/ChatBoxPlaceholder.tsx b/client/web/src/components/ChatBox/ChatBoxPlaceholder.tsx similarity index 100% rename from web/src/components/ChatBox/ChatBoxPlaceholder.tsx rename to client/web/src/components/ChatBox/ChatBoxPlaceholder.tsx diff --git a/web/src/components/ChatBox/ChatInputBox/Addon.tsx b/client/web/src/components/ChatBox/ChatInputBox/Addon.tsx similarity index 100% rename from web/src/components/ChatBox/ChatInputBox/Addon.tsx rename to client/web/src/components/ChatBox/ChatInputBox/Addon.tsx diff --git a/web/src/components/ChatBox/ChatInputBox/Emotion.tsx b/client/web/src/components/ChatBox/ChatInputBox/Emotion.tsx similarity index 100% rename from web/src/components/ChatBox/ChatInputBox/Emotion.tsx rename to client/web/src/components/ChatBox/ChatInputBox/Emotion.tsx diff --git a/web/src/components/ChatBox/ChatInputBox/clipboard-helper.ts b/client/web/src/components/ChatBox/ChatInputBox/clipboard-helper.ts similarity index 100% rename from web/src/components/ChatBox/ChatInputBox/clipboard-helper.ts rename to client/web/src/components/ChatBox/ChatInputBox/clipboard-helper.ts diff --git a/web/src/components/ChatBox/ChatInputBox/context.tsx b/client/web/src/components/ChatBox/ChatInputBox/context.tsx similarity index 100% rename from web/src/components/ChatBox/ChatInputBox/context.tsx rename to client/web/src/components/ChatBox/ChatInputBox/context.tsx diff --git a/web/src/components/ChatBox/ChatInputBox/index.tsx b/client/web/src/components/ChatBox/ChatInputBox/index.tsx similarity index 100% rename from web/src/components/ChatBox/ChatInputBox/index.tsx rename to client/web/src/components/ChatBox/ChatInputBox/index.tsx diff --git a/web/src/components/ChatBox/ChatInputBox/input.less b/client/web/src/components/ChatBox/ChatInputBox/input.less similarity index 100% rename from web/src/components/ChatBox/ChatInputBox/input.less rename to client/web/src/components/ChatBox/ChatInputBox/input.less diff --git a/web/src/components/ChatBox/ChatInputBox/input.tsx b/client/web/src/components/ChatBox/ChatInputBox/input.tsx similarity index 100% rename from web/src/components/ChatBox/ChatInputBox/input.tsx rename to client/web/src/components/ChatBox/ChatInputBox/input.tsx diff --git a/web/src/components/ChatBox/ChatInputBox/utils.tsx b/client/web/src/components/ChatBox/ChatInputBox/utils.tsx similarity index 100% rename from web/src/components/ChatBox/ChatInputBox/utils.tsx rename to client/web/src/components/ChatBox/ChatInputBox/utils.tsx diff --git a/web/src/components/ChatBox/ChatMessageList/Item.less b/client/web/src/components/ChatBox/ChatMessageList/Item.less similarity index 100% rename from web/src/components/ChatBox/ChatMessageList/Item.less rename to client/web/src/components/ChatBox/ChatMessageList/Item.less diff --git a/web/src/components/ChatBox/ChatMessageList/Item.tsx b/client/web/src/components/ChatBox/ChatMessageList/Item.tsx similarity index 100% rename from web/src/components/ChatBox/ChatMessageList/Item.tsx rename to client/web/src/components/ChatBox/ChatMessageList/Item.tsx diff --git a/web/src/components/ChatBox/ChatMessageList/NormalList.tsx b/client/web/src/components/ChatBox/ChatMessageList/NormalList.tsx similarity index 100% rename from web/src/components/ChatBox/ChatMessageList/NormalList.tsx rename to client/web/src/components/ChatBox/ChatMessageList/NormalList.tsx diff --git a/web/src/components/ChatBox/ChatMessageList/VirtualizedList.tsx b/client/web/src/components/ChatBox/ChatMessageList/VirtualizedList.tsx similarity index 100% rename from web/src/components/ChatBox/ChatMessageList/VirtualizedList.tsx rename to client/web/src/components/ChatBox/ChatMessageList/VirtualizedList.tsx diff --git a/web/src/components/ChatBox/ChatMessageList/const.ts b/client/web/src/components/ChatBox/ChatMessageList/const.ts similarity index 100% rename from web/src/components/ChatBox/ChatMessageList/const.ts rename to client/web/src/components/ChatBox/ChatMessageList/const.ts diff --git a/web/src/components/ChatBox/ChatMessageList/index.tsx b/client/web/src/components/ChatBox/ChatMessageList/index.tsx similarity index 100% rename from web/src/components/ChatBox/ChatMessageList/index.tsx rename to client/web/src/components/ChatBox/ChatMessageList/index.tsx diff --git a/web/src/components/ChatBox/ChatMessageList/types.ts b/client/web/src/components/ChatBox/ChatMessageList/types.ts similarity index 100% rename from web/src/components/ChatBox/ChatMessageList/types.ts rename to client/web/src/components/ChatBox/ChatMessageList/types.ts diff --git a/web/src/components/ChatBox/ChatMessageList/useChatMessageItemAction.tsx b/client/web/src/components/ChatBox/ChatMessageList/useChatMessageItemAction.tsx similarity index 100% rename from web/src/components/ChatBox/ChatMessageList/useChatMessageItemAction.tsx rename to client/web/src/components/ChatBox/ChatMessageList/useChatMessageItemAction.tsx diff --git a/web/src/components/ChatBox/ChatMessageList/useChatMessageReaction.tsx b/client/web/src/components/ChatBox/ChatMessageList/useChatMessageReaction.tsx similarity index 100% rename from web/src/components/ChatBox/ChatMessageList/useChatMessageReaction.tsx rename to client/web/src/components/ChatBox/ChatMessageList/useChatMessageReaction.tsx diff --git a/web/src/components/ChatBox/ChatMessageList/useMessageReactions.tsx b/client/web/src/components/ChatBox/ChatMessageList/useMessageReactions.tsx similarity index 100% rename from web/src/components/ChatBox/ChatMessageList/useMessageReactions.tsx rename to client/web/src/components/ChatBox/ChatMessageList/useMessageReactions.tsx diff --git a/web/src/components/ChatBox/ChatMessageList/useRenderPluginMessageInterpreter.tsx b/client/web/src/components/ChatBox/ChatMessageList/useRenderPluginMessageInterpreter.tsx similarity index 100% rename from web/src/components/ChatBox/ChatMessageList/useRenderPluginMessageInterpreter.tsx rename to client/web/src/components/ChatBox/ChatMessageList/useRenderPluginMessageInterpreter.tsx diff --git a/web/src/components/ChatBox/ChatReply.tsx b/client/web/src/components/ChatBox/ChatReply.tsx similarity index 100% rename from web/src/components/ChatBox/ChatReply.tsx rename to client/web/src/components/ChatBox/ChatReply.tsx diff --git a/web/src/components/ChatBox/__tests__/preprocessMessage.spec.ts b/client/web/src/components/ChatBox/__tests__/preprocessMessage.spec.ts similarity index 100% rename from web/src/components/ChatBox/__tests__/preprocessMessage.spec.ts rename to client/web/src/components/ChatBox/__tests__/preprocessMessage.spec.ts diff --git a/web/src/components/ChatBox/index.tsx b/client/web/src/components/ChatBox/index.tsx similarity index 100% rename from web/src/components/ChatBox/index.tsx rename to client/web/src/components/ChatBox/index.tsx diff --git a/web/src/components/ChatBox/preprocessMessage.tsx b/client/web/src/components/ChatBox/preprocessMessage.tsx similarity index 100% rename from web/src/components/ChatBox/preprocessMessage.tsx rename to client/web/src/components/ChatBox/preprocessMessage.tsx diff --git a/web/src/components/ChatBox/useMessageAck.ts b/client/web/src/components/ChatBox/useMessageAck.ts similarity index 100% rename from web/src/components/ChatBox/useMessageAck.ts rename to client/web/src/components/ChatBox/useMessageAck.ts diff --git a/web/src/components/CommonSidebarWrapper.tsx b/client/web/src/components/CommonSidebarWrapper.tsx similarity index 100% rename from web/src/components/CommonSidebarWrapper.tsx rename to client/web/src/components/CommonSidebarWrapper.tsx diff --git a/web/src/components/DelayTip.tsx b/client/web/src/components/DelayTip.tsx similarity index 100% rename from web/src/components/DelayTip.tsx rename to client/web/src/components/DelayTip.tsx diff --git a/web/src/components/DevContainer.tsx b/client/web/src/components/DevContainer.tsx similarity index 100% rename from web/src/components/DevContainer.tsx rename to client/web/src/components/DevContainer.tsx diff --git a/web/src/components/DynamicVirtualizedList/DynamicSizeList.tsx b/client/web/src/components/DynamicVirtualizedList/DynamicSizeList.tsx similarity index 100% rename from web/src/components/DynamicVirtualizedList/DynamicSizeList.tsx rename to client/web/src/components/DynamicVirtualizedList/DynamicSizeList.tsx diff --git a/web/src/components/DynamicVirtualizedList/ItemMeasurer.tsx b/client/web/src/components/DynamicVirtualizedList/ItemMeasurer.tsx similarity index 100% rename from web/src/components/DynamicVirtualizedList/ItemMeasurer.tsx rename to client/web/src/components/DynamicVirtualizedList/ItemMeasurer.tsx diff --git a/web/src/components/DynamicVirtualizedList/README.md b/client/web/src/components/DynamicVirtualizedList/README.md similarity index 100% rename from web/src/components/DynamicVirtualizedList/README.md rename to client/web/src/components/DynamicVirtualizedList/README.md diff --git a/web/src/components/Emoji/Emoji.tsx b/client/web/src/components/Emoji/Emoji.tsx similarity index 100% rename from web/src/components/Emoji/Emoji.tsx rename to client/web/src/components/Emoji/Emoji.tsx diff --git a/web/src/components/Emoji/Picker.less b/client/web/src/components/Emoji/Picker.less similarity index 100% rename from web/src/components/Emoji/Picker.less rename to client/web/src/components/Emoji/Picker.less diff --git a/web/src/components/Emoji/Picker.tsx b/client/web/src/components/Emoji/Picker.tsx similarity index 100% rename from web/src/components/Emoji/Picker.tsx rename to client/web/src/components/Emoji/Picker.tsx diff --git a/web/src/components/Emoji/const.ts b/client/web/src/components/Emoji/const.ts similarity index 100% rename from web/src/components/Emoji/const.ts rename to client/web/src/components/Emoji/const.ts diff --git a/web/src/components/Emoji/index.tsx b/client/web/src/components/Emoji/index.tsx similarity index 100% rename from web/src/components/Emoji/index.tsx rename to client/web/src/components/Emoji/index.tsx diff --git a/web/src/components/ErrorBoundary.tsx b/client/web/src/components/ErrorBoundary.tsx similarity index 100% rename from web/src/components/ErrorBoundary.tsx rename to client/web/src/components/ErrorBoundary.tsx diff --git a/web/src/components/ErrorView.tsx b/client/web/src/components/ErrorView.tsx similarity index 100% rename from web/src/components/ErrorView.tsx rename to client/web/src/components/ErrorView.tsx diff --git a/web/src/components/FileSelector.tsx b/client/web/src/components/FileSelector.tsx similarity index 100% rename from web/src/components/FileSelector.tsx rename to client/web/src/components/FileSelector.tsx diff --git a/web/src/components/FullModal/CommonTitle.tsx b/client/web/src/components/FullModal/CommonTitle.tsx similarity index 100% rename from web/src/components/FullModal/CommonTitle.tsx rename to client/web/src/components/FullModal/CommonTitle.tsx diff --git a/web/src/components/FullModal/Field.tsx b/client/web/src/components/FullModal/Field.tsx similarity index 100% rename from web/src/components/FullModal/Field.tsx rename to client/web/src/components/FullModal/Field.tsx diff --git a/web/src/components/FullModal/index.tsx b/client/web/src/components/FullModal/index.tsx similarity index 100% rename from web/src/components/FullModal/index.tsx rename to client/web/src/components/FullModal/index.tsx diff --git a/web/src/components/GlobalTemporaryTip.tsx b/client/web/src/components/GlobalTemporaryTip.tsx similarity index 100% rename from web/src/components/GlobalTemporaryTip.tsx rename to client/web/src/components/GlobalTemporaryTip.tsx diff --git a/web/src/components/GroupPanelItem.tsx b/client/web/src/components/GroupPanelItem.tsx similarity index 100% rename from web/src/components/GroupPanelItem.tsx rename to client/web/src/components/GroupPanelItem.tsx diff --git a/web/src/components/GroupPanelSelector.tsx b/client/web/src/components/GroupPanelSelector.tsx similarity index 100% rename from web/src/components/GroupPanelSelector.tsx rename to client/web/src/components/GroupPanelSelector.tsx diff --git a/web/src/components/GroupSection.tsx b/client/web/src/components/GroupSection.tsx similarity index 100% rename from web/src/components/GroupSection.tsx rename to client/web/src/components/GroupSection.tsx diff --git a/web/src/components/Highlight.tsx b/client/web/src/components/Highlight.tsx similarity index 100% rename from web/src/components/Highlight.tsx rename to client/web/src/components/Highlight.tsx diff --git a/web/src/components/Icon.tsx b/client/web/src/components/Icon.tsx similarity index 100% rename from web/src/components/Icon.tsx rename to client/web/src/components/Icon.tsx diff --git a/web/src/components/IconBtn.tsx b/client/web/src/components/IconBtn.tsx similarity index 100% rename from web/src/components/IconBtn.tsx rename to client/web/src/components/IconBtn.tsx diff --git a/web/src/components/Image.tsx b/client/web/src/components/Image.tsx similarity index 100% rename from web/src/components/Image.tsx rename to client/web/src/components/Image.tsx diff --git a/web/src/components/InviteCodeExpiredAt.tsx b/client/web/src/components/InviteCodeExpiredAt.tsx similarity index 100% rename from web/src/components/InviteCodeExpiredAt.tsx rename to client/web/src/components/InviteCodeExpiredAt.tsx diff --git a/web/src/components/IsDeveloping.tsx b/client/web/src/components/IsDeveloping.tsx similarity index 100% rename from web/src/components/IsDeveloping.tsx rename to client/web/src/components/IsDeveloping.tsx diff --git a/web/src/components/LanguageSelect.tsx b/client/web/src/components/LanguageSelect.tsx similarity index 100% rename from web/src/components/LanguageSelect.tsx rename to client/web/src/components/LanguageSelect.tsx diff --git a/web/src/components/Loadable.tsx b/client/web/src/components/Loadable.tsx similarity index 100% rename from web/src/components/Loadable.tsx rename to client/web/src/components/Loadable.tsx diff --git a/web/src/components/Loading.tsx b/client/web/src/components/Loading.tsx similarity index 100% rename from web/src/components/Loading.tsx rename to client/web/src/components/Loading.tsx diff --git a/web/src/components/LoadingOnFirst.tsx b/client/web/src/components/LoadingOnFirst.tsx similarity index 100% rename from web/src/components/LoadingOnFirst.tsx rename to client/web/src/components/LoadingOnFirst.tsx diff --git a/web/src/components/LoadingSpinner.tsx b/client/web/src/components/LoadingSpinner.tsx similarity index 100% rename from web/src/components/LoadingSpinner.tsx rename to client/web/src/components/LoadingSpinner.tsx diff --git a/web/src/components/Markdown.less b/client/web/src/components/Markdown.less similarity index 100% rename from web/src/components/Markdown.less rename to client/web/src/components/Markdown.less diff --git a/web/src/components/Markdown.tsx b/client/web/src/components/Markdown.tsx similarity index 100% rename from web/src/components/Markdown.tsx rename to client/web/src/components/Markdown.tsx diff --git a/web/src/components/Modal.less b/client/web/src/components/Modal.less similarity index 100% rename from web/src/components/Modal.less rename to client/web/src/components/Modal.less diff --git a/web/src/components/Modal.tsx b/client/web/src/components/Modal.tsx similarity index 100% rename from web/src/components/Modal.tsx rename to client/web/src/components/Modal.tsx diff --git a/web/src/components/NoData.tsx b/client/web/src/components/NoData.tsx similarity index 100% rename from web/src/components/NoData.tsx rename to client/web/src/components/NoData.tsx diff --git a/web/src/components/OpenedPanelTip.tsx b/client/web/src/components/OpenedPanelTip.tsx similarity index 100% rename from web/src/components/OpenedPanelTip.tsx rename to client/web/src/components/OpenedPanelTip.tsx diff --git a/web/src/components/Panel/common/Header.tsx b/client/web/src/components/Panel/common/Header.tsx similarity index 100% rename from web/src/components/Panel/common/Header.tsx rename to client/web/src/components/Panel/common/Header.tsx diff --git a/web/src/components/Panel/common/Wrapper.tsx b/client/web/src/components/Panel/common/Wrapper.tsx similarity index 100% rename from web/src/components/Panel/common/Wrapper.tsx rename to client/web/src/components/Panel/common/Wrapper.tsx diff --git a/web/src/components/Panel/group/MembersPanel.tsx b/client/web/src/components/Panel/group/MembersPanel.tsx similarity index 100% rename from web/src/components/Panel/group/MembersPanel.tsx rename to client/web/src/components/Panel/group/MembersPanel.tsx diff --git a/web/src/components/Panel/group/PluginPanel.tsx b/client/web/src/components/Panel/group/PluginPanel.tsx similarity index 100% rename from web/src/components/Panel/group/PluginPanel.tsx rename to client/web/src/components/Panel/group/PluginPanel.tsx diff --git a/web/src/components/Panel/group/TextPanel.tsx b/client/web/src/components/Panel/group/TextPanel.tsx similarity index 100% rename from web/src/components/Panel/group/TextPanel.tsx rename to client/web/src/components/Panel/group/TextPanel.tsx diff --git a/web/src/components/Panel/group/Wrapper.tsx b/client/web/src/components/Panel/group/Wrapper.tsx similarity index 100% rename from web/src/components/Panel/group/Wrapper.tsx rename to client/web/src/components/Panel/group/Wrapper.tsx diff --git a/web/src/components/Panel/personal/ConversePanel.tsx b/client/web/src/components/Panel/personal/ConversePanel.tsx similarity index 100% rename from web/src/components/Panel/personal/ConversePanel.tsx rename to client/web/src/components/Panel/personal/ConversePanel.tsx diff --git a/web/src/components/PillTabs.less b/client/web/src/components/PillTabs.less similarity index 100% rename from web/src/components/PillTabs.less rename to client/web/src/components/PillTabs.less diff --git a/web/src/components/PillTabs.tsx b/client/web/src/components/PillTabs.tsx similarity index 100% rename from web/src/components/PillTabs.tsx rename to client/web/src/components/PillTabs.tsx diff --git a/web/src/components/Portal.tsx b/client/web/src/components/Portal.tsx similarity index 100% rename from web/src/components/Portal.tsx rename to client/web/src/components/Portal.tsx diff --git a/web/src/components/Problem.tsx b/client/web/src/components/Problem.tsx similarity index 100% rename from web/src/components/Problem.tsx rename to client/web/src/components/Problem.tsx diff --git a/web/src/components/QuickSwitcher/index.tsx b/client/web/src/components/QuickSwitcher/index.tsx similarity index 100% rename from web/src/components/QuickSwitcher/index.tsx rename to client/web/src/components/QuickSwitcher/index.tsx diff --git a/web/src/components/QuickSwitcher/useQuickSwitcherActionContext.tsx b/client/web/src/components/QuickSwitcher/useQuickSwitcherActionContext.tsx similarity index 100% rename from web/src/components/QuickSwitcher/useQuickSwitcherActionContext.tsx rename to client/web/src/components/QuickSwitcher/useQuickSwitcherActionContext.tsx diff --git a/web/src/components/QuickSwitcher/useQuickSwitcherAllAction.ts b/client/web/src/components/QuickSwitcher/useQuickSwitcherAllAction.ts similarity index 100% rename from web/src/components/QuickSwitcher/useQuickSwitcherAllAction.ts rename to client/web/src/components/QuickSwitcher/useQuickSwitcherAllAction.ts diff --git a/web/src/components/QuickSwitcher/useQuickSwitcherFilteredActions.tsx b/client/web/src/components/QuickSwitcher/useQuickSwitcherFilteredActions.tsx similarity index 100% rename from web/src/components/QuickSwitcher/useQuickSwitcherFilteredActions.tsx rename to client/web/src/components/QuickSwitcher/useQuickSwitcherFilteredActions.tsx diff --git a/web/src/components/SectionHeader.tsx b/client/web/src/components/SectionHeader.tsx similarity index 100% rename from web/src/components/SectionHeader.tsx rename to client/web/src/components/SectionHeader.tsx diff --git a/web/src/components/SidebarView.tsx b/client/web/src/components/SidebarView.tsx similarity index 100% rename from web/src/components/SidebarView.tsx rename to client/web/src/components/SidebarView.tsx diff --git a/web/src/components/Slides.less b/client/web/src/components/Slides.less similarity index 100% rename from web/src/components/Slides.less rename to client/web/src/components/Slides.less diff --git a/web/src/components/Slides.tsx b/client/web/src/components/Slides.tsx similarity index 100% rename from web/src/components/Slides.tsx rename to client/web/src/components/Slides.tsx diff --git a/web/src/components/Spinner.tsx b/client/web/src/components/Spinner.tsx similarity index 100% rename from web/src/components/Spinner.tsx rename to client/web/src/components/Spinner.tsx diff --git a/web/src/components/SplitPanel.less b/client/web/src/components/SplitPanel.less similarity index 100% rename from web/src/components/SplitPanel.less rename to client/web/src/components/SplitPanel.less diff --git a/web/src/components/SplitPanel.tsx b/client/web/src/components/SplitPanel.tsx similarity index 100% rename from web/src/components/SplitPanel.tsx rename to client/web/src/components/SplitPanel.tsx diff --git a/web/src/components/TcPopover.tsx b/client/web/src/components/TcPopover.tsx similarity index 100% rename from web/src/components/TcPopover.tsx rename to client/web/src/components/TcPopover.tsx diff --git a/web/src/components/TipIcon.tsx b/client/web/src/components/TipIcon.tsx similarity index 100% rename from web/src/components/TipIcon.tsx rename to client/web/src/components/TipIcon.tsx diff --git a/web/src/components/UpdateNotificationBtn.tsx b/client/web/src/components/UpdateNotificationBtn.tsx similarity index 100% rename from web/src/components/UpdateNotificationBtn.tsx rename to client/web/src/components/UpdateNotificationBtn.tsx diff --git a/web/src/components/UserListItem.tsx b/client/web/src/components/UserListItem.tsx similarity index 100% rename from web/src/components/UserListItem.tsx rename to client/web/src/components/UserListItem.tsx diff --git a/web/src/components/UserName.tsx b/client/web/src/components/UserName.tsx similarity index 100% rename from web/src/components/UserName.tsx rename to client/web/src/components/UserName.tsx diff --git a/web/src/components/UserPicker/FriendPicker.tsx b/client/web/src/components/UserPicker/FriendPicker.tsx similarity index 100% rename from web/src/components/UserPicker/FriendPicker.tsx rename to client/web/src/components/UserPicker/FriendPicker.tsx diff --git a/web/src/components/UserPicker/UserPicker.tsx b/client/web/src/components/UserPicker/UserPicker.tsx similarity index 100% rename from web/src/components/UserPicker/UserPicker.tsx rename to client/web/src/components/UserPicker/UserPicker.tsx diff --git a/web/src/components/UserProfileContainer.tsx b/client/web/src/components/UserProfileContainer.tsx similarity index 100% rename from web/src/components/UserProfileContainer.tsx rename to client/web/src/components/UserProfileContainer.tsx diff --git a/web/src/components/UserSelector.tsx b/client/web/src/components/UserSelector.tsx similarity index 100% rename from web/src/components/UserSelector.tsx rename to client/web/src/components/UserSelector.tsx diff --git a/web/src/components/__mocks__/Loadable.tsx b/client/web/src/components/__mocks__/Loadable.tsx similarity index 100% rename from web/src/components/__mocks__/Loadable.tsx rename to client/web/src/components/__mocks__/Loadable.tsx diff --git a/web/src/components/__tests__/AlertErrorView.spec.tsx b/client/web/src/components/__tests__/AlertErrorView.spec.tsx similarity index 100% rename from web/src/components/__tests__/AlertErrorView.spec.tsx rename to client/web/src/components/__tests__/AlertErrorView.spec.tsx diff --git a/web/src/components/__tests__/DelayTip.spec.tsx b/client/web/src/components/__tests__/DelayTip.spec.tsx similarity index 100% rename from web/src/components/__tests__/DelayTip.spec.tsx rename to client/web/src/components/__tests__/DelayTip.spec.tsx diff --git a/web/src/components/__tests__/Highlight.spec.tsx b/client/web/src/components/__tests__/Highlight.spec.tsx similarity index 100% rename from web/src/components/__tests__/Highlight.spec.tsx rename to client/web/src/components/__tests__/Highlight.spec.tsx diff --git a/web/src/components/__tests__/IconBtn.spec.tsx b/client/web/src/components/__tests__/IconBtn.spec.tsx similarity index 100% rename from web/src/components/__tests__/IconBtn.spec.tsx rename to client/web/src/components/__tests__/IconBtn.spec.tsx diff --git a/web/src/components/__tests__/IsDeveloping.spec.tsx b/client/web/src/components/__tests__/IsDeveloping.spec.tsx similarity index 100% rename from web/src/components/__tests__/IsDeveloping.spec.tsx rename to client/web/src/components/__tests__/IsDeveloping.spec.tsx diff --git a/web/src/components/__tests__/LoadingSpinner.spec.tsx b/client/web/src/components/__tests__/LoadingSpinner.spec.tsx similarity index 100% rename from web/src/components/__tests__/LoadingSpinner.spec.tsx rename to client/web/src/components/__tests__/LoadingSpinner.spec.tsx diff --git a/web/src/components/__tests__/Markdown.spec.tsx b/client/web/src/components/__tests__/Markdown.spec.tsx similarity index 100% rename from web/src/components/__tests__/Markdown.spec.tsx rename to client/web/src/components/__tests__/Markdown.spec.tsx diff --git a/web/src/components/__tests__/NoData.spec.tsx b/client/web/src/components/__tests__/NoData.spec.tsx similarity index 100% rename from web/src/components/__tests__/NoData.spec.tsx rename to client/web/src/components/__tests__/NoData.spec.tsx diff --git a/web/src/components/__tests__/PillTabs.spec.tsx b/client/web/src/components/__tests__/PillTabs.spec.tsx similarity index 100% rename from web/src/components/__tests__/PillTabs.spec.tsx rename to client/web/src/components/__tests__/PillTabs.spec.tsx diff --git a/web/src/components/__tests__/Slides.spec.tsx b/client/web/src/components/__tests__/Slides.spec.tsx similarity index 100% rename from web/src/components/__tests__/Slides.spec.tsx rename to client/web/src/components/__tests__/Slides.spec.tsx diff --git a/web/src/components/__tests__/Spinner.spec.tsx b/client/web/src/components/__tests__/Spinner.spec.tsx similarity index 100% rename from web/src/components/__tests__/Spinner.spec.tsx rename to client/web/src/components/__tests__/Spinner.spec.tsx diff --git a/web/src/components/__tests__/__snapshots__/AlertErrorView.spec.tsx.snap b/client/web/src/components/__tests__/__snapshots__/AlertErrorView.spec.tsx.snap similarity index 100% rename from web/src/components/__tests__/__snapshots__/AlertErrorView.spec.tsx.snap rename to client/web/src/components/__tests__/__snapshots__/AlertErrorView.spec.tsx.snap diff --git a/web/src/components/__tests__/__snapshots__/DelayTip.spec.tsx.snap b/client/web/src/components/__tests__/__snapshots__/DelayTip.spec.tsx.snap similarity index 100% rename from web/src/components/__tests__/__snapshots__/DelayTip.spec.tsx.snap rename to client/web/src/components/__tests__/__snapshots__/DelayTip.spec.tsx.snap diff --git a/web/src/components/__tests__/__snapshots__/Highlight.spec.tsx.snap b/client/web/src/components/__tests__/__snapshots__/Highlight.spec.tsx.snap similarity index 100% rename from web/src/components/__tests__/__snapshots__/Highlight.spec.tsx.snap rename to client/web/src/components/__tests__/__snapshots__/Highlight.spec.tsx.snap diff --git a/web/src/components/__tests__/__snapshots__/IconBtn.spec.tsx.snap b/client/web/src/components/__tests__/__snapshots__/IconBtn.spec.tsx.snap similarity index 100% rename from web/src/components/__tests__/__snapshots__/IconBtn.spec.tsx.snap rename to client/web/src/components/__tests__/__snapshots__/IconBtn.spec.tsx.snap diff --git a/web/src/components/__tests__/__snapshots__/IsDeveloping.spec.tsx.snap b/client/web/src/components/__tests__/__snapshots__/IsDeveloping.spec.tsx.snap similarity index 100% rename from web/src/components/__tests__/__snapshots__/IsDeveloping.spec.tsx.snap rename to client/web/src/components/__tests__/__snapshots__/IsDeveloping.spec.tsx.snap diff --git a/web/src/components/__tests__/__snapshots__/LoadingSpinner.spec.tsx.snap b/client/web/src/components/__tests__/__snapshots__/LoadingSpinner.spec.tsx.snap similarity index 100% rename from web/src/components/__tests__/__snapshots__/LoadingSpinner.spec.tsx.snap rename to client/web/src/components/__tests__/__snapshots__/LoadingSpinner.spec.tsx.snap diff --git a/web/src/components/__tests__/__snapshots__/Markdown.spec.tsx.snap b/client/web/src/components/__tests__/__snapshots__/Markdown.spec.tsx.snap similarity index 100% rename from web/src/components/__tests__/__snapshots__/Markdown.spec.tsx.snap rename to client/web/src/components/__tests__/__snapshots__/Markdown.spec.tsx.snap diff --git a/web/src/components/__tests__/__snapshots__/NoData.spec.tsx.snap b/client/web/src/components/__tests__/__snapshots__/NoData.spec.tsx.snap similarity index 100% rename from web/src/components/__tests__/__snapshots__/NoData.spec.tsx.snap rename to client/web/src/components/__tests__/__snapshots__/NoData.spec.tsx.snap diff --git a/web/src/components/__tests__/__snapshots__/PillTabs.spec.tsx.snap b/client/web/src/components/__tests__/__snapshots__/PillTabs.spec.tsx.snap similarity index 100% rename from web/src/components/__tests__/__snapshots__/PillTabs.spec.tsx.snap rename to client/web/src/components/__tests__/__snapshots__/PillTabs.spec.tsx.snap diff --git a/web/src/components/__tests__/__snapshots__/Slides.spec.tsx.snap b/client/web/src/components/__tests__/__snapshots__/Slides.spec.tsx.snap similarity index 100% rename from web/src/components/__tests__/__snapshots__/Slides.spec.tsx.snap rename to client/web/src/components/__tests__/__snapshots__/Slides.spec.tsx.snap diff --git a/web/src/components/__tests__/__snapshots__/Spinner.spec.tsx.snap b/client/web/src/components/__tests__/__snapshots__/Spinner.spec.tsx.snap similarity index 100% rename from web/src/components/__tests__/__snapshots__/Spinner.spec.tsx.snap rename to client/web/src/components/__tests__/__snapshots__/Spinner.spec.tsx.snap diff --git a/web/src/components/modals/AppendDMConverseMembers.tsx b/client/web/src/components/modals/AppendDMConverseMembers.tsx similarity index 100% rename from web/src/components/modals/AppendDMConverseMembers.tsx rename to client/web/src/components/modals/AppendDMConverseMembers.tsx diff --git a/web/src/components/modals/AvatarCropper.tsx b/client/web/src/components/modals/AvatarCropper.tsx similarity index 100% rename from web/src/components/modals/AvatarCropper.tsx rename to client/web/src/components/modals/AvatarCropper.tsx diff --git a/web/src/components/modals/ClaimTemporaryUser.tsx b/client/web/src/components/modals/ClaimTemporaryUser.tsx similarity index 100% rename from web/src/components/modals/ClaimTemporaryUser.tsx rename to client/web/src/components/modals/ClaimTemporaryUser.tsx diff --git a/web/src/components/modals/CreateDMConverse.tsx b/client/web/src/components/modals/CreateDMConverse.tsx similarity index 100% rename from web/src/components/modals/CreateDMConverse.tsx rename to client/web/src/components/modals/CreateDMConverse.tsx diff --git a/web/src/components/modals/CreateGroup.tsx b/client/web/src/components/modals/CreateGroup.tsx similarity index 100% rename from web/src/components/modals/CreateGroup.tsx rename to client/web/src/components/modals/CreateGroup.tsx diff --git a/web/src/components/modals/CreateGroupInvite/CreateInviteCode.module.less b/client/web/src/components/modals/CreateGroupInvite/CreateInviteCode.module.less similarity index 100% rename from web/src/components/modals/CreateGroupInvite/CreateInviteCode.module.less rename to client/web/src/components/modals/CreateGroupInvite/CreateInviteCode.module.less diff --git a/web/src/components/modals/CreateGroupInvite/CreateInviteCode.tsx b/client/web/src/components/modals/CreateGroupInvite/CreateInviteCode.tsx similarity index 100% rename from web/src/components/modals/CreateGroupInvite/CreateInviteCode.tsx rename to client/web/src/components/modals/CreateGroupInvite/CreateInviteCode.tsx diff --git a/web/src/components/modals/CreateGroupInvite/index.tsx b/client/web/src/components/modals/CreateGroupInvite/index.tsx similarity index 100% rename from web/src/components/modals/CreateGroupInvite/index.tsx rename to client/web/src/components/modals/CreateGroupInvite/index.tsx diff --git a/web/src/components/modals/GroupDetail/Invite.tsx b/client/web/src/components/modals/GroupDetail/Invite.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/Invite.tsx rename to client/web/src/components/modals/GroupDetail/Invite.tsx diff --git a/web/src/components/modals/GroupDetail/Panel/GroupPanelTree.tsx b/client/web/src/components/modals/GroupDetail/Panel/GroupPanelTree.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/Panel/GroupPanelTree.tsx rename to client/web/src/components/modals/GroupDetail/Panel/GroupPanelTree.tsx diff --git a/web/src/components/modals/GroupDetail/Panel/__tests__/GroupPanelTree.spec.tsx b/client/web/src/components/modals/GroupDetail/Panel/__tests__/GroupPanelTree.spec.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/Panel/__tests__/GroupPanelTree.spec.tsx rename to client/web/src/components/modals/GroupDetail/Panel/__tests__/GroupPanelTree.spec.tsx diff --git a/web/src/components/modals/GroupDetail/Panel/__tests__/__snapshots__/GroupPanelTree.spec.tsx.snap b/client/web/src/components/modals/GroupDetail/Panel/__tests__/__snapshots__/GroupPanelTree.spec.tsx.snap similarity index 100% rename from web/src/components/modals/GroupDetail/Panel/__tests__/__snapshots__/GroupPanelTree.spec.tsx.snap rename to client/web/src/components/modals/GroupDetail/Panel/__tests__/__snapshots__/GroupPanelTree.spec.tsx.snap diff --git a/web/src/components/modals/GroupDetail/Panel/__tests__/utils.spec.ts b/client/web/src/components/modals/GroupDetail/Panel/__tests__/utils.spec.ts similarity index 100% rename from web/src/components/modals/GroupDetail/Panel/__tests__/utils.spec.ts rename to client/web/src/components/modals/GroupDetail/Panel/__tests__/utils.spec.ts diff --git a/web/src/components/modals/GroupDetail/Panel/index.tsx b/client/web/src/components/modals/GroupDetail/Panel/index.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/Panel/index.tsx rename to client/web/src/components/modals/GroupDetail/Panel/index.tsx diff --git a/web/src/components/modals/GroupDetail/Panel/useGroupPanelTreeDrag.tsx b/client/web/src/components/modals/GroupDetail/Panel/useGroupPanelTreeDrag.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/Panel/useGroupPanelTreeDrag.tsx rename to client/web/src/components/modals/GroupDetail/Panel/useGroupPanelTreeDrag.tsx diff --git a/web/src/components/modals/GroupDetail/Panel/utils.ts b/client/web/src/components/modals/GroupDetail/Panel/utils.ts similarity index 100% rename from web/src/components/modals/GroupDetail/Panel/utils.ts rename to client/web/src/components/modals/GroupDetail/Panel/utils.ts diff --git a/web/src/components/modals/GroupDetail/Role/PermissionItem.tsx b/client/web/src/components/modals/GroupDetail/Role/PermissionItem.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/Role/PermissionItem.tsx rename to client/web/src/components/modals/GroupDetail/Role/PermissionItem.tsx diff --git a/web/src/components/modals/GroupDetail/Role/RoleItem.tsx b/client/web/src/components/modals/GroupDetail/Role/RoleItem.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/Role/RoleItem.tsx rename to client/web/src/components/modals/GroupDetail/Role/RoleItem.tsx diff --git a/web/src/components/modals/GroupDetail/Role/index.tsx b/client/web/src/components/modals/GroupDetail/Role/index.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/Role/index.tsx rename to client/web/src/components/modals/GroupDetail/Role/index.tsx diff --git a/web/src/components/modals/GroupDetail/Role/tabs/member.tsx b/client/web/src/components/modals/GroupDetail/Role/tabs/member.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/Role/tabs/member.tsx rename to client/web/src/components/modals/GroupDetail/Role/tabs/member.tsx diff --git a/web/src/components/modals/GroupDetail/Role/tabs/permission.tsx b/client/web/src/components/modals/GroupDetail/Role/tabs/permission.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/Role/tabs/permission.tsx rename to client/web/src/components/modals/GroupDetail/Role/tabs/permission.tsx diff --git a/web/src/components/modals/GroupDetail/Role/tabs/summary.tsx b/client/web/src/components/modals/GroupDetail/Role/tabs/summary.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/Role/tabs/summary.tsx rename to client/web/src/components/modals/GroupDetail/Role/tabs/summary.tsx diff --git a/web/src/components/modals/GroupDetail/Role/useModifyPermission.ts b/client/web/src/components/modals/GroupDetail/Role/useModifyPermission.ts similarity index 100% rename from web/src/components/modals/GroupDetail/Role/useModifyPermission.ts rename to client/web/src/components/modals/GroupDetail/Role/useModifyPermission.ts diff --git a/web/src/components/modals/GroupDetail/Role/useRoleActions.ts b/client/web/src/components/modals/GroupDetail/Role/useRoleActions.ts similarity index 100% rename from web/src/components/modals/GroupDetail/Role/useRoleActions.ts rename to client/web/src/components/modals/GroupDetail/Role/useRoleActions.ts diff --git a/web/src/components/modals/GroupDetail/Summary.tsx b/client/web/src/components/modals/GroupDetail/Summary.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/Summary.tsx rename to client/web/src/components/modals/GroupDetail/Summary.tsx diff --git a/web/src/components/modals/GroupDetail/index.tsx b/client/web/src/components/modals/GroupDetail/index.tsx similarity index 100% rename from web/src/components/modals/GroupDetail/index.tsx rename to client/web/src/components/modals/GroupDetail/index.tsx diff --git a/web/src/components/modals/GroupPanel/CreateGroupPanel.tsx b/client/web/src/components/modals/GroupPanel/CreateGroupPanel.tsx similarity index 100% rename from web/src/components/modals/GroupPanel/CreateGroupPanel.tsx rename to client/web/src/components/modals/GroupPanel/CreateGroupPanel.tsx diff --git a/web/src/components/modals/GroupPanel/ModifyGroupPanel.tsx b/client/web/src/components/modals/GroupPanel/ModifyGroupPanel.tsx similarity index 100% rename from web/src/components/modals/GroupPanel/ModifyGroupPanel.tsx rename to client/web/src/components/modals/GroupPanel/ModifyGroupPanel.tsx diff --git a/web/src/components/modals/GroupPanel/__tests__/helper.spec.ts b/client/web/src/components/modals/GroupPanel/__tests__/helper.spec.ts similarity index 100% rename from web/src/components/modals/GroupPanel/__tests__/helper.spec.ts rename to client/web/src/components/modals/GroupPanel/__tests__/helper.spec.ts diff --git a/web/src/components/modals/GroupPanel/helper.ts b/client/web/src/components/modals/GroupPanel/helper.ts similarity index 100% rename from web/src/components/modals/GroupPanel/helper.ts rename to client/web/src/components/modals/GroupPanel/helper.ts diff --git a/web/src/components/modals/GroupPanel/types.ts b/client/web/src/components/modals/GroupPanel/types.ts similarity index 100% rename from web/src/components/modals/GroupPanel/types.ts rename to client/web/src/components/modals/GroupPanel/types.ts diff --git a/web/src/components/modals/GroupPanel/useGroupPanelFields.tsx b/client/web/src/components/modals/GroupPanel/useGroupPanelFields.tsx similarity index 100% rename from web/src/components/modals/GroupPanel/useGroupPanelFields.tsx rename to client/web/src/components/modals/GroupPanel/useGroupPanelFields.tsx diff --git a/web/src/components/modals/ImageUploadPreviewer.tsx b/client/web/src/components/modals/ImageUploadPreviewer.tsx similarity index 100% rename from web/src/components/modals/ImageUploadPreviewer.tsx rename to client/web/src/components/modals/ImageUploadPreviewer.tsx diff --git a/web/src/components/modals/ModifyPassword.tsx b/client/web/src/components/modals/ModifyPassword.tsx similarity index 100% rename from web/src/components/modals/ModifyPassword.tsx rename to client/web/src/components/modals/ModifyPassword.tsx diff --git a/web/src/components/modals/SelectGroupMember.tsx b/client/web/src/components/modals/SelectGroupMember.tsx similarity index 100% rename from web/src/components/modals/SelectGroupMember.tsx rename to client/web/src/components/modals/SelectGroupMember.tsx diff --git a/web/src/components/modals/ServiceUrlSettings.tsx b/client/web/src/components/modals/ServiceUrlSettings.tsx similarity index 100% rename from web/src/components/modals/ServiceUrlSettings.tsx rename to client/web/src/components/modals/ServiceUrlSettings.tsx diff --git a/web/src/components/modals/SettingsView/About.tsx b/client/web/src/components/modals/SettingsView/About.tsx similarity index 100% rename from web/src/components/modals/SettingsView/About.tsx rename to client/web/src/components/modals/SettingsView/About.tsx diff --git a/web/src/components/modals/SettingsView/Account.tsx b/client/web/src/components/modals/SettingsView/Account.tsx similarity index 100% rename from web/src/components/modals/SettingsView/Account.tsx rename to client/web/src/components/modals/SettingsView/Account.tsx diff --git a/web/src/components/modals/SettingsView/Debug.tsx b/client/web/src/components/modals/SettingsView/Debug.tsx similarity index 100% rename from web/src/components/modals/SettingsView/Debug.tsx rename to client/web/src/components/modals/SettingsView/Debug.tsx diff --git a/web/src/components/modals/SettingsView/Performance.tsx b/client/web/src/components/modals/SettingsView/Performance.tsx similarity index 100% rename from web/src/components/modals/SettingsView/Performance.tsx rename to client/web/src/components/modals/SettingsView/Performance.tsx diff --git a/web/src/components/modals/SettingsView/Status.tsx b/client/web/src/components/modals/SettingsView/Status.tsx similarity index 100% rename from web/src/components/modals/SettingsView/Status.tsx rename to client/web/src/components/modals/SettingsView/Status.tsx diff --git a/web/src/components/modals/SettingsView/System.tsx b/client/web/src/components/modals/SettingsView/System.tsx similarity index 100% rename from web/src/components/modals/SettingsView/System.tsx rename to client/web/src/components/modals/SettingsView/System.tsx diff --git a/web/src/components/modals/SettingsView/index.tsx b/client/web/src/components/modals/SettingsView/index.tsx similarity index 100% rename from web/src/components/modals/SettingsView/index.tsx rename to client/web/src/components/modals/SettingsView/index.tsx diff --git a/web/src/components/popover/GroupUserPopover.tsx b/client/web/src/components/popover/GroupUserPopover.tsx similarity index 100% rename from web/src/components/popover/GroupUserPopover.tsx rename to client/web/src/components/popover/GroupUserPopover.tsx diff --git a/web/src/context/GroupIdContext.tsx b/client/web/src/context/GroupIdContext.tsx similarity index 100% rename from web/src/context/GroupIdContext.tsx rename to client/web/src/context/GroupIdContext.tsx diff --git a/web/src/context/SocketContext.tsx b/client/web/src/context/SocketContext.tsx similarity index 100% rename from web/src/context/SocketContext.tsx rename to client/web/src/context/SocketContext.tsx diff --git a/web/src/dev.ts b/client/web/src/dev.ts similarity index 100% rename from web/src/dev.ts rename to client/web/src/dev.ts diff --git a/web/src/hooks/useGlobalKeyDown.ts b/client/web/src/hooks/useGlobalKeyDown.ts similarity index 100% rename from web/src/hooks/useGlobalKeyDown.ts rename to client/web/src/hooks/useGlobalKeyDown.ts diff --git a/web/src/hooks/useHistoryNav.ts b/client/web/src/hooks/useHistoryNav.ts similarity index 100% rename from web/src/hooks/useHistoryNav.ts rename to client/web/src/hooks/useHistoryNav.ts diff --git a/web/src/hooks/useIsMobile.ts b/client/web/src/hooks/useIsMobile.ts similarity index 100% rename from web/src/hooks/useIsMobile.ts rename to client/web/src/hooks/useIsMobile.ts diff --git a/web/src/hooks/useLocalStorage.ts b/client/web/src/hooks/useLocalStorage.ts similarity index 100% rename from web/src/hooks/useLocalStorage.ts rename to client/web/src/hooks/useLocalStorage.ts diff --git a/web/src/hooks/usePanelWindow.ts b/client/web/src/hooks/usePanelWindow.ts similarity index 100% rename from web/src/hooks/usePanelWindow.ts rename to client/web/src/hooks/usePanelWindow.ts diff --git a/web/src/hooks/useSearchParam.ts b/client/web/src/hooks/useSearchParam.ts similarity index 100% rename from web/src/hooks/useSearchParam.ts rename to client/web/src/hooks/useSearchParam.ts diff --git a/web/src/hooks/useSessionStorageState.ts b/client/web/src/hooks/useSessionStorageState.ts similarity index 100% rename from web/src/hooks/useSessionStorageState.ts rename to client/web/src/hooks/useSessionStorageState.ts diff --git a/web/src/hooks/useUserPreference.ts b/client/web/src/hooks/useUserPreference.ts similarity index 100% rename from web/src/hooks/useUserPreference.ts rename to client/web/src/hooks/useUserPreference.ts diff --git a/web/src/hooks/useWindowSize.ts b/client/web/src/hooks/useWindowSize.ts similarity index 100% rename from web/src/hooks/useWindowSize.ts rename to client/web/src/hooks/useWindowSize.ts diff --git a/web/src/index.tsx b/client/web/src/index.tsx similarity index 100% rename from web/src/index.tsx rename to client/web/src/index.tsx diff --git a/web/src/init.tsx b/client/web/src/init.tsx similarity index 100% rename from web/src/init.tsx rename to client/web/src/init.tsx diff --git a/web/src/plugin/PluginStore/DocumentView/DocumentMarkdownRender.tsx b/client/web/src/plugin/PluginStore/DocumentView/DocumentMarkdownRender.tsx similarity index 100% rename from web/src/plugin/PluginStore/DocumentView/DocumentMarkdownRender.tsx rename to client/web/src/plugin/PluginStore/DocumentView/DocumentMarkdownRender.tsx diff --git a/web/src/plugin/PluginStore/DocumentView/index.tsx b/client/web/src/plugin/PluginStore/DocumentView/index.tsx similarity index 100% rename from web/src/plugin/PluginStore/DocumentView/index.tsx rename to client/web/src/plugin/PluginStore/DocumentView/index.tsx diff --git a/web/src/plugin/PluginStore/Item.tsx b/client/web/src/plugin/PluginStore/Item.tsx similarity index 100% rename from web/src/plugin/PluginStore/Item.tsx rename to client/web/src/plugin/PluginStore/Item.tsx diff --git a/web/src/plugin/PluginStore/ManualInstall.tsx b/client/web/src/plugin/PluginStore/ManualInstall.tsx similarity index 100% rename from web/src/plugin/PluginStore/ManualInstall.tsx rename to client/web/src/plugin/PluginStore/ManualInstall.tsx diff --git a/web/src/plugin/PluginStore/index.module.less b/client/web/src/plugin/PluginStore/index.module.less similarity index 100% rename from web/src/plugin/PluginStore/index.module.less rename to client/web/src/plugin/PluginStore/index.module.less diff --git a/web/src/plugin/PluginStore/index.tsx b/client/web/src/plugin/PluginStore/index.tsx similarity index 100% rename from web/src/plugin/PluginStore/index.tsx rename to client/web/src/plugin/PluginStore/index.tsx diff --git a/web/src/plugin/__tests__/utils.spec.ts b/client/web/src/plugin/__tests__/utils.spec.ts similarity index 100% rename from web/src/plugin/__tests__/utils.spec.ts rename to client/web/src/plugin/__tests__/utils.spec.ts diff --git a/web/src/plugin/builtin.ts b/client/web/src/plugin/builtin.ts similarity index 100% rename from web/src/plugin/builtin.ts rename to client/web/src/plugin/builtin.ts diff --git a/web/src/plugin/common/index.ts b/client/web/src/plugin/common/index.ts similarity index 100% rename from web/src/plugin/common/index.ts rename to client/web/src/plugin/common/index.ts diff --git a/web/src/plugin/common/reg.ts b/client/web/src/plugin/common/reg.ts similarity index 100% rename from web/src/plugin/common/reg.ts rename to client/web/src/plugin/common/reg.ts diff --git a/web/src/plugin/component/index.tsx b/client/web/src/plugin/component/index.tsx similarity index 100% rename from web/src/plugin/component/index.tsx rename to client/web/src/plugin/component/index.tsx diff --git a/web/src/plugin/loader.ts b/client/web/src/plugin/loader.ts similarity index 100% rename from web/src/plugin/loader.ts rename to client/web/src/plugin/loader.ts diff --git a/web/src/plugin/manager.ts b/client/web/src/plugin/manager.ts similarity index 100% rename from web/src/plugin/manager.ts rename to client/web/src/plugin/manager.ts diff --git a/web/src/plugin/showPluginLoadError.tsx b/client/web/src/plugin/showPluginLoadError.tsx similarity index 100% rename from web/src/plugin/showPluginLoadError.tsx rename to client/web/src/plugin/showPluginLoadError.tsx diff --git a/web/src/plugin/utils.ts b/client/web/src/plugin/utils.ts similarity index 100% rename from web/src/plugin/utils.ts rename to client/web/src/plugin/utils.ts diff --git a/web/src/routes/Entry/ForgetPasswordView.tsx b/client/web/src/routes/Entry/ForgetPasswordView.tsx similarity index 100% rename from web/src/routes/Entry/ForgetPasswordView.tsx rename to client/web/src/routes/Entry/ForgetPasswordView.tsx diff --git a/web/src/routes/Entry/GuestView.tsx b/client/web/src/routes/Entry/GuestView.tsx similarity index 100% rename from web/src/routes/Entry/GuestView.tsx rename to client/web/src/routes/Entry/GuestView.tsx diff --git a/web/src/routes/Entry/LoginView.tsx b/client/web/src/routes/Entry/LoginView.tsx similarity index 100% rename from web/src/routes/Entry/LoginView.tsx rename to client/web/src/routes/Entry/LoginView.tsx diff --git a/web/src/routes/Entry/RegisterView.tsx b/client/web/src/routes/Entry/RegisterView.tsx similarity index 100% rename from web/src/routes/Entry/RegisterView.tsx rename to client/web/src/routes/Entry/RegisterView.tsx diff --git a/web/src/routes/Entry/index.module.less b/client/web/src/routes/Entry/index.module.less similarity index 100% rename from web/src/routes/Entry/index.module.less rename to client/web/src/routes/Entry/index.module.less diff --git a/web/src/routes/Entry/index.tsx b/client/web/src/routes/Entry/index.tsx similarity index 100% rename from web/src/routes/Entry/index.tsx rename to client/web/src/routes/Entry/index.tsx diff --git a/web/src/routes/Entry/utils.ts b/client/web/src/routes/Entry/utils.ts similarity index 100% rename from web/src/routes/Entry/utils.ts rename to client/web/src/routes/Entry/utils.ts diff --git a/web/src/routes/Invite/InviteInfo.tsx b/client/web/src/routes/Invite/InviteInfo.tsx similarity index 100% rename from web/src/routes/Invite/InviteInfo.tsx rename to client/web/src/routes/Invite/InviteInfo.tsx diff --git a/web/src/routes/Invite/JoinBtn.tsx b/client/web/src/routes/Invite/JoinBtn.tsx similarity index 100% rename from web/src/routes/Invite/JoinBtn.tsx rename to client/web/src/routes/Invite/JoinBtn.tsx diff --git a/web/src/routes/Invite/SuccessModal.tsx b/client/web/src/routes/Invite/SuccessModal.tsx similarity index 100% rename from web/src/routes/Invite/SuccessModal.tsx rename to client/web/src/routes/Invite/SuccessModal.tsx diff --git a/web/src/routes/Invite/index.tsx b/client/web/src/routes/Invite/index.tsx similarity index 100% rename from web/src/routes/Invite/index.tsx rename to client/web/src/routes/Invite/index.tsx diff --git a/web/src/routes/Main/Content/Group/GroupHeader.tsx b/client/web/src/routes/Main/Content/Group/GroupHeader.tsx similarity index 100% rename from web/src/routes/Main/Content/Group/GroupHeader.tsx rename to client/web/src/routes/Main/Content/Group/GroupHeader.tsx diff --git a/web/src/routes/Main/Content/Group/Panel.tsx b/client/web/src/routes/Main/Content/Group/Panel.tsx similarity index 100% rename from web/src/routes/Main/Content/Group/Panel.tsx rename to client/web/src/routes/Main/Content/Group/Panel.tsx diff --git a/web/src/routes/Main/Content/Group/PanelRedirect.tsx b/client/web/src/routes/Main/Content/Group/PanelRedirect.tsx similarity index 100% rename from web/src/routes/Main/Content/Group/PanelRedirect.tsx rename to client/web/src/routes/Main/Content/Group/PanelRedirect.tsx diff --git a/web/src/routes/Main/Content/Group/Sidebar.tsx b/client/web/src/routes/Main/Content/Group/Sidebar.tsx similarity index 100% rename from web/src/routes/Main/Content/Group/Sidebar.tsx rename to client/web/src/routes/Main/Content/Group/Sidebar.tsx diff --git a/web/src/routes/Main/Content/Group/SidebarItem.tsx b/client/web/src/routes/Main/Content/Group/SidebarItem.tsx similarity index 100% rename from web/src/routes/Main/Content/Group/SidebarItem.tsx rename to client/web/src/routes/Main/Content/Group/SidebarItem.tsx diff --git a/web/src/routes/Main/Content/Group/TextPanelItem.tsx b/client/web/src/routes/Main/Content/Group/TextPanelItem.tsx similarity index 100% rename from web/src/routes/Main/Content/Group/TextPanelItem.tsx rename to client/web/src/routes/Main/Content/Group/TextPanelItem.tsx diff --git a/web/src/routes/Main/Content/Group/context.tsx b/client/web/src/routes/Main/Content/Group/context.tsx similarity index 100% rename from web/src/routes/Main/Content/Group/context.tsx rename to client/web/src/routes/Main/Content/Group/context.tsx diff --git a/web/src/routes/Main/Content/Group/index.tsx b/client/web/src/routes/Main/Content/Group/index.tsx similarity index 100% rename from web/src/routes/Main/Content/Group/index.tsx rename to client/web/src/routes/Main/Content/Group/index.tsx diff --git a/web/src/routes/Main/Content/Group/useGroupHeaderAction.tsx b/client/web/src/routes/Main/Content/Group/useGroupHeaderAction.tsx similarity index 100% rename from web/src/routes/Main/Content/Group/useGroupHeaderAction.tsx rename to client/web/src/routes/Main/Content/Group/useGroupHeaderAction.tsx diff --git a/web/src/routes/Main/Content/Group/utils.ts b/client/web/src/routes/Main/Content/Group/utils.ts similarity index 100% rename from web/src/routes/Main/Content/Group/utils.ts rename to client/web/src/routes/Main/Content/Group/utils.ts diff --git a/web/src/routes/Main/Content/PageContent.tsx b/client/web/src/routes/Main/Content/PageContent.tsx similarity index 100% rename from web/src/routes/Main/Content/PageContent.tsx rename to client/web/src/routes/Main/Content/PageContent.tsx diff --git a/web/src/routes/Main/Content/Personal/Converse/index.tsx b/client/web/src/routes/Main/Content/Personal/Converse/index.tsx similarity index 100% rename from web/src/routes/Main/Content/Personal/Converse/index.tsx rename to client/web/src/routes/Main/Content/Personal/Converse/index.tsx diff --git a/web/src/routes/Main/Content/Personal/Friends/AddFriend.tsx b/client/web/src/routes/Main/Content/Personal/Friends/AddFriend.tsx similarity index 100% rename from web/src/routes/Main/Content/Personal/Friends/AddFriend.tsx rename to client/web/src/routes/Main/Content/Personal/Friends/AddFriend.tsx diff --git a/web/src/routes/Main/Content/Personal/Friends/FriendList.tsx b/client/web/src/routes/Main/Content/Personal/Friends/FriendList.tsx similarity index 100% rename from web/src/routes/Main/Content/Personal/Friends/FriendList.tsx rename to client/web/src/routes/Main/Content/Personal/Friends/FriendList.tsx diff --git a/web/src/routes/Main/Content/Personal/Friends/RequestReceived.tsx b/client/web/src/routes/Main/Content/Personal/Friends/RequestReceived.tsx similarity index 100% rename from web/src/routes/Main/Content/Personal/Friends/RequestReceived.tsx rename to client/web/src/routes/Main/Content/Personal/Friends/RequestReceived.tsx diff --git a/web/src/routes/Main/Content/Personal/Friends/RequestSend.tsx b/client/web/src/routes/Main/Content/Personal/Friends/RequestSend.tsx similarity index 100% rename from web/src/routes/Main/Content/Personal/Friends/RequestSend.tsx rename to client/web/src/routes/Main/Content/Personal/Friends/RequestSend.tsx diff --git a/web/src/routes/Main/Content/Personal/Friends/index.tsx b/client/web/src/routes/Main/Content/Personal/Friends/index.tsx similarity index 100% rename from web/src/routes/Main/Content/Personal/Friends/index.tsx rename to client/web/src/routes/Main/Content/Personal/Friends/index.tsx diff --git a/web/src/routes/Main/Content/Personal/Plugins/index.tsx b/client/web/src/routes/Main/Content/Personal/Plugins/index.tsx similarity index 100% rename from web/src/routes/Main/Content/Personal/Plugins/index.tsx rename to client/web/src/routes/Main/Content/Personal/Plugins/index.tsx diff --git a/web/src/routes/Main/Content/Personal/Sidebar.tsx b/client/web/src/routes/Main/Content/Personal/Sidebar.tsx similarity index 100% rename from web/src/routes/Main/Content/Personal/Sidebar.tsx rename to client/web/src/routes/Main/Content/Personal/Sidebar.tsx diff --git a/web/src/routes/Main/Content/Personal/SidebarDMItem.tsx b/client/web/src/routes/Main/Content/Personal/SidebarDMItem.tsx similarity index 100% rename from web/src/routes/Main/Content/Personal/SidebarDMItem.tsx rename to client/web/src/routes/Main/Content/Personal/SidebarDMItem.tsx diff --git a/web/src/routes/Main/Content/Personal/index.tsx b/client/web/src/routes/Main/Content/Personal/index.tsx similarity index 100% rename from web/src/routes/Main/Content/Personal/index.tsx rename to client/web/src/routes/Main/Content/Personal/index.tsx diff --git a/web/src/routes/Main/Content/SidebarItem.tsx b/client/web/src/routes/Main/Content/SidebarItem.tsx similarity index 100% rename from web/src/routes/Main/Content/SidebarItem.tsx rename to client/web/src/routes/Main/Content/SidebarItem.tsx diff --git a/web/src/routes/Main/Content/index.tsx b/client/web/src/routes/Main/Content/index.tsx similarity index 100% rename from web/src/routes/Main/Content/index.tsx rename to client/web/src/routes/Main/Content/index.tsx diff --git a/web/src/routes/Main/Navbar/GroupNav.tsx b/client/web/src/routes/Main/Navbar/GroupNav.tsx similarity index 100% rename from web/src/routes/Main/Navbar/GroupNav.tsx rename to client/web/src/routes/Main/Navbar/GroupNav.tsx diff --git a/web/src/routes/Main/Navbar/MobileMenuBtn.tsx b/client/web/src/routes/Main/Navbar/MobileMenuBtn.tsx similarity index 100% rename from web/src/routes/Main/Navbar/MobileMenuBtn.tsx rename to client/web/src/routes/Main/Navbar/MobileMenuBtn.tsx diff --git a/web/src/routes/Main/Navbar/NavItem.tsx b/client/web/src/routes/Main/Navbar/NavItem.tsx similarity index 100% rename from web/src/routes/Main/Navbar/NavItem.tsx rename to client/web/src/routes/Main/Navbar/NavItem.tsx diff --git a/web/src/routes/Main/Navbar/PersonalNav.tsx b/client/web/src/routes/Main/Navbar/PersonalNav.tsx similarity index 100% rename from web/src/routes/Main/Navbar/PersonalNav.tsx rename to client/web/src/routes/Main/Navbar/PersonalNav.tsx diff --git a/web/src/routes/Main/Navbar/SettingBtn.tsx b/client/web/src/routes/Main/Navbar/SettingBtn.tsx similarity index 100% rename from web/src/routes/Main/Navbar/SettingBtn.tsx rename to client/web/src/routes/Main/Navbar/SettingBtn.tsx diff --git a/web/src/routes/Main/Navbar/index.tsx b/client/web/src/routes/Main/Navbar/index.tsx similarity index 100% rename from web/src/routes/Main/Navbar/index.tsx rename to client/web/src/routes/Main/Navbar/index.tsx diff --git a/web/src/routes/Main/Provider.tsx b/client/web/src/routes/Main/Provider.tsx similarity index 100% rename from web/src/routes/Main/Provider.tsx rename to client/web/src/routes/Main/Provider.tsx diff --git a/web/src/routes/Main/SidebarContext.tsx b/client/web/src/routes/Main/SidebarContext.tsx similarity index 100% rename from web/src/routes/Main/SidebarContext.tsx rename to client/web/src/routes/Main/SidebarContext.tsx diff --git a/web/src/routes/Main/index.tsx b/client/web/src/routes/Main/index.tsx similarity index 100% rename from web/src/routes/Main/index.tsx rename to client/web/src/routes/Main/index.tsx diff --git a/web/src/routes/Main/useShortcuts.tsx b/client/web/src/routes/Main/useShortcuts.tsx similarity index 100% rename from web/src/routes/Main/useShortcuts.tsx rename to client/web/src/routes/Main/useShortcuts.tsx diff --git a/web/src/routes/Panel/README.md b/client/web/src/routes/Panel/README.md similarity index 100% rename from web/src/routes/Panel/README.md rename to client/web/src/routes/Panel/README.md diff --git a/web/src/routes/Panel/index.tsx b/client/web/src/routes/Panel/index.tsx similarity index 100% rename from web/src/routes/Panel/index.tsx rename to client/web/src/routes/Panel/index.tsx diff --git a/web/src/styles/antd/dark.less b/client/web/src/styles/antd/dark.less similarity index 100% rename from web/src/styles/antd/dark.less rename to client/web/src/styles/antd/dark.less diff --git a/web/src/styles/antd/index.less b/client/web/src/styles/antd/index.less similarity index 100% rename from web/src/styles/antd/index.less rename to client/web/src/styles/antd/index.less diff --git a/web/src/styles/antd/overwrite.less b/client/web/src/styles/antd/overwrite.less similarity index 100% rename from web/src/styles/antd/overwrite.less rename to client/web/src/styles/antd/overwrite.less diff --git a/web/src/styles/antd/theme.less b/client/web/src/styles/antd/theme.less similarity index 100% rename from web/src/styles/antd/theme.less rename to client/web/src/styles/antd/theme.less diff --git a/web/src/styles/global.less b/client/web/src/styles/global.less similarity index 100% rename from web/src/styles/global.less rename to client/web/src/styles/global.less diff --git a/web/src/styles/index.ts b/client/web/src/styles/index.ts similarity index 100% rename from web/src/styles/index.ts rename to client/web/src/styles/index.ts diff --git a/web/src/styles/tailwind.less b/client/web/src/styles/tailwind.less similarity index 100% rename from web/src/styles/tailwind.less rename to client/web/src/styles/tailwind.less diff --git a/web/src/utils/__tests__/jwt-helper.spec.ts b/client/web/src/utils/__tests__/jwt-helper.spec.ts similarity index 100% rename from web/src/utils/__tests__/jwt-helper.spec.ts rename to client/web/src/utils/__tests__/jwt-helper.spec.ts diff --git a/web/src/utils/__tests__/url-helper.spec.ts b/client/web/src/utils/__tests__/url-helper.spec.ts similarity index 100% rename from web/src/utils/__tests__/url-helper.spec.ts rename to client/web/src/utils/__tests__/url-helper.spec.ts diff --git a/web/src/utils/__tests__/window-helper.spec.ts b/client/web/src/utils/__tests__/window-helper.spec.ts similarity index 100% rename from web/src/utils/__tests__/window-helper.spec.ts rename to client/web/src/utils/__tests__/window-helper.spec.ts diff --git a/web/src/utils/dom-helper.ts b/client/web/src/utils/dom-helper.ts similarity index 100% rename from web/src/utils/dom-helper.ts rename to client/web/src/utils/dom-helper.ts diff --git a/web/src/utils/file-helper.ts b/client/web/src/utils/file-helper.ts similarity index 100% rename from web/src/utils/file-helper.ts rename to client/web/src/utils/file-helper.ts diff --git a/web/src/utils/global-state-helper.ts b/client/web/src/utils/global-state-helper.ts similarity index 100% rename from web/src/utils/global-state-helper.ts rename to client/web/src/utils/global-state-helper.ts diff --git a/web/src/utils/hot-key.ts b/client/web/src/utils/hot-key.ts similarity index 100% rename from web/src/utils/hot-key.ts rename to client/web/src/utils/hot-key.ts diff --git a/web/src/utils/image-helper.ts b/client/web/src/utils/image-helper.ts similarity index 100% rename from web/src/utils/image-helper.ts rename to client/web/src/utils/image-helper.ts diff --git a/web/src/utils/jwt-helper.ts b/client/web/src/utils/jwt-helper.ts similarity index 100% rename from web/src/utils/jwt-helper.ts rename to client/web/src/utils/jwt-helper.ts diff --git a/web/src/utils/location-helper.ts b/client/web/src/utils/location-helper.ts similarity index 100% rename from web/src/utils/location-helper.ts rename to client/web/src/utils/location-helper.ts diff --git a/web/src/utils/measure-helper.ts b/client/web/src/utils/measure-helper.ts similarity index 100% rename from web/src/utils/measure-helper.ts rename to client/web/src/utils/measure-helper.ts diff --git a/web/src/utils/plugin-helper.ts b/client/web/src/utils/plugin-helper.ts similarity index 100% rename from web/src/utils/plugin-helper.ts rename to client/web/src/utils/plugin-helper.ts diff --git a/web/src/utils/role-helper.ts b/client/web/src/utils/role-helper.ts similarity index 100% rename from web/src/utils/role-helper.ts rename to client/web/src/utils/role-helper.ts diff --git a/web/src/utils/sw-helper.ts b/client/web/src/utils/sw-helper.ts similarity index 100% rename from web/src/utils/sw-helper.ts rename to client/web/src/utils/sw-helper.ts diff --git a/web/src/utils/url-helper.ts b/client/web/src/utils/url-helper.ts similarity index 100% rename from web/src/utils/url-helper.ts rename to client/web/src/utils/url-helper.ts diff --git a/web/src/utils/user-helper.ts b/client/web/src/utils/user-helper.ts similarity index 100% rename from web/src/utils/user-helper.ts rename to client/web/src/utils/user-helper.ts diff --git a/web/src/utils/window-helper.ts b/client/web/src/utils/window-helper.ts similarity index 100% rename from web/src/utils/window-helper.ts rename to client/web/src/utils/window-helper.ts diff --git a/web/tailchat.d.ts b/client/web/tailchat.d.ts similarity index 100% rename from web/tailchat.d.ts rename to client/web/tailchat.d.ts diff --git a/web/tailwind.config.js b/client/web/tailwind.config.js similarity index 100% rename from web/tailwind.config.js rename to client/web/tailwind.config.js diff --git a/web/test/fileTransformer.js b/client/web/test/fileTransformer.js similarity index 100% rename from web/test/fileTransformer.js rename to client/web/test/fileTransformer.js diff --git a/web/test/setup.js b/client/web/test/setup.js similarity index 100% rename from web/test/setup.js rename to client/web/test/setup.js diff --git a/web/test/utils/lazy.tsx b/client/web/test/utils/lazy.tsx similarity index 100% rename from web/test/utils/lazy.tsx rename to client/web/test/utils/lazy.tsx diff --git a/web/tsconfig.json b/client/web/tsconfig.json similarity index 100% rename from web/tsconfig.json rename to client/web/tsconfig.json diff --git a/web/tsconfig.node.json b/client/web/tsconfig.node.json similarity index 100% rename from web/tsconfig.node.json rename to client/web/tsconfig.node.json diff --git a/web/tsconfig.test.json b/client/web/tsconfig.test.json similarity index 100% rename from web/tsconfig.test.json rename to client/web/tsconfig.test.json diff --git a/web/types/index.d.ts b/client/web/types/index.d.ts similarity index 100% rename from web/types/index.d.ts rename to client/web/types/index.d.ts diff --git a/widget/.gitignore b/client/widget/.gitignore similarity index 100% rename from widget/.gitignore rename to client/widget/.gitignore diff --git a/widget/.yarnrc b/client/widget/.yarnrc similarity index 100% rename from widget/.yarnrc rename to client/widget/.yarnrc diff --git a/widget/demo/.gitignore b/client/widget/demo/.gitignore similarity index 100% rename from widget/demo/.gitignore rename to client/widget/demo/.gitignore diff --git a/widget/demo/index.html b/client/widget/demo/index.html similarity index 100% rename from widget/demo/index.html rename to client/widget/demo/index.html diff --git a/widget/demo/package.json b/client/widget/demo/package.json similarity index 100% rename from widget/demo/package.json rename to client/widget/demo/package.json diff --git a/widget/demo/yarn.lock b/client/widget/demo/yarn.lock similarity index 100% rename from widget/demo/yarn.lock rename to client/widget/demo/yarn.lock diff --git a/widget/package.json b/client/widget/package.json similarity index 100% rename from widget/package.json rename to client/widget/package.json diff --git a/widget/src/index.ts b/client/widget/src/index.ts similarity index 100% rename from widget/src/index.ts rename to client/widget/src/index.ts diff --git a/widget/tsconfig.json b/client/widget/tsconfig.json similarity index 100% rename from widget/tsconfig.json rename to client/widget/tsconfig.json diff --git a/widget/yarn.lock b/client/widget/yarn.lock similarity index 100% rename from widget/yarn.lock rename to client/widget/yarn.lock