gitextract_vixwurpk/ ├── .dockerignore ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── feature_request.yml │ └── workflows/ │ ├── backend-tests.yml │ ├── build-canary-image.yml │ ├── demo-deploy.yml │ ├── frontend-tests.yml │ ├── proto-linter.yml │ ├── release.yml │ └── stale.yml ├── .gitignore ├── .golangci.yaml ├── AGENTS.md ├── CLAUDE.md ├── CODEOWNERS ├── LICENSE ├── README.md ├── SECURITY.md ├── go.mod ├── go.sum ├── internal/ │ ├── base/ │ │ ├── resource_name.go │ │ └── resource_name_test.go │ ├── profile/ │ │ └── profile.go │ ├── util/ │ │ ├── util.go │ │ └── util_test.go │ └── version/ │ ├── version.go │ └── version_test.go ├── plugin/ │ ├── cron/ │ │ ├── README.md │ │ ├── chain.go │ │ ├── chain_test.go │ │ ├── constantdelay.go │ │ ├── constantdelay_test.go │ │ ├── cron.go │ │ ├── cron_test.go │ │ ├── logger.go │ │ ├── option.go │ │ ├── option_test.go │ │ ├── parser.go │ │ ├── parser_test.go │ │ ├── spec.go │ │ └── spec_test.go │ ├── email/ │ │ ├── README.md │ │ ├── client.go │ │ ├── client_test.go │ │ ├── config.go │ │ ├── config_test.go │ │ ├── doc.go │ │ ├── email.go │ │ ├── email_test.go │ │ ├── message.go │ │ └── message_test.go │ ├── filter/ │ │ ├── MAINTENANCE.md │ │ ├── README.md │ │ ├── engine.go │ │ ├── helpers.go │ │ ├── ir.go │ │ ├── parser.go │ │ ├── render.go │ │ └── schema.go │ ├── httpgetter/ │ │ ├── html_meta.go │ │ ├── html_meta_test.go │ │ ├── http_getter.go │ │ ├── image.go │ │ └── util.go │ ├── idp/ │ │ ├── idp.go │ │ └── oauth2/ │ │ ├── oauth2.go │ │ └── oauth2_test.go │ ├── markdown/ │ │ ├── ast/ │ │ │ └── tag.go │ │ ├── extensions/ │ │ │ └── tag.go │ │ ├── markdown.go │ │ ├── markdown_test.go │ │ ├── parser/ │ │ │ ├── tag.go │ │ │ └── tag_test.go │ │ └── renderer/ │ │ ├── markdown_renderer.go │ │ └── markdown_renderer_test.go │ ├── scheduler/ │ │ ├── README.md │ │ ├── doc.go │ │ ├── example_test.go │ │ ├── integration_test.go │ │ ├── job.go │ │ ├── job_test.go │ │ ├── middleware.go │ │ ├── middleware_test.go │ │ ├── parser.go │ │ ├── parser_test.go │ │ ├── scheduler.go │ │ └── scheduler_test.go │ ├── storage/ │ │ └── s3/ │ │ └── s3.go │ └── webhook/ │ ├── validate.go │ ├── webhook.go │ └── webhook_test.go ├── proto/ │ ├── README.md │ ├── api/ │ │ └── v1/ │ │ ├── README.md │ │ ├── attachment_service.proto │ │ ├── auth_service.proto │ │ ├── common.proto │ │ ├── idp_service.proto │ │ ├── instance_service.proto │ │ ├── memo_service.proto │ │ ├── shortcut_service.proto │ │ └── user_service.proto │ ├── buf.gen.yaml │ ├── buf.yaml │ ├── gen/ │ │ ├── api/ │ │ │ └── v1/ │ │ │ ├── apiv1connect/ │ │ │ │ ├── attachment_service.connect.go │ │ │ │ ├── auth_service.connect.go │ │ │ │ ├── idp_service.connect.go │ │ │ │ ├── instance_service.connect.go │ │ │ │ ├── memo_service.connect.go │ │ │ │ ├── shortcut_service.connect.go │ │ │ │ └── user_service.connect.go │ │ │ ├── attachment_service.pb.go │ │ │ ├── attachment_service.pb.gw.go │ │ │ ├── attachment_service_grpc.pb.go │ │ │ ├── auth_service.pb.go │ │ │ ├── auth_service.pb.gw.go │ │ │ ├── auth_service_grpc.pb.go │ │ │ ├── common.pb.go │ │ │ ├── idp_service.pb.go │ │ │ ├── idp_service.pb.gw.go │ │ │ ├── idp_service_grpc.pb.go │ │ │ ├── instance_service.pb.go │ │ │ ├── instance_service.pb.gw.go │ │ │ ├── instance_service_grpc.pb.go │ │ │ ├── memo_service.pb.go │ │ │ ├── memo_service.pb.gw.go │ │ │ ├── memo_service_grpc.pb.go │ │ │ ├── shortcut_service.pb.go │ │ │ ├── shortcut_service.pb.gw.go │ │ │ ├── shortcut_service_grpc.pb.go │ │ │ ├── user_service.pb.go │ │ │ ├── user_service.pb.gw.go │ │ │ └── user_service_grpc.pb.go │ │ ├── openapi.yaml │ │ └── store/ │ │ ├── attachment.pb.go │ │ ├── idp.pb.go │ │ ├── inbox.pb.go │ │ ├── instance_setting.pb.go │ │ ├── memo.pb.go │ │ └── user_setting.pb.go │ └── store/ │ ├── attachment.proto │ ├── idp.proto │ ├── inbox.proto │ ├── instance_setting.proto │ ├── memo.proto │ └── user_setting.proto ├── scripts/ │ ├── Dockerfile │ ├── build.sh │ ├── compose.yaml │ ├── entrypoint.sh │ ├── entrypoint_test.sh │ └── install.sh ├── server/ │ ├── auth/ │ │ ├── authenticator.go │ │ ├── context.go │ │ ├── extract.go │ │ ├── token.go │ │ └── token_test.go │ ├── router/ │ │ ├── api/ │ │ │ └── v1/ │ │ │ ├── acl_config.go │ │ │ ├── acl_config_test.go │ │ │ ├── attachment_exif_test.go │ │ │ ├── attachment_service.go │ │ │ ├── auth_service.go │ │ │ ├── auth_service_client_info_test.go │ │ │ ├── common.go │ │ │ ├── connect_handler.go │ │ │ ├── connect_interceptors.go │ │ │ ├── connect_services.go │ │ │ ├── header_carrier.go │ │ │ ├── health_service.go │ │ │ ├── idp_service.go │ │ │ ├── instance_service.go │ │ │ ├── memo_attachment_service.go │ │ │ ├── memo_relation_service.go │ │ │ ├── memo_service.go │ │ │ ├── memo_service_converter.go │ │ │ ├── memo_service_filter.go │ │ │ ├── memo_share_service.go │ │ │ ├── reaction_service.go │ │ │ ├── resource_name.go │ │ │ ├── shortcut_service.go │ │ │ ├── sse_handler.go │ │ │ ├── sse_hub.go │ │ │ ├── sse_hub_test.go │ │ │ ├── test/ │ │ │ │ ├── attachment_service_test.go │ │ │ │ ├── auth_test.go │ │ │ │ ├── idp_service_test.go │ │ │ │ ├── instance_admin_cache_test.go │ │ │ │ ├── instance_service_test.go │ │ │ │ ├── memo_attachment_service_test.go │ │ │ │ ├── memo_relation_service_test.go │ │ │ │ ├── memo_service_test.go │ │ │ │ ├── memo_share_service_test.go │ │ │ │ ├── reaction_service_test.go │ │ │ │ ├── shortcut_service_test.go │ │ │ │ ├── sse_handler_test.go │ │ │ │ ├── test_helper.go │ │ │ │ ├── user_notification_test.go │ │ │ │ ├── user_service_registration_test.go │ │ │ │ └── user_service_stats_test.go │ │ │ ├── user_service.go │ │ │ ├── user_service_stats.go │ │ │ └── v1.go │ │ ├── fileserver/ │ │ │ ├── README.md │ │ │ ├── fileserver.go │ │ │ └── fileserver_test.go │ │ ├── frontend/ │ │ │ └── frontend.go │ │ ├── mcp/ │ │ │ ├── README.md │ │ │ ├── mcp.go │ │ │ ├── prompts.go │ │ │ ├── resources_memo.go │ │ │ ├── tools_attachment.go │ │ │ ├── tools_memo.go │ │ │ ├── tools_reaction.go │ │ │ ├── tools_relation.go │ │ │ └── tools_tag.go │ │ └── rss/ │ │ └── rss.go │ ├── runner/ │ │ ├── memopayload/ │ │ │ └── runner.go │ │ └── s3presign/ │ │ └── runner.go │ └── server.go ├── store/ │ ├── attachment.go │ ├── cache/ │ │ ├── cache.go │ │ └── cache_test.go │ ├── cache.go │ ├── common.go │ ├── db/ │ │ ├── db.go │ │ ├── mysql/ │ │ │ ├── attachment.go │ │ │ ├── common.go │ │ │ ├── idp.go │ │ │ ├── inbox.go │ │ │ ├── instance_setting.go │ │ │ ├── memo.go │ │ │ ├── memo_relation.go │ │ │ ├── memo_share.go │ │ │ ├── mysql.go │ │ │ ├── reaction.go │ │ │ ├── user.go │ │ │ └── user_setting.go │ │ ├── postgres/ │ │ │ ├── attachment.go │ │ │ ├── common.go │ │ │ ├── idp.go │ │ │ ├── inbox.go │ │ │ ├── instance_setting.go │ │ │ ├── memo.go │ │ │ ├── memo_relation.go │ │ │ ├── memo_share.go │ │ │ ├── postgres.go │ │ │ ├── reaction.go │ │ │ ├── user.go │ │ │ ├── user_setting.go │ │ │ └── user_setting_test.go │ │ └── sqlite/ │ │ ├── attachment.go │ │ ├── common.go │ │ ├── functions.go │ │ ├── idp.go │ │ ├── inbox.go │ │ ├── instance_setting.go │ │ ├── memo.go │ │ ├── memo_relation.go │ │ ├── memo_share.go │ │ ├── reaction.go │ │ ├── sqlite.go │ │ ├── user.go │ │ └── user_setting.go │ ├── driver.go │ ├── idp.go │ ├── inbox.go │ ├── instance_setting.go │ ├── memo.go │ ├── memo_relation.go │ ├── memo_share.go │ ├── migration/ │ │ ├── mysql/ │ │ │ ├── 0.17/ │ │ │ │ ├── 00__inbox.sql │ │ │ │ └── 01__delete_activity.sql │ │ │ ├── 0.18/ │ │ │ │ ├── 00__extend_text.sql │ │ │ │ ├── 01__webhook.sql │ │ │ │ └── 02__user_setting.sql │ │ │ ├── 0.19/ │ │ │ │ └── 00__add_resource_name.sql │ │ │ ├── 0.20/ │ │ │ │ └── 00__reaction.sql │ │ │ ├── 0.21/ │ │ │ │ ├── 00__user_description.sql │ │ │ │ └── 01__rename_uid.sql │ │ │ ├── 0.22/ │ │ │ │ ├── 00__resource_storage_type.sql │ │ │ │ ├── 01__memo_tags.sql │ │ │ │ ├── 02__memo_payload.sql │ │ │ │ └── 03__drop_tag.sql │ │ │ ├── 0.23/ │ │ │ │ └── 00__reactions.sql │ │ │ ├── 0.24/ │ │ │ │ ├── 00__memo.sql │ │ │ │ ├── 01__memo_pinned.sql │ │ │ │ └── 02__s3_reference_length.sql │ │ │ ├── 0.25/ │ │ │ │ └── 00__remove_webhook.sql │ │ │ ├── 0.26/ │ │ │ │ ├── 00__rename_resource_to_attachment.sql │ │ │ │ ├── 01__drop_memo_organizer.sql │ │ │ │ └── 02__migrate_host_to_admin.sql │ │ │ ├── 0.27/ │ │ │ │ ├── 00__migrate_storage_setting.sql │ │ │ │ ├── 01__add_idp_uid.sql │ │ │ │ ├── 02__migrate_inbox_message_payload.sql │ │ │ │ ├── 03__drop_activity.sql │ │ │ │ └── 04__memo_share.sql │ │ │ └── LATEST.sql │ │ ├── postgres/ │ │ │ ├── 0.19/ │ │ │ │ └── 00__add_resource_name.sql │ │ │ ├── 0.20/ │ │ │ │ └── 00__reaction.sql │ │ │ ├── 0.21/ │ │ │ │ ├── 00__user_description.sql │ │ │ │ └── 01__rename_uid.sql │ │ │ ├── 0.22/ │ │ │ │ ├── 00__resource_storage_type.sql │ │ │ │ ├── 01__memo_tags.sql │ │ │ │ ├── 02__memo_payload.sql │ │ │ │ └── 03__drop_tag.sql │ │ │ ├── 0.23/ │ │ │ │ └── 00__reactions.sql │ │ │ ├── 0.24/ │ │ │ │ ├── 00__memo.sql │ │ │ │ └── 01__memo_pinned.sql │ │ │ ├── 0.25/ │ │ │ │ └── 00__remove_webhook.sql │ │ │ ├── 0.26/ │ │ │ │ ├── 00__rename_resource_to_attachment.sql │ │ │ │ ├── 01__drop_memo_organizer.sql │ │ │ │ └── 02__migrate_host_to_admin.sql │ │ │ ├── 0.27/ │ │ │ │ ├── 00__migrate_storage_setting.sql │ │ │ │ ├── 01__add_idp_uid.sql │ │ │ │ ├── 02__migrate_inbox_message_payload.sql │ │ │ │ ├── 03__drop_activity.sql │ │ │ │ └── 04__memo_share.sql │ │ │ └── LATEST.sql │ │ └── sqlite/ │ │ ├── 0.10/ │ │ │ └── 00__activity.sql │ │ ├── 0.11/ │ │ │ ├── 00__user_avatar.sql │ │ │ ├── 01__idp.sql │ │ │ └── 02__storage.sql │ │ ├── 0.12/ │ │ │ ├── 00__user_setting.sql │ │ │ ├── 01__system_setting.sql │ │ │ ├── 03__resource_internal_path.sql │ │ │ └── 04__resource_public_id.sql │ │ ├── 0.13/ │ │ │ ├── 00__memo_relation.sql │ │ │ └── 01__remove_memo_organizer_id.sql │ │ ├── 0.14/ │ │ │ ├── 00__drop_resource_public_id.sql │ │ │ └── 01__create_indexes.sql │ │ ├── 0.15/ │ │ │ └── 00__drop_user_open_id.sql │ │ ├── 0.16/ │ │ │ ├── 00__add_memo_id_to_resource.sql │ │ │ └── 01__drop_shortcut_table.sql │ │ ├── 0.17/ │ │ │ ├── 00__inbox.sql │ │ │ └── 01__delete_activities.sql │ │ ├── 0.18/ │ │ │ ├── 00__webhook.sql │ │ │ └── 01__user_setting.sql │ │ ├── 0.19/ │ │ │ └── 00__add_resource_name.sql │ │ ├── 0.2/ │ │ │ ├── 00__user_role.sql │ │ │ └── 01__memo_visibility.sql │ │ ├── 0.20/ │ │ │ └── 00__reaction.sql │ │ ├── 0.21/ │ │ │ ├── 00__user_description.sql │ │ │ └── 01__rename_uid.sql │ │ ├── 0.22/ │ │ │ ├── 00__resource_storage_type.sql │ │ │ ├── 01__memo_tags.sql │ │ │ ├── 02__memo_payload.sql │ │ │ └── 03__drop_tag.sql │ │ ├── 0.23/ │ │ │ └── 00__reactions.sql │ │ ├── 0.24/ │ │ │ ├── 00__memo.sql │ │ │ └── 01__memo_pinned.sql │ │ ├── 0.25/ │ │ │ └── 00__remove_webhook.sql │ │ ├── 0.26/ │ │ │ ├── 00__rename_resource_to_attachment.sql │ │ │ ├── 01__drop_memo_organizer.sql │ │ │ ├── 02__drop_indexes.sql │ │ │ ├── 03__alter_user_role.sql │ │ │ └── 04__migrate_host_to_admin.sql │ │ ├── 0.27/ │ │ │ ├── 00__migrate_storage_setting.sql │ │ │ ├── 01__add_idp_uid.sql │ │ │ ├── 02__migrate_inbox_message_payload.sql │ │ │ ├── 03__drop_activity.sql │ │ │ └── 04__memo_share.sql │ │ ├── 0.3/ │ │ │ └── 00__memo_visibility_protected.sql │ │ ├── 0.4/ │ │ │ └── 00__user_setting.sql │ │ ├── 0.5/ │ │ │ ├── 00__regenerate_foreign_keys.sql │ │ │ ├── 01__memo_resource.sql │ │ │ ├── 02__system_setting.sql │ │ │ └── 03__resource_extermal_link.sql │ │ ├── 0.6/ │ │ │ └── 00__recreate_triggers.sql │ │ ├── 0.7/ │ │ │ ├── 00__remove_fk.sql │ │ │ └── 01__remove_triggers.sql │ │ ├── 0.8/ │ │ │ ├── 00__migration_history.sql │ │ │ └── 01__user_username.sql │ │ ├── 0.9/ │ │ │ └── 00__tag.sql │ │ └── LATEST.sql │ ├── migrator.go │ ├── reaction.go │ ├── seed/ │ │ ├── DEMO_DATA_GUIDE.md │ │ └── sqlite/ │ │ └── 01__dump.sql │ ├── store.go │ ├── test/ │ │ ├── README.md │ │ ├── attachment_filter_test.go │ │ ├── attachment_test.go │ │ ├── containers.go │ │ ├── filter_helpers_test.go │ │ ├── idp_test.go │ │ ├── inbox_test.go │ │ ├── instance_setting_test.go │ │ ├── main_test.go │ │ ├── memo_filter_test.go │ │ ├── memo_relation_test.go │ │ ├── memo_test.go │ │ ├── migrator_test.go │ │ ├── reaction_test.go │ │ ├── store.go │ │ ├── user_setting_test.go │ │ └── user_test.go │ ├── user.go │ └── user_setting.go └── web/ ├── .gitignore ├── biome.json ├── components.json ├── docs/ │ └── auth-architecture.md ├── index.html ├── package.json ├── public/ │ └── site.webmanifest ├── src/ │ ├── App.tsx │ ├── auth-state.ts │ ├── components/ │ │ ├── ActivityCalendar/ │ │ │ ├── CalendarCell.tsx │ │ │ ├── MonthCalendar.tsx │ │ │ ├── YearCalendar.tsx │ │ │ ├── constants.ts │ │ │ ├── hooks.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ ├── useCalendar.ts │ │ │ └── utils.ts │ │ ├── AttachmentIcon.tsx │ │ ├── AuthFooter.tsx │ │ ├── ChangeMemberPasswordDialog.tsx │ │ ├── ConfirmDialog/ │ │ │ ├── README.md │ │ │ └── index.tsx │ │ ├── CreateAccessTokenDialog.tsx │ │ ├── CreateIdentityProviderDialog.tsx │ │ ├── CreateShortcutDialog.tsx │ │ ├── CreateUserDialog.tsx │ │ ├── CreateWebhookDialog.tsx │ │ ├── DateTimeInput.tsx │ │ ├── Empty.tsx │ │ ├── ErrorBoundary.tsx │ │ ├── Inbox/ │ │ │ └── MemoCommentMessage.tsx │ │ ├── LearnMore.tsx │ │ ├── LocaleSelect.tsx │ │ ├── MemoActionMenu/ │ │ │ ├── MemoActionMenu.tsx │ │ │ ├── hooks.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── MemoAttachment.tsx │ │ ├── MemoContent/ │ │ │ ├── CodeBlock.tsx │ │ │ ├── ConditionalComponent.tsx │ │ │ ├── MermaidBlock.tsx │ │ │ ├── Table.tsx │ │ │ ├── Tag.tsx │ │ │ ├── TaskListItem.tsx │ │ │ ├── constants.ts │ │ │ ├── hooks.ts │ │ │ ├── index.tsx │ │ │ ├── markdown/ │ │ │ │ ├── Blockquote.tsx │ │ │ │ ├── Heading.tsx │ │ │ │ ├── HorizontalRule.tsx │ │ │ │ ├── Image.tsx │ │ │ │ ├── InlineCode.tsx │ │ │ │ ├── Link.tsx │ │ │ │ ├── List.tsx │ │ │ │ ├── Paragraph.tsx │ │ │ │ ├── README.md │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── MemoDetailSidebar/ │ │ │ ├── MemoDetailSidebar.tsx │ │ │ ├── MemoDetailSidebarDrawer.tsx │ │ │ └── index.ts │ │ ├── MemoDisplaySettingMenu.tsx │ │ ├── MemoEditor/ │ │ │ ├── Editor/ │ │ │ │ ├── SlashCommands.tsx │ │ │ │ ├── SuggestionsPopup.tsx │ │ │ │ ├── TagSuggestions.tsx │ │ │ │ ├── commands.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── shortcuts.ts │ │ │ │ ├── useListCompletion.ts │ │ │ │ └── useSuggestions.ts │ │ │ ├── README.md │ │ │ ├── Toolbar/ │ │ │ │ ├── InsertMenu.tsx │ │ │ │ ├── VisibilitySelector.tsx │ │ │ │ └── index.ts │ │ │ ├── components/ │ │ │ │ ├── AttachmentList.tsx │ │ │ │ ├── EditorContent.tsx │ │ │ │ ├── EditorMetadata.tsx │ │ │ │ ├── EditorToolbar.tsx │ │ │ │ ├── FocusModeOverlay.tsx │ │ │ │ ├── LinkMemoDialog.tsx │ │ │ │ ├── LocationDialog.tsx │ │ │ │ ├── LocationDisplay.tsx │ │ │ │ ├── RelationList.tsx │ │ │ │ ├── TimestampPopover.tsx │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ ├── useAutoSave.ts │ │ │ │ ├── useBlobUrls.ts │ │ │ │ ├── useDragAndDrop.ts │ │ │ │ ├── useFileUpload.ts │ │ │ │ ├── useFocusMode.ts │ │ │ │ ├── useKeyboard.ts │ │ │ │ ├── useLinkMemo.ts │ │ │ │ ├── useLocation.ts │ │ │ │ └── useMemoInit.ts │ │ │ ├── index.tsx │ │ │ ├── services/ │ │ │ │ ├── cacheService.ts │ │ │ │ ├── errorService.ts │ │ │ │ ├── index.ts │ │ │ │ ├── memoService.ts │ │ │ │ ├── uploadService.ts │ │ │ │ └── validationService.ts │ │ │ ├── state/ │ │ │ │ ├── actions.ts │ │ │ │ ├── context.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── reducer.ts │ │ │ │ └── types.ts │ │ │ └── types/ │ │ │ ├── attachment.ts │ │ │ ├── components.ts │ │ │ ├── context.ts │ │ │ ├── index.ts │ │ │ └── insert-menu.ts │ │ ├── MemoExplorer/ │ │ │ ├── MemoExplorer.tsx │ │ │ ├── MemoExplorerDrawer.tsx │ │ │ ├── ShortcutsSection.tsx │ │ │ ├── TagsSection.tsx │ │ │ └── index.ts │ │ ├── MemoFilters.tsx │ │ ├── MemoPreview/ │ │ │ ├── MemoPreview.tsx │ │ │ └── index.ts │ │ ├── MemoReactionListView/ │ │ │ ├── MemoReactionListView.tsx │ │ │ ├── ReactionSelector.tsx │ │ │ ├── ReactionView.tsx │ │ │ ├── hooks.ts │ │ │ └── index.ts │ │ ├── MemoRelationForceGraph/ │ │ │ ├── MemoRelationForceGraph.tsx │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── MemoResource.tsx │ │ ├── MemoSharePanel.tsx │ │ ├── MemoView/ │ │ │ ├── MemoView.tsx │ │ │ ├── MemoViewContext.tsx │ │ │ ├── components/ │ │ │ │ ├── MemoBody.tsx │ │ │ │ ├── MemoCommentListView.tsx │ │ │ │ ├── MemoHeader.tsx │ │ │ │ ├── MemoSnippetLink.tsx │ │ │ │ ├── index.ts │ │ │ │ └── metadata/ │ │ │ │ ├── AttachmentCard.tsx │ │ │ │ ├── AttachmentList.tsx │ │ │ │ ├── LocationDisplay.tsx │ │ │ │ ├── RelationCard.tsx │ │ │ │ ├── RelationList.tsx │ │ │ │ ├── SectionHeader.tsx │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── hooks/ │ │ │ │ ├── index.ts │ │ │ │ ├── useImagePreview.ts │ │ │ │ ├── useMemoActions.ts │ │ │ │ └── useMemoHandlers.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── MemosLogo.tsx │ │ ├── MobileHeader.tsx │ │ ├── Navigation.tsx │ │ ├── NavigationDrawer.tsx │ │ ├── PagedMemoList/ │ │ │ ├── PagedMemoList.tsx │ │ │ └── index.ts │ │ ├── PasswordSignInForm.tsx │ │ ├── PreviewImageDialog.tsx │ │ ├── RequiredBadge.tsx │ │ ├── SearchBar.tsx │ │ ├── Settings/ │ │ │ ├── AccessTokenSection.tsx │ │ │ ├── InstanceSection.tsx │ │ │ ├── MemberSection.tsx │ │ │ ├── MemoRelatedSettings.tsx │ │ │ ├── MyAccountSection.tsx │ │ │ ├── PreferencesSection.tsx │ │ │ ├── SSOSection.tsx │ │ │ ├── SectionMenuItem.tsx │ │ │ ├── SettingGroup.tsx │ │ │ ├── SettingRow.tsx │ │ │ ├── SettingSection.tsx │ │ │ ├── SettingTable.tsx │ │ │ ├── StorageSection.tsx │ │ │ └── WebhookSection.tsx │ │ ├── Skeleton.tsx │ │ ├── StatisticsView/ │ │ │ ├── MonthNavigator.tsx │ │ │ ├── StatisticsView.tsx │ │ │ └── index.ts │ │ ├── TagTree.tsx │ │ ├── ThemeSelect.tsx │ │ ├── UpdateAccountDialog.tsx │ │ ├── UpdateCustomizedProfileDialog.tsx │ │ ├── UserAvatar.tsx │ │ ├── UserMemoMap/ │ │ │ ├── UserMemoMap.tsx │ │ │ └── index.ts │ │ ├── UserMenu.tsx │ │ ├── VisibilityIcon.tsx │ │ ├── kit/ │ │ │ ├── OverflowTip.tsx │ │ │ └── SquareDiv.tsx │ │ ├── map/ │ │ │ ├── LocationPicker.tsx │ │ │ ├── index.ts │ │ │ ├── map-utils.tsx │ │ │ └── useReverseGeocoding.ts │ │ └── ui/ │ │ ├── badge.tsx │ │ ├── button.tsx │ │ ├── checkbox.tsx │ │ ├── dialog.tsx │ │ ├── dropdown-menu.tsx │ │ ├── input.tsx │ │ ├── label.tsx │ │ ├── popover.tsx │ │ ├── radio-group.tsx │ │ ├── select.tsx │ │ ├── separator.tsx │ │ ├── sheet.tsx │ │ ├── switch.tsx │ │ ├── textarea.tsx │ │ ├── tooltip.tsx │ │ └── visually-hidden.tsx │ ├── connect.ts │ ├── contexts/ │ │ ├── AuthContext.tsx │ │ ├── InstanceContext.tsx │ │ ├── MemoFilterContext.tsx │ │ └── ViewContext.tsx │ ├── helpers/ │ │ ├── consts.ts │ │ ├── resource-names.ts │ │ └── utils.ts │ ├── hooks/ │ │ ├── index.ts │ │ ├── useAsyncEffect.ts │ │ ├── useAttachmentQueries.ts │ │ ├── useCurrentUser.ts │ │ ├── useDateFilterNavigation.ts │ │ ├── useDialog.ts │ │ ├── useFilteredMemoStats.ts │ │ ├── useInstanceQueries.ts │ │ ├── useLiveMemoRefresh.ts │ │ ├── useLoading.ts │ │ ├── useMediaQuery.ts │ │ ├── useMemoFilters.ts │ │ ├── useMemoQueries.ts │ │ ├── useMemoShareQueries.ts │ │ ├── useMemoSorting.ts │ │ ├── useNavigateTo.ts │ │ ├── useTokenRefreshOnFocus.ts │ │ ├── useUserLocale.ts │ │ ├── useUserQueries.ts │ │ └── useUserTheme.ts │ ├── i18n.ts │ ├── index.css │ ├── layouts/ │ │ ├── MainLayout.tsx │ │ └── RootLayout.tsx │ ├── lib/ │ │ ├── calendar-utils.ts │ │ ├── error.ts │ │ ├── query-client.ts │ │ └── utils.ts │ ├── locales/ │ │ ├── ar.json │ │ ├── ca.json │ │ ├── cs.json │ │ ├── de.json │ │ ├── en-GB.json │ │ ├── en.json │ │ ├── es.json │ │ ├── fa.json │ │ ├── fr.json │ │ ├── gl.json │ │ ├── hi.json │ │ ├── hr.json │ │ ├── hu.json │ │ ├── id.json │ │ ├── it.json │ │ ├── ja.json │ │ ├── ka-GE.json │ │ ├── ko.json │ │ ├── mr.json │ │ ├── nb.json │ │ ├── nl.json │ │ ├── pl.json │ │ ├── pt-BR.json │ │ ├── pt-PT.json │ │ ├── ru.json │ │ ├── sl.json │ │ ├── sv.json │ │ ├── th.json │ │ ├── tr.json │ │ ├── uk.json │ │ ├── vi.json │ │ ├── zh-Hans.json │ │ └── zh-Hant.json │ ├── main.tsx │ ├── pages/ │ │ ├── AdminSignIn.tsx │ │ ├── Archived.tsx │ │ ├── Attachments.tsx │ │ ├── AuthCallback.tsx │ │ ├── Explore.tsx │ │ ├── Home.tsx │ │ ├── Inboxes.tsx │ │ ├── MemoDetail.tsx │ │ ├── NotFound.tsx │ │ ├── PermissionDenied.tsx │ │ ├── Setting.tsx │ │ ├── SharedMemo.tsx │ │ ├── SignIn.tsx │ │ ├── SignUp.tsx │ │ └── UserProfile.tsx │ ├── router/ │ │ ├── index.tsx │ │ └── routes.ts │ ├── themes/ │ │ ├── COLOR_GUIDE.md │ │ ├── default-dark.css │ │ ├── default.css │ │ └── paper.css │ ├── types/ │ │ ├── common.d.ts │ │ ├── common.ts │ │ ├── i18n.d.ts │ │ ├── markdown.ts │ │ ├── modules/ │ │ │ └── setting.d.ts │ │ ├── proto/ │ │ │ ├── api/ │ │ │ │ └── v1/ │ │ │ │ ├── attachment_service_pb.ts │ │ │ │ ├── auth_service_pb.ts │ │ │ │ ├── common_pb.ts │ │ │ │ ├── idp_service_pb.ts │ │ │ │ ├── instance_service_pb.ts │ │ │ │ ├── memo_service_pb.ts │ │ │ │ ├── shortcut_service_pb.ts │ │ │ │ └── user_service_pb.ts │ │ │ └── google/ │ │ │ ├── api/ │ │ │ │ ├── annotations_pb.ts │ │ │ │ ├── client_pb.ts │ │ │ │ ├── field_behavior_pb.ts │ │ │ │ ├── http_pb.ts │ │ │ │ ├── launch_stage_pb.ts │ │ │ │ └── resource_pb.ts │ │ │ └── type/ │ │ │ └── color_pb.ts │ │ ├── statistics.ts │ │ └── view.d.ts │ └── utils/ │ ├── attachment.ts │ ├── auth-redirect.ts │ ├── format.ts │ ├── i18n.ts │ ├── markdown-list-detection.ts │ ├── markdown-manipulation.ts │ ├── memo.ts │ ├── oauth.ts │ ├── remark-plugins/ │ │ ├── remark-disable-setext.ts │ │ ├── remark-preserve-type.ts │ │ └── remark-tag.ts │ ├── theme.ts │ ├── user.ts │ └── uuid.ts ├── tsconfig.json └── vite.config.mts