gitextract_iww9x6qw/ ├── .cursorrules ├── .dockerignore ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── dependabot.yml │ ├── stale.yml │ └── workflows/ │ ├── _buildx.yml │ ├── _delete-registry-tag.yml │ ├── _e2e.yml │ ├── _golangci-lint.yml │ ├── _gorelease.yml │ ├── _mkdocs-check.yml │ ├── _mkdocs-publish.yml │ ├── _styles-check.yml │ ├── _swagger-check.yml │ ├── _test.yml │ ├── pull_request.yml │ ├── pull_request_closed.yml │ ├── push.yml │ └── version_bump.yml ├── .gitignore ├── .golangci.bck.yml ├── .golangci.yml ├── .goreleaser.yaml ├── .prettierignore ├── .prettierrc ├── CODE_OF_CONDUCT.md ├── Dockerfile ├── Dockerfile.alpine ├── Dockerfile.compose ├── Dockerfile.e2e ├── LICENSE ├── Makefile ├── Procfile ├── README.md ├── app.json ├── bun.lockb ├── codecov.yml ├── docker-compose.yaml ├── docs/ │ ├── API.md │ ├── APIv1.md │ ├── CLI.md │ ├── Configuration.md │ ├── Contribute.md │ ├── Installation.md │ ├── Screenshots.md │ ├── Storage.md │ ├── Usage.md │ ├── assets/ │ │ └── css/ │ │ └── style.css │ ├── faq.md │ ├── index.md │ ├── postman/ │ │ └── shiori.postman_collection.json │ └── swagger/ │ ├── docs.go │ ├── swagger.json │ └── swagger.yaml ├── e2e/ │ ├── e2eutil/ │ │ └── containers.go │ ├── playwright/ │ │ ├── accounts_test.go │ │ ├── auth_test.go │ │ ├── playwright_test.go │ │ ├── reporter.go │ │ └── testhelper.go │ └── server/ │ ├── auth_test.go │ └── basic_test.go ├── go.mod ├── go.sum ├── internal/ │ ├── assets.go │ ├── cmd/ │ │ ├── add.go │ │ ├── check.go │ │ ├── delete.go │ │ ├── export.go │ │ ├── import.go │ │ ├── open.go │ │ ├── pocket.go │ │ ├── pocket_test.go │ │ ├── print.go │ │ ├── root.go │ │ ├── serve.go │ │ ├── server.go │ │ ├── server_test.go │ │ ├── update.go │ │ ├── utils.go │ │ ├── utils_test.go │ │ └── version.go │ ├── config/ │ │ ├── config.go │ │ ├── config_test.go │ │ └── storage.go │ ├── core/ │ │ ├── core.go │ │ ├── download.go │ │ ├── ebook.go │ │ ├── ebook_test.go │ │ ├── processing.go │ │ ├── processing_test.go │ │ └── url.go │ ├── database/ │ │ ├── database.go │ │ ├── database_tags.go │ │ ├── database_tags_test.go │ │ ├── database_test.go │ │ ├── migrations/ │ │ │ ├── mysql/ │ │ │ │ ├── 0000_system_create.up.sql │ │ │ │ ├── 0000_system_insert.up.sql │ │ │ │ ├── 0001_initial_account.up.sql │ │ │ │ ├── 0002_initial_bookmark.up.sql │ │ │ │ ├── 0003_initial_tag.up.sql │ │ │ │ ├── 0004_initial_bookmark_tag.up.sql │ │ │ │ ├── 0005_rename_to_created_at.up.sql │ │ │ │ ├── 0006_change_created_at_settings.up.sql │ │ │ │ ├── 0007_add_modified_at.up.sql │ │ │ │ ├── 0008_set_modified_at_equal_created_at.up.sql │ │ │ │ ├── 0009_index_for_created_at.up.sql │ │ │ │ └── 0010_index_for_modified_at.up.sql │ │ │ ├── postgres/ │ │ │ │ ├── 0000_system.up.sql │ │ │ │ ├── 0001_initial.up.sql │ │ │ │ └── 0002_created_time.up.sql │ │ │ └── sqlite/ │ │ │ ├── 0000_system.up.sql │ │ │ ├── 0001_initial.up.sql │ │ │ ├── 0002_denormalize_content.up.sql │ │ │ ├── 0003_uniq_id.up.sql │ │ │ └── 0004_created_time.up.sql │ │ ├── migrations.go │ │ ├── mysql.go │ │ ├── mysql_test.go │ │ ├── pg.go │ │ ├── pg_test.go │ │ ├── sqlite.go │ │ ├── sqlite_noncgo.go │ │ ├── sqlite_openbsd.go │ │ └── sqlite_test.go │ ├── dependencies/ │ │ └── dependencies.go │ ├── domains/ │ │ ├── accounts.go │ │ ├── accounts_test.go │ │ ├── archiver.go │ │ ├── auth.go │ │ ├── auth_test.go │ │ ├── bookmark_tags_test.go │ │ ├── bookmarks.go │ │ ├── bookmarks_test.go │ │ ├── storage.go │ │ ├── storage_test.go │ │ ├── tags.go │ │ └── tags_test.go │ ├── http/ │ │ ├── handlers/ │ │ │ ├── api/ │ │ │ │ └── v1/ │ │ │ │ ├── accounts.go │ │ │ │ ├── accounts_test.go │ │ │ │ ├── auth.go │ │ │ │ ├── auth_test.go │ │ │ │ ├── bookmark_tags_test.go │ │ │ │ ├── bookmarks.go │ │ │ │ ├── bookmarks_test.go │ │ │ │ ├── system.go │ │ │ │ ├── system_test.go │ │ │ │ ├── tags.go │ │ │ │ └── tags_test.go │ │ │ ├── api.go │ │ │ ├── bookmark.go │ │ │ ├── bookmark_test.go │ │ │ ├── frontend.go │ │ │ ├── frontend_test.go │ │ │ ├── legacy.go │ │ │ ├── legacy_test.go │ │ │ ├── swagger.go │ │ │ ├── swagger_test.go │ │ │ ├── system.go │ │ │ └── system_test.go │ │ ├── http.go │ │ ├── http_test.go │ │ ├── middleware/ │ │ │ ├── auth.go │ │ │ ├── auth_sso_proxy.go │ │ │ ├── auth_sso_proxy_test.go │ │ │ ├── auth_test.go │ │ │ ├── cors.go │ │ │ ├── cors_test.go │ │ │ ├── logging.go │ │ │ ├── message_response.go │ │ │ ├── message_response_test.go │ │ │ ├── request_id.go │ │ │ └── request_id_test.go │ │ ├── response/ │ │ │ ├── file.go │ │ │ ├── file_test.go │ │ │ ├── response.go │ │ │ ├── response_test.go │ │ │ ├── shortcuts.go │ │ │ └── shortcuts_test.go │ │ ├── server.go │ │ ├── server_test.go │ │ ├── templates/ │ │ │ └── templates.go │ │ └── webcontext/ │ │ ├── auth.go │ │ ├── auth_test.go │ │ ├── context.go │ │ └── keys.go │ ├── model/ │ │ ├── account.go │ │ ├── bookmark.go │ │ ├── bookmark_test.go │ │ ├── const.go │ │ ├── database.go │ │ ├── dependencies.go │ │ ├── domains.go │ │ ├── errors.go │ │ ├── http.go │ │ ├── legacy.go │ │ ├── main.go │ │ ├── ptr.go │ │ ├── slices.go │ │ ├── slices_test.go │ │ ├── tag.go │ │ ├── tag_test.go │ │ └── validation.go │ ├── testutil/ │ │ ├── accounts.go │ │ ├── accounts_test.go │ │ ├── http.go │ │ ├── response.go │ │ └── shiori.go │ ├── view/ │ │ ├── 404.html │ │ ├── archive.html │ │ ├── assets/ │ │ │ ├── css/ │ │ │ │ ├── archive.css │ │ │ │ └── style.css │ │ │ ├── js/ │ │ │ │ ├── component/ │ │ │ │ │ ├── bookmark.js │ │ │ │ │ ├── dialog.js │ │ │ │ │ ├── eventBus.js │ │ │ │ │ ├── login.js │ │ │ │ │ └── pagination.js │ │ │ │ ├── page/ │ │ │ │ │ ├── base.js │ │ │ │ │ ├── home.js │ │ │ │ │ └── setting.js │ │ │ │ ├── url.js │ │ │ │ ├── utils/ │ │ │ │ │ └── api.js │ │ │ │ └── vue.js │ │ │ ├── less/ │ │ │ │ ├── archive.less │ │ │ │ ├── bookmark-item.less │ │ │ │ ├── common.less │ │ │ │ ├── custom-dialog.less │ │ │ │ ├── style.less │ │ │ │ ├── theme.less │ │ │ │ └── variables.less │ │ │ └── manifest.webmanifest │ │ ├── content.html │ │ ├── embed.go │ │ └── index.html │ └── webserver/ │ ├── handler-api-ext.go │ ├── handler-api.go │ ├── handler.go │ ├── server.go │ ├── utils.go │ ├── utils_ip.go │ └── utils_ip_test.go ├── main.go ├── mkdocs.yml ├── package.json ├── scripts/ │ ├── buildx.sh │ ├── e2e.sh │ ├── styles.sh │ ├── styles_check.sh │ ├── swagger.sh │ ├── swagger_check.sh │ └── test.sh ├── testdata/ │ ├── nginx.conf │ ├── pocket-new.csv │ └── pocket-old.csv └── webapp/ ├── .editorconfig ├── .gitattributes ├── .gitignore ├── .prettierrc.json ├── README.md ├── dist/ │ ├── assets/ │ │ ├── ArchiveView-DZOySksr.js │ │ ├── FoldersView-B-TWh6ac.js │ │ ├── FoldersView-tn0RQdqM.css │ │ ├── SettingsView-BWJgD3kk.js │ │ ├── TagsView-CmDnarVi.js │ │ ├── index-C8c580-n.js │ │ └── index-DoBsnBZ2.css │ └── index.html ├── embed.go ├── env.d.ts ├── eslint.config.ts ├── index.html ├── package.json ├── src/ │ ├── App.vue │ ├── assets/ │ │ └── main.css │ ├── client/ │ │ ├── .openapi-generator/ │ │ │ ├── FILES │ │ │ └── VERSION │ │ ├── .openapi-generator-ignore │ │ ├── apis/ │ │ │ ├── AccountsApi.ts │ │ │ ├── AuthApi.ts │ │ │ ├── SystemApi.ts │ │ │ ├── TagsApi.ts │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── models/ │ │ │ ├── ApiV1BookmarkTagPayload.ts │ │ │ ├── ApiV1BulkUpdateBookmarkTagsPayload.ts │ │ │ ├── ApiV1InfoResponse.ts │ │ │ ├── ApiV1InfoResponseVersion.ts │ │ │ ├── ApiV1LoginRequestPayload.ts │ │ │ ├── ApiV1LoginResponseMessage.ts │ │ │ ├── ApiV1ReadableResponseMessage.ts │ │ │ ├── ApiV1UpdateAccountPayload.ts │ │ │ ├── ApiV1UpdateCachePayload.ts │ │ │ ├── ModelAccount.ts │ │ │ ├── ModelAccountDTO.ts │ │ │ ├── ModelBookmarkDTO.ts │ │ │ ├── ModelTagDTO.ts │ │ │ ├── ModelUserConfig.ts │ │ │ └── index.ts │ │ └── runtime.ts │ ├── components/ │ │ └── layout/ │ │ ├── AppLayout.vue │ │ ├── LanguageSelector.vue │ │ ├── Sidebar.vue │ │ └── TopBar.vue │ ├── locales/ │ │ ├── de.json │ │ ├── en.json │ │ ├── es.json │ │ ├── fr.json │ │ └── ja.json │ ├── main.ts │ ├── router/ │ │ └── index.ts │ ├── stores/ │ │ ├── auth.ts │ │ └── tags.ts │ ├── utils/ │ │ └── i18n.ts │ └── views/ │ ├── AboutView.vue │ ├── ArchiveView.vue │ ├── FoldersView.vue │ ├── HomeView.vue │ ├── LoginView.vue │ ├── SettingsView.vue │ └── TagsView.vue ├── tailwind.config.js ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json ├── tsconfig.vitest.json ├── vite.config.ts └── vitest.config.ts