gitextract_5ctt_wna/ ├── .dockerignore ├── .editorconfig ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── questions.md │ └── workflows/ │ └── build.yml ├── .gitignore ├── .golangci.yml ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── GO_VERSION ├── LICENSE ├── Makefile ├── README.md ├── SECURITY.md ├── api/ │ ├── application.go │ ├── application_test.go │ ├── client.go │ ├── client_test.go │ ├── errorHandling.go │ ├── errorHandling_test.go │ ├── health.go │ ├── health_test.go │ ├── internalutil.go │ ├── message.go │ ├── message_test.go │ ├── plugin.go │ ├── plugin_test.go │ ├── stream/ │ │ ├── client.go │ │ ├── once.go │ │ ├── once_test.go │ │ ├── stream.go │ │ └── stream_test.go │ ├── tokens.go │ ├── tokens_test.go │ ├── user.go │ └── user_test.go ├── app.go ├── auth/ │ ├── authentication.go │ ├── authentication_test.go │ ├── cors.go │ ├── cors_test.go │ ├── password/ │ │ ├── password.go │ │ └── password_test.go │ ├── token.go │ ├── token_test.go │ ├── util.go │ └── util_test.go ├── config/ │ ├── config.go │ └── config_test.go ├── config.example.yml ├── database/ │ ├── application.go │ ├── application_test.go │ ├── client.go │ ├── client_test.go │ ├── database.go │ ├── database_test.go │ ├── message.go │ ├── message_test.go │ ├── migration_test.go │ ├── ping.go │ ├── ping_test.go │ ├── plugin.go │ ├── plugin_test.go │ ├── user.go │ └── user_test.go ├── docker/ │ └── Dockerfile ├── docs/ │ ├── package.go │ ├── spec.json │ ├── swagger.go │ ├── swagger_test.go │ ├── ui.go │ └── ui_test.go ├── error/ │ ├── handler.go │ ├── handler_test.go │ ├── notfound.go │ └── notfound_test.go ├── fracdex/ │ ├── fracdex.go │ └── fracdex_test.go ├── go.mod ├── go.sum ├── mode/ │ ├── mode.go │ └── mode_test.go ├── model/ │ ├── application.go │ ├── client.go │ ├── error.go │ ├── health.go │ ├── message.go │ ├── paging.go │ ├── pluginconf.go │ ├── user.go │ └── version.go ├── plugin/ │ ├── compat/ │ │ ├── instance.go │ │ ├── plugin.go │ │ ├── plugin_test.go │ │ ├── v1.go │ │ ├── v1_test.go │ │ ├── wrap.go │ │ ├── wrap_test.go │ │ ├── wrap_test_norace.go │ │ └── wrap_test_race.go │ ├── example/ │ │ ├── clock/ │ │ │ └── main.go │ │ ├── echo/ │ │ │ └── echo.go │ │ └── minimal/ │ │ └── main.go │ ├── manager.go │ ├── manager_test.go │ ├── manager_test_norace.go │ ├── manager_test_race.go │ ├── messagehandler.go │ ├── pluginenabled.go │ ├── pluginenabled_test.go │ ├── storagehandler.go │ └── testing/ │ ├── broken/ │ │ ├── cantinstantiate/ │ │ │ └── main.go │ │ ├── malformedconstructor/ │ │ │ └── main.go │ │ ├── noinstance/ │ │ │ └── main.go │ │ ├── nothing/ │ │ │ └── main.go │ │ └── unknowninfo/ │ │ └── main.go │ └── mock/ │ └── mock.go ├── renovate.json ├── router/ │ ├── router.go │ └── router_test.go ├── runner/ │ ├── runner.go │ ├── umask.go │ └── umask_fallback.go ├── test/ │ ├── asserts.go │ ├── asserts_test.go │ ├── assets/ │ │ ├── image-header-with.html │ │ └── text.txt │ ├── auth.go │ ├── auth_test.go │ ├── filepath.go │ ├── filepath_test.go │ ├── testdb/ │ │ ├── database.go │ │ └── database_test.go │ ├── tmpdir.go │ ├── tmpdir_test.go │ ├── token.go │ └── token_test.go └── ui/ ├── .gitignore ├── .prettierrc ├── .yarnrc ├── eslint.config.mjs ├── index.html ├── package.json ├── public/ │ ├── manifest.json │ └── static/ │ └── notification.ogg ├── serve.go ├── src/ │ ├── CurrentUser.ts │ ├── apiAuth.ts │ ├── application/ │ │ ├── AddApplicationDialog.tsx │ │ ├── AppStore.ts │ │ ├── Applications.tsx │ │ └── UpdateApplicationDialog.tsx │ ├── client/ │ │ ├── AddClientDialog.tsx │ │ ├── ClientStore.ts │ │ ├── Clients.tsx │ │ └── UpdateClientDialog.tsx │ ├── common/ │ │ ├── BaseStore.ts │ │ ├── ConfirmDialog.tsx │ │ ├── ConnectionErrorBanner.tsx │ │ ├── Container.tsx │ │ ├── CopyableSecret.tsx │ │ ├── DefaultPage.tsx │ │ ├── LastUsedCell.tsx │ │ ├── LoadingSpinner.tsx │ │ ├── Markdown.tsx │ │ ├── NumberField.tsx │ │ ├── ScrollUpButton.tsx │ │ ├── SettingsDialog.tsx │ │ └── TimeAgoFormatter.ts │ ├── config.ts │ ├── index.tsx │ ├── layout/ │ │ ├── Header.tsx │ │ ├── Layout.tsx │ │ ├── Navigation.tsx │ │ └── theme.ts │ ├── message/ │ │ ├── Message.tsx │ │ ├── Messages.tsx │ │ ├── MessagesStore.ts │ │ ├── PushMessageDialog.tsx │ │ ├── WebSocketStore.ts │ │ └── extras.ts │ ├── plugin/ │ │ ├── PluginDetailView.tsx │ │ ├── PluginStore.ts │ │ └── Plugins.tsx │ ├── react-app-env.d.ts │ ├── reactions.ts │ ├── registerServiceWorker.ts │ ├── snack/ │ │ ├── SnackManager.ts │ │ └── browserNotification.ts │ ├── stores.tsx │ ├── tests/ │ │ ├── application.test.ts │ │ ├── authentication.ts │ │ ├── client.test.ts │ │ ├── message.test.ts │ │ ├── plugin.test.ts │ │ ├── selector.ts │ │ ├── setup.ts │ │ ├── user.test.ts │ │ └── utils.ts │ ├── typedef/ │ │ ├── notifyjs.d.ts │ │ └── react-timeago.d.ts │ ├── types.ts │ └── user/ │ ├── AddEditUserDialog.tsx │ ├── Login.tsx │ ├── Register.tsx │ ├── UserStore.ts │ └── Users.tsx ├── tsconfig.json ├── tsconfig.prod.json ├── tsconfig.test.json ├── vite-env.d.ts ├── vite.config.ts └── vitest.config.js