codex 2.3.0__tar.gz → 2.3.1__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.
Files changed (1834) hide show
  1. codex-2.3.1/.dockerignore +43 -0
  2. codex-2.3.1/.github/workflows/ci.yml +341 -0
  3. codex-2.3.1/.gitignore +104 -0
  4. codex-2.3.1/NEWS.md +2536 -0
  5. codex-2.3.1/PKG-INFO +1209 -0
  6. codex-2.3.1/README.md +1149 -0
  7. codex-2.3.1/bin/fix-docker.sh +11 -0
  8. codex-2.3.1/bin/lint-docker.sh +12 -0
  9. codex-2.3.1/bun.lock +1275 -0
  10. codex-2.3.1/codex/librarian/bookmark/latest_version.py +117 -0
  11. codex-2.3.1/codex/librarian/telemeter/stats.py +264 -0
  12. codex-2.3.1/codex/serializers/admin/stats.py +351 -0
  13. codex-2.3.1/codex/serializers/versions.py +14 -0
  14. codex-2.3.1/codex/settings/__init__.py +1238 -0
  15. codex-2.3.1/codex/startup/__init__.py +250 -0
  16. codex-2.3.1/codex/static/assets/VAvatar-Dgdc0DOB.js +1 -0
  17. codex-2.3.1/codex/static/assets/VAvatar-Dgdc0DOB.js.br +0 -0
  18. codex-2.3.1/codex/static/assets/VAvatar-Dgdc0DOB.js.gz +0 -0
  19. codex-2.3.1/codex/static/assets/VCard-C5fqSQFT.js +1 -0
  20. codex-2.3.1/codex/static/assets/VCard-C5fqSQFT.js.br +0 -0
  21. codex-2.3.1/codex/static/assets/VCard-C5fqSQFT.js.gz +0 -0
  22. codex-2.3.1/codex/static/assets/VCheckbox-DVenT763.js +1 -0
  23. codex-2.3.1/codex/static/assets/VCheckbox-DVenT763.js.br +0 -0
  24. codex-2.3.1/codex/static/assets/VCheckbox-DVenT763.js.gz +0 -0
  25. codex-2.3.1/codex/static/assets/VChip-B1KxlTWu.js +1 -0
  26. codex-2.3.1/codex/static/assets/VChip-B1KxlTWu.js.br +0 -0
  27. codex-2.3.1/codex/static/assets/VChip-B1KxlTWu.js.gz +0 -0
  28. codex-2.3.1/codex/static/assets/VCombobox-Dh2EEqz7.js +2 -0
  29. codex-2.3.1/codex/static/assets/VCombobox-Dh2EEqz7.js.br +0 -0
  30. codex-2.3.1/codex/static/assets/VCombobox-Dh2EEqz7.js.gz +0 -0
  31. codex-2.3.1/codex/static/assets/VContainer-B-NPuZuK.js +1 -0
  32. codex-2.3.1/codex/static/assets/VContainer-B-NPuZuK.js.br +2 -0
  33. codex-2.3.1/codex/static/assets/VContainer-B-NPuZuK.js.gz +0 -0
  34. codex-2.3.1/codex/static/assets/VDataTableVirtual-ya-3HIx3.js +1 -0
  35. codex-2.3.1/codex/static/assets/VDataTableVirtual-ya-3HIx3.js.br +0 -0
  36. codex-2.3.1/codex/static/assets/VDataTableVirtual-ya-3HIx3.js.gz +0 -0
  37. codex-2.3.1/codex/static/assets/VExpansionPanels-CVXzKFrh.js +1 -0
  38. codex-2.3.1/codex/static/assets/VExpansionPanels-CVXzKFrh.js.br +0 -0
  39. codex-2.3.1/codex/static/assets/VExpansionPanels-CVXzKFrh.js.gz +0 -0
  40. codex-2.3.1/codex/static/assets/VForm-DhMboIN-.js +1 -0
  41. codex-2.3.1/codex/static/assets/VForm-DhMboIN-.js.br +0 -0
  42. codex-2.3.1/codex/static/assets/VForm-DhMboIN-.js.gz +0 -0
  43. codex-2.3.1/codex/static/assets/VOverlay-B06BN697.js +1 -0
  44. codex-2.3.1/codex/static/assets/VOverlay-B06BN697.js.br +0 -0
  45. codex-2.3.1/codex/static/assets/VOverlay-B06BN697.js.gz +0 -0
  46. codex-2.3.1/codex/static/assets/VProgressCircular-CRgGXny2.js +10 -0
  47. codex-2.3.1/codex/static/assets/VProgressCircular-CRgGXny2.js.br +0 -0
  48. codex-2.3.1/codex/static/assets/VProgressCircular-CRgGXny2.js.gz +0 -0
  49. codex-2.3.1/codex/static/assets/VRadioGroup-DkxxDRVz.js +1 -0
  50. codex-2.3.1/codex/static/assets/VRadioGroup-DkxxDRVz.js.br +0 -0
  51. codex-2.3.1/codex/static/assets/VRadioGroup-DkxxDRVz.js.gz +0 -0
  52. codex-2.3.1/codex/static/assets/VSelect-magi89CZ.js +2 -0
  53. codex-2.3.1/codex/static/assets/VSelect-magi89CZ.js.br +0 -0
  54. codex-2.3.1/codex/static/assets/VSelect-magi89CZ.js.gz +0 -0
  55. codex-2.3.1/codex/static/assets/VSelectionControl-DRWDpvlk.js +1 -0
  56. codex-2.3.1/codex/static/assets/VSelectionControl-DRWDpvlk.js.br +0 -0
  57. codex-2.3.1/codex/static/assets/VSelectionControl-DRWDpvlk.js.gz +0 -0
  58. codex-2.3.1/codex/static/assets/VTable-Cbg3KCpY.js +1 -0
  59. codex-2.3.1/codex/static/assets/VTable-Cbg3KCpY.js.br +0 -0
  60. codex-2.3.1/codex/static/assets/VTable-Cbg3KCpY.js.gz +0 -0
  61. codex-2.3.1/codex/static/assets/VTabs-CAHMqK4v.js +1 -0
  62. codex-2.3.1/codex/static/assets/VTabs-CAHMqK4v.js.br +0 -0
  63. codex-2.3.1/codex/static/assets/VTabs-CAHMqK4v.js.gz +0 -0
  64. codex-2.3.1/codex/static/assets/VTextField-BooRtpL0.js +1 -0
  65. codex-2.3.1/codex/static/assets/VTextField-BooRtpL0.js.br +0 -0
  66. codex-2.3.1/codex/static/assets/VTextField-BooRtpL0.js.gz +0 -0
  67. codex-2.3.1/codex/static/assets/action-bar-CuGtHT6Q.js +1 -0
  68. codex-2.3.1/codex/static/assets/action-bar-CuGtHT6Q.js.br +0 -0
  69. codex-2.3.1/codex/static/assets/action-bar-CuGtHT6Q.js.gz +0 -0
  70. codex-2.3.1/codex/static/assets/admin-CKZi4iCX.js +1 -0
  71. codex-2.3.1/codex/static/assets/admin-CKZi4iCX.js.br +0 -0
  72. codex-2.3.1/codex/static/assets/admin-CKZi4iCX.js.gz +0 -0
  73. codex-2.3.1/codex/static/assets/admin-gsR5QKYK.js +1 -0
  74. codex-2.3.1/codex/static/assets/admin-gsR5QKYK.js.br +0 -0
  75. codex-2.3.1/codex/static/assets/admin-gsR5QKYK.js.gz +0 -0
  76. codex-2.3.1/codex/static/assets/admin-menu-Cd4OwBS_.js +1 -0
  77. codex-2.3.1/codex/static/assets/admin-menu-Cd4OwBS_.js.br +0 -0
  78. codex-2.3.1/codex/static/assets/admin-menu-Cd4OwBS_.js.gz +0 -0
  79. codex-2.3.1/codex/static/assets/admin-section-87Yewklb.js +1 -0
  80. codex-2.3.1/codex/static/assets/admin-section-87Yewklb.js.br +0 -0
  81. codex-2.3.1/codex/static/assets/admin-section-87Yewklb.js.gz +0 -0
  82. codex-2.3.1/codex/static/assets/admin-settings-button-errors-Dn4hQSvg.js +1 -0
  83. codex-2.3.1/codex/static/assets/admin-settings-button-errors-Dn4hQSvg.js.br +0 -0
  84. codex-2.3.1/codex/static/assets/admin-settings-button-errors-Dn4hQSvg.js.gz +0 -0
  85. codex-2.3.1/codex/static/assets/admin-settings-button-progress-CPgAhQSb.js +1 -0
  86. codex-2.3.1/codex/static/assets/admin-settings-button-progress-CPgAhQSb.js.br +0 -0
  87. codex-2.3.1/codex/static/assets/admin-settings-button-progress-CPgAhQSb.js.gz +0 -0
  88. codex-2.3.1/codex/static/assets/admin-settings-button-prompts-D-_0IC7Q.js +1 -0
  89. codex-2.3.1/codex/static/assets/admin-settings-button-prompts-D-_0IC7Q.js.br +3 -0
  90. codex-2.3.1/codex/static/assets/admin-settings-button-prompts-D-_0IC7Q.js.gz +0 -0
  91. codex-2.3.1/codex/static/assets/auth-B6TBkxis.js +1 -0
  92. codex-2.3.1/codex/static/assets/auth-B6TBkxis.js.br +0 -0
  93. codex-2.3.1/codex/static/assets/auth-B6TBkxis.js.gz +0 -0
  94. codex-2.3.1/codex/static/assets/auth-tab-CHugBbd0.js +16 -0
  95. codex-2.3.1/codex/static/assets/auth-tab-CHugBbd0.js.br +0 -0
  96. codex-2.3.1/codex/static/assets/auth-tab-CHugBbd0.js.gz +0 -0
  97. codex-2.3.1/codex/static/assets/browser-BiEaNqKz.js +1 -0
  98. codex-2.3.1/codex/static/assets/browser-BiEaNqKz.js.br +0 -0
  99. codex-2.3.1/codex/static/assets/browser-BiEaNqKz.js.gz +0 -0
  100. codex-2.3.1/codex/static/assets/browser-Bipl8Fz4.js +2 -0
  101. codex-2.3.1/codex/static/assets/browser-Bipl8Fz4.js.br +0 -0
  102. codex-2.3.1/codex/static/assets/browser-Bipl8Fz4.js.gz +0 -0
  103. codex-2.3.1/codex/static/assets/clipboard-BbAoKrP6.js +1 -0
  104. codex-2.3.1/codex/static/assets/clipboard-BbAoKrP6.js.br +0 -0
  105. codex-2.3.1/codex/static/assets/clipboard-BbAoKrP6.js.gz +0 -0
  106. codex-2.3.1/codex/static/assets/close-button-kSamXeGX.js +1 -0
  107. codex-2.3.1/codex/static/assets/close-button-kSamXeGX.js.br +0 -0
  108. codex-2.3.1/codex/static/assets/close-button-kSamXeGX.js.gz +0 -0
  109. codex-2.3.1/codex/static/assets/comic-name-Dd1mfeR3.js +1 -0
  110. codex-2.3.1/codex/static/assets/comic-name-Dd1mfeR3.js.br +0 -0
  111. codex-2.3.1/codex/static/assets/comic-name-Dd1mfeR3.js.gz +0 -0
  112. codex-2.3.1/codex/static/assets/confirm-dialog-CJ7srnyy.js +1 -0
  113. codex-2.3.1/codex/static/assets/confirm-dialog-CJ7srnyy.js.br +0 -0
  114. codex-2.3.1/codex/static/assets/confirm-dialog-CJ7srnyy.js.gz +0 -0
  115. codex-2.3.1/codex/static/assets/createSimpleFunctional-CW-e6vGF.js +1 -0
  116. codex-2.3.1/codex/static/assets/createSimpleFunctional-CW-e6vGF.js.br +2 -0
  117. codex-2.3.1/codex/static/assets/createSimpleFunctional-CW-e6vGF.js.gz +0 -0
  118. codex-2.3.1/codex/static/assets/custom-covers-tab-StWVeMeH.js +1 -0
  119. codex-2.3.1/codex/static/assets/custom-covers-tab-StWVeMeH.js.br +0 -0
  120. codex-2.3.1/codex/static/assets/custom-covers-tab-StWVeMeH.js.gz +0 -0
  121. codex-2.3.1/codex/static/assets/datetime-column-B7g96MGC.js +1 -0
  122. codex-2.3.1/codex/static/assets/datetime-column-B7g96MGC.js.br +0 -0
  123. codex-2.3.1/codex/static/assets/datetime-column-B7g96MGC.js.gz +0 -0
  124. codex-2.3.1/codex/static/assets/delete-row-dialog-DYk8Zbig.js +1 -0
  125. codex-2.3.1/codex/static/assets/delete-row-dialog-DYk8Zbig.js.br +0 -0
  126. codex-2.3.1/codex/static/assets/delete-row-dialog-DYk8Zbig.js.gz +0 -0
  127. codex-2.3.1/codex/static/assets/edit-panel-iFcAlesa.js +1 -0
  128. codex-2.3.1/codex/static/assets/edit-panel-iFcAlesa.js.br +0 -0
  129. codex-2.3.1/codex/static/assets/edit-panel-iFcAlesa.js.gz +0 -0
  130. codex-2.3.1/codex/static/assets/email-tab-JJ2HSfFg.js +1 -0
  131. codex-2.3.1/codex/static/assets/email-tab-JJ2HSfFg.js.br +0 -0
  132. codex-2.3.1/codex/static/assets/email-tab-JJ2HSfFg.js.gz +0 -0
  133. codex-2.3.1/codex/static/assets/expand-toggle-CyGj4z8M.js +1 -0
  134. codex-2.3.1/codex/static/assets/expand-toggle-CyGj4z8M.js.br +0 -0
  135. codex-2.3.1/codex/static/assets/expand-toggle-CyGj4z8M.js.gz +0 -0
  136. codex-2.3.1/codex/static/assets/flag-card-B8Z11vhX.js +1 -0
  137. codex-2.3.1/codex/static/assets/flag-card-B8Z11vhX.js.br +0 -0
  138. codex-2.3.1/codex/static/assets/flag-card-B8Z11vhX.js.gz +0 -0
  139. codex-2.3.1/codex/static/assets/forwardRefs-Bq2po3bg.js +1 -0
  140. codex-2.3.1/codex/static/assets/forwardRefs-Bq2po3bg.js.br +0 -0
  141. codex-2.3.1/codex/static/assets/forwardRefs-Bq2po3bg.js.gz +0 -0
  142. codex-2.3.1/codex/static/assets/group-tab-B_8oGr2i.js +1 -0
  143. codex-2.3.1/codex/static/assets/group-tab-B_8oGr2i.js.br +0 -0
  144. codex-2.3.1/codex/static/assets/group-tab-B_8oGr2i.js.gz +0 -0
  145. codex-2.3.1/codex/static/assets/http-error-BdPyvNTU.js +1 -0
  146. codex-2.3.1/codex/static/assets/http-error-BdPyvNTU.js.br +5 -0
  147. codex-2.3.1/codex/static/assets/http-error-BdPyvNTU.js.gz +0 -0
  148. codex-2.3.1/codex/static/assets/job-tab-DmdBPbaP.js +1 -0
  149. codex-2.3.1/codex/static/assets/job-tab-DmdBPbaP.js.br +0 -0
  150. codex-2.3.1/codex/static/assets/job-tab-DmdBPbaP.js.gz +0 -0
  151. codex-2.3.1/codex/static/assets/layout-CdNg-6m6.js +1 -0
  152. codex-2.3.1/codex/static/assets/layout-CdNg-6m6.js.br +0 -0
  153. codex-2.3.1/codex/static/assets/layout-CdNg-6m6.js.gz +0 -0
  154. codex-2.3.1/codex/static/assets/library-tab-ucIsf5XC.js +1 -0
  155. codex-2.3.1/codex/static/assets/library-tab-ucIsf5XC.js.br +0 -0
  156. codex-2.3.1/codex/static/assets/library-tab-ucIsf5XC.js.gz +0 -0
  157. codex-2.3.1/codex/static/assets/main-DIvXyf4C.css +1 -0
  158. codex-2.3.1/codex/static/assets/main-DIvXyf4C.css.br +0 -0
  159. codex-2.3.1/codex/static/assets/main-DIvXyf4C.css.gz +0 -0
  160. codex-2.3.1/codex/static/assets/main-DpPqj1X6.js +6 -0
  161. codex-2.3.1/codex/static/assets/main-DpPqj1X6.js.br +0 -0
  162. codex-2.3.1/codex/static/assets/main-DpPqj1X6.js.gz +0 -0
  163. codex-2.3.1/codex/static/assets/pagination-toolbar-D11Vy78R.js +2 -0
  164. codex-2.3.1/codex/static/assets/pagination-toolbar-D11Vy78R.js.br +0 -0
  165. codex-2.3.1/codex/static/assets/pagination-toolbar-D11Vy78R.js.gz +0 -0
  166. codex-2.3.1/codex/static/assets/pdf-doc-Cz3yPnAy.js +628 -0
  167. codex-2.3.1/codex/static/assets/pdf-doc-Cz3yPnAy.js.br +0 -0
  168. codex-2.3.1/codex/static/assets/pdf-doc-Cz3yPnAy.js.gz +0 -0
  169. codex-2.3.1/codex/static/assets/prompt-popup--cl3xY9g.css +1 -0
  170. codex-2.3.1/codex/static/assets/prompt-popup--cl3xY9g.css.br +0 -0
  171. codex-2.3.1/codex/static/assets/prompt-popup--cl3xY9g.css.gz +0 -0
  172. codex-2.3.1/codex/static/assets/prompt-popup-f-qissw3.js +2 -0
  173. codex-2.3.1/codex/static/assets/prompt-popup-f-qissw3.js.br +0 -0
  174. codex-2.3.1/codex/static/assets/prompt-popup-f-qissw3.js.gz +0 -0
  175. codex-2.3.1/codex/static/assets/reader-Dxetb0rD.js +2 -0
  176. codex-2.3.1/codex/static/assets/reader-Dxetb0rD.js.br +0 -0
  177. codex-2.3.1/codex/static/assets/reader-Dxetb0rD.js.gz +0 -0
  178. codex-2.3.1/codex/static/assets/relation-chips-3liI30Vj.js +1 -0
  179. codex-2.3.1/codex/static/assets/relation-chips-3liI30Vj.js.br +0 -0
  180. codex-2.3.1/codex/static/assets/relation-chips-3liI30Vj.js.gz +0 -0
  181. codex-2.3.1/codex/static/assets/reset-password-confirm-3wGTpWZl.js +1 -0
  182. codex-2.3.1/codex/static/assets/reset-password-confirm-3wGTpWZl.js.br +0 -0
  183. codex-2.3.1/codex/static/assets/reset-password-confirm-3wGTpWZl.js.gz +0 -0
  184. codex-2.3.1/codex/static/assets/restore-tab-C7XMHRtv.js +3 -0
  185. codex-2.3.1/codex/static/assets/restore-tab-C7XMHRtv.js.br +0 -0
  186. codex-2.3.1/codex/static/assets/restore-tab-C7XMHRtv.js.gz +0 -0
  187. codex-2.3.1/codex/static/assets/settings-tab-CSmiSslz.js +1 -0
  188. codex-2.3.1/codex/static/assets/settings-tab-CSmiSslz.js.br +0 -0
  189. codex-2.3.1/codex/static/assets/settings-tab-CSmiSslz.js.gz +0 -0
  190. codex-2.3.1/codex/static/assets/sso-error-BbNU6wNH.js +1 -0
  191. codex-2.3.1/codex/static/assets/sso-error-BbNU6wNH.js.br +0 -0
  192. codex-2.3.1/codex/static/assets/sso-error-BbNU6wNH.js.gz +0 -0
  193. codex-2.3.1/codex/static/assets/sso-login-button-utHnpF_K.js +1 -0
  194. codex-2.3.1/codex/static/assets/sso-login-button-utHnpF_K.js.br +0 -0
  195. codex-2.3.1/codex/static/assets/sso-login-button-utHnpF_K.js.gz +0 -0
  196. codex-2.3.1/codex/static/assets/stats-tab-D2UQaRPl.js +1 -0
  197. codex-2.3.1/codex/static/assets/stats-tab-D2UQaRPl.js.br +0 -0
  198. codex-2.3.1/codex/static/assets/stats-tab-D2UQaRPl.js.gz +0 -0
  199. codex-2.3.1/codex/static/assets/submit-footer-CNluGZm6.js +1 -0
  200. codex-2.3.1/codex/static/assets/submit-footer-CNluGZm6.js.br +0 -0
  201. codex-2.3.1/codex/static/assets/submit-footer-CNluGZm6.js.gz +0 -0
  202. codex-2.3.1/codex/static/assets/tagging-tab-B_f4txMc.js +1 -0
  203. codex-2.3.1/codex/static/assets/tagging-tab-B_f4txMc.js.br +0 -0
  204. codex-2.3.1/codex/static/assets/tagging-tab-B_f4txMc.js.gz +0 -0
  205. codex-2.3.1/codex/static/assets/tooltip-mXhTbogY.js +1 -0
  206. codex-2.3.1/codex/static/assets/tooltip-mXhTbogY.js.br +0 -0
  207. codex-2.3.1/codex/static/assets/tooltip-mXhTbogY.js.gz +0 -0
  208. codex-2.3.1/codex/static/assets/unauthorized-El02CWro.js +1 -0
  209. codex-2.3.1/codex/static/assets/unauthorized-El02CWro.js.br +0 -0
  210. codex-2.3.1/codex/static/assets/unauthorized-El02CWro.js.gz +0 -0
  211. codex-2.3.1/codex/static/assets/user-tab-Dnjg59vC.js +1 -0
  212. codex-2.3.1/codex/static/assets/user-tab-Dnjg59vC.js.br +0 -0
  213. codex-2.3.1/codex/static/assets/user-tab-Dnjg59vC.js.gz +0 -0
  214. codex-2.3.1/codex/static/manifest.json +1406 -0
  215. codex-2.3.1/codex/static/manifest.json.br +0 -0
  216. codex-2.3.1/codex/static/manifest.json.gz +0 -0
  217. codex-2.3.1/codex/util.py +74 -0
  218. codex-2.3.1/codex/views/version.py +63 -0
  219. codex-2.3.1/docs/DOCKER.md +132 -0
  220. codex-2.3.1/docs/NEWS.md +2536 -0
  221. codex-2.3.1/docs/README.md +1149 -0
  222. codex-2.3.1/frontend/.eslintcache +1 -0
  223. codex-2.3.1/frontend/bun.lock +853 -0
  224. codex-2.3.1/frontend/package.json +55 -0
  225. codex-2.3.1/frontend/src/api/v4/auth.js +45 -0
  226. codex-2.3.1/frontend/src/app.vue +119 -0
  227. codex-2.3.1/frontend/src/components/docker-hub-deprecated-snackbar.vue +109 -0
  228. codex-2.3.1/frontend/src/components/settings/version-footer.vue +134 -0
  229. codex-2.3.1/frontend/src/plugins/vuetify.js +107 -0
  230. codex-2.3.1/frontend/src/stores/auth.js +255 -0
  231. codex-2.3.1/frontend/tests/unit/docker-hub-deprecated-snackbar.test.js +109 -0
  232. codex-2.3.1/frontend/tests/unit/version-footer.test.js +114 -0
  233. codex-2.3.1/package.json +110 -0
  234. codex-2.3.1/pyproject.toml +462 -0
  235. codex-2.3.1/pyproject.toml.orig +435 -0
  236. codex-2.3.1/tests/test_latest_version_fetch.py +252 -0
  237. codex-2.3.1/tests/test_telemeter.py +276 -0
  238. codex-2.3.1/tests/test_version_outdated.py +129 -0
  239. codex-2.3.1/uv.lock +4656 -0
  240. codex-2.3.0/.dockerignore +0 -42
  241. codex-2.3.0/.github/workflows/ci.yml +0 -269
  242. codex-2.3.0/.gitignore +0 -104
  243. codex-2.3.0/NEWS.md +0 -2518
  244. codex-2.3.0/PKG-INFO +0 -1208
  245. codex-2.3.0/README.md +0 -1147
  246. codex-2.3.0/bin/fix-docker.sh +0 -11
  247. codex-2.3.0/bin/lint-docker.sh +0 -12
  248. codex-2.3.0/bun.lock +0 -1275
  249. codex-2.3.0/codex/librarian/bookmark/latest_version.py +0 -111
  250. codex-2.3.0/codex/librarian/telemeter/stats.py +0 -262
  251. codex-2.3.0/codex/serializers/admin/stats.py +0 -350
  252. codex-2.3.0/codex/serializers/versions.py +0 -14
  253. codex-2.3.0/codex/settings/__init__.py +0 -1235
  254. codex-2.3.0/codex/startup/__init__.py +0 -248
  255. codex-2.3.0/codex/static/assets/VAvatar-CZzVgoR9.js +0 -1
  256. codex-2.3.0/codex/static/assets/VAvatar-CZzVgoR9.js.br +0 -0
  257. codex-2.3.0/codex/static/assets/VAvatar-CZzVgoR9.js.gz +0 -0
  258. codex-2.3.0/codex/static/assets/VCard-uu_Tm0VO.js +0 -1
  259. codex-2.3.0/codex/static/assets/VCard-uu_Tm0VO.js.br +0 -0
  260. codex-2.3.0/codex/static/assets/VCard-uu_Tm0VO.js.gz +0 -0
  261. codex-2.3.0/codex/static/assets/VCheckbox-p02gHDm-.js +0 -1
  262. codex-2.3.0/codex/static/assets/VCheckbox-p02gHDm-.js.br +0 -0
  263. codex-2.3.0/codex/static/assets/VCheckbox-p02gHDm-.js.gz +0 -0
  264. codex-2.3.0/codex/static/assets/VChip-JFvfeokm.js +0 -1
  265. codex-2.3.0/codex/static/assets/VChip-JFvfeokm.js.br +0 -0
  266. codex-2.3.0/codex/static/assets/VChip-JFvfeokm.js.gz +0 -0
  267. codex-2.3.0/codex/static/assets/VCombobox-CnucwetG.js +0 -2
  268. codex-2.3.0/codex/static/assets/VCombobox-CnucwetG.js.br +0 -0
  269. codex-2.3.0/codex/static/assets/VCombobox-CnucwetG.js.gz +0 -0
  270. codex-2.3.0/codex/static/assets/VContainer-C-iXZe8O.js +0 -1
  271. codex-2.3.0/codex/static/assets/VContainer-C-iXZe8O.js.br +0 -0
  272. codex-2.3.0/codex/static/assets/VContainer-C-iXZe8O.js.gz +0 -0
  273. codex-2.3.0/codex/static/assets/VDataTableVirtual-Cw5EIJ0U.js +0 -1
  274. codex-2.3.0/codex/static/assets/VDataTableVirtual-Cw5EIJ0U.js.br +0 -0
  275. codex-2.3.0/codex/static/assets/VDataTableVirtual-Cw5EIJ0U.js.gz +0 -0
  276. codex-2.3.0/codex/static/assets/VExpansionPanels-uCkdZzk7.js +0 -1
  277. codex-2.3.0/codex/static/assets/VExpansionPanels-uCkdZzk7.js.br +0 -0
  278. codex-2.3.0/codex/static/assets/VExpansionPanels-uCkdZzk7.js.gz +0 -0
  279. codex-2.3.0/codex/static/assets/VForm-CuI2U8Jl.js +0 -1
  280. codex-2.3.0/codex/static/assets/VForm-CuI2U8Jl.js.br +0 -0
  281. codex-2.3.0/codex/static/assets/VForm-CuI2U8Jl.js.gz +0 -0
  282. codex-2.3.0/codex/static/assets/VOverlay-Bk8gAG_2.js +0 -1
  283. codex-2.3.0/codex/static/assets/VOverlay-Bk8gAG_2.js.br +0 -0
  284. codex-2.3.0/codex/static/assets/VOverlay-Bk8gAG_2.js.gz +0 -0
  285. codex-2.3.0/codex/static/assets/VProgressCircular-Cf5u6Luf.js +0 -10
  286. codex-2.3.0/codex/static/assets/VProgressCircular-Cf5u6Luf.js.br +0 -0
  287. codex-2.3.0/codex/static/assets/VProgressCircular-Cf5u6Luf.js.gz +0 -0
  288. codex-2.3.0/codex/static/assets/VRadioGroup-BILo2-qo.js +0 -1
  289. codex-2.3.0/codex/static/assets/VRadioGroup-BILo2-qo.js.br +0 -0
  290. codex-2.3.0/codex/static/assets/VRadioGroup-BILo2-qo.js.gz +0 -0
  291. codex-2.3.0/codex/static/assets/VSelect-BNuz8VWD.js +0 -2
  292. codex-2.3.0/codex/static/assets/VSelect-BNuz8VWD.js.br +0 -0
  293. codex-2.3.0/codex/static/assets/VSelect-BNuz8VWD.js.gz +0 -0
  294. codex-2.3.0/codex/static/assets/VSelectionControl-BacwiQue.js +0 -1
  295. codex-2.3.0/codex/static/assets/VSelectionControl-BacwiQue.js.br +0 -0
  296. codex-2.3.0/codex/static/assets/VSelectionControl-BacwiQue.js.gz +0 -0
  297. codex-2.3.0/codex/static/assets/VTable-CBCgIqmB.js +0 -1
  298. codex-2.3.0/codex/static/assets/VTable-CBCgIqmB.js.br +0 -0
  299. codex-2.3.0/codex/static/assets/VTable-CBCgIqmB.js.gz +0 -0
  300. codex-2.3.0/codex/static/assets/VTabs-BtMInJGC.js +0 -1
  301. codex-2.3.0/codex/static/assets/VTabs-BtMInJGC.js.br +0 -0
  302. codex-2.3.0/codex/static/assets/VTabs-BtMInJGC.js.gz +0 -0
  303. codex-2.3.0/codex/static/assets/VTextField-2qmiVdHK.js +0 -1
  304. codex-2.3.0/codex/static/assets/VTextField-2qmiVdHK.js.br +0 -0
  305. codex-2.3.0/codex/static/assets/VTextField-2qmiVdHK.js.gz +0 -0
  306. codex-2.3.0/codex/static/assets/action-bar-D32Ud22Y.js +0 -1
  307. codex-2.3.0/codex/static/assets/action-bar-D32Ud22Y.js.br +0 -0
  308. codex-2.3.0/codex/static/assets/action-bar-D32Ud22Y.js.gz +0 -0
  309. codex-2.3.0/codex/static/assets/admin-CZnhodTr.js +0 -1
  310. codex-2.3.0/codex/static/assets/admin-CZnhodTr.js.br +0 -0
  311. codex-2.3.0/codex/static/assets/admin-CZnhodTr.js.gz +0 -0
  312. codex-2.3.0/codex/static/assets/admin-Cgi4izWU.js +0 -1
  313. codex-2.3.0/codex/static/assets/admin-Cgi4izWU.js.br +0 -0
  314. codex-2.3.0/codex/static/assets/admin-Cgi4izWU.js.gz +0 -0
  315. codex-2.3.0/codex/static/assets/admin-menu-Dxkx-YEq.js +0 -1
  316. codex-2.3.0/codex/static/assets/admin-menu-Dxkx-YEq.js.br +0 -0
  317. codex-2.3.0/codex/static/assets/admin-menu-Dxkx-YEq.js.gz +0 -0
  318. codex-2.3.0/codex/static/assets/admin-section-6sMdduBu.js +0 -1
  319. codex-2.3.0/codex/static/assets/admin-section-6sMdduBu.js.br +0 -0
  320. codex-2.3.0/codex/static/assets/admin-section-6sMdduBu.js.gz +0 -0
  321. codex-2.3.0/codex/static/assets/admin-settings-button-errors-G-jfu01B.js +0 -1
  322. codex-2.3.0/codex/static/assets/admin-settings-button-errors-G-jfu01B.js.br +0 -0
  323. codex-2.3.0/codex/static/assets/admin-settings-button-errors-G-jfu01B.js.gz +0 -0
  324. codex-2.3.0/codex/static/assets/admin-settings-button-progress-Du1iZ75g.js +0 -1
  325. codex-2.3.0/codex/static/assets/admin-settings-button-progress-Du1iZ75g.js.br +0 -0
  326. codex-2.3.0/codex/static/assets/admin-settings-button-progress-Du1iZ75g.js.gz +0 -0
  327. codex-2.3.0/codex/static/assets/admin-settings-button-prompts-D-z1GKC0.js +0 -1
  328. codex-2.3.0/codex/static/assets/admin-settings-button-prompts-D-z1GKC0.js.br +0 -0
  329. codex-2.3.0/codex/static/assets/admin-settings-button-prompts-D-z1GKC0.js.gz +0 -0
  330. codex-2.3.0/codex/static/assets/auth-Awa8fWcA.js +0 -1
  331. codex-2.3.0/codex/static/assets/auth-Awa8fWcA.js.br +0 -0
  332. codex-2.3.0/codex/static/assets/auth-Awa8fWcA.js.gz +0 -0
  333. codex-2.3.0/codex/static/assets/auth-tab-BJ8DWFNj.js +0 -16
  334. codex-2.3.0/codex/static/assets/auth-tab-BJ8DWFNj.js.br +0 -0
  335. codex-2.3.0/codex/static/assets/auth-tab-BJ8DWFNj.js.gz +0 -0
  336. codex-2.3.0/codex/static/assets/browser-CJYQYFPw.js +0 -2
  337. codex-2.3.0/codex/static/assets/browser-CJYQYFPw.js.br +0 -0
  338. codex-2.3.0/codex/static/assets/browser-CJYQYFPw.js.gz +0 -0
  339. codex-2.3.0/codex/static/assets/browser-itq9sJoD.js +0 -1
  340. codex-2.3.0/codex/static/assets/browser-itq9sJoD.js.br +0 -0
  341. codex-2.3.0/codex/static/assets/browser-itq9sJoD.js.gz +0 -0
  342. codex-2.3.0/codex/static/assets/clipboard-BH-1M_q1.js +0 -1
  343. codex-2.3.0/codex/static/assets/clipboard-BH-1M_q1.js.br +0 -0
  344. codex-2.3.0/codex/static/assets/clipboard-BH-1M_q1.js.gz +0 -0
  345. codex-2.3.0/codex/static/assets/close-button-CIGqVdev.js +0 -1
  346. codex-2.3.0/codex/static/assets/close-button-CIGqVdev.js.br +0 -0
  347. codex-2.3.0/codex/static/assets/close-button-CIGqVdev.js.gz +0 -0
  348. codex-2.3.0/codex/static/assets/comic-name-6RdKMT4e.js +0 -1
  349. codex-2.3.0/codex/static/assets/comic-name-6RdKMT4e.js.br +0 -0
  350. codex-2.3.0/codex/static/assets/comic-name-6RdKMT4e.js.gz +0 -0
  351. codex-2.3.0/codex/static/assets/confirm-dialog-fVD7Iuvz.js +0 -1
  352. codex-2.3.0/codex/static/assets/confirm-dialog-fVD7Iuvz.js.br +0 -0
  353. codex-2.3.0/codex/static/assets/confirm-dialog-fVD7Iuvz.js.gz +0 -0
  354. codex-2.3.0/codex/static/assets/createSimpleFunctional-igBd7BPt.js +0 -1
  355. codex-2.3.0/codex/static/assets/createSimpleFunctional-igBd7BPt.js.br +0 -0
  356. codex-2.3.0/codex/static/assets/createSimpleFunctional-igBd7BPt.js.gz +0 -0
  357. codex-2.3.0/codex/static/assets/custom-covers-tab-CV842sYK.js +0 -1
  358. codex-2.3.0/codex/static/assets/custom-covers-tab-CV842sYK.js.br +0 -0
  359. codex-2.3.0/codex/static/assets/custom-covers-tab-CV842sYK.js.gz +0 -0
  360. codex-2.3.0/codex/static/assets/datetime-column-VuvGXp-a.js +0 -1
  361. codex-2.3.0/codex/static/assets/datetime-column-VuvGXp-a.js.br +0 -0
  362. codex-2.3.0/codex/static/assets/datetime-column-VuvGXp-a.js.gz +0 -0
  363. codex-2.3.0/codex/static/assets/delete-row-dialog-BZ0dK1zG.js +0 -1
  364. codex-2.3.0/codex/static/assets/delete-row-dialog-BZ0dK1zG.js.br +0 -0
  365. codex-2.3.0/codex/static/assets/delete-row-dialog-BZ0dK1zG.js.gz +0 -0
  366. codex-2.3.0/codex/static/assets/edit-panel-Fib45frP.js +0 -1
  367. codex-2.3.0/codex/static/assets/edit-panel-Fib45frP.js.br +0 -0
  368. codex-2.3.0/codex/static/assets/edit-panel-Fib45frP.js.gz +0 -0
  369. codex-2.3.0/codex/static/assets/email-tab-U47z3wKt.js +0 -1
  370. codex-2.3.0/codex/static/assets/email-tab-U47z3wKt.js.br +0 -0
  371. codex-2.3.0/codex/static/assets/email-tab-U47z3wKt.js.gz +0 -0
  372. codex-2.3.0/codex/static/assets/expand-toggle-BCMKF6A9.js +0 -1
  373. codex-2.3.0/codex/static/assets/expand-toggle-BCMKF6A9.js.br +0 -0
  374. codex-2.3.0/codex/static/assets/expand-toggle-BCMKF6A9.js.gz +0 -0
  375. codex-2.3.0/codex/static/assets/flag-card-CeIFCJWX.js +0 -1
  376. codex-2.3.0/codex/static/assets/flag-card-CeIFCJWX.js.br +0 -0
  377. codex-2.3.0/codex/static/assets/flag-card-CeIFCJWX.js.gz +0 -0
  378. codex-2.3.0/codex/static/assets/forwardRefs-DnadxLQB.js +0 -1
  379. codex-2.3.0/codex/static/assets/forwardRefs-DnadxLQB.js.br +0 -0
  380. codex-2.3.0/codex/static/assets/forwardRefs-DnadxLQB.js.gz +0 -0
  381. codex-2.3.0/codex/static/assets/group-tab-CHpwhrBo.js +0 -1
  382. codex-2.3.0/codex/static/assets/group-tab-CHpwhrBo.js.br +0 -0
  383. codex-2.3.0/codex/static/assets/group-tab-CHpwhrBo.js.gz +0 -0
  384. codex-2.3.0/codex/static/assets/http-error-CLo4UEcK.js +0 -1
  385. codex-2.3.0/codex/static/assets/http-error-CLo4UEcK.js.br +0 -0
  386. codex-2.3.0/codex/static/assets/http-error-CLo4UEcK.js.gz +0 -0
  387. codex-2.3.0/codex/static/assets/job-tab-w5-JgN5C.js +0 -1
  388. codex-2.3.0/codex/static/assets/job-tab-w5-JgN5C.js.br +0 -0
  389. codex-2.3.0/codex/static/assets/job-tab-w5-JgN5C.js.gz +0 -0
  390. codex-2.3.0/codex/static/assets/layout-CGLv5Bhp.js +0 -1
  391. codex-2.3.0/codex/static/assets/layout-CGLv5Bhp.js.br +0 -0
  392. codex-2.3.0/codex/static/assets/layout-CGLv5Bhp.js.gz +0 -0
  393. codex-2.3.0/codex/static/assets/library-tab-DW1O4Dr3.js +0 -1
  394. codex-2.3.0/codex/static/assets/library-tab-DW1O4Dr3.js.br +0 -0
  395. codex-2.3.0/codex/static/assets/library-tab-DW1O4Dr3.js.gz +0 -0
  396. codex-2.3.0/codex/static/assets/main-BpDVSUwR.js +0 -6
  397. codex-2.3.0/codex/static/assets/main-BpDVSUwR.js.br +0 -0
  398. codex-2.3.0/codex/static/assets/main-BpDVSUwR.js.gz +0 -0
  399. codex-2.3.0/codex/static/assets/main-CKAiLM7v.css +0 -1
  400. codex-2.3.0/codex/static/assets/main-CKAiLM7v.css.br +0 -0
  401. codex-2.3.0/codex/static/assets/main-CKAiLM7v.css.gz +0 -0
  402. codex-2.3.0/codex/static/assets/pagination-toolbar-U6ZYZrWX.js +0 -2
  403. codex-2.3.0/codex/static/assets/pagination-toolbar-U6ZYZrWX.js.br +0 -0
  404. codex-2.3.0/codex/static/assets/pagination-toolbar-U6ZYZrWX.js.gz +0 -0
  405. codex-2.3.0/codex/static/assets/pdf-doc-DLor7lQ-.js +0 -628
  406. codex-2.3.0/codex/static/assets/pdf-doc-DLor7lQ-.js.br +0 -0
  407. codex-2.3.0/codex/static/assets/pdf-doc-DLor7lQ-.js.gz +0 -0
  408. codex-2.3.0/codex/static/assets/prompt-popup-CENGAJ_5.js +0 -2
  409. codex-2.3.0/codex/static/assets/prompt-popup-CENGAJ_5.js.br +0 -0
  410. codex-2.3.0/codex/static/assets/prompt-popup-CENGAJ_5.js.gz +0 -0
  411. codex-2.3.0/codex/static/assets/prompt-popup-D-YKlmej.css +0 -1
  412. codex-2.3.0/codex/static/assets/prompt-popup-D-YKlmej.css.br +0 -0
  413. codex-2.3.0/codex/static/assets/prompt-popup-D-YKlmej.css.gz +0 -0
  414. codex-2.3.0/codex/static/assets/reader-BZUdM0aZ.js +0 -2
  415. codex-2.3.0/codex/static/assets/reader-BZUdM0aZ.js.br +0 -0
  416. codex-2.3.0/codex/static/assets/reader-BZUdM0aZ.js.gz +0 -0
  417. codex-2.3.0/codex/static/assets/relation-chips-BMMdhJ2_.js +0 -1
  418. codex-2.3.0/codex/static/assets/relation-chips-BMMdhJ2_.js.br +0 -0
  419. codex-2.3.0/codex/static/assets/relation-chips-BMMdhJ2_.js.gz +0 -0
  420. codex-2.3.0/codex/static/assets/reset-password-confirm-CGnuR8Rm.js +0 -1
  421. codex-2.3.0/codex/static/assets/reset-password-confirm-CGnuR8Rm.js.br +0 -0
  422. codex-2.3.0/codex/static/assets/reset-password-confirm-CGnuR8Rm.js.gz +0 -0
  423. codex-2.3.0/codex/static/assets/restore-tab-DHMh-HtX.js +0 -3
  424. codex-2.3.0/codex/static/assets/restore-tab-DHMh-HtX.js.br +0 -0
  425. codex-2.3.0/codex/static/assets/restore-tab-DHMh-HtX.js.gz +0 -0
  426. codex-2.3.0/codex/static/assets/settings-tab-DNFl8dnx.js +0 -1
  427. codex-2.3.0/codex/static/assets/settings-tab-DNFl8dnx.js.br +0 -0
  428. codex-2.3.0/codex/static/assets/settings-tab-DNFl8dnx.js.gz +0 -0
  429. codex-2.3.0/codex/static/assets/sso-error-D_gRtLuu.js +0 -1
  430. codex-2.3.0/codex/static/assets/sso-error-D_gRtLuu.js.br +0 -0
  431. codex-2.3.0/codex/static/assets/sso-error-D_gRtLuu.js.gz +0 -0
  432. codex-2.3.0/codex/static/assets/sso-login-button-gvhgoQbw.js +0 -1
  433. codex-2.3.0/codex/static/assets/sso-login-button-gvhgoQbw.js.br +0 -4
  434. codex-2.3.0/codex/static/assets/sso-login-button-gvhgoQbw.js.gz +0 -0
  435. codex-2.3.0/codex/static/assets/stats-tab-DV6IZedB.js +0 -1
  436. codex-2.3.0/codex/static/assets/stats-tab-DV6IZedB.js.br +0 -0
  437. codex-2.3.0/codex/static/assets/stats-tab-DV6IZedB.js.gz +0 -0
  438. codex-2.3.0/codex/static/assets/submit-footer-BJphi2-D.js +0 -1
  439. codex-2.3.0/codex/static/assets/submit-footer-BJphi2-D.js.br +0 -0
  440. codex-2.3.0/codex/static/assets/submit-footer-BJphi2-D.js.gz +0 -0
  441. codex-2.3.0/codex/static/assets/tagging-tab-DaqRvbMl.js +0 -1
  442. codex-2.3.0/codex/static/assets/tagging-tab-DaqRvbMl.js.br +0 -0
  443. codex-2.3.0/codex/static/assets/tagging-tab-DaqRvbMl.js.gz +0 -0
  444. codex-2.3.0/codex/static/assets/tooltip-CfvYbYD7.js +0 -1
  445. codex-2.3.0/codex/static/assets/tooltip-CfvYbYD7.js.br +0 -0
  446. codex-2.3.0/codex/static/assets/tooltip-CfvYbYD7.js.gz +0 -0
  447. codex-2.3.0/codex/static/assets/unauthorized-uWqCl31r.js +0 -1
  448. codex-2.3.0/codex/static/assets/unauthorized-uWqCl31r.js.br +0 -0
  449. codex-2.3.0/codex/static/assets/unauthorized-uWqCl31r.js.gz +0 -0
  450. codex-2.3.0/codex/static/assets/user-tab-DDaFqNGO.js +0 -1
  451. codex-2.3.0/codex/static/assets/user-tab-DDaFqNGO.js.br +0 -0
  452. codex-2.3.0/codex/static/assets/user-tab-DDaFqNGO.js.gz +0 -0
  453. codex-2.3.0/codex/static/manifest.json +0 -1406
  454. codex-2.3.0/codex/static/manifest.json.br +0 -0
  455. codex-2.3.0/codex/static/manifest.json.gz +0 -0
  456. codex-2.3.0/codex/util.py +0 -51
  457. codex-2.3.0/codex/views/version.py +0 -61
  458. codex-2.3.0/docs/DOCKER.md +0 -114
  459. codex-2.3.0/docs/NEWS.md +0 -2518
  460. codex-2.3.0/docs/README.md +0 -1147
  461. codex-2.3.0/frontend/.eslintcache +0 -1
  462. codex-2.3.0/frontend/bun.lock +0 -853
  463. codex-2.3.0/frontend/package.json +0 -55
  464. codex-2.3.0/frontend/src/api/v4/auth.js +0 -45
  465. codex-2.3.0/frontend/src/app.vue +0 -102
  466. codex-2.3.0/frontend/src/components/settings/version-footer.vue +0 -119
  467. codex-2.3.0/frontend/src/plugins/vuetify.js +0 -98
  468. codex-2.3.0/frontend/src/stores/auth.js +0 -255
  469. codex-2.3.0/frontend/tests/unit/version-footer.test.js +0 -93
  470. codex-2.3.0/package.json +0 -110
  471. codex-2.3.0/pyproject.toml +0 -463
  472. codex-2.3.0/pyproject.toml.orig +0 -436
  473. codex-2.3.0/tests/test_latest_version_fetch.py +0 -163
  474. codex-2.3.0/tests/test_telemeter.py +0 -275
  475. codex-2.3.0/tests/test_version_outdated.py +0 -103
  476. codex-2.3.0/uv.lock +0 -4658
  477. {codex-2.3.0 → codex-2.3.1}/.prettierignore +0 -0
  478. {codex-2.3.0 → codex-2.3.1}/.readthedocs.yaml +0 -0
  479. {codex-2.3.0 → codex-2.3.1}/.remarkignore +0 -0
  480. {codex-2.3.0 → codex-2.3.1}/.shellcheckrc +0 -0
  481. {codex-2.3.0 → codex-2.3.1}/Makefile +0 -0
  482. {codex-2.3.0 → codex-2.3.1}/bin/benchmark-opds.sh +0 -0
  483. {codex-2.3.0 → codex-2.3.1}/bin/build-choices.sh +0 -0
  484. {codex-2.3.0 → codex-2.3.1}/bin/build-dist.sh +0 -0
  485. {codex-2.3.0 → codex-2.3.1}/bin/ci-download-dist-if-identical.sh +0 -0
  486. {codex-2.3.0 → codex-2.3.1}/bin/clean-pycache.sh +0 -0
  487. {codex-2.3.0 → codex-2.3.1}/bin/cleanup-pypi-alpha.sh +0 -0
  488. {codex-2.3.0 → codex-2.3.1}/bin/collectstatic.sh +0 -0
  489. {codex-2.3.0 → codex-2.3.1}/bin/delete-files.sh +0 -0
  490. {codex-2.3.0 → codex-2.3.1}/bin/dev-docker.sh +0 -0
  491. {codex-2.3.0 → codex-2.3.1}/bin/dev-module.sh +0 -0
  492. {codex-2.3.0 → codex-2.3.1}/bin/dev-prod-server.sh +0 -0
  493. {codex-2.3.0 → codex-2.3.1}/bin/dev.sh +0 -0
  494. {codex-2.3.0 → codex-2.3.1}/bin/docker-compose-exit.sh +0 -0
  495. {codex-2.3.0 → codex-2.3.1}/bin/docker-tag-latest.sh +0 -0
  496. {codex-2.3.0 → codex-2.3.1}/bin/fix-django.sh +0 -0
  497. {codex-2.3.0 → codex-2.3.1}/bin/fix-python.sh +0 -0
  498. {codex-2.3.0 → codex-2.3.1}/bin/fix-sh.sh +0 -0
  499. {codex-2.3.0 → codex-2.3.1}/bin/fix.sh +0 -0
  500. {codex-2.3.0 → codex-2.3.1}/bin/ghcr-prune-alphas.sh +0 -0
  501. {codex-2.3.0 → codex-2.3.1}/bin/icons_transform.py +0 -0
  502. {codex-2.3.0 → codex-2.3.1}/bin/kill-codex.sh +0 -0
  503. {codex-2.3.0 → codex-2.3.1}/bin/kill-eslint_d.sh +0 -0
  504. {codex-2.3.0 → codex-2.3.1}/bin/lint-ci.sh +0 -0
  505. {codex-2.3.0 → codex-2.3.1}/bin/lint-complexity.sh +0 -0
  506. {codex-2.3.0 → codex-2.3.1}/bin/lint-darwin.sh +0 -0
  507. {codex-2.3.0 → codex-2.3.1}/bin/lint-django.sh +0 -0
  508. {codex-2.3.0 → codex-2.3.1}/bin/lint-python.sh +0 -0
  509. {codex-2.3.0 → codex-2.3.1}/bin/lint-sh.sh +0 -0
  510. {codex-2.3.0 → codex-2.3.1}/bin/lint.sh +0 -0
  511. {codex-2.3.0 → codex-2.3.1}/bin/localize-db.sh +0 -0
  512. {codex-2.3.0 → codex-2.3.1}/bin/localize_library.sql +0 -0
  513. {codex-2.3.0 → codex-2.3.1}/bin/manage.py +0 -0
  514. {codex-2.3.0 → codex-2.3.1}/bin/pm +0 -0
  515. {codex-2.3.0 → codex-2.3.1}/bin/prettier-nginx.sh +0 -0
  516. {codex-2.3.0 → codex-2.3.1}/bin/release-tag.sh +0 -0
  517. {codex-2.3.0 → codex-2.3.1}/bin/remark-for-claude.sh +0 -0
  518. {codex-2.3.0 → codex-2.3.1}/bin/roman.py +0 -0
  519. {codex-2.3.0 → codex-2.3.1}/bin/run-test-proxy.sh +0 -0
  520. {codex-2.3.0 → codex-2.3.1}/bin/sort-ignore.sh +0 -0
  521. {codex-2.3.0 → codex-2.3.1}/bin/sync_comic_logo.py +0 -0
  522. {codex-2.3.0 → codex-2.3.1}/bin/test-python.sh +0 -0
  523. {codex-2.3.0 → codex-2.3.1}/bin/type-python.sh +0 -0
  524. {codex-2.3.0 → codex-2.3.1}/bin/uml.sh +0 -0
  525. {codex-2.3.0 → codex-2.3.1}/bin/update-deps-node.sh +0 -0
  526. {codex-2.3.0 → codex-2.3.1}/bin/update-deps-python.sh +0 -0
  527. {codex-2.3.0 → codex-2.3.1}/bin/vendor-diff-package.sh +0 -0
  528. {codex-2.3.0 → codex-2.3.1}/bin/vendor-patch-imports.sh +0 -0
  529. {codex-2.3.0 → codex-2.3.1}/bin/version-node.sh +0 -0
  530. {codex-2.3.0 → codex-2.3.1}/bin/version-python.sh +0 -0
  531. {codex-2.3.0 → codex-2.3.1}/codex/__init__.py +0 -0
  532. {codex-2.3.0 → codex-2.3.1}/codex/applications/__init__.py +0 -0
  533. {codex-2.3.0 → codex-2.3.1}/codex/applications/http.py +0 -0
  534. {codex-2.3.0 → codex-2.3.1}/codex/applications/lifespan.py +0 -0
  535. {codex-2.3.0 → codex-2.3.1}/codex/applications/websocket.py +0 -0
  536. {codex-2.3.0 → codex-2.3.1}/codex/applications/workers.py +0 -0
  537. {codex-2.3.0 → codex-2.3.1}/codex/asgi.py +0 -0
  538. {codex-2.3.0 → codex-2.3.1}/codex/authentication.py +0 -0
  539. {codex-2.3.0 → codex-2.3.1}/codex/cache.py +0 -0
  540. {codex-2.3.0 → codex-2.3.1}/codex/choices/__init__.py +0 -0
  541. {codex-2.3.0 → codex-2.3.1}/codex/choices/admin.py +0 -0
  542. {codex-2.3.0 → codex-2.3.1}/codex/choices/browser.py +0 -0
  543. {codex-2.3.0 → codex-2.3.1}/codex/choices/choices_to_json.py +0 -0
  544. {codex-2.3.0 → codex-2.3.1}/codex/choices/jobs.py +0 -0
  545. {codex-2.3.0 → codex-2.3.1}/codex/choices/notifications.py +0 -0
  546. {codex-2.3.0 → codex-2.3.1}/codex/choices/onlinetag.py +0 -0
  547. {codex-2.3.0 → codex-2.3.1}/codex/choices/reader.py +0 -0
  548. {codex-2.3.0 → codex-2.3.1}/codex/choices/search.py +0 -0
  549. {codex-2.3.0 → codex-2.3.1}/codex/choices/statii.py +0 -0
  550. {codex-2.3.0 → codex-2.3.1}/codex/choices/tagging.py +0 -0
  551. {codex-2.3.0 → codex-2.3.1}/codex/collection.py +0 -0
  552. {codex-2.3.0 → codex-2.3.1}/codex/db_routers.py +0 -0
  553. {codex-2.3.0 → codex-2.3.1}/codex/failed_login_log.py +0 -0
  554. {codex-2.3.0 → codex-2.3.1}/codex/librarian/README.md +0 -0
  555. {codex-2.3.0 → codex-2.3.1}/codex/librarian/__init__.py +0 -0
  556. {codex-2.3.0 → codex-2.3.1}/codex/librarian/bookmark/__init__.py +0 -0
  557. {codex-2.3.0 → codex-2.3.1}/codex/librarian/bookmark/bookmarkd.py +0 -0
  558. {codex-2.3.0 → codex-2.3.1}/codex/librarian/bookmark/last_route.py +0 -0
  559. {codex-2.3.0 → codex-2.3.1}/codex/librarian/bookmark/tasks.py +0 -0
  560. {codex-2.3.0 → codex-2.3.1}/codex/librarian/bookmark/update.py +0 -0
  561. {codex-2.3.0 → codex-2.3.1}/codex/librarian/bookmark/user_active.py +0 -0
  562. {codex-2.3.0 → codex-2.3.1}/codex/librarian/covers/__init__.py +0 -0
  563. {codex-2.3.0 → codex-2.3.1}/codex/librarian/covers/coverd.py +0 -0
  564. {codex-2.3.0 → codex-2.3.1}/codex/librarian/covers/create.py +0 -0
  565. {codex-2.3.0 → codex-2.3.1}/codex/librarian/covers/path.py +0 -0
  566. {codex-2.3.0 → codex-2.3.1}/codex/librarian/covers/purge.py +0 -0
  567. {codex-2.3.0 → codex-2.3.1}/codex/librarian/covers/status.py +0 -0
  568. {codex-2.3.0 → codex-2.3.1}/codex/librarian/covers/tasks.py +0 -0
  569. {codex-2.3.0 → codex-2.3.1}/codex/librarian/cron/__init__.py +0 -0
  570. {codex-2.3.0 → codex-2.3.1}/codex/librarian/cron/crond.py +0 -0
  571. {codex-2.3.0 → codex-2.3.1}/codex/librarian/db.py +0 -0
  572. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/README.md +0 -0
  573. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/__init__.py +0 -0
  574. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/events.py +0 -0
  575. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/filters.py +0 -0
  576. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/import_task.py +0 -0
  577. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/mounted.py +0 -0
  578. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/poller/__init__.py +0 -0
  579. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/poller/poller.py +0 -0
  580. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/poller/snapshot.py +0 -0
  581. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/poller/snapshot_diff.py +0 -0
  582. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/poller/status.py +0 -0
  583. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/poller/tasks.py +0 -0
  584. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/status.py +0 -0
  585. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/tasks.py +0 -0
  586. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/watcher/__init__.py +0 -0
  587. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/watcher/data.py +0 -0
  588. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/watcher/dirs.py +0 -0
  589. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/watcher/events.py +0 -0
  590. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/watcher/move.py +0 -0
  591. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/watcher/status.py +0 -0
  592. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/watcher/tasks.py +0 -0
  593. {codex-2.3.0 → codex-2.3.1}/codex/librarian/fs/watcher/watcher.py +0 -0
  594. {codex-2.3.0 → codex-2.3.1}/codex/librarian/librariand.py +0 -0
  595. {codex-2.3.0 → codex-2.3.1}/codex/librarian/memory.py +0 -0
  596. {codex-2.3.0 → codex-2.3.1}/codex/librarian/mp_queue.py +0 -0
  597. {codex-2.3.0 → codex-2.3.1}/codex/librarian/notifier/__init__.py +0 -0
  598. {codex-2.3.0 → codex-2.3.1}/codex/librarian/notifier/notifierd.py +0 -0
  599. {codex-2.3.0 → codex-2.3.1}/codex/librarian/notifier/tasks.py +0 -0
  600. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/__init__.py +0 -0
  601. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/credential_validator.py +0 -0
  602. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/estimate.py +0 -0
  603. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/explicit_id.py +0 -0
  604. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/issue_id.py +0 -0
  605. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/onlinetagd.py +0 -0
  606. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/outcome_stats.py +0 -0
  607. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/session_cache.py +0 -0
  608. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/session_manager.py +0 -0
  609. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/session_snapshot.py +0 -0
  610. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/session_state.py +0 -0
  611. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/status.py +0 -0
  612. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/statuses.py +0 -0
  613. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/stored_id_prepass.py +0 -0
  614. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/tag_pass_runner.py +0 -0
  615. {codex-2.3.0 → codex-2.3.1}/codex/librarian/onlinetag/tasks.py +0 -0
  616. {codex-2.3.0 → codex-2.3.1}/codex/librarian/restarter/__init__.py +0 -0
  617. {codex-2.3.0 → codex-2.3.1}/codex/librarian/restarter/restarter.py +0 -0
  618. {codex-2.3.0 → codex-2.3.1}/codex/librarian/restarter/status.py +0 -0
  619. {codex-2.3.0 → codex-2.3.1}/codex/librarian/restarter/tasks.py +0 -0
  620. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/__init__.py +0 -0
  621. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/force_updater.py +0 -0
  622. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/__init__.py +0 -0
  623. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/const.py +0 -0
  624. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/create/__init__.py +0 -0
  625. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/create/comics.py +0 -0
  626. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/create/const.py +0 -0
  627. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/create/covers.py +0 -0
  628. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/create/folders.py +0 -0
  629. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/create/foreign_keys.py +0 -0
  630. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/create/link_fks.py +0 -0
  631. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/delete/__init__.py +0 -0
  632. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/delete/comics.py +0 -0
  633. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/delete/covers.py +0 -0
  634. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/delete/existence.py +0 -0
  635. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/delete/folders.py +0 -0
  636. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/failed/__init__.py +0 -0
  637. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/failed/create.py +0 -0
  638. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/failed/failed.py +0 -0
  639. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/failed/query.py +0 -0
  640. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/finish.py +0 -0
  641. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/importer.py +0 -0
  642. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/init.py +0 -0
  643. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/link/__init__.py +0 -0
  644. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/link/const.py +0 -0
  645. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/link/covers.py +0 -0
  646. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/link/delete.py +0 -0
  647. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/link/many_to_many.py +0 -0
  648. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/link/prepare.py +0 -0
  649. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/link/sum.py +0 -0
  650. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/moved/__init__.py +0 -0
  651. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/moved/comics.py +0 -0
  652. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/moved/covers.py +0 -0
  653. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/moved/folders.py +0 -0
  654. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/pragmas.py +0 -0
  655. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/query/__init__.py +0 -0
  656. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/query/covers.py +0 -0
  657. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/query/filters.py +0 -0
  658. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/query/foreign_keys.py +0 -0
  659. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/query/links.py +0 -0
  660. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/query/links_fk.py +0 -0
  661. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/query/links_m2m.py +0 -0
  662. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/query/update_comics.py +0 -0
  663. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/query/update_fks.py +0 -0
  664. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/read/__init__.py +0 -0
  665. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/read/aggregate_path.py +0 -0
  666. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/read/const.py +0 -0
  667. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/read/extract.py +0 -0
  668. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/read/folders.py +0 -0
  669. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/read/foreign_keys.py +0 -0
  670. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/read/many_to_many.py +0 -0
  671. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/search/__init__.py +0 -0
  672. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/search/prepare.py +0 -0
  673. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/search/sync_m2m.py +0 -0
  674. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/search/update.py +0 -0
  675. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/statii/__init__.py +0 -0
  676. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/statii/create.py +0 -0
  677. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/statii/delete.py +0 -0
  678. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/statii/failed.py +0 -0
  679. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/statii/link.py +0 -0
  680. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/statii/moved.py +0 -0
  681. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/statii/query.py +0 -0
  682. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/statii/read.py +0 -0
  683. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/statii/search.py +0 -0
  684. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/status.py +0 -0
  685. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/importer/tasks.py +0 -0
  686. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/janitor/__init__.py +0 -0
  687. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/janitor/adopt_folders.py +0 -0
  688. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/janitor/cleanup.py +0 -0
  689. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/janitor/failed_imports.py +0 -0
  690. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/janitor/integrity/__init__.py +0 -0
  691. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/janitor/integrity/foreign_keys.py +0 -0
  692. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/janitor/janitor.py +0 -0
  693. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/janitor/scheduled_time.py +0 -0
  694. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/janitor/status.py +0 -0
  695. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/janitor/tasks.py +0 -0
  696. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/janitor/update.py +0 -0
  697. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/janitor/vacuum.py +0 -0
  698. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/lazy_importer.py +0 -0
  699. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/priority.py +0 -0
  700. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/scribed.py +0 -0
  701. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/search/__init__.py +0 -0
  702. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/search/const.py +0 -0
  703. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/search/handler.py +0 -0
  704. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/search/optimize.py +0 -0
  705. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/search/prepare.py +0 -0
  706. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/search/remove.py +0 -0
  707. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/search/status.py +0 -0
  708. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/search/sync.py +0 -0
  709. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/search/tasks.py +0 -0
  710. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/status.py +0 -0
  711. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/tag_writer.py +0 -0
  712. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/tagwrite_errors.py +0 -0
  713. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/tagwrite_rename.py +0 -0
  714. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/tasks.py +0 -0
  715. {codex-2.3.0 → codex-2.3.1}/codex/librarian/scribe/timestamp_update.py +0 -0
  716. {codex-2.3.0 → codex-2.3.1}/codex/librarian/status.py +0 -0
  717. {codex-2.3.0 → codex-2.3.1}/codex/librarian/status_controller.py +0 -0
  718. {codex-2.3.0 → codex-2.3.1}/codex/librarian/tasks.py +0 -0
  719. {codex-2.3.0 → codex-2.3.1}/codex/librarian/telemeter/__init__.py +0 -0
  720. {codex-2.3.0 → codex-2.3.1}/codex/librarian/telemeter/admin_stats.py +0 -0
  721. {codex-2.3.0 → codex-2.3.1}/codex/librarian/telemeter/count_stats.py +0 -0
  722. {codex-2.3.0 → codex-2.3.1}/codex/librarian/telemeter/per_user_stats.py +0 -0
  723. {codex-2.3.0 → codex-2.3.1}/codex/librarian/telemeter/scheduled_time.py +0 -0
  724. {codex-2.3.0 → codex-2.3.1}/codex/librarian/telemeter/tasks.py +0 -0
  725. {codex-2.3.0 → codex-2.3.1}/codex/librarian/telemeter/telemeter.py +0 -0
  726. {codex-2.3.0 → codex-2.3.1}/codex/librarian/threads.py +0 -0
  727. {codex-2.3.0 → codex-2.3.1}/codex/librarian/worker.py +0 -0
  728. {codex-2.3.0 → codex-2.3.1}/codex/mail.py +0 -0
  729. {codex-2.3.0 → codex-2.3.1}/codex/management/__init__.py +0 -0
  730. {codex-2.3.0 → codex-2.3.1}/codex/management/commands/__init__.py +0 -0
  731. {codex-2.3.0 → codex-2.3.1}/codex/management/commands/restore_user_data.py +0 -0
  732. {codex-2.3.0 → codex-2.3.1}/codex/middleware.py +0 -0
  733. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0001_init.py +0 -0
  734. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0002_auto_20200826_0622.py +0 -0
  735. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0003_auto_20200831_2033.py +0 -0
  736. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0004_failedimport.py +0 -0
  737. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0005_auto_20200918_0146.py +0 -0
  738. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0006_update_default_names_and_remove_duplicate_comics.py +0 -0
  739. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0007_auto_20211210_1710.py +0 -0
  740. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0008_alter_comic_created_at_alter_comic_format_and_more.py +0 -0
  741. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0009_alter_comic_parent_folder.py +0 -0
  742. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0010_haystack.py +0 -0
  743. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0011_library_groups_and_metadata_changes.py +0 -0
  744. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0012_rename_description_comic_comments.py +0 -0
  745. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0013_int_issue_count_longer_charfields.py +0 -0
  746. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0014_pdf_issue_suffix_remove_cover_image_sort_name.py +0 -0
  747. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0015_link_comics_to_top_level_folders.py +0 -0
  748. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0016_remove_comic_cover_path_librarianstatus.py +0 -0
  749. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0017_alter_timestamp_options_alter_adminflag_name_and_more.py +0 -0
  750. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0018_rename_userbookmark_bookmark.py +0 -0
  751. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0019_delete_queuejob.py +0 -0
  752. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0020_remove_search_tables.py +0 -0
  753. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0021_bookmark_fit_to_choices_read_in_reverse.py +0 -0
  754. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0022_bookmark_vertical_useractive_null_statuses.py +0 -0
  755. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0023_rename_credit_creator_and_more.py +0 -0
  756. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0024_comic_gtin_comic_story_arc_number.py +0 -0
  757. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0025_add_story_arc_number.py +0 -0
  758. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0026_comicbox_1.py +0 -0
  759. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0027_import_order_and_covers.py +0 -0
  760. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0028_telemeter.py +0 -0
  761. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0029_comicfts.py +0 -0
  762. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0030_nocase_collation_day_month_indexes_status_types.py +0 -0
  763. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0031_adminflag_banner.py +0 -0
  764. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0032_alter_librarianstatus_preactive.py +0 -0
  765. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0033_alter_librarianstatus_status_type.py +0 -0
  766. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0034_comicbox2.py +0 -0
  767. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0035_fts_optmize.py +0 -0
  768. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0036_alter_comic_path_alter_customcover_path_and_more.py +0 -0
  769. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0037_redefine_reading_direction_filetype_choices.py +0 -0
  770. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0038_settings_tables.py +0 -0
  771. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0039_metron_age_rating_default_view_and_performance.py +0 -0
  772. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0040_reset_global_cache_book.py +0 -0
  773. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0041_cleanup_phantom_comic_as_folder_rows.py +0 -0
  774. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0042_browser_table_view_and_favorites.py +0 -0
  775. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0043_comicbox_tagging_defaults.py +0 -0
  776. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0044_alter_librarianstatus_status_type.py +0 -0
  777. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0045_library_read_only.py +0 -0
  778. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0046_comicboxtaggingdefaults_rename_files.py +0 -0
  779. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0047_oidc_settings.py +0 -0
  780. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0048_community_rating_alternative_issue.py +0 -0
  781. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0049_reprints.py +0 -0
  782. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0050_comicboxtaggingdefaults_metron_key.py +0 -0
  783. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0051_remove_comicboxtaggingdefaults_urls.py +0 -0
  784. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0052_comicboxtaggingdefaults_comicvine_url.py +0 -0
  785. {codex-2.3.0 → codex-2.3.1}/codex/migrations/0053_comicbox_5_reprints_and_sort_memory.py +0 -0
  786. {codex-2.3.0 → codex-2.3.1}/codex/migrations/__init__.py +0 -0
  787. {codex-2.3.0 → codex-2.3.1}/codex/models/__init__.py +0 -0
  788. {codex-2.3.0 → codex-2.3.1}/codex/models/admin.py +0 -0
  789. {codex-2.3.0 → codex-2.3.1}/codex/models/age_rating.py +0 -0
  790. {codex-2.3.0 → codex-2.3.1}/codex/models/auth.py +0 -0
  791. {codex-2.3.0 → codex-2.3.1}/codex/models/base.py +0 -0
  792. {codex-2.3.0 → codex-2.3.1}/codex/models/bookmark.py +0 -0
  793. {codex-2.3.0 → codex-2.3.1}/codex/models/choices.py +0 -0
  794. {codex-2.3.0 → codex-2.3.1}/codex/models/collections.py +0 -0
  795. {codex-2.3.0 → codex-2.3.1}/codex/models/comic.py +0 -0
  796. {codex-2.3.0 → codex-2.3.1}/codex/models/favorite.py +0 -0
  797. {codex-2.3.0 → codex-2.3.1}/codex/models/fields.py +0 -0
  798. {codex-2.3.0 → codex-2.3.1}/codex/models/functions.py +0 -0
  799. {codex-2.3.0 → codex-2.3.1}/codex/models/identifier.py +0 -0
  800. {codex-2.3.0 → codex-2.3.1}/codex/models/library.py +0 -0
  801. {codex-2.3.0 → codex-2.3.1}/codex/models/named.py +0 -0
  802. {codex-2.3.0 → codex-2.3.1}/codex/models/paths.py +0 -0
  803. {codex-2.3.0 → codex-2.3.1}/codex/models/query.py +0 -0
  804. {codex-2.3.0 → codex-2.3.1}/codex/models/settings.py +0 -0
  805. {codex-2.3.0 → codex-2.3.1}/codex/models/util.py +0 -0
  806. {codex-2.3.0 → codex-2.3.1}/codex/oidc.py +0 -0
  807. {codex-2.3.0 → codex-2.3.1}/codex/run.py +0 -0
  808. {codex-2.3.0 → codex-2.3.1}/codex/serializers/README.md +0 -0
  809. {codex-2.3.0 → codex-2.3.1}/codex/serializers/__init__.py +0 -0
  810. {codex-2.3.0 → codex-2.3.1}/codex/serializers/admin/__init__.py +0 -0
  811. {codex-2.3.0 → codex-2.3.1}/codex/serializers/admin/custom_cover.py +0 -0
  812. {codex-2.3.0 → codex-2.3.1}/codex/serializers/admin/email.py +0 -0
  813. {codex-2.3.0 → codex-2.3.1}/codex/serializers/admin/flags.py +0 -0
  814. {codex-2.3.0 → codex-2.3.1}/codex/serializers/admin/groups.py +0 -0
  815. {codex-2.3.0 → codex-2.3.1}/codex/serializers/admin/libraries.py +0 -0
  816. {codex-2.3.0 → codex-2.3.1}/codex/serializers/admin/oidc.py +0 -0
  817. {codex-2.3.0 → codex-2.3.1}/codex/serializers/admin/tagging.py +0 -0
  818. {codex-2.3.0 → codex-2.3.1}/codex/serializers/admin/tasks.py +0 -0
  819. {codex-2.3.0 → codex-2.3.1}/codex/serializers/admin/throttle.py +0 -0
  820. {codex-2.3.0 → codex-2.3.1}/codex/serializers/admin/users.py +0 -0
  821. {codex-2.3.0 → codex-2.3.1}/codex/serializers/auth.py +0 -0
  822. {codex-2.3.0 → codex-2.3.1}/codex/serializers/browser/__init__.py +0 -0
  823. {codex-2.3.0 → codex-2.3.1}/codex/serializers/browser/choices.py +0 -0
  824. {codex-2.3.0 → codex-2.3.1}/codex/serializers/browser/filters.py +0 -0
  825. {codex-2.3.0 → codex-2.3.1}/codex/serializers/browser/metadata.py +0 -0
  826. {codex-2.3.0 → codex-2.3.1}/codex/serializers/browser/mixins.py +0 -0
  827. {codex-2.3.0 → codex-2.3.1}/codex/serializers/browser/mtime.py +0 -0
  828. {codex-2.3.0 → codex-2.3.1}/codex/serializers/browser/page.py +0 -0
  829. {codex-2.3.0 → codex-2.3.1}/codex/serializers/browser/saved.py +0 -0
  830. {codex-2.3.0 → codex-2.3.1}/codex/serializers/browser/settings.py +0 -0
  831. {codex-2.3.0 → codex-2.3.1}/codex/serializers/fields/__init__.py +0 -0
  832. {codex-2.3.0 → codex-2.3.1}/codex/serializers/fields/auth.py +0 -0
  833. {codex-2.3.0 → codex-2.3.1}/codex/serializers/fields/base.py +0 -0
  834. {codex-2.3.0 → codex-2.3.1}/codex/serializers/fields/browser.py +0 -0
  835. {codex-2.3.0 → codex-2.3.1}/codex/serializers/fields/collection.py +0 -0
  836. {codex-2.3.0 → codex-2.3.1}/codex/serializers/fields/reader.py +0 -0
  837. {codex-2.3.0 → codex-2.3.1}/codex/serializers/fields/sanitized.py +0 -0
  838. {codex-2.3.0 → codex-2.3.1}/codex/serializers/fields/settings.py +0 -0
  839. {codex-2.3.0 → codex-2.3.1}/codex/serializers/fields/stats.py +0 -0
  840. {codex-2.3.0 → codex-2.3.1}/codex/serializers/fields/vuetify.py +0 -0
  841. {codex-2.3.0 → codex-2.3.1}/codex/serializers/homepage.py +0 -0
  842. {codex-2.3.0 → codex-2.3.1}/codex/serializers/mixins.py +0 -0
  843. {codex-2.3.0 → codex-2.3.1}/codex/serializers/models/__init__.py +0 -0
  844. {codex-2.3.0 → codex-2.3.1}/codex/serializers/models/admin.py +0 -0
  845. {codex-2.3.0 → codex-2.3.1}/codex/serializers/models/base.py +0 -0
  846. {codex-2.3.0 → codex-2.3.1}/codex/serializers/models/bookmark.py +0 -0
  847. {codex-2.3.0 → codex-2.3.1}/codex/serializers/models/collections.py +0 -0
  848. {codex-2.3.0 → codex-2.3.1}/codex/serializers/models/comic.py +0 -0
  849. {codex-2.3.0 → codex-2.3.1}/codex/serializers/models/named.py +0 -0
  850. {codex-2.3.0 → codex-2.3.1}/codex/serializers/models/pycountry.py +0 -0
  851. {codex-2.3.0 → codex-2.3.1}/codex/serializers/opds/__init__.py +0 -0
  852. {codex-2.3.0 → codex-2.3.1}/codex/serializers/opds/authentication.py +0 -0
  853. {codex-2.3.0 → codex-2.3.1}/codex/serializers/opds/urls.py +0 -0
  854. {codex-2.3.0 → codex-2.3.1}/codex/serializers/opds/v1.py +0 -0
  855. {codex-2.3.0 → codex-2.3.1}/codex/serializers/opds/v2/__init__.py +0 -0
  856. {codex-2.3.0 → codex-2.3.1}/codex/serializers/opds/v2/facet.py +0 -0
  857. {codex-2.3.0 → codex-2.3.1}/codex/serializers/opds/v2/feed.py +0 -0
  858. {codex-2.3.0 → codex-2.3.1}/codex/serializers/opds/v2/links.py +0 -0
  859. {codex-2.3.0 → codex-2.3.1}/codex/serializers/opds/v2/metadata.py +0 -0
  860. {codex-2.3.0 → codex-2.3.1}/codex/serializers/opds/v2/progression.py +0 -0
  861. {codex-2.3.0 → codex-2.3.1}/codex/serializers/opds/v2/publication.py +0 -0
  862. {codex-2.3.0 → codex-2.3.1}/codex/serializers/opds/v2/unused.py +0 -0
  863. {codex-2.3.0 → codex-2.3.1}/codex/serializers/reader.py +0 -0
  864. {codex-2.3.0 → codex-2.3.1}/codex/serializers/redirect.py +0 -0
  865. {codex-2.3.0 → codex-2.3.1}/codex/serializers/route.py +0 -0
  866. {codex-2.3.0 → codex-2.3.1}/codex/serializers/settings.py +0 -0
  867. {codex-2.3.0 → codex-2.3.1}/codex/settings/README.md +0 -0
  868. {codex-2.3.0 → codex-2.3.1}/codex/settings/codex.toml.default +0 -0
  869. {codex-2.3.0 → codex-2.3.1}/codex/settings/config.py +0 -0
  870. {codex-2.3.0 → codex-2.3.1}/codex/settings/db.py +0 -0
  871. {codex-2.3.0 → codex-2.3.1}/codex/settings/hypercorn_migrate.py +0 -0
  872. {codex-2.3.0 → codex-2.3.1}/codex/settings/logging.py +0 -0
  873. {codex-2.3.0 → codex-2.3.1}/codex/settings/secret_key.py +0 -0
  874. {codex-2.3.0 → codex-2.3.1}/codex/settings/servestatic.py +0 -0
  875. {codex-2.3.0 → codex-2.3.1}/codex/settings/timezone.py +0 -0
  876. {codex-2.3.0 → codex-2.3.1}/codex/signals/__init__.py +0 -0
  877. {codex-2.3.0 → codex-2.3.1}/codex/signals/django_signals.py +0 -0
  878. {codex-2.3.0 → codex-2.3.1}/codex/signals/os_signals.py +0 -0
  879. {codex-2.3.0 → codex-2.3.1}/codex/startup/db.py +0 -0
  880. {codex-2.3.0 → codex-2.3.1}/codex/startup/loguru.py +0 -0
  881. {codex-2.3.0 → codex-2.3.1}/codex/startup/registration.py +0 -0
  882. {codex-2.3.0 → codex-2.3.1}/codex/static/account/js/account.js +0 -0
  883. {codex-2.3.0 → codex-2.3.1}/codex/static/account/js/account.js.br +0 -0
  884. {codex-2.3.0 → codex-2.3.1}/codex/static/account/js/account.js.gz +0 -0
  885. {codex-2.3.0 → codex-2.3.1}/codex/static/account/js/onload.js +0 -0
  886. {codex-2.3.0 → codex-2.3.1}/codex/static/account/js/onload.js.br +0 -0
  887. {codex-2.3.0 → codex-2.3.1}/codex/static/account/js/onload.js.gz +0 -0
  888. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VAvatar-tHQoBwOM.css +0 -0
  889. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VAvatar-tHQoBwOM.css.br +0 -0
  890. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VAvatar-tHQoBwOM.css.gz +0 -0
  891. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VCard-dv-Dc592.css +0 -0
  892. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VCard-dv-Dc592.css.br +0 -0
  893. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VCard-dv-Dc592.css.gz +0 -0
  894. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VCheckbox-ChRKi1kj.css +0 -0
  895. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VCheckbox-ChRKi1kj.css.br +0 -0
  896. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VCheckbox-ChRKi1kj.css.gz +0 -0
  897. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VChip-CXX7zOb-.css +0 -0
  898. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VChip-CXX7zOb-.css.br +0 -0
  899. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VChip-CXX7zOb-.css.gz +0 -0
  900. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VCombobox-C3ha-zP2.css +0 -0
  901. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VCombobox-C3ha-zP2.css.br +0 -0
  902. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VCombobox-C3ha-zP2.css.gz +0 -0
  903. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VContainer-ku9EbwM-.css +0 -0
  904. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VContainer-ku9EbwM-.css.br +0 -0
  905. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VContainer-ku9EbwM-.css.gz +0 -0
  906. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VDataTableVirtual-myUG9XI9.css +0 -0
  907. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VDataTableVirtual-myUG9XI9.css.br +0 -0
  908. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VDataTableVirtual-myUG9XI9.css.gz +0 -0
  909. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VExpansionPanels-cvCWEkWz.css +0 -0
  910. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VExpansionPanels-cvCWEkWz.css.br +0 -0
  911. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VExpansionPanels-cvCWEkWz.css.gz +0 -0
  912. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VOverlay-DG-PukqI.css +0 -0
  913. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VOverlay-DG-PukqI.css.br +0 -0
  914. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VOverlay-DG-PukqI.css.gz +0 -0
  915. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VProgressCircular-GPPnnKWp.css +0 -0
  916. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VProgressCircular-GPPnnKWp.css.br +0 -0
  917. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VProgressCircular-GPPnnKWp.css.gz +0 -0
  918. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VRadioGroup-C9f4tbih.css +0 -0
  919. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VRadioGroup-C9f4tbih.css.br +0 -0
  920. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VRadioGroup-C9f4tbih.css.gz +0 -0
  921. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VSelect-CVTLpB4Y.css +0 -0
  922. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VSelect-CVTLpB4Y.css.br +0 -0
  923. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VSelect-CVTLpB4Y.css.gz +0 -0
  924. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VSelectionControl-CE0dm6Zj.css +0 -0
  925. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VSelectionControl-CE0dm6Zj.css.br +0 -0
  926. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VSelectionControl-CE0dm6Zj.css.gz +0 -0
  927. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VTable-LbK8_KkU.css +0 -0
  928. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VTable-LbK8_KkU.css.br +0 -0
  929. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VTable-LbK8_KkU.css.gz +0 -0
  930. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VTabs-CbE80JuE.css +0 -0
  931. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VTabs-CbE80JuE.css.br +0 -0
  932. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VTabs-CbE80JuE.css.gz +0 -0
  933. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VTextField-BYvlbStN.css +0 -0
  934. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VTextField-BYvlbStN.css.br +0 -0
  935. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/VTextField-BYvlbStN.css.gz +0 -0
  936. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/action-bar-BLLbZMrO.css +0 -0
  937. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/action-bar-BLLbZMrO.css.br +0 -0
  938. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/action-bar-BLLbZMrO.css.gz +0 -0
  939. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-B664n-z3.css +0 -0
  940. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-B664n-z3.css.br +0 -0
  941. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-B664n-z3.css.gz +0 -0
  942. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-menu-C0OguDOK.css +0 -0
  943. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-menu-C0OguDOK.css.br +0 -0
  944. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-menu-C0OguDOK.css.gz +0 -0
  945. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-section-OBW5Kgnb.css +0 -0
  946. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-section-OBW5Kgnb.css.br +0 -0
  947. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-section-OBW5Kgnb.css.gz +0 -0
  948. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-settings-button-errors-8nyZgICC.css +0 -0
  949. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-settings-button-errors-8nyZgICC.css.br +0 -0
  950. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-settings-button-errors-8nyZgICC.css.gz +0 -0
  951. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-settings-button-progress-DJAsUqRu.css +0 -0
  952. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-settings-button-prompts-DqHaoDam.css +0 -0
  953. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-settings-button-prompts-DqHaoDam.css.br +0 -0
  954. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/admin-settings-button-prompts-DqHaoDam.css.gz +0 -0
  955. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/auth-tab-BPqZ3Vy6.css +0 -0
  956. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/auth-tab-BPqZ3Vy6.css.br +0 -0
  957. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/auth-tab-BPqZ3Vy6.css.gz +0 -0
  958. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/base-C6NzGJso.js +0 -0
  959. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/base-C6NzGJso.js.br +0 -0
  960. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/base-C6NzGJso.js.gz +0 -0
  961. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/browser-choices-CaAGfCRP.js +0 -0
  962. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/browser-choices-CaAGfCRP.js.br +0 -0
  963. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/browser-choices-CaAGfCRP.js.gz +0 -0
  964. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/browser-mUE6saK0.css +0 -0
  965. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/browser-mUE6saK0.css.br +0 -0
  966. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/browser-mUE6saK0.css.gz +0 -0
  967. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/clipboard-CHKZWj7s.css +0 -0
  968. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/clipboard-CHKZWj7s.css.br +0 -0
  969. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/clipboard-CHKZWj7s.css.gz +0 -0
  970. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/close-button-CEYanHQ4.css +0 -0
  971. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/confirm-dialog-D5_8m9zi.css +0 -0
  972. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/confirm-dialog-D5_8m9zi.css.br +0 -0
  973. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/confirm-dialog-D5_8m9zi.css.gz +0 -0
  974. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/custom-covers-tab-BSky9jRu.css +0 -0
  975. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/custom-covers-tab-BSky9jRu.css.br +0 -0
  976. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/custom-covers-tab-BSky9jRu.css.gz +0 -0
  977. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/datetime-6KSUmkh6.js +0 -0
  978. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/datetime-6KSUmkh6.js.br +0 -0
  979. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/datetime-6KSUmkh6.js.gz +0 -0
  980. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/datetime-column-BZ76Qjcv.css +0 -0
  981. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/delete-row-dialog-Dhep7edh.css +0 -0
  982. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/dist-Kll2twSG.js +0 -0
  983. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/dist-Kll2twSG.js.br +0 -0
  984. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/dist-Kll2twSG.js.gz +0 -0
  985. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/dist.es2015-CD1KUkvy.js +0 -0
  986. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/dist.es2015-CD1KUkvy.js.br +0 -0
  987. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/dist.es2015-CD1KUkvy.js.gz +0 -0
  988. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/dist.es2015-Cy0bzSGI.js +0 -0
  989. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/dist.es2015-Cy0bzSGI.js.br +0 -0
  990. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/dist.es2015-Cy0bzSGI.js.gz +0 -0
  991. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/edit-panel-sn0WCQY5.css +0 -0
  992. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/edit-panel-sn0WCQY5.css.br +0 -0
  993. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/edit-panel-sn0WCQY5.css.gz +0 -0
  994. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/email-tab-DWz9KL0Q.css +0 -0
  995. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/email-tab-DWz9KL0Q.css.br +0 -0
  996. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/email-tab-DWz9KL0Q.css.gz +0 -0
  997. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/expand-toggle-BXambh2w.css +0 -0
  998. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/expand-toggle-BXambh2w.css.br +0 -0
  999. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/expand-toggle-BXambh2w.css.gz +0 -0
  1000. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/flag-card-njMGfaAJ.css +0 -0
  1001. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/flag-card-njMGfaAJ.css.br +0 -0
  1002. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/flag-card-njMGfaAJ.css.gz +0 -0
  1003. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/group-tab-C-K6Vw9z.css +0 -0
  1004. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/group-tab-C-K6Vw9z.css.br +0 -0
  1005. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/group-tab-C-K6Vw9z.css.gz +0 -0
  1006. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/http-error-1LOpL9mn.css +0 -0
  1007. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/http-error-1LOpL9mn.css.br +0 -0
  1008. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/http-error-1LOpL9mn.css.gz +0 -0
  1009. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/job-tab-BxmSQQ5l.css +0 -0
  1010. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/job-tab-BxmSQQ5l.css.br +0 -0
  1011. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/job-tab-BxmSQQ5l.css.gz +0 -0
  1012. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/library-tab-DFcgmmuz.css +0 -0
  1013. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/library-tab-DFcgmmuz.css.br +0 -0
  1014. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/library-tab-DFcgmmuz.css.gz +0 -0
  1015. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/materialdesignicons-webfont-B7mPwVP_.ttf +0 -0
  1016. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/materialdesignicons-webfont-B7mPwVP_.ttf.br +0 -0
  1017. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/materialdesignicons-webfont-B7mPwVP_.ttf.gz +0 -0
  1018. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/materialdesignicons-webfont-CSr8KVlo.eot +0 -0
  1019. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/materialdesignicons-webfont-CSr8KVlo.eot.br +0 -0
  1020. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/materialdesignicons-webfont-CSr8KVlo.eot.gz +0 -0
  1021. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/materialdesignicons-webfont-Dp5v-WZN.woff2 +0 -0
  1022. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/materialdesignicons-webfont-PXm3-2wK.woff +0 -0
  1023. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/mdi-VRxqGcdY.js +0 -0
  1024. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/mdi-VRxqGcdY.js.br +0 -0
  1025. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/mdi-VRxqGcdY.js.gz +0 -0
  1026. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/online-tag-BQs8D5x3.js +0 -0
  1027. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/online-tag-BQs8D5x3.js.br +0 -0
  1028. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/online-tag-BQs8D5x3.js.gz +0 -0
  1029. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/pagination-toolbar-pBjr5RUs.css +0 -0
  1030. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/pagination-toolbar-pBjr5RUs.css.br +0 -0
  1031. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/pagination-toolbar-pBjr5RUs.css.gz +0 -0
  1032. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/pdf-doc-RMRstq1W.css +0 -0
  1033. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/pdf-doc-RMRstq1W.css.br +0 -0
  1034. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/pdf-doc-RMRstq1W.css.gz +0 -0
  1035. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/reader-CV4fZzez.css +0 -0
  1036. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/reader-CV4fZzez.css.br +0 -0
  1037. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/reader-CV4fZzez.css.gz +0 -0
  1038. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/reader-map-DICen4Pr.js +0 -0
  1039. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/reader-map-DICen4Pr.js.br +0 -0
  1040. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/reader-map-DICen4Pr.js.gz +0 -0
  1041. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/relation-chips-CVzPLks2.css +0 -0
  1042. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/relation-chips-CVzPLks2.css.br +0 -0
  1043. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/relation-chips-CVzPLks2.css.gz +0 -0
  1044. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/reset-password-confirm-CKwg9kNC.css +0 -0
  1045. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/reset-password-confirm-CKwg9kNC.css.br +0 -0
  1046. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/reset-password-confirm-CKwg9kNC.css.gz +0 -0
  1047. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/restore-tab-B2d7ldoY.css +0 -0
  1048. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/restore-tab-B2d7ldoY.css.br +0 -0
  1049. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/restore-tab-B2d7ldoY.css.gz +0 -0
  1050. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/rolldown-runtime-DK3Fl9T5.js +0 -0
  1051. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/rolldown-runtime-DK3Fl9T5.js.br +0 -0
  1052. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/settings-tab-Dz3rsQ0B.css +0 -0
  1053. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/settings-tab-Dz3rsQ0B.css.br +0 -0
  1054. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/settings-tab-Dz3rsQ0B.css.gz +0 -0
  1055. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/source-labels-CLbVHwH4.js +0 -0
  1056. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/sso-error-irWbDBI-.css +0 -0
  1057. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/sso-error-irWbDBI-.css.br +0 -0
  1058. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/sso-error-irWbDBI-.css.gz +0 -0
  1059. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/ssrBoot-ccxVxXP1.js +0 -0
  1060. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/ssrBoot-ccxVxXP1.js.br +0 -0
  1061. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/ssrBoot-ccxVxXP1.js.gz +0 -0
  1062. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/stats-tab-Duuyb5Et.css +0 -0
  1063. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/stats-tab-Duuyb5Et.css.br +0 -0
  1064. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/stats-tab-Duuyb5Et.css.gz +0 -0
  1065. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/submit-footer-DxBt30-N.css +0 -0
  1066. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/submit-footer-DxBt30-N.css.br +0 -0
  1067. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/submit-footer-DxBt30-N.css.gz +0 -0
  1068. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/tagging-choices-C_47yKpF.js +0 -0
  1069. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/tagging-choices-C_47yKpF.js.br +0 -0
  1070. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/tagging-choices-C_47yKpF.js.gz +0 -0
  1071. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/tagging-tab-Dmmp3Ein.css +0 -0
  1072. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/tagging-tab-Dmmp3Ein.css.br +0 -0
  1073. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/tagging-tab-Dmmp3Ein.css.gz +0 -0
  1074. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/tooltip-BI1qRHEp.css +0 -0
  1075. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/tooltip-BI1qRHEp.css.br +0 -0
  1076. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/tooltip-BI1qRHEp.css.gz +0 -0
  1077. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/unauthorized-CPRzx7Kv.css +0 -0
  1078. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/unauthorized-CPRzx7Kv.css.br +0 -0
  1079. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/unauthorized-CPRzx7Kv.css.gz +0 -0
  1080. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/use-now-timer-DvHw9Uhi.js +0 -0
  1081. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/use-now-timer-DvHw9Uhi.js.br +0 -0
  1082. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/use-now-timer-DvHw9Uhi.js.gz +0 -0
  1083. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/user-tab-CbmfN5n9.css +0 -0
  1084. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/user-tab-CbmfN5n9.css.br +0 -0
  1085. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/user-tab-CbmfN5n9.css.gz +0 -0
  1086. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/vendor-vue-ctjZ54jx.js +0 -0
  1087. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/vendor-vue-ctjZ54jx.js.br +0 -0
  1088. {codex-2.3.0 → codex-2.3.1}/codex/static/assets/vendor-vue-ctjZ54jx.js.gz +0 -0
  1089. {codex-2.3.0 → codex-2.3.1}/codex/static/img/comic-165.webp +0 -0
  1090. {codex-2.3.0 → codex-2.3.1}/codex/static/img/comic.svg +0 -0
  1091. {codex-2.3.0 → codex-2.3.1}/codex/static/img/comic.svg.br +0 -0
  1092. {codex-2.3.0 → codex-2.3.1}/codex/static/img/comic.svg.gz +0 -0
  1093. {codex-2.3.0 → codex-2.3.1}/codex/static/img/folder.svg +0 -0
  1094. {codex-2.3.0 → codex-2.3.1}/codex/static/img/folder.svg.br +0 -0
  1095. {codex-2.3.0 → codex-2.3.1}/codex/static/img/folder.svg.gz +0 -0
  1096. {codex-2.3.0 → codex-2.3.1}/codex/static/img/imprint.svg +0 -0
  1097. {codex-2.3.0 → codex-2.3.1}/codex/static/img/imprint.svg.br +0 -0
  1098. {codex-2.3.0 → codex-2.3.1}/codex/static/img/imprint.svg.gz +0 -0
  1099. {codex-2.3.0 → codex-2.3.1}/codex/static/img/logo-32.webp +0 -0
  1100. {codex-2.3.0 → codex-2.3.1}/codex/static/img/logo-maskable-180.webp +0 -0
  1101. {codex-2.3.0 → codex-2.3.1}/codex/static/img/logo-maskable.svg +0 -0
  1102. {codex-2.3.0 → codex-2.3.1}/codex/static/img/logo-maskable.svg.br +0 -0
  1103. {codex-2.3.0 → codex-2.3.1}/codex/static/img/logo-maskable.svg.gz +0 -0
  1104. {codex-2.3.0 → codex-2.3.1}/codex/static/img/logo.svg +0 -0
  1105. {codex-2.3.0 → codex-2.3.1}/codex/static/img/logo.svg.br +0 -0
  1106. {codex-2.3.0 → codex-2.3.1}/codex/static/img/logo.svg.gz +0 -0
  1107. {codex-2.3.0 → codex-2.3.1}/codex/static/img/publisher.svg +0 -0
  1108. {codex-2.3.0 → codex-2.3.1}/codex/static/img/publisher.svg.br +0 -0
  1109. {codex-2.3.0 → codex-2.3.1}/codex/static/img/publisher.svg.gz +0 -0
  1110. {codex-2.3.0 → codex-2.3.1}/codex/static/img/series.svg +0 -0
  1111. {codex-2.3.0 → codex-2.3.1}/codex/static/img/series.svg.br +0 -0
  1112. {codex-2.3.0 → codex-2.3.1}/codex/static/img/series.svg.gz +0 -0
  1113. {codex-2.3.0 → codex-2.3.1}/codex/static/img/story-arc.svg +0 -0
  1114. {codex-2.3.0 → codex-2.3.1}/codex/static/img/story-arc.svg.br +0 -0
  1115. {codex-2.3.0 → codex-2.3.1}/codex/static/img/story-arc.svg.gz +0 -0
  1116. {codex-2.3.0 → codex-2.3.1}/codex/static/img/volume.svg +0 -0
  1117. {codex-2.3.0 → codex-2.3.1}/codex/static/img/volume.svg.br +0 -0
  1118. {codex-2.3.0 → codex-2.3.1}/codex/static/img/volume.svg.gz +0 -0
  1119. {codex-2.3.0 → codex-2.3.1}/codex/static/pwa/offline.html +0 -0
  1120. {codex-2.3.0 → codex-2.3.1}/codex/static/pwa/offline.html.br +0 -0
  1121. {codex-2.3.0 → codex-2.3.1}/codex/static/pwa/offline.html.gz +0 -0
  1122. {codex-2.3.0 → codex-2.3.1}/codex/static/robots.txt +0 -0
  1123. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/.picopt_treestamps.yaml +0 -0
  1124. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/comic-165.webp +0 -0
  1125. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/comic.svg +0 -0
  1126. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/folder.svg +0 -0
  1127. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/imprint.svg +0 -0
  1128. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/logo-32.webp +0 -0
  1129. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/logo-maskable-180.webp +0 -0
  1130. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/logo-maskable.svg +0 -0
  1131. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/logo.svg +0 -0
  1132. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/publisher.svg +0 -0
  1133. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/series.svg +0 -0
  1134. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/story-arc.svg +0 -0
  1135. {codex-2.3.0 → codex-2.3.1}/codex/static_src/img/volume.svg +0 -0
  1136. {codex-2.3.0 → codex-2.3.1}/codex/static_src/pwa/offline.html +0 -0
  1137. {codex-2.3.0 → codex-2.3.1}/codex/static_src/robots.txt +0 -0
  1138. {codex-2.3.0 → codex-2.3.1}/codex/templates/README.md +0 -0
  1139. {codex-2.3.0 → codex-2.3.1}/codex/templates/headers-icons.html +0 -0
  1140. {codex-2.3.0 → codex-2.3.1}/codex/templates/headers-script-globals.html +0 -0
  1141. {codex-2.3.0 → codex-2.3.1}/codex/templates/index.html +0 -0
  1142. {codex-2.3.0 → codex-2.3.1}/codex/templates/opds_v1/index.xml +0 -0
  1143. {codex-2.3.0 → codex-2.3.1}/codex/templates/opds_v1/opensearch_v1.xml +0 -0
  1144. {codex-2.3.0 → codex-2.3.1}/codex/templates/pwa/headers.html +0 -0
  1145. {codex-2.3.0 → codex-2.3.1}/codex/templates/pwa/manifest.webmanifest +0 -0
  1146. {codex-2.3.0 → codex-2.3.1}/codex/templates/pwa/serviceworker-register.js +0 -0
  1147. {codex-2.3.0 → codex-2.3.1}/codex/templates/pwa/serviceworker.js +0 -0
  1148. {codex-2.3.0 → codex-2.3.1}/codex/templates/rest_registration/register/body.txt +0 -0
  1149. {codex-2.3.0 → codex-2.3.1}/codex/templates/rest_registration/register/subject.txt +0 -0
  1150. {codex-2.3.0 → codex-2.3.1}/codex/templates/rest_registration/reset_password/body.html +0 -0
  1151. {codex-2.3.0 → codex-2.3.1}/codex/templates/rest_registration/reset_password/body.txt +0 -0
  1152. {codex-2.3.0 → codex-2.3.1}/codex/templates/rest_registration/reset_password/subject.txt +0 -0
  1153. {codex-2.3.0 → codex-2.3.1}/codex/throttling.py +0 -0
  1154. {codex-2.3.0 → codex-2.3.1}/codex/urls/__init__.py +0 -0
  1155. {codex-2.3.0 → codex-2.3.1}/codex/urls/api/__init__.py +0 -0
  1156. {codex-2.3.0 → codex-2.3.1}/codex/urls/api/root.py +0 -0
  1157. {codex-2.3.0 → codex-2.3.1}/codex/urls/api/v4/__init__.py +0 -0
  1158. {codex-2.3.0 → codex-2.3.1}/codex/urls/api/v4/admin.py +0 -0
  1159. {codex-2.3.0 → codex-2.3.1}/codex/urls/api/v4/auth.py +0 -0
  1160. {codex-2.3.0 → codex-2.3.1}/codex/urls/api/v4/browse.py +0 -0
  1161. {codex-2.3.0 → codex-2.3.1}/codex/urls/api/v4/comics.py +0 -0
  1162. {codex-2.3.0 → codex-2.3.1}/codex/urls/api/v4/favorites.py +0 -0
  1163. {codex-2.3.0 → codex-2.3.1}/codex/urls/api/v4/reader.py +0 -0
  1164. {codex-2.3.0 → codex-2.3.1}/codex/urls/app.py +0 -0
  1165. {codex-2.3.0 → codex-2.3.1}/codex/urls/const.py +0 -0
  1166. {codex-2.3.0 → codex-2.3.1}/codex/urls/converters.py +0 -0
  1167. {codex-2.3.0 → codex-2.3.1}/codex/urls/opds/__init__.py +0 -0
  1168. {codex-2.3.0 → codex-2.3.1}/codex/urls/opds/authentication.py +0 -0
  1169. {codex-2.3.0 → codex-2.3.1}/codex/urls/opds/binary.py +0 -0
  1170. {codex-2.3.0 → codex-2.3.1}/codex/urls/opds/root.py +0 -0
  1171. {codex-2.3.0 → codex-2.3.1}/codex/urls/opds/v1.py +0 -0
  1172. {codex-2.3.0 → codex-2.3.1}/codex/urls/opds/v2.py +0 -0
  1173. {codex-2.3.0 → codex-2.3.1}/codex/urls/pwa.py +0 -0
  1174. {codex-2.3.0 → codex-2.3.1}/codex/urls/root.py +0 -0
  1175. {codex-2.3.0 → codex-2.3.1}/codex/urls/spectacular.py +0 -0
  1176. {codex-2.3.0 → codex-2.3.1}/codex/user_data/__init__.py +0 -0
  1177. {codex-2.3.0 → codex-2.3.1}/codex/user_data/backups.py +0 -0
  1178. {codex-2.3.0 → codex-2.3.1}/codex/user_data/dump.py +0 -0
  1179. {codex-2.3.0 → codex-2.3.1}/codex/user_data/identifiers.py +0 -0
  1180. {codex-2.3.0 → codex-2.3.1}/codex/user_data/restore.py +0 -0
  1181. {codex-2.3.0 → codex-2.3.1}/codex/user_data/schema.sql +0 -0
  1182. {codex-2.3.0 → codex-2.3.1}/codex/user_data/serializers.py +0 -0
  1183. {codex-2.3.0 → codex-2.3.1}/codex/user_data/store.py +0 -0
  1184. {codex-2.3.0 → codex-2.3.1}/codex/version.py +0 -0
  1185. {codex-2.3.0 → codex-2.3.1}/codex/views/README.md +0 -0
  1186. {codex-2.3.0 → codex-2.3.1}/codex/views/__init__.py +0 -0
  1187. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/__init__.py +0 -0
  1188. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/age_rating_metron.py +0 -0
  1189. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/api_key.py +0 -0
  1190. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/auth.py +0 -0
  1191. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/custom_cover.py +0 -0
  1192. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/dump_user_data.py +0 -0
  1193. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/email.py +0 -0
  1194. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/failed_imports_seen.py +0 -0
  1195. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/flag.py +0 -0
  1196. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/group.py +0 -0
  1197. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/identifier_parse.py +0 -0
  1198. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/json_api.py +0 -0
  1199. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/library.py +0 -0
  1200. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/oidc.py +0 -0
  1201. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/onlinetag.py +0 -0
  1202. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/permissions.py +0 -0
  1203. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/restore_user_data.py +0 -0
  1204. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/stats.py +0 -0
  1205. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/tag_write_errors.py +0 -0
  1206. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/tagging_defaults.py +0 -0
  1207. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/tagging_validate.py +0 -0
  1208. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/tagwrite.py +0 -0
  1209. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/tasks.py +0 -0
  1210. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/throttle.py +0 -0
  1211. {codex-2.3.0 → codex-2.3.1}/codex/views/admin/user.py +0 -0
  1212. {codex-2.3.0 → codex-2.3.1}/codex/views/auth.py +0 -0
  1213. {codex-2.3.0 → codex-2.3.1}/codex/views/bookmark.py +0 -0
  1214. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/__init__.py +0 -0
  1215. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/annotate/__init__.py +0 -0
  1216. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/annotate/bookmark.py +0 -0
  1217. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/annotate/card.py +0 -0
  1218. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/annotate/cover.py +0 -0
  1219. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/annotate/order.py +0 -0
  1220. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/bookmark.py +0 -0
  1221. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/breadcrumbs.py +0 -0
  1222. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/browser.py +0 -0
  1223. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/choices.py +0 -0
  1224. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/collection_mtime.py +0 -0
  1225. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/columns.py +0 -0
  1226. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/const.py +0 -0
  1227. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/cover.py +0 -0
  1228. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/download.py +0 -0
  1229. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/__init__.py +0 -0
  1230. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/bookmark.py +0 -0
  1231. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/collection.py +0 -0
  1232. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/field.py +0 -0
  1233. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/filter.py +0 -0
  1234. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/search/__init__.py +0 -0
  1235. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/search/field/__init__.py +0 -0
  1236. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/search/field/column.py +0 -0
  1237. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/search/field/expression.py +0 -0
  1238. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/search/field/filter.py +0 -0
  1239. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/search/field/parse.py +0 -0
  1240. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/search/fts.py +0 -0
  1241. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/filters/search/parse.py +0 -0
  1242. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/force_update.py +0 -0
  1243. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/intersections.py +0 -0
  1244. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/metadata/__init__.py +0 -0
  1245. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/metadata/annotate.py +0 -0
  1246. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/metadata/collection_list.py +0 -0
  1247. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/metadata/const.py +0 -0
  1248. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/metadata/copy_intersections.py +0 -0
  1249. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/metadata/query_intersections.py +0 -0
  1250. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/mtime.py +0 -0
  1251. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/order_by.py +0 -0
  1252. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/page_in_bounds.py +0 -0
  1253. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/paginate.py +0 -0
  1254. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/params.py +0 -0
  1255. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/saved_settings.py +0 -0
  1256. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/settings.py +0 -0
  1257. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/title.py +0 -0
  1258. {codex-2.3.0 → codex-2.3.1}/codex/views/browser/validate.py +0 -0
  1259. {codex-2.3.0 → codex-2.3.1}/codex/views/const.py +0 -0
  1260. {codex-2.3.0 → codex-2.3.1}/codex/views/download.py +0 -0
  1261. {codex-2.3.0 → codex-2.3.1}/codex/views/envelope.py +0 -0
  1262. {codex-2.3.0 → codex-2.3.1}/codex/views/error.py +0 -0
  1263. {codex-2.3.0 → codex-2.3.1}/codex/views/exceptions.py +0 -0
  1264. {codex-2.3.0 → codex-2.3.1}/codex/views/favorites.py +0 -0
  1265. {codex-2.3.0 → codex-2.3.1}/codex/views/frontend.py +0 -0
  1266. {codex-2.3.0 → codex-2.3.1}/codex/views/healthcheck.py +0 -0
  1267. {codex-2.3.0 → codex-2.3.1}/codex/views/lazy_import.py +0 -0
  1268. {codex-2.3.0 → codex-2.3.1}/codex/views/mixins.py +0 -0
  1269. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/__init__.py +0 -0
  1270. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/auth.py +0 -0
  1271. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/authentication/__init__.py +0 -0
  1272. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/authentication/v1.py +0 -0
  1273. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/binary.py +0 -0
  1274. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/const.py +0 -0
  1275. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/error.py +0 -0
  1276. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/feed.py +0 -0
  1277. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/metadata.py +0 -0
  1278. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/opensearch/__init__.py +0 -0
  1279. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/opensearch/v1.py +0 -0
  1280. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/route.py +0 -0
  1281. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/settings.py +0 -0
  1282. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/start.py +0 -0
  1283. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/urls.py +0 -0
  1284. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/user_agent.py +0 -0
  1285. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v1/__init__.py +0 -0
  1286. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v1/const.py +0 -0
  1287. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v1/entry/__init__.py +0 -0
  1288. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v1/entry/entry.py +0 -0
  1289. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v1/entry/links.py +0 -0
  1290. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v1/facets.py +0 -0
  1291. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v1/feed.py +0 -0
  1292. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v1/links.py +0 -0
  1293. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v2/__init__.py +0 -0
  1294. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v2/const.py +0 -0
  1295. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v2/feed/__init__.py +0 -0
  1296. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v2/feed/feed_links.py +0 -0
  1297. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v2/feed/groups.py +0 -0
  1298. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v2/feed/links.py +0 -0
  1299. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v2/feed/publications.py +0 -0
  1300. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v2/href.py +0 -0
  1301. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v2/manifest.py +0 -0
  1302. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v2/progression.py +0 -0
  1303. {codex-2.3.0 → codex-2.3.1}/codex/views/opds/v2/renderers.py +0 -0
  1304. {codex-2.3.0 → codex-2.3.1}/codex/views/pagination.py +0 -0
  1305. {codex-2.3.0 → codex-2.3.1}/codex/views/pwa.py +0 -0
  1306. {codex-2.3.0 → codex-2.3.1}/codex/views/reader/__init__.py +0 -0
  1307. {codex-2.3.0 → codex-2.3.1}/codex/views/reader/_archive_cache.py +0 -0
  1308. {codex-2.3.0 → codex-2.3.1}/codex/views/reader/arcs.py +0 -0
  1309. {codex-2.3.0 → codex-2.3.1}/codex/views/reader/books.py +0 -0
  1310. {codex-2.3.0 → codex-2.3.1}/codex/views/reader/page.py +0 -0
  1311. {codex-2.3.0 → codex-2.3.1}/codex/views/reader/params.py +0 -0
  1312. {codex-2.3.0 → codex-2.3.1}/codex/views/reader/reader.py +0 -0
  1313. {codex-2.3.0 → codex-2.3.1}/codex/views/reader/settings.py +0 -0
  1314. {codex-2.3.0 → codex-2.3.1}/codex/views/register.py +0 -0
  1315. {codex-2.3.0 → codex-2.3.1}/codex/views/reset_password.py +0 -0
  1316. {codex-2.3.0 → codex-2.3.1}/codex/views/session.py +0 -0
  1317. {codex-2.3.0 → codex-2.3.1}/codex/views/settings.py +0 -0
  1318. {codex-2.3.0 → codex-2.3.1}/codex/views/template.py +0 -0
  1319. {codex-2.3.0 → codex-2.3.1}/codex/views/util.py +0 -0
  1320. {codex-2.3.0 → codex-2.3.1}/codex/websockets/README.md +0 -0
  1321. {codex-2.3.0 → codex-2.3.1}/codex/websockets/__init__.py +0 -0
  1322. {codex-2.3.0 → codex-2.3.1}/codex/websockets/consumers.py +0 -0
  1323. {codex-2.3.0 → codex-2.3.1}/codex/websockets/listener.py +0 -0
  1324. {codex-2.3.0 → codex-2.3.1}/codex/websockets/mp_queue.py +0 -0
  1325. {codex-2.3.0 → codex-2.3.1}/codex/websockets/payloads.py +0 -0
  1326. {codex-2.3.0 → codex-2.3.1}/codex/xz.py +0 -0
  1327. {codex-2.3.0 → codex-2.3.1}/compose.yaml +0 -0
  1328. {codex-2.3.0 → codex-2.3.1}/docs/WINDOWS.md +0 -0
  1329. {codex-2.3.0 → codex-2.3.1}/docs/codex/img/logo.svg +0 -0
  1330. {codex-2.3.0 → codex-2.3.1}/docs/requirements.txt +0 -0
  1331. {codex-2.3.0 → codex-2.3.1}/docs/strange.jpg +0 -0
  1332. {codex-2.3.0 → codex-2.3.1}/docs/style.css +0 -0
  1333. {codex-2.3.0 → codex-2.3.1}/docs/style.material.css +0 -0
  1334. {codex-2.3.0 → codex-2.3.1}/docs/style.mkdocs.css +0 -0
  1335. {codex-2.3.0 → codex-2.3.1}/docs/style.readthedocs.css +0 -0
  1336. {codex-2.3.0 → codex-2.3.1}/eslint.config.js +0 -0
  1337. {codex-2.3.0 → codex-2.3.1}/frontend/.gitignore +0 -0
  1338. {codex-2.3.0 → codex-2.3.1}/frontend/.npmrc +0 -0
  1339. {codex-2.3.0 → codex-2.3.1}/frontend/.prettierignore +0 -0
  1340. {codex-2.3.0 → codex-2.3.1}/frontend/.remarkignore +0 -0
  1341. {codex-2.3.0 → codex-2.3.1}/frontend/.shellcheckrc +0 -0
  1342. {codex-2.3.0 → codex-2.3.1}/frontend/DESIGN.md +0 -0
  1343. {codex-2.3.0 → codex-2.3.1}/frontend/Makefile +0 -0
  1344. {codex-2.3.0 → codex-2.3.1}/frontend/README.md +0 -0
  1345. {codex-2.3.0 → codex-2.3.1}/frontend/bin/dev-server.sh +0 -0
  1346. {codex-2.3.0 → codex-2.3.1}/frontend/bin/fix-sh.sh +0 -0
  1347. {codex-2.3.0 → codex-2.3.1}/frontend/bin/fix.sh +0 -0
  1348. {codex-2.3.0 → codex-2.3.1}/frontend/bin/kill-eslint_d.sh +0 -0
  1349. {codex-2.3.0 → codex-2.3.1}/frontend/bin/lint-darwin.sh +0 -0
  1350. {codex-2.3.0 → codex-2.3.1}/frontend/bin/lint-sh.sh +0 -0
  1351. {codex-2.3.0 → codex-2.3.1}/frontend/bin/lint.sh +0 -0
  1352. {codex-2.3.0 → codex-2.3.1}/frontend/bin/release-tag.sh +0 -0
  1353. {codex-2.3.0 → codex-2.3.1}/frontend/bin/remark-for-claude.sh +0 -0
  1354. {codex-2.3.0 → codex-2.3.1}/frontend/bin/roman.py +0 -0
  1355. {codex-2.3.0 → codex-2.3.1}/frontend/bin/sort-ignore.sh +0 -0
  1356. {codex-2.3.0 → codex-2.3.1}/frontend/bin/update-deps-node.sh +0 -0
  1357. {codex-2.3.0 → codex-2.3.1}/frontend/bin/version-node.sh +0 -0
  1358. {codex-2.3.0 → codex-2.3.1}/frontend/cfg/codex-frontend.mk +0 -0
  1359. {codex-2.3.0 → codex-2.3.1}/frontend/cfg/common.mk +0 -0
  1360. {codex-2.3.0 → codex-2.3.1}/frontend/cfg/help.mk +0 -0
  1361. {codex-2.3.0 → codex-2.3.1}/frontend/cfg/node.mk +0 -0
  1362. {codex-2.3.0 → codex-2.3.1}/frontend/jsconfig.json +0 -0
  1363. {codex-2.3.0 → codex-2.3.1}/frontend/src/admin.vue +0 -0
  1364. {codex-2.3.0 → codex-2.3.1}/frontend/src/api/v4/abortable.js +0 -0
  1365. {codex-2.3.0 → codex-2.3.1}/frontend/src/api/v4/admin.js +0 -0
  1366. {codex-2.3.0 → codex-2.3.1}/frontend/src/api/v4/base.js +0 -0
  1367. {codex-2.3.0 → codex-2.3.1}/frontend/src/api/v4/browser.js +0 -0
  1368. {codex-2.3.0 → codex-2.3.1}/frontend/src/api/v4/common.js +0 -0
  1369. {codex-2.3.0 → codex-2.3.1}/frontend/src/api/v4/favorites.js +0 -0
  1370. {codex-2.3.0 → codex-2.3.1}/frontend/src/api/v4/notify.js +0 -0
  1371. {codex-2.3.0 → codex-2.3.1}/frontend/src/api/v4/reader.js +0 -0
  1372. {codex-2.3.0 → codex-2.3.1}/frontend/src/browser.vue +0 -0
  1373. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/admin-flag-choices.json +0 -0
  1374. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/admin-jobs.json +0 -0
  1375. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/admin-status-titles.json +0 -0
  1376. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/browser-choices.json +0 -0
  1377. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/browser-defaults.json +0 -0
  1378. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/browser-map.json +0 -0
  1379. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/browser-table-column-costs.json +0 -0
  1380. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/browser-table-columns.json +0 -0
  1381. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/browser-table-default-columns.json +0 -0
  1382. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/countries.json +0 -0
  1383. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/format-field-support.json +0 -0
  1384. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/format-field-values.json +0 -0
  1385. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/identifier-sources.json +0 -0
  1386. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/identifier-type-by-codex-name.json +0 -0
  1387. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/identifier-types.json +0 -0
  1388. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/languages.json +0 -0
  1389. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/reader-choices.json +0 -0
  1390. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/reader-defaults.json +0 -0
  1391. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/reader-map.json +0 -0
  1392. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/search-map.json +0 -0
  1393. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/tagging-choices.json +0 -0
  1394. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/tagging-estimate.json +0 -0
  1395. {codex-2.3.0 → codex-2.3.1}/frontend/src/choices/websocket-messages.json +0 -0
  1396. {codex-2.3.0 → codex-2.3.1}/frontend/src/comic-name.js +0 -0
  1397. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/admin-header.vue +0 -0
  1398. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/browser-link.vue +0 -0
  1399. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/create-update-dialog/create-update-button.vue +0 -0
  1400. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/create-update-dialog/create-update-dialog.vue +0 -0
  1401. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/create-update-dialog/create-update-inputs-mixin.js +0 -0
  1402. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/create-update-dialog/duration-input.vue +0 -0
  1403. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/create-update-dialog/group-create-update-inputs.vue +0 -0
  1404. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/create-update-dialog/library-create-update-inputs.vue +0 -0
  1405. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/create-update-dialog/relation-picker.vue +0 -0
  1406. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/create-update-dialog/server-folder-picker.vue +0 -0
  1407. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/create-update-dialog/user-create-update-inputs.vue +0 -0
  1408. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/drawer/admin-menu.vue +0 -0
  1409. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/drawer/admin-settings-button-errors.vue +0 -0
  1410. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/drawer/admin-settings-button-progress.vue +0 -0
  1411. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/drawer/admin-settings-button-prompts.vue +0 -0
  1412. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/drawer/admin-settings-drawer.vue +0 -0
  1413. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/drawer/admin-settings-panel.vue +0 -0
  1414. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/drawer/status-list-item.vue +0 -0
  1415. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/drawer/status-list.vue +0 -0
  1416. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/group-chip.vue +0 -0
  1417. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/status-helpers.js +0 -0
  1418. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/action-bar.vue +0 -0
  1419. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/admin-section.scss +0 -0
  1420. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/admin-section.vue +0 -0
  1421. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/admin-table.vue +0 -0
  1422. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/auth-tab.vue +0 -0
  1423. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/custom-covers-tab.vue +0 -0
  1424. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/datetime-column.vue +0 -0
  1425. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/delete-row-dialog.vue +0 -0
  1426. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/design.scss +0 -0
  1427. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/email-tab.vue +0 -0
  1428. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/expand-toggle.vue +0 -0
  1429. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/failed-imports-panel.vue +0 -0
  1430. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/flag-card.vue +0 -0
  1431. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/flag-descriptions.json +0 -0
  1432. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/flag-groups.json +0 -0
  1433. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/group-tab.vue +0 -0
  1434. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/job-tab.vue +0 -0
  1435. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/key-value-table.vue +0 -0
  1436. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/library-tab.vue +0 -0
  1437. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/library-table.vue +0 -0
  1438. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/relation-chips.vue +0 -0
  1439. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/replace-cover-button.vue +0 -0
  1440. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/restore-tab.vue +0 -0
  1441. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/settings-tab.vue +0 -0
  1442. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/stats-tab.vue +0 -0
  1443. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/tabs.vue +0 -0
  1444. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/tag-write-errors-panel.vue +0 -0
  1445. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/tagging-status-table.vue +0 -0
  1446. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/tagging-tab.vue +0 -0
  1447. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/tagging-validation-chip.vue +0 -0
  1448. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/throttling-section.vue +0 -0
  1449. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/tabs/user-tab.vue +0 -0
  1450. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/admin/use-now-timer.js +0 -0
  1451. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/anchors.scss +0 -0
  1452. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/auth/auth-form-mixin.js +0 -0
  1453. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/auth/auth-menu.vue +0 -0
  1454. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/auth/auth-token.vue +0 -0
  1455. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/auth/change-password-dialog.vue +0 -0
  1456. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/auth/login-dialog.vue +0 -0
  1457. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/auth/profile-dialog.vue +0 -0
  1458. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/auth/reset-password-confirm.vue +0 -0
  1459. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/auth/reset-password-request-dialog.vue +0 -0
  1460. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/auth/sso-error.vue +0 -0
  1461. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/auth/sso-login-button.vue +0 -0
  1462. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/banner.vue +0 -0
  1463. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/book-cover.scss +0 -0
  1464. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/book-cover.vue +0 -0
  1465. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/browser-header.vue +0 -0
  1466. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/card/browser-card-menu.vue +0 -0
  1467. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/card/card.vue +0 -0
  1468. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/card/controls.vue +0 -0
  1469. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/card/order-by-caption.vue +0 -0
  1470. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/card/remove-cover-button.vue +0 -0
  1471. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/card/subtitle.vue +0 -0
  1472. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/card/upload-cover-button.vue +0 -0
  1473. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/drawer/browser-settings-collection.vue +0 -0
  1474. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/drawer/browser-settings-covers.vue +0 -0
  1475. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/drawer/browser-settings-drawer.vue +0 -0
  1476. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/drawer/browser-settings-misc.vue +0 -0
  1477. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/drawer/browser-settings-panel.vue +0 -0
  1478. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/drawer/browser-settings-saved.vue +0 -0
  1479. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/empty.vue +0 -0
  1480. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/filter-warning-snackbar.vue +0 -0
  1481. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/main.vue +0 -0
  1482. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/table/browser-table-cell.vue +0 -0
  1483. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/table/browser-table-column-picker.vue +0 -0
  1484. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/table/browser-table.vue +0 -0
  1485. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/breadcrumbs/breadcrumbs.vue +0 -0
  1486. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/breadcrumbs/browser-toolbar-breadcrumbs.vue +0 -0
  1487. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/browser-toolbar-title.vue +0 -0
  1488. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/nav/browser-nav-button.vue +0 -0
  1489. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/nav/browser-toolbar-nav.vue +0 -0
  1490. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/search/browser-toolbar-search.vue +0 -0
  1491. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/search/search-combobox.vue +0 -0
  1492. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/search/search-help-text.vue +0 -0
  1493. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/search/search-help.vue +0 -0
  1494. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/select-many/browser-toolbar-select-many.vue +0 -0
  1495. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/top/browser-toolbar-top.vue +0 -0
  1496. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/top/columns-button.vue +0 -0
  1497. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/top/filter-by-select.vue +0 -0
  1498. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/top/filter-choice-list.vue +0 -0
  1499. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/top/filter-sub-menu.vue +0 -0
  1500. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/top/order-by-select.vue +0 -0
  1501. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/top/order-reverse-button.vue +0 -0
  1502. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/top/search-button.vue +0 -0
  1503. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/top/toolbar-button.vue +0 -0
  1504. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/top/top-collection-select.vue +0 -0
  1505. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/browser/toolbars/top/view-mode-toggle.vue +0 -0
  1506. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/cancel-button.vue +0 -0
  1507. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/clipboard.vue +0 -0
  1508. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/close-button.vue +0 -0
  1509. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/codex-list-item.vue +0 -0
  1510. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/confirm-dialog.vue +0 -0
  1511. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/confirm-footer.vue +0 -0
  1512. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/download-button.vue +0 -0
  1513. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/empty.vue +0 -0
  1514. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/favorite-toggle.vue +0 -0
  1515. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/force-update-button.vue +0 -0
  1516. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/force-update-confirm-dialog.vue +0 -0
  1517. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/mark-read-button.vue +0 -0
  1518. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/edit-mode/clear-field-icon.vue +0 -0
  1519. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/edit-mode/edit-panel.vue +0 -0
  1520. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/expand-button.vue +0 -0
  1521. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/metadata-activator.vue +0 -0
  1522. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/metadata-body.vue +0 -0
  1523. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/metadata-chip.vue +0 -0
  1524. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/metadata-controls.vue +0 -0
  1525. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/metadata-cover.vue +0 -0
  1526. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/metadata-dialog.vue +0 -0
  1527. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/metadata-header.vue +0 -0
  1528. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/metadata-ratings.vue +0 -0
  1529. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/metadata-tags.vue +0 -0
  1530. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/metadata-text.vue +0 -0
  1531. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/table.scss +0 -0
  1532. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/metadata/tags-table.vue +0 -0
  1533. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/online-tag/launcher-dialog.vue +0 -0
  1534. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/online-tag/prompt-popup.vue +0 -0
  1535. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/online-tag/source-labels.js +0 -0
  1536. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/pagination-nav-button.vue +0 -0
  1537. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/pagination-slider.vue +0 -0
  1538. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/pagination-toolbar.vue +0 -0
  1539. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/placeholder-loading.vue +0 -0
  1540. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/book-change-activator.vue +0 -0
  1541. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/book-change-drawer.vue +0 -0
  1542. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/books-window.vue +0 -0
  1543. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/change-column.scss +0 -0
  1544. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/drawer/_expansion-panel-overrides.scss +0 -0
  1545. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/drawer/download-panel.vue +0 -0
  1546. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/drawer/keyboard-shortcuts-panel.vue +0 -0
  1547. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/drawer/keyboard-shortcuts-table.vue +0 -0
  1548. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/drawer/reader-settings-controls.vue +0 -0
  1549. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/drawer/reader-settings-drawer.vue +0 -0
  1550. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/drawer/reader-settings-panel.vue +0 -0
  1551. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/drawer/reader-settings-reader.vue +0 -0
  1552. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/drawer/reader-settings-scope.vue +0 -0
  1553. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/drawer/settings-indicator-dot.vue +0 -0
  1554. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/empty.vue +0 -0
  1555. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/pager/horizontal-pages.vue +0 -0
  1556. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/pager/page/page-error.vue +0 -0
  1557. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/pager/page/page-img.vue +0 -0
  1558. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/pager/page/page-loading.vue +0 -0
  1559. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/pager/page/page.vue +0 -0
  1560. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/pager/page-change-link.vue +0 -0
  1561. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/pager/pager-horizontal.vue +0 -0
  1562. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/pager/pager-vertical.vue +0 -0
  1563. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/pager/pager.vue +0 -0
  1564. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/pager/pdf-doc.vue +0 -0
  1565. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/pager/scale-for-scroll.vue +0 -0
  1566. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/toolbars/nav/reader-book-change-nav-button.vue +0 -0
  1567. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/toolbars/nav/reader-nav-button.vue +0 -0
  1568. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/toolbars/nav/reader-toolbar-nav.vue +0 -0
  1569. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/toolbars/top/reader-arc-select.vue +0 -0
  1570. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/reader/toolbars/top/reader-toolbar-top.vue +0 -0
  1571. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/scale-button.vue +0 -0
  1572. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/session-error-snackbar.vue +0 -0
  1573. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/settings/button.vue +0 -0
  1574. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/settings/docs-footer.vue +0 -0
  1575. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/settings/opds-dialog.vue +0 -0
  1576. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/settings/opds-url.vue +0 -0
  1577. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/settings/settings-drawer.vue +0 -0
  1578. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/submit-footer.vue +0 -0
  1579. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/toolbar-select.vue +0 -0
  1580. {codex-2.3.0 → codex-2.3.1}/frontend/src/components/unauthorized.vue +0 -0
  1581. {codex-2.3.0 → codex-2.3.1}/frontend/src/datetime.js +0 -0
  1582. {codex-2.3.0 → codex-2.3.1}/frontend/src/http-error.vue +0 -0
  1583. {codex-2.3.0 → codex-2.3.1}/frontend/src/main.js +0 -0
  1584. {codex-2.3.0 → codex-2.3.1}/frontend/src/platform.js +0 -0
  1585. {codex-2.3.0 → codex-2.3.1}/frontend/src/plugins/drag-scroll.js +0 -0
  1586. {codex-2.3.0 → codex-2.3.1}/frontend/src/plugins/router.js +0 -0
  1587. {codex-2.3.0 → codex-2.3.1}/frontend/src/reader.vue +0 -0
  1588. {codex-2.3.0 → codex-2.3.1}/frontend/src/route.js +0 -0
  1589. {codex-2.3.0 → codex-2.3.1}/frontend/src/stores/admin.js +0 -0
  1590. {codex-2.3.0 → codex-2.3.1}/frontend/src/stores/browser-select-many.js +0 -0
  1591. {codex-2.3.0 → codex-2.3.1}/frontend/src/stores/browser.js +0 -0
  1592. {codex-2.3.0 → codex-2.3.1}/frontend/src/stores/common.js +0 -0
  1593. {codex-2.3.0 → codex-2.3.1}/frontend/src/stores/favorites.js +0 -0
  1594. {codex-2.3.0 → codex-2.3.1}/frontend/src/stores/metadata.js +0 -0
  1595. {codex-2.3.0 → codex-2.3.1}/frontend/src/stores/online-tag.js +0 -0
  1596. {codex-2.3.0 → codex-2.3.1}/frontend/src/stores/reader.js +0 -0
  1597. {codex-2.3.0 → codex-2.3.1}/frontend/src/stores/socket.js +0 -0
  1598. {codex-2.3.0 → codex-2.3.1}/frontend/src/stores/store.js +0 -0
  1599. {codex-2.3.0 → codex-2.3.1}/frontend/src/util.js +0 -0
  1600. {codex-2.3.0 → codex-2.3.1}/frontend/src/vuetify-items.js +0 -0
  1601. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/__snapshots__/reader-nav-button.test.js.snap +0 -0
  1602. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/admin-menu.test.js +0 -0
  1603. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/admin-oidc-store.test.js +0 -0
  1604. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/api-v4-base-prefix.test.js +0 -0
  1605. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/auth-store.test.js +0 -0
  1606. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/book-change-drawer.test.js +0 -0
  1607. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/breadcrumbs.test.js +0 -0
  1608. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/browser-select-many-store.test.js +0 -0
  1609. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/browser-store-helpers.test.js +0 -0
  1610. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/browser-store-order-memory.test.js +0 -0
  1611. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/browser-store-search-clear.test.js +0 -0
  1612. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/browser-table-cell.test.js +0 -0
  1613. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/browser-table-column-picker.test.js +0 -0
  1614. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/datetime-column.test.js +0 -0
  1615. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/edit-panel-collections.test.js +0 -0
  1616. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/edit-panel-comicbox5-fields.test.js +0 -0
  1617. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/edit-panel-community-rating.test.js +0 -0
  1618. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/edit-panel-date.test.js +0 -0
  1619. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/edit-panel-delete-keys.test.js +0 -0
  1620. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/edit-panel-disabled-tooltips.test.js +0 -0
  1621. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/edit-panel-identifiers.test.js +0 -0
  1622. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/edit-panel-metron-fields.test.js +0 -0
  1623. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/edit-panel-reprints.test.js +0 -0
  1624. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/favorite-toggle.test.js +0 -0
  1625. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/favorites-store.test.js +0 -0
  1626. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/filter-by-select.test.js +0 -0
  1627. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/job-tab-update-note.test.js +0 -0
  1628. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/launcher-dialog.test.js +0 -0
  1629. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/metadata-activator.test.js +0 -0
  1630. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/metadata-header.test.js +0 -0
  1631. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/metadata-ratings.test.js +0 -0
  1632. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/metadata-reprints.test.js +0 -0
  1633. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/metadata-store-comicbox5.test.js +0 -0
  1634. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/online-tag-store.test.js +0 -0
  1635. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/order-by-caption.test.js +0 -0
  1636. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/pager-vertical.test.js +0 -0
  1637. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/profile-dialog.test.js +0 -0
  1638. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/prompt-popup.test.js +0 -0
  1639. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/reader-arc-select.test.js +0 -0
  1640. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/reader-nav-button.test.js +0 -0
  1641. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/reader-store-routes.test.js +0 -0
  1642. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/rename-toggle.test.js +0 -0
  1643. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/reset-password-confirm.test.js +0 -0
  1644. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/reset-password-request-dialog.test.js +0 -0
  1645. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/route-helpers.test.js +0 -0
  1646. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/sso-auth.test.js +0 -0
  1647. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/stats-tab.test.js +0 -0
  1648. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/status-helpers.test.js +0 -0
  1649. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/tag-write-errors-panel.test.js +0 -0
  1650. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/tagging-status-table.test.js +0 -0
  1651. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/tagging-tab.test.js +0 -0
  1652. {codex-2.3.0 → codex-2.3.1}/frontend/tests/unit/tagging-validation-chip.test.js +0 -0
  1653. {codex-2.3.0 → codex-2.3.1}/frontend/vite.config.js +0 -0
  1654. {codex-2.3.0 → codex-2.3.1}/img/comic.svg +0 -0
  1655. {codex-2.3.0 → codex-2.3.1}/img/folder.svg +0 -0
  1656. {codex-2.3.0 → codex-2.3.1}/img/imprint.svg +0 -0
  1657. {codex-2.3.0 → codex-2.3.1}/img/logo-maskable.svg +0 -0
  1658. {codex-2.3.0 → codex-2.3.1}/img/logo.svg +0 -0
  1659. {codex-2.3.0 → codex-2.3.1}/img/publisher.svg +0 -0
  1660. {codex-2.3.0 → codex-2.3.1}/img/series.svg +0 -0
  1661. {codex-2.3.0 → codex-2.3.1}/img/story-arc.svg +0 -0
  1662. {codex-2.3.0 → codex-2.3.1}/img/volume.svg +0 -0
  1663. {codex-2.3.0 → codex-2.3.1}/mkdocs.yml +0 -0
  1664. {codex-2.3.0 → codex-2.3.1}/tests/README.md +0 -0
  1665. {codex-2.3.0 → codex-2.3.1}/tests/__init__.py +0 -0
  1666. {codex-2.3.0 → codex-2.3.1}/tests/conftest.py +0 -0
  1667. {codex-2.3.0 → codex-2.3.1}/tests/files/comicbox-2-example.cbz +0 -0
  1668. {codex-2.3.0 → codex-2.3.1}/tests/files/comicbox-2-update.cbz +0 -0
  1669. {codex-2.3.0 → codex-2.3.1}/tests/files/comicbox.example.yaml +0 -0
  1670. {codex-2.3.0 → codex-2.3.1}/tests/files/comicbox.update.yaml +0 -0
  1671. {codex-2.3.0 → codex-2.3.1}/tests/importer/__init__.py +0 -0
  1672. {codex-2.3.0 → codex-2.3.1}/tests/importer/test_basic.py +0 -0
  1673. {codex-2.3.0 → codex-2.3.1}/tests/importer/test_delete_backstop.py +0 -0
  1674. {codex-2.3.0 → codex-2.3.1}/tests/importer/test_failed_import_vanished.py +0 -0
  1675. {codex-2.3.0 → codex-2.3.1}/tests/importer/test_move_timestamps.py +0 -0
  1676. {codex-2.3.0 → codex-2.3.1}/tests/importer/test_moved_dest_collision.py +0 -0
  1677. {codex-2.3.0 → codex-2.3.1}/tests/importer/test_moved_folder_parents.py +0 -0
  1678. {codex-2.3.0 → codex-2.3.1}/tests/importer/test_moved_stat_preserved.py +0 -0
  1679. {codex-2.3.0 → codex-2.3.1}/tests/importer/test_update_all.py +0 -0
  1680. {codex-2.3.0 → codex-2.3.1}/tests/importer/test_update_none.py +0 -0
  1681. {codex-2.3.0 → codex-2.3.1}/tests/importer/test_update_protagonist.py +0 -0
  1682. {codex-2.3.0 → codex-2.3.1}/tests/importer/test_write_then_rename.py +0 -0
  1683. {codex-2.3.0 → codex-2.3.1}/tests/nginx-local-codex.conf +0 -0
  1684. {codex-2.3.0 → codex-2.3.1}/tests/onlinetag_session_fakes.py +0 -0
  1685. {codex-2.3.0 → codex-2.3.1}/tests/opds_schema.py +0 -0
  1686. {codex-2.3.0 → codex-2.3.1}/tests/perf/__init__.py +0 -0
  1687. {codex-2.3.0 → codex-2.3.1}/tests/perf/run_baseline.py +0 -0
  1688. {codex-2.3.0 → codex-2.3.1}/tests/perf/run_opds_baseline.py +0 -0
  1689. {codex-2.3.0 → codex-2.3.1}/tests/perf/run_reader_baseline.py +0 -0
  1690. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/README.md +0 -0
  1691. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/fetch_schemas.py +0 -0
  1692. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v1/atom.rnc +0 -0
  1693. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v1/opds-pse-1.2.rnc +0 -0
  1694. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v1/opds.rnc +0 -0
  1695. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v1/opensearch-1.1.rnc +0 -0
  1696. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/opds/acquisition-object.schema.json +0 -0
  1697. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/opds/authentication.schema.json +0 -0
  1698. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/opds/feed-metadata.schema.json +0 -0
  1699. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/opds/feed.schema.json +0 -0
  1700. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/opds/progression.schema.json +0 -0
  1701. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/opds/properties.schema.json +0 -0
  1702. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/opds/publication.schema.json +0 -0
  1703. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/a11y.schema.json +0 -0
  1704. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/altIdentifier.schema.json +0 -0
  1705. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/article.schema.json +0 -0
  1706. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/chapter.schema.json +0 -0
  1707. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/collection.schema.json +0 -0
  1708. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/contributor.schema.json +0 -0
  1709. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/episode.schema.json +0 -0
  1710. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/extensions/encryption/properties.schema.json +0 -0
  1711. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/extensions/epub/metadata.schema.json +0 -0
  1712. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/extensions/epub/properties.schema.json +0 -0
  1713. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/extensions/epub/subcollections.schema.json +0 -0
  1714. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/issue.schema.json +0 -0
  1715. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/language-map.schema.json +0 -0
  1716. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/link.schema.json +0 -0
  1717. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/metadata.schema.json +0 -0
  1718. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/periodical.schema.json +0 -0
  1719. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/publication.schema.json +0 -0
  1720. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/season.schema.json +0 -0
  1721. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/series.schema.json +0 -0
  1722. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/storyArc.schema.json +0 -0
  1723. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/subcollection.schema.json +0 -0
  1724. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/subject.schema.json +0 -0
  1725. {codex-2.3.0 → codex-2.3.1}/tests/schema/opds/v2/readium/volume.schema.json +0 -0
  1726. {codex-2.3.0 → codex-2.3.1}/tests/test_admin_custom_cover.py +0 -0
  1727. {codex-2.3.0 → codex-2.3.1}/tests/test_admin_flag_defaults.py +0 -0
  1728. {codex-2.3.0 → codex-2.3.1}/tests/test_admin_oidc_settings.py +0 -0
  1729. {codex-2.3.0 → codex-2.3.1}/tests/test_admin_query_counts.py +0 -0
  1730. {codex-2.3.0 → codex-2.3.1}/tests/test_admin_singleton_settings.py +0 -0
  1731. {codex-2.3.0 → codex-2.3.1}/tests/test_admin_status_order.py +0 -0
  1732. {codex-2.3.0 → codex-2.3.1}/tests/test_admin_writes.py +0 -0
  1733. {codex-2.3.0 → codex-2.3.1}/tests/test_age_rating_acl.py +0 -0
  1734. {codex-2.3.0 → codex-2.3.1}/tests/test_api_docs_urls.py +0 -0
  1735. {codex-2.3.0 → codex-2.3.1}/tests/test_app_urls.py +0 -0
  1736. {codex-2.3.0 → codex-2.3.1}/tests/test_asgi.py +0 -0
  1737. {codex-2.3.0 → codex-2.3.1}/tests/test_asgi_db_connections.py +0 -0
  1738. {codex-2.3.0 → codex-2.3.1}/tests/test_bookmark_filter_isolation.py +0 -0
  1739. {codex-2.3.0 → codex-2.3.1}/tests/test_breadcrumbs.py +0 -0
  1740. {codex-2.3.0 → codex-2.3.1}/tests/test_browser_bookmark_unread.py +0 -0
  1741. {codex-2.3.0 → codex-2.3.1}/tests/test_browser_columns_registry.py +0 -0
  1742. {codex-2.3.0 → codex-2.3.1}/tests/test_browser_ordering.py +0 -0
  1743. {codex-2.3.0 → codex-2.3.1}/tests/test_browser_reprints_column.py +0 -0
  1744. {codex-2.3.0 → codex-2.3.1}/tests/test_browser_settings_table.py +0 -0
  1745. {codex-2.3.0 → codex-2.3.1}/tests/test_browser_table_columns.py +0 -0
  1746. {codex-2.3.0 → codex-2.3.1}/tests/test_browser_table_response.py +0 -0
  1747. {codex-2.3.0 → codex-2.3.1}/tests/test_collection_order_memory.py +0 -0
  1748. {codex-2.3.0 → codex-2.3.1}/tests/test_community_rating.py +0 -0
  1749. {codex-2.3.0 → codex-2.3.1}/tests/test_cover_views.py +0 -0
  1750. {codex-2.3.0 → codex-2.3.1}/tests/test_credential_validator.py +0 -0
  1751. {codex-2.3.0 → codex-2.3.1}/tests/test_credits.py +0 -0
  1752. {codex-2.3.0 → codex-2.3.1}/tests/test_credits_primary.py +0 -0
  1753. {codex-2.3.0 → codex-2.3.1}/tests/test_crond.py +0 -0
  1754. {codex-2.3.0 → codex-2.3.1}/tests/test_db_backup.py +0 -0
  1755. {codex-2.3.0 → codex-2.3.1}/tests/test_failed_login_log.py +0 -0
  1756. {codex-2.3.0 → codex-2.3.1}/tests/test_favorites_api.py +0 -0
  1757. {codex-2.3.0 → codex-2.3.1}/tests/test_fs_filters_ignore.py +0 -0
  1758. {codex-2.3.0 → codex-2.3.1}/tests/test_group.py +0 -0
  1759. {codex-2.3.0 → codex-2.3.1}/tests/test_identifier_types.py +0 -0
  1760. {codex-2.3.0 → codex-2.3.1}/tests/test_import_task_build.py +0 -0
  1761. {codex-2.3.0 → codex-2.3.1}/tests/test_janitor_cleanup_tagging_state.py +0 -0
  1762. {codex-2.3.0 → codex-2.3.1}/tests/test_janitor_codex_update.py +0 -0
  1763. {codex-2.3.0 → codex-2.3.1}/tests/test_janitor_failed_imports.py +0 -0
  1764. {codex-2.3.0 → codex-2.3.1}/tests/test_janitor_folder_relations.py +0 -0
  1765. {codex-2.3.0 → codex-2.3.1}/tests/test_janitor_fts_rebuild.py +0 -0
  1766. {codex-2.3.0 → codex-2.3.1}/tests/test_lazy_import.py +0 -0
  1767. {codex-2.3.0 → codex-2.3.1}/tests/test_lazy_import_marker.py +0 -0
  1768. {codex-2.3.0 → codex-2.3.1}/tests/test_librarian_status_updates.py +0 -0
  1769. {codex-2.3.0 → codex-2.3.1}/tests/test_logging_filter.py +0 -0
  1770. {codex-2.3.0 → codex-2.3.1}/tests/test_metadata_collection_list.py +0 -0
  1771. {codex-2.3.0 → codex-2.3.1}/tests/test_metadata_get_no_writes.py +0 -0
  1772. {codex-2.3.0 → codex-2.3.1}/tests/test_metadata_path.py +0 -0
  1773. {codex-2.3.0 → codex-2.3.1}/tests/test_metadata_reprints.py +0 -0
  1774. {codex-2.3.0 → codex-2.3.1}/tests/test_migration_age_rating_relink.py +0 -0
  1775. {codex-2.3.0 → codex-2.3.1}/tests/test_models.py +0 -0
  1776. {codex-2.3.0 → codex-2.3.1}/tests/test_mtime_gate.py +0 -0
  1777. {codex-2.3.0 → codex-2.3.1}/tests/test_oidc_login.py +0 -0
  1778. {codex-2.3.0 → codex-2.3.1}/tests/test_oidc_settings.py +0 -0
  1779. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_credentials.py +0 -0
  1780. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_effort.py +0 -0
  1781. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_estimate.py +0 -0
  1782. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_issue_id.py +0 -0
  1783. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_live_lookup.py +0 -0
  1784. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_merge_task.py +0 -0
  1785. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_outcome_stats.py +0 -0
  1786. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_prompt_endpoints.py +0 -0
  1787. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_prompt_resolution.py +0 -0
  1788. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_prompt_version.py +0 -0
  1789. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_resume_endpoints.py +0 -0
  1790. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_session_manager.py +0 -0
  1791. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_snapshot.py +0 -0
  1792. {codex-2.3.0 → codex-2.3.1}/tests/test_onlinetag_tag_pass.py +0 -0
  1793. {codex-2.3.0 → codex-2.3.1}/tests/test_opds_cache.py +0 -0
  1794. {codex-2.3.0 → codex-2.3.1}/tests/test_opds_contributors.py +0 -0
  1795. {codex-2.3.0 → codex-2.3.1}/tests/test_opds_feed.py +0 -0
  1796. {codex-2.3.0 → codex-2.3.1}/tests/test_opds_schema.py +0 -0
  1797. {codex-2.3.0 → codex-2.3.1}/tests/test_opds_user_agent.py +0 -0
  1798. {codex-2.3.0 → codex-2.3.1}/tests/test_password_reset.py +0 -0
  1799. {codex-2.3.0 → codex-2.3.1}/tests/test_per_user_stats.py +0 -0
  1800. {codex-2.3.0 → codex-2.3.1}/tests/test_poller_stat_refresh.py +0 -0
  1801. {codex-2.3.0 → codex-2.3.1}/tests/test_read_only_library.py +0 -0
  1802. {codex-2.3.0 → codex-2.3.1}/tests/test_reader.py +0 -0
  1803. {codex-2.3.0 → codex-2.3.1}/tests/test_registration_settings_patch.py +0 -0
  1804. {codex-2.3.0 → codex-2.3.1}/tests/test_reprints.py +0 -0
  1805. {codex-2.3.0 → codex-2.3.1}/tests/test_route_serializer.py +0 -0
  1806. {codex-2.3.0 → codex-2.3.1}/tests/test_scribe_priority.py +0 -0
  1807. {codex-2.3.0 → codex-2.3.1}/tests/test_search_fts.py +0 -0
  1808. {codex-2.3.0 → codex-2.3.1}/tests/test_search_reprints.py +0 -0
  1809. {codex-2.3.0 → codex-2.3.1}/tests/test_settings_collection_flip.py +0 -0
  1810. {codex-2.3.0 → codex-2.3.1}/tests/test_settings_comicbox_config.py +0 -0
  1811. {codex-2.3.0 → codex-2.3.1}/tests/test_shape_identifiers.py +0 -0
  1812. {codex-2.3.0 → codex-2.3.1}/tests/test_snapshot_diff.py +0 -0
  1813. {codex-2.3.0 → codex-2.3.1}/tests/test_tag_by_id.py +0 -0
  1814. {codex-2.3.0 → codex-2.3.1}/tests/test_tag_write_date.py +0 -0
  1815. {codex-2.3.0 → codex-2.3.1}/tests/test_tag_write_delete_keys.py +0 -0
  1816. {codex-2.3.0 → codex-2.3.1}/tests/test_tag_write_errors.py +0 -0
  1817. {codex-2.3.0 → codex-2.3.1}/tests/test_tag_write_filters.py +0 -0
  1818. {codex-2.3.0 → codex-2.3.1}/tests/test_tag_writer_progress.py +0 -0
  1819. {codex-2.3.0 → codex-2.3.1}/tests/test_tag_writer_rename.py +0 -0
  1820. {codex-2.3.0 → codex-2.3.1}/tests/test_tagging_rename_wiring.py +0 -0
  1821. {codex-2.3.0 → codex-2.3.1}/tests/test_tagging_validate_endpoint.py +0 -0
  1822. {codex-2.3.0 → codex-2.3.1}/tests/test_telemeter_counts.py +0 -0
  1823. {codex-2.3.0 → codex-2.3.1}/tests/test_telemeter_privacy.py +0 -0
  1824. {codex-2.3.0 → codex-2.3.1}/tests/test_url_path_prefix.py +0 -0
  1825. {codex-2.3.0 → codex-2.3.1}/tests/test_user_data_backups.py +0 -0
  1826. {codex-2.3.0 → codex-2.3.1}/tests/test_user_data_dump.py +0 -0
  1827. {codex-2.3.0 → codex-2.3.1}/tests/test_user_data_restore.py +0 -0
  1828. {codex-2.3.0 → codex-2.3.1}/tests/test_user_data_snapshot.py +0 -0
  1829. {codex-2.3.0 → codex-2.3.1}/tests/test_user_data_store.py +0 -0
  1830. {codex-2.3.0 → codex-2.3.1}/tests/test_watcher_move_detect.py +0 -0
  1831. {codex-2.3.0 → codex-2.3.1}/tests/test_watcher_path_prefixes.py +0 -0
  1832. {codex-2.3.0 → codex-2.3.1}/tests/test_watcher_unmount_guard.py +0 -0
  1833. {codex-2.3.0 → codex-2.3.1}/tests/test_xz.py +0 -0
  1834. {codex-2.3.0 → codex-2.3.1}/vulture_ignorelist.py +0 -0
@@ -0,0 +1,43 @@
1
+ __pycache__
2
+ !dist
3
+ !docker/debian.sources
4
+ .*cache
5
+ .circleci
6
+ .claude
7
+ .coverage*
8
+ .docker-token
9
+ .DS_Store
10
+ .env*
11
+ .eslintcache
12
+ .ghrc-token
13
+ .git
14
+ .mypy_cache
15
+ .picopt_timestamp
16
+ .picopt_treestamps.yaml
17
+ .pypi-token
18
+ .pytest_cache
19
+ .ropeproject
20
+ .ruff_cache
21
+ .venv*
22
+ *.egg-info
23
+ *.py[co]
24
+ *~
25
+ *Dockerfile
26
+ benchmark
27
+ cache
28
+ codex/static
29
+ codex/static_build
30
+ comics
31
+ config
32
+ dev*
33
+ docker-compose*
34
+ docker*
35
+ MANIFEST
36
+ monkeytype.sqlite3
37
+ NEWS
38
+ node_modules
39
+ site
40
+ test-results
41
+ TODO.md
42
+ update-builder-requirement.sh
43
+ version.sh
@@ -0,0 +1,341 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ types: [opened, synchronize]
8
+ branches: [main, develop]
9
+
10
+ env:
11
+ CI_IMAGE: ghcr.io/${{ github.repository }}-ci
12
+ CI_IMAGE_TAG: ghcr.io/${{ github.repository }}-ci:latest
13
+ CI_CONTAINER: ${{ github.event.repository.name }}-ci
14
+ IMAGE: ghcr.io/${{ github.repository }}
15
+ HUB_IMAGE: docker.io/ajslater/codex
16
+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
17
+
18
+ concurrency:
19
+ group: ${{ github.workflow }}-${{ github.ref }}
20
+ cancel-in-progress: true
21
+
22
+ jobs:
23
+ # ---------------------------------------------------------------------------
24
+ # Lint, test, and build the Python wheel (amd64 only)
25
+ # ---------------------------------------------------------------------------
26
+ test:
27
+ name: Lint, Test & Build Dist
28
+ runs-on: ubuntu-24.04
29
+ if: |
30
+ github.ref_name == 'main' && github.event_name == 'push' ||
31
+ github.base_ref == 'main' ||
32
+ (github.base_ref == 'develop' && (github.head_ref == 'pre-release' || startsWith(github.head_ref, 'v')))
33
+ permissions:
34
+ contents: read
35
+ packages: write
36
+ checks: write
37
+ steps:
38
+ - name: Checkout
39
+ uses: actions/checkout@v6
40
+ with:
41
+ # Only fetch full history for the main push gate
42
+ fetch-depth: ${{ (github.ref_name == 'main' && github.event_name == 'push') && 0 || 1 }}
43
+
44
+ - name: Check for Redundant Tests & Existing Dist
45
+ id: gate
46
+ if: github.ref_name == 'main' && github.event_name == 'push'
47
+ env:
48
+ GH_REPO: ${{ github.repository }}
49
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
50
+ run: bin/ci-download-dist-if-identical.sh
51
+
52
+ - name: Set up Docker Buildx
53
+ if: steps.gate.outputs.dist_found != 'true'
54
+ uses: docker/setup-buildx-action@v4
55
+
56
+ - name: Log in to GHCR
57
+ if: steps.gate.outputs.dist_found != 'true'
58
+ uses: docker/login-action@v4
59
+ with:
60
+ registry: ghcr.io
61
+ username: ${{ github.actor }}
62
+ password: ${{ secrets.GITHUB_TOKEN }}
63
+
64
+ - name: Build dist-builder image
65
+ id: build-ci
66
+ if: steps.gate.outputs.dist_found != 'true'
67
+ uses: docker/build-push-action@v7
68
+ with:
69
+ context: .
70
+ target: codex-ci
71
+ load: true
72
+ tags: ${{ env.CI_IMAGE_TAG }}
73
+
74
+ cache-from: type=registry,ref=${{ env.CI_IMAGE }}:cache
75
+ cache-to: type=registry,ref=${{ env.CI_IMAGE }}:cache,mode=max
76
+
77
+ - name: Start Services
78
+ id: start-services
79
+ if: steps.build-ci.outcome == 'success'
80
+ run: |
81
+ mkdir -p dist test-results
82
+ docker compose up -d ci
83
+
84
+ - name: Lint
85
+ id: lint
86
+ if: steps.start-services.outcome == 'success'
87
+ run: docker exec ${{ env.CI_CONTAINER }} make lint
88
+
89
+ - name: Build for Tests & Dist
90
+ id: build-for-tests
91
+ if: steps.lint.outcome == 'success'
92
+ run: docker exec ${{ env.CI_CONTAINER }} make build-choices build-frontend collectstatic
93
+
94
+ - name: Tests
95
+ id: tests
96
+ if: steps.build-for-tests.outcome == 'success'
97
+ run: docker exec ${{ env.CI_CONTAINER }} make test-frontend django-check test-python -o build-choices
98
+
99
+ - name: Upload Test Results
100
+ id: upload-tests
101
+ if: "!cancelled() && steps.tests.outcome != 'skipped'"
102
+ uses: actions/upload-artifact@v7
103
+ with:
104
+ name: test-results
105
+ path: "**/test-results/pytest/*.xml"
106
+
107
+ - name: Publish Test Report
108
+ if: "!cancelled() && steps.upload-tests.outcome == 'success'"
109
+ uses: mikepenz/action-junit-report@v6
110
+ with:
111
+ report_paths: "**/test-results/pytest/*.xml"
112
+
113
+ - name: Build Distribution
114
+ id: build-dist
115
+ if: steps.tests.outcome == 'success'
116
+ run: docker exec ${{ env.CI_CONTAINER }} make build-only
117
+
118
+ - name: Stop Services
119
+ if: steps.start-services.outcome == 'success'
120
+ run: |
121
+ touch .env.package # hack because down is too promiscuous
122
+ docker compose down
123
+
124
+ - name: Upload dist artifact
125
+ if: "!cancelled() && steps.gate.outputs.dist_found == 'true' || steps.build-dist.outcome =='success'"
126
+ uses: actions/upload-artifact@v7
127
+ with:
128
+ name: python-dist
129
+ path: dist/
130
+ retention-days: 2
131
+
132
+ - name: Discord notification (Test Results)
133
+ if: "!cancelled() && false"
134
+ uses: sarisia/actions-status-discord@v1
135
+ with:
136
+ webhook: ${{ secrets.DISCORD_WEBHOOK }}
137
+ status: ${{ job.status }}
138
+ title: Lint & Test
139
+ description: "Tests for ${{ github.ref_name }} #${{ github.run_number }} ${{ job.status == 'success' && 'passed' || 'FAILED' }}"
140
+ color: ${{ job.status == 'success' && '0x28a745' || '0xd73a49' }}
141
+ url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
142
+
143
+ # ---------------------------------------------------------------------------
144
+ # Build per-arch Docker images natively
145
+ # ---------------------------------------------------------------------------
146
+ build:
147
+ name: Build Image (${{ matrix.arch }})
148
+ needs: test
149
+ if: github.event_name == 'push' ||
150
+ (github.base_ref == 'develop' && github.head_ref == 'pre-release')
151
+ strategy:
152
+ matrix:
153
+ include:
154
+ - arch: amd64
155
+ runner: ubuntu-24.04
156
+ - arch: arm64
157
+ runner: ubuntu-24.04-arm
158
+ runs-on: ${{ matrix.runner }}
159
+ permissions:
160
+ contents: read
161
+ packages: write
162
+ steps:
163
+ - name: Checkout
164
+ uses: actions/checkout@v6
165
+
166
+ - name: Set up Docker Buildx
167
+ uses: docker/setup-buildx-action@v4
168
+
169
+ - name: Download dist artifact
170
+ uses: actions/download-artifact@v8
171
+ with:
172
+ name: python-dist
173
+ path: dist/
174
+
175
+ - name: Set Build Context
176
+ run: |
177
+ VERSION=$(grep -Po '(?<=^version = ")[^"]+' pyproject.toml)
178
+ echo "CODEX_VERSION=${VERSION}" >> "$GITHUB_ENV"
179
+ echo "CODEX_WHEEL=$(find dist -name '*.whl' -print0 | xargs basename)" >> "$GITHUB_ENV"
180
+
181
+ - name: Log in to GHCR
182
+ uses: docker/login-action@v4
183
+ with:
184
+ registry: ghcr.io
185
+ username: ${{ github.actor }}
186
+ password: ${{ secrets.GITHUB_TOKEN }}
187
+
188
+ - name: Build and push
189
+ uses: docker/build-push-action@v7
190
+ with:
191
+ context: .
192
+ platforms: linux/${{ matrix.arch }}
193
+ push: true
194
+ build-args: |
195
+ CODEX_VERSION=${{ env.CODEX_VERSION }}
196
+ CODEX_WHEEL=${{ env.CODEX_WHEEL }}
197
+ tags: ${{ env.IMAGE }}:${{ env.CODEX_VERSION }}-${{ matrix.arch }}
198
+ cache-from: type=gha,scope=build-${{ matrix.arch }}
199
+ cache-to: type=gha,scope=build-${{ matrix.arch }},mode=max
200
+
201
+ # ---------------------------------------------------------------------------
202
+ # Create multi-arch manifest and publish
203
+ # ---------------------------------------------------------------------------
204
+ deploy:
205
+ name: Deploy
206
+ needs: build
207
+ runs-on: ubuntu-24.04
208
+ permissions:
209
+ contents: read
210
+ packages: write
211
+ steps:
212
+ - name: Checkout
213
+ uses: actions/checkout@v6
214
+
215
+ - name: Setup Docker Buildx
216
+ uses: docker/setup-buildx-action@v4
217
+
218
+ - name: Setup uv
219
+ uses: astral-sh/setup-uv@v8.0.0
220
+
221
+ - name: Download dist artifact
222
+ uses: actions/download-artifact@v8
223
+ with:
224
+ name: python-dist
225
+ path: dist/
226
+
227
+ - name: Log in to GHCR
228
+ uses: docker/login-action@v4
229
+ with:
230
+ registry: ghcr.io
231
+ username: ${{ github.actor }}
232
+ password: ${{ secrets.GITHUB_TOKEN }}
233
+
234
+ - name: Create and push manifest
235
+ run: |
236
+ VERSION=$(uv version --short)
237
+ TAG_ARGS=("-t" "${IMAGE}:${VERSION}")
238
+
239
+ # Positive regex check for Final versions (e.g., 1.2.3)
240
+ if [[ $VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
241
+ TAG_ARGS+=("-t" "${IMAGE}:latest")
242
+ fi
243
+
244
+ docker buildx imagetools create \
245
+ --annotation "index:org.opencontainers.image.title=Codex" \
246
+ --annotation "index:org.opencontainers.image.description=Codex Comic Server" \
247
+ --annotation "index:org.opencontainers.image.version=${VERSION}" \
248
+ --annotation "index:org.opencontainers.image.authors=AJ Slater <aj@slater.net>" \
249
+ --annotation "index:org.opencontainers.image.url=https://codex-reader.app" \
250
+ --annotation "index:org.opencontainers.image.source=https://github.com/ajslater/codex" \
251
+ --annotation "index:org.opencontainers.image.licenses=GPL-3.0-only" \
252
+ "${TAG_ARGS[@]}" \
253
+ "${IMAGE}:${VERSION}-amd64" \
254
+ "${IMAGE}:${VERSION}-arm64"
255
+
256
+ - name: Publish to PyPI
257
+ run: uv publish dist/*
258
+ env:
259
+ UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
260
+
261
+ - name: Discord notification (Deploy Results)
262
+ if: "!cancelled() && false"
263
+ uses: sarisia/actions-status-discord@v1
264
+ with:
265
+ webhook: ${{ secrets.DISCORD_WEBHOOK }}
266
+ status: ${{ job.status }}
267
+ title: Deploy
268
+ description: "Deploy ${{ github.ref_name }} #${{ github.run_number }} ${{ job.status == 'success' && 'succeeded' || 'FAILED' }}"
269
+ color: ${{ job.status == 'success' && '0x28a745' || '0xd73a49' }}
270
+ url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
271
+
272
+ # ---------------------------------------------------------------------------
273
+ # Republish final releases to Docker Hub as a deprecated derivative of the
274
+ # ghcr.io image: identical layers, one ENV and two labels, so stranded
275
+ # docker.io users get the in-app "move to ghcr.io" warning.
276
+ # ---------------------------------------------------------------------------
277
+ deploy-hub:
278
+ name: Deploy Deprecated Docker Hub Image
279
+ needs: deploy
280
+ runs-on: ubuntu-24.04
281
+ permissions:
282
+ contents: read
283
+ # DOCKER_USER / DOCKER_PASS are the Docker Hub credentials the old CI
284
+ # and bin/docker-tag-latest.sh already use. The secrets context is not
285
+ # allowed in a step if; a job env is. Forks and pull requests receive no
286
+ # secrets and skip cleanly, and deleting DOCKER_PASS is the switch that
287
+ # ends Docker Hub publishing.
288
+ env:
289
+ DOCKERHUB_ENABLED: ${{ secrets.DOCKER_PASS != '' }}
290
+ steps:
291
+ - name: Checkout
292
+ uses: actions/checkout@v6
293
+
294
+ - name: Setup Docker Buildx
295
+ uses: docker/setup-buildx-action@v4
296
+
297
+ - name: Check for a final version
298
+ id: version
299
+ run: |
300
+ VERSION=$(grep -Po '(?<=^version = ")[^"]+' pyproject.toml)
301
+ echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
302
+ # The same rule that gives the ghcr.io index its latest tag.
303
+ # Alphas never reach Docker Hub: nothing prunes them there and
304
+ # the only tag stranded users pull is latest.
305
+ if [[ $VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
306
+ echo "final=true" >> "$GITHUB_OUTPUT"
307
+ fi
308
+
309
+ - name: Log in to Docker Hub
310
+ if: env.DOCKERHUB_ENABLED == 'true' && steps.version.outputs.final == 'true'
311
+ uses: docker/login-action@v4
312
+ with:
313
+ username: ${{ secrets.DOCKER_USER }}
314
+ password: ${{ secrets.DOCKER_PASS }}
315
+
316
+ - name: Build and push deprecated image
317
+ if: env.DOCKERHUB_ENABLED == 'true' && steps.version.outputs.final == 'true'
318
+ env:
319
+ VERSION: ${{ steps.version.outputs.version }}
320
+ run: |
321
+ # No RUN steps: buildx rewrites the config blob per platform and
322
+ # copies the ghcr.io layers across unchanged, so no QEMU is needed.
323
+ docker buildx build \
324
+ --file hub.Dockerfile \
325
+ --platform linux/amd64,linux/arm64 \
326
+ --build-arg "CODEX_VERSION=${VERSION}" \
327
+ --provenance=false \
328
+ --sbom=false \
329
+ --annotation "index:org.opencontainers.image.title=Codex" \
330
+ --annotation "index:org.opencontainers.image.description=DEPRECATED: this image has moved to ghcr.io/ajslater/codex" \
331
+ --annotation "index:org.opencontainers.image.version=${VERSION}" \
332
+ --annotation "index:org.opencontainers.image.authors=AJ Slater <aj@slater.net>" \
333
+ --annotation "index:org.opencontainers.image.url=https://codex-reader.app" \
334
+ --annotation "index:org.opencontainers.image.source=https://github.com/ajslater/codex" \
335
+ --annotation "index:org.opencontainers.image.licenses=GPL-3.0-only" \
336
+ --annotation "index:org.opencontainers.image.base.name=${IMAGE}:${VERSION}" \
337
+ --annotation "index:org.opencontainers.image.deprecated=true" \
338
+ --tag "${HUB_IMAGE}:${VERSION}" \
339
+ --tag "${HUB_IMAGE}:latest" \
340
+ --push \
341
+ .
codex-2.3.1/.gitignore ADDED
@@ -0,0 +1,104 @@
1
+ __pycache__/
2
+ __pypackages__/
3
+ __snapshots__
4
+ .*cache
5
+ .claude
6
+ .coverage
7
+ .coverage.*
8
+ .coverage*
9
+ .dmypy.json
10
+ .docker-token
11
+ .DS_Store
12
+ .eggs/
13
+ .env
14
+ .env-*
15
+ .env.package
16
+ .env.pushover
17
+ .eslintcache
18
+ .ghrc-token
19
+ .hypothesis/
20
+ .installed.cfg
21
+ .ipynb_checkpoints
22
+ .mypy_cache/
23
+ .nox/
24
+ .npm
25
+ .pypi-token
26
+ .pypirc
27
+ .pyre/
28
+ .pytest_cache/
29
+ .Python
30
+ .python-version
31
+ .ropeproject
32
+ .ruff_cache/
33
+ .scrapy
34
+ .spyderproject
35
+ .spyproject
36
+ .tox/
37
+ .uv-publish-env
38
+ .venv*
39
+ .webassets-cache
40
+ *.cover
41
+ *.egg
42
+ *.egg-info/
43
+ *.log
44
+ *.manifest
45
+ *.mo
46
+ *.pot
47
+ *.py,cover
48
+ *.py[cod]
49
+ *.sage.py
50
+ *.so
51
+ *.spec
52
+ *~
53
+ *$py.class
54
+ build
55
+ build/
56
+ celerybeat-schedule
57
+ celerybeat.pid
58
+ codex/static_build/
59
+ codex/static/
60
+ comics
61
+ config
62
+ coverage.xml
63
+ develop-eggs/
64
+ dist
65
+ dist/
66
+ dmypy.json
67
+ docs/_build/
68
+ downloads/
69
+ eggs/
70
+ env.bak/
71
+ env/
72
+ ENV/
73
+ frontend/bundle-stats.html
74
+ frontend/components.d.ts
75
+ frontend/coverage
76
+ frontend/src/choices/
77
+ htmlcov/
78
+ instance/
79
+ ipython_config.py
80
+ jspm_packages/
81
+ lib/
82
+ lib64/
83
+ local_settings.py
84
+ MANIFEST
85
+ monkeytype.sqlite3
86
+ node_modules
87
+ node_modules/
88
+ nosetests.xml
89
+ parts/
90
+ pip-delete-this-directory.txt
91
+ pip-log.txt
92
+ pip-wheel-metadata/
93
+ profile_default/
94
+ sdist/
95
+ share/python-wheels/
96
+ site/
97
+ target/
98
+ tasks/
99
+ test-results
100
+ TODO.md
101
+ var/
102
+ venv.bak/
103
+ venv/
104
+ wheels/