gitextract_kw46j47p/ ├── .github/ │ └── workflows/ │ ├── alpha-release.yml │ ├── mirror-to-cnb.yml │ └── release.yml ├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── cmd/ │ ├── bootstrap.go │ ├── gorm_gen/ │ │ └── gen.go │ ├── mfmt/ │ │ └── main.go │ ├── model_gen/ │ │ └── gen.go │ ├── reset_password.go │ ├── root.go │ ├── run.go │ ├── run_server.go │ ├── upgrade.go │ └── version.go ├── config/ │ └── config.yaml ├── docker/ │ ├── Dockerfile │ ├── docker-compose.yaml │ ├── docker_image_clean.sh │ ├── docker_redeploy.sh │ └── entrypoint.sh ├── docs/ │ ├── API-EXTENSIONS.md │ ├── CHANGELOG.en.md │ ├── CHANGELOG.ja.md │ ├── CHANGELOG.ko.md │ ├── CHANGELOG.zh-CN.md │ ├── CHANGELOG.zh-TW.md │ ├── CHANGELOG_GUIDELINE.md │ ├── PR-DESCRIPTION.md │ ├── README.ja.md │ ├── README.ko.md │ ├── README.zh-CN.md │ ├── README.zh-TW.md │ ├── REST_API.md │ ├── Support.csv │ ├── Support.en.json │ ├── Support.en.md │ ├── Support.ja.json │ ├── Support.ja.md │ ├── Support.ko.json │ ├── Support.ko.md │ ├── Support.zh-CN.json │ ├── Support.zh-CN.md │ ├── Support.zh-TW.json │ ├── Support.zh-TW.md │ ├── SyncProtocol.md │ ├── admin_config_api.md │ ├── docs.go │ ├── skills/ │ │ └── fns-mcp/ │ │ ├── SKILL.md │ │ └── configs/ │ │ ├── cherry-studio.md │ │ ├── hermes.yaml │ │ └── openclaw.json │ ├── swagger.json │ ├── swagger.yaml │ ├── test_ws_debug.html │ ├── websocket_integration.md │ ├── ws_api.md │ └── ws_setting_clear_api.md ├── frontend/ │ ├── assets/ │ │ ├── alert-dialog-CfMssux5.js │ │ ├── alert-dialog-CfMssux5.js.br │ │ ├── auth-form-BjZ9qVzL.js │ │ ├── auth-form-BjZ9qVzL.js.br │ │ ├── badge-C63ATniC.js │ │ ├── badge-C63ATniC.js.br │ │ ├── canvas-viewer-Bt8OKmt9.css │ │ ├── canvas-viewer-Bt8OKmt9.css.br │ │ ├── canvas-viewer-Cxwbo1vR.js │ │ ├── canvas-viewer-Cxwbo1vR.js.br │ │ ├── checkbox-DhTHgmeh.js │ │ ├── checkbox-DhTHgmeh.js.br │ │ ├── circle-alert-EFzISefA.js │ │ ├── circle-alert-EFzISefA.js.br │ │ ├── clock-C9LPHszx.js │ │ ├── clock-C9LPHszx.js.br │ │ ├── copy-CEhXannp.js │ │ ├── copy-CEhXannp.js.br │ │ ├── database-eyf5nvY6.js │ │ ├── database-eyf5nvY6.js.br │ │ ├── download-CKtDCbjj.js │ │ ├── download-CKtDCbjj.js.br │ │ ├── en-vU35wTjd.js │ │ ├── en-vU35wTjd.js.br │ │ ├── eye-DrvrOb4o.js │ │ ├── eye-DrvrOb4o.js.br │ │ ├── file-manager-Bz0QGSbU.js │ │ ├── file-manager-Bz0QGSbU.js.br │ │ ├── file-type-DbD_pFnN.js │ │ ├── file-type-DbD_pFnN.js.br │ │ ├── font-loader-B-ynJ_1p.css │ │ ├── font-loader-B-ynJ_1p.css.br │ │ ├── font-loader-CIrh3KnA.js │ │ ├── font-loader-CIrh3KnA.js.br │ │ ├── format-CdHm7RWL.js │ │ ├── format-CdHm7RWL.js.br │ │ ├── git-automation-tBJ0Wppw.js │ │ ├── git-automation-tBJ0Wppw.js.br │ │ ├── git-branch-B1vNHBXG.js │ │ ├── git-branch-B1vNHBXG.js.br │ │ ├── github-Bzk-4SPC.js │ │ ├── github-Bzk-4SPC.js.br │ │ ├── hard-drive-Dw58lXyp.js │ │ ├── hard-drive-Dw58lXyp.js.br │ │ ├── history-BseqF3eb.js │ │ ├── history-BseqF3eb.js.br │ │ ├── image-BFJJNQpe.js │ │ ├── image-BFJJNQpe.js.br │ │ ├── index-JfsWWBj_.js │ │ ├── index-JfsWWBj_.js.br │ │ ├── ja-Q5acyAjl.js │ │ ├── ja-Q5acyAjl.js.br │ │ ├── ko-CMKMFQrR.js │ │ ├── ko-CMKMFQrR.js.br │ │ ├── main-BIi-kGYY.js │ │ ├── main-BIi-kGYY.js.br │ │ ├── markdown-editor-CX5kQlgI.js │ │ ├── markdown-editor-CX5kQlgI.js.br │ │ ├── markdown-editor-DMUawZD_.css │ │ ├── markdown-editor-DMUawZD_.css.br │ │ ├── monitor-BGNS5Y9j.js │ │ ├── monitor-BGNS5Y9j.js.br │ │ ├── note-handle-IK8dQjtF.js │ │ ├── note-handle-IK8dQjtF.js.br │ │ ├── note-manager-DjJcxkCE.js │ │ ├── note-manager-DjJcxkCE.js.br │ │ ├── pencil-DqQhr35g.js │ │ ├── pencil-DqQhr35g.js.br │ │ ├── plus-BBfuNxDX.js │ │ ├── plus-BBfuNxDX.js.br │ │ ├── refresh-cw-BxIJAPy3.js │ │ ├── refresh-cw-BxIJAPy3.js.br │ │ ├── search-DdihTHF8.js │ │ ├── search-DdihTHF8.js.br │ │ ├── select-CJF_alSt.js │ │ ├── select-CJF_alSt.js.br │ │ ├── server-DzJVVqse.js │ │ ├── server-DzJVVqse.js.br │ │ ├── setting-manager-DaP9o-yD.js │ │ ├── setting-manager-DaP9o-yD.js.br │ │ ├── share-2-BVJjAadJ.js │ │ ├── share-2-BVJjAadJ.js.br │ │ ├── share-CN7oeKGv.js │ │ ├── share-CN7oeKGv.js.br │ │ ├── shield-check-CH_gKEpx.js │ │ ├── shield-check-CH_gKEpx.js.br │ │ ├── sync-backup-Bp7n2yHp.js │ │ ├── sync-backup-Bp7n2yHp.js.br │ │ ├── sync-log-manager-Zjq-lA99.js │ │ ├── sync-log-manager-Zjq-lA99.js.br │ │ ├── system-settings-DSUsRYMo.js │ │ ├── system-settings-DSUsRYMo.js.br │ │ ├── table-D9wbHMTA.js │ │ ├── table-D9wbHMTA.js.br │ │ ├── text-cursor-input-Bphfsfyn.js │ │ ├── text-cursor-input-Bphfsfyn.js.br │ │ ├── tooltip-Dr-qRlmI.js │ │ ├── tooltip-Dr-qRlmI.js.br │ │ ├── trash-2-ad7PiUnC.js │ │ ├── trash-2-ad7PiUnC.js.br │ │ ├── vault-list-BzYzvdPK.js │ │ ├── vault-list-BzYzvdPK.js.br │ │ ├── zap-CLLhzk_y.js │ │ ├── zap-CLLhzk_y.js.br │ │ ├── zh-CN-BZhLE8JW.js │ │ ├── zh-CN-BZhLE8JW.js.br │ │ ├── zh-TW-DGtNjFz9.js │ │ ├── zh-TW-DGtNjFz9.js.br │ │ ├── zod-B54Zg8Xp.js │ │ └── zod-B54Zg8Xp.js.br │ ├── index.html │ ├── index.html.br │ ├── share.html │ ├── share.html.br │ └── static/ │ ├── fonts/ │ │ ├── local.css │ │ ├── local.css.br │ │ ├── remote.css │ │ └── remote.css.br │ └── images/ │ ├── icon-black.svg.br │ ├── icon.svg.br │ ├── site.svg.br │ └── site.webmanifest ├── go.mod ├── go.sum ├── internal/ │ ├── app/ │ │ ├── app.go │ │ ├── config.go │ │ ├── infra.go │ │ ├── repos.go │ │ ├── restart_linux.go │ │ ├── restart_unix.go │ │ ├── restart_windows.go │ │ ├── services.go │ │ ├── testing.go │ │ └── version.go │ ├── config/ │ │ ├── app.go │ │ ├── database.go │ │ ├── git.go │ │ ├── log.go │ │ ├── security.go │ │ ├── server.go │ │ ├── short_link.go │ │ ├── storage.go │ │ ├── tracer.go │ │ ├── tunnel.go │ │ ├── user.go │ │ └── webgui.go │ ├── dao/ │ │ ├── backup_repository.go │ │ ├── dao.go │ │ ├── dao_helper.go │ │ ├── file_repository.go │ │ ├── folder_repository.go │ │ ├── git_sync_repository.go │ │ ├── note_fts_repository.go │ │ ├── note_history_repository.go │ │ ├── note_link_repository.go │ │ ├── note_repository.go │ │ ├── setting_repository.go │ │ ├── storage_repository.go │ │ ├── sync_log_repository.go │ │ ├── user_repository.go │ │ ├── user_share_repository.go │ │ └── vault_repository.go │ ├── domain/ │ │ ├── domain_backup.go │ │ ├── domain_file.go │ │ ├── domain_folder.go │ │ ├── domain_git_sync.go │ │ ├── domain_note.go │ │ ├── domain_note_fts.go │ │ ├── domain_note_history.go │ │ ├── domain_note_link.go │ │ ├── domain_setting.go │ │ ├── domain_storage.go │ │ ├── domain_sync_log.go │ │ ├── domain_user.go │ │ ├── domain_user_share.go │ │ ├── domain_vault.go │ │ └── mocks/ │ │ ├── mock_backup_repository.go │ │ ├── mock_file_repository.go │ │ ├── mock_folder_repository.go │ │ ├── mock_git_sync_repository.go │ │ ├── mock_note_fts_repository.go │ │ ├── mock_note_history_repository.go │ │ ├── mock_note_link_repository.go │ │ ├── mock_note_repository.go │ │ ├── mock_setting_repository.go │ │ ├── mock_storage_repository.go │ │ ├── mock_sync_log_repository.go │ │ ├── mock_user_repository.go │ │ ├── mock_user_share_repository.go │ │ └── mock_vault_repository.go │ ├── dto/ │ │ ├── admin_dto.go │ │ ├── app_dto.go │ │ ├── backup.go │ │ ├── conflict_dto.go │ │ ├── file_dto.go │ │ ├── file_dto_ws.go │ │ ├── folder_dto.go │ │ ├── folder_dto_ws.go │ │ ├── git_sync_dto.go │ │ ├── note_dto.go │ │ ├── note_dto_ws.go │ │ ├── setting_dto.go │ │ ├── setting_dto_ws.go │ │ ├── share_dto.go │ │ ├── storage_dto.go │ │ ├── sync_log_dto.go │ │ ├── user_dto.go │ │ ├── vault_dto.go │ │ └── ws_dto.go │ ├── middleware/ │ │ ├── 404nofound.go │ │ ├── access_log.go │ │ ├── app_info.go │ │ ├── context_timeout.go │ │ ├── cors.go │ │ ├── lang.go │ │ ├── limiter.go │ │ ├── proxy.go │ │ ├── recovery.go │ │ ├── share_auth_token.go │ │ ├── simple_auth_token.go │ │ ├── static_compress.go │ │ ├── tracer.go │ │ └── user_auth_token.go │ ├── model/ │ │ ├── backup_config.gen.go │ │ ├── backup_history.gen.go │ │ ├── file.gen.go │ │ ├── folder.gen.go │ │ ├── git_sync_config.gen.go │ │ ├── git_sync_history.gen.go │ │ ├── model.go │ │ ├── note.gen.go │ │ ├── note_fts.go │ │ ├── note_history.gen.go │ │ ├── note_link.gen.go │ │ ├── schema_version.gen.go │ │ ├── setting.gen.go │ │ ├── sqlite_sequence.gen.go │ │ ├── storage.gen.go │ │ ├── sync_log.go │ │ ├── user.gen.go │ │ ├── user_share.gen.go │ │ └── vault.gen.go │ ├── query/ │ │ ├── backup_config.gen.go │ │ ├── backup_history.gen.go │ │ ├── file.gen.go │ │ ├── folder.gen.go │ │ ├── gen.go │ │ ├── git_sync_config.gen.go │ │ ├── git_sync_history.gen.go │ │ ├── note.gen.go │ │ ├── note_history.gen.go │ │ ├── note_link.gen.go │ │ ├── setting.gen.go │ │ ├── storage.gen.go │ │ ├── user.gen.go │ │ ├── user_share.gen.go │ │ └── vault.gen.go │ ├── routers/ │ │ ├── api_router/ │ │ │ ├── handler.go │ │ │ ├── handler_admin_control.go │ │ │ ├── handler_admin_control_test.go │ │ │ ├── handler_backup.go │ │ │ ├── handler_backup_test.go │ │ │ ├── handler_file.go │ │ │ ├── handler_file_test.go │ │ │ ├── handler_folder.go │ │ │ ├── handler_folder_test.go │ │ │ ├── handler_git_sync.go │ │ │ ├── handler_git_sync_test.go │ │ │ ├── handler_health.go │ │ │ ├── handler_health_test.go │ │ │ ├── handler_note.go │ │ │ ├── handler_note_history.go │ │ │ ├── handler_note_history_test.go │ │ │ ├── handler_note_test.go │ │ │ ├── handler_setting.go │ │ │ ├── handler_setting_test.go │ │ │ ├── handler_share.go │ │ │ ├── handler_share_test.go │ │ │ ├── handler_storage.go │ │ │ ├── handler_storage_test.go │ │ │ ├── handler_sync_log.go │ │ │ ├── handler_user.go │ │ │ ├── handler_user_test.go │ │ │ ├── handler_vault.go │ │ │ ├── handler_vault_test.go │ │ │ ├── handler_version.go │ │ │ ├── handler_version_test.go │ │ │ ├── metrics.go │ │ │ └── metrics_test.go │ │ ├── mcp_router/ │ │ │ ├── file_tools.go │ │ │ ├── mcp.go │ │ │ ├── mcp_test.go │ │ │ ├── note_tools.go │ │ │ ├── server.go │ │ │ └── vault_tools.go │ │ ├── pprof.go │ │ ├── router.go │ │ └── websocket_router/ │ │ ├── handler.go │ │ ├── ws_file.go │ │ ├── ws_folder.go │ │ ├── ws_note.go │ │ └── ws_setting.go │ ├── service/ │ │ ├── backup_service.go │ │ ├── backup_service_test.go │ │ ├── cloudflare_service.go │ │ ├── config.go │ │ ├── conflict_service.go │ │ ├── conflict_service_test.go │ │ ├── db_utils.go │ │ ├── file_service.go │ │ ├── folder_service.go │ │ ├── folder_service_test.go │ │ ├── git_sync_service.go │ │ ├── mocks/ │ │ │ ├── mock_backup_service.go │ │ │ ├── mock_cloudflare_service.go │ │ │ ├── mock_conflict_service.go │ │ │ ├── mock_file_service.go │ │ │ ├── mock_folder_service.go │ │ │ ├── mock_git_sync_service.go │ │ │ ├── mock_ngrok_service.go │ │ │ ├── mock_note_history_service.go │ │ │ ├── mock_note_link_service.go │ │ │ ├── mock_note_service.go │ │ │ ├── mock_setting_service.go │ │ │ ├── mock_share_service.go │ │ │ ├── mock_storage_service.go │ │ │ ├── mock_user_service.go │ │ │ └── mock_vault_service.go │ │ ├── ngrok_service.go │ │ ├── note_history_service.go │ │ ├── note_link_service.go │ │ ├── note_service.go │ │ ├── service.go │ │ ├── setting_service.go │ │ ├── share_service.go │ │ ├── share_service_test.go │ │ ├── storage_service.go │ │ ├── sync_log_service.go │ │ ├── user_service.go │ │ ├── user_service_test.go │ │ ├── vault_service.go │ │ └── vault_service_test.go │ ├── task/ │ │ ├── manager.go │ │ ├── registry.go │ │ ├── scheduler.go │ │ ├── task_backup.go │ │ ├── task_check_version.go │ │ ├── task_db_clean.go │ │ ├── task_file_session_temp_clean.go │ │ ├── task_note_history.go │ │ ├── task_sync_fid.go │ │ └── task_update_support.go │ └── upgrade/ │ ├── upgrade.go │ ├── upgrade_note_history_rename.go │ └── upgrade_note_history_rename_test.go ├── main.go ├── pkg/ │ ├── app/ │ │ ├── app.go │ │ ├── dateime.go │ │ ├── form.go │ │ ├── pagination.go │ │ ├── token.go │ │ ├── token_test.go │ │ ├── websocket.go │ │ └── websocket_client_test.go │ ├── code/ │ │ ├── code.go │ │ ├── code_test.go │ │ ├── common.go │ │ ├── lang.go │ │ ├── msg_en.go │ │ └── msg_zh_cn.go │ ├── convert/ │ │ ├── bool_int.go │ │ ├── convert.go │ │ ├── convert_test.go │ │ ├── copy_struct.go │ │ ├── json.go │ │ └── map.go │ ├── diff/ │ │ ├── diff.go │ │ ├── diff_test.go │ │ └── merge_scenarios_test.go │ ├── email/ │ │ ├── email.go │ │ └── email_test.go │ ├── errors/ │ │ ├── err.go │ │ ├── err_test.go │ │ └── errors.go │ ├── fileurl/ │ │ ├── file.go │ │ ├── fileurl_test.go │ │ ├── source_selector.go │ │ └── url.go │ ├── gin_tools/ │ │ ├── form.go │ │ ├── gin_tools_test.go │ │ ├── json.go │ │ └── param.go │ ├── httpclient/ │ │ ├── client.go │ │ └── client_test.go │ ├── json/ │ │ ├── json.go │ │ ├── json_sonic.go │ │ ├── json_std.go │ │ └── json_test.go │ ├── limiter/ │ │ ├── limiter.go │ │ ├── limiter_test.go │ │ └── method_limiter.go │ ├── logger/ │ │ ├── fields.go │ │ ├── logger.go │ │ └── logger_test.go │ ├── order/ │ │ ├── order_sn.go │ │ └── order_sn_test.go │ ├── rand/ │ │ ├── slice.go │ │ └── slice_test.go │ ├── safe_close/ │ │ ├── safe_close.go │ │ └── safe_close_test.go │ ├── shortlink/ │ │ ├── sink_cool.go │ │ └── sink_cool_test.go │ ├── storage/ │ │ ├── aliyun_oss/ │ │ │ ├── delete.go │ │ │ ├── operation.go │ │ │ ├── oss.go │ │ │ └── oss_test.go │ │ ├── aws_s3/ │ │ │ ├── delete.go │ │ │ ├── operation.go │ │ │ ├── s3.go │ │ │ └── s3_test.go │ │ ├── cloudflare_r2/ │ │ │ ├── delete.go │ │ │ ├── operation.go │ │ │ ├── r2.go │ │ │ └── r2_test.go │ │ ├── local_fs/ │ │ │ ├── delete.go │ │ │ ├── local.go │ │ │ ├── operation.go │ │ │ └── operation_test.go │ │ ├── minio/ │ │ │ ├── delete.go │ │ │ ├── minio.go │ │ │ ├── minio_test.go │ │ │ └── operation.go │ │ ├── storage.go │ │ ├── storage_test.go │ │ └── webdav/ │ │ ├── delete.go │ │ ├── operation.go │ │ ├── webdav.go │ │ └── webdav_test.go │ ├── timex/ │ │ ├── time.go │ │ └── time_test.go │ ├── tracer/ │ │ ├── tracer.go │ │ └── tracer_test.go │ ├── util/ │ │ ├── archive.go │ │ ├── array.go │ │ ├── converter.go │ │ ├── crypto.go │ │ ├── frontmatter.go │ │ ├── frontmatter_test.go │ │ ├── hash.go │ │ ├── hash_test.go │ │ ├── link_parser.go │ │ ├── link_parser_test.go │ │ ├── machine.go │ │ ├── math.go │ │ ├── password.go │ │ ├── path.go │ │ ├── random.go │ │ ├── runtime.go │ │ ├── sys_info.go │ │ ├── time.go │ │ ├── tokenizer.go │ │ └── validator.go │ ├── validator/ │ │ ├── custom_validator.go │ │ └── custom_validator_test.go │ ├── workerpool/ │ │ ├── pool.go │ │ └── pool_test.go │ └── writequeue/ │ ├── manager.go │ └── manager_test.go └── scripts/ ├── .air.toml ├── .env ├── db.sql ├── docker-composer/ │ ├── docker-compose.yaml │ ├── docker-re.sh │ └── nginx/ │ └── site.conf ├── gen_support_md.js ├── go_install.sh ├── gormgen.sh ├── https-nginx-example.conf ├── process_support.py ├── process_support_csv.js ├── quest_install.sh ├── test-api.sh ├── test-edge-cases.sh ├── test-folder-api.sh ├── translate_commit.py ├── translate_support.py └── update-version.js