codex 2.5.3__tar.gz → 2.5.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- codex-2.5.4/.dockerignore +51 -0
- codex-2.5.4/.github/actions/devenv-ci-container/action.yml +35 -0
- codex-2.5.4/.github/actions/devenv-pypi/action.yml +50 -0
- codex-2.5.4/.github/workflows/devenv-check.yml +382 -0
- codex-2.5.4/.github/workflows/devenv-release.yml +48 -0
- codex-2.5.4/.gitignore +96 -0
- codex-2.5.4/.prettierignore +27 -0
- codex-2.5.4/NEWS.md +2714 -0
- codex-2.5.4/PKG-INFO +1299 -0
- codex-2.5.4/bin/_lib.sh +45 -0
- codex-2.5.4/bin/ci-reuse-dist.sh +56 -0
- codex-2.5.4/bin/cleanup-pypi-alpha.sh +41 -0
- codex-2.5.4/bin/dev-module.sh +13 -0
- codex-2.5.4/bin/docker-compose-exit.sh +7 -0
- codex-2.5.4/bin/docker-tag-latest.sh +38 -0
- codex-2.5.4/bin/find-files.sh +107 -0
- codex-2.5.4/bin/find-sh.sh +21 -0
- codex-2.5.4/bin/fix-django.sh +14 -0
- codex-2.5.4/bin/fix-docker.sh +12 -0
- codex-2.5.4/bin/fix.sh +23 -0
- codex-2.5.4/bin/hub_prune_stale.py +524 -0
- codex-2.5.4/bin/kill-eslint_d.sh +12 -0
- codex-2.5.4/bin/lint-ci.sh +11 -0
- codex-2.5.4/bin/lint-complexity.sh +6 -0
- codex-2.5.4/bin/lint-django.sh +14 -0
- codex-2.5.4/bin/lint-docker.sh +18 -0
- codex-2.5.4/bin/lint-python.sh +13 -0
- codex-2.5.4/bin/lint.sh +13 -0
- codex-2.5.4/bin/manage.py +70 -0
- codex-2.5.4/bin/pm +5 -0
- codex-2.5.4/bin/prettier-nginx.sh +7 -0
- codex-2.5.4/bin/release_info.py +240 -0
- codex-2.5.4/bin/roman.py +220 -0
- codex-2.5.4/bin/run-test-proxy.sh +101 -0
- codex-2.5.4/bin/sh-tools.sh +39 -0
- codex-2.5.4/bin/sort-ignore.sh +22 -0
- codex-2.5.4/bin/test-python.sh +10 -0
- codex-2.5.4/bin/uml.sh +9 -0
- codex-2.5.4/bin/version-node.sh +17 -0
- codex-2.5.4/bun.lock +765 -0
- codex-2.5.4/codex/static/assets/VAvatar-BZOmNH9A.js +1 -0
- codex-2.5.4/codex/static/assets/VAvatar-BZOmNH9A.js.br +0 -0
- codex-2.5.4/codex/static/assets/VAvatar-BZOmNH9A.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VCard-DGgzzpxI.js +1 -0
- codex-2.5.4/codex/static/assets/VCard-DGgzzpxI.js.br +0 -0
- codex-2.5.4/codex/static/assets/VCard-DGgzzpxI.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VCheckbox-vQEOQHp8.js +1 -0
- codex-2.5.4/codex/static/assets/VCheckbox-vQEOQHp8.js.br +0 -0
- codex-2.5.4/codex/static/assets/VCheckbox-vQEOQHp8.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VCheckboxBtn-BYymD5WX.js +1 -0
- codex-2.5.4/codex/static/assets/VCheckboxBtn-BYymD5WX.js.br +0 -0
- codex-2.5.4/codex/static/assets/VCheckboxBtn-BYymD5WX.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VChip-LNzJwq7b.js +1 -0
- codex-2.5.4/codex/static/assets/VChip-LNzJwq7b.js.br +0 -0
- codex-2.5.4/codex/static/assets/VChip-LNzJwq7b.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VCombobox-SAY5wst_.js +2 -0
- codex-2.5.4/codex/static/assets/VCombobox-SAY5wst_.js.br +0 -0
- codex-2.5.4/codex/static/assets/VCombobox-SAY5wst_.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VContainer-DBeudEu9.js +1 -0
- codex-2.5.4/codex/static/assets/VContainer-DBeudEu9.js.br +2 -0
- codex-2.5.4/codex/static/assets/VContainer-DBeudEu9.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VDataTableVirtual-CGN88uNg.js +1 -0
- codex-2.5.4/codex/static/assets/VDataTableVirtual-CGN88uNg.js.br +0 -0
- codex-2.5.4/codex/static/assets/VDataTableVirtual-CGN88uNg.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VDivider-DfKnxr_a.js +1 -0
- codex-2.5.4/codex/static/assets/VDivider-DfKnxr_a.js.br +0 -0
- codex-2.5.4/codex/static/assets/VDivider-DfKnxr_a.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VExpansionPanels-9tcwGpsp.js +1 -0
- codex-2.5.4/codex/static/assets/VExpansionPanels-9tcwGpsp.js.br +0 -0
- codex-2.5.4/codex/static/assets/VExpansionPanels-9tcwGpsp.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VForm-BA_tzbnW.js +1 -0
- codex-2.5.4/codex/static/assets/VForm-BA_tzbnW.js.br +0 -0
- codex-2.5.4/codex/static/assets/VForm-BA_tzbnW.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VListItem-LrH13hDN.js +1 -0
- codex-2.5.4/codex/static/assets/VListItem-LrH13hDN.js.br +0 -0
- codex-2.5.4/codex/static/assets/VListItem-LrH13hDN.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VMenu-IVslBreR.js +1 -0
- codex-2.5.4/codex/static/assets/VMenu-IVslBreR.js.br +0 -0
- codex-2.5.4/codex/static/assets/VMenu-IVslBreR.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VOverlay-Da44fOU2.js +1 -0
- codex-2.5.4/codex/static/assets/VOverlay-Da44fOU2.js.br +0 -0
- codex-2.5.4/codex/static/assets/VOverlay-Da44fOU2.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VProgressCircular-B1FBFycV.js +10 -0
- codex-2.5.4/codex/static/assets/VProgressCircular-B1FBFycV.js.br +0 -0
- codex-2.5.4/codex/static/assets/VProgressCircular-B1FBFycV.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VRadioGroup-Cwt7_DOe.js +1 -0
- codex-2.5.4/codex/static/assets/VRadioGroup-Cwt7_DOe.js.br +0 -0
- codex-2.5.4/codex/static/assets/VRadioGroup-Cwt7_DOe.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VSelect-BCsz583e.js +2 -0
- codex-2.5.4/codex/static/assets/VSelect-BCsz583e.js.br +0 -0
- codex-2.5.4/codex/static/assets/VSelect-BCsz583e.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VSelectionControl-EO96VGsP.js +1 -0
- codex-2.5.4/codex/static/assets/VSelectionControl-EO96VGsP.js.br +0 -0
- codex-2.5.4/codex/static/assets/VSelectionControl-EO96VGsP.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VSnackbar-hrIaXETc.js +1 -0
- codex-2.5.4/codex/static/assets/VSnackbar-hrIaXETc.js.br +0 -0
- codex-2.5.4/codex/static/assets/VSnackbar-hrIaXETc.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VSpacer-uyFyeFuR.js +1 -0
- codex-2.5.4/codex/static/assets/VTable-D4BhNrrp.js +1 -0
- codex-2.5.4/codex/static/assets/VTable-D4BhNrrp.js.br +0 -0
- codex-2.5.4/codex/static/assets/VTable-D4BhNrrp.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VTabs-BqJIOlkV.js +1 -0
- codex-2.5.4/codex/static/assets/VTabs-BqJIOlkV.js.br +0 -0
- codex-2.5.4/codex/static/assets/VTabs-BqJIOlkV.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VTextField-4oj9UAff.js +1 -0
- codex-2.5.4/codex/static/assets/VTextField-4oj9UAff.js.br +0 -0
- codex-2.5.4/codex/static/assets/VTextField-4oj9UAff.js.gz +0 -0
- codex-2.5.4/codex/static/assets/VTooltip-BqfDEz5x.js +1 -0
- codex-2.5.4/codex/static/assets/VTooltip-BqfDEz5x.js.br +0 -0
- codex-2.5.4/codex/static/assets/VTooltip-BqfDEz5x.js.gz +0 -0
- codex-2.5.4/codex/static/assets/action-bar-BeUO3cd5.js +1 -0
- codex-2.5.4/codex/static/assets/action-bar-BeUO3cd5.js.br +2 -0
- codex-2.5.4/codex/static/assets/action-bar-BeUO3cd5.js.gz +0 -0
- codex-2.5.4/codex/static/assets/admin-BYEi9ZYS.js +1 -0
- codex-2.5.4/codex/static/assets/admin-BYEi9ZYS.js.br +0 -0
- codex-2.5.4/codex/static/assets/admin-BYEi9ZYS.js.gz +0 -0
- codex-2.5.4/codex/static/assets/admin-Cx8WJaTv.js +1 -0
- codex-2.5.4/codex/static/assets/admin-Cx8WJaTv.js.br +0 -0
- codex-2.5.4/codex/static/assets/admin-DR8JHXK5.js +1 -0
- codex-2.5.4/codex/static/assets/admin-DR8JHXK5.js.br +0 -0
- codex-2.5.4/codex/static/assets/admin-DS1DKoL9.css +1 -0
- codex-2.5.4/codex/static/assets/admin-DS1DKoL9.css.br +0 -0
- codex-2.5.4/codex/static/assets/admin-DS1DKoL9.css.gz +0 -0
- codex-2.5.4/codex/static/assets/admin-Dh_qZTuo.js +1 -0
- codex-2.5.4/codex/static/assets/admin-Dh_qZTuo.js.br +0 -0
- codex-2.5.4/codex/static/assets/admin-Dh_qZTuo.js.gz +0 -0
- codex-2.5.4/codex/static/assets/admin-KDDWpvPK.js +1 -0
- codex-2.5.4/codex/static/assets/admin-KDDWpvPK.js.br +0 -0
- codex-2.5.4/codex/static/assets/admin-KDDWpvPK.js.gz +0 -0
- codex-2.5.4/codex/static/assets/admin-menu-De57bLSm.css +1 -0
- codex-2.5.4/codex/static/assets/admin-menu-De57bLSm.css.br +2 -0
- codex-2.5.4/codex/static/assets/admin-menu-De57bLSm.css.gz +0 -0
- codex-2.5.4/codex/static/assets/admin-menu-KBQuIMIE.js +1 -0
- codex-2.5.4/codex/static/assets/admin-menu-KBQuIMIE.js.br +0 -0
- codex-2.5.4/codex/static/assets/admin-menu-KBQuIMIE.js.gz +0 -0
- codex-2.5.4/codex/static/assets/admin-section-DX0Idd62.js +1 -0
- codex-2.5.4/codex/static/assets/admin-section-DX0Idd62.js.br +0 -0
- codex-2.5.4/codex/static/assets/admin-section-DX0Idd62.js.gz +0 -0
- codex-2.5.4/codex/static/assets/admin-settings-button-errors-CSl9xq5Y.js +1 -0
- codex-2.5.4/codex/static/assets/admin-settings-button-errors-CSl9xq5Y.js.br +0 -0
- codex-2.5.4/codex/static/assets/admin-settings-button-errors-CSl9xq5Y.js.gz +0 -0
- codex-2.5.4/codex/static/assets/admin-settings-button-progress-DxcUPx4U.js +1 -0
- codex-2.5.4/codex/static/assets/admin-settings-button-progress-DxcUPx4U.js.br +0 -0
- codex-2.5.4/codex/static/assets/admin-settings-button-progress-DxcUPx4U.js.gz +0 -0
- codex-2.5.4/codex/static/assets/auth-BYPQX5nf.js +1 -0
- codex-2.5.4/codex/static/assets/auth-BYPQX5nf.js.br +0 -0
- codex-2.5.4/codex/static/assets/auth-BYPQX5nf.js.gz +0 -0
- codex-2.5.4/codex/static/assets/auth-form-mixin-Cmwcdpvw.js +1 -0
- codex-2.5.4/codex/static/assets/auth-form-mixin-Cmwcdpvw.js.br +3 -0
- codex-2.5.4/codex/static/assets/auth-form-mixin-Cmwcdpvw.js.gz +0 -0
- codex-2.5.4/codex/static/assets/auth-tab-DNV2zScw.js +16 -0
- codex-2.5.4/codex/static/assets/auth-tab-DNV2zScw.js.br +0 -0
- codex-2.5.4/codex/static/assets/auth-tab-DNV2zScw.js.gz +0 -0
- codex-2.5.4/codex/static/assets/browser-BMKaQZ2x.js +2 -0
- codex-2.5.4/codex/static/assets/browser-BMKaQZ2x.js.br +0 -0
- codex-2.5.4/codex/static/assets/browser-BMKaQZ2x.js.gz +0 -0
- codex-2.5.4/codex/static/assets/browser-BRFyGGxB.js +2 -0
- codex-2.5.4/codex/static/assets/browser-BRFyGGxB.js.br +0 -0
- codex-2.5.4/codex/static/assets/browser-BRFyGGxB.js.gz +0 -0
- codex-2.5.4/codex/static/assets/browser-C178B43i.css +1 -0
- codex-2.5.4/codex/static/assets/browser-C178B43i.css.br +0 -0
- codex-2.5.4/codex/static/assets/browser-C178B43i.css.gz +0 -0
- codex-2.5.4/codex/static/assets/browser-table-column-picker-CxC1s1ic.js +1 -0
- codex-2.5.4/codex/static/assets/browser-table-column-picker-CxC1s1ic.js.br +0 -0
- codex-2.5.4/codex/static/assets/browser-table-column-picker-CxC1s1ic.js.gz +0 -0
- codex-2.5.4/codex/static/assets/clipboard-30kF5UuB.js +1 -0
- codex-2.5.4/codex/static/assets/clipboard-30kF5UuB.js.br +0 -0
- codex-2.5.4/codex/static/assets/clipboard-30kF5UuB.js.gz +0 -0
- codex-2.5.4/codex/static/assets/close-button-CBgwgsxz.js +1 -0
- codex-2.5.4/codex/static/assets/close-button-CBgwgsxz.js.br +1 -0
- codex-2.5.4/codex/static/assets/close-button-CBgwgsxz.js.gz +0 -0
- codex-2.5.4/codex/static/assets/codex-list-item-CEV27D48.js +1 -0
- codex-2.5.4/codex/static/assets/codex-list-item-CEV27D48.js.br +0 -0
- codex-2.5.4/codex/static/assets/codex-list-item-CEV27D48.js.gz +0 -0
- codex-2.5.4/codex/static/assets/common-D43H6khE.js +1 -0
- codex-2.5.4/codex/static/assets/common-D43H6khE.js.br +0 -0
- codex-2.5.4/codex/static/assets/common-D43H6khE.js.gz +0 -0
- codex-2.5.4/codex/static/assets/confirm-dialog-CZAzk2bt.js +1 -0
- codex-2.5.4/codex/static/assets/confirm-dialog-CZAzk2bt.js.br +0 -0
- codex-2.5.4/codex/static/assets/confirm-dialog-CZAzk2bt.js.gz +0 -0
- codex-2.5.4/codex/static/assets/confirm-footer-8IgzCE1c.js +1 -0
- codex-2.5.4/codex/static/assets/confirm-footer-8IgzCE1c.js.br +0 -0
- codex-2.5.4/codex/static/assets/confirm-footer-8IgzCE1c.js.gz +0 -0
- codex-2.5.4/codex/static/assets/cover-popup-Bihdhv00.js +1 -0
- codex-2.5.4/codex/static/assets/cover-popup-Bihdhv00.js.br +0 -0
- codex-2.5.4/codex/static/assets/cover-popup-Bihdhv00.js.gz +0 -0
- codex-2.5.4/codex/static/assets/createSimpleFunctional-MhpqWXi2.js +1 -0
- codex-2.5.4/codex/static/assets/createSimpleFunctional-MhpqWXi2.js.br +1 -0
- codex-2.5.4/codex/static/assets/createSimpleFunctional-MhpqWXi2.js.gz +0 -0
- codex-2.5.4/codex/static/assets/custom-covers-tab-CvtXLQ3d.js +1 -0
- codex-2.5.4/codex/static/assets/custom-covers-tab-CvtXLQ3d.js.br +0 -0
- codex-2.5.4/codex/static/assets/custom-covers-tab-CvtXLQ3d.js.gz +0 -0
- codex-2.5.4/codex/static/assets/datetime-column-C1StCPoT.js +1 -0
- codex-2.5.4/codex/static/assets/datetime-column-C1StCPoT.js.br +0 -0
- codex-2.5.4/codex/static/assets/datetime-column-C1StCPoT.js.gz +0 -0
- codex-2.5.4/codex/static/assets/defaults-tab-BLdQkLf9.js +1 -0
- codex-2.5.4/codex/static/assets/defaults-tab-BLdQkLf9.js.br +0 -0
- codex-2.5.4/codex/static/assets/defaults-tab-BLdQkLf9.js.gz +0 -0
- codex-2.5.4/codex/static/assets/delete-row-dialog-LAe-EZW_.js +1 -0
- codex-2.5.4/codex/static/assets/delete-row-dialog-LAe-EZW_.js.br +0 -0
- codex-2.5.4/codex/static/assets/delete-row-dialog-LAe-EZW_.js.gz +0 -0
- codex-2.5.4/codex/static/assets/display-BMRHBirV.js +1 -0
- codex-2.5.4/codex/static/assets/display-BMRHBirV.js.br +0 -0
- codex-2.5.4/codex/static/assets/display-BMRHBirV.js.gz +0 -0
- codex-2.5.4/codex/static/assets/dist-Ofq4EvcO.js +1 -0
- codex-2.5.4/codex/static/assets/dist-Ofq4EvcO.js.br +0 -0
- codex-2.5.4/codex/static/assets/dist-Ofq4EvcO.js.gz +0 -0
- codex-2.5.4/codex/static/assets/doctor-tab-BCPhAVXx.js +1 -0
- codex-2.5.4/codex/static/assets/doctor-tab-BCPhAVXx.js.br +0 -0
- codex-2.5.4/codex/static/assets/doctor-tab-BCPhAVXx.js.gz +0 -0
- codex-2.5.4/codex/static/assets/edit-panel-B209ls5b.js +1 -0
- codex-2.5.4/codex/static/assets/edit-panel-B209ls5b.js.br +0 -0
- codex-2.5.4/codex/static/assets/edit-panel-B209ls5b.js.gz +0 -0
- codex-2.5.4/codex/static/assets/email-tab-Czau_g7F.js +1 -0
- codex-2.5.4/codex/static/assets/email-tab-Czau_g7F.js.br +0 -0
- codex-2.5.4/codex/static/assets/email-tab-Czau_g7F.js.gz +0 -0
- codex-2.5.4/codex/static/assets/expand-toggle-6o1u1L2z.js +1 -0
- codex-2.5.4/codex/static/assets/expand-toggle-6o1u1L2z.js.br +0 -0
- codex-2.5.4/codex/static/assets/expand-toggle-6o1u1L2z.js.gz +0 -0
- codex-2.5.4/codex/static/assets/flag-card-CqOgVhq7.js +1 -0
- codex-2.5.4/codex/static/assets/flag-card-CqOgVhq7.js.br +0 -0
- codex-2.5.4/codex/static/assets/flag-card-CqOgVhq7.js.gz +0 -0
- codex-2.5.4/codex/static/assets/forwardRefs-BAj60Oe8.js +1 -0
- codex-2.5.4/codex/static/assets/forwardRefs-BAj60Oe8.js.br +0 -0
- codex-2.5.4/codex/static/assets/forwardRefs-BAj60Oe8.js.gz +0 -0
- codex-2.5.4/codex/static/assets/goto-B07zwC6B.js +1 -0
- codex-2.5.4/codex/static/assets/goto-B07zwC6B.js.br +0 -0
- codex-2.5.4/codex/static/assets/goto-B07zwC6B.js.gz +0 -0
- codex-2.5.4/codex/static/assets/group-tab-C8YrIn8m.js +1 -0
- codex-2.5.4/codex/static/assets/group-tab-C8YrIn8m.js.br +0 -0
- codex-2.5.4/codex/static/assets/group-tab-C8YrIn8m.js.gz +0 -0
- codex-2.5.4/codex/static/assets/http-error-BrJoxbWa.js +1 -0
- codex-2.5.4/codex/static/assets/http-error-BrJoxbWa.js.br +0 -0
- codex-2.5.4/codex/static/assets/http-error-BrJoxbWa.js.gz +0 -0
- codex-2.5.4/codex/static/assets/job-tab-goR9JWOe.js +1 -0
- codex-2.5.4/codex/static/assets/job-tab-goR9JWOe.js.br +0 -0
- codex-2.5.4/codex/static/assets/job-tab-goR9JWOe.js.gz +0 -0
- codex-2.5.4/codex/static/assets/launcher-dialog-BwCmg_8O.js +1 -0
- codex-2.5.4/codex/static/assets/launcher-dialog-BwCmg_8O.js.br +0 -0
- codex-2.5.4/codex/static/assets/launcher-dialog-BwCmg_8O.js.gz +0 -0
- codex-2.5.4/codex/static/assets/layout-DIgKtIM2.js +1 -0
- codex-2.5.4/codex/static/assets/layout-DIgKtIM2.js.br +0 -0
- codex-2.5.4/codex/static/assets/layout-DIgKtIM2.js.gz +0 -0
- codex-2.5.4/codex/static/assets/library-tab-pPNaGhrY.js +9 -0
- codex-2.5.4/codex/static/assets/library-tab-pPNaGhrY.js.br +0 -0
- codex-2.5.4/codex/static/assets/library-tab-pPNaGhrY.js.gz +0 -0
- codex-2.5.4/codex/static/assets/main-BdnugF58.js +6 -0
- codex-2.5.4/codex/static/assets/main-BdnugF58.js.br +0 -0
- codex-2.5.4/codex/static/assets/main-BdnugF58.js.gz +0 -0
- codex-2.5.4/codex/static/assets/online-tag-B5q7a00l.js +1 -0
- codex-2.5.4/codex/static/assets/online-tag-B5q7a00l.js.br +0 -0
- codex-2.5.4/codex/static/assets/online-tag-B5q7a00l.js.gz +0 -0
- codex-2.5.4/codex/static/assets/online-tag-BjTx6EU6.js +1 -0
- codex-2.5.4/codex/static/assets/pagination-toolbar-BGicwTXg.js +2 -0
- codex-2.5.4/codex/static/assets/pagination-toolbar-BGicwTXg.js.br +0 -0
- codex-2.5.4/codex/static/assets/pagination-toolbar-BGicwTXg.js.gz +0 -0
- codex-2.5.4/codex/static/assets/pdf-doc-BxKG4OnB.js +628 -0
- codex-2.5.4/codex/static/assets/pdf-doc-BxKG4OnB.js.br +0 -0
- codex-2.5.4/codex/static/assets/pdf-doc-BxKG4OnB.js.gz +0 -0
- codex-2.5.4/codex/static/assets/pretty-bytes-Y-4Ao0R3.js +1 -0
- codex-2.5.4/codex/static/assets/pretty-bytes-Y-4Ao0R3.js.br +0 -0
- codex-2.5.4/codex/static/assets/pretty-bytes-Y-4Ao0R3.js.gz +0 -0
- codex-2.5.4/codex/static/assets/prompt-popup-BSxff9bi.js +2 -0
- codex-2.5.4/codex/static/assets/prompt-popup-BSxff9bi.js.br +0 -0
- codex-2.5.4/codex/static/assets/prompt-popup-BSxff9bi.js.gz +0 -0
- codex-2.5.4/codex/static/assets/prompt-popup-DOss4tHf.css +1 -0
- codex-2.5.4/codex/static/assets/prompt-popup-DOss4tHf.css.br +0 -0
- codex-2.5.4/codex/static/assets/prompt-popup-DOss4tHf.css.gz +0 -0
- codex-2.5.4/codex/static/assets/reader-BpLVrS0o.js +1 -0
- codex-2.5.4/codex/static/assets/reader-BpLVrS0o.js.br +0 -0
- codex-2.5.4/codex/static/assets/reader-BpLVrS0o.js.gz +0 -0
- codex-2.5.4/codex/static/assets/reader-C4ZRidrS.css +1 -0
- codex-2.5.4/codex/static/assets/reader-C4ZRidrS.css.br +0 -0
- codex-2.5.4/codex/static/assets/reader-C4ZRidrS.css.gz +0 -0
- codex-2.5.4/codex/static/assets/reader-DHGk_jbM.js +1 -0
- codex-2.5.4/codex/static/assets/reader-DHGk_jbM.js.br +0 -0
- codex-2.5.4/codex/static/assets/reader-DHGk_jbM.js.gz +0 -0
- codex-2.5.4/codex/static/assets/reader-DLK284TT.js +2 -0
- codex-2.5.4/codex/static/assets/reader-DLK284TT.js.br +0 -0
- codex-2.5.4/codex/static/assets/reader-DLK284TT.js.gz +0 -0
- codex-2.5.4/codex/static/assets/reader-settings-controls-BY3gCTe_.js +1 -0
- codex-2.5.4/codex/static/assets/reader-settings-controls-BY3gCTe_.js.br +0 -0
- codex-2.5.4/codex/static/assets/reader-settings-controls-BY3gCTe_.js.gz +0 -0
- codex-2.5.4/codex/static/assets/relation-chips-Td_IgxC7.js +1 -0
- codex-2.5.4/codex/static/assets/relation-chips-Td_IgxC7.js.br +0 -0
- codex-2.5.4/codex/static/assets/relation-chips-Td_IgxC7.js.gz +0 -0
- codex-2.5.4/codex/static/assets/reset-password-confirm-CRZ2eSwp.js +1 -0
- codex-2.5.4/codex/static/assets/reset-password-confirm-CRZ2eSwp.js.br +0 -0
- codex-2.5.4/codex/static/assets/reset-password-confirm-CRZ2eSwp.js.gz +0 -0
- codex-2.5.4/codex/static/assets/restore-tab-Lzo0SbQ1.js +3 -0
- codex-2.5.4/codex/static/assets/restore-tab-Lzo0SbQ1.js.br +0 -0
- codex-2.5.4/codex/static/assets/restore-tab-Lzo0SbQ1.js.gz +0 -0
- codex-2.5.4/codex/static/assets/rules-DrDSf0fE.js +1 -0
- codex-2.5.4/codex/static/assets/rules-DrDSf0fE.js.br +0 -0
- codex-2.5.4/codex/static/assets/rules-DrDSf0fE.js.gz +0 -0
- codex-2.5.4/codex/static/assets/settings-tab-DfQDkUXj.js +1 -0
- codex-2.5.4/codex/static/assets/settings-tab-DfQDkUXj.js.br +0 -0
- codex-2.5.4/codex/static/assets/settings-tab-DfQDkUXj.js.gz +0 -0
- codex-2.5.4/codex/static/assets/sso-error-CENd54BZ.js +1 -0
- codex-2.5.4/codex/static/assets/sso-error-CENd54BZ.js.br +0 -0
- codex-2.5.4/codex/static/assets/sso-error-CENd54BZ.js.gz +0 -0
- codex-2.5.4/codex/static/assets/sso-login-button-C-DOvxMe.js +1 -0
- codex-2.5.4/codex/static/assets/sso-login-button-C-DOvxMe.js.br +0 -0
- codex-2.5.4/codex/static/assets/sso-login-button-C-DOvxMe.js.gz +0 -0
- codex-2.5.4/codex/static/assets/ssrBoot-DlxlmH3u.js +1 -0
- codex-2.5.4/codex/static/assets/ssrBoot-DlxlmH3u.js.br +0 -0
- codex-2.5.4/codex/static/assets/ssrBoot-DlxlmH3u.js.gz +0 -0
- codex-2.5.4/codex/static/assets/stats-tab-DqjgojRP.js +1 -0
- codex-2.5.4/codex/static/assets/stats-tab-DqjgojRP.js.br +0 -0
- codex-2.5.4/codex/static/assets/stats-tab-DqjgojRP.js.gz +0 -0
- codex-2.5.4/codex/static/assets/submit-footer-i0x6RSsh.js +1 -0
- codex-2.5.4/codex/static/assets/submit-footer-i0x6RSsh.js.br +0 -0
- codex-2.5.4/codex/static/assets/submit-footer-i0x6RSsh.js.gz +0 -0
- codex-2.5.4/codex/static/assets/tagging-tab-mwlB_eKi.js +1 -0
- codex-2.5.4/codex/static/assets/tagging-tab-mwlB_eKi.js.br +0 -0
- codex-2.5.4/codex/static/assets/tagging-tab-mwlB_eKi.js.gz +0 -0
- codex-2.5.4/codex/static/assets/tooltip-ccIZ5bGX.js +1 -0
- codex-2.5.4/codex/static/assets/tooltip-ccIZ5bGX.js.br +0 -0
- codex-2.5.4/codex/static/assets/tooltip-ccIZ5bGX.js.gz +0 -0
- codex-2.5.4/codex/static/assets/transitions-C7qDTrRD.js +1 -0
- codex-2.5.4/codex/static/assets/transitions-C7qDTrRD.js.br +0 -0
- codex-2.5.4/codex/static/assets/transitions-C7qDTrRD.js.gz +0 -0
- codex-2.5.4/codex/static/assets/unauthorized-DJ99j3L5.js +1 -0
- codex-2.5.4/codex/static/assets/unauthorized-DJ99j3L5.js.br +0 -0
- codex-2.5.4/codex/static/assets/unauthorized-DJ99j3L5.js.gz +0 -0
- codex-2.5.4/codex/static/assets/use-now-timer-C6d1odjI.js +1 -0
- codex-2.5.4/codex/static/assets/use-now-timer-C6d1odjI.js.br +0 -0
- codex-2.5.4/codex/static/assets/use-now-timer-C6d1odjI.js.gz +0 -0
- codex-2.5.4/codex/static/assets/user-tab-HfkOBuB-.js +1 -0
- codex-2.5.4/codex/static/assets/user-tab-HfkOBuB-.js.br +0 -0
- codex-2.5.4/codex/static/assets/user-tab-HfkOBuB-.js.gz +0 -0
- codex-2.5.4/codex/static/assets/vendor-vue-BGsxEsqj.js +4 -0
- codex-2.5.4/codex/static/assets/vendor-vue-BGsxEsqj.js.br +0 -0
- codex-2.5.4/codex/static/assets/vendor-vue-BGsxEsqj.js.gz +0 -0
- codex-2.5.4/codex/static/manifest.json +1825 -0
- codex-2.5.4/codex/static/manifest.json.br +0 -0
- codex-2.5.4/codex/static/manifest.json.gz +0 -0
- codex-2.5.4/docs/NEWS.md +2714 -0
- codex-2.5.4/frontend/.eslintcache +1 -0
- codex-2.5.4/frontend/bun.lock +845 -0
- codex-2.5.4/frontend/package.json +53 -0
- codex-2.5.4/frontend/src/app.vue +92 -0
- codex-2.5.4/frontend/src/components/admin/admin-header.vue +126 -0
- codex-2.5.4/frontend/src/components/admin/drawer/admin-menu.vue +153 -0
- codex-2.5.4/frontend/src/components/browser/toolbars/top/browser-toolbar-top.vue +89 -0
- codex-2.5.4/frontend/src/components/online-tag/review-button.vue +74 -0
- codex-2.5.4/frontend/src/components/reader/drawer/reader-settings-scope.vue +314 -0
- codex-2.5.4/frontend/src/components/reader/toolbars/nav/reader-toolbar-nav.vue +159 -0
- codex-2.5.4/frontend/src/components/reader/toolbars/top/reader-toolbar-top.vue +243 -0
- codex-2.5.4/frontend/src/components/reader/use-reader-keyup.js +49 -0
- codex-2.5.4/frontend/src/components/settings/button.vue +78 -0
- codex-2.5.4/frontend/src/stores/auth.js +274 -0
- codex-2.5.4/frontend/src/stores/online-tag.js +291 -0
- codex-2.5.4/frontend/tests/unit/online-tag-store.test.js +377 -0
- codex-2.5.4/frontend/tests/unit/review-button.test.js +78 -0
- codex-2.5.4/frontend/tests/unit/use-reader-keyup.test.js +149 -0
- codex-2.5.4/package.json +92 -0
- codex-2.5.4/pyproject.toml +443 -0
- codex-2.5.4/pyproject.toml.orig +410 -0
- codex-2.5.4/uv.lock +4547 -0
- codex-2.5.3/.dockerignore +0 -51
- codex-2.5.3/.github/actions/devenv-ci-container/action.yml +0 -35
- codex-2.5.3/.github/actions/devenv-pypi/action.yml +0 -50
- codex-2.5.3/.github/workflows/devenv-check.yml +0 -368
- codex-2.5.3/.github/workflows/devenv-release.yml +0 -48
- codex-2.5.3/.gitignore +0 -96
- codex-2.5.3/.prettierignore +0 -27
- codex-2.5.3/NEWS.md +0 -2705
- codex-2.5.3/PKG-INFO +0 -1299
- codex-2.5.3/bin/ci-reuse-dist.sh +0 -48
- codex-2.5.3/bin/cleanup-pypi-alpha.sh +0 -31
- codex-2.5.3/bin/dev-module.sh +0 -10
- codex-2.5.3/bin/docker-compose-exit.sh +0 -6
- codex-2.5.3/bin/docker-tag-latest.sh +0 -40
- codex-2.5.3/bin/find-sh.sh +0 -79
- codex-2.5.3/bin/fix-django.sh +0 -10
- codex-2.5.3/bin/fix-docker.sh +0 -11
- codex-2.5.3/bin/fix-sh.sh +0 -13
- codex-2.5.3/bin/hub_prune_stale.py +0 -519
- codex-2.5.3/bin/lint-ci.sh +0 -12
- codex-2.5.3/bin/lint-complexity.sh +0 -10
- codex-2.5.3/bin/lint-django.sh +0 -10
- codex-2.5.3/bin/lint-docker.sh +0 -12
- codex-2.5.3/bin/lint-python.sh +0 -13
- codex-2.5.3/bin/lint-sh.sh +0 -14
- codex-2.5.3/bin/manage.py +0 -67
- codex-2.5.3/bin/pm +0 -5
- codex-2.5.3/bin/prettier-nginx.sh +0 -7
- codex-2.5.3/bin/release_info.py +0 -238
- codex-2.5.3/bin/roman.py +0 -215
- codex-2.5.3/bin/run-test-proxy.sh +0 -102
- codex-2.5.3/bin/sort-ignore.sh +0 -21
- codex-2.5.3/bin/test-python.sh +0 -7
- codex-2.5.3/bin/type-python.sh +0 -9
- codex-2.5.3/bin/uml.sh +0 -5
- codex-2.5.3/bun.lock +0 -804
- codex-2.5.3/codex/static/assets/VAvatar-DdHpNUDY.js +0 -1
- codex-2.5.3/codex/static/assets/VAvatar-DdHpNUDY.js.br +0 -0
- codex-2.5.3/codex/static/assets/VAvatar-DdHpNUDY.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VCard-DXhxduH4.js +0 -1
- codex-2.5.3/codex/static/assets/VCard-DXhxduH4.js.br +0 -0
- codex-2.5.3/codex/static/assets/VCard-DXhxduH4.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VCheckbox-DhWKOLRz.js +0 -1
- codex-2.5.3/codex/static/assets/VCheckbox-DhWKOLRz.js.br +0 -0
- codex-2.5.3/codex/static/assets/VCheckbox-DhWKOLRz.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VCheckboxBtn-CPk-0r1D.js +0 -1
- codex-2.5.3/codex/static/assets/VCheckboxBtn-CPk-0r1D.js.br +0 -0
- codex-2.5.3/codex/static/assets/VCheckboxBtn-CPk-0r1D.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VChip-GzIaeTOr.js +0 -1
- codex-2.5.3/codex/static/assets/VChip-GzIaeTOr.js.br +0 -0
- codex-2.5.3/codex/static/assets/VChip-GzIaeTOr.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VCombobox-DA46qQSS.js +0 -2
- codex-2.5.3/codex/static/assets/VCombobox-DA46qQSS.js.br +0 -0
- codex-2.5.3/codex/static/assets/VCombobox-DA46qQSS.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VContainer-DLecMRXM.js +0 -1
- codex-2.5.3/codex/static/assets/VContainer-DLecMRXM.js.br +0 -4
- codex-2.5.3/codex/static/assets/VContainer-DLecMRXM.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VDataTableVirtual-Ddh6n0_-.js +0 -1
- codex-2.5.3/codex/static/assets/VDataTableVirtual-Ddh6n0_-.js.br +0 -0
- codex-2.5.3/codex/static/assets/VDataTableVirtual-Ddh6n0_-.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VDivider-6ZPJQr_P.js +0 -1
- codex-2.5.3/codex/static/assets/VDivider-6ZPJQr_P.js.br +0 -0
- codex-2.5.3/codex/static/assets/VDivider-6ZPJQr_P.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VExpansionPanels-BEa2RVuA.js +0 -1
- codex-2.5.3/codex/static/assets/VExpansionPanels-BEa2RVuA.js.br +0 -0
- codex-2.5.3/codex/static/assets/VExpansionPanels-BEa2RVuA.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VForm-CwBf7nLd.js +0 -1
- codex-2.5.3/codex/static/assets/VForm-CwBf7nLd.js.br +0 -0
- codex-2.5.3/codex/static/assets/VForm-CwBf7nLd.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VListItem-CJuohL18.js +0 -1
- codex-2.5.3/codex/static/assets/VListItem-CJuohL18.js.br +0 -0
- codex-2.5.3/codex/static/assets/VListItem-CJuohL18.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VMenu-tg4iBdvv.js +0 -1
- codex-2.5.3/codex/static/assets/VMenu-tg4iBdvv.js.br +0 -0
- codex-2.5.3/codex/static/assets/VMenu-tg4iBdvv.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VOverlay-C4pA3V5D.js +0 -1
- codex-2.5.3/codex/static/assets/VOverlay-C4pA3V5D.js.br +0 -0
- codex-2.5.3/codex/static/assets/VOverlay-C4pA3V5D.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VProgressCircular-AxOvqxiN.js +0 -10
- codex-2.5.3/codex/static/assets/VProgressCircular-AxOvqxiN.js.br +0 -0
- codex-2.5.3/codex/static/assets/VProgressCircular-AxOvqxiN.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VRadioGroup-D4sZNK_8.js +0 -1
- codex-2.5.3/codex/static/assets/VRadioGroup-D4sZNK_8.js.br +0 -0
- codex-2.5.3/codex/static/assets/VRadioGroup-D4sZNK_8.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VSelect-D7vYxona.js +0 -2
- codex-2.5.3/codex/static/assets/VSelect-D7vYxona.js.br +0 -0
- codex-2.5.3/codex/static/assets/VSelect-D7vYxona.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VSelectionControl-B_UsjmEz.js +0 -1
- codex-2.5.3/codex/static/assets/VSelectionControl-B_UsjmEz.js.br +0 -0
- codex-2.5.3/codex/static/assets/VSelectionControl-B_UsjmEz.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VSnackbar-CVvz_1P0.js +0 -1
- codex-2.5.3/codex/static/assets/VSnackbar-CVvz_1P0.js.br +0 -0
- codex-2.5.3/codex/static/assets/VSnackbar-CVvz_1P0.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VSpacer-BAWblP_J.js +0 -1
- codex-2.5.3/codex/static/assets/VTable-DbFqOB8M.js +0 -1
- codex-2.5.3/codex/static/assets/VTable-DbFqOB8M.js.br +0 -0
- codex-2.5.3/codex/static/assets/VTable-DbFqOB8M.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VTabs-B2rTkL-I.js +0 -1
- codex-2.5.3/codex/static/assets/VTabs-B2rTkL-I.js.br +0 -0
- codex-2.5.3/codex/static/assets/VTabs-B2rTkL-I.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VTextField-DzxhFHAO.js +0 -1
- codex-2.5.3/codex/static/assets/VTextField-DzxhFHAO.js.br +0 -0
- codex-2.5.3/codex/static/assets/VTextField-DzxhFHAO.js.gz +0 -0
- codex-2.5.3/codex/static/assets/VTooltip-CpqvjC_I.js +0 -1
- codex-2.5.3/codex/static/assets/VTooltip-CpqvjC_I.js.br +0 -0
- codex-2.5.3/codex/static/assets/VTooltip-CpqvjC_I.js.gz +0 -0
- codex-2.5.3/codex/static/assets/action-bar-B2DjHDDp.js +0 -1
- codex-2.5.3/codex/static/assets/action-bar-B2DjHDDp.js.br +0 -0
- codex-2.5.3/codex/static/assets/action-bar-B2DjHDDp.js.gz +0 -0
- codex-2.5.3/codex/static/assets/admin-3GcDyuYC.js +0 -1
- codex-2.5.3/codex/static/assets/admin-3GcDyuYC.js.br +0 -0
- codex-2.5.3/codex/static/assets/admin-9LJVwGvx.js +0 -1
- codex-2.5.3/codex/static/assets/admin-9LJVwGvx.js.br +0 -0
- codex-2.5.3/codex/static/assets/admin-9LJVwGvx.js.gz +0 -0
- codex-2.5.3/codex/static/assets/admin-CsX6xicI.js +0 -1
- codex-2.5.3/codex/static/assets/admin-CsX6xicI.js.br +0 -0
- codex-2.5.3/codex/static/assets/admin-DP7RaHQC.js +0 -1
- codex-2.5.3/codex/static/assets/admin-DP7RaHQC.js.br +0 -0
- codex-2.5.3/codex/static/assets/admin-DP7RaHQC.js.gz +0 -0
- codex-2.5.3/codex/static/assets/admin-DrQmmXRb.js +0 -1
- codex-2.5.3/codex/static/assets/admin-DrQmmXRb.js.br +0 -0
- codex-2.5.3/codex/static/assets/admin-DrQmmXRb.js.gz +0 -0
- codex-2.5.3/codex/static/assets/admin-DrZqnft6.css +0 -1
- codex-2.5.3/codex/static/assets/admin-DrZqnft6.css.br +0 -0
- codex-2.5.3/codex/static/assets/admin-DrZqnft6.css.gz +0 -0
- codex-2.5.3/codex/static/assets/admin-menu-Bo1KZBIe.js +0 -1
- codex-2.5.3/codex/static/assets/admin-menu-Bo1KZBIe.js.br +0 -0
- codex-2.5.3/codex/static/assets/admin-menu-Bo1KZBIe.js.gz +0 -0
- codex-2.5.3/codex/static/assets/admin-menu-Dk5nS7Ea.css +0 -1
- codex-2.5.3/codex/static/assets/admin-menu-Dk5nS7Ea.css.br +0 -0
- codex-2.5.3/codex/static/assets/admin-menu-Dk5nS7Ea.css.gz +0 -0
- codex-2.5.3/codex/static/assets/admin-section-D4DQuE2f.js +0 -1
- codex-2.5.3/codex/static/assets/admin-section-D4DQuE2f.js.br +0 -0
- codex-2.5.3/codex/static/assets/admin-section-D4DQuE2f.js.gz +0 -0
- codex-2.5.3/codex/static/assets/admin-settings-button-errors-C4RaPCFM.js +0 -1
- codex-2.5.3/codex/static/assets/admin-settings-button-errors-C4RaPCFM.js.br +0 -0
- codex-2.5.3/codex/static/assets/admin-settings-button-errors-C4RaPCFM.js.gz +0 -0
- codex-2.5.3/codex/static/assets/admin-settings-button-progress-C8egXuv5.js +0 -1
- codex-2.5.3/codex/static/assets/admin-settings-button-progress-C8egXuv5.js.br +0 -0
- codex-2.5.3/codex/static/assets/admin-settings-button-progress-C8egXuv5.js.gz +0 -0
- codex-2.5.3/codex/static/assets/admin-settings-button-prompts-3DmurNi6.js +0 -1
- codex-2.5.3/codex/static/assets/admin-settings-button-prompts-3DmurNi6.js.br +0 -1
- codex-2.5.3/codex/static/assets/admin-settings-button-prompts-3DmurNi6.js.gz +0 -0
- codex-2.5.3/codex/static/assets/admin-settings-button-prompts-DqHaoDam.css +0 -1
- codex-2.5.3/codex/static/assets/admin-settings-button-prompts-DqHaoDam.css.br +0 -0
- codex-2.5.3/codex/static/assets/admin-settings-button-prompts-DqHaoDam.css.gz +0 -0
- codex-2.5.3/codex/static/assets/auth-CrGGIw8g.js +0 -1
- codex-2.5.3/codex/static/assets/auth-CrGGIw8g.js.br +0 -0
- codex-2.5.3/codex/static/assets/auth-CrGGIw8g.js.gz +0 -0
- codex-2.5.3/codex/static/assets/auth-form-mixin-CW0SL_mT.js +0 -1
- codex-2.5.3/codex/static/assets/auth-form-mixin-CW0SL_mT.js.br +0 -0
- codex-2.5.3/codex/static/assets/auth-form-mixin-CW0SL_mT.js.gz +0 -0
- codex-2.5.3/codex/static/assets/auth-tab-CVaclmoB.js +0 -16
- codex-2.5.3/codex/static/assets/auth-tab-CVaclmoB.js.br +0 -0
- codex-2.5.3/codex/static/assets/auth-tab-CVaclmoB.js.gz +0 -0
- codex-2.5.3/codex/static/assets/browser-B_dYnctU.js +0 -2
- codex-2.5.3/codex/static/assets/browser-B_dYnctU.js.br +0 -0
- codex-2.5.3/codex/static/assets/browser-B_dYnctU.js.gz +0 -0
- codex-2.5.3/codex/static/assets/browser-DHwaE9T0.js +0 -2
- codex-2.5.3/codex/static/assets/browser-DHwaE9T0.js.br +0 -0
- codex-2.5.3/codex/static/assets/browser-DHwaE9T0.js.gz +0 -0
- codex-2.5.3/codex/static/assets/browser-KQS1nie9.css +0 -1
- codex-2.5.3/codex/static/assets/browser-KQS1nie9.css.br +0 -0
- codex-2.5.3/codex/static/assets/browser-KQS1nie9.css.gz +0 -0
- codex-2.5.3/codex/static/assets/browser-table-column-picker-CjUoiZsL.js +0 -1
- codex-2.5.3/codex/static/assets/browser-table-column-picker-CjUoiZsL.js.br +0 -0
- codex-2.5.3/codex/static/assets/browser-table-column-picker-CjUoiZsL.js.gz +0 -0
- codex-2.5.3/codex/static/assets/clipboard-DiteTKhD.js +0 -1
- codex-2.5.3/codex/static/assets/clipboard-DiteTKhD.js.br +0 -0
- codex-2.5.3/codex/static/assets/clipboard-DiteTKhD.js.gz +0 -0
- codex-2.5.3/codex/static/assets/close-button-C59N9FDX.js +0 -1
- codex-2.5.3/codex/static/assets/close-button-C59N9FDX.js.br +0 -0
- codex-2.5.3/codex/static/assets/close-button-C59N9FDX.js.gz +0 -0
- codex-2.5.3/codex/static/assets/codex-list-item-B46Ixpn5.js +0 -1
- codex-2.5.3/codex/static/assets/codex-list-item-B46Ixpn5.js.br +0 -0
- codex-2.5.3/codex/static/assets/codex-list-item-B46Ixpn5.js.gz +0 -0
- codex-2.5.3/codex/static/assets/common-CRHCnyut.js +0 -1
- codex-2.5.3/codex/static/assets/common-CRHCnyut.js.br +0 -0
- codex-2.5.3/codex/static/assets/common-CRHCnyut.js.gz +0 -0
- codex-2.5.3/codex/static/assets/confirm-dialog-DJm9SFn5.js +0 -1
- codex-2.5.3/codex/static/assets/confirm-dialog-DJm9SFn5.js.br +0 -0
- codex-2.5.3/codex/static/assets/confirm-dialog-DJm9SFn5.js.gz +0 -0
- codex-2.5.3/codex/static/assets/confirm-footer-DB2cu8ua.js +0 -1
- codex-2.5.3/codex/static/assets/confirm-footer-DB2cu8ua.js.br +0 -0
- codex-2.5.3/codex/static/assets/confirm-footer-DB2cu8ua.js.gz +0 -0
- codex-2.5.3/codex/static/assets/cover-popup-DyjsAvp_.js +0 -1
- codex-2.5.3/codex/static/assets/cover-popup-DyjsAvp_.js.br +0 -0
- codex-2.5.3/codex/static/assets/cover-popup-DyjsAvp_.js.gz +0 -0
- codex-2.5.3/codex/static/assets/createSimpleFunctional-C30IatX9.js +0 -1
- codex-2.5.3/codex/static/assets/createSimpleFunctional-C30IatX9.js.br +0 -2
- codex-2.5.3/codex/static/assets/createSimpleFunctional-C30IatX9.js.gz +0 -0
- codex-2.5.3/codex/static/assets/custom-covers-tab-C6tNnKyJ.js +0 -1
- codex-2.5.3/codex/static/assets/custom-covers-tab-C6tNnKyJ.js.br +0 -0
- codex-2.5.3/codex/static/assets/custom-covers-tab-C6tNnKyJ.js.gz +0 -0
- codex-2.5.3/codex/static/assets/datetime-column-CmmUMHgV.js +0 -1
- codex-2.5.3/codex/static/assets/datetime-column-CmmUMHgV.js.br +0 -4
- codex-2.5.3/codex/static/assets/datetime-column-CmmUMHgV.js.gz +0 -0
- codex-2.5.3/codex/static/assets/defaults-tab-BRlukOgu.js +0 -1
- codex-2.5.3/codex/static/assets/defaults-tab-BRlukOgu.js.br +0 -0
- codex-2.5.3/codex/static/assets/defaults-tab-BRlukOgu.js.gz +0 -0
- codex-2.5.3/codex/static/assets/delete-row-dialog-C4YX0Lv_.js +0 -1
- codex-2.5.3/codex/static/assets/delete-row-dialog-C4YX0Lv_.js.br +0 -0
- codex-2.5.3/codex/static/assets/delete-row-dialog-C4YX0Lv_.js.gz +0 -0
- codex-2.5.3/codex/static/assets/display-BuWWuJ4S.js +0 -1
- codex-2.5.3/codex/static/assets/display-BuWWuJ4S.js.br +0 -0
- codex-2.5.3/codex/static/assets/display-BuWWuJ4S.js.gz +0 -0
- codex-2.5.3/codex/static/assets/dist-CGi8j66w.js +0 -1
- codex-2.5.3/codex/static/assets/dist-CGi8j66w.js.br +0 -0
- codex-2.5.3/codex/static/assets/dist-CGi8j66w.js.gz +0 -0
- codex-2.5.3/codex/static/assets/doctor-tab-TPc4IBn0.js +0 -1
- codex-2.5.3/codex/static/assets/doctor-tab-TPc4IBn0.js.br +0 -0
- codex-2.5.3/codex/static/assets/doctor-tab-TPc4IBn0.js.gz +0 -0
- codex-2.5.3/codex/static/assets/edit-panel-BAarnpdo.js +0 -1
- codex-2.5.3/codex/static/assets/edit-panel-BAarnpdo.js.br +0 -0
- codex-2.5.3/codex/static/assets/edit-panel-BAarnpdo.js.gz +0 -0
- codex-2.5.3/codex/static/assets/email-tab-Ca6Fsdk9.js +0 -1
- codex-2.5.3/codex/static/assets/email-tab-Ca6Fsdk9.js.br +0 -0
- codex-2.5.3/codex/static/assets/email-tab-Ca6Fsdk9.js.gz +0 -0
- codex-2.5.3/codex/static/assets/expand-toggle-DTPlu7K0.js +0 -1
- codex-2.5.3/codex/static/assets/expand-toggle-DTPlu7K0.js.br +0 -0
- codex-2.5.3/codex/static/assets/expand-toggle-DTPlu7K0.js.gz +0 -0
- codex-2.5.3/codex/static/assets/flag-card-CKSc2jmj.js +0 -1
- codex-2.5.3/codex/static/assets/flag-card-CKSc2jmj.js.br +0 -0
- codex-2.5.3/codex/static/assets/flag-card-CKSc2jmj.js.gz +0 -0
- codex-2.5.3/codex/static/assets/forwardRefs-CQ7JSDvX.js +0 -1
- codex-2.5.3/codex/static/assets/forwardRefs-CQ7JSDvX.js.br +0 -0
- codex-2.5.3/codex/static/assets/forwardRefs-CQ7JSDvX.js.gz +0 -0
- codex-2.5.3/codex/static/assets/goto-DQATdzVR.js +0 -1
- codex-2.5.3/codex/static/assets/goto-DQATdzVR.js.br +0 -0
- codex-2.5.3/codex/static/assets/goto-DQATdzVR.js.gz +0 -0
- codex-2.5.3/codex/static/assets/group-tab-9iJJwPBw.js +0 -1
- codex-2.5.3/codex/static/assets/group-tab-9iJJwPBw.js.br +0 -0
- codex-2.5.3/codex/static/assets/group-tab-9iJJwPBw.js.gz +0 -0
- codex-2.5.3/codex/static/assets/http-error-BcNAKL62.js +0 -1
- codex-2.5.3/codex/static/assets/http-error-BcNAKL62.js.br +0 -0
- codex-2.5.3/codex/static/assets/http-error-BcNAKL62.js.gz +0 -0
- codex-2.5.3/codex/static/assets/job-tab-B7rgBMZd.js +0 -1
- codex-2.5.3/codex/static/assets/job-tab-B7rgBMZd.js.br +0 -0
- codex-2.5.3/codex/static/assets/job-tab-B7rgBMZd.js.gz +0 -0
- codex-2.5.3/codex/static/assets/launcher-dialog-D15ogJ0j.js +0 -1
- codex-2.5.3/codex/static/assets/launcher-dialog-D15ogJ0j.js.br +0 -0
- codex-2.5.3/codex/static/assets/launcher-dialog-D15ogJ0j.js.gz +0 -0
- codex-2.5.3/codex/static/assets/layout-Nn7ShA_a.js +0 -1
- codex-2.5.3/codex/static/assets/layout-Nn7ShA_a.js.br +0 -0
- codex-2.5.3/codex/static/assets/layout-Nn7ShA_a.js.gz +0 -0
- codex-2.5.3/codex/static/assets/library-tab-CCelb_C4.js +0 -9
- codex-2.5.3/codex/static/assets/library-tab-CCelb_C4.js.br +0 -0
- codex-2.5.3/codex/static/assets/library-tab-CCelb_C4.js.gz +0 -0
- codex-2.5.3/codex/static/assets/main-DgaP3Wg8.js +0 -6
- codex-2.5.3/codex/static/assets/main-DgaP3Wg8.js.br +0 -0
- codex-2.5.3/codex/static/assets/main-DgaP3Wg8.js.gz +0 -0
- codex-2.5.3/codex/static/assets/online-tag-8xFKTKo1.js +0 -1
- codex-2.5.3/codex/static/assets/online-tag-8xFKTKo1.js.br +0 -0
- codex-2.5.3/codex/static/assets/online-tag-BNAwUiCf.js +0 -1
- codex-2.5.3/codex/static/assets/online-tag-BNAwUiCf.js.br +0 -0
- codex-2.5.3/codex/static/assets/online-tag-BNAwUiCf.js.gz +0 -0
- codex-2.5.3/codex/static/assets/pagination-toolbar--Tnc1gu-.js +0 -2
- codex-2.5.3/codex/static/assets/pagination-toolbar--Tnc1gu-.js.br +0 -0
- codex-2.5.3/codex/static/assets/pagination-toolbar--Tnc1gu-.js.gz +0 -0
- codex-2.5.3/codex/static/assets/pdf-doc-1N1TcjKw.js +0 -628
- codex-2.5.3/codex/static/assets/pdf-doc-1N1TcjKw.js.br +0 -0
- codex-2.5.3/codex/static/assets/pdf-doc-1N1TcjKw.js.gz +0 -0
- codex-2.5.3/codex/static/assets/pretty-bytes-bPWbBhT1.js +0 -1
- codex-2.5.3/codex/static/assets/pretty-bytes-bPWbBhT1.js.br +0 -0
- codex-2.5.3/codex/static/assets/pretty-bytes-bPWbBhT1.js.gz +0 -0
- codex-2.5.3/codex/static/assets/prompt-popup-3zTDx2SS.js +0 -2
- codex-2.5.3/codex/static/assets/prompt-popup-3zTDx2SS.js.br +0 -0
- codex-2.5.3/codex/static/assets/prompt-popup-3zTDx2SS.js.gz +0 -0
- codex-2.5.3/codex/static/assets/prompt-popup-Cz9a0fkb.css +0 -1
- codex-2.5.3/codex/static/assets/prompt-popup-Cz9a0fkb.css.br +0 -0
- codex-2.5.3/codex/static/assets/prompt-popup-Cz9a0fkb.css.gz +0 -0
- codex-2.5.3/codex/static/assets/reader-BBBNlcup.js +0 -1
- codex-2.5.3/codex/static/assets/reader-BBBNlcup.js.br +0 -0
- codex-2.5.3/codex/static/assets/reader-BBBNlcup.js.gz +0 -0
- codex-2.5.3/codex/static/assets/reader-CNPO0Irv.js +0 -2
- codex-2.5.3/codex/static/assets/reader-CNPO0Irv.js.br +0 -0
- codex-2.5.3/codex/static/assets/reader-CNPO0Irv.js.gz +0 -0
- codex-2.5.3/codex/static/assets/reader-D-Ivf0Vs.css +0 -1
- codex-2.5.3/codex/static/assets/reader-D-Ivf0Vs.css.br +0 -0
- codex-2.5.3/codex/static/assets/reader-D-Ivf0Vs.css.gz +0 -0
- codex-2.5.3/codex/static/assets/reader-NcI1oC8z.js +0 -1
- codex-2.5.3/codex/static/assets/reader-NcI1oC8z.js.br +0 -0
- codex-2.5.3/codex/static/assets/reader-NcI1oC8z.js.gz +0 -0
- codex-2.5.3/codex/static/assets/reader-settings-controls-D5Yx27RI.js +0 -1
- codex-2.5.3/codex/static/assets/reader-settings-controls-D5Yx27RI.js.br +0 -0
- codex-2.5.3/codex/static/assets/reader-settings-controls-D5Yx27RI.js.gz +0 -0
- codex-2.5.3/codex/static/assets/relation-chips-D9q4joMy.js +0 -1
- codex-2.5.3/codex/static/assets/relation-chips-D9q4joMy.js.br +0 -0
- codex-2.5.3/codex/static/assets/relation-chips-D9q4joMy.js.gz +0 -0
- codex-2.5.3/codex/static/assets/reset-password-confirm-DsyxRwIk.js +0 -1
- codex-2.5.3/codex/static/assets/reset-password-confirm-DsyxRwIk.js.br +0 -0
- codex-2.5.3/codex/static/assets/reset-password-confirm-DsyxRwIk.js.gz +0 -0
- codex-2.5.3/codex/static/assets/restore-tab-BUGBHTaN.js +0 -3
- codex-2.5.3/codex/static/assets/restore-tab-BUGBHTaN.js.br +0 -0
- codex-2.5.3/codex/static/assets/restore-tab-BUGBHTaN.js.gz +0 -0
- codex-2.5.3/codex/static/assets/rules-ow24Hp6m.js +0 -1
- codex-2.5.3/codex/static/assets/rules-ow24Hp6m.js.br +0 -0
- codex-2.5.3/codex/static/assets/rules-ow24Hp6m.js.gz +0 -0
- codex-2.5.3/codex/static/assets/settings-tab-B9-VBp9T.js +0 -1
- codex-2.5.3/codex/static/assets/settings-tab-B9-VBp9T.js.br +0 -0
- codex-2.5.3/codex/static/assets/settings-tab-B9-VBp9T.js.gz +0 -0
- codex-2.5.3/codex/static/assets/sso-error-Beu1JGiw.js +0 -1
- codex-2.5.3/codex/static/assets/sso-error-Beu1JGiw.js.br +0 -0
- codex-2.5.3/codex/static/assets/sso-error-Beu1JGiw.js.gz +0 -0
- codex-2.5.3/codex/static/assets/sso-login-button-C6XCcj7v.js +0 -1
- codex-2.5.3/codex/static/assets/sso-login-button-C6XCcj7v.js.br +0 -2
- codex-2.5.3/codex/static/assets/sso-login-button-C6XCcj7v.js.gz +0 -0
- codex-2.5.3/codex/static/assets/ssrBoot-B5nC0Adp.js +0 -1
- codex-2.5.3/codex/static/assets/ssrBoot-B5nC0Adp.js.br +0 -0
- codex-2.5.3/codex/static/assets/ssrBoot-B5nC0Adp.js.gz +0 -0
- codex-2.5.3/codex/static/assets/stats-tab-DxhB8RPX.js +0 -1
- codex-2.5.3/codex/static/assets/stats-tab-DxhB8RPX.js.br +0 -0
- codex-2.5.3/codex/static/assets/stats-tab-DxhB8RPX.js.gz +0 -0
- codex-2.5.3/codex/static/assets/submit-footer-dVGuy71v.js +0 -1
- codex-2.5.3/codex/static/assets/submit-footer-dVGuy71v.js.br +0 -0
- codex-2.5.3/codex/static/assets/submit-footer-dVGuy71v.js.gz +0 -0
- codex-2.5.3/codex/static/assets/tagging-tab-B-cqrEcw.js +0 -1
- codex-2.5.3/codex/static/assets/tagging-tab-B-cqrEcw.js.br +0 -0
- codex-2.5.3/codex/static/assets/tagging-tab-B-cqrEcw.js.gz +0 -0
- codex-2.5.3/codex/static/assets/tooltip-QHT_LM3F.js +0 -1
- codex-2.5.3/codex/static/assets/tooltip-QHT_LM3F.js.br +0 -0
- codex-2.5.3/codex/static/assets/tooltip-QHT_LM3F.js.gz +0 -0
- codex-2.5.3/codex/static/assets/transitions-DQTFfcM7.js +0 -1
- codex-2.5.3/codex/static/assets/transitions-DQTFfcM7.js.br +0 -0
- codex-2.5.3/codex/static/assets/transitions-DQTFfcM7.js.gz +0 -0
- codex-2.5.3/codex/static/assets/unauthorized-BN-o1uPl.js +0 -1
- codex-2.5.3/codex/static/assets/unauthorized-BN-o1uPl.js.br +0 -0
- codex-2.5.3/codex/static/assets/unauthorized-BN-o1uPl.js.gz +0 -0
- codex-2.5.3/codex/static/assets/use-now-timer-DTKILBVn.js +0 -1
- codex-2.5.3/codex/static/assets/use-now-timer-DTKILBVn.js.br +0 -0
- codex-2.5.3/codex/static/assets/use-now-timer-DTKILBVn.js.gz +0 -0
- codex-2.5.3/codex/static/assets/user-tab-DhhQz17a.js +0 -1
- codex-2.5.3/codex/static/assets/user-tab-DhhQz17a.js.br +0 -0
- codex-2.5.3/codex/static/assets/user-tab-DhhQz17a.js.gz +0 -0
- codex-2.5.3/codex/static/assets/vendor-vue-ujw8Piqg.js +0 -4
- codex-2.5.3/codex/static/assets/vendor-vue-ujw8Piqg.js.br +0 -0
- codex-2.5.3/codex/static/assets/vendor-vue-ujw8Piqg.js.gz +0 -0
- codex-2.5.3/codex/static/manifest.json +0 -1838
- codex-2.5.3/codex/static/manifest.json.br +0 -0
- codex-2.5.3/codex/static/manifest.json.gz +0 -0
- codex-2.5.3/docs/NEWS.md +0 -2705
- codex-2.5.3/frontend/.eslintcache +0 -1
- codex-2.5.3/frontend/bin/fix.sh +0 -23
- codex-2.5.3/frontend/bin/kill-eslint_d.sh +0 -5
- codex-2.5.3/frontend/bin/lint-darwin.sh +0 -10
- codex-2.5.3/frontend/bin/lint.sh +0 -12
- codex-2.5.3/frontend/bin/version-node.sh +0 -15
- codex-2.5.3/frontend/bun.lock +0 -839
- codex-2.5.3/frontend/package.json +0 -53
- codex-2.5.3/frontend/src/app.vue +0 -78
- codex-2.5.3/frontend/src/components/admin/admin-header.vue +0 -123
- codex-2.5.3/frontend/src/components/admin/drawer/admin-menu.vue +0 -160
- codex-2.5.3/frontend/src/components/admin/drawer/admin-settings-button-prompts.vue +0 -45
- codex-2.5.3/frontend/src/components/browser/toolbars/top/browser-toolbar-top.vue +0 -86
- codex-2.5.3/frontend/src/components/reader/drawer/reader-settings-scope.vue +0 -318
- codex-2.5.3/frontend/src/components/reader/toolbars/nav/reader-toolbar-nav.vue +0 -164
- codex-2.5.3/frontend/src/components/reader/toolbars/top/reader-toolbar-top.vue +0 -233
- codex-2.5.3/frontend/src/components/settings/button.vue +0 -87
- codex-2.5.3/frontend/src/stores/auth.js +0 -282
- codex-2.5.3/frontend/src/stores/online-tag.js +0 -269
- codex-2.5.3/frontend/tests/unit/online-tag-store.test.js +0 -332
- codex-2.5.3/package.json +0 -93
- codex-2.5.3/pyproject.toml +0 -444
- codex-2.5.3/pyproject.toml.orig +0 -411
- codex-2.5.3/uv.lock +0 -4549
- {codex-2.5.3 → codex-2.5.4}/.github/workflows/ci.yml +0 -0
- {codex-2.5.3 → codex-2.5.4}/.readthedocs.yaml +0 -0
- {codex-2.5.3 → codex-2.5.4}/.shellcheckrc +0 -0
- {codex-2.5.3 → codex-2.5.4}/.shellignore +0 -0
- {codex-2.5.3 → codex-2.5.4}/Makefile +0 -0
- {codex-2.5.3 → codex-2.5.4}/README.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/benchmark-opds.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/build-choices.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/build-dist.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/clean-pycache.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/collectstatic.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/delete-files.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/dev-docker.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/dev-prod-server.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/dev.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/fix-python.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/ghcr-prune-alphas.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/icons_transform.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/kill-codex.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/lint-vulture.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/localize-db.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/localize_library.sql +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/release-tag.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/sync_comic_logo.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/update-deps-node.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/update-deps-python.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/vendor-diff-package.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/vendor-patch-imports.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/bin/version-python.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/applications/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/applications/http.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/applications/lifespan.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/applications/websocket.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/applications/workers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/asgi.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/authentication.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/cache.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/choices/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/choices/admin.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/choices/browser.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/choices/choices_to_json.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/choices/jobs.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/choices/limits.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/choices/notifications.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/choices/onlinetag.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/choices/reader.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/choices/search.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/choices/statii.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/choices/tagging.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/collection.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/db_routers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/doctor/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/doctor/checks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/failed_login_log.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/README.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/bookmark/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/bookmark/bookmarkd.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/bookmark/last_route.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/bookmark/latest_version.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/bookmark/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/bookmark/update.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/bookmark/user_active.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/covers/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/covers/coverd.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/covers/create.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/covers/path.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/covers/purge.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/covers/status.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/covers/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/cron/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/cron/crond.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/db.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/README.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/events.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/filters.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/gone.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/import_task.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/mounted.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/poller/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/poller/poller.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/poller/snapshot.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/poller/snapshot_diff.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/poller/status.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/poller/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/status.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/watcher/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/watcher/data.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/watcher/dirs.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/watcher/events.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/watcher/move.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/watcher/status.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/watcher/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/fs/watcher/watcher.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/librariand.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/memory.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/mp_queue.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/notifier/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/notifier/notifierd.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/notifier/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/credential_validator.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/estimate.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/explicit_id.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/issue_id.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/onlinetagd.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/outcome_stats.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/prompt_apply.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/session_cache.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/session_manager.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/session_snapshot.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/session_state.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/status.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/statuses.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/stored_id_prepass.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/tag_pass_runner.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/onlinetag/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/pending_deletes.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/restarter/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/restarter/restarter.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/restarter/status.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/restarter/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/force_updater.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/const.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/create/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/create/comics.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/create/const.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/create/covers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/create/folders.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/create/foreign_keys.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/create/link_fks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/delete/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/delete/collect.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/delete/comics.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/delete/covers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/delete/existence.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/delete/folders.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/failed/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/failed/create.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/failed/failed.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/failed/query.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/finish.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/importer.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/init.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/link/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/link/const.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/link/covers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/link/delete.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/link/many_to_many.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/link/prepare.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/link/sum.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/moved/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/moved/comics.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/moved/covers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/moved/folders.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/pragmas.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/query/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/query/covers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/query/filters.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/query/foreign_keys.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/query/links.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/query/links_fk.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/query/links_m2m.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/query/update_comics.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/query/update_fks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/read/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/read/aggregate_path.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/read/const.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/read/extract.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/read/folders.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/read/foreign_keys.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/read/many_to_many.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/revive.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/search/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/search/prepare.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/search/sync_m2m.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/search/update.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/statii/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/statii/create.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/statii/delete.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/statii/failed.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/statii/link.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/statii/moved.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/statii/query.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/statii/read.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/statii/search.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/status.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/importer/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/adopt_folders.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/cleanup.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/failed_imports.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/integrity/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/integrity/foreign_keys.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/janitor.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/reap.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/scheduled_time.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/status.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/update.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/janitor/vacuum.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/lazy_importer.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/priority.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/scribed.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/search/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/search/const.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/search/handler.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/search/optimize.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/search/prepare.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/search/remove.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/search/status.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/search/sync.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/search/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/status.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/tag_writer.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/tagwrite_errors.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/tagwrite_rename.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/scribe/timestamp_update.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/status.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/status_controller.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/telemeter/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/telemeter/admin_stats.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/telemeter/count_stats.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/telemeter/per_user_stats.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/telemeter/scheduled_time.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/telemeter/stats.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/telemeter/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/telemeter/telemeter.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/threads.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/librarian/worker.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/mail.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/management/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/management/commands/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/management/commands/restore_user_data.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/middleware.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0001_init.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0002_auto_20200826_0622.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0003_auto_20200831_2033.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0004_failedimport.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0005_auto_20200918_0146.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0006_update_default_names_and_remove_duplicate_comics.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0007_auto_20211210_1710.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0008_alter_comic_created_at_alter_comic_format_and_more.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0009_alter_comic_parent_folder.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0010_haystack.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0011_library_groups_and_metadata_changes.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0012_rename_description_comic_comments.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0013_int_issue_count_longer_charfields.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0014_pdf_issue_suffix_remove_cover_image_sort_name.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0015_link_comics_to_top_level_folders.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0016_remove_comic_cover_path_librarianstatus.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0017_alter_timestamp_options_alter_adminflag_name_and_more.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0018_rename_userbookmark_bookmark.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0019_delete_queuejob.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0020_remove_search_tables.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0021_bookmark_fit_to_choices_read_in_reverse.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0022_bookmark_vertical_useractive_null_statuses.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0023_rename_credit_creator_and_more.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0024_comic_gtin_comic_story_arc_number.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0025_add_story_arc_number.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0026_comicbox_1.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0027_import_order_and_covers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0028_telemeter.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0029_comicfts.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0030_nocase_collation_day_month_indexes_status_types.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0031_adminflag_banner.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0032_alter_librarianstatus_preactive.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0033_alter_librarianstatus_status_type.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0034_comicbox2.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0035_fts_optmize.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0036_alter_comic_path_alter_customcover_path_and_more.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0037_redefine_reading_direction_filetype_choices.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0038_settings_tables.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0039_metron_age_rating_default_view_and_performance.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0040_reset_global_cache_book.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0041_cleanup_phantom_comic_as_folder_rows.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0042_browser_table_view_and_favorites.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0043_comicbox_tagging_defaults.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0044_alter_librarianstatus_status_type.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0045_library_read_only.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0046_comicboxtaggingdefaults_rename_files.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0047_oidc_settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0048_community_rating_alternative_issue.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0049_reprints.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0050_comicboxtaggingdefaults_metron_key.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0051_remove_comicboxtaggingdefaults_urls.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0052_comicboxtaggingdefaults_comicvine_url.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0053_comicbox_5_reprints_and_sort_memory.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0054_post_v2_3_3_schema.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0055_settings_defaults.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/0056_match_mode_ask.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/migrations/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/admin.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/age_rating.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/auth.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/base.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/bookmark.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/choices.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/collections.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/comic.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/favorite.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/fields.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/functions.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/identifier.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/library.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/named.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/paths.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/query.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/models/util.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/oidc.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/run.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/README.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/custom_cover.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/doctor.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/email.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/flags.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/groups.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/libraries.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/oidc.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/pending_deletes.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/settings_defaults.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/stats.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/tagging.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/throttle.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/admin/users.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/auth.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/browser/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/browser/choices.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/browser/filters.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/browser/metadata.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/browser/mixins.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/browser/mtime.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/browser/page.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/browser/saved.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/browser/settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/fields/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/fields/auth.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/fields/base.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/fields/browser.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/fields/collection.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/fields/reader.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/fields/sanitized.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/fields/settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/fields/stats.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/fields/vuetify.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/homepage.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/mixins.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/models/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/models/admin.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/models/base.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/models/bookmark.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/models/collections.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/models/comic.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/models/named.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/models/pycountry.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/opds/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/opds/authentication.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/opds/urls.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/opds/v1.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/opds/v2/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/opds/v2/facet.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/opds/v2/feed.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/opds/v2/links.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/opds/v2/metadata.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/opds/v2/progression.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/opds/v2/publication.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/opds/v2/unused.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/reader.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/redirect.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/route.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/serializers/versions.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/settings/README.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/settings/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/settings/codex.toml.default +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/settings/config.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/settings/db.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/settings/hypercorn_migrate.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/settings/logging.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/settings/secret_key.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/settings/servestatic.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/settings/timezone.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/signals/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/signals/django_signals.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/signals/os_signals.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/startup/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/startup/db.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/startup/loguru.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/startup/registration.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/account/js/account.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/account/js/account.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/account/js/account.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/account/js/onload.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/account/js/onload.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/account/js/onload.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VAvatar-PAjPc2KE.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VAvatar-PAjPc2KE.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VAvatar-PAjPc2KE.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VCard-dv-Dc592.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VCard-dv-Dc592.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VCard-dv-Dc592.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VCheckbox-ChRKi1kj.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VCheckbox-ChRKi1kj.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VCheckbox-ChRKi1kj.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VChip-pMOXPdio.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VChip-pMOXPdio.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VChip-pMOXPdio.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VCombobox-C3ha-zP2.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VCombobox-C3ha-zP2.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VCombobox-C3ha-zP2.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VContainer-ku9EbwM-.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VContainer-ku9EbwM-.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VContainer-ku9EbwM-.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VDataTableVirtual-BgzcmwBb.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VDataTableVirtual-BgzcmwBb.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VDataTableVirtual-BgzcmwBb.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VDivider-DvkP_iX7.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VDivider-DvkP_iX7.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VDivider-DvkP_iX7.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VExpansionPanels-cvCWEkWz.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VExpansionPanels-cvCWEkWz.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VExpansionPanels-cvCWEkWz.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VListItem-CZAZkqwj.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VListItem-CZAZkqwj.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VListItem-CZAZkqwj.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VMenu-AbtjXrI6.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VMenu-AbtjXrI6.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VMenu-AbtjXrI6.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VOverlay-DG-PukqI.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VOverlay-DG-PukqI.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VOverlay-DG-PukqI.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VProgressCircular-GPPnnKWp.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VProgressCircular-GPPnnKWp.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VProgressCircular-GPPnnKWp.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VRadioGroup-C9f4tbih.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VRadioGroup-C9f4tbih.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VRadioGroup-C9f4tbih.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VSelect-DdMCmFiT.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VSelect-DdMCmFiT.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VSelect-DdMCmFiT.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VSelectionControl-BoFo3GVJ.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VSelectionControl-BoFo3GVJ.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VSelectionControl-BoFo3GVJ.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VSnackbar-BjpINqLT.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VSnackbar-BjpINqLT.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VSnackbar-BjpINqLT.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VSpacer-DfbUir7X.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VTable-LbK8_KkU.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VTable-LbK8_KkU.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VTable-LbK8_KkU.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VTabs-C6gWhgyW.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VTabs-C6gWhgyW.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VTabs-C6gWhgyW.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VTextField-DVt19ZIG.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VTextField-DVt19ZIG.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VTextField-DVt19ZIG.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VTooltip-BI1qRHEp.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VTooltip-BI1qRHEp.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/VTooltip-BI1qRHEp.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/_plugin-vue_export-helper-BDNMzG2s.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/action-bar-BBtuZ452.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/action-bar-BBtuZ452.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/action-bar-BBtuZ452.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/admin-section-DutEJrAC.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/admin-section-DutEJrAC.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/admin-section-DutEJrAC.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/admin-settings-button-errors-8nyZgICC.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/admin-settings-button-errors-8nyZgICC.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/admin-settings-button-errors-8nyZgICC.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/admin-settings-button-progress-DJAsUqRu.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/auth-tab-CpvNjZwL.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/auth-tab-CpvNjZwL.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/auth-tab-CpvNjZwL.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/base-CLy6lQ2j.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/base-CLy6lQ2j.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/base-CLy6lQ2j.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/browser-table-column-picker-B-KmTQaR.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/browser-table-column-picker-B-KmTQaR.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/browser-table-column-picker-B-KmTQaR.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/clipboard-BJt098sL.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/clipboard-BJt098sL.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/clipboard-BJt098sL.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/close-button-3oqF5yoQ.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/close-button-3oqF5yoQ.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/codex-list-item-8h79A4kT.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/codex-list-item-8h79A4kT.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/codex-list-item-8h79A4kT.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/comic-name-CGOOijIX.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/comic-name-CGOOijIX.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/comic-name-CGOOijIX.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/confirm-dialog-D5_8m9zi.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/confirm-dialog-D5_8m9zi.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/confirm-dialog-D5_8m9zi.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/confirm-footer-qa14x_AQ.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/confirm-footer-qa14x_AQ.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/cover-popup-BqgJF1ur.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/cover-popup-BqgJF1ur.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/cover-popup-BqgJF1ur.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/custom-covers-tab-B5uHBUI4.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/custom-covers-tab-B5uHBUI4.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/custom-covers-tab-B5uHBUI4.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/datetime-6KSUmkh6.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/datetime-6KSUmkh6.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/datetime-6KSUmkh6.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/datetime-column-D6IIm0tQ.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/defaults-tab-cZjDQDaY.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/defaults-tab-cZjDQDaY.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/defaults-tab-cZjDQDaY.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/delete-row-dialog-CT_O7Q6B.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/delete-row-dialog-CT_O7Q6B.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/dist-Kll2twSG.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/dist-Kll2twSG.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/dist-Kll2twSG.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/dist.es2015-CD1KUkvy.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/dist.es2015-CD1KUkvy.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/dist.es2015-CD1KUkvy.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/dist.es2015-Cy0bzSGI.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/dist.es2015-Cy0bzSGI.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/dist.es2015-Cy0bzSGI.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/doctor-tab-0x2d9twH.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/doctor-tab-0x2d9twH.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/doctor-tab-0x2d9twH.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/easing-BKlyjday.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/easing-BKlyjday.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/easing-BKlyjday.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/edit-panel-BckXNuwl.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/edit-panel-BckXNuwl.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/edit-panel-BckXNuwl.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/email-tab-ai9a1pVt.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/email-tab-ai9a1pVt.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/email-tab-ai9a1pVt.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/expand-toggle-DB2JNmpB.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/expand-toggle-DB2JNmpB.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/expand-toggle-DB2JNmpB.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/flag-card-DUj78_QG.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/flag-card-DUj78_QG.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/flag-card-DUj78_QG.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/group-tab-CkJvWVyy.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/group-tab-CkJvWVyy.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/group-tab-CkJvWVyy.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/http-error-B4FHKAcr.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/http-error-B4FHKAcr.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/http-error-B4FHKAcr.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/job-tab-DTLS_Xg3.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/job-tab-DTLS_Xg3.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/job-tab-DTLS_Xg3.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/launcher-dialog-CpWa7zNB.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/launcher-dialog-CpWa7zNB.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/launcher-dialog-CpWa7zNB.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/library-tab-DXxbsPUa.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/library-tab-DXxbsPUa.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/library-tab-DXxbsPUa.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/limits-BejchfvK.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/limits-BejchfvK.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/limits-BejchfvK.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/main-BT7sVvWb.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/main-BT7sVvWb.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/main-BT7sVvWb.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/mdi-B2m8j20z.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/mdi-B2m8j20z.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/mdi-B2m8j20z.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/pagination-toolbar-BOVxJXqE.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/pagination-toolbar-BOVxJXqE.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/pagination-toolbar-BOVxJXqE.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/pdf-doc-BY-0-glL.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/pdf-doc-BY-0-glL.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/pdf-doc-BY-0-glL.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/reader-map-BVK2B5JV.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/reader-map-BVK2B5JV.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/reader-map-BVK2B5JV.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/reader-settings-controls-x0mnhxBq.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/reader-settings-controls-x0mnhxBq.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/relation-chips-BjO1ttEA.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/relation-chips-BjO1ttEA.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/relation-chips-BjO1ttEA.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/reset-password-confirm-Cw6u7xuL.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/reset-password-confirm-Cw6u7xuL.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/reset-password-confirm-Cw6u7xuL.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/restore-tab-BUaEpQgP.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/restore-tab-BUaEpQgP.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/restore-tab-BUaEpQgP.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/rolldown-runtime-DK3Fl9T5.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/rolldown-runtime-DK3Fl9T5.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/settings-tab-Dd3cBbi9.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/settings-tab-Dd3cBbi9.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/settings-tab-Dd3cBbi9.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/source-labels-CLbVHwH4.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/sso-error-irWbDBI-.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/sso-error-irWbDBI-.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/sso-error-irWbDBI-.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/stats-tab-BbivcwEc.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/stats-tab-BbivcwEc.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/stats-tab-BbivcwEc.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/submit-footer-DxBt30-N.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/submit-footer-DxBt30-N.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/submit-footer-DxBt30-N.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/tagging-choices-Cz8PJN0_.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/tagging-choices-Cz8PJN0_.js.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/tagging-choices-Cz8PJN0_.js.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/tagging-tab-DJO-yx23.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/tagging-tab-DJO-yx23.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/tagging-tab-DJO-yx23.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/unauthorized-DKcohWBG.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/unauthorized-DKcohWBG.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/unauthorized-DKcohWBG.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/user-tab-R3NglX8t.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/user-tab-R3NglX8t.css.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/assets/user-tab-R3NglX8t.css.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/comic-165.webp +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/comic.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/comic.svg.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/comic.svg.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/folder.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/folder.svg.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/folder.svg.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/imprint.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/imprint.svg.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/imprint.svg.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/logo-32.webp +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/logo-maskable-180.webp +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/logo-maskable.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/logo-maskable.svg.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/logo-maskable.svg.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/logo.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/logo.svg.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/logo.svg.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/publisher.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/publisher.svg.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/publisher.svg.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/series.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/series.svg.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/series.svg.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/story-arc.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/story-arc.svg.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/story-arc.svg.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/volume.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/volume.svg.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/img/volume.svg.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/pwa/offline.html +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/pwa/offline.html.br +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/pwa/offline.html.gz +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static/robots.txt +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/.picopt_treestamps.yaml +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/comic-165.webp +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/comic.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/folder.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/imprint.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/logo-32.webp +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/logo-maskable-180.webp +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/logo-maskable.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/logo.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/publisher.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/series.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/story-arc.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/img/volume.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/pwa/offline.html +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/static_src/robots.txt +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/README.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/headers-icons.html +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/headers-script-globals.html +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/index.html +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/opds_v1/index.xml +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/opds_v1/opensearch_v1.xml +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/pwa/headers.html +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/pwa/manifest.webmanifest +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/pwa/serviceworker-register.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/pwa/serviceworker.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/rest_registration/register/body.txt +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/rest_registration/register/subject.txt +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/rest_registration/reset_password/body.html +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/rest_registration/reset_password/body.txt +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/templates/rest_registration/reset_password/subject.txt +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/throttling.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/api/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/api/root.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/api/v4/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/api/v4/admin.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/api/v4/auth.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/api/v4/browse.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/api/v4/comics.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/api/v4/favorites.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/api/v4/reader.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/app.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/const.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/converters.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/opds/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/opds/authentication.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/opds/binary.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/opds/root.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/opds/v1.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/opds/v2.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/pwa.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/root.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/urls/spectacular.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/user_data/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/user_data/backups.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/user_data/dump.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/user_data/identifiers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/user_data/restore.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/user_data/schema.sql +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/user_data/serializers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/user_data/store.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/util.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/version.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/README.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/age_rating_metron.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/api_key.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/auth.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/custom_cover.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/doctor.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/dump_user_data.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/email.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/failed_imports_seen.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/flag.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/group.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/identifier_parse.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/json_api.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/library.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/oidc.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/onlinetag.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/pending_deletes.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/permissions.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/restore_user_data.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/settings_defaults.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/settings_defaults_catchup.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/stats.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/tag_write_errors.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/tagging_defaults.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/tagging_validate.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/tagwrite.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/tasks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/throttle.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/admin/user.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/auth.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/bookmark.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/annotate/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/annotate/bookmark.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/annotate/card.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/annotate/cover.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/annotate/order.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/bookmark.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/breadcrumbs.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/browser.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/choices.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/collection_mtime.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/columns.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/const.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/cover.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/download.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/bookmark.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/collection.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/field.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/filter.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/search/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/search/field/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/search/field/column.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/search/field/expression.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/search/field/filter.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/search/field/parse.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/search/fts.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/filters/search/parse.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/force_update.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/intersections.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/metadata/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/metadata/annotate.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/metadata/collection_list.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/metadata/const.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/metadata/copy_intersections.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/metadata/query_intersections.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/mtime.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/order_by.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/page_in_bounds.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/paginate.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/params.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/saved_settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/title.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/browser/validate.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/const.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/download.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/envelope.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/error.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/exceptions.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/favorites.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/frontend.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/healthcheck.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/lazy_import.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/mixins.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/auth.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/authentication/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/authentication/v1.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/binary.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/const.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/error.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/feed.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/metadata.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/opensearch/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/opensearch/v1.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/route.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/start.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/urls.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/user_agent.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v1/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v1/const.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v1/entry/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v1/entry/entry.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v1/entry/links.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v1/facets.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v1/feed.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v1/links.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v2/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v2/const.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v2/feed/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v2/feed/feed_links.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v2/feed/groups.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v2/feed/links.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v2/feed/publications.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v2/href.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v2/manifest.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v2/progression.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/opds/v2/renderers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/pagination.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/pwa.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/reader/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/reader/_archive_cache.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/reader/arcs.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/reader/books.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/reader/page.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/reader/params.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/reader/reader.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/reader/settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/register.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/reset_password.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/session.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/template.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/util.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/views/version.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/websockets/README.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/websockets/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/websockets/consumers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/websockets/listener.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/websockets/mp_queue.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/websockets/payloads.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/codex/xz.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/compose.yaml +0 -0
- {codex-2.5.3 → codex-2.5.4}/docs/DOCKER.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/docs/README.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/docs/WINDOWS.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/docs/codex/img/logo.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/docs/requirements.txt +0 -0
- {codex-2.5.3 → codex-2.5.4}/docs/strange.jpg +0 -0
- {codex-2.5.3 → codex-2.5.4}/docs/style.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/docs/style.material.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/docs/style.mkdocs.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/docs/style.readthedocs.css +0 -0
- {codex-2.5.3 → codex-2.5.4}/eslint.config.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/.gitignore +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/.npmrc +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/.prettierignore +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/.remarkignore +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/.shellcheckrc +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/DESIGN.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/Makefile +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/README.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/bin/dev-server.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/bin/fix-sh.sh +0 -0
- {codex-2.5.3 → codex-2.5.4/frontend}/bin/fix.sh +0 -0
- {codex-2.5.3 → codex-2.5.4/frontend}/bin/kill-eslint_d.sh +0 -0
- {codex-2.5.3 → codex-2.5.4/frontend}/bin/lint-darwin.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/bin/lint-sh.sh +0 -0
- {codex-2.5.3 → codex-2.5.4/frontend}/bin/lint.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/bin/release-tag.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/bin/remark-for-claude.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/bin/roman.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/bin/sort-ignore.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/bin/update-deps-node.sh +0 -0
- {codex-2.5.3 → codex-2.5.4/frontend}/bin/version-node.sh +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/cfg/codex-frontend.mk +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/cfg/common.mk +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/cfg/help.mk +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/cfg/node.mk +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/jsconfig.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/admin.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/api/v4/abortable.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/api/v4/admin.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/api/v4/auth.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/api/v4/base.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/api/v4/browser.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/api/v4/common.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/api/v4/cover-probe.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/api/v4/favorites.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/api/v4/notify.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/api/v4/reader.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/browser.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/admin-flag-choices.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/admin-jobs.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/admin-status-titles.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/browser-choices.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/browser-defaults.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/browser-map.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/browser-table-column-costs.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/browser-table-columns.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/browser-table-default-columns.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/countries.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/format-field-support.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/format-field-values.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/identifier-sources.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/identifier-type-by-codex-name.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/identifier-types.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/languages.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/limits.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/reader-choices.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/reader-defaults.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/reader-map.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/search-map.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/tagging-choices.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/tagging-estimate.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/choices/websocket-messages.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/comic-name.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/browser-link.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/create-update-dialog/create-update-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/create-update-dialog/create-update-dialog.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/create-update-dialog/create-update-inputs-mixin.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/create-update-dialog/duration-input.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/create-update-dialog/group-create-update-inputs.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/create-update-dialog/library-create-update-inputs.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/create-update-dialog/relation-picker.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/create-update-dialog/server-folder-picker.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/create-update-dialog/user-create-update-inputs.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/drawer/admin-settings-button-errors.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/drawer/admin-settings-button-progress.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/drawer/admin-settings-drawer.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/drawer/admin-settings-panel.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/drawer/status-list-item.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/drawer/status-list.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/group-chip.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/status-helpers.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/action-bar.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/admin-section.scss +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/admin-section.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/admin-table.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/auth-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/custom-covers-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/datetime-column.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/defaults-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/delete-row-dialog.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/design.scss +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/doctor-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/doctor-table.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/email-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/expand-toggle.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/failed-imports-panel.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/flag-card.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/flag-descriptions.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/flag-groups.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/group-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/job-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/key-value-table.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/library-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/library-table.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/pending-deletes-panel.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/relation-chips.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/replace-cover-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/restore-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/settings-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/stats-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/tabs.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/tag-write-errors-panel.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/tagging-status-table.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/tagging-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/tagging-validation-chip.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/throttling-section.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/tabs/user-tab.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/admin/use-now-timer.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/anchors.scss +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/auth/auth-form-mixin.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/auth/auth-menu.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/auth/auth-token.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/auth/change-password-dialog.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/auth/login-dialog.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/auth/profile-dialog.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/auth/reset-password-confirm.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/auth/reset-password-request-dialog.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/auth/sso-error.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/auth/sso-login-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/banner.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/book-cover.scss +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/book-cover.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/browser-header.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/card/browser-card-menu.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/card/card.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/card/controls.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/card/order-by-caption.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/card/remove-cover-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/card/subtitle.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/card/upload-cover-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/drawer/browser-settings-collection.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/drawer/browser-settings-covers.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/drawer/browser-settings-drawer.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/drawer/browser-settings-misc.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/drawer/browser-settings-panel.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/drawer/browser-settings-saved.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/empty.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/filter-warning-snackbar.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/main.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/table/browser-table-cell.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/table/browser-table-column-picker.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/table/browser-table.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/breadcrumbs/breadcrumbs.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/breadcrumbs/browser-toolbar-breadcrumbs.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/browser-toolbar-title.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/nav/browser-nav-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/nav/browser-toolbar-nav.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/search/browser-toolbar-search.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/search/search-combobox.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/search/search-help-text.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/search/search-help.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/select-many/browser-toolbar-select-many.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/top/columns-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/top/filter-by-select.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/top/filter-choice-list.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/top/filter-sub-menu.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/top/order-by-select.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/top/order-reverse-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/top/search-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/top/toolbar-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/top/top-collection-select.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/browser/toolbars/top/view-mode-toggle.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/cancel-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/clipboard.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/close-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/codex-list-item.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/confirm-dialog.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/confirm-footer.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/cover-popup.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/docker-hub-deprecated-snackbar.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/download-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/empty.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/favorite-toggle.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/force-update-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/force-update-confirm-dialog.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/mark-read-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/edit-mode/clear-field-icon.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/edit-mode/edit-panel.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/expand-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/metadata-activator.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/metadata-body.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/metadata-chip.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/metadata-controls.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/metadata-cover.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/metadata-dialog.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/metadata-header.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/metadata-ratings.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/metadata-tags.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/metadata-text.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/table.scss +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/metadata/tags-table.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/online-tag/candidate-row.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/online-tag/cover-size.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/online-tag/file-cover-thumb.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/online-tag/launcher-dialog.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/online-tag/prompt-popup.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/online-tag/source-labels.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/pagination-nav-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/pagination-slider.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/pagination-toolbar.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/placeholder-loading.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/read-state-bar.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/book-change-activator.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/book-change-drawer.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/books-window.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/change-column.scss +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/drawer/_expansion-panel-overrides.scss +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/drawer/download-panel.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/drawer/keyboard-shortcuts-panel.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/drawer/keyboard-shortcuts-table.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/drawer/reader-settings-controls.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/drawer/reader-settings-drawer.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/drawer/reader-settings-panel.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/drawer/reader-settings-reader.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/drawer/settings-indicator-dot.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/empty.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/pager/horizontal-pages.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/pager/page/page-error.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/pager/page/page-img.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/pager/page/page-loading.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/pager/page/page.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/pager/page-change-link.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/pager/pager-horizontal.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/pager/pager-vertical.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/pager/pager.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/pager/pdf-doc.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/pager/scale-for-scroll.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/toolbars/nav/reader-book-change-nav-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/toolbars/nav/reader-nav-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/reader/toolbars/top/reader-arc-select.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/scale-button.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/session-error-snackbar.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/settings/docs-footer.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/settings/opds-dialog.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/settings/opds-url.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/settings/settings-drawer.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/settings/version-footer.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/submit-footer.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/toolbar-select.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/components/unauthorized.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/datetime.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/http-error.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/main.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/platform.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/plugins/drag-scroll.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/plugins/router.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/plugins/rules.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/plugins/vuetify.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/read-state.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/reader.vue +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/route.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/stores/admin.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/stores/browser-select-many.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/stores/browser.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/stores/common.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/stores/favorites.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/stores/metadata.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/stores/reader.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/stores/socket.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/stores/store.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/styles/global.scss +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/util.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/src/vuetify-items.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/admin-field-errors.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/admin-menu.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/admin-oidc-store.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/admin-row-save.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/admin-settings-defaults-store.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/admin-store-helpers.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/admin-table-store.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/admin-tag-write-errors-store.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/api-v4-base-prefix.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/api-v4-envelope-redirect.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/auth-store.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/book-change-drawer.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/breadcrumbs.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-empty-clear-search.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-saved-views-delete.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-saved-views-menu.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-select-many-store.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-store-filter-settings.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-store-helpers.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-store-order-memory.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-store-saved-settings.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-store-search-clear.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-store-site-defaults.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-store-top-collection.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-table-cell.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-table-column-picker-standalone.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/browser-table-column-picker.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/candidate-row.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/change-password-dialog.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/common-store-errors.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/cover-buttons.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/cover-popup.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/cover-probe.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/create-update-dialog-validate.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/datetime-column.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/defaults-tab.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/docker-hub-deprecated-snackbar.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/doctor-tab.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/duration-input.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/edit-panel-collections.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/edit-panel-comicbox5-fields.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/edit-panel-community-rating.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/edit-panel-date.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/edit-panel-delete-keys.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/edit-panel-disabled-tooltips.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/edit-panel-identifiers.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/edit-panel-metron-fields.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/edit-panel-reprints.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/favorite-toggle.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/favorites-store.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/file-cover-thumb.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/filter-by-select.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/first-paint-defaults.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/job-tab-update-note.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/launcher-dialog.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/login-dialog.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/mark-read-button.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/metadata-activator.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/metadata-header.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/metadata-ratings.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/metadata-reprints.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/metadata-store-comicbox5.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/opds-dialog.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/order-by-caption.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/pager-vertical.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/pending-deletes-panel.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/profile-dialog.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/prompt-popup.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/read-state-bar.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/read-state.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/reader-arc-select.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/reader-nav-button.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/reader-settings-controls-standalone.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/reader-settings-scope-defaults.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/reader-settings-scope-shortcuts.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/reader-store-book-settings.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/reader-store-bookmark.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/reader-store-global-settings.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/reader-store-routes.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/reader-store-settings-race.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/rename-toggle.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/reset-password-confirm.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/reset-password-request-dialog.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/route-helpers.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/rules-plugin.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/sso-auth.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/stats-tab.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/status-helpers.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/tag-write-errors-panel.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/tagging-status-table.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/tagging-tab.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/tagging-validation-chip.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/theme-contract.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/tests/unit/version-footer.test.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/frontend/vite.config.js +0 -0
- {codex-2.5.3 → codex-2.5.4}/img/comic.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/img/folder.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/img/imprint.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/img/logo-maskable.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/img/logo.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/img/publisher.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/img/series.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/img/story-arc.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/img/volume.svg +0 -0
- {codex-2.5.3 → codex-2.5.4}/mkdocs.yml +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/README.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/conftest.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/files/comicbox-2-example.cbz +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/files/comicbox-2-update.cbz +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/files/comicbox.example.yaml +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/files/comicbox.update.yaml +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_basic.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_cross_library_path_collision.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_delete_backstop.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_failed_import_vanished.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_move_timestamps.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_moved_by_signature.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_moved_dest_collision.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_moved_folder_parents.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_moved_stat_preserved.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_pending_deletes.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_update_all.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_update_none.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_update_protagonist.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/importer/test_write_then_rename.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/nginx-local-codex.conf +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/onlinetag_session_fakes.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/opds_schema.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/perf/__init__.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/perf/run_baseline.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/perf/run_opds_baseline.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/perf/run_reader_baseline.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/README.md +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/fetch_schemas.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v1/atom.rnc +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v1/opds-pse-1.2.rnc +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v1/opds.rnc +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v1/opensearch-1.1.rnc +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/opds/acquisition-object.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/opds/authentication.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/opds/feed-metadata.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/opds/feed.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/opds/progression.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/opds/properties.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/opds/publication.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/a11y.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/altIdentifier.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/article.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/chapter.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/collection.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/contributor.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/episode.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/extensions/encryption/properties.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/extensions/epub/metadata.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/extensions/epub/properties.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/extensions/epub/subcollections.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/issue.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/language-map.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/link.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/metadata.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/periodical.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/publication.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/season.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/series.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/storyArc.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/subcollection.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/subject.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/schema/opds/v2/readium/volume.schema.json +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/settings_defaults_helpers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_admin_change_broadcasts.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_admin_custom_cover.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_admin_doctor_endpoint.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_admin_error_shapes.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_admin_flag_defaults.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_admin_oidc_settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_admin_pending_deletes.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_admin_query_counts.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_admin_singleton_settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_admin_status_order.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_admin_value_bounds.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_admin_writes.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_age_rating_acl.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_api_docs_urls.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_app_urls.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_asgi.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_asgi_db_connections.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_bookmark_filter_isolation.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_bookmark_mark_unread.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_bookmark_unique.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_breadcrumbs.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_browser_bookmark_unread.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_browser_columns_registry.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_browser_ordering.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_browser_reprints_column.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_browser_settings_table.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_browser_table_columns.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_browser_table_response.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_choices_limits.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_ci_workflow.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_collection_order_memory.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_collection_row_aggregates.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_community_rating.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_cover_pool_stop.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_cover_views.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_credential_validator.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_credits.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_credits_primary.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_crond.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_csp_onlinetag_covers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_db_backup.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_disk_snapshot_unreadable.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_dockerfile.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_doctor.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_doctor_codex_checks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_download_errors.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_failed_login_log.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_favorites_api.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_fs_filters_comic_suffixes.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_fs_filters_ignore.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_group.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_identifier_types.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_import_task_build.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_intersection_acl.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_janitor_cleanup_bookmarks.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_janitor_cleanup_custom_covers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_janitor_cleanup_orphan_covers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_janitor_cleanup_tagging_state.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_janitor_codex_update.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_janitor_failed_imports.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_janitor_folder_relations.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_janitor_fts_rebuild.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_latest_version_fetch.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_lazy_import.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_lazy_import_marker.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_librarian_status_updates.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_logging_filter.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_metadata_collection_list.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_metadata_get_no_writes.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_metadata_path.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_metadata_reprints.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_migration_age_rating_relink.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_migration_bookmark_dedupe.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_missing_acl.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_models.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_mtime_gate.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_oidc_login.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_oidc_settings.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_credentials.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_effort.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_estimate.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_issue_id.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_live_lookup.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_match_mode_ask.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_merge_task.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_outcome_stats.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_prompt_endpoints.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_prompt_resolution.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_prompt_version.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_quota_pause.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_resume_endpoints.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_serialize_candidate.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_session_manager.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_snapshot.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_onlinetag_tag_pass.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_opds_cache.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_opds_contributors.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_opds_degrade.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_opds_feed.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_opds_keep_reading.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_opds_progression_acl.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_opds_progression_put.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_opds_schema.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_opds_user_agent.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_password_reset.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_per_user_stats.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_poller_stat_refresh.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_read_only_library.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_reader.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_registration_settings_patch.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_release_info.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_reprints.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_route_serializer.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_saved_settings_delete.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_scribe_priority.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_search_field_expression.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_search_fts.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_search_reprints.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_settings_collection_flip.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_settings_comicbox_config.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_settings_defaults.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_settings_defaults_catchup.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_settings_defaults_migration.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_settings_defaults_seeding.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_settings_defaults_session.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_shape_identifiers.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_snapshot_diff.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_tag_by_id.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_tag_write_date.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_tag_write_delete_keys.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_tag_write_errors.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_tag_write_filters.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_tag_writer_preflight.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_tag_writer_progress.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_tag_writer_rename.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_tagging_rename_wiring.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_tagging_validate_endpoint.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_telemeter.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_telemeter_counts.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_telemeter_privacy.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_timezone.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_url_path_prefix.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_user_data_backups.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_user_data_dump.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_user_data_restore.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_user_data_snapshot.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_user_data_store.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_version_outdated.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_watcher_move_detect.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_watcher_path_prefixes.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_watcher_unmount_guard.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/test_xz.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/tests/tmp_dirs.py +0 -0
- {codex-2.5.3 → codex-2.5.4}/vulture_ignorelist.py +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
**/*.egg-info
|
|
2
|
+
**/*.py[co]
|
|
3
|
+
**/*~
|
|
4
|
+
**/.*cache
|
|
5
|
+
**/.DS_Store
|
|
6
|
+
**/__pycache__
|
|
7
|
+
**/node_modules
|
|
8
|
+
**/test-results
|
|
9
|
+
*.egg-info
|
|
10
|
+
*.py[co]
|
|
11
|
+
*Dockerfile
|
|
12
|
+
*~
|
|
13
|
+
.*cache
|
|
14
|
+
.DS_Store
|
|
15
|
+
.claude
|
|
16
|
+
.coverage*
|
|
17
|
+
.docker-token
|
|
18
|
+
.env*
|
|
19
|
+
.eslintcache
|
|
20
|
+
.ghrc-token
|
|
21
|
+
.git
|
|
22
|
+
.mypy_cache
|
|
23
|
+
.picopt_timestamp
|
|
24
|
+
.picopt_treestamps.yaml
|
|
25
|
+
.pypi-token
|
|
26
|
+
.pytest_cache
|
|
27
|
+
.ropeproject
|
|
28
|
+
.ruff_cache
|
|
29
|
+
.venv*
|
|
30
|
+
MANIFEST
|
|
31
|
+
NEWS
|
|
32
|
+
TODO.md
|
|
33
|
+
__pycache__
|
|
34
|
+
benchmark
|
|
35
|
+
cache
|
|
36
|
+
codex/static
|
|
37
|
+
codex/static_build
|
|
38
|
+
comics
|
|
39
|
+
config
|
|
40
|
+
dev*
|
|
41
|
+
docker*
|
|
42
|
+
docker-compose*
|
|
43
|
+
monkeytype.sqlite3
|
|
44
|
+
node_modules
|
|
45
|
+
site
|
|
46
|
+
test-results
|
|
47
|
+
update-builder-requirement.sh
|
|
48
|
+
version.sh
|
|
49
|
+
!Dockerfile
|
|
50
|
+
!dist
|
|
51
|
+
!docker/debian.sources
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Managed by devenv (copy/ci). Edit it there, not in a child repo.
|
|
2
|
+
name: devenv CI container
|
|
3
|
+
description: >-
|
|
4
|
+
Pull the CI image devenv-check's image job pushed, by digest, and start the
|
|
5
|
+
compose service "ci" from it. CI_CONTAINER comes from the calling
|
|
6
|
+
workflow's env.
|
|
7
|
+
inputs:
|
|
8
|
+
image:
|
|
9
|
+
description: The CI image by digest (devenv-check's needs.image.outputs.image).
|
|
10
|
+
required: true
|
|
11
|
+
token:
|
|
12
|
+
description: Token for logging in to GHCR.
|
|
13
|
+
default: ${{ github.token }}
|
|
14
|
+
runs:
|
|
15
|
+
using: composite
|
|
16
|
+
steps:
|
|
17
|
+
- name: Log in to GHCR
|
|
18
|
+
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
|
|
19
|
+
with:
|
|
20
|
+
registry: ghcr.io
|
|
21
|
+
username: ${{ github.actor }}
|
|
22
|
+
password: ${{ inputs.token }}
|
|
23
|
+
|
|
24
|
+
- name: Start Services
|
|
25
|
+
shell: bash
|
|
26
|
+
env:
|
|
27
|
+
# compose.yaml's `image: ${CI_IMAGE}`.
|
|
28
|
+
CI_IMAGE: ${{ inputs.image }}
|
|
29
|
+
run: |
|
|
30
|
+
mkdir -p dist test-results
|
|
31
|
+
if ! docker pull --quiet "$CI_IMAGE"; then
|
|
32
|
+
echo "::error::Could not pull $CI_IMAGE. A re-run of a failed job reuses its original CI image, which may have been pruned since; use \"Re-run all jobs\" to rebuild it."
|
|
33
|
+
exit 1
|
|
34
|
+
fi
|
|
35
|
+
docker compose up --detach --no-build ci
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Managed by devenv (copy/ci). Edit it there, not in a child repo.
|
|
2
|
+
#
|
|
3
|
+
# A composite action, not a reusable workflow, so it can run in any job (for
|
|
4
|
+
# example straight after an image manifest) and so PyPI trusted publishing,
|
|
5
|
+
# which PyPI refuses from inside a reusable workflow, stays possible.
|
|
6
|
+
name: devenv PyPI publish
|
|
7
|
+
description: >-
|
|
8
|
+
Publish the python-dist artifact to PyPI with uv. Files already on PyPI are
|
|
9
|
+
skipped, so a re-run finishes a partial publish. Without a token it uses
|
|
10
|
+
trusted publishing, so the job must grant id-token: write and must be a job
|
|
11
|
+
in the repo's own ci.yml, which is the workflow registered on PyPI, not in a
|
|
12
|
+
reusable workflow.
|
|
13
|
+
inputs:
|
|
14
|
+
token:
|
|
15
|
+
description: >-
|
|
16
|
+
A PyPI API token (secrets.PYPI_TOKEN). Empty, as a deleted secret is,
|
|
17
|
+
means trusted publishing.
|
|
18
|
+
required: false
|
|
19
|
+
default: ""
|
|
20
|
+
download:
|
|
21
|
+
description: >-
|
|
22
|
+
"false" when the job has already downloaded python-dist into dist/.
|
|
23
|
+
default: "true"
|
|
24
|
+
runs:
|
|
25
|
+
using: composite
|
|
26
|
+
steps:
|
|
27
|
+
- name: Download dist artifact
|
|
28
|
+
if: inputs.download == 'true'
|
|
29
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
30
|
+
with:
|
|
31
|
+
name: python-dist
|
|
32
|
+
path: dist/
|
|
33
|
+
|
|
34
|
+
- name: Set up uv
|
|
35
|
+
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
|
36
|
+
|
|
37
|
+
- name: Publish to PyPI with a token
|
|
38
|
+
if: inputs.token != ''
|
|
39
|
+
shell: bash
|
|
40
|
+
env:
|
|
41
|
+
UV_PUBLISH_TOKEN: ${{ inputs.token }}
|
|
42
|
+
run: uv publish --check-url https://pypi.org/simple/ dist/*
|
|
43
|
+
|
|
44
|
+
# UV_PUBLISH_TOKEN stays unset: an empty one might count as a token.
|
|
45
|
+
- name: Publish to PyPI with trusted publishing
|
|
46
|
+
if: inputs.token == ''
|
|
47
|
+
shell: bash
|
|
48
|
+
run: >-
|
|
49
|
+
uv publish --trusted-publishing always
|
|
50
|
+
--check-url https://pypi.org/simple/ dist/*
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
# Managed by devenv (copy/ci). Edit it there, not in a child repo.
|
|
2
|
+
#
|
|
3
|
+
# Gate, one CI image build, a fail-fast lint/test/build matrix that pulls that
|
|
4
|
+
# image, and the required-check aggregator. With container: false the matrix
|
|
5
|
+
# runs natively on inputs.runner instead (for macOS-only projects) and no
|
|
6
|
+
# image is built. Call it from a job in ci.yml; later jobs read its outputs
|
|
7
|
+
# instead of repeating any trigger logic:
|
|
8
|
+
#
|
|
9
|
+
# ci:
|
|
10
|
+
# uses: ./.github/workflows/devenv-check.yml
|
|
11
|
+
# permissions: { contents: read, actions: read, packages: write, checks: write }
|
|
12
|
+
# deploy-job:
|
|
13
|
+
# needs: ci
|
|
14
|
+
# if: ${{ !cancelled() && needs.ci.result == 'success' && needs.ci.outputs.deploy == 'true' }}
|
|
15
|
+
name: devenv check
|
|
16
|
+
|
|
17
|
+
on:
|
|
18
|
+
workflow_call:
|
|
19
|
+
inputs:
|
|
20
|
+
matrix:
|
|
21
|
+
description: >-
|
|
22
|
+
JSON list of check combos, one parallel job each. Keys: name (the
|
|
23
|
+
job name), make (make targets run in the CI container), and the
|
|
24
|
+
booleans junit (publish test-results/pytest) and dist (upload dist/
|
|
25
|
+
as python-dist).
|
|
26
|
+
type: string
|
|
27
|
+
default: >-
|
|
28
|
+
[{"name": "Lint", "make": "lint"},
|
|
29
|
+
{"name": "Test", "make": "test", "junit": true},
|
|
30
|
+
{"name": "Build Dist", "make": "build", "dist": true}]
|
|
31
|
+
ci-target:
|
|
32
|
+
description: Dockerfile target for the CI image. Empty builds the last stage.
|
|
33
|
+
type: string
|
|
34
|
+
default: ""
|
|
35
|
+
container:
|
|
36
|
+
description: >-
|
|
37
|
+
true runs every combo in the CI image built from the Dockerfile.
|
|
38
|
+
false runs it natively on the runner after setup-uv, setup-bun and
|
|
39
|
+
make install, for projects that cannot run in a Linux container.
|
|
40
|
+
type: boolean
|
|
41
|
+
default: true
|
|
42
|
+
runner:
|
|
43
|
+
description: >-
|
|
44
|
+
Runner for the check matrix, e.g. macos-latest with container false.
|
|
45
|
+
The gate, image and result jobs stay on ubuntu-24.04.
|
|
46
|
+
type: string
|
|
47
|
+
default: ubuntu-24.04
|
|
48
|
+
release-preflight:
|
|
49
|
+
description: >-
|
|
50
|
+
Run bin/release-tag.sh preflight in the gate on main pushes and pull
|
|
51
|
+
requests into main.
|
|
52
|
+
type: boolean
|
|
53
|
+
default: true
|
|
54
|
+
retention-days:
|
|
55
|
+
description: Days to keep python-dist and the ci-passed marker.
|
|
56
|
+
type: number
|
|
57
|
+
default: 7
|
|
58
|
+
outputs:
|
|
59
|
+
deploy:
|
|
60
|
+
description: '"true" on a main push or a develop <- pre-release pull request.'
|
|
61
|
+
value: ${{ jobs.gate.outputs.deploy }}
|
|
62
|
+
release:
|
|
63
|
+
description: '"true" on a main push unless vars.RELEASE_AUTOMATION is "off".'
|
|
64
|
+
value: ${{ jobs.gate.outputs.release }}
|
|
65
|
+
version:
|
|
66
|
+
description: The version in pyproject.toml.
|
|
67
|
+
value: ${{ jobs.gate.outputs.version }}
|
|
68
|
+
final:
|
|
69
|
+
description: '"true" when the version is a final X.Y.Z release.'
|
|
70
|
+
value: ${{ jobs.gate.outputs.final }}
|
|
71
|
+
dist_found:
|
|
72
|
+
description: '"true" when the gate reused python-dist from an earlier run.'
|
|
73
|
+
value: ${{ jobs.gate.outputs.dist_found }}
|
|
74
|
+
source_run_id:
|
|
75
|
+
description: The run python-dist was reused from.
|
|
76
|
+
value: ${{ jobs.gate.outputs.source_run_id }}
|
|
77
|
+
tree:
|
|
78
|
+
description: The git tree that was checked.
|
|
79
|
+
value: ${{ jobs.gate.outputs.tree }}
|
|
80
|
+
|
|
81
|
+
env:
|
|
82
|
+
CI_IMAGE: ghcr.io/${{ github.repository }}-ci
|
|
83
|
+
CI_CONTAINER: ${{ github.event.repository.name }}-ci
|
|
84
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
85
|
+
|
|
86
|
+
jobs:
|
|
87
|
+
# ---------------------------------------------------------------------------
|
|
88
|
+
# Gate: the only job with trigger logic. Runs the Release Preflight, and on a
|
|
89
|
+
# main push reuses the dist of an earlier run that passed on the same tree.
|
|
90
|
+
# A pull request into develop is checked only from pre-release or a version
|
|
91
|
+
# branch: "v" and a digit, as in v1.2.3. Expressions have no regex, so each
|
|
92
|
+
# digit is its own prefix; a bare "v" prefix would also match vulture-fix.
|
|
93
|
+
# ---------------------------------------------------------------------------
|
|
94
|
+
gate:
|
|
95
|
+
name: Gate
|
|
96
|
+
runs-on: ubuntu-24.04
|
|
97
|
+
timeout-minutes: 10
|
|
98
|
+
if: >-
|
|
99
|
+
(github.event_name == 'push' && github.ref_name == 'main')
|
|
100
|
+
|| github.base_ref == 'main'
|
|
101
|
+
|| (github.base_ref == 'develop'
|
|
102
|
+
&& (github.head_ref == 'pre-release'
|
|
103
|
+
|| startsWith(github.head_ref, 'v0') || startsWith(github.head_ref, 'v1')
|
|
104
|
+
|| startsWith(github.head_ref, 'v2') || startsWith(github.head_ref, 'v3')
|
|
105
|
+
|| startsWith(github.head_ref, 'v4') || startsWith(github.head_ref, 'v5')
|
|
106
|
+
|| startsWith(github.head_ref, 'v6') || startsWith(github.head_ref, 'v7')
|
|
107
|
+
|| startsWith(github.head_ref, 'v8') || startsWith(github.head_ref, 'v9')))
|
|
108
|
+
permissions:
|
|
109
|
+
contents: read
|
|
110
|
+
actions: read
|
|
111
|
+
outputs:
|
|
112
|
+
deploy: >-
|
|
113
|
+
${{ (github.event_name == 'push' && github.ref_name == 'main')
|
|
114
|
+
|| (github.base_ref == 'develop' && github.head_ref == 'pre-release') }}
|
|
115
|
+
release: >-
|
|
116
|
+
${{ github.event_name == 'push' && github.ref_name == 'main'
|
|
117
|
+
&& vars.RELEASE_AUTOMATION != 'off' }}
|
|
118
|
+
version: ${{ steps.info.outputs.version }}
|
|
119
|
+
final: ${{ steps.info.outputs.final }}
|
|
120
|
+
tree: ${{ steps.info.outputs.tree }}
|
|
121
|
+
# Always "true" or "false".
|
|
122
|
+
dist_found: ${{ steps.reuse.outputs.dist_found == 'true' }}
|
|
123
|
+
source_run_id: ${{ steps.reuse.outputs.source_run_id }}
|
|
124
|
+
steps:
|
|
125
|
+
- name: Checkout
|
|
126
|
+
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
|
|
127
|
+
|
|
128
|
+
# A release PR must bump the version and add its NEWS.md section before
|
|
129
|
+
# it can merge; a failure here fails the gate, so nothing else runs and
|
|
130
|
+
# the required check goes red.
|
|
131
|
+
- name: Release Preflight
|
|
132
|
+
if: >-
|
|
133
|
+
inputs.release-preflight && vars.RELEASE_AUTOMATION != 'off'
|
|
134
|
+
&& ((github.event_name == 'push' && github.ref_name == 'main')
|
|
135
|
+
|| github.base_ref == 'main')
|
|
136
|
+
env:
|
|
137
|
+
RELEASE_SHA: ${{ github.sha }}
|
|
138
|
+
run: bin/release-tag.sh preflight
|
|
139
|
+
|
|
140
|
+
- name: Tree and version
|
|
141
|
+
id: info
|
|
142
|
+
run: |
|
|
143
|
+
echo "tree=$(git rev-parse 'HEAD^{tree}')" >>"$GITHUB_OUTPUT"
|
|
144
|
+
if [[ -f bin/release_info.py ]]; then
|
|
145
|
+
python3 bin/release_info.py version --pyproject pyproject.toml \
|
|
146
|
+
--github-output "$GITHUB_OUTPUT"
|
|
147
|
+
fi
|
|
148
|
+
|
|
149
|
+
# Main pushes only: a pull request always runs the full check.
|
|
150
|
+
- name: Reuse a dist that passed on this tree
|
|
151
|
+
id: reuse
|
|
152
|
+
if: github.event_name == 'push' && github.ref_name == 'main'
|
|
153
|
+
env:
|
|
154
|
+
GH_REPO: ${{ github.repository }}
|
|
155
|
+
GH_TOKEN: ${{ github.token }}
|
|
156
|
+
run: bin/ci-reuse-dist.sh
|
|
157
|
+
|
|
158
|
+
- name: Link the reused run
|
|
159
|
+
if: steps.reuse.outputs.dist_found == 'true'
|
|
160
|
+
env:
|
|
161
|
+
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ steps.reuse.outputs.source_run_id }}
|
|
162
|
+
run: echo "Reused python-dist from CI run $RUN_URL" >>"$GITHUB_STEP_SUMMARY"
|
|
163
|
+
|
|
164
|
+
- name: Upload reused dist
|
|
165
|
+
if: steps.reuse.outputs.dist_found == 'true'
|
|
166
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
167
|
+
with:
|
|
168
|
+
name: python-dist
|
|
169
|
+
path: dist/
|
|
170
|
+
retention-days: ${{ inputs.retention-days }}
|
|
171
|
+
if-no-files-found: error
|
|
172
|
+
|
|
173
|
+
# ---------------------------------------------------------------------------
|
|
174
|
+
# Build the CI image once, with the registry cache, and push it by digest.
|
|
175
|
+
# Pushing skips exporting and loading the image into the Docker daemon,
|
|
176
|
+
# which cost about a minute per job when every combo built its own.
|
|
177
|
+
# ---------------------------------------------------------------------------
|
|
178
|
+
image:
|
|
179
|
+
name: CI Image
|
|
180
|
+
needs: gate
|
|
181
|
+
if: inputs.container && needs.gate.outputs.dist_found != 'true'
|
|
182
|
+
runs-on: ubuntu-24.04
|
|
183
|
+
# The slowest job: a cold build without the registry cache.
|
|
184
|
+
timeout-minutes: 45
|
|
185
|
+
permissions:
|
|
186
|
+
contents: read
|
|
187
|
+
packages: write
|
|
188
|
+
outputs:
|
|
189
|
+
image: ${{ steps.ref.outputs.image }}
|
|
190
|
+
env:
|
|
191
|
+
DOCKER_BUILD_RECORD_UPLOAD: "false"
|
|
192
|
+
DOCKER_BUILD_SUMMARY: "false"
|
|
193
|
+
steps:
|
|
194
|
+
- name: Checkout
|
|
195
|
+
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
|
|
196
|
+
|
|
197
|
+
- name: Set up Docker Buildx
|
|
198
|
+
uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
|
|
199
|
+
|
|
200
|
+
- name: Log in to GHCR
|
|
201
|
+
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
|
|
202
|
+
with:
|
|
203
|
+
registry: ghcr.io
|
|
204
|
+
username: ${{ github.actor }}
|
|
205
|
+
password: ${{ github.token }}
|
|
206
|
+
|
|
207
|
+
- name: Build and push CI image
|
|
208
|
+
id: build
|
|
209
|
+
uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
|
|
210
|
+
with:
|
|
211
|
+
context: .
|
|
212
|
+
# An empty target builds the Dockerfile's last stage.
|
|
213
|
+
target: ${{ inputs.ci-target }}
|
|
214
|
+
# Untagged, by digest: every check job pulls exactly this image.
|
|
215
|
+
outputs: type=image,name=${{ env.CI_IMAGE }},push-by-digest=true,name-canonical=true,push=true
|
|
216
|
+
# One manifest per run, so pruning never splits an image index.
|
|
217
|
+
provenance: false
|
|
218
|
+
sbom: false
|
|
219
|
+
cache-from: type=registry,ref=${{ env.CI_IMAGE }}:cache
|
|
220
|
+
cache-to: type=registry,ref=${{ env.CI_IMAGE }}:cache,mode=max
|
|
221
|
+
|
|
222
|
+
- name: Image reference
|
|
223
|
+
id: ref
|
|
224
|
+
env:
|
|
225
|
+
DIGEST: ${{ steps.build.outputs.digest }}
|
|
226
|
+
run: echo "image=$CI_IMAGE@$DIGEST" >>"$GITHUB_OUTPUT"
|
|
227
|
+
|
|
228
|
+
# ---------------------------------------------------------------------------
|
|
229
|
+
# Every run leaves an untagged CI image in the <repo>-ci package; keep the
|
|
230
|
+
# newest 10. It runs beside the check matrix, off the deploy path: this
|
|
231
|
+
# run's image is the newest, and each check has pulled its own copy within
|
|
232
|
+
# seconds of starting. A failure here never fails CI. The spares cover
|
|
233
|
+
# "Re-run failed jobs", which reuses this run's image digest.
|
|
234
|
+
# ---------------------------------------------------------------------------
|
|
235
|
+
prune:
|
|
236
|
+
name: Prune CI Images
|
|
237
|
+
needs: image
|
|
238
|
+
runs-on: ubuntu-24.04
|
|
239
|
+
timeout-minutes: 10
|
|
240
|
+
continue-on-error: true
|
|
241
|
+
permissions:
|
|
242
|
+
packages: write
|
|
243
|
+
steps:
|
|
244
|
+
- name: Delete old untagged CI images
|
|
245
|
+
uses: actions/delete-package-versions@e5bc658cc4c965c472efe991f8beea3981499c55 # v5.0.0
|
|
246
|
+
with:
|
|
247
|
+
package-name: ${{ github.event.repository.name }}-ci
|
|
248
|
+
package-type: container
|
|
249
|
+
min-versions-to-keep: 10
|
|
250
|
+
delete-only-untagged-versions: "true"
|
|
251
|
+
|
|
252
|
+
# ---------------------------------------------------------------------------
|
|
253
|
+
# Lint, test and build in parallel in the CI image. fail-fast: the first
|
|
254
|
+
# failing combo cancels the rest. Never set fail-fast: false or
|
|
255
|
+
# continue-on-error here; the result job relies on it.
|
|
256
|
+
# ---------------------------------------------------------------------------
|
|
257
|
+
check:
|
|
258
|
+
name: ${{ matrix.name }}
|
|
259
|
+
needs: [gate, image]
|
|
260
|
+
# Skipped when the gate reused a dist. The image job is skipped in native
|
|
261
|
+
# mode; in container mode it must have succeeded.
|
|
262
|
+
if: >-
|
|
263
|
+
!cancelled() && needs.gate.result == 'success'
|
|
264
|
+
&& needs.gate.outputs.dist_found != 'true'
|
|
265
|
+
&& (needs.image.result == 'success'
|
|
266
|
+
|| (!inputs.container && needs.image.result == 'skipped'))
|
|
267
|
+
runs-on: ${{ inputs.runner }}
|
|
268
|
+
timeout-minutes: 30
|
|
269
|
+
# Job permissions cannot vary per combo; this is the union.
|
|
270
|
+
permissions:
|
|
271
|
+
contents: read
|
|
272
|
+
packages: read
|
|
273
|
+
checks: write
|
|
274
|
+
strategy:
|
|
275
|
+
fail-fast: true
|
|
276
|
+
matrix:
|
|
277
|
+
include: ${{ fromJSON(inputs.matrix) }}
|
|
278
|
+
steps:
|
|
279
|
+
- name: Checkout
|
|
280
|
+
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
|
|
281
|
+
|
|
282
|
+
- name: Start CI container
|
|
283
|
+
if: inputs.container
|
|
284
|
+
uses: ./.github/actions/devenv-ci-container
|
|
285
|
+
with:
|
|
286
|
+
image: ${{ needs.image.outputs.image }}
|
|
287
|
+
|
|
288
|
+
# Native mode: install the project on the runner instead.
|
|
289
|
+
- name: Set up uv
|
|
290
|
+
if: ${{ !inputs.container }}
|
|
291
|
+
uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
|
292
|
+
with:
|
|
293
|
+
enable-cache: true
|
|
294
|
+
|
|
295
|
+
- name: Set up bun
|
|
296
|
+
if: ${{ !inputs.container }}
|
|
297
|
+
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
|
|
298
|
+
|
|
299
|
+
- name: Install
|
|
300
|
+
if: ${{ !inputs.container }}
|
|
301
|
+
run: |
|
|
302
|
+
uv python install
|
|
303
|
+
mkdir -p dist test-results
|
|
304
|
+
make install
|
|
305
|
+
|
|
306
|
+
- name: ${{ matrix.name }}
|
|
307
|
+
id: work
|
|
308
|
+
env:
|
|
309
|
+
MAKE_TARGETS: ${{ matrix.make }}
|
|
310
|
+
IN_CONTAINER: ${{ inputs.container }}
|
|
311
|
+
run: |
|
|
312
|
+
read -ra targets <<<"$MAKE_TARGETS"
|
|
313
|
+
if [[ $IN_CONTAINER == true ]]; then
|
|
314
|
+
docker exec "$CI_CONTAINER" make "${targets[@]}"
|
|
315
|
+
else
|
|
316
|
+
make "${targets[@]}"
|
|
317
|
+
fi
|
|
318
|
+
|
|
319
|
+
# Straight after the work step and on !cancelled(), so a test failure
|
|
320
|
+
# still publishes its report.
|
|
321
|
+
- name: Upload Test Results
|
|
322
|
+
id: upload-tests
|
|
323
|
+
if: matrix.junit && !cancelled() && steps.work.outcome != 'skipped'
|
|
324
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
325
|
+
with:
|
|
326
|
+
name: test-results-${{ strategy.job-index }}
|
|
327
|
+
path: "**/test-results/pytest/*.xml"
|
|
328
|
+
|
|
329
|
+
- name: Publish Test Report
|
|
330
|
+
if: matrix.junit && !cancelled() && steps.upload-tests.outcome == 'success'
|
|
331
|
+
uses: mikepenz/action-junit-report@b7b80d7ac5b1da46d6aaff9fb57ad50d8453bcb3 # v6.6.0
|
|
332
|
+
with:
|
|
333
|
+
report_paths: "**/test-results/pytest/*.xml"
|
|
334
|
+
|
|
335
|
+
# Implicit success(): only when make succeeded. The one producer of
|
|
336
|
+
# python-dist unless the gate reused a dist.
|
|
337
|
+
- name: Upload dist artifact
|
|
338
|
+
if: matrix.dist
|
|
339
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
340
|
+
with:
|
|
341
|
+
name: python-dist
|
|
342
|
+
path: dist/
|
|
343
|
+
retention-days: ${{ inputs.retention-days }}
|
|
344
|
+
if-no-files-found: error
|
|
345
|
+
|
|
346
|
+
# ---------------------------------------------------------------------------
|
|
347
|
+
# The required check, "<caller job name> / Lint, Test & Build Dist": green
|
|
348
|
+
# only when the gate and every check combo passed, or the gate reused an
|
|
349
|
+
# already-tested dist.
|
|
350
|
+
# ---------------------------------------------------------------------------
|
|
351
|
+
result:
|
|
352
|
+
name: Lint, Test & Build Dist
|
|
353
|
+
needs: [gate, check]
|
|
354
|
+
# always(), not !cancelled(): a skipped required check counts as passing,
|
|
355
|
+
# so a cancelled run must still reach this job and go red.
|
|
356
|
+
if: ${{ always() && needs.gate.result != 'skipped' }}
|
|
357
|
+
runs-on: ubuntu-24.04
|
|
358
|
+
timeout-minutes: 5
|
|
359
|
+
permissions: {}
|
|
360
|
+
steps:
|
|
361
|
+
- name: All required jobs passed
|
|
362
|
+
env:
|
|
363
|
+
NEEDS: ${{ toJSON(needs) }}
|
|
364
|
+
DIST_FOUND: ${{ needs.gate.outputs.dist_found }}
|
|
365
|
+
run: |
|
|
366
|
+
jq -c 'map_values(.result)' <<<"$NEEDS"
|
|
367
|
+
ok='["success"]'
|
|
368
|
+
if [[ "$DIST_FOUND" == "true" ]]; then ok='["success","skipped"]'; fi
|
|
369
|
+
jq -e --argjson ok "$ok" '.gate.result == "success" and (.check.result | IN($ok[]))' <<<"$NEEDS"
|
|
370
|
+
|
|
371
|
+
# The marker bin/ci-reuse-dist.sh looks for: this tree passed, and this
|
|
372
|
+
# run holds its python-dist.
|
|
373
|
+
- name: Record the passing tree
|
|
374
|
+
run: echo "$GITHUB_RUN_ID" >ci-passed
|
|
375
|
+
|
|
376
|
+
- name: Upload the passing-tree marker
|
|
377
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
378
|
+
with:
|
|
379
|
+
name: ci-passed-${{ needs.gate.outputs.tree }}
|
|
380
|
+
path: ci-passed
|
|
381
|
+
retention-days: ${{ inputs.retention-days }}
|
|
382
|
+
if-no-files-found: error
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Managed by devenv (copy/ci). Edit it there, not in a child repo.
|
|
2
|
+
#
|
|
3
|
+
# Last step of a main release: tag, GitHub Release from NEWS.md, merge-back.
|
|
4
|
+
# Every step is idempotent: use "Re-run failed jobs" to finish a partial run.
|
|
5
|
+
# The caller decides when it runs, because only the caller knows which deploy
|
|
6
|
+
# jobs must succeed first:
|
|
7
|
+
#
|
|
8
|
+
# release:
|
|
9
|
+
# needs: [ci, pypi]
|
|
10
|
+
# if: ${{ !cancelled() && needs.ci.outputs.release == 'true' && needs.pypi.result == 'success' }}
|
|
11
|
+
# uses: ./.github/workflows/devenv-release.yml
|
|
12
|
+
# permissions: { contents: write }
|
|
13
|
+
name: devenv release
|
|
14
|
+
|
|
15
|
+
on: workflow_call
|
|
16
|
+
|
|
17
|
+
env:
|
|
18
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
release:
|
|
22
|
+
name: Tag, Release & Merge to Develop
|
|
23
|
+
runs-on: ubuntu-24.04
|
|
24
|
+
timeout-minutes: 10
|
|
25
|
+
permissions:
|
|
26
|
+
contents: write # tag push, develop push, gh release create
|
|
27
|
+
env:
|
|
28
|
+
GH_TOKEN: ${{ github.token }}
|
|
29
|
+
GH_REPO: ${{ github.repository }}
|
|
30
|
+
RELEASE_SHA: ${{ github.sha }}
|
|
31
|
+
GIT_AUTHOR_NAME: github-actions[bot]
|
|
32
|
+
GIT_AUTHOR_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com
|
|
33
|
+
GIT_COMMITTER_NAME: github-actions[bot]
|
|
34
|
+
GIT_COMMITTER_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com
|
|
35
|
+
steps:
|
|
36
|
+
- name: Checkout
|
|
37
|
+
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0
|
|
38
|
+
with:
|
|
39
|
+
fetch-depth: 0 # ancestry and tree lookups against develop
|
|
40
|
+
|
|
41
|
+
- name: Tag
|
|
42
|
+
run: bin/release-tag.sh tag
|
|
43
|
+
|
|
44
|
+
- name: GitHub Release
|
|
45
|
+
run: bin/release-tag.sh publish
|
|
46
|
+
|
|
47
|
+
- name: Merge main into develop
|
|
48
|
+
run: bin/release-tag.sh merge-back
|
codex-2.5.4/.gitignore
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
*$py.class
|
|
2
|
+
*.cover
|
|
3
|
+
*.egg
|
|
4
|
+
*.egg-info/
|
|
5
|
+
*.log
|
|
6
|
+
*.manifest
|
|
7
|
+
*.mo
|
|
8
|
+
*.pot
|
|
9
|
+
*.py,cover
|
|
10
|
+
*.py[cod]
|
|
11
|
+
*.sage.py
|
|
12
|
+
*.so
|
|
13
|
+
*.spec
|
|
14
|
+
*~
|
|
15
|
+
.*cache
|
|
16
|
+
.DS_Store
|
|
17
|
+
.Python
|
|
18
|
+
.claude
|
|
19
|
+
.coverage*
|
|
20
|
+
.coverage.*
|
|
21
|
+
.dmypy.json
|
|
22
|
+
.docker-token
|
|
23
|
+
.eggs/
|
|
24
|
+
.env
|
|
25
|
+
.env-*
|
|
26
|
+
.env.cleaner
|
|
27
|
+
.env.package
|
|
28
|
+
.env.pushover
|
|
29
|
+
.ghrc-token
|
|
30
|
+
.hypothesis/
|
|
31
|
+
.installed.cfg
|
|
32
|
+
.ipynb_checkpoints
|
|
33
|
+
.nox/
|
|
34
|
+
.npm
|
|
35
|
+
.pypi-token
|
|
36
|
+
.pypirc
|
|
37
|
+
.pyre/
|
|
38
|
+
.python-version
|
|
39
|
+
.ropeproject
|
|
40
|
+
.scrapy
|
|
41
|
+
.spyderproject
|
|
42
|
+
.spyproject
|
|
43
|
+
.tox/
|
|
44
|
+
.uv-publish-env
|
|
45
|
+
.venv*
|
|
46
|
+
ENV/
|
|
47
|
+
MANIFEST
|
|
48
|
+
TODO.md
|
|
49
|
+
__pycache__/
|
|
50
|
+
__pypackages__/
|
|
51
|
+
__snapshots__
|
|
52
|
+
build
|
|
53
|
+
celerybeat-schedule
|
|
54
|
+
celerybeat.pid
|
|
55
|
+
codex/static/
|
|
56
|
+
codex/static_build/
|
|
57
|
+
comics
|
|
58
|
+
config
|
|
59
|
+
coverage.xml
|
|
60
|
+
develop-eggs/
|
|
61
|
+
dist
|
|
62
|
+
dmypy.json
|
|
63
|
+
docs/_build/
|
|
64
|
+
downloads/
|
|
65
|
+
eggs/
|
|
66
|
+
env.bak/
|
|
67
|
+
env/
|
|
68
|
+
frontend/bundle-stats.html
|
|
69
|
+
frontend/components.d.ts
|
|
70
|
+
frontend/coverage
|
|
71
|
+
frontend/src/choices/
|
|
72
|
+
htmlcov/
|
|
73
|
+
instance/
|
|
74
|
+
ipython_config.py
|
|
75
|
+
jspm_packages/
|
|
76
|
+
lib/
|
|
77
|
+
lib64/
|
|
78
|
+
local_settings.py
|
|
79
|
+
monkeytype.sqlite3
|
|
80
|
+
node_modules
|
|
81
|
+
nosetests.xml
|
|
82
|
+
parts/
|
|
83
|
+
pip-delete-this-directory.txt
|
|
84
|
+
pip-log.txt
|
|
85
|
+
pip-wheel-metadata/
|
|
86
|
+
profile_default/
|
|
87
|
+
sdist/
|
|
88
|
+
share/python-wheels/
|
|
89
|
+
site/
|
|
90
|
+
target/
|
|
91
|
+
tasks/
|
|
92
|
+
test-results
|
|
93
|
+
var/
|
|
94
|
+
venv.bak/
|
|
95
|
+
venv/
|
|
96
|
+
wheels/
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
*.sh
|
|
2
|
+
*Dockerfile
|
|
3
|
+
.*cache
|
|
4
|
+
.claude
|
|
5
|
+
.git
|
|
6
|
+
.venv*
|
|
7
|
+
__pycache__
|
|
8
|
+
bun.lock
|
|
9
|
+
cache
|
|
10
|
+
codex/static
|
|
11
|
+
codex/static_build
|
|
12
|
+
codex/static_src/img/*.svg
|
|
13
|
+
codex/templates/**/*.html
|
|
14
|
+
codex/templates/**/*.xml
|
|
15
|
+
codex/templates/pwa/manifest.webmanifest
|
|
16
|
+
comics
|
|
17
|
+
config
|
|
18
|
+
dist
|
|
19
|
+
frontend
|
|
20
|
+
node_modules
|
|
21
|
+
tasks
|
|
22
|
+
test-results
|
|
23
|
+
tests/**/*.json
|
|
24
|
+
tests/**/*.xml
|
|
25
|
+
tests/**/*.yaml
|
|
26
|
+
tests/**/*.yml
|
|
27
|
+
uv.lock
|