codex 2.5.5__tar.gz → 2.5.7__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 (2305) hide show
  1. codex-2.5.7/NEWS.md +2756 -0
  2. codex-2.5.7/PKG-INFO +1330 -0
  3. codex-2.5.7/bin/manage.py +75 -0
  4. codex-2.5.7/bin/prune-branches.sh +90 -0
  5. codex-2.5.7/bun.lock +807 -0
  6. codex-2.5.7/codex/choices/choices_to_json.py +204 -0
  7. codex-2.5.7/codex/choices/search.py +156 -0
  8. codex-2.5.7/codex/choices/tagging.py +296 -0
  9. codex-2.5.7/codex/librarian/onlinetag/credential_validator.py +174 -0
  10. codex-2.5.7/codex/librarian/onlinetag/explicit_id.py +157 -0
  11. codex-2.5.7/codex/librarian/onlinetag/session_manager.py +1023 -0
  12. codex-2.5.7/codex/librarian/onlinetag/session_state.py +249 -0
  13. codex-2.5.7/codex/librarian/scribe/force_updater.py +38 -0
  14. codex-2.5.7/codex/librarian/scribe/importer/const.py +531 -0
  15. codex-2.5.7/codex/librarian/scribe/importer/create/comics.py +310 -0
  16. codex-2.5.7/codex/librarian/scribe/importer/create/const.py +155 -0
  17. codex-2.5.7/codex/librarian/scribe/importer/create/foreign_keys.py +315 -0
  18. codex-2.5.7/codex/librarian/scribe/importer/create/link_fks.py +192 -0
  19. codex-2.5.7/codex/librarian/scribe/importer/finish.py +164 -0
  20. codex-2.5.7/codex/librarian/scribe/importer/init.py +450 -0
  21. codex-2.5.7/codex/librarian/scribe/importer/query/foreign_keys.py +203 -0
  22. codex-2.5.7/codex/librarian/scribe/importer/query/update_comics.py +70 -0
  23. codex-2.5.7/codex/librarian/scribe/importer/read/extract.py +351 -0
  24. codex-2.5.7/codex/librarian/scribe/importer/read/foreign_keys.py +240 -0
  25. codex-2.5.7/codex/librarian/scribe/importer/search/prepare.py +105 -0
  26. codex-2.5.7/codex/librarian/scribe/importer/search/sync_m2m.py +176 -0
  27. codex-2.5.7/codex/librarian/scribe/importer/search/update.py +280 -0
  28. codex-2.5.7/codex/librarian/scribe/lazy_importer.py +50 -0
  29. codex-2.5.7/codex/librarian/scribe/search/const.py +41 -0
  30. codex-2.5.7/codex/librarian/scribe/search/prepare.py +164 -0
  31. codex-2.5.7/codex/librarian/scribe/search/sync.py +402 -0
  32. codex-2.5.7/codex/librarian/scribe/tag_writer.py +715 -0
  33. codex-2.5.7/codex/librarian/telemeter/admin_stats.py +262 -0
  34. codex-2.5.7/codex/migrations/0058_post_v2_5_5_schema.py +148 -0
  35. codex-2.5.7/codex/migrations/0059_remove_metron_legacy_login.py +29 -0
  36. codex-2.5.7/codex/models/admin.py +471 -0
  37. codex-2.5.7/codex/models/choices.py +61 -0
  38. codex-2.5.7/codex/models/collections.py +243 -0
  39. codex-2.5.7/codex/models/comic.py +471 -0
  40. codex-2.5.7/codex/models/named.py +290 -0
  41. codex-2.5.7/codex/models/settings.py +593 -0
  42. codex-2.5.7/codex/serializers/admin/tagging.py +215 -0
  43. codex-2.5.7/codex/serializers/browser/choices.py +214 -0
  44. codex-2.5.7/codex/serializers/browser/filters.py +53 -0
  45. codex-2.5.7/codex/serializers/browser/metadata.py +265 -0
  46. codex-2.5.7/codex/serializers/browser/page.py +344 -0
  47. codex-2.5.7/codex/serializers/fields/browser.py +148 -0
  48. codex-2.5.7/codex/serializers/fields/vuetify.py +145 -0
  49. codex-2.5.7/codex/settings/logging.py +154 -0
  50. codex-2.5.7/codex/static/assets/VAvatar-CuZwRbX0.css +1 -0
  51. codex-2.5.7/codex/static/assets/VAvatar-CuZwRbX0.css.br +0 -0
  52. codex-2.5.7/codex/static/assets/VAvatar-CuZwRbX0.css.gz +0 -0
  53. codex-2.5.7/codex/static/assets/VAvatar-DZCuPGTG.js +1 -0
  54. codex-2.5.7/codex/static/assets/VAvatar-DZCuPGTG.js.br +0 -0
  55. codex-2.5.7/codex/static/assets/VAvatar-DZCuPGTG.js.gz +0 -0
  56. codex-2.5.7/codex/static/assets/VCard-DFqAzU94.js +1 -0
  57. codex-2.5.7/codex/static/assets/VCard-DFqAzU94.js.br +0 -0
  58. codex-2.5.7/codex/static/assets/VCard-DFqAzU94.js.gz +0 -0
  59. codex-2.5.7/codex/static/assets/VCheckbox-BU8Saxe4.js +1 -0
  60. codex-2.5.7/codex/static/assets/VCheckbox-BU8Saxe4.js.br +0 -0
  61. codex-2.5.7/codex/static/assets/VCheckbox-BU8Saxe4.js.gz +0 -0
  62. codex-2.5.7/codex/static/assets/VCheckboxBtn-bBtm1xJ0.js +1 -0
  63. codex-2.5.7/codex/static/assets/VCheckboxBtn-bBtm1xJ0.js.br +0 -0
  64. codex-2.5.7/codex/static/assets/VCheckboxBtn-bBtm1xJ0.js.gz +0 -0
  65. codex-2.5.7/codex/static/assets/VChip-DtONJFZv.js +1 -0
  66. codex-2.5.7/codex/static/assets/VChip-DtONJFZv.js.br +0 -0
  67. codex-2.5.7/codex/static/assets/VChip-DtONJFZv.js.gz +0 -0
  68. codex-2.5.7/codex/static/assets/VCombobox-BPPc_9lX.js +2 -0
  69. codex-2.5.7/codex/static/assets/VCombobox-BPPc_9lX.js.br +0 -0
  70. codex-2.5.7/codex/static/assets/VCombobox-BPPc_9lX.js.gz +0 -0
  71. codex-2.5.7/codex/static/assets/VContainer-Bv7XBL1U.js +1 -0
  72. codex-2.5.7/codex/static/assets/VContainer-Bv7XBL1U.js.br +0 -0
  73. codex-2.5.7/codex/static/assets/VContainer-Bv7XBL1U.js.gz +0 -0
  74. codex-2.5.7/codex/static/assets/VDataTableVirtual-6VPuoyGz.js +1 -0
  75. codex-2.5.7/codex/static/assets/VDataTableVirtual-6VPuoyGz.js.br +0 -0
  76. codex-2.5.7/codex/static/assets/VDataTableVirtual-6VPuoyGz.js.gz +0 -0
  77. codex-2.5.7/codex/static/assets/VDivider-DVOckMdu.js +1 -0
  78. codex-2.5.7/codex/static/assets/VDivider-DVOckMdu.js.br +3 -0
  79. codex-2.5.7/codex/static/assets/VDivider-DVOckMdu.js.gz +0 -0
  80. codex-2.5.7/codex/static/assets/VExpansionPanels-BC74pa_C.js +1 -0
  81. codex-2.5.7/codex/static/assets/VExpansionPanels-BC74pa_C.js.br +0 -0
  82. codex-2.5.7/codex/static/assets/VExpansionPanels-BC74pa_C.js.gz +0 -0
  83. codex-2.5.7/codex/static/assets/VForm-B74VTJ9I.js +1 -0
  84. codex-2.5.7/codex/static/assets/VForm-B74VTJ9I.js.br +0 -0
  85. codex-2.5.7/codex/static/assets/VForm-B74VTJ9I.js.gz +0 -0
  86. codex-2.5.7/codex/static/assets/VListItem-Bg7nJ0JT.css +1 -0
  87. codex-2.5.7/codex/static/assets/VListItem-Bg7nJ0JT.css.br +0 -0
  88. codex-2.5.7/codex/static/assets/VListItem-Bg7nJ0JT.css.gz +0 -0
  89. codex-2.5.7/codex/static/assets/VListItem-DI64IRro.js +1 -0
  90. codex-2.5.7/codex/static/assets/VListItem-DI64IRro.js.br +0 -0
  91. codex-2.5.7/codex/static/assets/VListItem-DI64IRro.js.gz +0 -0
  92. codex-2.5.7/codex/static/assets/VMenu-D3YSHNj5.js +1 -0
  93. codex-2.5.7/codex/static/assets/VMenu-D3YSHNj5.js.br +0 -0
  94. codex-2.5.7/codex/static/assets/VMenu-D3YSHNj5.js.gz +0 -0
  95. codex-2.5.7/codex/static/assets/VOverlay-Dy14wZbn.js +1 -0
  96. codex-2.5.7/codex/static/assets/VOverlay-Dy14wZbn.js.br +0 -0
  97. codex-2.5.7/codex/static/assets/VOverlay-Dy14wZbn.js.gz +0 -0
  98. codex-2.5.7/codex/static/assets/VProgressCircular-BKXANcB0.js +10 -0
  99. codex-2.5.7/codex/static/assets/VProgressCircular-BKXANcB0.js.br +0 -0
  100. codex-2.5.7/codex/static/assets/VProgressCircular-BKXANcB0.js.gz +0 -0
  101. codex-2.5.7/codex/static/assets/VProgressCircular-DpZ1qk1-.css +1 -0
  102. codex-2.5.7/codex/static/assets/VProgressCircular-DpZ1qk1-.css.br +0 -0
  103. codex-2.5.7/codex/static/assets/VProgressCircular-DpZ1qk1-.css.gz +0 -0
  104. codex-2.5.7/codex/static/assets/VRadioGroup-M1fLEh8W.js +1 -0
  105. codex-2.5.7/codex/static/assets/VRadioGroup-M1fLEh8W.js.br +0 -0
  106. codex-2.5.7/codex/static/assets/VRadioGroup-M1fLEh8W.js.gz +0 -0
  107. codex-2.5.7/codex/static/assets/VSelect-BvuoIekK.css +1 -0
  108. codex-2.5.7/codex/static/assets/VSelect-BvuoIekK.css.br +0 -0
  109. codex-2.5.7/codex/static/assets/VSelect-BvuoIekK.css.gz +0 -0
  110. codex-2.5.7/codex/static/assets/VSelect-CQnu-KDs.js +1 -0
  111. codex-2.5.7/codex/static/assets/VSelect-CQnu-KDs.js.br +0 -0
  112. codex-2.5.7/codex/static/assets/VSelect-CQnu-KDs.js.gz +0 -0
  113. codex-2.5.7/codex/static/assets/VSelectionControl-DcwLVcV2.js +1 -0
  114. codex-2.5.7/codex/static/assets/VSelectionControl-DcwLVcV2.js.br +0 -0
  115. codex-2.5.7/codex/static/assets/VSelectionControl-DcwLVcV2.js.gz +0 -0
  116. codex-2.5.7/codex/static/assets/VSelectionControl-IKMFZ4pI.css +1 -0
  117. codex-2.5.7/codex/static/assets/VSelectionControl-IKMFZ4pI.css.br +0 -0
  118. codex-2.5.7/codex/static/assets/VSelectionControl-IKMFZ4pI.css.gz +0 -0
  119. codex-2.5.7/codex/static/assets/VSnackbar-BrLTirlH.js +1 -0
  120. codex-2.5.7/codex/static/assets/VSnackbar-BrLTirlH.js.br +0 -0
  121. codex-2.5.7/codex/static/assets/VSnackbar-BrLTirlH.js.gz +0 -0
  122. codex-2.5.7/codex/static/assets/VSpacer-D0Vt1Vaz.js +1 -0
  123. codex-2.5.7/codex/static/assets/VSpacer-D0Vt1Vaz.js.br +0 -0
  124. codex-2.5.7/codex/static/assets/VTable-cEgdcxfd.js +1 -0
  125. codex-2.5.7/codex/static/assets/VTable-cEgdcxfd.js.br +0 -0
  126. codex-2.5.7/codex/static/assets/VTable-cEgdcxfd.js.gz +0 -0
  127. codex-2.5.7/codex/static/assets/VTabs-Bg3rFfe-.css +1 -0
  128. codex-2.5.7/codex/static/assets/VTabs-Bg3rFfe-.css.br +0 -0
  129. codex-2.5.7/codex/static/assets/VTabs-Bg3rFfe-.css.gz +0 -0
  130. codex-2.5.7/codex/static/assets/VTabs-igicb2wx.js +1 -0
  131. codex-2.5.7/codex/static/assets/VTabs-igicb2wx.js.br +0 -0
  132. codex-2.5.7/codex/static/assets/VTabs-igicb2wx.js.gz +0 -0
  133. codex-2.5.7/codex/static/assets/VTextField-D_fqVWAZ.js +1 -0
  134. codex-2.5.7/codex/static/assets/VTextField-D_fqVWAZ.js.br +0 -0
  135. codex-2.5.7/codex/static/assets/VTextField-D_fqVWAZ.js.gz +0 -0
  136. codex-2.5.7/codex/static/assets/VTooltip-DRxZlwDd.js +1 -0
  137. codex-2.5.7/codex/static/assets/VTooltip-DRxZlwDd.js.br +0 -0
  138. codex-2.5.7/codex/static/assets/VTooltip-DRxZlwDd.js.gz +0 -0
  139. codex-2.5.7/codex/static/assets/action-bar-B40tKh5-.js +1 -0
  140. codex-2.5.7/codex/static/assets/action-bar-B40tKh5-.js.br +0 -0
  141. codex-2.5.7/codex/static/assets/action-bar-B40tKh5-.js.gz +0 -0
  142. codex-2.5.7/codex/static/assets/admin-6DRnLlUK.js +1 -0
  143. codex-2.5.7/codex/static/assets/admin-6DRnLlUK.js.br +0 -0
  144. codex-2.5.7/codex/static/assets/admin-6DRnLlUK.js.gz +0 -0
  145. codex-2.5.7/codex/static/assets/admin-B62WsJtE.js +1 -0
  146. codex-2.5.7/codex/static/assets/admin-B62WsJtE.js.br +0 -0
  147. codex-2.5.7/codex/static/assets/admin-BInFfGCV.js +1 -0
  148. codex-2.5.7/codex/static/assets/admin-BInFfGCV.js.br +0 -0
  149. codex-2.5.7/codex/static/assets/admin-BmE6bAZZ.js +1 -0
  150. codex-2.5.7/codex/static/assets/admin-BmE6bAZZ.js.br +0 -0
  151. codex-2.5.7/codex/static/assets/admin-BmE6bAZZ.js.gz +0 -0
  152. codex-2.5.7/codex/static/assets/admin-CvIRDb4x.js +1 -0
  153. codex-2.5.7/codex/static/assets/admin-CvIRDb4x.js.br +0 -0
  154. codex-2.5.7/codex/static/assets/admin-CvIRDb4x.js.gz +0 -0
  155. codex-2.5.7/codex/static/assets/admin-menu-BE5QZuHy.js +1 -0
  156. codex-2.5.7/codex/static/assets/admin-menu-BE5QZuHy.js.br +0 -0
  157. codex-2.5.7/codex/static/assets/admin-menu-BE5QZuHy.js.gz +0 -0
  158. codex-2.5.7/codex/static/assets/admin-section-C11ooAGf.js +1 -0
  159. codex-2.5.7/codex/static/assets/admin-section-C11ooAGf.js.br +5 -0
  160. codex-2.5.7/codex/static/assets/admin-section-C11ooAGf.js.gz +0 -0
  161. codex-2.5.7/codex/static/assets/admin-settings-button-errors-BvfH6Grm.js +1 -0
  162. codex-2.5.7/codex/static/assets/admin-settings-button-errors-BvfH6Grm.js.br +0 -0
  163. codex-2.5.7/codex/static/assets/admin-settings-button-errors-BvfH6Grm.js.gz +0 -0
  164. codex-2.5.7/codex/static/assets/admin-settings-button-progress-D4zh4Jds.js +1 -0
  165. codex-2.5.7/codex/static/assets/admin-settings-button-progress-D4zh4Jds.js.br +3 -0
  166. codex-2.5.7/codex/static/assets/admin-settings-button-progress-D4zh4Jds.js.gz +0 -0
  167. codex-2.5.7/codex/static/assets/auth-KBa209LE.js +1 -0
  168. codex-2.5.7/codex/static/assets/auth-KBa209LE.js.br +0 -0
  169. codex-2.5.7/codex/static/assets/auth-KBa209LE.js.gz +0 -0
  170. codex-2.5.7/codex/static/assets/auth-form-mixin-IIcwZKbT.js +1 -0
  171. codex-2.5.7/codex/static/assets/auth-form-mixin-IIcwZKbT.js.br +0 -0
  172. codex-2.5.7/codex/static/assets/auth-form-mixin-IIcwZKbT.js.gz +0 -0
  173. codex-2.5.7/codex/static/assets/auth-tab-BI9-SLyC.js +16 -0
  174. codex-2.5.7/codex/static/assets/auth-tab-BI9-SLyC.js.br +0 -0
  175. codex-2.5.7/codex/static/assets/auth-tab-BI9-SLyC.js.gz +0 -0
  176. codex-2.5.7/codex/static/assets/browser-Cxl1Ubah.js +2 -0
  177. codex-2.5.7/codex/static/assets/browser-Cxl1Ubah.js.br +0 -0
  178. codex-2.5.7/codex/static/assets/browser-Cxl1Ubah.js.gz +0 -0
  179. codex-2.5.7/codex/static/assets/browser-DsNzr70F.js +2 -0
  180. codex-2.5.7/codex/static/assets/browser-DsNzr70F.js.br +0 -0
  181. codex-2.5.7/codex/static/assets/browser-DsNzr70F.js.gz +0 -0
  182. codex-2.5.7/codex/static/assets/browser-nJHZ5ZP8.css +1 -0
  183. codex-2.5.7/codex/static/assets/browser-nJHZ5ZP8.css.br +0 -0
  184. codex-2.5.7/codex/static/assets/browser-nJHZ5ZP8.css.gz +0 -0
  185. codex-2.5.7/codex/static/assets/browser-table-column-picker-CoAmP1Y1.js +1 -0
  186. codex-2.5.7/codex/static/assets/browser-table-column-picker-CoAmP1Y1.js.br +0 -0
  187. codex-2.5.7/codex/static/assets/browser-table-column-picker-CoAmP1Y1.js.gz +0 -0
  188. codex-2.5.7/codex/static/assets/clipboard-DN5nCRAq.js +1 -0
  189. codex-2.5.7/codex/static/assets/clipboard-DN5nCRAq.js.br +0 -0
  190. codex-2.5.7/codex/static/assets/clipboard-DN5nCRAq.js.gz +0 -0
  191. codex-2.5.7/codex/static/assets/close-button-Bq3w74sm.js +1 -0
  192. codex-2.5.7/codex/static/assets/close-button-Bq3w74sm.js.br +0 -0
  193. codex-2.5.7/codex/static/assets/close-button-Bq3w74sm.js.gz +0 -0
  194. codex-2.5.7/codex/static/assets/codex-list-item-CIsKE56H.js +1 -0
  195. codex-2.5.7/codex/static/assets/codex-list-item-CIsKE56H.js.br +0 -0
  196. codex-2.5.7/codex/static/assets/codex-list-item-CIsKE56H.js.gz +0 -0
  197. codex-2.5.7/codex/static/assets/comic-name-CJqABO3_.js +1 -0
  198. codex-2.5.7/codex/static/assets/comic-name-CJqABO3_.js.br +0 -0
  199. codex-2.5.7/codex/static/assets/comic-name-CJqABO3_.js.gz +0 -0
  200. codex-2.5.7/codex/static/assets/common-CzrdcqR0.js +1 -0
  201. codex-2.5.7/codex/static/assets/common-CzrdcqR0.js.br +0 -0
  202. codex-2.5.7/codex/static/assets/common-CzrdcqR0.js.gz +0 -0
  203. codex-2.5.7/codex/static/assets/confirm-dialog-Cvgq2ScV.js +1 -0
  204. codex-2.5.7/codex/static/assets/confirm-dialog-Cvgq2ScV.js.br +0 -0
  205. codex-2.5.7/codex/static/assets/confirm-dialog-Cvgq2ScV.js.gz +0 -0
  206. codex-2.5.7/codex/static/assets/confirm-footer-C6EvUryH.js +1 -0
  207. codex-2.5.7/codex/static/assets/confirm-footer-C6EvUryH.js.br +0 -0
  208. codex-2.5.7/codex/static/assets/confirm-footer-C6EvUryH.js.gz +0 -0
  209. codex-2.5.7/codex/static/assets/cover-popup-CYdCKltq.js +1 -0
  210. codex-2.5.7/codex/static/assets/cover-popup-CYdCKltq.js.br +0 -0
  211. codex-2.5.7/codex/static/assets/cover-popup-CYdCKltq.js.gz +0 -0
  212. codex-2.5.7/codex/static/assets/createSimpleFunctional-SyLSL29S.js +1 -0
  213. codex-2.5.7/codex/static/assets/createSimpleFunctional-SyLSL29S.js.br +0 -0
  214. codex-2.5.7/codex/static/assets/createSimpleFunctional-SyLSL29S.js.gz +0 -0
  215. codex-2.5.7/codex/static/assets/custom-covers-tab-yEMv1fbP.js +1 -0
  216. codex-2.5.7/codex/static/assets/custom-covers-tab-yEMv1fbP.js.br +0 -0
  217. codex-2.5.7/codex/static/assets/custom-covers-tab-yEMv1fbP.js.gz +0 -0
  218. codex-2.5.7/codex/static/assets/datetime-column-D-W78-f6.js +1 -0
  219. codex-2.5.7/codex/static/assets/datetime-column-D-W78-f6.js.br +0 -0
  220. codex-2.5.7/codex/static/assets/datetime-column-D-W78-f6.js.gz +0 -0
  221. codex-2.5.7/codex/static/assets/defaults-tab-xk1-ySsB.js +1 -0
  222. codex-2.5.7/codex/static/assets/defaults-tab-xk1-ySsB.js.br +0 -0
  223. codex-2.5.7/codex/static/assets/defaults-tab-xk1-ySsB.js.gz +0 -0
  224. codex-2.5.7/codex/static/assets/delete-row-dialog-DD4FZl9W.js +1 -0
  225. codex-2.5.7/codex/static/assets/delete-row-dialog-DD4FZl9W.js.br +0 -0
  226. codex-2.5.7/codex/static/assets/delete-row-dialog-DD4FZl9W.js.gz +0 -0
  227. codex-2.5.7/codex/static/assets/display-DxNL4K_i.js +1 -0
  228. codex-2.5.7/codex/static/assets/display-DxNL4K_i.js.br +0 -0
  229. codex-2.5.7/codex/static/assets/display-DxNL4K_i.js.gz +0 -0
  230. codex-2.5.7/codex/static/assets/dist-By8dmJsn.js +1 -0
  231. codex-2.5.7/codex/static/assets/dist-By8dmJsn.js.br +0 -0
  232. codex-2.5.7/codex/static/assets/dist-By8dmJsn.js.gz +0 -0
  233. codex-2.5.7/codex/static/assets/doctor-tab-pIo53jhD.js +1 -0
  234. codex-2.5.7/codex/static/assets/doctor-tab-pIo53jhD.js.br +0 -0
  235. codex-2.5.7/codex/static/assets/doctor-tab-pIo53jhD.js.gz +0 -0
  236. codex-2.5.7/codex/static/assets/edit-panel-CFOAQ5xH.js +1 -0
  237. codex-2.5.7/codex/static/assets/edit-panel-CFOAQ5xH.js.br +0 -0
  238. codex-2.5.7/codex/static/assets/edit-panel-CFOAQ5xH.js.gz +0 -0
  239. codex-2.5.7/codex/static/assets/edit-panel-DN5-aUVs.css +1 -0
  240. codex-2.5.7/codex/static/assets/edit-panel-DN5-aUVs.css.br +0 -0
  241. codex-2.5.7/codex/static/assets/edit-panel-DN5-aUVs.css.gz +0 -0
  242. codex-2.5.7/codex/static/assets/email-tab-BCy5k3m7.js +1 -0
  243. codex-2.5.7/codex/static/assets/email-tab-BCy5k3m7.js.br +0 -0
  244. codex-2.5.7/codex/static/assets/email-tab-BCy5k3m7.js.gz +0 -0
  245. codex-2.5.7/codex/static/assets/expand-toggle-y891kvmv.js +1 -0
  246. codex-2.5.7/codex/static/assets/expand-toggle-y891kvmv.js.br +0 -0
  247. codex-2.5.7/codex/static/assets/expand-toggle-y891kvmv.js.gz +0 -0
  248. codex-2.5.7/codex/static/assets/flag-card-Bdnj7cPK.js +1 -0
  249. codex-2.5.7/codex/static/assets/flag-card-Bdnj7cPK.js.br +0 -0
  250. codex-2.5.7/codex/static/assets/flag-card-Bdnj7cPK.js.gz +0 -0
  251. codex-2.5.7/codex/static/assets/forwardRefs-SWQ8lOoO.js +1 -0
  252. codex-2.5.7/codex/static/assets/forwardRefs-SWQ8lOoO.js.br +0 -0
  253. codex-2.5.7/codex/static/assets/forwardRefs-SWQ8lOoO.js.gz +0 -0
  254. codex-2.5.7/codex/static/assets/goto-D0znblK1.js +1 -0
  255. codex-2.5.7/codex/static/assets/goto-D0znblK1.js.br +0 -0
  256. codex-2.5.7/codex/static/assets/goto-D0znblK1.js.gz +0 -0
  257. codex-2.5.7/codex/static/assets/group-tab-DTMcvs6K.js +1 -0
  258. codex-2.5.7/codex/static/assets/group-tab-DTMcvs6K.js.br +0 -0
  259. codex-2.5.7/codex/static/assets/group-tab-DTMcvs6K.js.gz +0 -0
  260. codex-2.5.7/codex/static/assets/http-error-BWt8CYvE.js +1 -0
  261. codex-2.5.7/codex/static/assets/http-error-BWt8CYvE.js.br +0 -0
  262. codex-2.5.7/codex/static/assets/http-error-BWt8CYvE.js.gz +0 -0
  263. codex-2.5.7/codex/static/assets/job-tab-CSmQQJo0.js +1 -0
  264. codex-2.5.7/codex/static/assets/job-tab-CSmQQJo0.js.br +0 -0
  265. codex-2.5.7/codex/static/assets/job-tab-CSmQQJo0.js.gz +0 -0
  266. codex-2.5.7/codex/static/assets/launcher-dialog-CFFY_S2l.js +1 -0
  267. codex-2.5.7/codex/static/assets/launcher-dialog-CFFY_S2l.js.br +0 -0
  268. codex-2.5.7/codex/static/assets/launcher-dialog-CFFY_S2l.js.gz +0 -0
  269. codex-2.5.7/codex/static/assets/launcher-dialog-DSisBwoD.css +1 -0
  270. codex-2.5.7/codex/static/assets/launcher-dialog-DSisBwoD.css.br +0 -0
  271. codex-2.5.7/codex/static/assets/launcher-dialog-DSisBwoD.css.gz +0 -0
  272. codex-2.5.7/codex/static/assets/layout-BN8nHqc7.js +1 -0
  273. codex-2.5.7/codex/static/assets/layout-BN8nHqc7.js.br +0 -0
  274. codex-2.5.7/codex/static/assets/layout-BN8nHqc7.js.gz +0 -0
  275. codex-2.5.7/codex/static/assets/library-tab-qMTwjLLw.js +9 -0
  276. codex-2.5.7/codex/static/assets/library-tab-qMTwjLLw.js.br +0 -0
  277. codex-2.5.7/codex/static/assets/library-tab-qMTwjLLw.js.gz +0 -0
  278. codex-2.5.7/codex/static/assets/main-FdY6yDuo.js +6 -0
  279. codex-2.5.7/codex/static/assets/main-FdY6yDuo.js.br +0 -0
  280. codex-2.5.7/codex/static/assets/main-FdY6yDuo.js.gz +0 -0
  281. codex-2.5.7/codex/static/assets/mdi-CQvt3be4.js +1 -0
  282. codex-2.5.7/codex/static/assets/mdi-CQvt3be4.js.br +0 -0
  283. codex-2.5.7/codex/static/assets/mdi-CQvt3be4.js.gz +0 -0
  284. codex-2.5.7/codex/static/assets/online-tag-DQ7aAwYR.js +1 -0
  285. codex-2.5.7/codex/static/assets/online-tag-DQ7aAwYR.js.br +0 -0
  286. codex-2.5.7/codex/static/assets/online-tag-DQ7aAwYR.js.gz +0 -0
  287. codex-2.5.7/codex/static/assets/online-tag-DwW67HAn.js +1 -0
  288. codex-2.5.7/codex/static/assets/pagination-toolbar-Be-ahyxr.css +1 -0
  289. codex-2.5.7/codex/static/assets/pagination-toolbar-Be-ahyxr.css.br +0 -0
  290. codex-2.5.7/codex/static/assets/pagination-toolbar-Be-ahyxr.css.gz +0 -0
  291. codex-2.5.7/codex/static/assets/pagination-toolbar-BvTEsP8l.js +2 -0
  292. codex-2.5.7/codex/static/assets/pagination-toolbar-BvTEsP8l.js.br +0 -0
  293. codex-2.5.7/codex/static/assets/pagination-toolbar-BvTEsP8l.js.gz +0 -0
  294. codex-2.5.7/codex/static/assets/pdf-doc-CHtNKgnC.js +622 -0
  295. codex-2.5.7/codex/static/assets/pdf-doc-CHtNKgnC.js.br +0 -0
  296. codex-2.5.7/codex/static/assets/pdf-doc-CHtNKgnC.js.gz +0 -0
  297. codex-2.5.7/codex/static/assets/pretty-bytes-BMg_gFs4.js +1 -0
  298. codex-2.5.7/codex/static/assets/pretty-bytes-BMg_gFs4.js.br +0 -0
  299. codex-2.5.7/codex/static/assets/pretty-bytes-BMg_gFs4.js.gz +0 -0
  300. codex-2.5.7/codex/static/assets/prompt-popup-CWIsQaeR.js +2 -0
  301. codex-2.5.7/codex/static/assets/prompt-popup-CWIsQaeR.js.br +0 -0
  302. codex-2.5.7/codex/static/assets/prompt-popup-CWIsQaeR.js.gz +0 -0
  303. codex-2.5.7/codex/static/assets/prompt-popup-m6_yMCkn.css +1 -0
  304. codex-2.5.7/codex/static/assets/prompt-popup-m6_yMCkn.css.br +0 -0
  305. codex-2.5.7/codex/static/assets/prompt-popup-m6_yMCkn.css.gz +0 -0
  306. codex-2.5.7/codex/static/assets/reader-BnZ6fu6g.js +2 -0
  307. codex-2.5.7/codex/static/assets/reader-BnZ6fu6g.js.br +0 -0
  308. codex-2.5.7/codex/static/assets/reader-BnZ6fu6g.js.gz +0 -0
  309. codex-2.5.7/codex/static/assets/reader-CQJvNlan.js +1 -0
  310. codex-2.5.7/codex/static/assets/reader-CQJvNlan.js.br +0 -0
  311. codex-2.5.7/codex/static/assets/reader-CQJvNlan.js.gz +0 -0
  312. codex-2.5.7/codex/static/assets/reader-settings-controls-B2nG7YhS.js +1 -0
  313. codex-2.5.7/codex/static/assets/reader-settings-controls-B2nG7YhS.js.br +0 -0
  314. codex-2.5.7/codex/static/assets/reader-settings-controls-B2nG7YhS.js.gz +0 -0
  315. codex-2.5.7/codex/static/assets/reader-u-q4p23s.js +1 -0
  316. codex-2.5.7/codex/static/assets/reader-u-q4p23s.js.br +0 -0
  317. codex-2.5.7/codex/static/assets/reader-u-q4p23s.js.gz +0 -0
  318. codex-2.5.7/codex/static/assets/relation-chips-eY2xVCgB.js +1 -0
  319. codex-2.5.7/codex/static/assets/relation-chips-eY2xVCgB.js.br +0 -0
  320. codex-2.5.7/codex/static/assets/relation-chips-eY2xVCgB.js.gz +0 -0
  321. codex-2.5.7/codex/static/assets/reset-password-confirm-BKqHsh_Q.js +1 -0
  322. codex-2.5.7/codex/static/assets/reset-password-confirm-BKqHsh_Q.js.br +0 -0
  323. codex-2.5.7/codex/static/assets/reset-password-confirm-BKqHsh_Q.js.gz +0 -0
  324. codex-2.5.7/codex/static/assets/restore-tab-Btp6dAST.js +3 -0
  325. codex-2.5.7/codex/static/assets/restore-tab-Btp6dAST.js.br +0 -0
  326. codex-2.5.7/codex/static/assets/restore-tab-Btp6dAST.js.gz +0 -0
  327. codex-2.5.7/codex/static/assets/rules-fn8aXCGR.js +1 -0
  328. codex-2.5.7/codex/static/assets/rules-fn8aXCGR.js.br +0 -0
  329. codex-2.5.7/codex/static/assets/rules-fn8aXCGR.js.gz +0 -0
  330. codex-2.5.7/codex/static/assets/settings-tab-CwflojCn.js +1 -0
  331. codex-2.5.7/codex/static/assets/settings-tab-CwflojCn.js.br +0 -0
  332. codex-2.5.7/codex/static/assets/settings-tab-CwflojCn.js.gz +0 -0
  333. codex-2.5.7/codex/static/assets/sso-error-CBT-jag8.js +1 -0
  334. codex-2.5.7/codex/static/assets/sso-error-CBT-jag8.js.br +0 -0
  335. codex-2.5.7/codex/static/assets/sso-error-CBT-jag8.js.gz +0 -0
  336. codex-2.5.7/codex/static/assets/sso-login-button-mk-N53bN.js +1 -0
  337. codex-2.5.7/codex/static/assets/sso-login-button-mk-N53bN.js.br +0 -0
  338. codex-2.5.7/codex/static/assets/sso-login-button-mk-N53bN.js.gz +0 -0
  339. codex-2.5.7/codex/static/assets/ssrBoot-ByKdOye9.js +1 -0
  340. codex-2.5.7/codex/static/assets/ssrBoot-ByKdOye9.js.br +0 -0
  341. codex-2.5.7/codex/static/assets/ssrBoot-ByKdOye9.js.gz +0 -0
  342. codex-2.5.7/codex/static/assets/stats-tab-CepJJozz.js +1 -0
  343. codex-2.5.7/codex/static/assets/stats-tab-CepJJozz.js.br +0 -0
  344. codex-2.5.7/codex/static/assets/stats-tab-CepJJozz.js.gz +0 -0
  345. codex-2.5.7/codex/static/assets/submit-footer-CWwjPSga.js +1 -0
  346. codex-2.5.7/codex/static/assets/submit-footer-CWwjPSga.js.br +0 -0
  347. codex-2.5.7/codex/static/assets/submit-footer-CWwjPSga.js.gz +0 -0
  348. codex-2.5.7/codex/static/assets/tagging-tab-4JnziXL3.css +1 -0
  349. codex-2.5.7/codex/static/assets/tagging-tab-4JnziXL3.css.br +0 -0
  350. codex-2.5.7/codex/static/assets/tagging-tab-4JnziXL3.css.gz +0 -0
  351. codex-2.5.7/codex/static/assets/tagging-tab-B0tjslln.js +1 -0
  352. codex-2.5.7/codex/static/assets/tagging-tab-B0tjslln.js.br +0 -0
  353. codex-2.5.7/codex/static/assets/tagging-tab-B0tjslln.js.gz +0 -0
  354. codex-2.5.7/codex/static/assets/tooltip-DamSdYXW.js +1 -0
  355. codex-2.5.7/codex/static/assets/tooltip-DamSdYXW.js.br +0 -0
  356. codex-2.5.7/codex/static/assets/tooltip-DamSdYXW.js.gz +0 -0
  357. codex-2.5.7/codex/static/assets/transitions-D56yF1bQ.js +1 -0
  358. codex-2.5.7/codex/static/assets/transitions-D56yF1bQ.js.br +0 -0
  359. codex-2.5.7/codex/static/assets/transitions-D56yF1bQ.js.gz +0 -0
  360. codex-2.5.7/codex/static/assets/unauthorized-CKAg_3oR.css +1 -0
  361. codex-2.5.7/codex/static/assets/unauthorized-CKAg_3oR.css.br +0 -0
  362. codex-2.5.7/codex/static/assets/unauthorized-CKAg_3oR.css.gz +0 -0
  363. codex-2.5.7/codex/static/assets/unauthorized-_NJjD7hs.js +1 -0
  364. codex-2.5.7/codex/static/assets/unauthorized-_NJjD7hs.js.br +0 -0
  365. codex-2.5.7/codex/static/assets/unauthorized-_NJjD7hs.js.gz +0 -0
  366. codex-2.5.7/codex/static/assets/use-now-timer-DoV0sirx.js +1 -0
  367. codex-2.5.7/codex/static/assets/use-now-timer-DoV0sirx.js.br +0 -0
  368. codex-2.5.7/codex/static/assets/use-now-timer-DoV0sirx.js.gz +0 -0
  369. codex-2.5.7/codex/static/assets/user-tab-DBksUTsd.js +1 -0
  370. codex-2.5.7/codex/static/assets/user-tab-DBksUTsd.js.br +0 -0
  371. codex-2.5.7/codex/static/assets/user-tab-DBksUTsd.js.gz +0 -0
  372. codex-2.5.7/codex/static/assets/vendor-vue-C4vLen0M.js +2 -0
  373. codex-2.5.7/codex/static/assets/vendor-vue-C4vLen0M.js.br +0 -0
  374. codex-2.5.7/codex/static/assets/vendor-vue-C4vLen0M.js.gz +0 -0
  375. codex-2.5.7/codex/static/manifest.json +1817 -0
  376. codex-2.5.7/codex/static/manifest.json.br +0 -0
  377. codex-2.5.7/codex/static/manifest.json.gz +0 -0
  378. codex-2.5.7/codex/user_data/restore.py +946 -0
  379. codex-2.5.7/codex/user_data/schema.sql +215 -0
  380. codex-2.5.7/codex/user_data/serializers.py +421 -0
  381. codex-2.5.7/codex/util.py +84 -0
  382. codex-2.5.7/codex/views/admin/json_api.py +73 -0
  383. codex-2.5.7/codex/views/admin/onlinetag.py +425 -0
  384. codex-2.5.7/codex/views/admin/tagging_validate.py +63 -0
  385. codex-2.5.7/codex/views/admin/user.py +276 -0
  386. codex-2.5.7/codex/views/auth.py +801 -0
  387. codex-2.5.7/codex/views/bookmark.py +152 -0
  388. codex-2.5.7/codex/views/browser/breadcrumbs.py +248 -0
  389. codex-2.5.7/codex/views/browser/choices.py +356 -0
  390. codex-2.5.7/codex/views/browser/const.py +31 -0
  391. codex-2.5.7/codex/views/browser/filters/field.py +123 -0
  392. codex-2.5.7/codex/views/browser/filters/filter.py +279 -0
  393. codex-2.5.7/codex/views/browser/filters/search/field/column.py +68 -0
  394. codex-2.5.7/codex/views/browser/filters/search/parse.py +353 -0
  395. codex-2.5.7/codex/views/browser/metadata/annotate.py +155 -0
  396. codex-2.5.7/codex/views/browser/metadata/const.py +141 -0
  397. codex-2.5.7/codex/views/browser/title.py +67 -0
  398. codex-2.5.7/codex/views/mixins.py +129 -0
  399. codex-2.5.7/codex/views/reader/books.py +267 -0
  400. codex-2.5.7/codex/views/settings.py +587 -0
  401. codex-2.5.7/docs/NEWS.md +2756 -0
  402. codex-2.5.7/frontend/.eslintcache +1 -0
  403. codex-2.5.7/frontend/bun.lock +845 -0
  404. codex-2.5.7/frontend/package.json +54 -0
  405. codex-2.5.7/frontend/src/choices/browser-defaults.json +55 -0
  406. codex-2.5.7/frontend/src/choices/format-field-support.json +81 -0
  407. codex-2.5.7/frontend/src/choices/search-map.json +373 -0
  408. codex-2.5.7/frontend/src/choices/series-statuses.json +18 -0
  409. codex-2.5.7/frontend/src/comic-name.js +93 -0
  410. codex-2.5.7/frontend/src/components/admin/tabs/tagging-tab.vue +717 -0
  411. codex-2.5.7/frontend/src/components/browser/toolbars/browser-toolbar-title.vue +157 -0
  412. codex-2.5.7/frontend/src/components/browser/toolbars/top/filter-choice-list.vue +173 -0
  413. codex-2.5.7/frontend/src/components/metadata/edit-mode/edit-panel.vue +3011 -0
  414. codex-2.5.7/frontend/src/components/metadata/metadata-activator.vue +64 -0
  415. codex-2.5.7/frontend/src/components/metadata/metadata-body.vue +170 -0
  416. codex-2.5.7/frontend/src/components/metadata/metadata-dialog.vue +235 -0
  417. codex-2.5.7/frontend/src/components/metadata/metadata-header.vue +343 -0
  418. codex-2.5.7/frontend/src/components/online-tag/candidate-row.vue +277 -0
  419. codex-2.5.7/frontend/src/components/online-tag/launcher-dialog.vue +762 -0
  420. codex-2.5.7/frontend/src/components/reader/pager/pager.vue +83 -0
  421. codex-2.5.7/frontend/src/components/reader/use-reader-keyup.js +49 -0
  422. codex-2.5.7/frontend/src/stores/common.js +179 -0
  423. codex-2.5.7/frontend/src/stores/reader.js +1096 -0
  424. codex-2.5.7/frontend/tests/unit/browser-toolbar-title.test.js +111 -0
  425. codex-2.5.7/frontend/tests/unit/candidate-row.test.js +312 -0
  426. codex-2.5.7/frontend/tests/unit/edit-panel-metron-fields.test.js +259 -0
  427. codex-2.5.7/frontend/tests/unit/edit-panel-series-attrs.test.js +176 -0
  428. codex-2.5.7/frontend/tests/unit/launcher-dialog.test.js +551 -0
  429. codex-2.5.7/frontend/tests/unit/metadata-header.test.js +137 -0
  430. codex-2.5.7/frontend/tests/unit/pager-book-change.test.js +87 -0
  431. codex-2.5.7/frontend/tests/unit/reader-store-routes.test.js +194 -0
  432. codex-2.5.7/frontend/tests/unit/tagging-tab.test.js +455 -0
  433. codex-2.5.7/package.json +92 -0
  434. codex-2.5.7/pyproject.toml +465 -0
  435. codex-2.5.7/pyproject.toml.orig +443 -0
  436. codex-2.5.7/tests/importer/test_basic.py +1033 -0
  437. codex-2.5.7/tests/importer/test_fts_chunked_resync.py +123 -0
  438. codex-2.5.7/tests/importer/test_noop_update.py +198 -0
  439. codex-2.5.7/tests/importer/test_series_attrs.py +223 -0
  440. codex-2.5.7/tests/importer/test_universe_fts_designations.py +144 -0
  441. codex-2.5.7/tests/importer/test_update_all.py +887 -0
  442. codex-2.5.7/tests/importer/test_update_none.py +160 -0
  443. codex-2.5.7/tests/test_admin_custom_cover.py +297 -0
  444. codex-2.5.7/tests/test_admin_error_shapes.py +136 -0
  445. codex-2.5.7/tests/test_admin_singleton_settings.py +198 -0
  446. codex-2.5.7/tests/test_admin_writes.py +139 -0
  447. codex-2.5.7/tests/test_browser_series_filters.py +207 -0
  448. codex-2.5.7/tests/test_credential_validator.py +277 -0
  449. codex-2.5.7/tests/test_doctor_codex_checks.py +259 -0
  450. codex-2.5.7/tests/test_lazy_import_marker.py +249 -0
  451. codex-2.5.7/tests/test_metadata_series_fields.py +137 -0
  452. codex-2.5.7/tests/test_onlinetag_credentials.py +57 -0
  453. codex-2.5.7/tests/test_onlinetag_serialize_candidate.py +209 -0
  454. codex-2.5.7/tests/test_onlinetag_series_attrs.py +194 -0
  455. codex-2.5.7/tests/test_search_series_fields.py +230 -0
  456. codex-2.5.7/tests/test_serializer_pycountry.py +61 -0
  457. codex-2.5.7/tests/test_tag_by_id.py +294 -0
  458. codex-2.5.7/tests/test_tag_write_date.py +263 -0
  459. codex-2.5.7/tests/test_tagging_validate_endpoint.py +131 -0
  460. codex-2.5.7/tests/test_telemeter_counts.py +80 -0
  461. codex-2.5.7/tests/test_telemeter_privacy.py +411 -0
  462. codex-2.5.7/tests/test_user_data_restore.py +647 -0
  463. codex-2.5.7/uv.lock +4608 -0
  464. codex-2.5.5/NEWS.md +0 -2727
  465. codex-2.5.5/PKG-INFO +0 -1330
  466. codex-2.5.5/bin/manage.py +0 -70
  467. codex-2.5.5/bun.lock +0 -779
  468. codex-2.5.5/codex/choices/choices_to_json.py +0 -202
  469. codex-2.5.5/codex/choices/search.py +0 -146
  470. codex-2.5.5/codex/choices/tagging.py +0 -284
  471. codex-2.5.5/codex/librarian/onlinetag/credential_validator.py +0 -181
  472. codex-2.5.5/codex/librarian/onlinetag/explicit_id.py +0 -161
  473. codex-2.5.5/codex/librarian/onlinetag/session_manager.py +0 -1034
  474. codex-2.5.5/codex/librarian/onlinetag/session_state.py +0 -234
  475. codex-2.5.5/codex/librarian/scribe/force_updater.py +0 -38
  476. codex-2.5.5/codex/librarian/scribe/importer/const.py +0 -537
  477. codex-2.5.5/codex/librarian/scribe/importer/create/comics.py +0 -260
  478. codex-2.5.5/codex/librarian/scribe/importer/create/const.py +0 -151
  479. codex-2.5.5/codex/librarian/scribe/importer/create/foreign_keys.py +0 -309
  480. codex-2.5.5/codex/librarian/scribe/importer/create/link_fks.py +0 -187
  481. codex-2.5.5/codex/librarian/scribe/importer/finish.py +0 -150
  482. codex-2.5.5/codex/librarian/scribe/importer/init.py +0 -445
  483. codex-2.5.5/codex/librarian/scribe/importer/query/foreign_keys.py +0 -207
  484. codex-2.5.5/codex/librarian/scribe/importer/query/update_comics.py +0 -69
  485. codex-2.5.5/codex/librarian/scribe/importer/read/extract.py +0 -357
  486. codex-2.5.5/codex/librarian/scribe/importer/read/foreign_keys.py +0 -194
  487. codex-2.5.5/codex/librarian/scribe/importer/search/prepare.py +0 -111
  488. codex-2.5.5/codex/librarian/scribe/importer/search/sync_m2m.py +0 -157
  489. codex-2.5.5/codex/librarian/scribe/importer/search/update.py +0 -230
  490. codex-2.5.5/codex/librarian/scribe/lazy_importer.py +0 -50
  491. codex-2.5.5/codex/librarian/scribe/search/const.py +0 -40
  492. codex-2.5.5/codex/librarian/scribe/search/prepare.py +0 -163
  493. codex-2.5.5/codex/librarian/scribe/search/sync.py +0 -400
  494. codex-2.5.5/codex/librarian/scribe/tag_writer.py +0 -715
  495. codex-2.5.5/codex/librarian/telemeter/admin_stats.py +0 -264
  496. codex-2.5.5/codex/models/admin.py +0 -478
  497. codex-2.5.5/codex/models/choices.py +0 -55
  498. codex-2.5.5/codex/models/collections.py +0 -229
  499. codex-2.5.5/codex/models/comic.py +0 -470
  500. codex-2.5.5/codex/models/named.py +0 -290
  501. codex-2.5.5/codex/models/settings.py +0 -587
  502. codex-2.5.5/codex/serializers/admin/tagging.py +0 -231
  503. codex-2.5.5/codex/serializers/browser/choices.py +0 -191
  504. codex-2.5.5/codex/serializers/browser/filters.py +0 -49
  505. codex-2.5.5/codex/serializers/browser/metadata.py +0 -261
  506. codex-2.5.5/codex/serializers/browser/page.py +0 -343
  507. codex-2.5.5/codex/serializers/fields/browser.py +0 -101
  508. codex-2.5.5/codex/serializers/fields/vuetify.py +0 -122
  509. codex-2.5.5/codex/settings/logging.py +0 -154
  510. codex-2.5.5/codex/static/assets/VAvatar-PAjPc2KE.css +0 -1
  511. codex-2.5.5/codex/static/assets/VAvatar-PAjPc2KE.css.br +0 -0
  512. codex-2.5.5/codex/static/assets/VAvatar-PAjPc2KE.css.gz +0 -0
  513. codex-2.5.5/codex/static/assets/VAvatar-zqygomHn.js +0 -1
  514. codex-2.5.5/codex/static/assets/VAvatar-zqygomHn.js.br +0 -0
  515. codex-2.5.5/codex/static/assets/VAvatar-zqygomHn.js.gz +0 -0
  516. codex-2.5.5/codex/static/assets/VCard-JCiW_E5Z.js +0 -1
  517. codex-2.5.5/codex/static/assets/VCard-JCiW_E5Z.js.br +0 -0
  518. codex-2.5.5/codex/static/assets/VCard-JCiW_E5Z.js.gz +0 -0
  519. codex-2.5.5/codex/static/assets/VCheckbox-BP-nq__N.js +0 -1
  520. codex-2.5.5/codex/static/assets/VCheckbox-BP-nq__N.js.br +0 -0
  521. codex-2.5.5/codex/static/assets/VCheckbox-BP-nq__N.js.gz +0 -0
  522. codex-2.5.5/codex/static/assets/VCheckboxBtn-DirChwN_.js +0 -1
  523. codex-2.5.5/codex/static/assets/VCheckboxBtn-DirChwN_.js.br +0 -0
  524. codex-2.5.5/codex/static/assets/VCheckboxBtn-DirChwN_.js.gz +0 -0
  525. codex-2.5.5/codex/static/assets/VChip-bMj_5RAZ.js +0 -1
  526. codex-2.5.5/codex/static/assets/VChip-bMj_5RAZ.js.br +0 -0
  527. codex-2.5.5/codex/static/assets/VChip-bMj_5RAZ.js.gz +0 -0
  528. codex-2.5.5/codex/static/assets/VCombobox-6rc-Pmmd.js +0 -2
  529. codex-2.5.5/codex/static/assets/VCombobox-6rc-Pmmd.js.br +0 -0
  530. codex-2.5.5/codex/static/assets/VCombobox-6rc-Pmmd.js.gz +0 -0
  531. codex-2.5.5/codex/static/assets/VContainer-D2Z1ztjS.js +0 -1
  532. codex-2.5.5/codex/static/assets/VContainer-D2Z1ztjS.js.br +0 -0
  533. codex-2.5.5/codex/static/assets/VContainer-D2Z1ztjS.js.gz +0 -0
  534. codex-2.5.5/codex/static/assets/VDataTableVirtual-DwP1yd0c.js +0 -1
  535. codex-2.5.5/codex/static/assets/VDataTableVirtual-DwP1yd0c.js.br +0 -0
  536. codex-2.5.5/codex/static/assets/VDataTableVirtual-DwP1yd0c.js.gz +0 -0
  537. codex-2.5.5/codex/static/assets/VDivider-D-iGpLFT.js +0 -1
  538. codex-2.5.5/codex/static/assets/VDivider-D-iGpLFT.js.br +0 -4
  539. codex-2.5.5/codex/static/assets/VDivider-D-iGpLFT.js.gz +0 -0
  540. codex-2.5.5/codex/static/assets/VExpansionPanels-DKjpKI7N.js +0 -1
  541. codex-2.5.5/codex/static/assets/VExpansionPanels-DKjpKI7N.js.br +0 -0
  542. codex-2.5.5/codex/static/assets/VExpansionPanels-DKjpKI7N.js.gz +0 -0
  543. codex-2.5.5/codex/static/assets/VForm-BMMiClQl.js +0 -1
  544. codex-2.5.5/codex/static/assets/VForm-BMMiClQl.js.br +0 -0
  545. codex-2.5.5/codex/static/assets/VForm-BMMiClQl.js.gz +0 -0
  546. codex-2.5.5/codex/static/assets/VListItem-B0nUFeet.js +0 -1
  547. codex-2.5.5/codex/static/assets/VListItem-B0nUFeet.js.br +0 -0
  548. codex-2.5.5/codex/static/assets/VListItem-B0nUFeet.js.gz +0 -0
  549. codex-2.5.5/codex/static/assets/VListItem-CZAZkqwj.css +0 -1
  550. codex-2.5.5/codex/static/assets/VListItem-CZAZkqwj.css.br +0 -0
  551. codex-2.5.5/codex/static/assets/VListItem-CZAZkqwj.css.gz +0 -0
  552. codex-2.5.5/codex/static/assets/VMenu-WFipxrfR.js +0 -1
  553. codex-2.5.5/codex/static/assets/VMenu-WFipxrfR.js.br +0 -0
  554. codex-2.5.5/codex/static/assets/VMenu-WFipxrfR.js.gz +0 -0
  555. codex-2.5.5/codex/static/assets/VOverlay-Cl1t7DwF.js +0 -1
  556. codex-2.5.5/codex/static/assets/VOverlay-Cl1t7DwF.js.br +0 -0
  557. codex-2.5.5/codex/static/assets/VOverlay-Cl1t7DwF.js.gz +0 -0
  558. codex-2.5.5/codex/static/assets/VProgressCircular-GPPnnKWp.css +0 -1
  559. codex-2.5.5/codex/static/assets/VProgressCircular-GPPnnKWp.css.br +0 -0
  560. codex-2.5.5/codex/static/assets/VProgressCircular-GPPnnKWp.css.gz +0 -0
  561. codex-2.5.5/codex/static/assets/VProgressCircular-rN72QAxO.js +0 -10
  562. codex-2.5.5/codex/static/assets/VProgressCircular-rN72QAxO.js.br +0 -0
  563. codex-2.5.5/codex/static/assets/VProgressCircular-rN72QAxO.js.gz +0 -0
  564. codex-2.5.5/codex/static/assets/VRadioGroup-BTP03-mq.js +0 -1
  565. codex-2.5.5/codex/static/assets/VRadioGroup-BTP03-mq.js.br +0 -0
  566. codex-2.5.5/codex/static/assets/VRadioGroup-BTP03-mq.js.gz +0 -0
  567. codex-2.5.5/codex/static/assets/VSelect-CdDV3Ono.js +0 -2
  568. codex-2.5.5/codex/static/assets/VSelect-CdDV3Ono.js.br +0 -0
  569. codex-2.5.5/codex/static/assets/VSelect-CdDV3Ono.js.gz +0 -0
  570. codex-2.5.5/codex/static/assets/VSelect-DdMCmFiT.css +0 -1
  571. codex-2.5.5/codex/static/assets/VSelect-DdMCmFiT.css.br +0 -0
  572. codex-2.5.5/codex/static/assets/VSelect-DdMCmFiT.css.gz +0 -0
  573. codex-2.5.5/codex/static/assets/VSelectionControl-BLmmn2DU.js +0 -1
  574. codex-2.5.5/codex/static/assets/VSelectionControl-BLmmn2DU.js.br +0 -0
  575. codex-2.5.5/codex/static/assets/VSelectionControl-BLmmn2DU.js.gz +0 -0
  576. codex-2.5.5/codex/static/assets/VSelectionControl-BoFo3GVJ.css +0 -1
  577. codex-2.5.5/codex/static/assets/VSelectionControl-BoFo3GVJ.css.br +0 -0
  578. codex-2.5.5/codex/static/assets/VSelectionControl-BoFo3GVJ.css.gz +0 -0
  579. codex-2.5.5/codex/static/assets/VSnackbar-CGkU_gLB.js +0 -1
  580. codex-2.5.5/codex/static/assets/VSnackbar-CGkU_gLB.js.br +0 -0
  581. codex-2.5.5/codex/static/assets/VSnackbar-CGkU_gLB.js.gz +0 -0
  582. codex-2.5.5/codex/static/assets/VSpacer-CkTA6Rvj.js +0 -1
  583. codex-2.5.5/codex/static/assets/VTable-BYrp_B-d.js +0 -1
  584. codex-2.5.5/codex/static/assets/VTable-BYrp_B-d.js.br +0 -0
  585. codex-2.5.5/codex/static/assets/VTable-BYrp_B-d.js.gz +0 -0
  586. codex-2.5.5/codex/static/assets/VTabs-BpIPKIHj.js +0 -1
  587. codex-2.5.5/codex/static/assets/VTabs-BpIPKIHj.js.br +0 -0
  588. codex-2.5.5/codex/static/assets/VTabs-BpIPKIHj.js.gz +0 -0
  589. codex-2.5.5/codex/static/assets/VTabs-C6gWhgyW.css +0 -1
  590. codex-2.5.5/codex/static/assets/VTabs-C6gWhgyW.css.br +0 -0
  591. codex-2.5.5/codex/static/assets/VTabs-C6gWhgyW.css.gz +0 -0
  592. codex-2.5.5/codex/static/assets/VTextField-gfGFyoFs.js +0 -1
  593. codex-2.5.5/codex/static/assets/VTextField-gfGFyoFs.js.br +0 -0
  594. codex-2.5.5/codex/static/assets/VTextField-gfGFyoFs.js.gz +0 -0
  595. codex-2.5.5/codex/static/assets/VTooltip-Duh78fmK.js +0 -1
  596. codex-2.5.5/codex/static/assets/VTooltip-Duh78fmK.js.br +0 -0
  597. codex-2.5.5/codex/static/assets/VTooltip-Duh78fmK.js.gz +0 -0
  598. codex-2.5.5/codex/static/assets/action-bar-MK11PWGA.js +0 -1
  599. codex-2.5.5/codex/static/assets/action-bar-MK11PWGA.js.br +0 -0
  600. codex-2.5.5/codex/static/assets/action-bar-MK11PWGA.js.gz +0 -0
  601. codex-2.5.5/codex/static/assets/admin-BcPPRwky.js +0 -1
  602. codex-2.5.5/codex/static/assets/admin-BcPPRwky.js.br +0 -0
  603. codex-2.5.5/codex/static/assets/admin-BcPPRwky.js.gz +0 -0
  604. codex-2.5.5/codex/static/assets/admin-CPpmGWQd.js +0 -1
  605. codex-2.5.5/codex/static/assets/admin-CPpmGWQd.js.br +0 -0
  606. codex-2.5.5/codex/static/assets/admin-CtBGIrw2.js +0 -1
  607. codex-2.5.5/codex/static/assets/admin-CtBGIrw2.js.br +0 -0
  608. codex-2.5.5/codex/static/assets/admin-CtBGIrw2.js.gz +0 -0
  609. codex-2.5.5/codex/static/assets/admin-CzXIO_gY.js +0 -1
  610. codex-2.5.5/codex/static/assets/admin-CzXIO_gY.js.br +0 -0
  611. codex-2.5.5/codex/static/assets/admin-DUcFPbTv.js +0 -1
  612. codex-2.5.5/codex/static/assets/admin-DUcFPbTv.js.br +0 -0
  613. codex-2.5.5/codex/static/assets/admin-DUcFPbTv.js.gz +0 -0
  614. codex-2.5.5/codex/static/assets/admin-menu-CI2omzIf.js +0 -1
  615. codex-2.5.5/codex/static/assets/admin-menu-CI2omzIf.js.br +0 -0
  616. codex-2.5.5/codex/static/assets/admin-menu-CI2omzIf.js.gz +0 -0
  617. codex-2.5.5/codex/static/assets/admin-section-BtTM1EwA.js +0 -1
  618. codex-2.5.5/codex/static/assets/admin-section-BtTM1EwA.js.br +0 -0
  619. codex-2.5.5/codex/static/assets/admin-section-BtTM1EwA.js.gz +0 -0
  620. codex-2.5.5/codex/static/assets/admin-settings-button-errors-DxSAnDf9.js +0 -1
  621. codex-2.5.5/codex/static/assets/admin-settings-button-errors-DxSAnDf9.js.br +0 -0
  622. codex-2.5.5/codex/static/assets/admin-settings-button-errors-DxSAnDf9.js.gz +0 -0
  623. codex-2.5.5/codex/static/assets/admin-settings-button-progress-BxXCXHFR.js +0 -1
  624. codex-2.5.5/codex/static/assets/admin-settings-button-progress-BxXCXHFR.js.br +0 -0
  625. codex-2.5.5/codex/static/assets/admin-settings-button-progress-BxXCXHFR.js.gz +0 -0
  626. codex-2.5.5/codex/static/assets/auth-DQfbk-WO.js +0 -1
  627. codex-2.5.5/codex/static/assets/auth-DQfbk-WO.js.br +0 -0
  628. codex-2.5.5/codex/static/assets/auth-DQfbk-WO.js.gz +0 -0
  629. codex-2.5.5/codex/static/assets/auth-form-mixin-DrHxHst8.js +0 -1
  630. codex-2.5.5/codex/static/assets/auth-form-mixin-DrHxHst8.js.br +0 -0
  631. codex-2.5.5/codex/static/assets/auth-form-mixin-DrHxHst8.js.gz +0 -0
  632. codex-2.5.5/codex/static/assets/auth-tab-CK0gWUoS.js +0 -16
  633. codex-2.5.5/codex/static/assets/auth-tab-CK0gWUoS.js.br +0 -0
  634. codex-2.5.5/codex/static/assets/auth-tab-CK0gWUoS.js.gz +0 -0
  635. codex-2.5.5/codex/static/assets/browser-BOVXE4cY.js +0 -2
  636. codex-2.5.5/codex/static/assets/browser-BOVXE4cY.js.br +0 -0
  637. codex-2.5.5/codex/static/assets/browser-BOVXE4cY.js.gz +0 -0
  638. codex-2.5.5/codex/static/assets/browser-C-1hFZuz.js +0 -2
  639. codex-2.5.5/codex/static/assets/browser-C-1hFZuz.js.br +0 -0
  640. codex-2.5.5/codex/static/assets/browser-C-1hFZuz.js.gz +0 -0
  641. codex-2.5.5/codex/static/assets/browser-C178B43i.css +0 -1
  642. codex-2.5.5/codex/static/assets/browser-C178B43i.css.br +0 -0
  643. codex-2.5.5/codex/static/assets/browser-C178B43i.css.gz +0 -0
  644. codex-2.5.5/codex/static/assets/browser-table-column-picker-Db9ZJT0O.js +0 -1
  645. codex-2.5.5/codex/static/assets/browser-table-column-picker-Db9ZJT0O.js.br +0 -0
  646. codex-2.5.5/codex/static/assets/browser-table-column-picker-Db9ZJT0O.js.gz +0 -0
  647. codex-2.5.5/codex/static/assets/clipboard-6IrKshTa.js +0 -1
  648. codex-2.5.5/codex/static/assets/clipboard-6IrKshTa.js.br +0 -0
  649. codex-2.5.5/codex/static/assets/clipboard-6IrKshTa.js.gz +0 -0
  650. codex-2.5.5/codex/static/assets/close-button-DaEoKHt1.js +0 -1
  651. codex-2.5.5/codex/static/assets/close-button-DaEoKHt1.js.br +0 -0
  652. codex-2.5.5/codex/static/assets/close-button-DaEoKHt1.js.gz +0 -0
  653. codex-2.5.5/codex/static/assets/codex-list-item-BNa96S2z.js +0 -1
  654. codex-2.5.5/codex/static/assets/codex-list-item-BNa96S2z.js.br +0 -0
  655. codex-2.5.5/codex/static/assets/codex-list-item-BNa96S2z.js.gz +0 -0
  656. codex-2.5.5/codex/static/assets/comic-name-1UXYlVa7.js +0 -1
  657. codex-2.5.5/codex/static/assets/comic-name-1UXYlVa7.js.br +0 -0
  658. codex-2.5.5/codex/static/assets/comic-name-1UXYlVa7.js.gz +0 -0
  659. codex-2.5.5/codex/static/assets/common-Ds4hd9j5.js +0 -1
  660. codex-2.5.5/codex/static/assets/common-Ds4hd9j5.js.br +0 -0
  661. codex-2.5.5/codex/static/assets/common-Ds4hd9j5.js.gz +0 -0
  662. codex-2.5.5/codex/static/assets/confirm-dialog-BAoTCwAv.js +0 -1
  663. codex-2.5.5/codex/static/assets/confirm-dialog-BAoTCwAv.js.br +0 -0
  664. codex-2.5.5/codex/static/assets/confirm-dialog-BAoTCwAv.js.gz +0 -0
  665. codex-2.5.5/codex/static/assets/confirm-footer-C2-qljnz.js +0 -1
  666. codex-2.5.5/codex/static/assets/confirm-footer-C2-qljnz.js.br +0 -0
  667. codex-2.5.5/codex/static/assets/confirm-footer-C2-qljnz.js.gz +0 -0
  668. codex-2.5.5/codex/static/assets/cover-popup-fke_8qhA.js +0 -1
  669. codex-2.5.5/codex/static/assets/cover-popup-fke_8qhA.js.br +0 -0
  670. codex-2.5.5/codex/static/assets/cover-popup-fke_8qhA.js.gz +0 -0
  671. codex-2.5.5/codex/static/assets/createSimpleFunctional-6MnRwGqJ.js +0 -1
  672. codex-2.5.5/codex/static/assets/createSimpleFunctional-6MnRwGqJ.js.br +0 -2
  673. codex-2.5.5/codex/static/assets/createSimpleFunctional-6MnRwGqJ.js.gz +0 -0
  674. codex-2.5.5/codex/static/assets/custom-covers-tab-BjpnICIi.js +0 -1
  675. codex-2.5.5/codex/static/assets/custom-covers-tab-BjpnICIi.js.br +0 -0
  676. codex-2.5.5/codex/static/assets/custom-covers-tab-BjpnICIi.js.gz +0 -0
  677. codex-2.5.5/codex/static/assets/datetime-column-D4FaYr_P.js +0 -1
  678. codex-2.5.5/codex/static/assets/datetime-column-D4FaYr_P.js.br +0 -4
  679. codex-2.5.5/codex/static/assets/datetime-column-D4FaYr_P.js.gz +0 -0
  680. codex-2.5.5/codex/static/assets/defaults-tab-JTJ-e9Kb.js +0 -1
  681. codex-2.5.5/codex/static/assets/defaults-tab-JTJ-e9Kb.js.br +0 -0
  682. codex-2.5.5/codex/static/assets/defaults-tab-JTJ-e9Kb.js.gz +0 -0
  683. codex-2.5.5/codex/static/assets/delete-row-dialog-DSYq24ge.js +0 -1
  684. codex-2.5.5/codex/static/assets/delete-row-dialog-DSYq24ge.js.br +0 -0
  685. codex-2.5.5/codex/static/assets/delete-row-dialog-DSYq24ge.js.gz +0 -0
  686. codex-2.5.5/codex/static/assets/display-BMcdwum2.js +0 -1
  687. codex-2.5.5/codex/static/assets/display-BMcdwum2.js.br +0 -0
  688. codex-2.5.5/codex/static/assets/display-BMcdwum2.js.gz +0 -0
  689. codex-2.5.5/codex/static/assets/dist-DcoFeqjt.js +0 -1
  690. codex-2.5.5/codex/static/assets/dist-DcoFeqjt.js.br +0 -0
  691. codex-2.5.5/codex/static/assets/dist-DcoFeqjt.js.gz +0 -0
  692. codex-2.5.5/codex/static/assets/doctor-tab-BwORuKkI.js +0 -1
  693. codex-2.5.5/codex/static/assets/doctor-tab-BwORuKkI.js.br +0 -0
  694. codex-2.5.5/codex/static/assets/doctor-tab-BwORuKkI.js.gz +0 -0
  695. codex-2.5.5/codex/static/assets/edit-panel-BckXNuwl.css +0 -1
  696. codex-2.5.5/codex/static/assets/edit-panel-BckXNuwl.css.br +0 -0
  697. codex-2.5.5/codex/static/assets/edit-panel-BckXNuwl.css.gz +0 -0
  698. codex-2.5.5/codex/static/assets/edit-panel-BxRIOD2s.js +0 -1
  699. codex-2.5.5/codex/static/assets/edit-panel-BxRIOD2s.js.br +0 -0
  700. codex-2.5.5/codex/static/assets/edit-panel-BxRIOD2s.js.gz +0 -0
  701. codex-2.5.5/codex/static/assets/email-tab-BKOD9TVY.js +0 -1
  702. codex-2.5.5/codex/static/assets/email-tab-BKOD9TVY.js.br +0 -0
  703. codex-2.5.5/codex/static/assets/email-tab-BKOD9TVY.js.gz +0 -0
  704. codex-2.5.5/codex/static/assets/expand-toggle-Ct5cKGxx.js +0 -1
  705. codex-2.5.5/codex/static/assets/expand-toggle-Ct5cKGxx.js.br +0 -0
  706. codex-2.5.5/codex/static/assets/expand-toggle-Ct5cKGxx.js.gz +0 -0
  707. codex-2.5.5/codex/static/assets/flag-card-U_ctLkp5.js +0 -1
  708. codex-2.5.5/codex/static/assets/flag-card-U_ctLkp5.js.br +0 -0
  709. codex-2.5.5/codex/static/assets/flag-card-U_ctLkp5.js.gz +0 -0
  710. codex-2.5.5/codex/static/assets/forwardRefs-D2hIYliw.js +0 -1
  711. codex-2.5.5/codex/static/assets/forwardRefs-D2hIYliw.js.br +0 -0
  712. codex-2.5.5/codex/static/assets/forwardRefs-D2hIYliw.js.gz +0 -0
  713. codex-2.5.5/codex/static/assets/goto-BaPG1GoJ.js +0 -1
  714. codex-2.5.5/codex/static/assets/goto-BaPG1GoJ.js.br +0 -0
  715. codex-2.5.5/codex/static/assets/goto-BaPG1GoJ.js.gz +0 -0
  716. codex-2.5.5/codex/static/assets/group-tab-DAB8fVbE.js +0 -1
  717. codex-2.5.5/codex/static/assets/group-tab-DAB8fVbE.js.br +0 -0
  718. codex-2.5.5/codex/static/assets/group-tab-DAB8fVbE.js.gz +0 -0
  719. codex-2.5.5/codex/static/assets/http-error-BtkTjE0G.js +0 -1
  720. codex-2.5.5/codex/static/assets/http-error-BtkTjE0G.js.br +0 -0
  721. codex-2.5.5/codex/static/assets/http-error-BtkTjE0G.js.gz +0 -0
  722. codex-2.5.5/codex/static/assets/job-tab-G7ozrOCu.js +0 -1
  723. codex-2.5.5/codex/static/assets/job-tab-G7ozrOCu.js.br +0 -0
  724. codex-2.5.5/codex/static/assets/job-tab-G7ozrOCu.js.gz +0 -0
  725. codex-2.5.5/codex/static/assets/launcher-dialog-CpWa7zNB.css +0 -1
  726. codex-2.5.5/codex/static/assets/launcher-dialog-CpWa7zNB.css.br +0 -0
  727. codex-2.5.5/codex/static/assets/launcher-dialog-CpWa7zNB.css.gz +0 -0
  728. codex-2.5.5/codex/static/assets/launcher-dialog-CtGAl4EP.js +0 -1
  729. codex-2.5.5/codex/static/assets/launcher-dialog-CtGAl4EP.js.br +0 -0
  730. codex-2.5.5/codex/static/assets/launcher-dialog-CtGAl4EP.js.gz +0 -0
  731. codex-2.5.5/codex/static/assets/layout-C-bsQAJB.js +0 -1
  732. codex-2.5.5/codex/static/assets/layout-C-bsQAJB.js.br +0 -0
  733. codex-2.5.5/codex/static/assets/layout-C-bsQAJB.js.gz +0 -0
  734. codex-2.5.5/codex/static/assets/library-tab-D5pmuoLB.js +0 -9
  735. codex-2.5.5/codex/static/assets/library-tab-D5pmuoLB.js.br +0 -0
  736. codex-2.5.5/codex/static/assets/library-tab-D5pmuoLB.js.gz +0 -0
  737. codex-2.5.5/codex/static/assets/main-BLCO5vE0.js +0 -6
  738. codex-2.5.5/codex/static/assets/main-BLCO5vE0.js.br +0 -0
  739. codex-2.5.5/codex/static/assets/main-BLCO5vE0.js.gz +0 -0
  740. codex-2.5.5/codex/static/assets/mdi-B2m8j20z.js +0 -1
  741. codex-2.5.5/codex/static/assets/mdi-B2m8j20z.js.br +0 -0
  742. codex-2.5.5/codex/static/assets/mdi-B2m8j20z.js.gz +0 -0
  743. codex-2.5.5/codex/static/assets/online-tag-DA8Z0x1y.js +0 -1
  744. codex-2.5.5/codex/static/assets/online-tag-wXqkJmtd.js +0 -1
  745. codex-2.5.5/codex/static/assets/online-tag-wXqkJmtd.js.br +0 -0
  746. codex-2.5.5/codex/static/assets/online-tag-wXqkJmtd.js.gz +0 -0
  747. codex-2.5.5/codex/static/assets/pagination-toolbar-BOVxJXqE.css +0 -1
  748. codex-2.5.5/codex/static/assets/pagination-toolbar-BOVxJXqE.css.br +0 -0
  749. codex-2.5.5/codex/static/assets/pagination-toolbar-BOVxJXqE.css.gz +0 -0
  750. codex-2.5.5/codex/static/assets/pagination-toolbar-tDHyyxY7.js +0 -2
  751. codex-2.5.5/codex/static/assets/pagination-toolbar-tDHyyxY7.js.br +0 -0
  752. codex-2.5.5/codex/static/assets/pagination-toolbar-tDHyyxY7.js.gz +0 -0
  753. codex-2.5.5/codex/static/assets/pdf-doc-DzsHSrR0.js +0 -622
  754. codex-2.5.5/codex/static/assets/pdf-doc-DzsHSrR0.js.br +0 -0
  755. codex-2.5.5/codex/static/assets/pdf-doc-DzsHSrR0.js.gz +0 -0
  756. codex-2.5.5/codex/static/assets/pretty-bytes-BXfvjL7G.js +0 -1
  757. codex-2.5.5/codex/static/assets/pretty-bytes-BXfvjL7G.js.br +0 -0
  758. codex-2.5.5/codex/static/assets/pretty-bytes-BXfvjL7G.js.gz +0 -0
  759. codex-2.5.5/codex/static/assets/prompt-popup-BzNX3BE7.js +0 -2
  760. codex-2.5.5/codex/static/assets/prompt-popup-BzNX3BE7.js.br +0 -0
  761. codex-2.5.5/codex/static/assets/prompt-popup-BzNX3BE7.js.gz +0 -0
  762. codex-2.5.5/codex/static/assets/prompt-popup-DOss4tHf.css +0 -1
  763. codex-2.5.5/codex/static/assets/prompt-popup-DOss4tHf.css.br +0 -0
  764. codex-2.5.5/codex/static/assets/prompt-popup-DOss4tHf.css.gz +0 -0
  765. codex-2.5.5/codex/static/assets/reader-B2E67N2t.js +0 -2
  766. codex-2.5.5/codex/static/assets/reader-B2E67N2t.js.br +0 -0
  767. codex-2.5.5/codex/static/assets/reader-B2E67N2t.js.gz +0 -0
  768. codex-2.5.5/codex/static/assets/reader-WwBGH6VQ.js +0 -1
  769. codex-2.5.5/codex/static/assets/reader-WwBGH6VQ.js.br +0 -0
  770. codex-2.5.5/codex/static/assets/reader-WwBGH6VQ.js.gz +0 -0
  771. codex-2.5.5/codex/static/assets/reader-settings-controls-fT2QmkQR.js +0 -1
  772. codex-2.5.5/codex/static/assets/reader-settings-controls-fT2QmkQR.js.br +0 -0
  773. codex-2.5.5/codex/static/assets/reader-settings-controls-fT2QmkQR.js.gz +0 -0
  774. codex-2.5.5/codex/static/assets/reader-urXklJrv.js +0 -1
  775. codex-2.5.5/codex/static/assets/reader-urXklJrv.js.br +0 -0
  776. codex-2.5.5/codex/static/assets/reader-urXklJrv.js.gz +0 -0
  777. codex-2.5.5/codex/static/assets/relation-chips-Cca9590b.js +0 -1
  778. codex-2.5.5/codex/static/assets/relation-chips-Cca9590b.js.br +0 -0
  779. codex-2.5.5/codex/static/assets/relation-chips-Cca9590b.js.gz +0 -0
  780. codex-2.5.5/codex/static/assets/reset-password-confirm-DOtlpn6b.js +0 -1
  781. codex-2.5.5/codex/static/assets/reset-password-confirm-DOtlpn6b.js.br +0 -0
  782. codex-2.5.5/codex/static/assets/reset-password-confirm-DOtlpn6b.js.gz +0 -0
  783. codex-2.5.5/codex/static/assets/restore-tab-D0LyIp93.js +0 -3
  784. codex-2.5.5/codex/static/assets/restore-tab-D0LyIp93.js.br +0 -0
  785. codex-2.5.5/codex/static/assets/restore-tab-D0LyIp93.js.gz +0 -0
  786. codex-2.5.5/codex/static/assets/rolldown-runtime-DK3Fl9T5.js +0 -1
  787. codex-2.5.5/codex/static/assets/rolldown-runtime-DK3Fl9T5.js.br +0 -0
  788. codex-2.5.5/codex/static/assets/rules-CxNyX7oF.js +0 -1
  789. codex-2.5.5/codex/static/assets/rules-CxNyX7oF.js.br +0 -0
  790. codex-2.5.5/codex/static/assets/rules-CxNyX7oF.js.gz +0 -0
  791. codex-2.5.5/codex/static/assets/settings-tab-CRsk6EP0.js +0 -1
  792. codex-2.5.5/codex/static/assets/settings-tab-CRsk6EP0.js.br +0 -0
  793. codex-2.5.5/codex/static/assets/settings-tab-CRsk6EP0.js.gz +0 -0
  794. codex-2.5.5/codex/static/assets/sso-error-BBiBPppr.js +0 -1
  795. codex-2.5.5/codex/static/assets/sso-error-BBiBPppr.js.br +0 -0
  796. codex-2.5.5/codex/static/assets/sso-error-BBiBPppr.js.gz +0 -0
  797. codex-2.5.5/codex/static/assets/sso-login-button-Dpf5JhPg.js +0 -1
  798. codex-2.5.5/codex/static/assets/sso-login-button-Dpf5JhPg.js.br +0 -0
  799. codex-2.5.5/codex/static/assets/sso-login-button-Dpf5JhPg.js.gz +0 -0
  800. codex-2.5.5/codex/static/assets/ssrBoot-BH95m5Ni.js +0 -1
  801. codex-2.5.5/codex/static/assets/ssrBoot-BH95m5Ni.js.br +0 -0
  802. codex-2.5.5/codex/static/assets/ssrBoot-BH95m5Ni.js.gz +0 -0
  803. codex-2.5.5/codex/static/assets/stats-tab-CpPNbmYw.js +0 -1
  804. codex-2.5.5/codex/static/assets/stats-tab-CpPNbmYw.js.br +0 -0
  805. codex-2.5.5/codex/static/assets/stats-tab-CpPNbmYw.js.gz +0 -0
  806. codex-2.5.5/codex/static/assets/submit-footer-_fSkcvKY.js +0 -1
  807. codex-2.5.5/codex/static/assets/submit-footer-_fSkcvKY.js.br +0 -0
  808. codex-2.5.5/codex/static/assets/submit-footer-_fSkcvKY.js.gz +0 -0
  809. codex-2.5.5/codex/static/assets/tagging-tab-B9ypEe_G.js +0 -1
  810. codex-2.5.5/codex/static/assets/tagging-tab-B9ypEe_G.js.br +0 -0
  811. codex-2.5.5/codex/static/assets/tagging-tab-B9ypEe_G.js.gz +0 -0
  812. codex-2.5.5/codex/static/assets/tagging-tab-DJO-yx23.css +0 -1
  813. codex-2.5.5/codex/static/assets/tagging-tab-DJO-yx23.css.br +0 -0
  814. codex-2.5.5/codex/static/assets/tagging-tab-DJO-yx23.css.gz +0 -0
  815. codex-2.5.5/codex/static/assets/tooltip-CsLtBcoh.js +0 -1
  816. codex-2.5.5/codex/static/assets/tooltip-CsLtBcoh.js.br +0 -0
  817. codex-2.5.5/codex/static/assets/tooltip-CsLtBcoh.js.gz +0 -0
  818. codex-2.5.5/codex/static/assets/transitions-C97WmLuG.js +0 -1
  819. codex-2.5.5/codex/static/assets/transitions-C97WmLuG.js.br +0 -0
  820. codex-2.5.5/codex/static/assets/transitions-C97WmLuG.js.gz +0 -0
  821. codex-2.5.5/codex/static/assets/unauthorized-DKcohWBG.css +0 -1
  822. codex-2.5.5/codex/static/assets/unauthorized-DKcohWBG.css.br +0 -0
  823. codex-2.5.5/codex/static/assets/unauthorized-DKcohWBG.css.gz +0 -0
  824. codex-2.5.5/codex/static/assets/unauthorized-DrcNMyIS.js +0 -1
  825. codex-2.5.5/codex/static/assets/unauthorized-DrcNMyIS.js.br +0 -0
  826. codex-2.5.5/codex/static/assets/unauthorized-DrcNMyIS.js.gz +0 -0
  827. codex-2.5.5/codex/static/assets/use-now-timer-BxmAmChT.js +0 -1
  828. codex-2.5.5/codex/static/assets/use-now-timer-BxmAmChT.js.br +0 -0
  829. codex-2.5.5/codex/static/assets/use-now-timer-BxmAmChT.js.gz +0 -0
  830. codex-2.5.5/codex/static/assets/user-tab-s2oXszIQ.js +0 -1
  831. codex-2.5.5/codex/static/assets/user-tab-s2oXszIQ.js.br +0 -0
  832. codex-2.5.5/codex/static/assets/user-tab-s2oXszIQ.js.gz +0 -0
  833. codex-2.5.5/codex/static/assets/vendor-vue-CXkRuqjl.js +0 -4
  834. codex-2.5.5/codex/static/assets/vendor-vue-CXkRuqjl.js.br +0 -0
  835. codex-2.5.5/codex/static/assets/vendor-vue-CXkRuqjl.js.gz +0 -0
  836. codex-2.5.5/codex/static/manifest.json +0 -1825
  837. codex-2.5.5/codex/static/manifest.json.br +0 -0
  838. codex-2.5.5/codex/static/manifest.json.gz +0 -0
  839. codex-2.5.5/codex/user_data/restore.py +0 -947
  840. codex-2.5.5/codex/user_data/schema.sql +0 -214
  841. codex-2.5.5/codex/user_data/serializers.py +0 -423
  842. codex-2.5.5/codex/util.py +0 -74
  843. codex-2.5.5/codex/views/admin/json_api.py +0 -57
  844. codex-2.5.5/codex/views/admin/onlinetag.py +0 -425
  845. codex-2.5.5/codex/views/admin/tagging_validate.py +0 -68
  846. codex-2.5.5/codex/views/admin/user.py +0 -274
  847. codex-2.5.5/codex/views/auth.py +0 -798
  848. codex-2.5.5/codex/views/bookmark.py +0 -151
  849. codex-2.5.5/codex/views/browser/breadcrumbs.py +0 -248
  850. codex-2.5.5/codex/views/browser/choices.py +0 -321
  851. codex-2.5.5/codex/views/browser/const.py +0 -28
  852. codex-2.5.5/codex/views/browser/filters/field.py +0 -109
  853. codex-2.5.5/codex/views/browser/filters/filter.py +0 -278
  854. codex-2.5.5/codex/views/browser/filters/search/field/column.py +0 -60
  855. codex-2.5.5/codex/views/browser/filters/search/parse.py +0 -350
  856. codex-2.5.5/codex/views/browser/metadata/annotate.py +0 -147
  857. codex-2.5.5/codex/views/browser/metadata/const.py +0 -129
  858. codex-2.5.5/codex/views/browser/title.py +0 -60
  859. codex-2.5.5/codex/views/mixins.py +0 -128
  860. codex-2.5.5/codex/views/reader/books.py +0 -264
  861. codex-2.5.5/codex/views/settings.py +0 -587
  862. codex-2.5.5/docs/NEWS.md +0 -2727
  863. codex-2.5.5/frontend/.eslintcache +0 -1
  864. codex-2.5.5/frontend/bun.lock +0 -845
  865. codex-2.5.5/frontend/package.json +0 -54
  866. codex-2.5.5/frontend/src/choices/browser-defaults.json +0 -52
  867. codex-2.5.5/frontend/src/choices/format-field-support.json +0 -77
  868. codex-2.5.5/frontend/src/choices/search-map.json +0 -332
  869. codex-2.5.5/frontend/src/comic-name.js +0 -84
  870. codex-2.5.5/frontend/src/components/admin/tabs/tagging-tab.vue +0 -783
  871. codex-2.5.5/frontend/src/components/browser/toolbars/browser-toolbar-title.vue +0 -109
  872. codex-2.5.5/frontend/src/components/browser/toolbars/top/filter-choice-list.vue +0 -168
  873. codex-2.5.5/frontend/src/components/metadata/edit-mode/edit-panel.vue +0 -2850
  874. codex-2.5.5/frontend/src/components/metadata/metadata-activator.vue +0 -60
  875. codex-2.5.5/frontend/src/components/metadata/metadata-body.vue +0 -165
  876. codex-2.5.5/frontend/src/components/metadata/metadata-dialog.vue +0 -225
  877. codex-2.5.5/frontend/src/components/metadata/metadata-header.vue +0 -329
  878. codex-2.5.5/frontend/src/components/online-tag/candidate-row.vue +0 -181
  879. codex-2.5.5/frontend/src/components/online-tag/launcher-dialog.vue +0 -782
  880. codex-2.5.5/frontend/src/components/reader/pager/pager.vue +0 -75
  881. codex-2.5.5/frontend/src/components/reader/use-reader-keyup.js +0 -49
  882. codex-2.5.5/frontend/src/stores/common.js +0 -179
  883. codex-2.5.5/frontend/src/stores/reader.js +0 -1083
  884. codex-2.5.5/frontend/tests/unit/candidate-row.test.js +0 -224
  885. codex-2.5.5/frontend/tests/unit/edit-panel-metron-fields.test.js +0 -200
  886. codex-2.5.5/frontend/tests/unit/launcher-dialog.test.js +0 -625
  887. codex-2.5.5/frontend/tests/unit/metadata-header.test.js +0 -68
  888. codex-2.5.5/frontend/tests/unit/reader-store-routes.test.js +0 -116
  889. codex-2.5.5/frontend/tests/unit/tagging-tab.test.js +0 -494
  890. codex-2.5.5/package.json +0 -92
  891. codex-2.5.5/pyproject.toml +0 -466
  892. codex-2.5.5/pyproject.toml.orig +0 -444
  893. codex-2.5.5/tests/importer/test_basic.py +0 -1036
  894. codex-2.5.5/tests/importer/test_update_all.py +0 -884
  895. codex-2.5.5/tests/importer/test_update_none.py +0 -166
  896. codex-2.5.5/tests/test_admin_custom_cover.py +0 -297
  897. codex-2.5.5/tests/test_admin_error_shapes.py +0 -123
  898. codex-2.5.5/tests/test_admin_singleton_settings.py +0 -238
  899. codex-2.5.5/tests/test_admin_writes.py +0 -108
  900. codex-2.5.5/tests/test_credential_validator.py +0 -323
  901. codex-2.5.5/tests/test_doctor_codex_checks.py +0 -259
  902. codex-2.5.5/tests/test_lazy_import_marker.py +0 -138
  903. codex-2.5.5/tests/test_onlinetag_credentials.py +0 -76
  904. codex-2.5.5/tests/test_onlinetag_serialize_candidate.py +0 -179
  905. codex-2.5.5/tests/test_tag_by_id.py +0 -313
  906. codex-2.5.5/tests/test_tag_write_date.py +0 -208
  907. codex-2.5.5/tests/test_tagging_validate_endpoint.py +0 -174
  908. codex-2.5.5/tests/test_telemeter_counts.py +0 -80
  909. codex-2.5.5/tests/test_telemeter_privacy.py +0 -413
  910. codex-2.5.5/tests/test_user_data_restore.py +0 -647
  911. codex-2.5.5/uv.lock +0 -4667
  912. {codex-2.5.5 → codex-2.5.7}/.dockerignore +0 -0
  913. {codex-2.5.5 → codex-2.5.7}/.github/actions/devenv-ci-container/action.yml +0 -0
  914. {codex-2.5.5 → codex-2.5.7}/.github/actions/devenv-lint-tools/action.yml +0 -0
  915. {codex-2.5.5 → codex-2.5.7}/.github/actions/devenv-pypi/action.yml +0 -0
  916. {codex-2.5.5 → codex-2.5.7}/.github/workflows/ci.yml +0 -0
  917. {codex-2.5.5 → codex-2.5.7}/.github/workflows/devenv-check.yml +0 -0
  918. {codex-2.5.5 → codex-2.5.7}/.github/workflows/devenv-release.yml +0 -0
  919. {codex-2.5.5 → codex-2.5.7}/.gitignore +0 -0
  920. {codex-2.5.5 → codex-2.5.7}/.prettierignore +0 -0
  921. {codex-2.5.5 → codex-2.5.7}/.readthedocs.yaml +0 -0
  922. {codex-2.5.5 → codex-2.5.7}/.shellcheckrc +0 -0
  923. {codex-2.5.5 → codex-2.5.7}/.shellignore +0 -0
  924. {codex-2.5.5 → codex-2.5.7}/Makefile +0 -0
  925. {codex-2.5.5 → codex-2.5.7}/README.md +0 -0
  926. {codex-2.5.5 → codex-2.5.7}/bin/_lib.sh +0 -0
  927. {codex-2.5.5 → codex-2.5.7}/bin/benchmark-opds.sh +0 -0
  928. {codex-2.5.5 → codex-2.5.7}/bin/build-choices.sh +0 -0
  929. {codex-2.5.5 → codex-2.5.7}/bin/build-dist.sh +0 -0
  930. {codex-2.5.5 → codex-2.5.7}/bin/ci-reuse-dist.sh +0 -0
  931. {codex-2.5.5 → codex-2.5.7}/bin/clean-pycache.sh +0 -0
  932. {codex-2.5.5 → codex-2.5.7}/bin/cleanup-pypi-alpha.sh +0 -0
  933. {codex-2.5.5 → codex-2.5.7}/bin/collectstatic.sh +0 -0
  934. {codex-2.5.5 → codex-2.5.7}/bin/delete-files.sh +0 -0
  935. {codex-2.5.5 → codex-2.5.7}/bin/dev-docker.sh +0 -0
  936. {codex-2.5.5 → codex-2.5.7}/bin/dev-module.sh +0 -0
  937. {codex-2.5.5 → codex-2.5.7}/bin/dev-prod-server.sh +0 -0
  938. {codex-2.5.5 → codex-2.5.7}/bin/dev.sh +0 -0
  939. {codex-2.5.5 → codex-2.5.7}/bin/docker-compose-exit.sh +0 -0
  940. {codex-2.5.5 → codex-2.5.7}/bin/docker-tag-latest.sh +0 -0
  941. {codex-2.5.5 → codex-2.5.7}/bin/find-files.sh +0 -0
  942. {codex-2.5.5 → codex-2.5.7}/bin/find-sh.sh +0 -0
  943. {codex-2.5.5 → codex-2.5.7}/bin/fix-complexity.sh +0 -0
  944. {codex-2.5.5 → codex-2.5.7}/bin/fix-django.sh +0 -0
  945. {codex-2.5.5 → codex-2.5.7}/bin/fix-docker.sh +0 -0
  946. {codex-2.5.5 → codex-2.5.7}/bin/fix-python.sh +0 -0
  947. {codex-2.5.5 → codex-2.5.7}/bin/fix.sh +0 -0
  948. {codex-2.5.5 → codex-2.5.7}/bin/ghcr-prune-alphas.sh +0 -0
  949. {codex-2.5.5 → codex-2.5.7}/bin/hub_prune_stale.py +0 -0
  950. {codex-2.5.5 → codex-2.5.7}/bin/icons_transform.py +0 -0
  951. {codex-2.5.5 → codex-2.5.7}/bin/kill-codex.sh +0 -0
  952. {codex-2.5.5 → codex-2.5.7}/bin/kill-eslint_d.sh +0 -0
  953. {codex-2.5.5 → codex-2.5.7}/bin/lint-ci.sh +0 -0
  954. {codex-2.5.5 → codex-2.5.7}/bin/lint-complexity.sh +0 -0
  955. {codex-2.5.5 → codex-2.5.7}/bin/lint-django.sh +0 -0
  956. {codex-2.5.5 → codex-2.5.7}/bin/lint-docker.sh +0 -0
  957. {codex-2.5.5 → codex-2.5.7}/bin/lint-python.sh +0 -0
  958. {codex-2.5.5 → codex-2.5.7}/bin/lint-vulture.sh +0 -0
  959. {codex-2.5.5 → codex-2.5.7}/bin/lint.sh +0 -0
  960. {codex-2.5.5 → codex-2.5.7}/bin/localize-db.sh +0 -0
  961. {codex-2.5.5 → codex-2.5.7}/bin/localize_library.sql +0 -0
  962. {codex-2.5.5 → codex-2.5.7}/bin/pm +0 -0
  963. {codex-2.5.5 → codex-2.5.7}/bin/prettier-nginx.sh +0 -0
  964. {codex-2.5.5 → codex-2.5.7}/bin/release-tag.sh +0 -0
  965. {codex-2.5.5 → codex-2.5.7}/bin/release_info.py +0 -0
  966. {codex-2.5.5 → codex-2.5.7}/bin/roman.py +0 -0
  967. {codex-2.5.5 → codex-2.5.7}/bin/run-test-proxy.sh +0 -0
  968. {codex-2.5.5 → codex-2.5.7}/bin/sh-tools.sh +0 -0
  969. {codex-2.5.5 → codex-2.5.7}/bin/sort-ignore.sh +0 -0
  970. {codex-2.5.5 → codex-2.5.7}/bin/sync_comic_logo.py +0 -0
  971. {codex-2.5.5 → codex-2.5.7}/bin/test-python.sh +0 -0
  972. {codex-2.5.5 → codex-2.5.7}/bin/uml.sh +0 -0
  973. {codex-2.5.5 → codex-2.5.7}/bin/update-deps-node.sh +0 -0
  974. {codex-2.5.5 → codex-2.5.7}/bin/update-deps-python.sh +0 -0
  975. {codex-2.5.5 → codex-2.5.7}/bin/vendor-diff-package.sh +0 -0
  976. {codex-2.5.5 → codex-2.5.7}/bin/vendor-patch-imports.sh +0 -0
  977. {codex-2.5.5 → codex-2.5.7}/bin/version-node.sh +0 -0
  978. {codex-2.5.5 → codex-2.5.7}/bin/version-python.sh +0 -0
  979. {codex-2.5.5 → codex-2.5.7}/codex/__init__.py +0 -0
  980. {codex-2.5.5 → codex-2.5.7}/codex/applications/__init__.py +0 -0
  981. {codex-2.5.5 → codex-2.5.7}/codex/applications/http.py +0 -0
  982. {codex-2.5.5 → codex-2.5.7}/codex/applications/lifespan.py +0 -0
  983. {codex-2.5.5 → codex-2.5.7}/codex/applications/websocket.py +0 -0
  984. {codex-2.5.5 → codex-2.5.7}/codex/applications/workers.py +0 -0
  985. {codex-2.5.5 → codex-2.5.7}/codex/asgi.py +0 -0
  986. {codex-2.5.5 → codex-2.5.7}/codex/authentication.py +0 -0
  987. {codex-2.5.5 → codex-2.5.7}/codex/cache.py +0 -0
  988. {codex-2.5.5 → codex-2.5.7}/codex/choices/__init__.py +0 -0
  989. {codex-2.5.5 → codex-2.5.7}/codex/choices/admin.py +0 -0
  990. {codex-2.5.5 → codex-2.5.7}/codex/choices/browser.py +0 -0
  991. {codex-2.5.5 → codex-2.5.7}/codex/choices/jobs.py +0 -0
  992. {codex-2.5.5 → codex-2.5.7}/codex/choices/limits.py +0 -0
  993. {codex-2.5.5 → codex-2.5.7}/codex/choices/notifications.py +0 -0
  994. {codex-2.5.5 → codex-2.5.7}/codex/choices/onlinetag.py +0 -0
  995. {codex-2.5.5 → codex-2.5.7}/codex/choices/reader.py +0 -0
  996. {codex-2.5.5 → codex-2.5.7}/codex/choices/statii.py +0 -0
  997. {codex-2.5.5 → codex-2.5.7}/codex/collection.py +0 -0
  998. {codex-2.5.5 → codex-2.5.7}/codex/db_routers.py +0 -0
  999. {codex-2.5.5 → codex-2.5.7}/codex/doctor/__init__.py +0 -0
  1000. {codex-2.5.5 → codex-2.5.7}/codex/doctor/checks.py +0 -0
  1001. {codex-2.5.5 → codex-2.5.7}/codex/failed_login_log.py +0 -0
  1002. {codex-2.5.5 → codex-2.5.7}/codex/librarian/README.md +0 -0
  1003. {codex-2.5.5 → codex-2.5.7}/codex/librarian/__init__.py +0 -0
  1004. {codex-2.5.5 → codex-2.5.7}/codex/librarian/bookmark/__init__.py +0 -0
  1005. {codex-2.5.5 → codex-2.5.7}/codex/librarian/bookmark/bookmarkd.py +0 -0
  1006. {codex-2.5.5 → codex-2.5.7}/codex/librarian/bookmark/last_route.py +0 -0
  1007. {codex-2.5.5 → codex-2.5.7}/codex/librarian/bookmark/latest_version.py +0 -0
  1008. {codex-2.5.5 → codex-2.5.7}/codex/librarian/bookmark/tasks.py +0 -0
  1009. {codex-2.5.5 → codex-2.5.7}/codex/librarian/bookmark/update.py +0 -0
  1010. {codex-2.5.5 → codex-2.5.7}/codex/librarian/bookmark/user_active.py +0 -0
  1011. {codex-2.5.5 → codex-2.5.7}/codex/librarian/covers/__init__.py +0 -0
  1012. {codex-2.5.5 → codex-2.5.7}/codex/librarian/covers/coverd.py +0 -0
  1013. {codex-2.5.5 → codex-2.5.7}/codex/librarian/covers/create.py +0 -0
  1014. {codex-2.5.5 → codex-2.5.7}/codex/librarian/covers/path.py +0 -0
  1015. {codex-2.5.5 → codex-2.5.7}/codex/librarian/covers/purge.py +0 -0
  1016. {codex-2.5.5 → codex-2.5.7}/codex/librarian/covers/status.py +0 -0
  1017. {codex-2.5.5 → codex-2.5.7}/codex/librarian/covers/tasks.py +0 -0
  1018. {codex-2.5.5 → codex-2.5.7}/codex/librarian/cron/__init__.py +0 -0
  1019. {codex-2.5.5 → codex-2.5.7}/codex/librarian/cron/crond.py +0 -0
  1020. {codex-2.5.5 → codex-2.5.7}/codex/librarian/db.py +0 -0
  1021. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/README.md +0 -0
  1022. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/__init__.py +0 -0
  1023. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/events.py +0 -0
  1024. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/filters.py +0 -0
  1025. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/gone.py +0 -0
  1026. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/import_task.py +0 -0
  1027. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/mounted.py +0 -0
  1028. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/poller/__init__.py +0 -0
  1029. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/poller/poller.py +0 -0
  1030. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/poller/snapshot.py +0 -0
  1031. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/poller/snapshot_diff.py +0 -0
  1032. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/poller/status.py +0 -0
  1033. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/poller/tasks.py +0 -0
  1034. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/status.py +0 -0
  1035. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/tasks.py +0 -0
  1036. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/watcher/__init__.py +0 -0
  1037. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/watcher/data.py +0 -0
  1038. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/watcher/dirs.py +0 -0
  1039. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/watcher/events.py +0 -0
  1040. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/watcher/move.py +0 -0
  1041. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/watcher/status.py +0 -0
  1042. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/watcher/tasks.py +0 -0
  1043. {codex-2.5.5 → codex-2.5.7}/codex/librarian/fs/watcher/watcher.py +0 -0
  1044. {codex-2.5.5 → codex-2.5.7}/codex/librarian/librariand.py +0 -0
  1045. {codex-2.5.5 → codex-2.5.7}/codex/librarian/memory.py +0 -0
  1046. {codex-2.5.5 → codex-2.5.7}/codex/librarian/mp_queue.py +0 -0
  1047. {codex-2.5.5 → codex-2.5.7}/codex/librarian/notifier/__init__.py +0 -0
  1048. {codex-2.5.5 → codex-2.5.7}/codex/librarian/notifier/notifierd.py +0 -0
  1049. {codex-2.5.5 → codex-2.5.7}/codex/librarian/notifier/tasks.py +0 -0
  1050. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/__init__.py +0 -0
  1051. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/estimate.py +0 -0
  1052. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/issue_id.py +0 -0
  1053. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/onlinetagd.py +0 -0
  1054. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/outcome_stats.py +0 -0
  1055. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/prompt_apply.py +0 -0
  1056. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/session_cache.py +0 -0
  1057. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/session_snapshot.py +0 -0
  1058. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/status.py +0 -0
  1059. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/statuses.py +0 -0
  1060. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/stored_id_prepass.py +0 -0
  1061. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/tag_pass_runner.py +0 -0
  1062. {codex-2.5.5 → codex-2.5.7}/codex/librarian/onlinetag/tasks.py +0 -0
  1063. {codex-2.5.5 → codex-2.5.7}/codex/librarian/pending_deletes.py +0 -0
  1064. {codex-2.5.5 → codex-2.5.7}/codex/librarian/restarter/__init__.py +0 -0
  1065. {codex-2.5.5 → codex-2.5.7}/codex/librarian/restarter/restarter.py +0 -0
  1066. {codex-2.5.5 → codex-2.5.7}/codex/librarian/restarter/status.py +0 -0
  1067. {codex-2.5.5 → codex-2.5.7}/codex/librarian/restarter/tasks.py +0 -0
  1068. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/__init__.py +0 -0
  1069. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/__init__.py +0 -0
  1070. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/create/__init__.py +0 -0
  1071. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/create/covers.py +0 -0
  1072. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/create/folders.py +0 -0
  1073. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/delete/__init__.py +0 -0
  1074. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/delete/collect.py +0 -0
  1075. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/delete/comics.py +0 -0
  1076. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/delete/covers.py +0 -0
  1077. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/delete/existence.py +0 -0
  1078. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/delete/folders.py +0 -0
  1079. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/failed/__init__.py +0 -0
  1080. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/failed/create.py +0 -0
  1081. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/failed/failed.py +0 -0
  1082. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/failed/query.py +0 -0
  1083. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/importer.py +0 -0
  1084. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/link/__init__.py +0 -0
  1085. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/link/const.py +0 -0
  1086. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/link/covers.py +0 -0
  1087. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/link/delete.py +0 -0
  1088. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/link/many_to_many.py +0 -0
  1089. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/link/prepare.py +0 -0
  1090. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/link/sum.py +0 -0
  1091. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/moved/__init__.py +0 -0
  1092. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/moved/comics.py +0 -0
  1093. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/moved/covers.py +0 -0
  1094. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/moved/folders.py +0 -0
  1095. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/pragmas.py +0 -0
  1096. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/query/__init__.py +0 -0
  1097. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/query/covers.py +0 -0
  1098. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/query/filters.py +0 -0
  1099. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/query/links.py +0 -0
  1100. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/query/links_fk.py +0 -0
  1101. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/query/links_m2m.py +0 -0
  1102. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/query/update_fks.py +0 -0
  1103. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/read/__init__.py +0 -0
  1104. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/read/aggregate_path.py +0 -0
  1105. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/read/const.py +0 -0
  1106. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/read/folders.py +0 -0
  1107. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/read/many_to_many.py +0 -0
  1108. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/revive.py +0 -0
  1109. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/search/__init__.py +0 -0
  1110. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/statii/__init__.py +0 -0
  1111. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/statii/create.py +0 -0
  1112. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/statii/delete.py +0 -0
  1113. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/statii/failed.py +0 -0
  1114. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/statii/link.py +0 -0
  1115. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/statii/moved.py +0 -0
  1116. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/statii/query.py +0 -0
  1117. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/statii/read.py +0 -0
  1118. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/statii/search.py +0 -0
  1119. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/status.py +0 -0
  1120. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/importer/tasks.py +0 -0
  1121. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/__init__.py +0 -0
  1122. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/adopt_folders.py +0 -0
  1123. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/cleanup.py +0 -0
  1124. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/failed_imports.py +0 -0
  1125. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/integrity/__init__.py +0 -0
  1126. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/integrity/foreign_keys.py +0 -0
  1127. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/janitor.py +0 -0
  1128. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/reap.py +0 -0
  1129. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/scheduled_time.py +0 -0
  1130. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/status.py +0 -0
  1131. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/tasks.py +0 -0
  1132. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/update.py +0 -0
  1133. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/janitor/vacuum.py +0 -0
  1134. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/priority.py +0 -0
  1135. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/scribed.py +0 -0
  1136. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/search/__init__.py +0 -0
  1137. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/search/handler.py +0 -0
  1138. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/search/optimize.py +0 -0
  1139. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/search/remove.py +0 -0
  1140. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/search/status.py +0 -0
  1141. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/search/tasks.py +0 -0
  1142. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/status.py +0 -0
  1143. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/tagwrite_errors.py +0 -0
  1144. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/tagwrite_rename.py +0 -0
  1145. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/tasks.py +0 -0
  1146. {codex-2.5.5 → codex-2.5.7}/codex/librarian/scribe/timestamp_update.py +0 -0
  1147. {codex-2.5.5 → codex-2.5.7}/codex/librarian/status.py +0 -0
  1148. {codex-2.5.5 → codex-2.5.7}/codex/librarian/status_controller.py +0 -0
  1149. {codex-2.5.5 → codex-2.5.7}/codex/librarian/tasks.py +0 -0
  1150. {codex-2.5.5 → codex-2.5.7}/codex/librarian/telemeter/__init__.py +0 -0
  1151. {codex-2.5.5 → codex-2.5.7}/codex/librarian/telemeter/count_stats.py +0 -0
  1152. {codex-2.5.5 → codex-2.5.7}/codex/librarian/telemeter/per_user_stats.py +0 -0
  1153. {codex-2.5.5 → codex-2.5.7}/codex/librarian/telemeter/scheduled_time.py +0 -0
  1154. {codex-2.5.5 → codex-2.5.7}/codex/librarian/telemeter/stats.py +0 -0
  1155. {codex-2.5.5 → codex-2.5.7}/codex/librarian/telemeter/tasks.py +0 -0
  1156. {codex-2.5.5 → codex-2.5.7}/codex/librarian/telemeter/telemeter.py +0 -0
  1157. {codex-2.5.5 → codex-2.5.7}/codex/librarian/threads.py +0 -0
  1158. {codex-2.5.5 → codex-2.5.7}/codex/librarian/worker.py +0 -0
  1159. {codex-2.5.5 → codex-2.5.7}/codex/mail.py +0 -0
  1160. {codex-2.5.5 → codex-2.5.7}/codex/management/__init__.py +0 -0
  1161. {codex-2.5.5 → codex-2.5.7}/codex/management/commands/__init__.py +0 -0
  1162. {codex-2.5.5 → codex-2.5.7}/codex/management/commands/restore_user_data.py +0 -0
  1163. {codex-2.5.5 → codex-2.5.7}/codex/middleware.py +0 -0
  1164. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0001_init.py +0 -0
  1165. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0002_auto_20200826_0622.py +0 -0
  1166. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0003_auto_20200831_2033.py +0 -0
  1167. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0004_failedimport.py +0 -0
  1168. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0005_auto_20200918_0146.py +0 -0
  1169. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0006_update_default_names_and_remove_duplicate_comics.py +0 -0
  1170. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0007_auto_20211210_1710.py +0 -0
  1171. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0008_alter_comic_created_at_alter_comic_format_and_more.py +0 -0
  1172. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0009_alter_comic_parent_folder.py +0 -0
  1173. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0010_haystack.py +0 -0
  1174. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0011_library_groups_and_metadata_changes.py +0 -0
  1175. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0012_rename_description_comic_comments.py +0 -0
  1176. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0013_int_issue_count_longer_charfields.py +0 -0
  1177. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0014_pdf_issue_suffix_remove_cover_image_sort_name.py +0 -0
  1178. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0015_link_comics_to_top_level_folders.py +0 -0
  1179. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0016_remove_comic_cover_path_librarianstatus.py +0 -0
  1180. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0017_alter_timestamp_options_alter_adminflag_name_and_more.py +0 -0
  1181. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0018_rename_userbookmark_bookmark.py +0 -0
  1182. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0019_delete_queuejob.py +0 -0
  1183. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0020_remove_search_tables.py +0 -0
  1184. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0021_bookmark_fit_to_choices_read_in_reverse.py +0 -0
  1185. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0022_bookmark_vertical_useractive_null_statuses.py +0 -0
  1186. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0023_rename_credit_creator_and_more.py +0 -0
  1187. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0024_comic_gtin_comic_story_arc_number.py +0 -0
  1188. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0025_add_story_arc_number.py +0 -0
  1189. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0026_comicbox_1.py +0 -0
  1190. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0027_import_order_and_covers.py +0 -0
  1191. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0028_telemeter.py +0 -0
  1192. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0029_comicfts.py +0 -0
  1193. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0030_nocase_collation_day_month_indexes_status_types.py +0 -0
  1194. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0031_adminflag_banner.py +0 -0
  1195. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0032_alter_librarianstatus_preactive.py +0 -0
  1196. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0033_alter_librarianstatus_status_type.py +0 -0
  1197. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0034_comicbox2.py +0 -0
  1198. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0035_fts_optmize.py +0 -0
  1199. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0036_alter_comic_path_alter_customcover_path_and_more.py +0 -0
  1200. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0037_redefine_reading_direction_filetype_choices.py +0 -0
  1201. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0038_settings_tables.py +0 -0
  1202. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0039_metron_age_rating_default_view_and_performance.py +0 -0
  1203. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0040_reset_global_cache_book.py +0 -0
  1204. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0041_cleanup_phantom_comic_as_folder_rows.py +0 -0
  1205. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0042_browser_table_view_and_favorites.py +0 -0
  1206. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0043_comicbox_tagging_defaults.py +0 -0
  1207. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0044_alter_librarianstatus_status_type.py +0 -0
  1208. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0045_library_read_only.py +0 -0
  1209. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0046_comicboxtaggingdefaults_rename_files.py +0 -0
  1210. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0047_oidc_settings.py +0 -0
  1211. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0048_community_rating_alternative_issue.py +0 -0
  1212. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0049_reprints.py +0 -0
  1213. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0050_comicboxtaggingdefaults_metron_key.py +0 -0
  1214. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0051_remove_comicboxtaggingdefaults_urls.py +0 -0
  1215. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0052_comicboxtaggingdefaults_comicvine_url.py +0 -0
  1216. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0053_comicbox_5_reprints_and_sort_memory.py +0 -0
  1217. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0054_post_v2_3_3_schema.py +0 -0
  1218. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0055_settings_defaults.py +0 -0
  1219. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0056_match_mode_ask.py +0 -0
  1220. {codex-2.5.5 → codex-2.5.7}/codex/migrations/0057_remove_pinned_settings.py +0 -0
  1221. {codex-2.5.5 → codex-2.5.7}/codex/migrations/__init__.py +0 -0
  1222. {codex-2.5.5 → codex-2.5.7}/codex/models/__init__.py +0 -0
  1223. {codex-2.5.5 → codex-2.5.7}/codex/models/age_rating.py +0 -0
  1224. {codex-2.5.5 → codex-2.5.7}/codex/models/auth.py +0 -0
  1225. {codex-2.5.5 → codex-2.5.7}/codex/models/base.py +0 -0
  1226. {codex-2.5.5 → codex-2.5.7}/codex/models/bookmark.py +0 -0
  1227. {codex-2.5.5 → codex-2.5.7}/codex/models/favorite.py +0 -0
  1228. {codex-2.5.5 → codex-2.5.7}/codex/models/fields.py +0 -0
  1229. {codex-2.5.5 → codex-2.5.7}/codex/models/functions.py +0 -0
  1230. {codex-2.5.5 → codex-2.5.7}/codex/models/identifier.py +0 -0
  1231. {codex-2.5.5 → codex-2.5.7}/codex/models/library.py +0 -0
  1232. {codex-2.5.5 → codex-2.5.7}/codex/models/paths.py +0 -0
  1233. {codex-2.5.5 → codex-2.5.7}/codex/models/query.py +0 -0
  1234. {codex-2.5.5 → codex-2.5.7}/codex/models/util.py +0 -0
  1235. {codex-2.5.5 → codex-2.5.7}/codex/oidc.py +0 -0
  1236. {codex-2.5.5 → codex-2.5.7}/codex/run.py +0 -0
  1237. {codex-2.5.5 → codex-2.5.7}/codex/serializers/README.md +0 -0
  1238. {codex-2.5.5 → codex-2.5.7}/codex/serializers/__init__.py +0 -0
  1239. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/__init__.py +0 -0
  1240. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/custom_cover.py +0 -0
  1241. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/doctor.py +0 -0
  1242. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/email.py +0 -0
  1243. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/flags.py +0 -0
  1244. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/groups.py +0 -0
  1245. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/libraries.py +0 -0
  1246. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/oidc.py +0 -0
  1247. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/pending_deletes.py +0 -0
  1248. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/settings_defaults.py +0 -0
  1249. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/stats.py +0 -0
  1250. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/tasks.py +0 -0
  1251. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/throttle.py +0 -0
  1252. {codex-2.5.5 → codex-2.5.7}/codex/serializers/admin/users.py +0 -0
  1253. {codex-2.5.5 → codex-2.5.7}/codex/serializers/auth.py +0 -0
  1254. {codex-2.5.5 → codex-2.5.7}/codex/serializers/browser/__init__.py +0 -0
  1255. {codex-2.5.5 → codex-2.5.7}/codex/serializers/browser/mixins.py +0 -0
  1256. {codex-2.5.5 → codex-2.5.7}/codex/serializers/browser/mtime.py +0 -0
  1257. {codex-2.5.5 → codex-2.5.7}/codex/serializers/browser/saved.py +0 -0
  1258. {codex-2.5.5 → codex-2.5.7}/codex/serializers/browser/settings.py +0 -0
  1259. {codex-2.5.5 → codex-2.5.7}/codex/serializers/fields/__init__.py +0 -0
  1260. {codex-2.5.5 → codex-2.5.7}/codex/serializers/fields/auth.py +0 -0
  1261. {codex-2.5.5 → codex-2.5.7}/codex/serializers/fields/base.py +0 -0
  1262. {codex-2.5.5 → codex-2.5.7}/codex/serializers/fields/collection.py +0 -0
  1263. {codex-2.5.5 → codex-2.5.7}/codex/serializers/fields/reader.py +0 -0
  1264. {codex-2.5.5 → codex-2.5.7}/codex/serializers/fields/sanitized.py +0 -0
  1265. {codex-2.5.5 → codex-2.5.7}/codex/serializers/fields/settings.py +0 -0
  1266. {codex-2.5.5 → codex-2.5.7}/codex/serializers/fields/stats.py +0 -0
  1267. {codex-2.5.5 → codex-2.5.7}/codex/serializers/homepage.py +0 -0
  1268. {codex-2.5.5 → codex-2.5.7}/codex/serializers/mixins.py +0 -0
  1269. {codex-2.5.5 → codex-2.5.7}/codex/serializers/models/__init__.py +0 -0
  1270. {codex-2.5.5 → codex-2.5.7}/codex/serializers/models/admin.py +0 -0
  1271. {codex-2.5.5 → codex-2.5.7}/codex/serializers/models/base.py +0 -0
  1272. {codex-2.5.5 → codex-2.5.7}/codex/serializers/models/bookmark.py +0 -0
  1273. {codex-2.5.5 → codex-2.5.7}/codex/serializers/models/collections.py +0 -0
  1274. {codex-2.5.5 → codex-2.5.7}/codex/serializers/models/comic.py +0 -0
  1275. {codex-2.5.5 → codex-2.5.7}/codex/serializers/models/named.py +0 -0
  1276. {codex-2.5.5 → codex-2.5.7}/codex/serializers/models/pycountry.py +0 -0
  1277. {codex-2.5.5 → codex-2.5.7}/codex/serializers/opds/__init__.py +0 -0
  1278. {codex-2.5.5 → codex-2.5.7}/codex/serializers/opds/authentication.py +0 -0
  1279. {codex-2.5.5 → codex-2.5.7}/codex/serializers/opds/urls.py +0 -0
  1280. {codex-2.5.5 → codex-2.5.7}/codex/serializers/opds/v1.py +0 -0
  1281. {codex-2.5.5 → codex-2.5.7}/codex/serializers/opds/v2/__init__.py +0 -0
  1282. {codex-2.5.5 → codex-2.5.7}/codex/serializers/opds/v2/facet.py +0 -0
  1283. {codex-2.5.5 → codex-2.5.7}/codex/serializers/opds/v2/feed.py +0 -0
  1284. {codex-2.5.5 → codex-2.5.7}/codex/serializers/opds/v2/links.py +0 -0
  1285. {codex-2.5.5 → codex-2.5.7}/codex/serializers/opds/v2/metadata.py +0 -0
  1286. {codex-2.5.5 → codex-2.5.7}/codex/serializers/opds/v2/progression.py +0 -0
  1287. {codex-2.5.5 → codex-2.5.7}/codex/serializers/opds/v2/publication.py +0 -0
  1288. {codex-2.5.5 → codex-2.5.7}/codex/serializers/opds/v2/unused.py +0 -0
  1289. {codex-2.5.5 → codex-2.5.7}/codex/serializers/reader.py +0 -0
  1290. {codex-2.5.5 → codex-2.5.7}/codex/serializers/redirect.py +0 -0
  1291. {codex-2.5.5 → codex-2.5.7}/codex/serializers/route.py +0 -0
  1292. {codex-2.5.5 → codex-2.5.7}/codex/serializers/settings.py +0 -0
  1293. {codex-2.5.5 → codex-2.5.7}/codex/serializers/versions.py +0 -0
  1294. {codex-2.5.5 → codex-2.5.7}/codex/settings/README.md +0 -0
  1295. {codex-2.5.5 → codex-2.5.7}/codex/settings/__init__.py +0 -0
  1296. {codex-2.5.5 → codex-2.5.7}/codex/settings/codex.toml.default +0 -0
  1297. {codex-2.5.5 → codex-2.5.7}/codex/settings/config.py +0 -0
  1298. {codex-2.5.5 → codex-2.5.7}/codex/settings/db.py +0 -0
  1299. {codex-2.5.5 → codex-2.5.7}/codex/settings/hypercorn_migrate.py +0 -0
  1300. {codex-2.5.5 → codex-2.5.7}/codex/settings/secret_key.py +0 -0
  1301. {codex-2.5.5 → codex-2.5.7}/codex/settings/servestatic.py +0 -0
  1302. {codex-2.5.5 → codex-2.5.7}/codex/settings/timezone.py +0 -0
  1303. {codex-2.5.5 → codex-2.5.7}/codex/signals/__init__.py +0 -0
  1304. {codex-2.5.5 → codex-2.5.7}/codex/signals/django_signals.py +0 -0
  1305. {codex-2.5.5 → codex-2.5.7}/codex/signals/os_signals.py +0 -0
  1306. {codex-2.5.5 → codex-2.5.7}/codex/startup/__init__.py +0 -0
  1307. {codex-2.5.5 → codex-2.5.7}/codex/startup/db.py +0 -0
  1308. {codex-2.5.5 → codex-2.5.7}/codex/startup/loguru.py +0 -0
  1309. {codex-2.5.5 → codex-2.5.7}/codex/startup/registration.py +0 -0
  1310. {codex-2.5.5 → codex-2.5.7}/codex/static/account/js/account.js +0 -0
  1311. {codex-2.5.5 → codex-2.5.7}/codex/static/account/js/account.js.br +0 -0
  1312. {codex-2.5.5 → codex-2.5.7}/codex/static/account/js/account.js.gz +0 -0
  1313. {codex-2.5.5 → codex-2.5.7}/codex/static/account/js/onload.js +0 -0
  1314. {codex-2.5.5 → codex-2.5.7}/codex/static/account/js/onload.js.br +0 -0
  1315. {codex-2.5.5 → codex-2.5.7}/codex/static/account/js/onload.js.gz +0 -0
  1316. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VCard-dv-Dc592.css +0 -0
  1317. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VCard-dv-Dc592.css.br +0 -0
  1318. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VCard-dv-Dc592.css.gz +0 -0
  1319. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VCheckbox-ChRKi1kj.css +0 -0
  1320. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VCheckbox-ChRKi1kj.css.br +0 -0
  1321. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VCheckbox-ChRKi1kj.css.gz +0 -0
  1322. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VChip-pMOXPdio.css +0 -0
  1323. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VChip-pMOXPdio.css.br +0 -0
  1324. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VChip-pMOXPdio.css.gz +0 -0
  1325. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VCombobox-C3ha-zP2.css +0 -0
  1326. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VCombobox-C3ha-zP2.css.br +0 -0
  1327. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VCombobox-C3ha-zP2.css.gz +0 -0
  1328. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VContainer-ku9EbwM-.css +0 -0
  1329. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VContainer-ku9EbwM-.css.br +0 -0
  1330. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VContainer-ku9EbwM-.css.gz +0 -0
  1331. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VDataTableVirtual-BgzcmwBb.css +0 -0
  1332. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VDataTableVirtual-BgzcmwBb.css.br +0 -0
  1333. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VDataTableVirtual-BgzcmwBb.css.gz +0 -0
  1334. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VDivider-DvkP_iX7.css +0 -0
  1335. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VDivider-DvkP_iX7.css.br +0 -0
  1336. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VDivider-DvkP_iX7.css.gz +0 -0
  1337. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VExpansionPanels-cvCWEkWz.css +0 -0
  1338. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VExpansionPanels-cvCWEkWz.css.br +0 -0
  1339. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VExpansionPanels-cvCWEkWz.css.gz +0 -0
  1340. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VMenu-AbtjXrI6.css +0 -0
  1341. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VMenu-AbtjXrI6.css.br +0 -0
  1342. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VMenu-AbtjXrI6.css.gz +0 -0
  1343. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VOverlay-DG-PukqI.css +0 -0
  1344. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VOverlay-DG-PukqI.css.br +0 -0
  1345. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VOverlay-DG-PukqI.css.gz +0 -0
  1346. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VRadioGroup-C9f4tbih.css +0 -0
  1347. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VRadioGroup-C9f4tbih.css.br +0 -0
  1348. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VRadioGroup-C9f4tbih.css.gz +0 -0
  1349. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VSnackbar-BjpINqLT.css +0 -0
  1350. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VSnackbar-BjpINqLT.css.br +0 -0
  1351. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VSnackbar-BjpINqLT.css.gz +0 -0
  1352. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VSpacer-DfbUir7X.css +0 -0
  1353. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VTable-LbK8_KkU.css +0 -0
  1354. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VTable-LbK8_KkU.css.br +0 -0
  1355. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VTable-LbK8_KkU.css.gz +0 -0
  1356. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VTextField-DVt19ZIG.css +0 -0
  1357. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VTextField-DVt19ZIG.css.br +0 -0
  1358. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VTextField-DVt19ZIG.css.gz +0 -0
  1359. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VTooltip-BI1qRHEp.css +0 -0
  1360. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VTooltip-BI1qRHEp.css.br +0 -0
  1361. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/VTooltip-BI1qRHEp.css.gz +0 -0
  1362. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/_plugin-vue_export-helper-BDNMzG2s.js +0 -0
  1363. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/action-bar-BBtuZ452.css +0 -0
  1364. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/action-bar-BBtuZ452.css.br +0 -0
  1365. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/action-bar-BBtuZ452.css.gz +0 -0
  1366. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-DS1DKoL9.css +0 -0
  1367. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-DS1DKoL9.css.br +0 -0
  1368. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-DS1DKoL9.css.gz +0 -0
  1369. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-menu-De57bLSm.css +0 -0
  1370. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-menu-De57bLSm.css.br +0 -0
  1371. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-menu-De57bLSm.css.gz +0 -0
  1372. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-section-DutEJrAC.css +0 -0
  1373. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-section-DutEJrAC.css.br +0 -0
  1374. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-section-DutEJrAC.css.gz +0 -0
  1375. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-settings-button-errors-8nyZgICC.css +0 -0
  1376. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-settings-button-errors-8nyZgICC.css.br +0 -0
  1377. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-settings-button-errors-8nyZgICC.css.gz +0 -0
  1378. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/admin-settings-button-progress-DJAsUqRu.css +0 -0
  1379. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/auth-tab-CpvNjZwL.css +0 -0
  1380. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/auth-tab-CpvNjZwL.css.br +0 -0
  1381. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/auth-tab-CpvNjZwL.css.gz +0 -0
  1382. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/base-CLy6lQ2j.js +0 -0
  1383. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/base-CLy6lQ2j.js.br +0 -0
  1384. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/base-CLy6lQ2j.js.gz +0 -0
  1385. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/browser-table-column-picker-B-KmTQaR.css +0 -0
  1386. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/browser-table-column-picker-B-KmTQaR.css.br +0 -0
  1387. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/browser-table-column-picker-B-KmTQaR.css.gz +0 -0
  1388. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/clipboard-BJt098sL.css +0 -0
  1389. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/clipboard-BJt098sL.css.br +0 -0
  1390. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/clipboard-BJt098sL.css.gz +0 -0
  1391. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/close-button-3oqF5yoQ.css +0 -0
  1392. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/close-button-3oqF5yoQ.css.br +0 -0
  1393. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/codex-list-item-8h79A4kT.css +0 -0
  1394. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/codex-list-item-8h79A4kT.css.br +0 -0
  1395. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/codex-list-item-8h79A4kT.css.gz +0 -0
  1396. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/confirm-dialog-D5_8m9zi.css +0 -0
  1397. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/confirm-dialog-D5_8m9zi.css.br +0 -0
  1398. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/confirm-dialog-D5_8m9zi.css.gz +0 -0
  1399. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/confirm-footer-qa14x_AQ.css +0 -0
  1400. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/confirm-footer-qa14x_AQ.css.br +0 -0
  1401. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/cover-popup-BqgJF1ur.css +0 -0
  1402. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/cover-popup-BqgJF1ur.css.br +0 -0
  1403. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/cover-popup-BqgJF1ur.css.gz +0 -0
  1404. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/custom-covers-tab-B5uHBUI4.css +0 -0
  1405. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/custom-covers-tab-B5uHBUI4.css.br +0 -0
  1406. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/custom-covers-tab-B5uHBUI4.css.gz +0 -0
  1407. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/datetime-6KSUmkh6.js +0 -0
  1408. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/datetime-6KSUmkh6.js.br +0 -0
  1409. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/datetime-6KSUmkh6.js.gz +0 -0
  1410. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/datetime-column-D6IIm0tQ.css +0 -0
  1411. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/defaults-tab-cZjDQDaY.css +0 -0
  1412. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/defaults-tab-cZjDQDaY.css.br +0 -0
  1413. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/defaults-tab-cZjDQDaY.css.gz +0 -0
  1414. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/delete-row-dialog-CT_O7Q6B.css +0 -0
  1415. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/delete-row-dialog-CT_O7Q6B.css.br +0 -0
  1416. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/dist-Kll2twSG.js +0 -0
  1417. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/dist-Kll2twSG.js.br +0 -0
  1418. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/dist-Kll2twSG.js.gz +0 -0
  1419. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/dist.es2015-CD1KUkvy.js +0 -0
  1420. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/dist.es2015-CD1KUkvy.js.br +0 -0
  1421. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/dist.es2015-CD1KUkvy.js.gz +0 -0
  1422. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/dist.es2015-Cy0bzSGI.js +0 -0
  1423. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/dist.es2015-Cy0bzSGI.js.br +0 -0
  1424. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/dist.es2015-Cy0bzSGI.js.gz +0 -0
  1425. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/doctor-tab-0x2d9twH.css +0 -0
  1426. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/doctor-tab-0x2d9twH.css.br +0 -0
  1427. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/doctor-tab-0x2d9twH.css.gz +0 -0
  1428. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/easing-BKlyjday.js +0 -0
  1429. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/easing-BKlyjday.js.br +0 -0
  1430. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/easing-BKlyjday.js.gz +0 -0
  1431. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/email-tab-ai9a1pVt.css +0 -0
  1432. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/email-tab-ai9a1pVt.css.br +0 -0
  1433. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/email-tab-ai9a1pVt.css.gz +0 -0
  1434. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/expand-toggle-DB2JNmpB.css +0 -0
  1435. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/expand-toggle-DB2JNmpB.css.br +0 -0
  1436. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/expand-toggle-DB2JNmpB.css.gz +0 -0
  1437. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/flag-card-DUj78_QG.css +0 -0
  1438. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/flag-card-DUj78_QG.css.br +0 -0
  1439. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/flag-card-DUj78_QG.css.gz +0 -0
  1440. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/group-tab-CkJvWVyy.css +0 -0
  1441. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/group-tab-CkJvWVyy.css.br +0 -0
  1442. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/group-tab-CkJvWVyy.css.gz +0 -0
  1443. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/http-error-B4FHKAcr.css +0 -0
  1444. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/http-error-B4FHKAcr.css.br +0 -0
  1445. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/http-error-B4FHKAcr.css.gz +0 -0
  1446. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/job-tab-DTLS_Xg3.css +0 -0
  1447. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/job-tab-DTLS_Xg3.css.br +0 -0
  1448. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/job-tab-DTLS_Xg3.css.gz +0 -0
  1449. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/library-tab-DXxbsPUa.css +0 -0
  1450. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/library-tab-DXxbsPUa.css.br +0 -0
  1451. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/library-tab-DXxbsPUa.css.gz +0 -0
  1452. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/limits-BejchfvK.js +0 -0
  1453. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/limits-BejchfvK.js.br +0 -0
  1454. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/limits-BejchfvK.js.gz +0 -0
  1455. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/main-BT7sVvWb.css +0 -0
  1456. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/main-BT7sVvWb.css.br +0 -0
  1457. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/main-BT7sVvWb.css.gz +0 -0
  1458. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/pdf-doc-BY-0-glL.css +0 -0
  1459. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/pdf-doc-BY-0-glL.css.br +0 -0
  1460. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/pdf-doc-BY-0-glL.css.gz +0 -0
  1461. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/reader-C3kJT4v8.css +0 -0
  1462. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/reader-C3kJT4v8.css.br +0 -0
  1463. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/reader-C3kJT4v8.css.gz +0 -0
  1464. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/reader-map-BVK2B5JV.js +0 -0
  1465. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/reader-map-BVK2B5JV.js.br +0 -0
  1466. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/reader-map-BVK2B5JV.js.gz +0 -0
  1467. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/reader-settings-controls-x0mnhxBq.css +0 -0
  1468. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/reader-settings-controls-x0mnhxBq.css.br +0 -0
  1469. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/relation-chips-BjO1ttEA.css +0 -0
  1470. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/relation-chips-BjO1ttEA.css.br +0 -0
  1471. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/relation-chips-BjO1ttEA.css.gz +0 -0
  1472. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/reset-password-confirm-Cw6u7xuL.css +0 -0
  1473. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/reset-password-confirm-Cw6u7xuL.css.br +0 -0
  1474. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/reset-password-confirm-Cw6u7xuL.css.gz +0 -0
  1475. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/restore-tab-BUaEpQgP.css +0 -0
  1476. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/restore-tab-BUaEpQgP.css.br +0 -0
  1477. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/restore-tab-BUaEpQgP.css.gz +0 -0
  1478. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/settings-tab-Dd3cBbi9.css +0 -0
  1479. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/settings-tab-Dd3cBbi9.css.br +0 -0
  1480. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/settings-tab-Dd3cBbi9.css.gz +0 -0
  1481. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/source-labels-CLbVHwH4.js +0 -0
  1482. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/sso-error-irWbDBI-.css +0 -0
  1483. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/sso-error-irWbDBI-.css.br +0 -0
  1484. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/sso-error-irWbDBI-.css.gz +0 -0
  1485. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/stats-tab-BbivcwEc.css +0 -0
  1486. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/stats-tab-BbivcwEc.css.br +0 -0
  1487. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/stats-tab-BbivcwEc.css.gz +0 -0
  1488. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/submit-footer-DxBt30-N.css +0 -0
  1489. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/submit-footer-DxBt30-N.css.br +0 -0
  1490. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/submit-footer-DxBt30-N.css.gz +0 -0
  1491. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/tagging-choices-Cz8PJN0_.js +0 -0
  1492. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/tagging-choices-Cz8PJN0_.js.br +0 -0
  1493. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/tagging-choices-Cz8PJN0_.js.gz +0 -0
  1494. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/user-tab-R3NglX8t.css +0 -0
  1495. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/user-tab-R3NglX8t.css.br +0 -0
  1496. {codex-2.5.5 → codex-2.5.7}/codex/static/assets/user-tab-R3NglX8t.css.gz +0 -0
  1497. {codex-2.5.5 → codex-2.5.7}/codex/static/img/comic-165.webp +0 -0
  1498. {codex-2.5.5 → codex-2.5.7}/codex/static/img/comic.svg +0 -0
  1499. {codex-2.5.5 → codex-2.5.7}/codex/static/img/comic.svg.br +0 -0
  1500. {codex-2.5.5 → codex-2.5.7}/codex/static/img/comic.svg.gz +0 -0
  1501. {codex-2.5.5 → codex-2.5.7}/codex/static/img/folder.svg +0 -0
  1502. {codex-2.5.5 → codex-2.5.7}/codex/static/img/folder.svg.br +0 -0
  1503. {codex-2.5.5 → codex-2.5.7}/codex/static/img/folder.svg.gz +0 -0
  1504. {codex-2.5.5 → codex-2.5.7}/codex/static/img/imprint.svg +0 -0
  1505. {codex-2.5.5 → codex-2.5.7}/codex/static/img/imprint.svg.br +0 -0
  1506. {codex-2.5.5 → codex-2.5.7}/codex/static/img/imprint.svg.gz +0 -0
  1507. {codex-2.5.5 → codex-2.5.7}/codex/static/img/logo-32.webp +0 -0
  1508. {codex-2.5.5 → codex-2.5.7}/codex/static/img/logo-maskable-180.webp +0 -0
  1509. {codex-2.5.5 → codex-2.5.7}/codex/static/img/logo-maskable.svg +0 -0
  1510. {codex-2.5.5 → codex-2.5.7}/codex/static/img/logo-maskable.svg.br +0 -0
  1511. {codex-2.5.5 → codex-2.5.7}/codex/static/img/logo-maskable.svg.gz +0 -0
  1512. {codex-2.5.5 → codex-2.5.7}/codex/static/img/logo.svg +0 -0
  1513. {codex-2.5.5 → codex-2.5.7}/codex/static/img/logo.svg.br +0 -0
  1514. {codex-2.5.5 → codex-2.5.7}/codex/static/img/logo.svg.gz +0 -0
  1515. {codex-2.5.5 → codex-2.5.7}/codex/static/img/publisher.svg +0 -0
  1516. {codex-2.5.5 → codex-2.5.7}/codex/static/img/publisher.svg.br +0 -0
  1517. {codex-2.5.5 → codex-2.5.7}/codex/static/img/publisher.svg.gz +0 -0
  1518. {codex-2.5.5 → codex-2.5.7}/codex/static/img/series.svg +0 -0
  1519. {codex-2.5.5 → codex-2.5.7}/codex/static/img/series.svg.br +0 -0
  1520. {codex-2.5.5 → codex-2.5.7}/codex/static/img/series.svg.gz +0 -0
  1521. {codex-2.5.5 → codex-2.5.7}/codex/static/img/story-arc.svg +0 -0
  1522. {codex-2.5.5 → codex-2.5.7}/codex/static/img/story-arc.svg.br +0 -0
  1523. {codex-2.5.5 → codex-2.5.7}/codex/static/img/story-arc.svg.gz +0 -0
  1524. {codex-2.5.5 → codex-2.5.7}/codex/static/img/volume.svg +0 -0
  1525. {codex-2.5.5 → codex-2.5.7}/codex/static/img/volume.svg.br +0 -0
  1526. {codex-2.5.5 → codex-2.5.7}/codex/static/img/volume.svg.gz +0 -0
  1527. {codex-2.5.5 → codex-2.5.7}/codex/static/pwa/offline.html +0 -0
  1528. {codex-2.5.5 → codex-2.5.7}/codex/static/pwa/offline.html.br +0 -0
  1529. {codex-2.5.5 → codex-2.5.7}/codex/static/pwa/offline.html.gz +0 -0
  1530. {codex-2.5.5 → codex-2.5.7}/codex/static/robots.txt +0 -0
  1531. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/.picopt_treestamps.yaml +0 -0
  1532. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/comic-165.webp +0 -0
  1533. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/comic.svg +0 -0
  1534. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/folder.svg +0 -0
  1535. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/imprint.svg +0 -0
  1536. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/logo-32.webp +0 -0
  1537. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/logo-maskable-180.webp +0 -0
  1538. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/logo-maskable.svg +0 -0
  1539. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/logo.svg +0 -0
  1540. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/publisher.svg +0 -0
  1541. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/series.svg +0 -0
  1542. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/story-arc.svg +0 -0
  1543. {codex-2.5.5 → codex-2.5.7}/codex/static_src/img/volume.svg +0 -0
  1544. {codex-2.5.5 → codex-2.5.7}/codex/static_src/pwa/offline.html +0 -0
  1545. {codex-2.5.5 → codex-2.5.7}/codex/static_src/robots.txt +0 -0
  1546. {codex-2.5.5 → codex-2.5.7}/codex/templates/README.md +0 -0
  1547. {codex-2.5.5 → codex-2.5.7}/codex/templates/headers-icons.html +0 -0
  1548. {codex-2.5.5 → codex-2.5.7}/codex/templates/headers-script-globals.html +0 -0
  1549. {codex-2.5.5 → codex-2.5.7}/codex/templates/index.html +0 -0
  1550. {codex-2.5.5 → codex-2.5.7}/codex/templates/opds_v1/index.xml +0 -0
  1551. {codex-2.5.5 → codex-2.5.7}/codex/templates/opds_v1/opensearch_v1.xml +0 -0
  1552. {codex-2.5.5 → codex-2.5.7}/codex/templates/pwa/headers.html +0 -0
  1553. {codex-2.5.5 → codex-2.5.7}/codex/templates/pwa/manifest.webmanifest +0 -0
  1554. {codex-2.5.5 → codex-2.5.7}/codex/templates/pwa/serviceworker-register.js +0 -0
  1555. {codex-2.5.5 → codex-2.5.7}/codex/templates/pwa/serviceworker.js +0 -0
  1556. {codex-2.5.5 → codex-2.5.7}/codex/templates/rest_registration/register/body.txt +0 -0
  1557. {codex-2.5.5 → codex-2.5.7}/codex/templates/rest_registration/register/subject.txt +0 -0
  1558. {codex-2.5.5 → codex-2.5.7}/codex/templates/rest_registration/reset_password/body.html +0 -0
  1559. {codex-2.5.5 → codex-2.5.7}/codex/templates/rest_registration/reset_password/body.txt +0 -0
  1560. {codex-2.5.5 → codex-2.5.7}/codex/templates/rest_registration/reset_password/subject.txt +0 -0
  1561. {codex-2.5.5 → codex-2.5.7}/codex/throttling.py +0 -0
  1562. {codex-2.5.5 → codex-2.5.7}/codex/urls/__init__.py +0 -0
  1563. {codex-2.5.5 → codex-2.5.7}/codex/urls/api/__init__.py +0 -0
  1564. {codex-2.5.5 → codex-2.5.7}/codex/urls/api/root.py +0 -0
  1565. {codex-2.5.5 → codex-2.5.7}/codex/urls/api/v4/__init__.py +0 -0
  1566. {codex-2.5.5 → codex-2.5.7}/codex/urls/api/v4/admin.py +0 -0
  1567. {codex-2.5.5 → codex-2.5.7}/codex/urls/api/v4/auth.py +0 -0
  1568. {codex-2.5.5 → codex-2.5.7}/codex/urls/api/v4/browse.py +0 -0
  1569. {codex-2.5.5 → codex-2.5.7}/codex/urls/api/v4/comics.py +0 -0
  1570. {codex-2.5.5 → codex-2.5.7}/codex/urls/api/v4/favorites.py +0 -0
  1571. {codex-2.5.5 → codex-2.5.7}/codex/urls/api/v4/reader.py +0 -0
  1572. {codex-2.5.5 → codex-2.5.7}/codex/urls/app.py +0 -0
  1573. {codex-2.5.5 → codex-2.5.7}/codex/urls/const.py +0 -0
  1574. {codex-2.5.5 → codex-2.5.7}/codex/urls/converters.py +0 -0
  1575. {codex-2.5.5 → codex-2.5.7}/codex/urls/opds/__init__.py +0 -0
  1576. {codex-2.5.5 → codex-2.5.7}/codex/urls/opds/authentication.py +0 -0
  1577. {codex-2.5.5 → codex-2.5.7}/codex/urls/opds/binary.py +0 -0
  1578. {codex-2.5.5 → codex-2.5.7}/codex/urls/opds/root.py +0 -0
  1579. {codex-2.5.5 → codex-2.5.7}/codex/urls/opds/v1.py +0 -0
  1580. {codex-2.5.5 → codex-2.5.7}/codex/urls/opds/v2.py +0 -0
  1581. {codex-2.5.5 → codex-2.5.7}/codex/urls/pwa.py +0 -0
  1582. {codex-2.5.5 → codex-2.5.7}/codex/urls/root.py +0 -0
  1583. {codex-2.5.5 → codex-2.5.7}/codex/urls/spectacular.py +0 -0
  1584. {codex-2.5.5 → codex-2.5.7}/codex/user_data/__init__.py +0 -0
  1585. {codex-2.5.5 → codex-2.5.7}/codex/user_data/backups.py +0 -0
  1586. {codex-2.5.5 → codex-2.5.7}/codex/user_data/dump.py +0 -0
  1587. {codex-2.5.5 → codex-2.5.7}/codex/user_data/identifiers.py +0 -0
  1588. {codex-2.5.5 → codex-2.5.7}/codex/user_data/store.py +0 -0
  1589. {codex-2.5.5 → codex-2.5.7}/codex/version.py +0 -0
  1590. {codex-2.5.5 → codex-2.5.7}/codex/views/README.md +0 -0
  1591. {codex-2.5.5 → codex-2.5.7}/codex/views/__init__.py +0 -0
  1592. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/__init__.py +0 -0
  1593. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/age_rating_metron.py +0 -0
  1594. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/api_key.py +0 -0
  1595. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/auth.py +0 -0
  1596. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/custom_cover.py +0 -0
  1597. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/doctor.py +0 -0
  1598. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/dump_user_data.py +0 -0
  1599. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/email.py +0 -0
  1600. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/failed_imports_seen.py +0 -0
  1601. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/flag.py +0 -0
  1602. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/group.py +0 -0
  1603. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/identifier_parse.py +0 -0
  1604. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/library.py +0 -0
  1605. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/oidc.py +0 -0
  1606. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/pending_deletes.py +0 -0
  1607. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/permissions.py +0 -0
  1608. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/restore_user_data.py +0 -0
  1609. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/settings_defaults.py +0 -0
  1610. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/settings_defaults_catchup.py +0 -0
  1611. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/stats.py +0 -0
  1612. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/tag_write_errors.py +0 -0
  1613. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/tagging_defaults.py +0 -0
  1614. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/tagwrite.py +0 -0
  1615. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/tasks.py +0 -0
  1616. {codex-2.5.5 → codex-2.5.7}/codex/views/admin/throttle.py +0 -0
  1617. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/__init__.py +0 -0
  1618. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/annotate/__init__.py +0 -0
  1619. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/annotate/bookmark.py +0 -0
  1620. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/annotate/card.py +0 -0
  1621. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/annotate/cover.py +0 -0
  1622. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/annotate/order.py +0 -0
  1623. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/bookmark.py +0 -0
  1624. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/browser.py +0 -0
  1625. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/collection_mtime.py +0 -0
  1626. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/columns.py +0 -0
  1627. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/cover.py +0 -0
  1628. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/download.py +0 -0
  1629. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/filters/__init__.py +0 -0
  1630. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/filters/bookmark.py +0 -0
  1631. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/filters/collection.py +0 -0
  1632. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/filters/search/__init__.py +0 -0
  1633. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/filters/search/field/__init__.py +0 -0
  1634. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/filters/search/field/expression.py +0 -0
  1635. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/filters/search/field/filter.py +0 -0
  1636. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/filters/search/field/parse.py +0 -0
  1637. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/filters/search/fts.py +0 -0
  1638. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/force_update.py +0 -0
  1639. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/intersections.py +0 -0
  1640. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/metadata/__init__.py +0 -0
  1641. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/metadata/collection_list.py +0 -0
  1642. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/metadata/copy_intersections.py +0 -0
  1643. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/metadata/query_intersections.py +0 -0
  1644. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/mtime.py +0 -0
  1645. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/order_by.py +0 -0
  1646. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/page_in_bounds.py +0 -0
  1647. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/paginate.py +0 -0
  1648. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/params.py +0 -0
  1649. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/saved_settings.py +0 -0
  1650. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/settings.py +0 -0
  1651. {codex-2.5.5 → codex-2.5.7}/codex/views/browser/validate.py +0 -0
  1652. {codex-2.5.5 → codex-2.5.7}/codex/views/const.py +0 -0
  1653. {codex-2.5.5 → codex-2.5.7}/codex/views/download.py +0 -0
  1654. {codex-2.5.5 → codex-2.5.7}/codex/views/envelope.py +0 -0
  1655. {codex-2.5.5 → codex-2.5.7}/codex/views/error.py +0 -0
  1656. {codex-2.5.5 → codex-2.5.7}/codex/views/exceptions.py +0 -0
  1657. {codex-2.5.5 → codex-2.5.7}/codex/views/favorites.py +0 -0
  1658. {codex-2.5.5 → codex-2.5.7}/codex/views/frontend.py +0 -0
  1659. {codex-2.5.5 → codex-2.5.7}/codex/views/healthcheck.py +0 -0
  1660. {codex-2.5.5 → codex-2.5.7}/codex/views/lazy_import.py +0 -0
  1661. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/__init__.py +0 -0
  1662. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/auth.py +0 -0
  1663. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/authentication/__init__.py +0 -0
  1664. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/authentication/v1.py +0 -0
  1665. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/binary.py +0 -0
  1666. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/const.py +0 -0
  1667. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/error.py +0 -0
  1668. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/feed.py +0 -0
  1669. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/metadata.py +0 -0
  1670. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/opensearch/__init__.py +0 -0
  1671. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/opensearch/v1.py +0 -0
  1672. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/route.py +0 -0
  1673. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/settings.py +0 -0
  1674. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/start.py +0 -0
  1675. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/urls.py +0 -0
  1676. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/user_agent.py +0 -0
  1677. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v1/__init__.py +0 -0
  1678. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v1/const.py +0 -0
  1679. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v1/entry/__init__.py +0 -0
  1680. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v1/entry/entry.py +0 -0
  1681. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v1/entry/links.py +0 -0
  1682. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v1/facets.py +0 -0
  1683. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v1/feed.py +0 -0
  1684. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v1/links.py +0 -0
  1685. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v2/__init__.py +0 -0
  1686. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v2/const.py +0 -0
  1687. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v2/feed/__init__.py +0 -0
  1688. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v2/feed/feed_links.py +0 -0
  1689. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v2/feed/groups.py +0 -0
  1690. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v2/feed/links.py +0 -0
  1691. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v2/feed/publications.py +0 -0
  1692. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v2/href.py +0 -0
  1693. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v2/manifest.py +0 -0
  1694. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v2/progression.py +0 -0
  1695. {codex-2.5.5 → codex-2.5.7}/codex/views/opds/v2/renderers.py +0 -0
  1696. {codex-2.5.5 → codex-2.5.7}/codex/views/pagination.py +0 -0
  1697. {codex-2.5.5 → codex-2.5.7}/codex/views/pwa.py +0 -0
  1698. {codex-2.5.5 → codex-2.5.7}/codex/views/reader/__init__.py +0 -0
  1699. {codex-2.5.5 → codex-2.5.7}/codex/views/reader/_archive_cache.py +0 -0
  1700. {codex-2.5.5 → codex-2.5.7}/codex/views/reader/arcs.py +0 -0
  1701. {codex-2.5.5 → codex-2.5.7}/codex/views/reader/page.py +0 -0
  1702. {codex-2.5.5 → codex-2.5.7}/codex/views/reader/params.py +0 -0
  1703. {codex-2.5.5 → codex-2.5.7}/codex/views/reader/reader.py +0 -0
  1704. {codex-2.5.5 → codex-2.5.7}/codex/views/reader/settings.py +0 -0
  1705. {codex-2.5.5 → codex-2.5.7}/codex/views/register.py +0 -0
  1706. {codex-2.5.5 → codex-2.5.7}/codex/views/reset_password.py +0 -0
  1707. {codex-2.5.5 → codex-2.5.7}/codex/views/session.py +0 -0
  1708. {codex-2.5.5 → codex-2.5.7}/codex/views/template.py +0 -0
  1709. {codex-2.5.5 → codex-2.5.7}/codex/views/util.py +0 -0
  1710. {codex-2.5.5 → codex-2.5.7}/codex/views/version.py +0 -0
  1711. {codex-2.5.5 → codex-2.5.7}/codex/websockets/README.md +0 -0
  1712. {codex-2.5.5 → codex-2.5.7}/codex/websockets/__init__.py +0 -0
  1713. {codex-2.5.5 → codex-2.5.7}/codex/websockets/consumers.py +0 -0
  1714. {codex-2.5.5 → codex-2.5.7}/codex/websockets/listener.py +0 -0
  1715. {codex-2.5.5 → codex-2.5.7}/codex/websockets/mp_queue.py +0 -0
  1716. {codex-2.5.5 → codex-2.5.7}/codex/websockets/payloads.py +0 -0
  1717. {codex-2.5.5 → codex-2.5.7}/codex/xz.py +0 -0
  1718. {codex-2.5.5 → codex-2.5.7}/compose.yaml +0 -0
  1719. {codex-2.5.5 → codex-2.5.7}/docs/DOCKER.md +0 -0
  1720. {codex-2.5.5 → codex-2.5.7}/docs/README.md +0 -0
  1721. {codex-2.5.5 → codex-2.5.7}/docs/WINDOWS.md +0 -0
  1722. {codex-2.5.5 → codex-2.5.7}/docs/codex/img/logo.svg +0 -0
  1723. {codex-2.5.5 → codex-2.5.7}/docs/docs/DOCKER.md +0 -0
  1724. {codex-2.5.5 → codex-2.5.7}/docs/docs/WINDOWS.md +0 -0
  1725. {codex-2.5.5 → codex-2.5.7}/docs/docs/strange.jpg +0 -0
  1726. {codex-2.5.5 → codex-2.5.7}/docs/requirements.txt +0 -0
  1727. {codex-2.5.5 → codex-2.5.7}/docs/strange.jpg +0 -0
  1728. {codex-2.5.5 → codex-2.5.7}/docs/style.css +0 -0
  1729. {codex-2.5.5 → codex-2.5.7}/docs/style.material.css +0 -0
  1730. {codex-2.5.5 → codex-2.5.7}/docs/style.mkdocs.css +0 -0
  1731. {codex-2.5.5 → codex-2.5.7}/docs/style.readthedocs.css +0 -0
  1732. {codex-2.5.5 → codex-2.5.7}/eslint.config.js +0 -0
  1733. {codex-2.5.5 → codex-2.5.7}/frontend/.gitignore +0 -0
  1734. {codex-2.5.5 → codex-2.5.7}/frontend/.npmrc +0 -0
  1735. {codex-2.5.5 → codex-2.5.7}/frontend/.prettierignore +0 -0
  1736. {codex-2.5.5 → codex-2.5.7}/frontend/.shellcheckrc +0 -0
  1737. {codex-2.5.5 → codex-2.5.7}/frontend/.shellignore +0 -0
  1738. {codex-2.5.5 → codex-2.5.7}/frontend/DESIGN.md +0 -0
  1739. {codex-2.5.5 → codex-2.5.7}/frontend/Makefile +0 -0
  1740. {codex-2.5.5 → codex-2.5.7}/frontend/README.md +0 -0
  1741. {codex-2.5.5 → codex-2.5.7}/frontend/bin/_lib.sh +0 -0
  1742. {codex-2.5.5 → codex-2.5.7}/frontend/bin/dev-server.sh +0 -0
  1743. {codex-2.5.5 → codex-2.5.7}/frontend/bin/find-files.sh +0 -0
  1744. {codex-2.5.5 → codex-2.5.7}/frontend/bin/find-sh.sh +0 -0
  1745. {codex-2.5.5 → codex-2.5.7}/frontend/bin/fix.sh +0 -0
  1746. {codex-2.5.5 → codex-2.5.7}/frontend/bin/kill-eslint_d.sh +0 -0
  1747. {codex-2.5.5 → codex-2.5.7}/frontend/bin/lint.sh +0 -0
  1748. {codex-2.5.5 → codex-2.5.7}/frontend/bin/release-tag.sh +0 -0
  1749. {codex-2.5.5 → codex-2.5.7}/frontend/bin/roman.py +0 -0
  1750. {codex-2.5.5 → codex-2.5.7}/frontend/bin/sh-tools.sh +0 -0
  1751. {codex-2.5.5 → codex-2.5.7}/frontend/bin/sort-ignore.sh +0 -0
  1752. {codex-2.5.5 → codex-2.5.7}/frontend/bin/update-deps-node.sh +0 -0
  1753. {codex-2.5.5 → codex-2.5.7}/frontend/bin/version-node.sh +0 -0
  1754. {codex-2.5.5 → codex-2.5.7}/frontend/cfg/codex-frontend.mk +0 -0
  1755. {codex-2.5.5 → codex-2.5.7}/frontend/cfg/common.mk +0 -0
  1756. {codex-2.5.5 → codex-2.5.7}/frontend/cfg/help.mk +0 -0
  1757. {codex-2.5.5 → codex-2.5.7}/frontend/cfg/node.mk +0 -0
  1758. {codex-2.5.5 → codex-2.5.7}/frontend/jsconfig.json +0 -0
  1759. {codex-2.5.5 → codex-2.5.7}/frontend/src/admin.vue +0 -0
  1760. {codex-2.5.5 → codex-2.5.7}/frontend/src/api/v4/abortable.js +0 -0
  1761. {codex-2.5.5 → codex-2.5.7}/frontend/src/api/v4/admin.js +0 -0
  1762. {codex-2.5.5 → codex-2.5.7}/frontend/src/api/v4/auth.js +0 -0
  1763. {codex-2.5.5 → codex-2.5.7}/frontend/src/api/v4/base.js +0 -0
  1764. {codex-2.5.5 → codex-2.5.7}/frontend/src/api/v4/browser.js +0 -0
  1765. {codex-2.5.5 → codex-2.5.7}/frontend/src/api/v4/common.js +0 -0
  1766. {codex-2.5.5 → codex-2.5.7}/frontend/src/api/v4/cover-probe.js +0 -0
  1767. {codex-2.5.5 → codex-2.5.7}/frontend/src/api/v4/favorites.js +0 -0
  1768. {codex-2.5.5 → codex-2.5.7}/frontend/src/api/v4/notify.js +0 -0
  1769. {codex-2.5.5 → codex-2.5.7}/frontend/src/api/v4/reader.js +0 -0
  1770. {codex-2.5.5 → codex-2.5.7}/frontend/src/app.vue +0 -0
  1771. {codex-2.5.5 → codex-2.5.7}/frontend/src/browser.vue +0 -0
  1772. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/admin-flag-choices.json +0 -0
  1773. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/admin-jobs.json +0 -0
  1774. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/admin-status-titles.json +0 -0
  1775. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/browser-choices.json +0 -0
  1776. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/browser-map.json +0 -0
  1777. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/browser-table-column-costs.json +0 -0
  1778. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/browser-table-columns.json +0 -0
  1779. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/browser-table-default-columns.json +0 -0
  1780. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/countries.json +0 -0
  1781. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/format-field-values.json +0 -0
  1782. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/identifier-sources.json +0 -0
  1783. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/identifier-type-by-codex-name.json +0 -0
  1784. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/identifier-types.json +0 -0
  1785. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/languages.json +0 -0
  1786. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/limits.json +0 -0
  1787. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/reader-choices.json +0 -0
  1788. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/reader-defaults.json +0 -0
  1789. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/reader-map.json +0 -0
  1790. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/tagging-choices.json +0 -0
  1791. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/tagging-estimate.json +0 -0
  1792. {codex-2.5.5 → codex-2.5.7}/frontend/src/choices/websocket-messages.json +0 -0
  1793. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/admin-header.vue +0 -0
  1794. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/browser-link.vue +0 -0
  1795. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/create-update-dialog/create-update-button.vue +0 -0
  1796. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/create-update-dialog/create-update-dialog.vue +0 -0
  1797. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/create-update-dialog/create-update-inputs-mixin.js +0 -0
  1798. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/create-update-dialog/duration-input.vue +0 -0
  1799. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/create-update-dialog/group-create-update-inputs.vue +0 -0
  1800. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/create-update-dialog/library-create-update-inputs.vue +0 -0
  1801. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/create-update-dialog/relation-picker.vue +0 -0
  1802. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/create-update-dialog/server-folder-picker.vue +0 -0
  1803. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/create-update-dialog/user-create-update-inputs.vue +0 -0
  1804. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/drawer/admin-menu.vue +0 -0
  1805. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/drawer/admin-settings-button-errors.vue +0 -0
  1806. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/drawer/admin-settings-button-progress.vue +0 -0
  1807. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/drawer/admin-settings-drawer.vue +0 -0
  1808. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/drawer/admin-settings-panel.vue +0 -0
  1809. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/drawer/status-list-item.vue +0 -0
  1810. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/drawer/status-list.vue +0 -0
  1811. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/group-chip.vue +0 -0
  1812. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/status-helpers.js +0 -0
  1813. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/action-bar.vue +0 -0
  1814. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/admin-section.scss +0 -0
  1815. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/admin-section.vue +0 -0
  1816. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/admin-table.vue +0 -0
  1817. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/auth-tab.vue +0 -0
  1818. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/custom-covers-tab.vue +0 -0
  1819. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/datetime-column.vue +0 -0
  1820. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/defaults-tab.vue +0 -0
  1821. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/delete-row-dialog.vue +0 -0
  1822. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/design.scss +0 -0
  1823. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/doctor-tab.vue +0 -0
  1824. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/doctor-table.vue +0 -0
  1825. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/email-tab.vue +0 -0
  1826. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/expand-toggle.vue +0 -0
  1827. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/failed-imports-panel.vue +0 -0
  1828. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/flag-card.vue +0 -0
  1829. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/flag-descriptions.json +0 -0
  1830. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/flag-groups.json +0 -0
  1831. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/group-tab.vue +0 -0
  1832. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/job-tab.vue +0 -0
  1833. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/key-value-table.vue +0 -0
  1834. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/library-tab.vue +0 -0
  1835. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/library-table.vue +0 -0
  1836. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/pending-deletes-panel.vue +0 -0
  1837. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/relation-chips.vue +0 -0
  1838. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/replace-cover-button.vue +0 -0
  1839. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/restore-tab.vue +0 -0
  1840. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/settings-tab.vue +0 -0
  1841. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/stats-tab.vue +0 -0
  1842. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/tabs.vue +0 -0
  1843. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/tag-write-errors-panel.vue +0 -0
  1844. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/tagging-status-table.vue +0 -0
  1845. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/tagging-validation-chip.vue +0 -0
  1846. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/throttling-section.vue +0 -0
  1847. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/tabs/user-tab.vue +0 -0
  1848. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/admin/use-now-timer.js +0 -0
  1849. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/anchors.scss +0 -0
  1850. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/auth/auth-form-mixin.js +0 -0
  1851. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/auth/auth-menu.vue +0 -0
  1852. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/auth/auth-token.vue +0 -0
  1853. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/auth/change-password-dialog.vue +0 -0
  1854. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/auth/login-dialog.vue +0 -0
  1855. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/auth/profile-dialog.vue +0 -0
  1856. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/auth/reset-password-confirm.vue +0 -0
  1857. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/auth/reset-password-request-dialog.vue +0 -0
  1858. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/auth/sso-error.vue +0 -0
  1859. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/auth/sso-login-button.vue +0 -0
  1860. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/banner.vue +0 -0
  1861. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/book-cover.scss +0 -0
  1862. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/book-cover.vue +0 -0
  1863. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/browser-header.vue +0 -0
  1864. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/card/browser-card-menu.vue +0 -0
  1865. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/card/card.vue +0 -0
  1866. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/card/controls.vue +0 -0
  1867. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/card/order-by-caption.vue +0 -0
  1868. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/card/remove-cover-button.vue +0 -0
  1869. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/card/subtitle.vue +0 -0
  1870. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/card/upload-cover-button.vue +0 -0
  1871. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/drawer/browser-settings-collection.vue +0 -0
  1872. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/drawer/browser-settings-drawer.vue +0 -0
  1873. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/drawer/browser-settings-misc.vue +0 -0
  1874. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/drawer/browser-settings-panel.vue +0 -0
  1875. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/drawer/browser-settings-saved.vue +0 -0
  1876. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/empty.vue +0 -0
  1877. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/filter-warning-snackbar.vue +0 -0
  1878. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/main.vue +0 -0
  1879. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/table/browser-table-cell.vue +0 -0
  1880. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/table/browser-table-column-picker.vue +0 -0
  1881. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/table/browser-table.vue +0 -0
  1882. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/breadcrumbs/breadcrumbs.vue +0 -0
  1883. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/breadcrumbs/browser-toolbar-breadcrumbs.vue +0 -0
  1884. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/nav/browser-nav-button.vue +0 -0
  1885. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/nav/browser-toolbar-nav.vue +0 -0
  1886. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/search/browser-toolbar-search.vue +0 -0
  1887. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/search/search-combobox.vue +0 -0
  1888. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/search/search-help-text.vue +0 -0
  1889. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/search/search-help.vue +0 -0
  1890. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/select-many/browser-toolbar-select-many.vue +0 -0
  1891. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/top/browser-toolbar-top.vue +0 -0
  1892. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/top/columns-button.vue +0 -0
  1893. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/top/filter-by-select.vue +0 -0
  1894. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/top/filter-sub-menu.vue +0 -0
  1895. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/top/order-by-select.vue +0 -0
  1896. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/top/order-reverse-button.vue +0 -0
  1897. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/top/search-button.vue +0 -0
  1898. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/top/toolbar-button.vue +0 -0
  1899. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/top/top-collection-select.vue +0 -0
  1900. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/browser/toolbars/top/view-mode-toggle.vue +0 -0
  1901. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/cancel-button.vue +0 -0
  1902. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/clipboard.vue +0 -0
  1903. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/close-button.vue +0 -0
  1904. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/codex-list-item.vue +0 -0
  1905. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/confirm-dialog.vue +0 -0
  1906. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/confirm-footer.vue +0 -0
  1907. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/cover-popup.vue +0 -0
  1908. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/docker-hub-deprecated-snackbar.vue +0 -0
  1909. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/download-button.vue +0 -0
  1910. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/empty.vue +0 -0
  1911. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/favorite-toggle.vue +0 -0
  1912. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/force-update-button.vue +0 -0
  1913. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/force-update-confirm-dialog.vue +0 -0
  1914. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/mark-read-button.vue +0 -0
  1915. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/metadata/edit-mode/clear-field-icon.vue +0 -0
  1916. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/metadata/expand-button.vue +0 -0
  1917. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/metadata/metadata-chip.vue +0 -0
  1918. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/metadata/metadata-controls.vue +0 -0
  1919. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/metadata/metadata-cover.vue +0 -0
  1920. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/metadata/metadata-ratings.vue +0 -0
  1921. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/metadata/metadata-tags.vue +0 -0
  1922. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/metadata/metadata-text.vue +0 -0
  1923. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/metadata/table.scss +0 -0
  1924. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/metadata/tags-table.vue +0 -0
  1925. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/online-tag/cover-size.js +0 -0
  1926. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/online-tag/file-cover-thumb.vue +0 -0
  1927. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/online-tag/prompt-popup.vue +0 -0
  1928. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/online-tag/review-button.vue +0 -0
  1929. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/online-tag/source-labels.js +0 -0
  1930. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/pagination-nav-button.vue +0 -0
  1931. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/pagination-slider.vue +0 -0
  1932. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/pagination-toolbar.vue +0 -0
  1933. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/placeholder-loading.vue +0 -0
  1934. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/read-state-bar.vue +0 -0
  1935. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/book-change-activator.vue +0 -0
  1936. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/book-change-drawer.vue +0 -0
  1937. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/books-window.vue +0 -0
  1938. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/change-column.scss +0 -0
  1939. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/drawer/_expansion-panel-overrides.scss +0 -0
  1940. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/drawer/download-panel.vue +0 -0
  1941. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/drawer/keyboard-shortcuts-panel.vue +0 -0
  1942. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/drawer/keyboard-shortcuts-table.vue +0 -0
  1943. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/drawer/reader-settings-controls.vue +0 -0
  1944. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/drawer/reader-settings-drawer.vue +0 -0
  1945. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/drawer/reader-settings-panel.vue +0 -0
  1946. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/drawer/reader-settings-reader.vue +0 -0
  1947. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/drawer/reader-settings-scope.vue +0 -0
  1948. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/drawer/settings-indicator-dot.vue +0 -0
  1949. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/empty.vue +0 -0
  1950. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/pager/horizontal-pages.vue +0 -0
  1951. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/pager/page/page-error.vue +0 -0
  1952. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/pager/page/page-img.vue +0 -0
  1953. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/pager/page/page-loading.vue +0 -0
  1954. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/pager/page/page.vue +0 -0
  1955. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/pager/page-change-link.vue +0 -0
  1956. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/pager/pager-horizontal.vue +0 -0
  1957. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/pager/pager-vertical.vue +0 -0
  1958. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/pager/pdf-doc.vue +0 -0
  1959. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/pager/scale-for-scroll.vue +0 -0
  1960. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/toolbars/nav/reader-book-change-nav-button.vue +0 -0
  1961. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/toolbars/nav/reader-nav-button.vue +0 -0
  1962. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/toolbars/nav/reader-toolbar-nav.vue +0 -0
  1963. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/toolbars/top/reader-arc-select.vue +0 -0
  1964. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/reader/toolbars/top/reader-toolbar-top.vue +0 -0
  1965. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/scale-button.vue +0 -0
  1966. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/session-error-snackbar.vue +0 -0
  1967. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/settings/button.vue +0 -0
  1968. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/settings/docs-footer.vue +0 -0
  1969. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/settings/opds-dialog.vue +0 -0
  1970. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/settings/opds-url.vue +0 -0
  1971. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/settings/settings-drawer.vue +0 -0
  1972. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/settings/version-footer.vue +0 -0
  1973. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/submit-footer.vue +0 -0
  1974. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/toolbar-select.vue +0 -0
  1975. {codex-2.5.5 → codex-2.5.7}/frontend/src/components/unauthorized.vue +0 -0
  1976. {codex-2.5.5 → codex-2.5.7}/frontend/src/datetime.js +0 -0
  1977. {codex-2.5.5 → codex-2.5.7}/frontend/src/http-error.vue +0 -0
  1978. {codex-2.5.5 → codex-2.5.7}/frontend/src/main.js +0 -0
  1979. {codex-2.5.5 → codex-2.5.7}/frontend/src/platform.js +0 -0
  1980. {codex-2.5.5 → codex-2.5.7}/frontend/src/plugins/drag-scroll.js +0 -0
  1981. {codex-2.5.5 → codex-2.5.7}/frontend/src/plugins/router.js +0 -0
  1982. {codex-2.5.5 → codex-2.5.7}/frontend/src/plugins/rules.js +0 -0
  1983. {codex-2.5.5 → codex-2.5.7}/frontend/src/plugins/vuetify.js +0 -0
  1984. {codex-2.5.5 → codex-2.5.7}/frontend/src/read-state.js +0 -0
  1985. {codex-2.5.5 → codex-2.5.7}/frontend/src/reader.vue +0 -0
  1986. {codex-2.5.5 → codex-2.5.7}/frontend/src/route.js +0 -0
  1987. {codex-2.5.5 → codex-2.5.7}/frontend/src/stores/admin.js +0 -0
  1988. {codex-2.5.5 → codex-2.5.7}/frontend/src/stores/auth.js +0 -0
  1989. {codex-2.5.5 → codex-2.5.7}/frontend/src/stores/browser-select-many.js +0 -0
  1990. {codex-2.5.5 → codex-2.5.7}/frontend/src/stores/browser.js +0 -0
  1991. {codex-2.5.5 → codex-2.5.7}/frontend/src/stores/favorites.js +0 -0
  1992. {codex-2.5.5 → codex-2.5.7}/frontend/src/stores/metadata.js +0 -0
  1993. {codex-2.5.5 → codex-2.5.7}/frontend/src/stores/online-tag.js +0 -0
  1994. {codex-2.5.5 → codex-2.5.7}/frontend/src/stores/socket.js +0 -0
  1995. {codex-2.5.5 → codex-2.5.7}/frontend/src/stores/store.js +0 -0
  1996. {codex-2.5.5 → codex-2.5.7}/frontend/src/styles/global.scss +0 -0
  1997. {codex-2.5.5 → codex-2.5.7}/frontend/src/util.js +0 -0
  1998. {codex-2.5.5 → codex-2.5.7}/frontend/src/vuetify-items.js +0 -0
  1999. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/admin-field-errors.test.js +0 -0
  2000. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/admin-menu.test.js +0 -0
  2001. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/admin-oidc-store.test.js +0 -0
  2002. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/admin-row-save.test.js +0 -0
  2003. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/admin-settings-defaults-store.test.js +0 -0
  2004. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/admin-store-helpers.test.js +0 -0
  2005. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/admin-table-store.test.js +0 -0
  2006. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/admin-tag-write-errors-store.test.js +0 -0
  2007. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/api-v4-base-prefix.test.js +0 -0
  2008. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/api-v4-envelope-redirect.test.js +0 -0
  2009. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/auth-store.test.js +0 -0
  2010. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/book-change-drawer.test.js +0 -0
  2011. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/breadcrumbs.test.js +0 -0
  2012. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-empty-clear-search.test.js +0 -0
  2013. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-saved-views-delete.test.js +0 -0
  2014. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-saved-views-menu.test.js +0 -0
  2015. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-select-many-store.test.js +0 -0
  2016. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-store-filter-settings.test.js +0 -0
  2017. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-store-helpers.test.js +0 -0
  2018. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-store-order-memory.test.js +0 -0
  2019. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-store-saved-settings.test.js +0 -0
  2020. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-store-search-clear.test.js +0 -0
  2021. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-store-site-defaults.test.js +0 -0
  2022. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-store-top-collection.test.js +0 -0
  2023. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-table-cell.test.js +0 -0
  2024. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-table-column-picker-standalone.test.js +0 -0
  2025. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/browser-table-column-picker.test.js +0 -0
  2026. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/change-password-dialog.test.js +0 -0
  2027. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/common-store-errors.test.js +0 -0
  2028. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/cover-buttons.test.js +0 -0
  2029. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/cover-popup.test.js +0 -0
  2030. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/cover-probe.test.js +0 -0
  2031. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/create-update-dialog-validate.test.js +0 -0
  2032. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/datetime-column.test.js +0 -0
  2033. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/defaults-tab.test.js +0 -0
  2034. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/docker-hub-deprecated-snackbar.test.js +0 -0
  2035. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/doctor-tab.test.js +0 -0
  2036. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/duration-input.test.js +0 -0
  2037. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/edit-panel-collections.test.js +0 -0
  2038. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/edit-panel-comicbox5-fields.test.js +0 -0
  2039. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/edit-panel-community-rating.test.js +0 -0
  2040. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/edit-panel-date.test.js +0 -0
  2041. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/edit-panel-delete-keys.test.js +0 -0
  2042. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/edit-panel-disabled-tooltips.test.js +0 -0
  2043. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/edit-panel-identifiers.test.js +0 -0
  2044. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/edit-panel-reprints.test.js +0 -0
  2045. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/favorite-toggle.test.js +0 -0
  2046. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/favorites-store.test.js +0 -0
  2047. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/file-cover-thumb.test.js +0 -0
  2048. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/filter-by-select.test.js +0 -0
  2049. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/first-paint-defaults.test.js +0 -0
  2050. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/job-tab-update-note.test.js +0 -0
  2051. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/login-dialog.test.js +0 -0
  2052. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/mark-read-button.test.js +0 -0
  2053. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/metadata-activator.test.js +0 -0
  2054. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/metadata-ratings.test.js +0 -0
  2055. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/metadata-reprints.test.js +0 -0
  2056. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/metadata-store-comicbox5.test.js +0 -0
  2057. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/online-tag-store.test.js +0 -0
  2058. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/opds-dialog.test.js +0 -0
  2059. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/order-by-caption.test.js +0 -0
  2060. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/pager-vertical.test.js +0 -0
  2061. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/pending-deletes-panel.test.js +0 -0
  2062. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/profile-dialog.test.js +0 -0
  2063. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/prompt-popup.test.js +0 -0
  2064. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/read-state-bar.test.js +0 -0
  2065. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/read-state.test.js +0 -0
  2066. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/reader-arc-select.test.js +0 -0
  2067. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/reader-nav-button.test.js +0 -0
  2068. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/reader-settings-controls-standalone.test.js +0 -0
  2069. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/reader-settings-scope-defaults.test.js +0 -0
  2070. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/reader-settings-scope-shortcuts.test.js +0 -0
  2071. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/reader-store-book-settings.test.js +0 -0
  2072. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/reader-store-bookmark.test.js +0 -0
  2073. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/reader-store-global-settings.test.js +0 -0
  2074. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/reader-store-settings-race.test.js +0 -0
  2075. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/rename-toggle.test.js +0 -0
  2076. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/reset-password-confirm.test.js +0 -0
  2077. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/reset-password-request-dialog.test.js +0 -0
  2078. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/review-button.test.js +0 -0
  2079. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/route-helpers.test.js +0 -0
  2080. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/rules-plugin.test.js +0 -0
  2081. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/sso-auth.test.js +0 -0
  2082. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/stats-tab.test.js +0 -0
  2083. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/status-helpers.test.js +0 -0
  2084. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/tag-write-errors-panel.test.js +0 -0
  2085. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/tagging-status-table.test.js +0 -0
  2086. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/tagging-validation-chip.test.js +0 -0
  2087. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/theme-contract.test.js +0 -0
  2088. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/use-reader-keyup.test.js +0 -0
  2089. {codex-2.5.5 → codex-2.5.7}/frontend/tests/unit/version-footer.test.js +0 -0
  2090. {codex-2.5.5 → codex-2.5.7}/frontend/vite.config.js +0 -0
  2091. {codex-2.5.5 → codex-2.5.7}/img/comic.svg +0 -0
  2092. {codex-2.5.5 → codex-2.5.7}/img/folder.svg +0 -0
  2093. {codex-2.5.5 → codex-2.5.7}/img/imprint.svg +0 -0
  2094. {codex-2.5.5 → codex-2.5.7}/img/logo-maskable.svg +0 -0
  2095. {codex-2.5.5 → codex-2.5.7}/img/logo.svg +0 -0
  2096. {codex-2.5.5 → codex-2.5.7}/img/publisher.svg +0 -0
  2097. {codex-2.5.5 → codex-2.5.7}/img/series.svg +0 -0
  2098. {codex-2.5.5 → codex-2.5.7}/img/story-arc.svg +0 -0
  2099. {codex-2.5.5 → codex-2.5.7}/img/volume.svg +0 -0
  2100. {codex-2.5.5 → codex-2.5.7}/mkdocs.yml +0 -0
  2101. {codex-2.5.5 → codex-2.5.7}/tests/README.md +0 -0
  2102. {codex-2.5.5 → codex-2.5.7}/tests/__init__.py +0 -0
  2103. {codex-2.5.5 → codex-2.5.7}/tests/conftest.py +0 -0
  2104. {codex-2.5.5 → codex-2.5.7}/tests/files/comicbox-2-example.cbz +0 -0
  2105. {codex-2.5.5 → codex-2.5.7}/tests/files/comicbox-2-update.cbz +0 -0
  2106. {codex-2.5.5 → codex-2.5.7}/tests/files/comicbox.example.yaml +0 -0
  2107. {codex-2.5.5 → codex-2.5.7}/tests/files/comicbox.update.yaml +0 -0
  2108. {codex-2.5.5 → codex-2.5.7}/tests/importer/__init__.py +0 -0
  2109. {codex-2.5.5 → codex-2.5.7}/tests/importer/test_cross_library_path_collision.py +0 -0
  2110. {codex-2.5.5 → codex-2.5.7}/tests/importer/test_delete_backstop.py +0 -0
  2111. {codex-2.5.5 → codex-2.5.7}/tests/importer/test_failed_import_vanished.py +0 -0
  2112. {codex-2.5.5 → codex-2.5.7}/tests/importer/test_move_timestamps.py +0 -0
  2113. {codex-2.5.5 → codex-2.5.7}/tests/importer/test_moved_by_signature.py +0 -0
  2114. {codex-2.5.5 → codex-2.5.7}/tests/importer/test_moved_dest_collision.py +0 -0
  2115. {codex-2.5.5 → codex-2.5.7}/tests/importer/test_moved_folder_parents.py +0 -0
  2116. {codex-2.5.5 → codex-2.5.7}/tests/importer/test_moved_stat_preserved.py +0 -0
  2117. {codex-2.5.5 → codex-2.5.7}/tests/importer/test_pending_deletes.py +0 -0
  2118. {codex-2.5.5 → codex-2.5.7}/tests/importer/test_update_protagonist.py +0 -0
  2119. {codex-2.5.5 → codex-2.5.7}/tests/importer/test_write_then_rename.py +0 -0
  2120. {codex-2.5.5 → codex-2.5.7}/tests/nginx-local-codex.conf +0 -0
  2121. {codex-2.5.5 → codex-2.5.7}/tests/onlinetag_session_fakes.py +0 -0
  2122. {codex-2.5.5 → codex-2.5.7}/tests/opds_schema.py +0 -0
  2123. {codex-2.5.5 → codex-2.5.7}/tests/perf/__init__.py +0 -0
  2124. {codex-2.5.5 → codex-2.5.7}/tests/perf/run_baseline.py +0 -0
  2125. {codex-2.5.5 → codex-2.5.7}/tests/perf/run_opds_baseline.py +0 -0
  2126. {codex-2.5.5 → codex-2.5.7}/tests/perf/run_reader_baseline.py +0 -0
  2127. {codex-2.5.5 → codex-2.5.7}/tests/pytest_config_dir.py +0 -0
  2128. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/README.md +0 -0
  2129. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/fetch_schemas.py +0 -0
  2130. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v1/atom.rnc +0 -0
  2131. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v1/opds-pse-1.2.rnc +0 -0
  2132. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v1/opds.rnc +0 -0
  2133. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v1/opensearch-1.1.rnc +0 -0
  2134. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/opds/acquisition-object.schema.json +0 -0
  2135. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/opds/authentication.schema.json +0 -0
  2136. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/opds/feed-metadata.schema.json +0 -0
  2137. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/opds/feed.schema.json +0 -0
  2138. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/opds/progression.schema.json +0 -0
  2139. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/opds/properties.schema.json +0 -0
  2140. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/opds/publication.schema.json +0 -0
  2141. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/a11y.schema.json +0 -0
  2142. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/altIdentifier.schema.json +0 -0
  2143. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/article.schema.json +0 -0
  2144. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/chapter.schema.json +0 -0
  2145. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/collection.schema.json +0 -0
  2146. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/contributor.schema.json +0 -0
  2147. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/episode.schema.json +0 -0
  2148. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/extensions/encryption/properties.schema.json +0 -0
  2149. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/extensions/epub/metadata.schema.json +0 -0
  2150. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/extensions/epub/properties.schema.json +0 -0
  2151. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/extensions/epub/subcollections.schema.json +0 -0
  2152. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/issue.schema.json +0 -0
  2153. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/language-map.schema.json +0 -0
  2154. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/link.schema.json +0 -0
  2155. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/metadata.schema.json +0 -0
  2156. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/periodical.schema.json +0 -0
  2157. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/publication.schema.json +0 -0
  2158. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/season.schema.json +0 -0
  2159. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/series.schema.json +0 -0
  2160. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/storyArc.schema.json +0 -0
  2161. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/subcollection.schema.json +0 -0
  2162. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/subject.schema.json +0 -0
  2163. {codex-2.5.5 → codex-2.5.7}/tests/schema/opds/v2/readium/volume.schema.json +0 -0
  2164. {codex-2.5.5 → codex-2.5.7}/tests/settings_defaults_helpers.py +0 -0
  2165. {codex-2.5.5 → codex-2.5.7}/tests/test_admin_change_broadcasts.py +0 -0
  2166. {codex-2.5.5 → codex-2.5.7}/tests/test_admin_doctor_endpoint.py +0 -0
  2167. {codex-2.5.5 → codex-2.5.7}/tests/test_admin_flag_defaults.py +0 -0
  2168. {codex-2.5.5 → codex-2.5.7}/tests/test_admin_oidc_settings.py +0 -0
  2169. {codex-2.5.5 → codex-2.5.7}/tests/test_admin_pending_deletes.py +0 -0
  2170. {codex-2.5.5 → codex-2.5.7}/tests/test_admin_query_counts.py +0 -0
  2171. {codex-2.5.5 → codex-2.5.7}/tests/test_admin_status_order.py +0 -0
  2172. {codex-2.5.5 → codex-2.5.7}/tests/test_admin_value_bounds.py +0 -0
  2173. {codex-2.5.5 → codex-2.5.7}/tests/test_age_rating_acl.py +0 -0
  2174. {codex-2.5.5 → codex-2.5.7}/tests/test_api_docs_urls.py +0 -0
  2175. {codex-2.5.5 → codex-2.5.7}/tests/test_app_urls.py +0 -0
  2176. {codex-2.5.5 → codex-2.5.7}/tests/test_asgi.py +0 -0
  2177. {codex-2.5.5 → codex-2.5.7}/tests/test_asgi_db_connections.py +0 -0
  2178. {codex-2.5.5 → codex-2.5.7}/tests/test_bookmark_filter_isolation.py +0 -0
  2179. {codex-2.5.5 → codex-2.5.7}/tests/test_bookmark_mark_unread.py +0 -0
  2180. {codex-2.5.5 → codex-2.5.7}/tests/test_bookmark_unique.py +0 -0
  2181. {codex-2.5.5 → codex-2.5.7}/tests/test_breadcrumbs.py +0 -0
  2182. {codex-2.5.5 → codex-2.5.7}/tests/test_browser_bookmark_unread.py +0 -0
  2183. {codex-2.5.5 → codex-2.5.7}/tests/test_browser_columns_registry.py +0 -0
  2184. {codex-2.5.5 → codex-2.5.7}/tests/test_browser_ordering.py +0 -0
  2185. {codex-2.5.5 → codex-2.5.7}/tests/test_browser_reprints_column.py +0 -0
  2186. {codex-2.5.5 → codex-2.5.7}/tests/test_browser_settings_table.py +0 -0
  2187. {codex-2.5.5 → codex-2.5.7}/tests/test_browser_table_columns.py +0 -0
  2188. {codex-2.5.5 → codex-2.5.7}/tests/test_browser_table_response.py +0 -0
  2189. {codex-2.5.5 → codex-2.5.7}/tests/test_choices_limits.py +0 -0
  2190. {codex-2.5.5 → codex-2.5.7}/tests/test_ci_workflow.py +0 -0
  2191. {codex-2.5.5 → codex-2.5.7}/tests/test_collection_order_memory.py +0 -0
  2192. {codex-2.5.5 → codex-2.5.7}/tests/test_collection_row_aggregates.py +0 -0
  2193. {codex-2.5.5 → codex-2.5.7}/tests/test_community_rating.py +0 -0
  2194. {codex-2.5.5 → codex-2.5.7}/tests/test_cover_pool_stop.py +0 -0
  2195. {codex-2.5.5 → codex-2.5.7}/tests/test_cover_views.py +0 -0
  2196. {codex-2.5.5 → codex-2.5.7}/tests/test_credits.py +0 -0
  2197. {codex-2.5.5 → codex-2.5.7}/tests/test_credits_primary.py +0 -0
  2198. {codex-2.5.5 → codex-2.5.7}/tests/test_crond.py +0 -0
  2199. {codex-2.5.5 → codex-2.5.7}/tests/test_csp_onlinetag_covers.py +0 -0
  2200. {codex-2.5.5 → codex-2.5.7}/tests/test_csrf_trusted_origins.py +0 -0
  2201. {codex-2.5.5 → codex-2.5.7}/tests/test_db_backup.py +0 -0
  2202. {codex-2.5.5 → codex-2.5.7}/tests/test_disk_snapshot_unreadable.py +0 -0
  2203. {codex-2.5.5 → codex-2.5.7}/tests/test_dockerfile.py +0 -0
  2204. {codex-2.5.5 → codex-2.5.7}/tests/test_doctor.py +0 -0
  2205. {codex-2.5.5 → codex-2.5.7}/tests/test_download_errors.py +0 -0
  2206. {codex-2.5.5 → codex-2.5.7}/tests/test_failed_login_log.py +0 -0
  2207. {codex-2.5.5 → codex-2.5.7}/tests/test_favorites_api.py +0 -0
  2208. {codex-2.5.5 → codex-2.5.7}/tests/test_fs_filters_comic_suffixes.py +0 -0
  2209. {codex-2.5.5 → codex-2.5.7}/tests/test_fs_filters_ignore.py +0 -0
  2210. {codex-2.5.5 → codex-2.5.7}/tests/test_group.py +0 -0
  2211. {codex-2.5.5 → codex-2.5.7}/tests/test_identifier_types.py +0 -0
  2212. {codex-2.5.5 → codex-2.5.7}/tests/test_import_task_build.py +0 -0
  2213. {codex-2.5.5 → codex-2.5.7}/tests/test_intersection_acl.py +0 -0
  2214. {codex-2.5.5 → codex-2.5.7}/tests/test_janitor_cleanup_bookmarks.py +0 -0
  2215. {codex-2.5.5 → codex-2.5.7}/tests/test_janitor_cleanup_custom_covers.py +0 -0
  2216. {codex-2.5.5 → codex-2.5.7}/tests/test_janitor_cleanup_orphan_covers.py +0 -0
  2217. {codex-2.5.5 → codex-2.5.7}/tests/test_janitor_cleanup_tagging_state.py +0 -0
  2218. {codex-2.5.5 → codex-2.5.7}/tests/test_janitor_codex_update.py +0 -0
  2219. {codex-2.5.5 → codex-2.5.7}/tests/test_janitor_failed_imports.py +0 -0
  2220. {codex-2.5.5 → codex-2.5.7}/tests/test_janitor_folder_relations.py +0 -0
  2221. {codex-2.5.5 → codex-2.5.7}/tests/test_janitor_fts_rebuild.py +0 -0
  2222. {codex-2.5.5 → codex-2.5.7}/tests/test_latest_version_fetch.py +0 -0
  2223. {codex-2.5.5 → codex-2.5.7}/tests/test_lazy_import.py +0 -0
  2224. {codex-2.5.5 → codex-2.5.7}/tests/test_librarian_status_updates.py +0 -0
  2225. {codex-2.5.5 → codex-2.5.7}/tests/test_logging_filter.py +0 -0
  2226. {codex-2.5.5 → codex-2.5.7}/tests/test_metadata_collection_list.py +0 -0
  2227. {codex-2.5.5 → codex-2.5.7}/tests/test_metadata_get_no_writes.py +0 -0
  2228. {codex-2.5.5 → codex-2.5.7}/tests/test_metadata_path.py +0 -0
  2229. {codex-2.5.5 → codex-2.5.7}/tests/test_metadata_reprints.py +0 -0
  2230. {codex-2.5.5 → codex-2.5.7}/tests/test_migration_age_rating_relink.py +0 -0
  2231. {codex-2.5.5 → codex-2.5.7}/tests/test_migration_bookmark_dedupe.py +0 -0
  2232. {codex-2.5.5 → codex-2.5.7}/tests/test_missing_acl.py +0 -0
  2233. {codex-2.5.5 → codex-2.5.7}/tests/test_models.py +0 -0
  2234. {codex-2.5.5 → codex-2.5.7}/tests/test_mtime_gate.py +0 -0
  2235. {codex-2.5.5 → codex-2.5.7}/tests/test_oidc_login.py +0 -0
  2236. {codex-2.5.5 → codex-2.5.7}/tests/test_oidc_settings.py +0 -0
  2237. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_effort.py +0 -0
  2238. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_estimate.py +0 -0
  2239. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_issue_id.py +0 -0
  2240. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_live_lookup.py +0 -0
  2241. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_match_mode_ask.py +0 -0
  2242. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_merge_task.py +0 -0
  2243. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_outcome_stats.py +0 -0
  2244. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_prompt_endpoints.py +0 -0
  2245. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_prompt_resolution.py +0 -0
  2246. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_prompt_version.py +0 -0
  2247. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_quota_pause.py +0 -0
  2248. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_resume_endpoints.py +0 -0
  2249. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_session_manager.py +0 -0
  2250. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_snapshot.py +0 -0
  2251. {codex-2.5.5 → codex-2.5.7}/tests/test_onlinetag_tag_pass.py +0 -0
  2252. {codex-2.5.5 → codex-2.5.7}/tests/test_opds_cache.py +0 -0
  2253. {codex-2.5.5 → codex-2.5.7}/tests/test_opds_contributors.py +0 -0
  2254. {codex-2.5.5 → codex-2.5.7}/tests/test_opds_degrade.py +0 -0
  2255. {codex-2.5.5 → codex-2.5.7}/tests/test_opds_feed.py +0 -0
  2256. {codex-2.5.5 → codex-2.5.7}/tests/test_opds_keep_reading.py +0 -0
  2257. {codex-2.5.5 → codex-2.5.7}/tests/test_opds_progression_acl.py +0 -0
  2258. {codex-2.5.5 → codex-2.5.7}/tests/test_opds_progression_put.py +0 -0
  2259. {codex-2.5.5 → codex-2.5.7}/tests/test_opds_schema.py +0 -0
  2260. {codex-2.5.5 → codex-2.5.7}/tests/test_opds_user_agent.py +0 -0
  2261. {codex-2.5.5 → codex-2.5.7}/tests/test_password_reset.py +0 -0
  2262. {codex-2.5.5 → codex-2.5.7}/tests/test_per_user_stats.py +0 -0
  2263. {codex-2.5.5 → codex-2.5.7}/tests/test_poller_stat_refresh.py +0 -0
  2264. {codex-2.5.5 → codex-2.5.7}/tests/test_read_only_library.py +0 -0
  2265. {codex-2.5.5 → codex-2.5.7}/tests/test_reader.py +0 -0
  2266. {codex-2.5.5 → codex-2.5.7}/tests/test_registration_settings_patch.py +0 -0
  2267. {codex-2.5.5 → codex-2.5.7}/tests/test_release_info.py +0 -0
  2268. {codex-2.5.5 → codex-2.5.7}/tests/test_reprints.py +0 -0
  2269. {codex-2.5.5 → codex-2.5.7}/tests/test_resilient_cache.py +0 -0
  2270. {codex-2.5.5 → codex-2.5.7}/tests/test_route_serializer.py +0 -0
  2271. {codex-2.5.5 → codex-2.5.7}/tests/test_saved_settings_delete.py +0 -0
  2272. {codex-2.5.5 → codex-2.5.7}/tests/test_scribe_priority.py +0 -0
  2273. {codex-2.5.5 → codex-2.5.7}/tests/test_search_field_expression.py +0 -0
  2274. {codex-2.5.5 → codex-2.5.7}/tests/test_search_fts.py +0 -0
  2275. {codex-2.5.5 → codex-2.5.7}/tests/test_search_reprints.py +0 -0
  2276. {codex-2.5.5 → codex-2.5.7}/tests/test_settings_collection_flip.py +0 -0
  2277. {codex-2.5.5 → codex-2.5.7}/tests/test_settings_comicbox_config.py +0 -0
  2278. {codex-2.5.5 → codex-2.5.7}/tests/test_settings_defaults.py +0 -0
  2279. {codex-2.5.5 → codex-2.5.7}/tests/test_settings_defaults_catchup.py +0 -0
  2280. {codex-2.5.5 → codex-2.5.7}/tests/test_settings_defaults_migration.py +0 -0
  2281. {codex-2.5.5 → codex-2.5.7}/tests/test_settings_defaults_seeding.py +0 -0
  2282. {codex-2.5.5 → codex-2.5.7}/tests/test_settings_defaults_session.py +0 -0
  2283. {codex-2.5.5 → codex-2.5.7}/tests/test_shape_identifiers.py +0 -0
  2284. {codex-2.5.5 → codex-2.5.7}/tests/test_snapshot_diff.py +0 -0
  2285. {codex-2.5.5 → codex-2.5.7}/tests/test_tag_write_delete_keys.py +0 -0
  2286. {codex-2.5.5 → codex-2.5.7}/tests/test_tag_write_errors.py +0 -0
  2287. {codex-2.5.5 → codex-2.5.7}/tests/test_tag_write_filters.py +0 -0
  2288. {codex-2.5.5 → codex-2.5.7}/tests/test_tag_writer_preflight.py +0 -0
  2289. {codex-2.5.5 → codex-2.5.7}/tests/test_tag_writer_progress.py +0 -0
  2290. {codex-2.5.5 → codex-2.5.7}/tests/test_tag_writer_rename.py +0 -0
  2291. {codex-2.5.5 → codex-2.5.7}/tests/test_tagging_rename_wiring.py +0 -0
  2292. {codex-2.5.5 → codex-2.5.7}/tests/test_telemeter.py +0 -0
  2293. {codex-2.5.5 → codex-2.5.7}/tests/test_timezone.py +0 -0
  2294. {codex-2.5.5 → codex-2.5.7}/tests/test_url_path_prefix.py +0 -0
  2295. {codex-2.5.5 → codex-2.5.7}/tests/test_user_data_backups.py +0 -0
  2296. {codex-2.5.5 → codex-2.5.7}/tests/test_user_data_dump.py +0 -0
  2297. {codex-2.5.5 → codex-2.5.7}/tests/test_user_data_snapshot.py +0 -0
  2298. {codex-2.5.5 → codex-2.5.7}/tests/test_user_data_store.py +0 -0
  2299. {codex-2.5.5 → codex-2.5.7}/tests/test_version_outdated.py +0 -0
  2300. {codex-2.5.5 → codex-2.5.7}/tests/test_watcher_move_detect.py +0 -0
  2301. {codex-2.5.5 → codex-2.5.7}/tests/test_watcher_path_prefixes.py +0 -0
  2302. {codex-2.5.5 → codex-2.5.7}/tests/test_watcher_unmount_guard.py +0 -0
  2303. {codex-2.5.5 → codex-2.5.7}/tests/test_xz.py +0 -0
  2304. {codex-2.5.5 → codex-2.5.7}/tests/tmp_dirs.py +0 -0
  2305. {codex-2.5.5 → codex-2.5.7}/vulture_ignorelist.py +0 -0
codex-2.5.7/NEWS.md ADDED
@@ -0,0 +1,2756 @@
1
+ # 📜 Codex News
2
+
3
+ <img src="codex/img/logo.svg" alt="Codex logo" style="
4
+ height: 128px;
5
+ width: 128px;
6
+ border-radius: 128px;
7
+ " />
8
+
9
+ ## v2.5.7
10
+
11
+ - Features
12
+ - Series end year, status and summary are written to MetronInfo v1.2 and
13
+ read back from it, no longer saved in Codex only.
14
+ - Metron online tagging uses only an API key; saved Metron usernames and
15
+ passwords are removed.
16
+ - Fixes
17
+ - Reader no longer jumps to the cover or the next book after a library
18
+ update, or rewrites the bookmark of the book it leaves.
19
+ - Languages with a region or script, like pt-BR, are kept and shown by name.
20
+ - Admin explains why you can't remove your own staff or active status
21
+ instead of showing an unknown error.
22
+ - The Metron response cache starts over once after upgrading.
23
+
24
+ ## v2.5.6
25
+
26
+ - Features
27
+ - Filter, search, view, edit, and online tag by series years, series status,
28
+ and series summary. End year, status and summary are saved in Codex only,
29
+ not comic metadata.
30
+ - Browser title shows series years and a Tags button.
31
+ - Online tag match picker shows series and issue details to help
32
+ disambiguate similar covers and titles.
33
+ - Fixes
34
+ - Browsing comics without embedded tags, or re-importing unchanged comics,
35
+ no longer rebuilds their covers and reloads the page.
36
+ - Searches for a universe designation no longer miss imported comics.
37
+
38
+ ## v2.5.5
39
+
40
+ - Features
41
+ - `csrf_trusted_origins` setting for CSRF 403s behind a reverse proxy.
42
+ - Docker images now use Python 3.15
43
+ - Fixes
44
+ - Online tagging matches saved for review by 2.5.3 no longer break the
45
+ review list and scan status with "No module named 'numpy'". They are
46
+ dropped, so those comics need tagging again.
47
+ - Renamed comics no longer contain colons or other characters Windows and
48
+ SMB shares can't store.
49
+ - A Metron API key is no longer overridden by a `~/.netrc` login.
50
+
51
+ ## v2.5.4
52
+
53
+ - Features
54
+ - Online tagging matches to review show a toolbar Review button and a
55
+ tab-title count instead of popping up a dialog.
56
+ - Fixes
57
+ - Escape in a reader dialog no longer closes the book, and keys typed in a
58
+ dialog no longer turn pages.
59
+
60
+ ## v2.5.3
61
+
62
+ - Features
63
+ - Online tagging gains an Ask match mode that prompts for every match
64
+ instead of writing any.
65
+ - Admin Doctor tab: archive tools, PDF support, image codecs, database,
66
+ libraries, watcher limits, config and package problems, each with its fix.
67
+ Problems are also logged at startup.
68
+ - Fixes
69
+ - A missing or broken unrar no longer hides CBR comics from scans or deletes
70
+ them from the library; they are listed as failed imports with the cause.
71
+ - A broken PDF library disables PDF reading instead of stopping the server.
72
+ - Metron logins by username and password tag again; a blank API key no
73
+ longer overrides them.
74
+ - Credential checks no longer compete with a running tagging job for
75
+ Metron's rate limit.
76
+ - Re-applying a chosen online match reuses the cached search.
77
+ - Failed imports no longer vanish from the admin list after other imports.
78
+ - Size searches accept kb, mb, gb and tb units and the >= and <= operators.
79
+ - Codex shuts down cleanly on Python 3.12 and 3.13.
80
+ - Performance
81
+ - Docker image is about 165 MB smaller.
82
+
83
+ ## v2.5.2
84
+
85
+ - Fixes
86
+ - Fresh PyPI installs no longer fail to start.
87
+ - Performance
88
+ - Docker image is about 490 MB smaller and starts faster.
89
+
90
+ ## v2.5.1
91
+
92
+ - Features
93
+ - Saved views can be deleted.
94
+ - Fixes
95
+ - Browsing a series or volume emptied by tagging returns to the top instead
96
+ of a list with no way back.
97
+ - Clearing a search or loading a saved view no longer leaves a list with no
98
+ way back, and saved views keep their top collection.
99
+ - The saved views menu no longer reopens after loading a view.
100
+
101
+ ## v2.5.0 - Admin Defaults
102
+
103
+ - Features
104
+ - Admin Defaults tab sets the browser and reader settings new sessions start
105
+ with, replaces Default View, and can update existing anonymous sessions.
106
+ - Browser and reader resets restore the admin defaults.
107
+ - Read comics and collections show a check mark instead of dimmed titles.
108
+ - Online tagging match review shows each file's own cover beside its name.
109
+ - Fixes
110
+ - A Folders or Story Arcs default view opens there instead of Publishers.
111
+ - Reader zoom scales pages from their original size.
112
+ - Fit to Screen fits wide pages when PDFs render as vectors.
113
+ - Admin tables and tag write errors no longer revert to old values.
114
+ - The reader's "b" shortcut sets bottom to top reading.
115
+ - "Clear All Filters" no longer shows when no filter is set.
116
+ - Anonymous browsing no longer logs a timezone error.
117
+
118
+ ## v2.4.3
119
+
120
+ - Fixes
121
+ - Comics you are reading no longer leave your unread list when another user
122
+ finishes them.
123
+ - OPDS "Keep Reading" lists only issues in progress.
124
+ - OPDS reading position responses follow the Progression spec.
125
+ - Upstream widget bug fix accepted and released. Revert our fix here.
126
+
127
+ ## v2.4.2
128
+
129
+ - Fixes
130
+ - OPDS clients that send no login or session cookie can read reading
131
+ positions instead of getting a 404 for every comic.
132
+ - Cover cards no longer say "100% read" or "0% read" on a comic that is
133
+ partly read.
134
+
135
+ ## v2.4.1
136
+
137
+ - Fixes
138
+ - The browser pane was unable to scroll due to an upstream widget bug.
139
+
140
+ ## v2.4.0 - Read State & Match Review
141
+
142
+ - Features
143
+ - Cover cards show read, unread, and in progress state.
144
+ - Online tagging match candidates show a cover, a link to the source's page,
145
+ and what separated their scores.
146
+ - Hovering a match candidate's cover shows it full size.
147
+ - The Failed Imports link stays in the admin sidebar while there are failed
148
+ imports.
149
+ - Admins can see and manage comics that disappeared from a library but have
150
+ not been deleted yet.
151
+
152
+ - Fixes
153
+ - A filesystem outage no longer costs a library its comics, read progress,
154
+ or custom covers.
155
+ - A comic that disappears from a library is kept for a day before it is
156
+ really deleted.
157
+ - Two libraries whose paths overlap no longer destroy each other's comics
158
+ and bookmarks.
159
+ - Moving, renaming, or force updating a comic keeps its read progress.
160
+ - Comics with uppercase file extensions no longer lose their folders and
161
+ read progress.
162
+ - Read progress can no longer be recorded twice for the same comic.
163
+ - Folder, series, and story arc progress and read state are counted
164
+ correctly, including while filters are active.
165
+ - Marking a comic or collection unread clears its progress.
166
+ - Breadcrumbs, metadata, and collection totals no longer name or count
167
+ comics from libraries you can't see.
168
+ - Metadata imports and reading positions respect library and age-rating
169
+ permissions.
170
+ - Browsing to a collection you can't see sends you up a level instead of a
171
+ blank page.
172
+ - A comic whose file is missing or unreadable returns Not Found instead of a
173
+ server error.
174
+ - OPDS clients can browse from the catalog root again, and one unreadable
175
+ comic no longer empties a feed.
176
+ - The OPDS urls dialog opens, and its copy buttons work over plain http.
177
+ - Deleting a library succeeds, and library and group membership changes
178
+ refresh the browser.
179
+ - A refused tag write names the comic to edit instead, and links to it.
180
+ - The metadata editor no longer saves values its own fields flag as invalid.
181
+ - Online tagging releases its Comic Vine connections when a scan finishes.
182
+ - The match review dialog no longer clips its Pause button, and the tagging
183
+ connection chip shows its check or alert icon.
184
+ - Registration and the change-password dialog enforce the minimum password
185
+ length.
186
+ - Invalid admin settings values are rejected instead of breaking browsing,
187
+ and admin forms show the server's reason when a name is already taken.
188
+ - Clearing part of a poll interval no longer produces an invalid value, and
189
+ the email host field accepts hostnames without a dot.
190
+ - The nightly cleanup keeps custom cover thumbnails and removes bookmarks
191
+ belonging to no user or session.
192
+ - Panels gets both its own sort menu and the sort folders, on every
193
+ platform.
194
+ - An installed Codex gets a dark app bar, and buttons on the orange accent
195
+ use dark text.
196
+ - Browser cards draw their hover border, and cover thumbnails in table mode
197
+ and on the custom-covers admin tab open with the keyboard.
198
+
199
+ - Performance
200
+ - Browsing with tag filters is about twice as fast.
201
+
202
+ ## v2.3.3
203
+
204
+ - Features
205
+ - Codex now identifies itself in the requests it makes to Metron and Comic
206
+ Vine.
207
+ - The end of a tagging session logs what it spent.
208
+ - The Tagging tab's per-source rate now shows the limit the server actually
209
+ reported, not the documented default. A Metron donor tier or a self-hosted
210
+ instance reads its own pace.
211
+
212
+ - Fixes
213
+ - Answering an online-tagging match prompt now tags every issue of the
214
+ series it was asked about, instead of one.
215
+ - The match-review dialog closes when the queue empties instead of showing a
216
+ spinner, says how many comics a pick will write, and reopens from a Review
217
+ button on the Tagging tab.
218
+ - A tagging run that exhausts the day's Metron quota now pauses and stays
219
+ resumable.
220
+ - The vertical reader could miss the end of a book when scrolled by a fast
221
+ fling.
222
+
223
+ ## v2.3.2
224
+
225
+ - Fixes
226
+ - The nightly maintenance run happened dozens of times a night instead of
227
+ once.
228
+
229
+ ## v2.3.1
230
+
231
+ - Upgrading
232
+ - Docker Hub users: `docker.io/ajslater/codex` is published again, but it is
233
+ deprecated. Change your image to `ghcr.io/ajslater/codex`; nothing else
234
+ changes. Admins see a warning in the web UI, and the logs warn at startup
235
+ and once a day, until the image is changed. Coming from 1.9.x, back up
236
+ your `config` directory first and read the Upgrading notes for every
237
+ version since.
238
+
239
+ - Performance
240
+ - Comic Vine tagging spends half the API budget it used to due to simyan
241
+ 4.1.0.
242
+
243
+ - Dev
244
+ - Require simyan >= 4.1.0.
245
+ - Resume publishing images to Docker Hub to upgrade stragglers.
246
+
247
+ ## v2.3.0 - Reprints & Comicbox 5
248
+
249
+ - Upgrading
250
+ - Comicbox 5.0.0 reads some tags differently and adds others. Existing
251
+ comics keep the tags they were imported with until they are read again:
252
+ select comics and Force Update Tags, or let a scan pick up files you
253
+ change. Until then the new fields are empty, and age ratings and credit
254
+ roles keep their old spellings, so a filter can list both `Everyone 10+`
255
+ and `Everyone`, or both `CoverArtist` and `Cover`. Age-restricted access
256
+ is unaffected either way.
257
+
258
+ - Features
259
+ - Sort by Reprints, the other editions an issue was published as, in the
260
+ table and in cover view. Filter by a reprint first to sort by that one.
261
+ - Read a reprint series as a reading order from the reader's reading-order
262
+ menu, which makes reprint tags usable as durable reading lists.
263
+ - "Alternate Series" is now "Reprints" everywhere: it covers MetronInfo
264
+ Reprints and AlternativeNames, ComicInfo AlternateSeries and CoMet
265
+ isVersionOf. A series' other names are listed separately in the metadata
266
+ panel.
267
+ - Each top collection remembers the sort it was last browsed with, and
268
+ clearing a search puts back the sort it replaced.
269
+ - Manga is its own tag now, separate from reading direction, along with
270
+ MetronInfo's Manga Volume.
271
+ - A comic's own web links are shown and editable.
272
+ - Credits mark the primary holder of each role and list them first. Codex
273
+ cannot write it back: neither ComicInfo nor MetronInfo stores it.
274
+ - Online tagging takes an Effort setting, per scan and as an admin default.
275
+ Thorough restores Comic Vine's unbounded search, Minimal trades matches
276
+ for speed, and Metron ignores it. Auto, the default, drops a large
277
+ unattended scan to Minimal so Comic Vine's hourly limit doesn't stretch it
278
+ into hours.
279
+ - The tagging status strip shows Comic Vine's remaining hourly budget.
280
+
281
+ - Fixes
282
+ - Reading Bottom to Top jumped to the wrong page: page one showed the last
283
+ page.
284
+ - Saving browser settings sent an empty request. The next page request saved
285
+ them anyway, so nothing was lost.
286
+ - Sorting by a tag column outside the table view no longer errors.
287
+ - Browsing a group whose parents have gone missing shows a button back to
288
+ the top rather than an empty crumb trail and no way out.
289
+ - The Admin Tagging Status table shows what is being looked up right now.
290
+ - Identifier links are built from the id instead of stored beside it, so
291
+ they can no longer disagree with it. A comic can carry an id for its
292
+ series, and a reprint's id links to the issue it reprints. The tag editor
293
+ writes identifier types the way the formats spell them.
294
+ - A Comic Vine key the site rejects now fails validation instead of passing.
295
+ - Comicbox's online caches stay under the config directory instead of a
296
+ location that recreating a container discards.
297
+ - An online scan's time estimate is keyed on Effort rather than Match Mode,
298
+ which never changed how many requests a comic costs. It reads higher, and
299
+ a real scan beats it.
300
+ - Covers are cached by the browser and revalidated instead of re-sent, so
301
+ revisiting a page does not download them again. They also survive a scan,
302
+ which used to discard every cached cover whether or not it had changed.
303
+ - Every web request leaked a database connection, and its open files, until
304
+ garbage collection.
305
+
306
+ - Performance
307
+ - Web requests share a pool of database connections instead of opening one
308
+ each. `db_workers` under `[server]` sizes it, or turns it off with 0.
309
+
310
+ - Dev
311
+ - Comicbox 5.0.0, and its metadata schema v3.0.
312
+ - Simyan, mokkari and requests-cache are declared directly rather than
313
+ relied on through comicbox.
314
+ - Asgiref is declared directly; the connection pool uses its executor
315
+ registry.
316
+
317
+ ## v2.2.11
318
+
319
+ - Features
320
+ - Edit a comic's publish date in the tag editor. Year, month and day are
321
+ separate, so a year-only comic stays that way. Editing a date rewrites the
322
+ whole date tag: a MetronInfo StoreDate does not survive it, and a
323
+ multi-comic edit overwrites parts they disagree on.
324
+ - Country, Collection Title and Alternative Issue are editable too, having
325
+ only ever been displayed.
326
+ - Redesigned the Admin Tagging Status table to be more informative.
327
+
328
+ - Fixes
329
+ - Bookmarks and read progress survive tag writes. Comics are renamed before
330
+ they are written and the database moves with the file, so a rename, a CBR
331
+ conversion, or a library scan landing mid-batch can no longer lose them.
332
+ PDFs lost them every time before; other formats occasionally.
333
+ - Comics are no longer deleted while their files are still on disk. One
334
+ replaced in place, by a tool that removes and rewrites it, is re-read
335
+ instead of deleted and re-added as a new comic.
336
+ - A library that has gone missing, like an unmounted share or volume, no
337
+ longer has all of its comics deleted.
338
+ - Paths that merely begin the same way are no longer confused for one
339
+ another: deleting the folder "Batman" leaves "Batman Beyond" alone, and
340
+ libraries at /comics and /comics-kids no longer claim each other's
341
+ changes.
342
+ - Renaming keeps each archive's own file extension. PDFs and unconverted
343
+ CBRs were renamed to .cbz names.
344
+ - Two comics that would end up with the same filename no longer overwrite
345
+ each other; the second is reported instead.
346
+ - Editing a comic's tags twice in a row no longer fails the second time with
347
+ a "no such file" error.
348
+ - Online tagging only offers Resume when a scan can actually resume, and
349
+ reports a failed pause or resume instead of silently doing nothing.
350
+ - A second online tagging scan no longer re-queues comics the running scan
351
+ already has.
352
+ - Deleting a folder refreshes the series and publishers it emptied, which
353
+ kept listing comics that were gone.
354
+ - The librarian shuts down cleanly with work queued, and tasks queued in the
355
+ same instant no longer collide and lose one.
356
+
357
+ ## v2.2.10
358
+
359
+ - Fixes
360
+ - Fix a rare crash opening RAR3 extended timestamps with CBR files.
361
+
362
+ ## v2.2.9
363
+
364
+ - Fixes
365
+ - OPDS responses are cached per client User-Agent. Clients that support
366
+ different features no longer receive each other's cached feeds for a
367
+ minute.
368
+ - OPDS v1: comic credits that are not writing credits, like artists and
369
+ colorists, appear as contributors in metadata feeds. They had never been
370
+ sent.
371
+ - OPDS: Panels on iOS (3.13 and later) is recognized as a facet capable
372
+ client and receives real OPDS facets, shown in the native filter menu,
373
+ instead of sort options faked as navigation folders. The macOS build
374
+ (951), which does not support facets, keeps the navigation folder sort
375
+ options.
376
+ - OPDS v1: facet capable clients like kybooks no longer also receive a dead,
377
+ unclickable duplicate entry for every facet alongside the real facet
378
+ links.
379
+ - OPDS v1: facet groups are labeled "Order By", "Order Direction" and
380
+ "Views" instead of the internal query parameter names clients displayed
381
+ verbatim, like "orderBy".
382
+
383
+ ## v2.2.8
384
+
385
+ - Fixes
386
+ - Codex updates itself again, automatically or on demand, and announces new
387
+ versions.
388
+ - Documentation
389
+ - Docs for passing through the Server: HTTP header so codex may be
390
+ identified by OPDS clients like Stump.
391
+
392
+ ## v2.2.7
393
+
394
+ - Fixes
395
+ - A comic moved or renamed onto a path that already belongs to another
396
+ comic, like a duplicate landing in a dupes folder, no longer crashes the
397
+ scan and no longer crashes every scan after it. The stray move is skipped
398
+ and the leftover record is cleaned up by a later scan.
399
+
400
+ ## v2.2.6
401
+
402
+ - Features
403
+ - The Comic Vine custom URL is back, for tagging against a Comic Vine proxy
404
+ or mirror. URLs discarded by v2.2.4 must be entered again. Metron Cloud's
405
+ stays gone; it never did anything.
406
+
407
+ ## v2.2.5
408
+
409
+ - Features
410
+ - Online tagging combines search and tag by id. A source given an issue id
411
+ fetches it directly, the rest search, and the results merge (comicbox
412
+ 4.8.0).
413
+
414
+ - Fixes
415
+ - Tagging a comic with renaming enabled no longer fails the import and
416
+ discards the new tags. Comics renamed this way since v2.1.0 need a Force
417
+ Update Tags to pick up their metadata.
418
+ - Comics renamed or moved by another program mid-scan no longer leave a
419
+ permanent failed import.
420
+
421
+ ## v2.2.4
422
+
423
+ - Features
424
+ - Metron Cloud online tagging uses an API key, generated on your
425
+ metron.cloud account page (comicbox 4.7.1). Saved usernames and passwords
426
+ keep working until you save a key, which replaces them.
427
+ - The custom URL fields for Metron Cloud and Comic Vine are removed. The
428
+ Metron one never did anything — mokkari hardcodes the metron.cloud
429
+ endpoint. Any saved URLs are discarded on upgrade.
430
+ - The interactive Swagger API docs are back, at `/api/v4/`. They went away
431
+ in v2.0.0 with the v3 API; only the raw OpenAPI schema at `/api/v4/schema`
432
+ remained. Admin login required, as before.
433
+
434
+ ## v2.2.3
435
+
436
+ - Features
437
+ - Alternate series names: the localized and variant series titles comics
438
+ carry in MetronInfo AlternativeNames and Reprints tags (and that Metron
439
+ and Comic Vine online tagging now record) are imported, shown in the
440
+ metadata panel, editable in the tag editor, and browsable — sort, table
441
+ column, filter, and `alternate_series:` search (comicbox 4.6.0). Comics
442
+ imported or tagged online from now on pick them up automatically;
443
+ already-imported comics need a Force Update Tags.
444
+ - Online tagging matches a comic filed under a localized or variant series
445
+ title to the right volume, and the match prompt shows each candidate's
446
+ other known names (comicbox 4.6.0).
447
+
448
+ - Fixes
449
+ - Identifier links point at the right page. Hand-tagged keys with a type
450
+ prefix like `series:178012`, Comic Vine long codes like `4050-160294`, and
451
+ `source:type:key` strings made broken issue-shaped URLs for every source
452
+ (comicbox 4.6.1).
453
+ - Every identifier URN in a comic's notes is imported; only the first was
454
+ read before (comicbox 4.6.1).
455
+ - Story arcs tagged online from Metron or Comic Vine get web links (comicbox
456
+ 4.6.1). These identifier fixes reach already-imported comics on their next
457
+ re-import, or use Force Update Tags.
458
+ - User data backups no longer skip every saved filter set after an upgrade
459
+ that adds a new filter.
460
+
461
+ ## v2.2.2
462
+
463
+ - Fixes
464
+ - Clearing a field in the tag editor now removes it from the comic's tags.
465
+ Cleared fields were silently left unchanged in the archive (comicbox
466
+ 4.5.0).
467
+ - The tag editor's Monochrome checkbox reads and writes again, and clearing
468
+ it removes the tag instead of marking the comic color (comicbox 4.5.1).
469
+ - PDF pages scanned upside down or sideways and righted by the pdf's
470
+ rotation attribute displayed rotated when the reader served them as images
471
+ (comicbox-pdffile 0.6.3).
472
+ - Reading a PDF that needs in-memory repair no longer rewrites the file on
473
+ disk (comicbox-pdffile 0.6.3).
474
+ - PDFs no longer count an embedded metadata file as a page (comicbox 4.5.0).
475
+ Imported PDFs correct themselves on their next re-import, or use Force
476
+ Update Tags.
477
+
478
+ ## v2.2.1
479
+
480
+ - Features
481
+ - Community ratings: the average and vote count comics carry in their tags
482
+ (and that Metron online tagging now fetches) are imported, shown in the
483
+ metadata panel, editable in the tag editor, and browsable — sort, table
484
+ column, filter, and `community_rating:` search (comicbox 4.4.0). Existing
485
+ critical ratings become community ratings automatically; they always came
486
+ from the same tags.
487
+ - Alternative issue numbers are imported and shown in the metadata panel
488
+ (comicbox 4.4.0).
489
+ - Testing Metron credentials in the Admin panel now shows your account's
490
+ live rate limits; the daily limit reflects your Metron donor tier.
491
+ - The online tagging status table shows Metron's live daily budget as a run
492
+ progresses.
493
+ - Metron rate limits now come from your account instead of fixed defaults;
494
+ donor-tier limits are picked up automatically (comicbox 4.3.0).
495
+
496
+ - Fixes
497
+ - Online tagging backs off properly when a rate-limited response omits a
498
+ retry hint (comicbox 4.3.0).
499
+
500
+ ## v2.2.0 - Single Sign-On
501
+
502
+ - Features
503
+ - Single sign-on: log in through an OIDC identity provider such as Authentik
504
+ or Authelia, configured in the Admin panel's new Auth tab. Optionally
505
+ auto-create users, sync identity-provider groups to Codex groups, and
506
+ grant admin from a group.
507
+
508
+ - Fixes
509
+ - Answering an online-tagging match prompt now writes to the comic's current
510
+ file even if it moved since the scan, and reports apply failures instead
511
+ of silently dropping the match.
512
+ - The configured log level is now honored while reading and writing comic
513
+ metadata.
514
+
515
+ - Performance
516
+ - ComicVine online tagging estimates rate-limit waits more accurately, hangs
517
+ less, and cleans up stale cached responses automatically (comicbox 4.1.1).
518
+
519
+ ## v2.1.2
520
+
521
+ - Fixes
522
+ - A folder with denied permissions no longer crashes the whole library scan.
523
+ - Ignore NAS and OS junk folders, including Synology recycle bins and macOS
524
+ and Windows metadata.
525
+
526
+ ## v2.1.1
527
+
528
+ - Fixes
529
+ - Fix unable to change password.
530
+
531
+ - Performance
532
+ - Metron online tagging makes far fewer API requests (comicbox 4.0.5).
533
+
534
+ ## v2.1.0 - Renaming
535
+
536
+ - Features
537
+ - Rename comic files to the comicbox naming scheme when editing tags or
538
+ tagging online.
539
+
540
+ - Fixes
541
+ - Online tagging matches already-tagged comics more accurately by searching
542
+ embedded metadata instead of the filename (comicbox 4.0.4).
543
+ - Renaming a file no longer fails when a series or title contains a slash
544
+ (comicbox 4.0.4).
545
+ - Clearing a search returns to the top collection instead of stranding you
546
+ at a lower level.
547
+
548
+ ## v2.0.5
549
+
550
+ - Fixes
551
+ - Admin user password changes no longer fail with an unknown error.
552
+
553
+ ## v2.0.4
554
+
555
+ - Features
556
+ - Add Sweet Shop kebab case filename format. Courtesy of @bpepple.
557
+
558
+ - Fixes
559
+ - Online cover matching now works for PDFs; the cover page is rasterized
560
+ before perceptual hashing instead of handing raw PDF bytes to the image
561
+ hasher. Courtesy of @bpepple.
562
+ - Security release for dependencies.
563
+
564
+ ## v2.0.3
565
+
566
+ - Fixes
567
+ - CBR comics with high-precision file timestamps no longer fail to import
568
+ (comicbox 4.0.2).
569
+ - Features
570
+ - Libraries can be marked read-only to protect their comic files from tag
571
+ changes. Read-only comics hide their Edit Tags and Online Tagging buttons,
572
+ and bulk edits spanning several libraries skip them.
573
+
574
+ ## v2.0.2
575
+
576
+ - Fixes
577
+ - The web UI now works under a reverse-proxy subpath: the live-update
578
+ websocket, API calls, and cover images honor `url_path_prefix` instead of
579
+ loading from the server root.
580
+
581
+ ## v2.0.1
582
+
583
+ - Fixes
584
+ - The Online Tagging Status table now shows which source matched each comic,
585
+ even ones re-tagged from a stored id or matched by both sources.
586
+ - Tidied the Online Tagging Status table: long filenames use the full Comic
587
+ column width before truncating.
588
+ - Re-tagging an already-identified comic now fetches its exact Metron or
589
+ Comic Vine issue directly instead of running a full search.
590
+ - Tagging no longer loses a comic's stored Metron or Comic Vine id when it
591
+ also has a web link.
592
+ - `url_path_prefix` works again when set without a leading slash. Remember
593
+ to uncomment the \[server] block header in codex.toml if you are setting
594
+ server values, like \`url\_path\_prefix\`\`
595
+
596
+ ## v2.0.0 - Tag Editing & Online Tagging
597
+
598
+ - Notice
599
+ - This is a major upgrade. A one-time database migration runs on first
600
+ startup; back up your `config` directory before upgrading.
601
+ - Editing tags writes to your comic files; the comics directory must be
602
+ mounted writable with write permission for tag editing to work.
603
+ - Breaking Changes
604
+ - Admin settings (SMTP, rate limits, browser page size, cover upload size)
605
+ moved from `codex.toml` into the Admin UI and are now editable without a
606
+ restart. Existing values are imported automatically on upgrade; those
607
+ `codex.toml` sections are deprecated.
608
+ - Custom covers are now managed in the web UI. Legacy filesystem covers
609
+ (in-library `.codex-cover.*` files and the covers-only library) migrate
610
+ automatically on first startup.
611
+ - The browser and reader page URLs changed; bookmarks to specific pages may
612
+ need re-navigating from the home screen. OPDS apps reconnect on their own.
613
+ - The HTTP API moved from `/api/v3/` to `/api/v4/`.
614
+ - Fixes
615
+ - OPDS 1.2, 2.0, and OpenSearch feeds are now spec-compliant.
616
+ - Folder covers respect favorites.
617
+ - Critical ratings normalized to a consistent 0–5 scale.
618
+ - The age-rating "As Tagged" panel hides when it has no entries.
619
+ - Hovering a comic's tag icon no longer re-runs the on-demand tag importer
620
+ forever on comics with few or no embedded tags.
621
+ - Browser refreshes more often when comics change. container restarts.
622
+ - Features
623
+ - Edit the tags on one or many comics directly in the browser — credits,
624
+ story arcs, identifiers, and more — written back to your comic files.
625
+ - Online tagging: look up and apply metadata from online sources, with
626
+ interactive match prompts, rate-limit display, and per-source credentials
627
+ in the new Admin Tagging tab. Or tag a single comic directly by a known
628
+ Metron or Comic Vine issue id or URL, skipping the search.
629
+ - Upload, replace, and remove custom covers for any group from the web UI,
630
+ plus a Custom Covers admin tab.
631
+ - Back up and restore all user data — accounts, bookmarks, favorites,
632
+ settings, libraries — via a `user_data.sqlite` sidecar, the Admin Restore
633
+ tab, or `codex restore_user_data`. Snapshotted nightly.
634
+ - Optional self-service password reset, and email verification for new
635
+ sign-ups (both require SMTP).
636
+ - New user Profile dialog for self-service username, email, and API token
637
+ (moved here from the sidebar).
638
+ - Database and user-data backups are now compressed, dated, and auto-pruned.
639
+ - Redesigned admin panel has moves settings under relevant tabs.
640
+ - Performance
641
+ - Library imports are faster: forced re-imports run over 20x faster, fresh
642
+ imports almost 4x, and polls that find nothing changed are now nearly
643
+ instant — no more rewriting every comic, regenerating every cover, and
644
+ refreshing every browser on a no-op poll.
645
+ - Browsing large libraries is faster: table, search, and sorted folder views
646
+ that could take minutes now load in about a second, metadata works on
647
+ collections of any size, and browsing stays responsive during imports.
648
+
649
+ ## v1.12.8
650
+
651
+ - Fixes
652
+ - Fix read/unread filter leaking one user's read state to other users.
653
+
654
+ ## v1.12.7
655
+
656
+ - Fixes
657
+ - Fix folder custom covers.
658
+ - Fix AUTH\_REMOTE\_USER for api endpoints.
659
+
660
+ ## v1.12.6
661
+
662
+ - Fixes
663
+ - Admin panel and other lazy-loaded routes broken.
664
+
665
+ ## v1.12.5
666
+
667
+ - Fixes
668
+ - Fix "Last Read" column in table view crashing.
669
+ - Ignore dotfiles.
670
+ - Features
671
+ - Select by range in multi-select with shift+click.
672
+
673
+ ## v1.12.4
674
+
675
+ - Fixes
676
+ - Crash on Cleanup Favorites Janitor Job.
677
+ - Features
678
+ - Force Update Tags by individual group.
679
+
680
+ ## v1.12.3
681
+
682
+ - Fixes
683
+ - Fix scroll bar controls appearing on the Edge browser in tags screen
684
+ values.
685
+ - Features
686
+ - Add touch swiping back to the reader with an implementation that's less
687
+ twitchy than before.
688
+
689
+ ## v1.12.2
690
+
691
+ - Fixes
692
+ - Ordering in browser card mode was broken for groups
693
+
694
+ ## v1.12.1
695
+
696
+ - Features
697
+ - Fail2Ban support with a dedicated log. See README.
698
+ - Fixes
699
+ - Comic filename parsing improvements.
700
+ - Downgrade noisy profile forbidden WARNINGS to DEBUG. They are a normal
701
+ part of connecting.
702
+
703
+ ## v1.12.0 - Browser Table View & Favorites
704
+
705
+ - Features
706
+ - Browser Table mode shows configurable, sortable, metadata columns.
707
+ - Favorite objects and filter on them.
708
+ - Serve image-dominant PDF pages as just their images.
709
+
710
+ ## v1.11.5
711
+
712
+ - Fixes
713
+ - Fix occasional recreation of comics on docker or network filesystems.
714
+ - Fix double polling of some libraries.
715
+ - Fix Codex sometimes hanging on shutdown after Ctrl+C.
716
+ - Fix PDFs rendering OCR overlay text.
717
+ - Fix PDFs sometimes not rendering at correct resolution
718
+
719
+ ## v1.11.4
720
+
721
+ - Fixes
722
+ - Fix extra horizontal scrollbar in browser on Firefox.
723
+
724
+ ## v1.11.3
725
+
726
+ - Fixes
727
+ - Fix several missing information chips in the tags view.
728
+
729
+ ## v1.11.2
730
+
731
+ - Fixes
732
+ - Browser had two scroll bars.
733
+ - Reader stopped scrolling to the top of the page on page turn.
734
+ - Reader setting Cache Entire Book now defaults to False.
735
+
736
+ ## v1.11.1
737
+
738
+ - Fixes
739
+ - Crash on anonymous user setting timezone
740
+
741
+ ## v1.11.0 - Age Restrictions & Snappiness
742
+
743
+ - Notice
744
+ - This version of codex needs to re-sync the search index on first startup
745
+ which make take time on large collections. However, the new search sync is
746
+ faster than before.
747
+ - Fixes
748
+ - Clear stale `metron.cloud/{genre,location,story,tag,role}/...` URLs from
749
+ existing identifiers — Metron has no public web pages for those types, so
750
+ the links always 404.
751
+ - Fix full text search for credits, identifiers and story arcs.
752
+ - Fix OPDS v2 progression syncing response.
753
+ - Fix OPDS v2 belongsTo.position attribute.
754
+ - Database repairs itself before migrations.
755
+ - Features
756
+ - Age Rating Restrictions now available in the Admin Users tab.
757
+ - Admin Flag for defaulting to Folder View.
758
+ - The codex cache directory for covers and views may now have it's location
759
+ configured.
760
+ - OPDS v2 alternate links for publications to external url identifiers.
761
+ - OPDS v2 publishers as proper contributors with links.
762
+ - OPDS v2 volumes in belongsTo
763
+ - Performance
764
+ - Performance improvements across all views and batch jobs.
765
+ - Comicbox learned how to use multiprocessing & caching for importing.
766
+ - Cover thumbnail generation uses multiprocessing and seeds covers on
767
+ import.
768
+
769
+ ## v1.10.15
770
+
771
+ - Fixes
772
+ - Fix OPDS navigation going to wrong browser groups. Fix contributed by
773
+ @beville.
774
+
775
+ ## v1.10.14
776
+
777
+ - Fixes
778
+ - OPDS auth challenges now include the WWW-Authenticate header and the
779
+ application/opds-authentication+json Content-Type so clients like Panels
780
+ reliably prompt for credentials.
781
+ - Various small frontend fixes
782
+
783
+ ## v1.10.13
784
+
785
+ - Fixes
786
+ - Fix PDFs not displaying with default reader settings.
787
+ - Fix browser paginator slider.
788
+ - Possible fix for expired and corrupt sessions causing FK errors.
789
+
790
+ ## v1.10.12
791
+
792
+ - Fixes
793
+ - Fix an occasional bug linking folders when importing.
794
+ - Fix updating comics crash by batching comic updates.
795
+ - Fix possible import crashes in delete & linking.
796
+ - Fix overzealous lazy importer importing tags from books that already had
797
+ tags.
798
+ - Fix reader settings clearing anomalies. Add a global reader settings clear
799
+ button.
800
+ - Fix unnecessary redirect in OPDS when viewing comic in extended metadata.
801
+
802
+ - Features
803
+ - Codex identifies itself in the HTTP Server: header.
804
+ - Codex identifies itself in the OPDS v1 <generator> tag.
805
+ - Adjusted importer batching variable defaults for greater throughput
806
+
807
+ ## v1.10.11
808
+
809
+ - Fixes
810
+ - Custom covers were not importing.
811
+ - Custom group covers were not counted in admin library view.
812
+
813
+ ## v1.10.10
814
+
815
+ - Fixes
816
+ - Fix creating non-extant reader global settings.
817
+
818
+ ## v1.10.9
819
+
820
+ - Fixes
821
+ - Fix browser settings not clearing with clear button.
822
+ - Fix search settings not clearing on OPDS start page.
823
+
824
+ ## v1.10.8
825
+
826
+ - Fixes
827
+ - Reset settings on OPDS start page more consistently.
828
+ - More logging for webserver errors.
829
+ - There's a jump in version numbers because the production build process was
830
+ broken.
831
+
832
+ ## v1.10.4-7 - Broken releases
833
+
834
+ ## v1.10.3
835
+
836
+ - Fixes
837
+ - Poll all libraries button was not polling all libraries.
838
+ - Fix OPDS v2 manifest series link.
839
+ - Force OPDS v2 start link to reset filters and order
840
+ - Library server folder picker shows folder menu more consistently.
841
+ - Features
842
+ - Select many mode in browser for browser actions.
843
+
844
+ ## v1.10.2
845
+
846
+ - Fixes
847
+ - Fix many OPDS v2 links leading to the wrong views.
848
+ - Fix admin update user validation.
849
+
850
+ ## v1.10.1 - Mistaken release
851
+
852
+ ## v1.10.0 - Rust modules & Settings Features
853
+
854
+ - 🚨 Big Changes 🚨
855
+ - The docker repo has changed to ghcr.io/ajslater/codex
856
+ - Django 6 requires python >=3.12.
857
+ - Unified configuration:
858
+ - Your hypercorn.toml config will be migrated automatically to
859
+ codex.toml. Options previously only configurable with environment
860
+ variables may now be also be specified in codex.toml.
861
+ - Some of the environment variable names have changed, but old values
862
+ are still respected for compatibility.
863
+ - Replaced the thumbnail filename algorithm. Thumbnails will regenerate.
864
+ - Fixes
865
+ - Fix old dynamic covers displaying when database had changed due to
866
+ imports.
867
+ - Fix erroneous "Bookmark" filter appearing in filter menu when a read state
868
+ is selected.
869
+ - Fix reader close button receiving nonsensical route.
870
+ - Fix job status messages sometimes not being updated correctly.
871
+ - Fix check latest version of Codex bug.
872
+ - Tags page sometimes had erroneous links went nowhere.
873
+ - Fixed some foreign key integrity fixing bugs.
874
+ - Features
875
+ - Browser can save and load named views.
876
+ - Reader Settings are now available for Series, Parent Folder and Story Arc
877
+ - The Admin Jobs tab is an enhanced tasks tab with start and stop buttons
878
+ and job progress.
879
+ - Browser Pane refreshes with a click/touch pull control.
880
+ - Performance Improvements
881
+ - Codex now uses the Granian http server instead of Hypercorn.
882
+ - The file watcher and poller now use one thread each no matter how many
883
+ libraries you have.
884
+ - Shaved about 80MB off the compressed docker image and 15MB off the python
885
+ wheel.
886
+
887
+ ## v1.9.24
888
+
889
+ - Fixes
890
+ - Fix OPDS v2 numberOfItems pagination sum.
891
+
892
+ ## v1.9.23
893
+
894
+ - Fixes
895
+ - Fix admin tasks tab crash
896
+ - Fix Library folder picker showing bad data
897
+
898
+ ## v1.9.22
899
+
900
+ - Fixes
901
+ - Fix many batch jobs not running. Including polling and importing.
902
+
903
+ ## v1.9.21
904
+
905
+ - Fixes
906
+ - Fix OPDS v2 manifest crash
907
+
908
+ ## v1.9.20
909
+
910
+ - Features
911
+ - Browser filters now show selected filters more clearly in the menus.
912
+ - Fix filtering on credits when clicking on metadata chips.
913
+ - OPDS v2 credits and subjects now link to views filtered on the tag.
914
+
915
+ ## v1.9.19
916
+
917
+ - Fixes
918
+ - Fix PDF date parsing bug on import.
919
+ - Fix comic names with null volume\_to field.
920
+ - Provide volume name in comic title for OPDS v2 as there's no volume view
921
+ available.
922
+ - Fix OPDS v2 folder as collection naming.
923
+ - Dev Notes
924
+ - Vuetify 4.0 frontend
925
+
926
+ ## v1.9.18
927
+
928
+ - Fixes
929
+ - Fix search indexing the universes tag.
930
+
931
+ ## v1.9.17 Broken build
932
+
933
+ ## v1.9.16
934
+
935
+ - Fixes:
936
+ - Fix broken Reader close button.
937
+ - Fix OPDS v2 progression crash
938
+
939
+ ## v1.9.15
940
+
941
+ - Fixes:
942
+ - Fix OPDS v2 progression crash.
943
+ - Adjust OPDS v2 progression position field to be 1 based, while Codex page
944
+ is 0 based.
945
+
946
+ ## v1.9.14
947
+
948
+ - Fixes:
949
+ - Fix bad href validation in OPDS v2 leading to null links and therefore
950
+ invalid OPDS.
951
+
952
+ ## v1.9.13
953
+
954
+ - Change:
955
+ - Codex only accepts auth tokens prefixed with the Bearer header.
956
+ - Fixes:
957
+ - Fix crash on API schema generation.
958
+ - Fix scribe daemon not shutting down properly.
959
+ - Fix Swagger API docs crash.
960
+ - Fix full text search barfing on single quoted terms.
961
+ - Return 401 and authorization v1 json to OPDS instead of 403 on auth
962
+ failure more often.
963
+ - Features:
964
+ - OPDS order by filename.
965
+
966
+ ## v1.9.12
967
+
968
+ - Fixes:
969
+ - Fix accepting OPDS v2 progression correct Content-Type.
970
+ - Fix parsing OPDS v2 progression position.
971
+ - Fix bookmark update crash.
972
+
973
+ ## v1.9.11
974
+
975
+ - Fixes:
976
+ - Fix OPDS v1 pagination.
977
+
978
+ ## v1.9.10
979
+
980
+ - Fixes
981
+ - Fix Remote-User authorization for proxy setting http headers.
982
+ - Fix order links not appearing in OPDS v1
983
+ - Feature:
984
+ - Allow "Bearer" header for token authentication in addition to "Token"
985
+
986
+ ## v1.9.9
987
+
988
+ - Fixes
989
+ - Access control bug would let users see comics in include groups they were
990
+ not a part of.
991
+ - Remove redundant top links from OPDS v2 facets group block.
992
+ - Fixed a status crash.
993
+ - Features
994
+ - Remote-User HTTP header SSO support activated by an environment variable.
995
+ See docs.
996
+ - HTTP Header Auth Tokens are now accepted as authorization. Useful for OPDS
997
+ and possibly some SSO setups.
998
+
999
+ ## v1.9.8
1000
+
1001
+ - Bad release. Does not start.
1002
+
1003
+ ## v1.9.7
1004
+
1005
+ - Fixes
1006
+ - Fix OPDS v2 manifest/reading crash.
1007
+ - Fix OPDS v2 search.
1008
+
1009
+ ## v1.9.6
1010
+
1011
+ - Fixes
1012
+ - Fix OPDS feed crash.
1013
+
1014
+ ## v1.9.5
1015
+
1016
+ - Fixes
1017
+ - Fix settings not resetting to default on OPDS start pages.
1018
+ - Isolate OPDS settings from web settings so they don't reset each other.
1019
+
1020
+ ## v1.9.4
1021
+
1022
+ - Fixes
1023
+ - Fix unnecessary redirects in OPDS v1 & v2 search.
1024
+
1025
+ ## v1.9.3
1026
+
1027
+ - Fixes
1028
+ - Unnecessary redirect going to OPDS v1 start page.
1029
+ - Fixed start page link in OPDS v2.0
1030
+
1031
+ ## v1.9.2
1032
+
1033
+ - Fixes
1034
+ - OPDS 2.0 homepage preview sections were showing the wrong queries.
1035
+ - OPDS 2.0 progression bookmarking was broken. Stump doesn't seem to be
1036
+ transmitting progression data yet, though.
1037
+ - Features
1038
+ - OPDS 1.0 gains a homepage similar to OPDS v2
1039
+ - OPDS start page URLS are now different. See the OPDS popup dialog.
1040
+
1041
+ ## v1.9.1
1042
+
1043
+ - Fixes
1044
+ - OPDS v2 fix crash on faceted views.
1045
+
1046
+ ## v1.9.0 - OPDS 2.0 Redesign
1047
+
1048
+ - Fixes
1049
+ - Fix crash in OPDS v2 feed.
1050
+ - Features
1051
+ - Redesigned OPDS v2 to work with Stump & Readest Clients
1052
+ - Docker healthcheck endpoint. See docs.
1053
+
1054
+ ## v1.8.22
1055
+
1056
+ - Fixes
1057
+ - Fix reading books crash that crept into the last release.
1058
+
1059
+ ## v1.8.21
1060
+
1061
+ - Fixes
1062
+ - Fix Close Book button linking to parent of desired route.
1063
+
1064
+ ## v1.8.20
1065
+
1066
+ - Fixes
1067
+ - Fix dragging when zoomed in in reader when using mouse left button.
1068
+ - Fix weird spacing and borders on browser and reader toolbars.
1069
+ - Attempt to make Close Book route in reader more accurate.
1070
+
1071
+ ## v1.8.19
1072
+
1073
+ - Fixes
1074
+ - Do not sanitize Library and Comic path names. Fixes an import crash on
1075
+ paths with dangerous looking strings in them.
1076
+ - Fix a crash when moving comics.
1077
+
1078
+ ## v1.8.18
1079
+
1080
+ - Fixes
1081
+ - Filter and Search parameters were being applied after clearing.
1082
+ - Features
1083
+ - Read metadata from PDF embedded files.
1084
+
1085
+ ## v1.8.17
1086
+
1087
+ - Features
1088
+ - Python 3.14 support.
1089
+
1090
+ - Fixes
1091
+ - Fix for codex sometimes shutting when asked to restart.
1092
+
1093
+ ## v1.8.16
1094
+
1095
+ - Don't support Python 3.14 until dependencies do.
1096
+ - Docker image is now based on trixie debian
1097
+
1098
+ ## v1.8.15
1099
+
1100
+ - Performance
1101
+ - Replace axios with xior AJAX library.
1102
+
1103
+ ## v1.8.14
1104
+
1105
+ - Fixes
1106
+ - Fix settings not saving in reader and sometimes in browser.
1107
+ - Fix shutdown and restart signals on Windows.
1108
+
1109
+ ## v1.8.13
1110
+
1111
+ - Fixes
1112
+ - Fix import crash when metadata import is disabled.
1113
+
1114
+ ## v1.8.12
1115
+
1116
+ - Fixes
1117
+ - Fix publishers and series tags disappearing. Use Library Force Update to
1118
+ restore them.
1119
+ - Fix credit role order in tags screen.
1120
+
1121
+ ## v1.8.11
1122
+
1123
+ - Fixes
1124
+ - Restarting Codex with Codex would still crash. More comprehensive fix.
1125
+
1126
+ ## v1.8.10
1127
+
1128
+ - Fixes
1129
+ - Restarting Codex with Codex would crash, so Auto-Update restarts were
1130
+ broke.
1131
+ - Sorry non-docker homies! Thanks @professionaltart.
1132
+ - Fix universes not being search indexed (very rare).
1133
+ - More reliable re-render for browser page slider and navigation buttons.
1134
+
1135
+ ## v1.8.9
1136
+
1137
+ - Fixes
1138
+ - Attempt to fix not saving new stat values if update doesn't update comic
1139
+ metadata.
1140
+ - Attempt to fix import bug where update metadata is disposed of before it
1141
+ can be applied.
1142
+ - Attempt to fix browser page slider not updating to match the current
1143
+ folder.
1144
+
1145
+ ## v1.8.8
1146
+
1147
+ - Fixes
1148
+ - Fix import crash on some Metron tagged comics with a primary identifier
1149
+ source.
1150
+
1151
+ ## v1.8.7
1152
+
1153
+ - Fixes
1154
+ - Make Full Text Search table smaller. Some irrelevant fields and data were
1155
+ causing exponential bloat, crippling large libraries.
1156
+ - Fix search by field for string fields, identifiers and issue.
1157
+ - Fix overflow on browser card titles.
1158
+
1159
+ ## v1.8.6
1160
+
1161
+ - Fixes
1162
+ - Scale search index sync batch size with memory. Large search sync query
1163
+ was preventing search sync of large databases on small machines.
1164
+
1165
+ ## v1.8.5
1166
+
1167
+ - Fixes
1168
+ - Better fix for persistent settings. Old fix could lead to settings that
1169
+ never clear.
1170
+
1171
+ ## v1.8.4
1172
+
1173
+ - Fixes
1174
+ - Fix not importing page\_count when import metadata is off, leads to
1175
+ unreadable books.
1176
+ - Fix persistent settings.
1177
+
1178
+ ## v1.8.3
1179
+
1180
+ - Fixes
1181
+ - Fix searching by string like fields in the search bar like 'path'.
1182
+ - Fix minor search update exception when there's nothing search related to
1183
+ update on import.
1184
+
1185
+ ## v1.8.2
1186
+
1187
+ - Fixes
1188
+ - Force docker logs (all stdout logs) to colorize output.
1189
+
1190
+ ## v1.8.1
1191
+
1192
+ - Fixes
1193
+ - Fix minor search update exception.
1194
+
1195
+ ## v1.8.0 - MetronInfo & CB7
1196
+
1197
+ - Features
1198
+ - Support
1199
+ [MetronInfo.xml v1.0 Schema](https://metron-project.github.io/docs/category/metroninfo)
1200
+ for comic metadata.
1201
+ - Support CB7 (7zip) comic archives.
1202
+ - Search Indexing now also done in the import phase which is faster than
1203
+ syncing from the db:
1204
+ - 20k comics both imported and indexed in 9 minutes on my old macbook at
1205
+ a rate of 30 comics per second. Half a million comics might take less
1206
+ than 5 hours on the same machine.
1207
+ - However this update replaces the search index and Codex will sync the
1208
+ search index when it starts.
1209
+ - Fewer database updates when comics change metadata or don't change
1210
+ metadata at all means fewer and faster update imports.
1211
+ - New Tags:
1212
+ - Add Universes. Main Characters, and Main Team marked with a ★.
1213
+ - Metron tags can provide links to web databases for each tag.
1214
+ - New Import Metadata on Demand Admin Flag.
1215
+ - Add manual Import Abort task for admins.
1216
+ - Browser tab titles show route and page title, no longer show custom
1217
+ banner.
1218
+ - Logging format changed.
1219
+
1220
+ - Fixes
1221
+ - Reading Order in reader was not always defaulting to your last Browser Top
1222
+ Group.
1223
+ - Fixed filtering on Critical Rating and FileType
1224
+ - Fixed searching on Critical Rating field.
1225
+ - Bug displaying Age Rating, Original Format, Scan Info, Tagger in metadata.
1226
+ - Fixed database locking crashes.
1227
+ - Attempt to fix major version change CSRF errors by forcing logout if CSRF
1228
+ errors occur.
1229
+
1230
+ - Dev
1231
+ - Uses Comicbox 2.0 see
1232
+ [Comicbox NEWS for all details](https://github.com/ajslater/comicbox/blob/main/NEWS.md)
1233
+
1234
+ ## v1.7.15
1235
+
1236
+ - Fixes
1237
+ - Fix unable to change top group to folders or story arcs if on root browse
1238
+ page.
1239
+
1240
+ ## v1.7.14
1241
+
1242
+ - Fixes
1243
+ - Fix Reader jumping back into the same book when changing to a new book.
1244
+
1245
+ ## v1.7.13
1246
+
1247
+ - Fixes
1248
+ - Fix Reader Reading Order dropdown unable to change reading order.
1249
+ - Fix loading root browser pages greater than 1 as a new route.
1250
+ - Missing books error screen had no toolbars, could not close it.
1251
+ - Fix docker configuration for Synology by creating a comicbox config
1252
+ directory.
1253
+ - Wait to load browser and reader pages until login tried with a cookie.
1254
+
1255
+ - Features
1256
+ - Experimental `CODEX_BROWSER_MAX_OBJ_PER_PAGE` env variable. Default
1257
+ is 100.
1258
+
1259
+ ## v1.7.12
1260
+
1261
+ - Fixes
1262
+ - Crash downloading comics when user is in a group.
1263
+ - User last active activity was often not recorded.
1264
+
1265
+ - Features
1266
+ - Animate Pages option toggle in reader settings
1267
+
1268
+ ## v1.7.11
1269
+
1270
+ - Fixes
1271
+ - Fix importing of story arc tags
1272
+
1273
+ ## v1.7.10
1274
+
1275
+ - Fixes
1276
+ - Fix occasional import link tags crash.
1277
+
1278
+ ## v1.7.9
1279
+
1280
+ - Fixes
1281
+ - Tags page layout fixes.
1282
+
1283
+ ## v1.7.8
1284
+
1285
+ - Features
1286
+ - Tags page layout changes with more notes from @beville.
1287
+
1288
+ - Fixes
1289
+ - Tags for simple comic fields were incorrectly taken from the first comic
1290
+ in a group.
1291
+ - Filter menu wasn't populating for top folder.
1292
+ - Librarian status tasks would appear out of order.
1293
+
1294
+ ## v1.7.7
1295
+
1296
+ - Fixes
1297
+ - Fix Librarians Statuses not loading in UI.
1298
+ - Tags screen crash with untagged series or volumes.
1299
+ - Fix tags screen Mark Read confirmation names.
1300
+ - Order Tags Contributors by relevance not alphabetically.
1301
+
1302
+ ## v1.7.6
1303
+
1304
+ - Features
1305
+ - Always Show Filenames setting for browser cards.
1306
+ - Tags page layout changes with notes from @beville.
1307
+
1308
+ - Fixes
1309
+ - Fix import crash on files with escapable html characters or utf-8 chars in
1310
+ the filename.
1311
+ - Fix page range crash in reader.
1312
+ - Fix overzealous escaping of html in metadata strings.
1313
+ - Fix group tags not aggregated properly in metadata screen for folders and
1314
+ story arcs.
1315
+
1316
+ ## v1.7.5
1317
+
1318
+ - Fixes
1319
+ - More granular websocket notifications means the web UI does fewer more
1320
+ targeted data updates.
1321
+ - Prevent deactivating and deprivileging the logged in user.
1322
+ - Fix resetting active flag when resetting admin user with environment
1323
+ variable.
1324
+ - Fix crash in auto-update when unable to determine current Codex version.
1325
+
1326
+ ## v1.7.4
1327
+
1328
+ - Fixes
1329
+ - Fix setting bookmarks and book settings bug.
1330
+ - Sanitize HTML out of imported comic metadata fields and admin inputs.
1331
+
1332
+ ## v1.7.3
1333
+
1334
+ - Features
1335
+ - Browser Order By Child Count.
1336
+ - Customized site title option in Admin Flags.
1337
+ - Codex logs are now compressed when rotated.
1338
+ - Support OPDS v2.0 Progression (streaming) draft proposal from Aldiko.
1339
+
1340
+ - Fixes
1341
+ - Browser Group Mark Read/Unread obeys browser filters.
1342
+ - Fixed bad redirect when to deep linking into browser Folders or Story
1343
+ Arcs.
1344
+ - Fixed order by name for issues disregarding volume names in browser and
1345
+ reader
1346
+ - Fix display of name and filename on browser cards.
1347
+ - Fix batching import of Contributors to prevent crash on large imports.
1348
+ - Fixed an OPDS Metadata crash.
1349
+
1350
+ ## v1.7.2
1351
+
1352
+ - Features
1353
+ - Download entire groups of comics from the browser and metadata screens.
1354
+
1355
+ - Fixes
1356
+ - Fix reader page API sometimes crashing.
1357
+
1358
+ ## v1.7.1
1359
+
1360
+ - Features
1361
+ - Always display filename for comics on browser cards in Folder View
1362
+ - Detect .jxl extension (JPEG XL) as a comic page.
1363
+
1364
+ - Fixes
1365
+ - Fix ignoring MacOS resource forks in archives.
1366
+ - Don't redirect to issue view on first search in Folder View
1367
+
1368
+ ## v1.7.0 - SQLite Search
1369
+
1370
+ - Features
1371
+ - Search
1372
+ - Use SQLite Full Text Search v5 for search engine.
1373
+ - Search syntax has changed. See the help popup at the end of the search
1374
+ bar.
1375
+ - Use faster db column lookups for some search bar queries. Thanks
1376
+ @bmfrosty.
1377
+ - You may remove the directory `config/whoosh_index`.
1378
+ - Integrity Checks
1379
+ - Faster more comprehensive db integrity checks run every night instead of
1380
+ at startup.
1381
+ - Integrity checks can run on startup with environment variables documented
1382
+ in README.
1383
+
1384
+ - Fixes
1385
+ - Actually fix browser opening reader at correct bookmark.
1386
+ - Also fixes progress calculation on browser cards.
1387
+ - Fixed crashes when the upstream codex version is not accessible.
1388
+ - Fixed possible race conditions with nightly maintenance.
1389
+
1390
+ ## v1.6.19
1391
+
1392
+ - Fixes
1393
+ - Fix browser opening reader at correct bookmark.
1394
+ - Fix for browser triple tap bug for android tablet browsers in desktop
1395
+ mode.
1396
+ - Fix populating arcs in reading order menu in reader.
1397
+ - Fix submitting old arc to reader API.
1398
+ - Fix Version API blocking. Add check version admin task.
1399
+ - Fix Library "Poll Every" validation.
1400
+ - Fix Metadata dialog not scrolling sometimes.
1401
+ - Fix file extension for downloaded PDF pages.
1402
+
1403
+ ## v1.6.18
1404
+
1405
+ - Yanked. Broken Reader.
1406
+
1407
+ ## v1.6.17
1408
+
1409
+ - Features
1410
+ - Admin Action buttons now responsive to view size.
1411
+
1412
+ - Fixes
1413
+ - Auto update wasn't comparing versions well.
1414
+ - Possible fix for initializing admin flags crash.
1415
+
1416
+ ## v1.6.16
1417
+
1418
+ - Fixes
1419
+ - Import may have been marking mounted drive's comics modified
1420
+ inappropriately.
1421
+ - Import crash when moving comics.
1422
+ - Relink deep orphan folders in the db instead of recreating them.
1423
+ - Do not adopt orphan folders deleted from the filesystem.
1424
+ - Admin Tab change password for user broke.
1425
+ - More robust ui cache busting on library update.
1426
+ - Fix minor error on metadata text boxes with null values.
1427
+
1428
+ ## v1.6.15
1429
+
1430
+ - Fixes
1431
+ - Fix more Metadata links to browser groups not computing and resolving
1432
+ properly.
1433
+
1434
+ ## v1.6.14
1435
+
1436
+ - Fixes
1437
+ - Fix Metadata links to browser groups not resetting topGroup properly.
1438
+
1439
+ ## v1.6.13
1440
+
1441
+ - Fixes
1442
+ - Admin Panel Link was showing in the admin panel, not in the browser or
1443
+ reader.
1444
+
1445
+ ## v1.6.12
1446
+
1447
+ - Features
1448
+ - Native Windows installation instructions in the README thanks to
1449
+ @professionaltart.
1450
+ - Anonymously send stats to improve Codex. See admin/flags for description
1451
+ and opt-out.
1452
+
1453
+ - Fixes
1454
+ - Detect iOS devices in Desktop Mode for proper iOS tap behavior.
1455
+
1456
+ ## v1.6.9, v1.6.10, v1.6.11
1457
+
1458
+ - Yanked. Bad network behavior. Broken javascript.
1459
+
1460
+ ## v1.6.8
1461
+
1462
+ - Fixes
1463
+ - Fix OPDS streaming in lazy metadata mode for Chunky-like readers which
1464
+ require a page count.
1465
+
1466
+ ## v1.6.7
1467
+
1468
+ - Fixes
1469
+ - OPDS authorization for some readers
1470
+ - Remove superfluous debug exception trace on timezone endpoint.
1471
+
1472
+ ## v1.6.6
1473
+
1474
+ - Fixes
1475
+ - User creation in admin panel broke.
1476
+ - There was confusing UI on admin panel unauthorized screen.
1477
+
1478
+ ## v1.6.5
1479
+
1480
+ - Fixes:
1481
+ - Fix logout button not working.
1482
+
1483
+ ## v1.6.4
1484
+
1485
+ - Fixes:
1486
+ - Reader crash loading reader order arcs.
1487
+ - OPDS datetimes now uniformly served in iso format.
1488
+ - Fix browser filter menus clearing and loading irregularities.
1489
+ - Fix parsing negative issue numbers in filenames.
1490
+ - Log common non-ComicBookInfo archive comments with less alarm.
1491
+ - Removed
1492
+ - LOGLEVEL=VERBOSE deprecated for a long time. Use LOGLEVEL=DEBUG
1493
+
1494
+ ## v1.6.3
1495
+
1496
+ - Features
1497
+ - Reader inherits the last browser view, with filters, as it's default
1498
+ reading arc.
1499
+ - When browser page is less than 1, redirect to parent. When 1 and empty,
1500
+ show empty page.
1501
+ - Fix
1502
+ - The cover api was not accepting http basic (opds) authentication.
1503
+
1504
+ ## v1.6.2
1505
+
1506
+ - Fixes
1507
+ - Fix pagination with more than 100 comics in the browser.
1508
+
1509
+ ## v1.6.1
1510
+
1511
+ - Features
1512
+ - Add a retry button on book load error and page load error pages.
1513
+
1514
+ - Fixes
1515
+ - Fix unable to login if anonymous users prohibited.
1516
+ - Fix filter crash.
1517
+ - Metadata was showing incorrect groups for individual comics
1518
+
1519
+ ## v1.6.0 - Custom Covers & Breadcrumbs
1520
+
1521
+ - Features
1522
+ - Custom Covers for Folders, Publishers, Imprints, Series and Story Arcs.
1523
+ - Browser setting to choose Dynamic or First group covers. Thanks @Thakk.
1524
+ - Breadcrumbs in the browser
1525
+ - Reader can read by Volumes as well as by Series, Folder and StoryArc.
1526
+ - More compact UI controls.
1527
+ - Metadata tags can click to browse filtered on that tag.
1528
+ - Experimental API throttling support. Search the README for "throttle".
1529
+ - Add websocket updates for anonymous sessions
1530
+ - Speed and caching optimizations.
1531
+ - Fixes
1532
+ - OPDS http basic authorization fixed.
1533
+ - Groups with the same name in different cases collapse into one group in
1534
+ the browser.
1535
+ - Order By respects browser show groups settings.
1536
+ - Fixed re-import of urls and identifiers.
1537
+ - Fixed cleanup of some foreign keys when no longer used.
1538
+ - Clean up all orphan folders on startup instead of first pass
1539
+ - Fix creating bookmarks.
1540
+ - Update browser sessions for user when users finish a book.
1541
+
1542
+ ## v1.5.19
1543
+
1544
+ - Fixes
1545
+ - Metadata crash on folders.
1546
+
1547
+ ## v1.5.18
1548
+
1549
+ - Fixes
1550
+ - Ignore comic pages from dotfiles and macOS resource forks.
1551
+
1552
+ ## v1.5.17
1553
+
1554
+ - Fixes
1555
+ - Fix background color of browser card controls since vuetify update.
1556
+
1557
+ ## v1.5.16
1558
+
1559
+ - Fixes
1560
+ - Fix creating and updating exclude groups.
1561
+ - More Web & url tags parsed from metadata.
1562
+
1563
+ ## v1.5.15
1564
+
1565
+ - Fixes
1566
+ - OPDS streaming broken for some clients (Chunky) without metadata.
1567
+ - OPDS redirects for empty pages or 404's were crashing.
1568
+ - OPDS uses filename fallback for title if missing metadata.
1569
+
1570
+ ## v1.5.14
1571
+
1572
+ - Features
1573
+ - Relative folder path is now searchable if Folder View enabled.
1574
+ - More granular caching hopefully for better performance.
1575
+ - Fixes
1576
+ - OPDS redirects were crashing.
1577
+ - Null search was crashing metadata for single comics
1578
+ - Fix a breakage with fast file static file serving.
1579
+ - Change browser order by to something sensible when search cleared.
1580
+
1581
+ ## v1.5.13
1582
+
1583
+ - Fixes
1584
+ - Fix root folder for library sometimes not created on import.
1585
+ - Fix redirect loop in browser when all members of a group deleted.
1586
+ - Fix browser pagination buttons not advancing.
1587
+ - Fix OPDS v2 crash
1588
+ - Fix browser throbber not appearing when making query.
1589
+
1590
+ ## v1.5.12
1591
+
1592
+ - Fixes
1593
+ - Fix Folder browser offset pagination bug for folder with books and no
1594
+ folders.
1595
+
1596
+ ## v1.5.11
1597
+
1598
+ - Fixes
1599
+ - Fix erroneous Folder View page out of bounds redirect.
1600
+
1601
+ ## v1.5.10
1602
+
1603
+ - Fixes
1604
+ - Folder view was not showing all the books on mixed folder & book pages.
1605
+ - Shutdown and Restart admin tasks were not working.
1606
+
1607
+ ## v1.5.9
1608
+
1609
+ - Fixes
1610
+ - Crash when reading comics in folder view introduced in v1.5.8
1611
+
1612
+ ## v1.5.8
1613
+
1614
+ - Fixes
1615
+ - No search results was returning every comic instead of no comics.
1616
+ - issue: field searching returned no results.
1617
+ - issue\_number, community\_rating, & critical rating no longer require two
1618
+ digits of precision.
1619
+ - Excess books included in reader arc/folder/series.
1620
+ - Features
1621
+ - Even Lazier import when Import Metadata Admin flag turned off.
1622
+ - issue: field search now combines numeric and suffix parts.
1623
+
1624
+ ## v1.5.7
1625
+
1626
+ - Fixes
1627
+ - Pagination crash with more than 100 folders.
1628
+ - Experimental fix for Synology Docker CHOWN\_PYTHON\_SITE\_PACKAGES=1
1629
+
1630
+ ## v1.5.6
1631
+
1632
+ - Fixes
1633
+ - Fix sqlite limit crash when importing > \~1000 web urls.
1634
+
1635
+ ## v1.5.5
1636
+
1637
+ - Fixes
1638
+ - Attempt to fix import crash processing too much metadata at once. Allow
1639
+ undocumented env variable to manipulate this: CODEX\_FILTER\_BATCH\_SIZE
1640
+ (default: 900)
1641
+ - Fix search engine update crash for large collections.
1642
+
1643
+ ## v1.5.4
1644
+
1645
+ - Fixes
1646
+ - Django 5 broke root\_path prefixing from the asgi server. Work around it.
1647
+
1648
+ ## v1.5.3
1649
+
1650
+ - Fixes
1651
+ - Mouse horizontal scroll broken on Firefox.
1652
+
1653
+ ## v1.5.2
1654
+
1655
+ - Fixes
1656
+ - OPDS titles were showing as "Unknown" for comics with tagged volumes.
1657
+ - OPDS v2 was crashing.
1658
+ - Cover displayed for group browser with Name ordering was inconsistent.
1659
+ - Enable mouse drag horizontal scrolling in reader zoom mode.
1660
+
1661
+ ## v1.5.1
1662
+
1663
+ - Fixes
1664
+ - OPDS v1 was not rendering any data.
1665
+
1666
+ ## v1.5.0 - New Metadata Tags
1667
+
1668
+ - **Warning**
1669
+ - The main database path has changed from `db.sqlite3` to `codex.sqlite3`
1670
+ - This version forces a rebuild of the search index (not the main database)
1671
+ - Fixes
1672
+ - Some integrity checks weren't running on startup.
1673
+ - The metadata page would sometimes crash for Admins.
1674
+ - Moving a comic to a subfolder would crash.
1675
+ - Moving a deep subfolders would crash.
1676
+ - Moving a comic to the root folder would send the comic to the phantom
1677
+ zone.
1678
+ - Updating comics would sometimes not delete removed tags.
1679
+ - Series & Volumes no longer updated too often on import.
1680
+ - Admin Actions was polling all libraries when one selected.
1681
+ - OPDS was showing repeated titles.
1682
+ - Vertical scroller tracking and updating improved.
1683
+ - Page filenames are now sorted case insensitively which should improve
1684
+ order.
1685
+ - Features
1686
+ - Admin Exclude groups compliment the existing Include groups.
1687
+ - New metadata tags: Monochrome, Tagger, GTIN, Review, Identifiers, &
1688
+ Reading Direction. Available when comics are re-imported (Force Update
1689
+ recommended).
1690
+ - Identifiers metadata tag replaces the "Web" tag.
1691
+ - Reads ComicInfo.xml and other formats from the PDF keywords field. You can
1692
+ write ComicInfo.xml to PDFs with comictagger.
1693
+ - Reading Direction reader setting replaces Reader's vertical & horizontal
1694
+ views.
1695
+ - Supports the MetronInfo metadata format (rare).
1696
+ - Filesystem events filtered to only the ones Codex handles.
1697
+ - Double-click to zoom on pages in reader.
1698
+ - Read PDF with browser in a new tab link.
1699
+ - Experimental checkbox for caching entire comic or PDF in the browser.
1700
+ - Admin Flag for disabling most metadata import.
1701
+ - Dev
1702
+ - Using comicbox v1 for metadata import.
1703
+
1704
+ ## v1.4.3
1705
+
1706
+ - Fixes
1707
+ - Crash on undecodable characters in metadata.
1708
+ - Search terms weren't applying to filter choices population.
1709
+ - Fix name ordering. Show series & volume in browser cards if it affects
1710
+ name ordering.
1711
+ - Shrink reader page change boxes to let toolbar activate on corner clicks.
1712
+ - Dev
1713
+ - Big lint update.
1714
+
1715
+ ## v1.4.2
1716
+
1717
+ - Fixes
1718
+ - Groups were not aggregating children properly when searched.
1719
+ - Search could break Folder View.
1720
+ - Changing the browser 'Order By' would sometimes not apply.
1721
+ - Attempt to fix stale books appearing on reader load.
1722
+
1723
+ ## v1.4.1
1724
+
1725
+ - Fixes
1726
+ - A bug that prevented folder view from displaying under some circumstances.
1727
+
1728
+ ## v1.4.0 - Story Arcs
1729
+
1730
+ - Features
1731
+ - Story Arc Top Group in Web & OPDS Browsers
1732
+ - Support multiple Story Arcs per comic.
1733
+ - Supports Mylar CSV StoryArc / StoryArcNumber extension to ComicInfo.xml
1734
+ - Show only filter options that affect the current browse level.
1735
+ - Reader has a Series/Folder/Story Arc order selector.
1736
+ - Reader shows filename instead of metadata title if you've been browsing in
1737
+ File View
1738
+ - Downloads now use the original filename from disk.
1739
+ - Fix
1740
+ - Folder was view displayed but crashed in OPDS even if disabled by admin.
1741
+
1742
+ ## v1.3.14
1743
+
1744
+ - Features
1745
+ - Better metadata extraction for PDFs.
1746
+ - Support for ComicInfo StoryArcNumber, Review and GTIN tags.
1747
+ - Order by Story Arc Number
1748
+ - Do not detect .cbr files if unrar is not on the path.
1749
+ - Display filename for comics in browser file view.
1750
+ - Fixes
1751
+ - Import of ComicInfo Tags metadata.
1752
+ - Never removed old missing metadata when updated.
1753
+ - Error on moving folders.
1754
+ - Fix saving last route between sessions.
1755
+ - Better error messages if unrar is not on the path.
1756
+ - Removed
1757
+ - Remove support for unrar.cffi
1758
+
1759
+ ## v1.3.13
1760
+
1761
+ - Fixes
1762
+ - Group cover sometimes showing wrong cover for order.
1763
+ - Rare import crash.
1764
+
1765
+ ## v1.3.12
1766
+
1767
+ - Features
1768
+ - OPDS 2 Last Read link.
1769
+ - Fixes
1770
+ - Books without bookmarks could break parts of the reader.
1771
+ - Remove clipboard UI hints when clipboard isn't available.
1772
+
1773
+ ## v1.3.11
1774
+
1775
+ - Features
1776
+ - Last Read Order By option for web and OPDS.
1777
+ - Some Order By options now have a default descending order.
1778
+ - OPDS 1 special top links limited to 100 entries.
1779
+ - Fix
1780
+ - OPDS 1 links did not include filters or order information.
1781
+ - OPDS 1 page streaming broke.
1782
+
1783
+ ## v1.3.10
1784
+
1785
+ - Fixes
1786
+ - Crash when reading from folder view.
1787
+
1788
+ ## v1.3.9
1789
+
1790
+ - Features
1791
+ - Experimental OPDS 2.0 Support.
1792
+ - Create all comic covers admin task.
1793
+ - Faster Metadata pages for web and OPDS.
1794
+ - Fixes
1795
+ - Two pages mode broken.
1796
+ - Credits not imported bug.
1797
+ - Failed imports not removed when file removed bug.
1798
+
1799
+ ## v1.3.8
1800
+
1801
+ - Fixes
1802
+ - Fix Basic Authentication not enabled for OPDS Cover, Page, and Download
1803
+ views.
1804
+ - Tune low memory algorithm slightly lower for memory constrained systems.
1805
+ - Dev
1806
+ - Use makefile and moved most scripts into bin.
1807
+
1808
+ ## v1.3.7
1809
+
1810
+ - Feature
1811
+ - Metadata page links to groups to browse to.
1812
+ - Fixes
1813
+ - Crash when moving comics.
1814
+ - Container memory limits weren't detected for Linux kernels before 4.5
1815
+ - Reader
1816
+ - Horizontal Reader was slow for comics with high page counts.
1817
+ - Vertical scroller was not tracking pages in fitTo Width or Orig modes.
1818
+ - Validation error detecting child and parent library paths incorrectly.
1819
+ - Dev
1820
+ - Django 4.2
1821
+
1822
+ ## v1.3.6
1823
+
1824
+ - Fixes
1825
+ - Much lower memory tuning. Environment variables control tuning.
1826
+ - Possible fix for vertical scroller page tracking for tall images.
1827
+
1828
+ ## v1.3.5
1829
+
1830
+ - Fixes
1831
+ - OPDS sorting and filtering broke.
1832
+ - Fixed Download URLs for clients that ignore headers like Chunky.
1833
+ - Update Search Index now checks for more missing entries.
1834
+
1835
+ ## v1.3.4
1836
+
1837
+ - Fixes
1838
+ - Number out of range errors for issue when search indexing.
1839
+ - Total child pages of folders and groups sometimes overcounted, displaying
1840
+ half unread folders.
1841
+ - Reader: Vertical Scroll
1842
+ - Remove black bottom margin from images.
1843
+ - Was loading every page in a comic at once.
1844
+ - Page tracking did not work with images larger than viewport width.
1845
+
1846
+ ## v1.3.3
1847
+
1848
+ - Fixes
1849
+ - Number out of range errors when search indexing.
1850
+ - Possible Search Index Remove Stale and Abort jobs not scheduled properly.
1851
+ - OPDS missing entry ids rejected by Panels reader.
1852
+ - Downloads had an extra period in the suffix.
1853
+
1854
+ ## v1.3.2
1855
+
1856
+ - Fixes
1857
+ - Reader Fit To settings broken
1858
+ - Possible files marked modified too often.
1859
+
1860
+ ## v1.3.1
1861
+
1862
+ - Fixes
1863
+ - An import crash in create foreign keys.
1864
+ - Admin table dates were always in UTC so sometime off by a day.
1865
+
1866
+ ## v1.3.0 - Memory Management
1867
+
1868
+ - Features
1869
+ - Codex stable in 1GB RAM environments. Faster with more.
1870
+ - Codex uses unrar-cffi if available. Not required.
1871
+ - Browser
1872
+ - Navigate to top button.
1873
+ - Filter by File Type.
1874
+ - OPDS
1875
+ - Top links display only at catalog root.
1876
+ - Extended metadata moved to alternate links.
1877
+ - Admin
1878
+ - Search Indexer Remove Stale Records task much faster.
1879
+ - Comic import speedups.
1880
+ - Fancier sortable admin tables.
1881
+ - Removed `max_db_ops` config variable.
1882
+ - Fixes
1883
+ - Reader vertical scroll lost its place in Fit To Width or Orig mode.
1884
+ - OPDS downloaded files all had the same name.
1885
+ - Search Index
1886
+ - More robust against bad data.
1887
+ - Some search fields were case sensitive.
1888
+ - Admin
1889
+ - Graceful shutdown when Docker container stops.
1890
+ - Codex was backing up on every startup.
1891
+ - Status for batched imports (large imports or low memory) now reflects
1892
+ total instead of single batch.
1893
+
1894
+ ## v1.2.9
1895
+
1896
+ - Features
1897
+ - Vertical scroll option for reader.
1898
+ - Faster search index removes.
1899
+ - Admin Users tab shows last user activity date.
1900
+ - OPDSE PSE 1.2 extension for Panels `pse:lastReadDate`
1901
+ - Fixes
1902
+ - Fixed next and previous book keyboard shortcuts.
1903
+ - Improved OPDS acquisition page performance by removing more "categories"
1904
+ metadata.
1905
+
1906
+ ## v1.2.8
1907
+
1908
+ - Features
1909
+ - Search Index
1910
+ - Improved search indexing times.
1911
+ - Admin Flag to adjust nightly full optimization.
1912
+ - OPDS
1913
+ - "Newest Issues" Link replaced by "Recently Added" after user feedback.
1914
+ - Fixes
1915
+ - Volume tags were often not scanned. Recommend using Force Reimport on all
1916
+ libraries.
1917
+ - OPDS
1918
+ - Fix navigation links not inheriting view settings of current page.
1919
+ - Removed populating categories in OPDS to experiment with performance
1920
+ issues.
1921
+ - Fix OPDS pse lastRead tag.
1922
+ - Block library polling during database updates, fixes reindexing.
1923
+
1924
+ ## v1.2.7
1925
+
1926
+ - Fixes
1927
+ - Trap final search index commit errors and try again without merging
1928
+ segments.
1929
+ - Fix moving folders assigned no parent folder, displaying them in root.
1930
+
1931
+ ## v1.2.6
1932
+
1933
+ - Fixes
1934
+ - Impose memory limits on search index writers.
1935
+ - Impose items before write limits search index writer.
1936
+ - Sort comics by path for the reader navigation when in Folder View.
1937
+ - Remove inappropriate vertical scroll bars from page images.
1938
+
1939
+ ## v1.2.5
1940
+
1941
+ - Features
1942
+ - In Folder View the reader navigates by folder instead of series.
1943
+ - Fixes
1944
+ - OPDS crash on missing 24 hour time setting input required.
1945
+
1946
+ ## v1.2.4
1947
+
1948
+ - Features
1949
+ - User configurable 24 hour time format.
1950
+ - Reader
1951
+ - Displays covers as one page even in two page mode.
1952
+ - Read in Reverse mode.
1953
+ - Keymaps for adjusting page by one page in two page mode.
1954
+ - Previous and Next book navigation buttons and keymaps.
1955
+ - Fixes
1956
+ - OPDS:
1957
+ - Fix acquisition feed timeouts on large libraries by removing most m2m
1958
+ fields that populated OPDS categories
1959
+ - Fix pagination
1960
+ - Show series name in comic title.
1961
+ - Experiment: don't show top links or entry facets on pages > 1
1962
+ - Reader:
1963
+ - Two pages mode would skip pages.
1964
+ - Next/prev book goes to correct page for Right To Left tagged books.
1965
+ - Fix occasional error setting reader settings.
1966
+ - Fixed noop poll event happening on comic cover creation.
1967
+
1968
+ ## v1.2.3
1969
+
1970
+ - Fixes
1971
+ - Prevent search indexing starting over if it encounters errors.
1972
+ - Fix download buttons.
1973
+ - Fix admin settings drawer obscuring small screens.
1974
+ - Fix scroll bars showing inapproporately on admin tables.
1975
+ - Fix OPDS authors having 'i' appended.
1976
+
1977
+ ## v1.2.2
1978
+
1979
+ - Fixes
1980
+ - Fix all items removed from search index after update.
1981
+ - Speedups to cleaning up search engine ghosts.
1982
+
1983
+ ## v1.2.1
1984
+
1985
+ - Fixes
1986
+ - Crash on building a fresh database.
1987
+ - Fixed an importer crash when it tried to wait for changing files.
1988
+ - Disabling Library Poll prevented manual polling.
1989
+ - More explicit Poll Every hints in edit dialog.
1990
+ - Repository link didn't open a new window.
1991
+
1992
+ ## v1.2.0 - Faster PDFs & Fixed Multiprocessing
1993
+
1994
+ - Features
1995
+ - Faster and more robust PDF support. Codex no longer depends on the poppler
1996
+ library.
1997
+ - LOGLEVEL=VERBOSE deprecated in favor of DEBUG
1998
+ - Stats page API accessible via API key as well as admin login.
1999
+ - Fixes
2000
+ - Some Librarian Status messages would appear never to finish.
2001
+ - Development
2002
+ - The multiprocessing method is now S P A W N 💀 on all platforms.
2003
+ - Websockets are now handled by customized Django channels
2004
+ - aioprocessing Queue communicates between librarian and channels.
2005
+
2006
+ ## v1.1.6
2007
+
2008
+ - Fixes
2009
+ - Fix rare deletion and recreation of all comics when inodes changed.
2010
+
2011
+ ## v1.1.5
2012
+
2013
+ - Features
2014
+ - Admin Stats tab
2015
+ - Libraries can have a poll delay longer than 1 day.
2016
+ - Fixes
2017
+ - Crash when removing comics.
2018
+ - Admin Create & Update dialogs would get stuck open on submit.
2019
+ - Delete expired and corrupt sessions every night.
2020
+ - More liberal touch detection for more devices.
2021
+
2022
+ ## v1.1.4
2023
+
2024
+ - Fixes
2025
+ - Multiprocessing speedup for large search engine indexing jobs
2026
+ - Writes search engine data in segments.
2027
+ - Search engine segment combiner optimizer runs nightly (and manually).
2028
+
2029
+ ## v1.1.3
2030
+
2031
+ - Fixes
2032
+ - Fix some OPDS browsers unable to read comics.
2033
+
2034
+ ## v1.1.2
2035
+
2036
+ - Fixes
2037
+ - Fix unable to initialize database on first run
2038
+
2039
+ ## v1.1.0 - Whoosh
2040
+
2041
+ - Features
2042
+ - Switch to Whoosh Search Engine.
2043
+ - You may delete `config/xapian_index`.
2044
+ - May run on Windows now?
2045
+ - Moved db backups to `config/backups`.
2046
+ - Backup database before migrations.
2047
+ - Removed
2048
+ - Do not store search history for combobox across sessions.
2049
+ - Fixes
2050
+ - Fix Admin Library folder picker.
2051
+ - Uatu does a better job of ignoring device changes.
2052
+ - Don't pop out of folder mode on searches.
2053
+ - Fix showing error on unable to load comic image.
2054
+
2055
+ ## v1.0.3
2056
+
2057
+ - Features
2058
+ - Force update all failed imports admin task.
2059
+ - Fixes
2060
+ - Fix moving folders to subfolder orphans folders bug.
2061
+ - Fix id does not exist redirect loop.
2062
+
2063
+ ## v1.0.2
2064
+
2065
+ - Features
2066
+ - Support for Deflate64 zip compression algorithm.
2067
+ - Fixes
2068
+ - Fix Failed Imports not retrying import when updated.
2069
+ - Make db updates more durable and possibly problem comics paths in log.
2070
+ - Discard orphan websocket connections from the connection pool.
2071
+ - Fix Admin Status drawer closing at wrong time.
2072
+
2073
+ ## v1.0.1
2074
+
2075
+ - Features
2076
+ - Justify order-by field in browser cards.
2077
+ - Fixes
2078
+ - Fixed next book change drawer opening settings drawer.
2079
+ - Fixed zero padding on browser card issue numbers.
2080
+
2081
+ ## v1.0.0 - Vue 3
2082
+
2083
+ - Features
2084
+ - Removed old django admin pages.
2085
+ - Shutdown task for admins.
2086
+ - Configure logging with environment variables. See README.
2087
+ - Fixes
2088
+ - Fix displaying error in login dialog.
2089
+ - Fix saving community & critical rating filters to session
2090
+ - Fix fit to screen not enlarging pages smaller than screen.
2091
+ - Developer
2092
+ - Frontend is now Vuetify 3 over Vue 3. Using options API.
2093
+
2094
+ ## v0.14.5
2095
+
2096
+ - Fixes
2097
+ - Fix crash on decoding some comics metadata charset encoding.
2098
+
2099
+ ## v0.14.4
2100
+
2101
+ - Fixes
2102
+ - Fix login not available when AdminFlag Enable Non Users was unset.
2103
+ - Fix server PicklingError logging bug.
2104
+
2105
+ ## v0.14.3
2106
+
2107
+ - Fixes
2108
+ - Fix root\_path configuration
2109
+
2110
+ ## v0.14.2
2111
+
2112
+ - Fixes
2113
+ - Fix Librarian process hanging due to logging deadlock.
2114
+ - Fix reader keyboard shortcut help.
2115
+ - Fix book change drawer appearing in the middle of books.
2116
+
2117
+ ## v0.14.1
2118
+
2119
+ - Fixes
2120
+ - Resolve ties in browser ordering with default comic ordering.
2121
+ - Always close book change drawer before reader opens.
2122
+
2123
+ ## v0.14.0 - Sliding Pages
2124
+
2125
+ - Features
2126
+ - Animated sliding pages on reader.
2127
+ - Comic & PDF pages display loading, rendering and password errors.
2128
+ - Fixes
2129
+ - Filters with compound names were not loading choices.
2130
+ - Show only usable filters for current view as filter choices.
2131
+ - Allow filtering by None values when None values exist.
2132
+ - Handle an iOS bug with downloading pages and comics inside a PWA.
2133
+ - Fixed PDF failure to render on load and after changing settings.
2134
+ - Login & Change Password dialogs no longer activate Reader shortcuts by
2135
+ accident.
2136
+
2137
+ ## v0.13.0 - Admin Panel
2138
+
2139
+ - Features
2140
+ - Single Page Admin Panel.
2141
+ - Users may now change their own passwords.
2142
+ - OPDS
2143
+ - Use facets for known User Agents that support them. Default to using entry
2144
+ links.
2145
+ - Gain a Newest Issues facet, a Start top link and a Featured / Oldest
2146
+ Unread link.
2147
+ - More metadata tags.
2148
+ - Special thanks to @beville for UX research and suggestions
2149
+ - HTTP Basic auth only used for OPDS.
2150
+ - Frontend components do lazy loading, should see some speedups.
2151
+ - Fixes
2152
+ - Fixed imprints & volume levels not displaying sometimes.
2153
+ - Fix large images & downloads for some OPDS clients.
2154
+ - Developer
2155
+ - API v3 is more restful.
2156
+ - /api/v3/ displays API documentation.
2157
+ - Vite replaces Vue CLI.
2158
+ - Pina replaces Vuex.
2159
+ - Vitest replaces Jest.
2160
+ - Django livereload server and debug toolbar removed.
2161
+
2162
+ ## v0.12.2
2163
+
2164
+ - Fixes
2165
+ - Fix OPDS downloading & streaming for Chunky Comic Reader.
2166
+ - Hack in facets as nav links for Panels & Chunky OPDS readers.
2167
+
2168
+ ## v0.12.1
2169
+
2170
+ - Fixes
2171
+ - Disable article ignore on name sort in folder view.
2172
+ - Fix browser navigation bug with issues top group.
2173
+
2174
+ ## v0.12.0 - Syndication
2175
+
2176
+ - Features
2177
+ - OPDS v1, OPDS Streaming & OPDS Search support.
2178
+ - Codex now accepts HTTP Basic authentication.
2179
+ - If you run Codex behind a proxy that accepts HTTP Basic credentials that
2180
+ are different than those for Codex, be sure to disable authorization
2181
+ forwarding.
2182
+ - Larger browser covers.
2183
+ - Sort by name ignores leading articles in 11 languages.
2184
+ - Fixes
2185
+ - Use defusexml to load xml metadata for safety.
2186
+ - Removed process naming. My implementation was prone to instability.
2187
+
2188
+ ## v0.11.0 - Task Monitor
2189
+
2190
+ - Features
2191
+ - Librarian tasks in progress appear in the settings side drawer for
2192
+ adminstratiors.
2193
+ - Covers are now created on demand by the browser, rather than on import.
2194
+ - Browser Read filter.
2195
+ - Fixes
2196
+ - Bookmark progress bar updates in browser after closing book.
2197
+ - Metadata web links fix.
2198
+
2199
+ ## v0.10.10
2200
+
2201
+ - Features
2202
+ - Reader nav toolbar shows position in series.
2203
+
2204
+ - Fixes
2205
+ - Fix inability to log in when Enable Non Users admin flag is unset.
2206
+ - Simplify Admin Library delete confirmation page to prevent OOM crash.
2207
+ - Move controls away from iphone notch and home bar.
2208
+
2209
+ ## v0.10.9
2210
+
2211
+ - Fixes
2212
+ - Fix null bookmark and count fields in metadata
2213
+ - Fix indeterminate finished state when children have bookmark progress.
2214
+ - Fix maintenance running inappropriately on first run. Crashed xapian
2215
+ database.
2216
+ - Fix reader metadata keymap
2217
+
2218
+ - Features
2219
+ - Progressive Web App support
2220
+ - Reader "Shrink to" settings replaced by "Fit to"
2221
+
2222
+ - Special Thanks
2223
+ - To ToxicFrog, who's been finding most of these bugs I'm fixing for a
2224
+ while.
2225
+
2226
+ ## v0.10.8
2227
+
2228
+ - Fixes
2229
+ - Fixed reader nav clicks always showing the toolbars.
2230
+ - Attempt to fix unwanted browser toolbars when treated as mobile app
2231
+ - Wait half a second before displaying reader placeholder spinner.
2232
+ - Fix metadata missing search query.
2233
+ - Fix metadata cache busting.
2234
+
2235
+ - Features
2236
+ - Accessibility enhancements for screen readers.
2237
+
2238
+ ## v0.10.7
2239
+
2240
+ - Features
2241
+ - Browser tries to scroll to closed book to keep your place.
2242
+
2243
+ - Fixes
2244
+ - Fixed missing lower click area on browser cards.
2245
+ - Fixed session bookmark interfering with logged in user bookmark.
2246
+
2247
+ ## v0.10.6
2248
+
2249
+ - Broken docker container
2250
+
2251
+ ## v0.10.5
2252
+
2253
+ - Features
2254
+ - Reader shrink to screen setting becomes fit to screen and embiggens small
2255
+ images.
2256
+ - Reader changing to the next book now has visual feedback and requires two
2257
+ clicks.
2258
+
2259
+ - Fixes
2260
+ - Removed vertical scrollbars when Reader shrunk to height.
2261
+ - Don't disturb the view when top group changes from higher to lower.
2262
+
2263
+ ## v0.10.4
2264
+
2265
+ - Fixes
2266
+ - Fix double tap for non-iOS touch devices.
2267
+
2268
+ - Features
2269
+ - Shrink to Screen reader setting.
2270
+ - Reader throbber if a page takes longer than a quarter second to load.
2271
+
2272
+ ## v0.10.3
2273
+
2274
+ - Fixes
2275
+ - Fix PDF going blank when settings change.
2276
+ - Remove vestigial browser scrollbars when they're not needed. Thanks to
2277
+ ToxicFrog.
2278
+ - Fix cover cleanup maintenance task.
2279
+
2280
+ ## v0.10.2
2281
+
2282
+ - Fixes
2283
+ - URLS dictate view over top group. Fixes linking into views.
2284
+ - Fix possible cover generation memory leak.
2285
+ - Build a deadfall trap for search indexer zombies. Use Offspring's brains
2286
+ as bait.
2287
+
2288
+ ## v0.10.1
2289
+
2290
+ - Fixes
2291
+ - Linked old top level comics orphaned by library folders migration.
2292
+
2293
+ ## v0.10.0 - Portable Document Format
2294
+
2295
+ - Features
2296
+ - PDF support. Optional poppler-utils binary package needed to generate PDF
2297
+ cover thumbnails.
2298
+ - CBT support. Tarball comic archives.
2299
+ - Alphanumeric issue support. Requires rescanning existing comics.
2300
+ - Individual top level folders for each library.
2301
+ - Don't duplicate folder name in filename sort.
2302
+
2303
+ - Fixes
2304
+ - Comic file suffixes now matched case insensitively.
2305
+ - Finished comics count as 100% complete for bookmark aggregation.
2306
+ - Mark all folder descendant comics un/read recursively instead of immediate
2307
+ children.
2308
+ - Don't leak library root paths in Folder View for non-admins in the API.
2309
+ - Fixed aggregation bug showing inaccurate data when viewing group metadata.
2310
+ - More accurate Name sorting.
2311
+ - Fixed default start page for RTL comics.
2312
+ - Disabled reading links for empty comics.
2313
+ - Shield radiation from Venus to reduce zombie incidents.
2314
+
2315
+ ## v0.9.14
2316
+
2317
+ - Fixes
2318
+ - Fix comicbox config crash.
2319
+ - Use codex config namespace (\~/.config/codex) so codex doesn't interfere
2320
+ with standalone comicbox configs.
2321
+ - Comic issue numbers display to two decimal points instead of using ½
2322
+ glyphs.
2323
+
2324
+ - Features
2325
+ - Filename order by option. Disabled if the "Enable Folder View" Admin Flag
2326
+ is off.
2327
+
2328
+ ## v0.9.13
2329
+
2330
+ - Fixes
2331
+ - Fix root\_path configuration for running codex in url sub-paths
2332
+ - Parse new filename patterns for metadata.
2333
+ - Slightly faster comic cover generation.
2334
+
2335
+ ## v0.9.12
2336
+
2337
+ - Fixes
2338
+ - Fix setting global reader settings.
2339
+ - Fixed reader settings not applying due to caching.
2340
+ - Bust reader caches when library updates.
2341
+ - Reader titles smaller and wrap on mobile.
2342
+ - Fixed deep linking into reader.
2343
+
2344
+ - Features
2345
+ - Disable reader prev/next touch swiping for phone sized browsers.
2346
+
2347
+ ## v0.9.11
2348
+
2349
+ - Fixes
2350
+ - Fixed covers not creating on import.
2351
+ - Covers update in browser when updated on disk.
2352
+ - Create missing covers on startup.
2353
+ - Bust browser cache when library updates.
2354
+ - Reader settings were not applying in some cases.
2355
+ - Fixed crash updating latest codex software version from the internet.
2356
+ - Fixed crash loading admin page.
2357
+
2358
+ - Features
2359
+ - Codex processes show names in ps and thread names on Linux.
2360
+ - Add Poll libraries action to FailedImports Admin Panel.
2361
+ - Space and shift-space previous and next reader shortcuts.
2362
+ - Reader settings UI redesigned to be clearer.
2363
+
2364
+ ## v0.9.10
2365
+
2366
+ Yanked. Crash loading admin page.
2367
+
2368
+ ## v0.9.9
2369
+
2370
+ - Fixes
2371
+ - Fixed combining CBI credits with other format credits
2372
+ - Failed imports notification appears only for new failed imports.
2373
+
2374
+ - Features
2375
+ - Update search index daily.
2376
+ - Clean up orphan comic covers every night.
2377
+
2378
+ ## v0.9.8
2379
+
2380
+ - Fixes
2381
+ - Fixed search index update crash while database is still updating.
2382
+ - Fixed issues larger than 99 bug.
2383
+ - Fixed issue not imported due to metadata cleaning bug.
2384
+ - Fixed crash updating search index while library was still updating.
2385
+ - Thread error trapping and diagnostics to root out zombie process issue.
2386
+ - Sort numeric terms in filter menus numerically not alphabetically.
2387
+ - Fixed comic name display wrapping in browser.
2388
+
2389
+ - Features
2390
+ - More comprehensive metadata sanitizing before import.
2391
+ - Reduced time checking to see if files have finished writing before import.
2392
+ - Uniform format for metadata parsing logging.
2393
+ - Credits sorted by last name.
2394
+
2395
+ ## v0.9.7
2396
+
2397
+ - Fixes
2398
+ - Coerce decimal values into valid ranges and precision before importing.
2399
+
2400
+ - Features
2401
+ - Clean up unused foreign keys once a day instead of after every import.
2402
+ - Clean up unused foreign keys librarian job available in admin panel.
2403
+
2404
+ ## v0.9.6
2405
+
2406
+ - Fixes
2407
+ - Don't open browser when a library changes when reading a comic.
2408
+ - Fixed crash creating illegal dates on import.
2409
+
2410
+ - Features
2411
+ - Replace description field with more common ComicInfo comments field.
2412
+ - Log files now rotate by size instead of daily.
2413
+ - Log path for failed imports and cover creation.
2414
+
2415
+ ## v0.9.5
2416
+
2417
+ - Fixed
2418
+ - Use an allow list for importing metadata to prevent crashes.
2419
+
2420
+ ## v0.9.4
2421
+
2422
+ - Fixes
2423
+ - Fixed crash when importing comments metadata.
2424
+
2425
+ ## v0.9.3
2426
+
2427
+ - Fixes
2428
+ - Import credits data for CBI and CIX tagged comics.
2429
+ - More liberal metadata decimal parsing.
2430
+
2431
+ ## v0.9.2
2432
+
2433
+ - Fixes
2434
+ - Fix rare migration bug for Cover Artist role.
2435
+
2436
+ ## v0.9.1
2437
+
2438
+ - Fixes
2439
+ - Fix to library group integrity checker
2440
+
2441
+ ## v0.9.0 - Private Libraries
2442
+
2443
+ - Features
2444
+ - Libraries may have access restricted to certain user groups.
2445
+ - The "Critical Rating" tag is now a decimal value.
2446
+ - The "Community Rating" tag replaced "User Rating" tag, a decimal value.
2447
+ - Cover Credits role replaced by "Cover Artist".
2448
+ - Reader has a "Download Page" button.
2449
+ - Metadata dialog highlights filtered items.
2450
+ - Metadata dialog is faster.
2451
+ - Admin Queue Job for creating missing comic covers.
2452
+
2453
+ ## v0.8.0 - Search
2454
+
2455
+ - Features
2456
+ - Metadata search field in browser
2457
+ - Settings dialogs replaced with side drawers
2458
+ - Changed some keyboard shortcuts in reader.
2459
+ - "group by" renamed to "top group".
2460
+ - Admin panel gained a Queue Jobs page.
2461
+ - Fixes
2462
+ - Browser does a better job of remembering your last browser view on first
2463
+ load.
2464
+ - Reader's "close book" button now does a better job returning you to your
2465
+ last browser view.
2466
+ - Metadata panel cleanup and fix some missing fields.
2467
+ - Binary Dependencies
2468
+ - Codex now requires the Xapian library to run as a native application
2469
+ - Drop Support
2470
+ - The linux/armhf platform is no longer published for Docker.
2471
+ - License
2472
+ - Codex is GPLv3
2473
+
2474
+ ## v0.7.5
2475
+
2476
+ - Fixes
2477
+ - Fix integrity cleanup check for old comic\_folder relations that prevented
2478
+ migrations.
2479
+
2480
+ ## v0.7.4
2481
+
2482
+ - Fixes
2483
+ - Fix integrity cleanup check for more types of integrity errors that may
2484
+ have prevented clean db migrations.
2485
+ - Fix last filter, group, sort not loading properly for some new views.
2486
+
2487
+ ## v0.7.3
2488
+
2489
+ - Fixes
2490
+ - Fix crash updating latest version.
2491
+ - Fix a folder not found crash in folder view.
2492
+ - Features
2493
+ - Database indexing speedups.
2494
+
2495
+ ## v0.7.2
2496
+
2497
+ - Fixes
2498
+ - Fix another integrity check bug
2499
+
2500
+ ## v0.7.1
2501
+
2502
+ - Fixes
2503
+ - Fix and integrity check crash that happened with an older databases.
2504
+ - Features
2505
+ - Added `CODEX_SKIP_INTEGRITY_CHECK` env var.
2506
+
2507
+ ## v0.7.0 - Feels Snappier
2508
+
2509
+ - Database Migration
2510
+ - v0.7.0 changes the database schema. Databases run with v0.7.0+ will not
2511
+ run on previous versions of codex.
2512
+
2513
+ - Features
2514
+ - Big speed up to importing comics for large imports.
2515
+ - Speed up creating comic covers on large imports.
2516
+ - Admin Panel options for polling (formerly "scanning") and watching events
2517
+ have changed names.
2518
+ - Admin Panel task added to regenerate all comic covers.
2519
+ - Browser Admin Menu option added for polling all Libraries on demand.
2520
+ - Comics with no specified Publishers, Imprints and Series no longer have
2521
+ induced default names for these but have no name like Volumes.
2522
+ - Codex repairs database integrity on startup.
2523
+ - Codex backs up the database every night.
2524
+ - Autodetect server timezone (for logging).
2525
+ - Use TZ and TIMEZONE environment variables to explicitly set server
2526
+ timezone.
2527
+ - Added `VERBOSE` logging level to help screen out bulk `DEBUG` messages
2528
+ from dependencies.
2529
+ - Truncated logging messages for easier reading.
2530
+
2531
+ - Fixes
2532
+ - Fixed metadata screen displaying incorrect information.
2533
+ - Now compatible with python 3.10.
2534
+
2535
+ ## v0.6.8
2536
+
2537
+ - Fixes
2538
+ - Fixes some import bugs with filename parsing when there are no tags
2539
+ - Fixed two page view toggle hotkey
2540
+ - Features
2541
+ - Browser now tells you what kind of items you're looking at.
2542
+ - Reader swiping navigation
2543
+ - Reader keyboard shortcut help dialog
2544
+ - Tentative linux/armhf support. No way for me to test this
2545
+ - Vacuum the sqlite database once a day to prevent bloat
2546
+ - Corrupt database rebuild procedure. See README.
2547
+
2548
+ ## v0.6.7
2549
+
2550
+ - Dark admin pages and fix template overrides.
2551
+
2552
+ ## v0.6.6
2553
+
2554
+ - Automate multi-arch builds
2555
+
2556
+ ## v0.6.5
2557
+
2558
+ - Build Docker images for amd64 & arm64 manually.
2559
+
2560
+ ## v0.6.4
2561
+
2562
+ - Fix reader bug that only displayed first page
2563
+
2564
+ ## v0.6.3
2565
+
2566
+ - Add LOGLEVEL environment variable.
2567
+ - Set to DEBUG to see everything.
2568
+ - Removed DEV environment variable.
2569
+ - Possible fix for newly imported covers not displaying.
2570
+
2571
+ ## v0.6.2
2572
+
2573
+ - Fixes
2574
+ - Fixed intermittent Librarian startup crash in docker.
2575
+ - Fixed DEBUG environment variable to be able to run in production.
2576
+ - Dev
2577
+ - Added DEV environment variable for dev environment.
2578
+
2579
+ ## v0.6.1
2580
+
2581
+ - Fixes
2582
+ - Fix librarian startup crash. Prevented admin actions from happening.
2583
+
2584
+ ## v0.6.0 - Better Filtering and Sorting
2585
+
2586
+ - Features
2587
+ - New Filters
2588
+ - New sort options: Updated Time and Maturity Rating
2589
+ - New frontend URL scheme
2590
+ - New API
2591
+ - Added time to the browse card when sorting by time fields
2592
+ - Browser pagination footer now remains fixed on the page
2593
+ - Browser pagination footer is now a slider to handle larger collections
2594
+ - Notifications now appear in reader as well as browser
2595
+ - On comic import failure, log the path as well as the reason
2596
+ - Codex version information moved to Browser > Settings
2597
+ - Fixes
2598
+ - Fixed a bug importing Story Arc Series Groups and Genres. Requires
2599
+ re-import to correct.
2600
+ - Fixed a bug with sorting that grouped improperly and showed the wrong
2601
+ covers for reverse sorts.
2602
+ - Scanning notifications on login not disappearing bug squashed
2603
+ - Fixed a bug where the browser settings menu wouldn't close when opening a
2604
+ dialog
2605
+
2606
+ ## v0.5.18
2607
+
2608
+ - Fixes
2609
+ - Fix filters not changing display bug
2610
+
2611
+ ## v0.5.17
2612
+
2613
+ - Fixes
2614
+ - Fix root\_path not parsing bug
2615
+
2616
+ ## v0.5.16
2617
+
2618
+ - Fixes
2619
+ - Fix broken startup when parsing json shared between front and back end
2620
+
2621
+ ## v0.5.15
2622
+
2623
+ - Features
2624
+ - Metadata popup is now faster.
2625
+ - Metadata popup now shows created\_at, updated\_at and path (if admin).
2626
+ - Removed numeric and common password validators. Made the minimum length 4.
2627
+
2628
+ ## v0.5.14
2629
+
2630
+ - Features
2631
+ - Metadata view for browse containers. Also observes filters.
2632
+ - Covers now regenerate on re-import.
2633
+
2634
+ - Fixes
2635
+ - Fix scanning notification
2636
+ - Fix unable to delete libraries bug
2637
+
2638
+ ## v0.5.13
2639
+
2640
+ - Features
2641
+ - Admin Flag for automatically updating codex
2642
+ - Force updates from the admin panel with an Admin Flag action
2643
+ - Snackbar for notifying about failed imports
2644
+
2645
+ ## v0.5.12
2646
+
2647
+ - Features
2648
+ - Admin page for failed imports
2649
+ - Snackbar tells admins when scans are happening
2650
+ - Report the latest version available in the browser footer tooltip
2651
+ - Admin flag for disabling codex for non-users
2652
+
2653
+ ## v0.5.11
2654
+
2655
+ - Features
2656
+ - Browser rows now adapt to browse tile size
2657
+ - Browser covers for containers now match data we're sorting by
2658
+ - Serve static files faster
2659
+ - Fixes
2660
+ - Reader fix settings for all comics were not setting properly
2661
+ - Fix bookmarks for sessions that aren't logged in
2662
+
2663
+ ## v0.5.10
2664
+
2665
+ - Fixes
2666
+ - Fix filtering bugs
2667
+ - Fix mark read/unread bugs
2668
+ - Fix reader settings not setting properly
2669
+ - Fix reader images positioning
2670
+ - Fix minor crash closing books with uninitialized browser app
2671
+
2672
+ ## v0.5.9
2673
+
2674
+ - Fixes
2675
+ - Fix sorting for folder view
2676
+ - Fix import bugs
2677
+ - Features
2678
+ - Display sort key value in browse tile
2679
+ - Display standard image for missing covers
2680
+ - Slightly more helpful 404 page
2681
+
2682
+ ## v0.5.8
2683
+
2684
+ - Upload mistake with 0.5.7. This is just a version bump.
2685
+
2686
+ ## v0.5.7
2687
+
2688
+ - Fixes
2689
+ - Fix import crashes
2690
+ - Remove scan locks on startup
2691
+
2692
+ - Features
2693
+ - Allow credits with an empty role
2694
+ - Pagination of large browse results
2695
+ - Center comic pages better
2696
+ - Add download link to browser menu
2697
+ - Log to files as well as console
2698
+
2699
+ ## v0.5.6
2700
+
2701
+ - Fixes
2702
+ - Websocket path security wasn't handling leading slashes well. Skip it.
2703
+
2704
+ ## v0.5.5
2705
+
2706
+ - Fixes
2707
+ - Revert to whitenoise 5.1.0 which works with subpaths
2708
+
2709
+ ## v0.5.4
2710
+
2711
+ - Fixes
2712
+ - Fix crash on start if all static dirs do not exist.
2713
+
2714
+ ## v0.5.3
2715
+
2716
+ - Fixes
2717
+ - Fixed login bug introduces in v0.5.3 (thanks hubcaps)
2718
+ - Fixed filtering bug introduced in v0.5.2
2719
+ - Features
2720
+ - Versioned API
2721
+ - Toast popup for admins indicating libraries are scanning.
2722
+ - Periodic frontend refresh during long scans.
2723
+ - Codex version displayed in browser footer
2724
+
2725
+ ## v0.5.2
2726
+
2727
+ - Features
2728
+ - Lazy load filter choices when the menu opens
2729
+ - Documentation moved into admin panel
2730
+ - Fixes
2731
+ - Fix multiprocessing for Windows
2732
+
2733
+ ## v0.5.1
2734
+
2735
+ - Minor bugfixes.
2736
+
2737
+ ## v0.5.0 - First useful working version
2738
+
2739
+ - Productionized alpha release
2740
+
2741
+ ## v0.4.0 - Polished UI
2742
+
2743
+ - Polished VueJS frontend
2744
+
2745
+ ## v0.3.0 - I'm a frontend developer!
2746
+
2747
+ - Single Page VueJS frontend PoC without much styling
2748
+
2749
+ ## v0.2.0 - It's alive
2750
+
2751
+ - Working application with all initial features
2752
+ - Django frontend
2753
+
2754
+ ## v0.1.0 - Hello world
2755
+
2756
+ - Proof of concept.