Files
app-catalog-felhom.eu/audits/persistence-sweep-2026-08-02/evidence/calibre-web/probe.json
T
admin 2b22a23d60 persistence sweep: 53 templates measured; gramps-web + wishlist fixed; runtime gate added
Campaign 10's R-156 found papra writing its database into the container's writable layer while the
volume the template preserves stayed empty — a backup that completes, verifies, and contains
nothing. papra was never the point: nothing anywhere checked that the folder a template preserves
is the folder the app writes to. All 53 templates have now been measured live.

43 CLEAN / 3 BROKEN / 7 UNDETERMINED. UNDETERMINED is counted separately, each with its reason,
and never folded into CLEAN.

FIXED (neither app is deployed anywhere, so nothing was stranded):
- gramps-web mounted /app/data, /app/media, /tmp — and /app/data is a path the application never
  writes. Its accounts database and ITS FAMILY TREE both landed in the writable layer while
  gramps_data was tarred nightly as an empty directory. Now persists the eight paths the image's
  own environment names, matching upstream's reference compose. Proven: users.sqlite and the
  family-tree files survive a redeploy byte-identical, same inode.
- wishlist mounted wishlist_data:/data, another path the app never writes; prod.db landed in the
  ANONYMOUS volume from the image's VOLUME directive — absent from ResolveDockerVolumeNames, so
  never backed up, and orphaned by a redeploy. Now mounts /usr/src/app/data + /usr/src/app/uploads.
  Proven: prod.db byte-identical, same inode, across a redeploy.

Every corrected path confirmed by two independent sources — the shipped image's own
environment/Config.Volumes and upstream's reference compose — never inferred from a directory name.

papra is NOT fixed. It is live on one box, and changing the mount target makes the next compose up
recreate the container and destroy the writable layer its documents live in. The fix is prepared
and proven in the scratch guest (current: db.sqlite differs after a redeploy, so a real account
created via the API is lost; fixed: byte-identical, it survives). Referred to the operator with the
two options; no migration written.

NEW GATE scripts/check-volume-persistence.py — the third catalog gate and the only RUNTIME one.
This class is invisible to static analysis, measured not assumed: a static audit of all 53 composes
reports the catalog clean AND reports papra clean. Exit 0 clean / 1 REFUSED / 2 undecided. It
refuses to report at all unless it has just re-proven itself in both directions against two canary
templates that differ only in which path the volume mounts at, so every run carries a live
demonstration of R-156 and of its fix. No docker exec anywhere (Campaign 7 §1.1). 44 fixture tests
driving check(), the function __main__ calls; every rule red-proofed.

Enforcement is convention, not CI — this repo has no CI. Stated plainly in the report; raising it
is proposed as R-160.

Report, per-app evidence, proofs and proposed register entries (R-158..R-161, NOT filed — felhom.eu
is fenced this session): audits/persistence-sweep-2026-08-02/
2026-08-02 12:21:30 +02:00

3132 lines
90 KiB
JSON

{
"probe": {
"app": "calibre-web",
"containers": [
{
"diff_added": 494,
"diff_benign_db_touches": [
{
"db_signature": true,
"dir": "/app/calibre-web-automated/empty_library",
"files": [
"app.db",
"metadata.db"
],
"paths": [
"/app/calibre-web-automated/empty_library/app.db",
"/app/calibre-web-automated/empty_library/metadata.db"
],
"why": "byte-identical to the image copy \u2014 a chown/chmod sweep, not a write"
},
{
"db_signature": true,
"dir": "/app/calibre-web-automated/empty_library",
"files": [
"app.db",
"metadata.db"
],
"paths": [
"/app/calibre-web-automated/empty_library/app.db",
"/app/calibre-web-automated/empty_library/metadata.db"
],
"why": "byte-identical to the image copy \u2014 a chown/chmod sweep, not a write"
}
],
"diff_data_dirs": [],
"diff_other_dirs": [
{
"added": [],
"changed_count": 6,
"db_signature": false,
"dir": "/",
"files": [
"etc",
"app",
"run",
"root",
"usr",
"defaults"
]
},
{
"added": [
"CWA_STABLE_RELEASE"
],
"changed_count": 2,
"db_signature": false,
"dir": "/app",
"files": [
"CWA_STABLE_RELEASE"
]
},
{
"added": [
".qt6_processed"
],
"changed_count": 0,
"db_signature": false,
"dir": "/app/calibre",
"files": [
".qt6_processed"
]
},
{
"added": [],
"changed_count": 18,
"db_signature": false,
"dir": "/app/calibre-web-automated",
"files": [
"messages.pot",
"requirements.txt",
".editorconfig",
"empty_library",
"metadata_temp",
"babel.cfg",
"dirs.json",
"kobo_sync_utils.py",
"koreader",
"pyproject.toml",
"run_tests.sh",
"scripts",
"CONTRIBUTORS",
"kubernetes",
"optional-requirements.txt",
"metadata_change_logs",
"cps",
"cps.py"
]
},
{
"added": [
"cache"
],
"changed_count": 40,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps",
"files": [
"cache"
]
},
{
"added": [],
"changed_count": 8,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/cw_advocate",
"files": [
"addrvalidator.py",
"connection.py",
"connectionpool.py",
"__init__.py",
"adapters.py",
"api.py",
"exceptions.py",
"poolmanager.py"
]
},
{
"added": [],
"changed_count": 6,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/cw_login",
"files": [
"config.py",
"login_manager.py",
"mixins.py",
"signals.py",
"utils.py",
"__init__.py"
]
},
{
"added": [],
"changed_count": 12,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/metadata_provider",
"files": [
"amazonjp.py",
"comicvine.py",
"douban.py",
"google.py",
"hardcover.py",
"lubimyczytac.py",
"scholar.py",
"dnb.py",
"ibdb.py",
"kobo.py",
"litres.py",
"amazon.py"
]
},
{
"added": [],
"changed_count": 6,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/progress_syncing",
"files": [
"models.py",
"protocols",
"settings.py",
"README.md",
"__init__.py",
"checksums"
]
},
{
"added": [],
"changed_count": 3,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/progress_syncing/checksums",
"files": [
"__init__.py",
"koreader.py",
"manager.py"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/progress_syncing/protocols",
"files": [
"__init__.py",
"kosync.py"
]
},
{
"added": [],
"changed_count": 9,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/services",
"files": [
"Metadata.py",
"__init__.py",
"goodreads_support.py",
"hardcover.py",
"worker.py",
"SyncToken.py",
"background_scheduler.py",
"gmail.py",
"simpleldap.py"
]
},
{
"added": [],
"changed_count": 12,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static",
"files": [
"koplugin.zip",
"favicon.ico",
"icon.svg",
"img",
"js",
"locale",
"standard_fonts",
"user-profile-data",
"cmaps",
"css",
"generic_cover.svg",
"icon.png"
]
},
{
"added": [],
"changed_count": 40,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/cmaps",
"files": [
"Adobe-CNS1-4.bcmap",
"B5-H.bcmap",
"ETHK-B5-V.bcmap",
"GBKp-EUC-V.bcmap",
"KSC-H.bcmap",
"UniGB-UTF8-V.bcmap",
"Ext-RKSJ-H.bcmap",
"KSCms-UHC-HW-H.bcmap",
"KSCpc-EUC-V.bcmap",
"Roman.bcmap",
"UniJIS-UCS2-V.bcmap",
"78-EUC-V.bcmap",
"Adobe-Japan1-2.bcmap",
"GBK2K-V.bcmap",
"HKm314-B5-H.bcmap",
"HKm471-B5-H.bcmap",
"UniJISX0213-UTF32-H.bcmap",
"Adobe-Korea1-2.bcmap",
"UniGB-UTF16-V.bcmap",
"Adobe-GB1-4.bcmap",
"Adobe-Korea1-UCS2.bcmap",
"HKscs-B5-V.bcmap",
"RKSJ-V.bcmap",
"UniJIS2004-UTF32-H.bcmap",
"UniKS-UTF32-H.bcmap",
"CNS1-V.bcmap",
"Ext-V.bcmap",
"GBTpc-EUC-H.bcmap",
"H.bcmap",
"UniJIS-UTF16-H.bcmap",
"UniJIS2004-UTF16-V.bcmap",
"Ext-H.bcmap",
"KSC-V.bcmap",
"LICENSE",
"UniJIS-UTF8-V.bcmap",
"CNS2-V.bcmap",
"Adobe-Japan1-3.bcmap",
"CNS-EUC-V.bcmap",
"UniGB-UTF8-H.bcmap",
"UniJIS-UTF16-V.bcmap"
]
},
{
"added": [],
"changed_count": 19,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css",
"files": [
"query-builder.default.min.css",
"epub_themes.css",
"kthoom.css",
"main.css",
"query_builder.css",
"upload.css",
"caliBlur_override.css",
"duplicates-notifications.css",
"img",
"reader.css",
"cwa.css",
"images",
"libs",
"listen.css",
"popup.css",
"style.css",
"text.css",
"caliBlur.css",
"fonts"
]
},
{
"added": [],
"changed_count": 10,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/fonts",
"files": [
"glyphicons-halflings-regular.ttf",
"glyphicons-halflings-regular.woff",
"glyphicons-halflings-regular.woff2",
"fontello.eot",
"fontello.ttf",
"fontello.woff",
"GrandHotel-Regular.ttf",
"fontello.svg",
"glyphicons-halflings-regular.eot",
"glyphicons-halflings-regular.svg"
]
},
{
"added": [],
"changed_count": 6,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images",
"files": [
"black-10.png",
"black-25.png",
"black-33.png",
"caliblur",
"icomoon",
"patterns"
]
},
{
"added": [],
"changed_count": 10,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/caliblur",
"files": [
"blur-noise.png",
"light-mode-light.png",
"light-mode-light.webp",
"blur-noise.webp",
"light-mode-dark.png",
"light-mode-dark.webp",
"blur-dark.png",
"blur-dark.webp",
"blur-light.png",
"blur-light.webp"
]
},
{
"added": [],
"changed_count": 5,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon",
"files": [
"credits.txt",
"entypo-25px-000000",
"entypo-25px-ffffff",
"free-25px-000000",
"free-25px-ffffff"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon/entypo-25px-000000",
"files": [
"PNG",
"SVG"
]
},
{
"added": [],
"changed_count": 12,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon/entypo-25px-000000/PNG",
"files": [
"loop.png",
"music.png",
"play.png",
"shuffle.png",
"arrow.png",
"first.png",
"last.png",
"list2.png",
"pause.png",
"volume.png",
"cart.png",
"list.png"
]
},
{
"added": [],
"changed_count": 12,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon/entypo-25px-000000/SVG",
"files": [
"list2.svg",
"loop.svg",
"music.svg",
"pause.svg",
"volume.svg",
"first.svg",
"list.svg",
"play.svg",
"shuffle.svg",
"arrow.svg",
"cart.svg",
"last.svg"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon/entypo-25px-ffffff",
"files": [
"PNG",
"SVG"
]
},
{
"added": [],
"changed_count": 12,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon/entypo-25px-ffffff/PNG",
"files": [
"loop.png",
"volume.png",
"cart.png",
"first.png",
"last.png",
"music.png",
"pause.png",
"play.png",
"shuffle.png",
"arrow.png",
"list.png",
"list2.png"
]
},
{
"added": [],
"changed_count": 12,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon/entypo-25px-ffffff/SVG",
"files": [
"arrow.svg",
"first.svg",
"last.svg",
"list2.svg",
"loop.svg",
"play.svg",
"cart.svg",
"list.svg",
"music.svg",
"pause.svg",
"shuffle.svg",
"volume.svg"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon/free-25px-000000",
"files": [
"PNG",
"SVG"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon/free-25px-000000/PNG",
"files": [
"spinner.png"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon/free-25px-000000/SVG",
"files": [
"spinner.svg"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon/free-25px-ffffff",
"files": [
"PNG",
"SVG"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon/free-25px-ffffff/PNG",
"files": [
"spinner.png"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/icomoon/free-25px-ffffff/SVG",
"files": [
"spinner.svg"
]
},
{
"added": [],
"changed_count": 10,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/images/patterns",
"files": [
"pool_table.png",
"rubber_grip.png",
"tasky_pattern.png",
"wood_pattern.png",
"credits.txt",
"pinstriped_suit_vertical.png",
"textured_paper.png",
"tweed.png",
"wood_pattern_dark.png",
"woven.png"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/img",
"files": [
"clear.png",
"loading.gif"
]
},
{
"added": [],
"changed_count": 16,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/libs",
"files": [
"bootstrap-datepicker3.css.map",
"bootstrap-theme.min.css.map",
"bootstrap-wysihtml5-0.0.3.css",
"bootstrap.min.css",
"bootstrap.min.css.map",
"normalize.css",
"bootstrap-theme.min.css",
"images",
"typeahead.css",
"bootstrap-datepicker3.min.css",
"bootstrap-editable.css",
"viewer.css",
"Djvu_html5.css",
"bar-ui.css",
"bootstrap-select.min.css",
"bootstrap-table.min.css"
]
},
{
"added": [],
"changed_count": 40,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/css/libs/images",
"files": [
"toolbarButton-sidebarToggle.svg",
"treeitem-collapsed.svg",
"annotation-paperclip.svg",
"editor-toolbar-delete.svg",
"annotation-paragraph.svg",
"findbarButton-previous.svg",
"secondaryToolbarButton-scrollHorizontal.svg",
"toolbarButton-zoomOut.svg",
"toolbarButton-download.svg",
"annotation-key.svg",
"findbarButton-next.svg",
"secondaryToolbarButton-spreadNone.svg",
"toolbarButton-viewAttachments.svg",
"annotation-insert.svg",
"annotation-newparagraph.svg",
"annotation-note.svg",
"secondaryToolbarButton-lastPage.svg",
"secondaryToolbarButton-scrollVertical.svg",
"secondaryToolbarButton-selectTool.svg",
"treeitem-expanded.svg",
"cursor-editorTextHighlight.svg",
"secondaryToolbarButton-firstPage.svg",
"secondaryToolbarButton-spreadOdd.svg",
"annotation-noicon.svg",
"loading-icon.gif",
"secondaryToolbarButton-rotateCcw.svg",
"secondaryToolbarButton-spreadEven.svg",
"toolbarButton-search.svg",
"toolbarButton-viewOutline.svg",
"annotation-help.svg",
"secondaryToolbarButton-documentProperties.svg",
"toolbarButton-bookmark.svg",
"toolbarButton-editorFreeText.svg",
"toolbarButton-presentationMode.svg",
"altText_done.svg",
"cursor-editorFreeHighlight.svg",
"gv-toolbarButton-download.svg",
"toolbarButton-menuArrow.svg",
"toolbarButton-pageDown.svg",
"toolbarButton-pageUp.svg"
]
},
{
"added": [],
"changed_count": 15,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/img",
"files": [
"goodreads.svg",
"loader.gif",
"menu-icon.png",
"save.png",
"saved.png",
"star.png",
"annotator-glyph-sprite.png",
"settings.png",
"apple-touch-icon.png",
"close.png",
"fullscreen.png",
"annotator-icon-sprite.png",
"settings-s.png",
"academicpaper.svg",
"cancelfullscreen.png"
]
},
{
"added": [],
"changed_count": 23,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js",
"files": [
"filter_grid.js",
"filter_list.js",
"logviewer.js",
"remote_login.js",
"duplicate-notifier.js",
"duplicates.js",
"fullscreen.js",
"kthoom.js",
"moment.min.js",
"query-builder.standalone.min.js",
"get_meta.js",
"main.js",
"shelforder.js",
"caliBlur.js",
"details.js",
"libs",
"password.js",
"reading",
"table.js",
"uploadprogress.js",
"compress",
"edit_books.js",
"email_selection.js"
]
},
{
"added": [],
"changed_count": 6,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/compress",
"files": [
"jszip.min.js",
"jszip_epub.min.js",
"libunrar.js",
"libunrar.js.mem",
"libuntar.js",
"uncompress.js"
]
},
{
"added": [],
"changed_count": 35,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs",
"files": [
"typeahead.bundle.js",
"plugins.js",
"viewer.mjs",
"wysihtml5-0.3.0.min.js",
"jquery.min.js",
"reader.min.js",
"readmore.min.js",
"tinymce",
"bootstrap-table",
"jquery.form.min.js",
"pwstrength",
"screenfull.min.js",
"bootstrap-select",
"debugger.js",
"pdf.worker.mjs",
"underscore-umd-min.js",
"bar-ui.js",
"bootstrap-datepicker",
"pdf.mjs",
"bootstrap-rating-input.min.js",
"compromise.min.js",
"context.min.js",
"djvu_html5",
"l10n.js",
"soundmanager2.js",
"wysihtml5-0.0.3.js",
"bootstrap-select.min.js",
"bootstrap-wysihtml5-0.0.3.min.js",
"jquery.visible.min.js",
"Sortable.min.js",
"bootstrap.min.js",
"echarts.min.js",
"epub.min.js",
"intention.min.js",
"jquery.min.map"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/bootstrap-datepicker",
"files": [
"bootstrap-datepicker.min.js",
"locales"
]
},
{
"added": [],
"changed_count": 27,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/bootstrap-datepicker/locales",
"files": [
"bootstrap-datepicker.km.min.js",
"bootstrap-datepicker.cs.min.js",
"bootstrap-datepicker.de.min.js",
"bootstrap-datepicker.it.min.js",
"bootstrap-datepicker.pt.min.js",
"bootstrap-datepicker.pt_BR.min.js",
"bootstrap-datepicker.sl.min.js",
"bootstrap-datepicker.sv.min.js",
"bootstrap-datepicker.gl.min.js",
"bootstrap-datepicker.hu.min.js",
"bootstrap-datepicker.id.min.js",
"bootstrap-datepicker.ko.min.js",
"bootstrap-datepicker.nl.min.js",
"bootstrap-datepicker.pl.min.js",
"bootstrap-datepicker.ru.min.js",
"bootstrap-datepicker.sk.min.js",
"bootstrap-datepicker.el.min.js",
"bootstrap-datepicker.es.min.js",
"bootstrap-datepicker.fi.min.js",
"bootstrap-datepicker.fr.min.js",
"bootstrap-datepicker.ja.min.js",
"bootstrap-datepicker.uk.min.js",
"bootstrap-datepicker.zh_Hans_CN.min.js",
"bootstrap-datepicker.zh_Hant_TW.min.js",
"bootstrap-datepicker.no.min.js",
"bootstrap-datepicker.tr.min.js",
"bootstrap-datepicker.vi.min.js"
]
},
{
"added": [],
"changed_count": 15,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/bootstrap-select",
"files": [
"defaults-km.min.js",
"defaults-pl.min.js",
"defaults-sv.min.js",
"defaults-es.min.js",
"defaults-hu.min.js",
"defaults-it.min.js",
"defaults-ru.min.js",
"defaults-tr.min.js",
"defaults-zh_Hans_CN.min.js",
"defaults-cs.min.js",
"defaults-fr.min.js",
"defaults-ja.min.js",
"defaults-nl.min.js",
"defaults-de.min.js",
"defaults-fi.min.js"
]
},
{
"added": [],
"changed_count": 5,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/bootstrap-table",
"files": [
"bootstrap-editable.min.js",
"bootstrap-table-editable.min.js",
"bootstrap-table-locale-all.min.js",
"bootstrap-table.min.js",
"locale"
]
},
{
"added": [],
"changed_count": 32,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/bootstrap-table/locale",
"files": [
"bootstrap-table-ro.min.js",
"bootstrap-table-ca.min.js",
"bootstrap-table-fi.min.js",
"bootstrap-table-hu.min.js",
"bootstrap-table-ja.min.js",
"bootstrap-table-it.min.js",
"bootstrap-table-nl.min.js",
"bootstrap-table-ko.min.js",
"bootstrap-table-pl.min.js",
"bootstrap-table-fr.min.js",
"bootstrap-table-id.min.js",
"bootstrap-table-ru.min.js",
"bootstrap-table-sv.min.js",
"bootstrap-table-af.min.js",
"bootstrap-table-ar.min.js",
"bootstrap-table-cs.min.js",
"bootstrap-table-da.min.js",
"bootstrap-table-el.min.js",
"bootstrap-table-eu.min.js",
"bootstrap-table-fa.min.js",
"bootstrap-table-tr.min.js",
"bootstrap-table-zh_Hans_CN.min.js",
"bootstrap-table-es.min.js",
"bootstrap-table-hr.min.js",
"bootstrap-table-ka.min.js",
"bootstrap-table-uk.min.js",
"bootstrap-table-sk.min.js",
"bootstrap-table-bg.min.js",
"bootstrap-table-de.min.js",
"bootstrap-table-et.min.js",
"bootstrap-table-he.min.js",
"bootstrap-table-pt_BR.min.js"
]
},
{
"added": [],
"changed_count": 3,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/djvu_html5",
"files": [
"djvu_html5",
"djvu_worker",
"img"
]
},
{
"added": [],
"changed_count": 9,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/djvu_html5/djvu_html5",
"files": [
"1A420474460884E73E3288F783AD7024.cache.js",
"564CB406D925C79CCD67EB98CA5AD4EF.cache.js",
"clear.cache.gif",
"compilation-mappings.txt",
"djvu_html5.devmode.js",
"djvu_html5.nocache.js",
"091ECB3AE852C68866FBC86AA8FCDB1F.cache.js",
"3CFDA9D9AFA2798299BBAE243DB2E9B5.cache.js",
"A8305F17E026239876FCBC730B035A55.cache.js"
]
},
{
"added": [],
"changed_count": 3,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/djvu_html5/djvu_worker",
"files": [
"81EB501BD7AB47786C30D3175CE1EA2B.cache.js",
"clear.cache.gif",
"djvu_worker.nocache.js"
]
},
{
"added": [],
"changed_count": 3,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/djvu_html5/img",
"files": [
"status.png",
"toolbar-buttons.png",
"blank.jpg"
]
},
{
"added": [],
"changed_count": 5,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/pwstrength",
"files": [
"i18next.min.js",
"i18nextHttpBackend.min.js",
"locales",
"pwstrength-bootstrap.js",
"pwstrength-bootstrap.min.js"
]
},
{
"added": [],
"changed_count": 17,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/pwstrength/locales",
"files": [
"el.json",
"pt.json",
"th.json",
"tr.json",
"zh-TW.json",
"en.json",
"it.json",
"no.json",
"sk.json",
"es.json",
"ru.json",
"ar.json",
"eo.json",
"fr.json",
"pl.json",
"cs.json",
"de.json"
]
},
{
"added": [],
"changed_count": 7,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce",
"files": [
"langs",
"license.txt",
"plugins",
"skins",
"themes",
"tinymce.min.js",
"icons"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/icons",
"files": [
"default"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/icons/default",
"files": [
"icons.min.js"
]
},
{
"added": [],
"changed_count": 40,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/langs",
"files": [
"ro.js",
"sq.js",
"ug.js",
"fr.js",
"ja.js",
"kab.js",
"ku.js",
"el.js",
"id.js",
"ru.js",
"ta.js",
"eo.js",
"fa.js",
"pt_BR.js",
"et.js",
"hr.js",
"lt.js",
"sl.js",
"tr.js",
"uk.js",
"zh_Hans_CN.js",
"ca.js",
"cy.js",
"da.js",
"hu.js",
"ko.js",
"no.js",
"zh_Hant_TW.js",
"nl.js",
"ar.js",
"fr_FR.js",
"hy.js",
"it.js",
"kk.js",
"pt.js",
"sv.js",
"cs.js",
"es.js",
"gl.js",
"sk.js"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/plugins",
"files": [
"code"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/plugins/code",
"files": [
"plugin.min.js"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/skins",
"files": [
"ui",
"content"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/skins/content",
"files": [
"default"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/skins/content/default",
"files": [
"content.min.css"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/skins/ui",
"files": [
"oxide"
]
},
{
"added": [],
"changed_count": 7,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/skins/ui/oxide",
"files": [
"skin.min.css",
"skin.mobile.min.css",
"skin.shadowdom.min.css",
"content.inline.min.css",
"content.min.css",
"content.mobile.min.css",
"fonts"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/skins/ui/oxide/fonts",
"files": [
"tinymce-mobile.woff"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/themes",
"files": [
"silver"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/libs/tinymce/themes/silver",
"files": [
"theme.min.js"
]
},
{
"added": [],
"changed_count": 4,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/js/reading",
"files": [
"djvu_reader.js",
"epub-progress.js",
"epub.js",
"txt_reader.js"
]
},
{
"added": [],
"changed_count": 40,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale",
"files": [
"bn",
"brx",
"et",
"mk",
"mr",
"sq",
"dsb",
"fa",
"gd",
"hy-AM",
"ka",
"kn",
"pt-PT",
"rm",
"es-ES",
"sat",
"sc",
"sco",
"ta",
"te",
"uz",
"fi",
"nl",
"pa-IN",
"scn",
"sl",
"ja",
"meh",
"pt-BR",
"sk",
"tr",
"bg",
"cy",
"ga-IE",
"hr",
"ko",
"lt",
"my",
"ro",
"be"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ach",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/af",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/an",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ar",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ast",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/az",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/be",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/bg",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/bn",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/bo",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/br",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/brx",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/bs",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ca",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/cak",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ckb",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/cs",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/cy",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/da",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/de",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/dsb",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/el",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/en-CA",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/en-GB",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/en-US",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/eo",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/es-AR",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/es-CL",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/es-ES",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/es-MX",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/et",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/eu",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/fa",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ff",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/fi",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/fr",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/fur",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/fy-NL",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ga-IE",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/gd",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/gl",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/gn",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/gu-IN",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/he",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/hi-IN",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/hr",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/hsb",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/hu",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/hy-AM",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/hye",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ia",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/id",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/is",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/it",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ja",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ka",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/kab",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/kk",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/km",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/kn",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ko",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/lij",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/lo",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/lt",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ltg",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/lv",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/meh",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/mk",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/mr",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ms",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/my",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/nb-NO",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ne-NP",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/nl",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/nn-NO",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/oc",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/pa-IN",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/pl",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/pt-BR",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/pt-PT",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/rm",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ro",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ru",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/sat",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/sc",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/scn",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/sco",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/si",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/sk",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/skr",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/sl",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/son",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/sq",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/sr",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/sv-SE",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/szl",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ta",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/te",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/tg",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/th",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/tl",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/tr",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/trs",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/uk",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/ur",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/uz",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/vi",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/wo",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/xh",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/zh-CN",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/locale/zh-TW",
"files": [
"viewer.ftl"
]
},
{
"added": [],
"changed_count": 16,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/standard_fonts",
"files": [
"FoxitDingbats.pfb",
"FoxitFixedItalic.pfb",
"FoxitSerifBold.pfb",
"LICENSE_LIBERATION",
"LiberationSans-Italic.ttf",
"FoxitSerifItalic.pfb",
"FoxitFixed.pfb",
"FoxitFixedBoldItalic.pfb",
"FoxitSerifBoldItalic.pfb",
"LiberationSans-Bold.ttf",
"FoxitFixedBold.pfb",
"FoxitSerif.pfb",
"FoxitSymbol.pfb",
"LICENSE_FOXIT",
"LiberationSans-BoldItalic.ttf",
"LiberationSans-Regular.ttf"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/static/user-profile-data",
"files": [
"CWA-profile-updater.js"
]
},
{
"added": [],
"changed_count": 13,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/tasks",
"files": [
"upload.py",
"__init__.py",
"auto_hardcover_id.py",
"auto_send.py",
"clean.py",
"convert.py",
"duplicate_scan.py",
"mail.py",
"ops.py",
"database.py",
"metadata_backup.py",
"thumbnail.py",
"thumbnail_migration.py"
]
},
{
"added": [],
"changed_count": 40,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/templates",
"files": [
"generate_kobo_auth_url.html",
"http_error.html",
"layout.html",
"admin.html",
"index.html",
"modal_dialogs.html",
"profile_pictures.html",
"register.html",
"cwa_api_stats.html",
"tasks.html",
"shelf.html",
"feed.xml",
"duplicates.html",
"cwa_epub_fixer.html",
"cwa_library_stats.html",
"cwa_list_logs.html",
"cwa_stats_full.html",
"osd.xml",
"read.html",
"schedule_edit.html",
"index.xml",
"author.html",
"config_edit.html",
"detail.html",
"readtxt.html",
"book_edit.html",
"list.html",
"logviewer.html",
"readcbr.html",
"shelf_order.html",
"book_table.html",
"stats.html",
"hardcover_review_matches.html",
"cwa_stats_tabs.html",
"kosync_plugin.html",
"magic_shelf_edit.html",
"search_form.html",
"cwa_read_log.html",
"cwa_settings.html",
"email_edit.html"
]
},
{
"added": [],
"changed_count": 28,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations",
"files": [
"cs",
"de",
"gl",
"ja",
"ko",
"es",
"fr",
"it",
"km",
"nl",
"sk",
"sl",
"zh_Hant_TW",
"fi",
"hu",
"no",
"pl",
"pt",
"sv",
"tr",
"uk",
"ar",
"el",
"id",
"pt_BR",
"ru",
"vi",
"zh_Hans_CN"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/ar",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/ar/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/cs",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/cs/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/de",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/de/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/el",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/el/LC_MESSAGES",
"files": [
"messages.po",
"messages.mo"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/es",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/es/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/fi",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/fi/LC_MESSAGES",
"files": [
"messages.po",
"messages.mo"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/fr",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/fr/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/gl",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/gl/LC_MESSAGES",
"files": [
"messages.po",
"messages.mo"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/hu",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/hu/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/id",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/id/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/it",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/it/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/ja",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/ja/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/km",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/km/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/ko",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/ko/LC_MESSAGES",
"files": [
"messages.po",
"messages.mo"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/nl",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/nl/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/no",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/no/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/pl",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/pl/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/pt",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/pt/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/pt_BR",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/pt_BR/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/ru",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/ru/LC_MESSAGES",
"files": [
"messages.po",
"messages.mo"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/sk",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/sk/LC_MESSAGES",
"files": [
"messages.po",
"messages.mo"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/sl",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/sl/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/sv",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/sv/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/tr",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/tr/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/uk",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/uk/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/vi",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/vi/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/zh_Hans_CN",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/zh_Hans_CN/LC_MESSAGES",
"files": [
"messages.mo",
"messages.po"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/zh_Hant_TW",
"files": [
"LC_MESSAGES"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/translations/zh_Hant_TW/LC_MESSAGES",
"files": [
"messages.po",
"messages.mo"
]
},
{
"added": [],
"changed_count": 3,
"db_signature": false,
"dir": "/app/calibre-web-automated/cps/utils",
"files": [
"__init__.py",
"filename_sanitizer.py",
"text_similarity.py"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/app/calibre-web-automated/koreader",
"files": [
"plugins"
]
},
{
"added": [],
"changed_count": 3,
"db_signature": false,
"dir": "/app/calibre-web-automated/koreader/plugins",
"files": [
".gitignore",
"cwasync.koplugin",
"koplugin.zip"
]
},
{
"added": [],
"changed_count": 5,
"db_signature": false,
"dir": "/app/calibre-web-automated/koreader/plugins/cwasync.koplugin",
"files": [
"main.lua",
"2d167a311201508454b35219348633fac7cacdaf82cd25e1c61116375cd51612.digest",
"CWASyncClient.lua",
"_meta.lua",
"api.json"
]
},
{
"added": [],
"changed_count": 6,
"db_signature": false,
"dir": "/app/calibre-web-automated/kubernetes",
"files": [
"service.yaml",
"README.md",
"deployment.yaml",
"gateway-istio.yaml",
"pvc-config.yaml",
"pvc-library.yml"
]
},
{
"added": [],
"changed_count": 20,
"db_signature": false,
"dir": "/app/calibre-web-automated/scripts",
"files": [
"check-cwa-services.sh",
"convert_library.py",
"cover_enforcer.py",
"generate_book_checksums.py",
"kindle_epub_fixer.py",
"update_spdx_headers.py",
"auto_library.py",
"auto_zip.py",
"cwa_db.py",
"cwa_schema.sql",
"generate_translation_status.py",
"generate_contributors.py",
"audiobook.py",
"compile_translations.sh",
"fix_po_duplicates.py",
"ingest_processor.py",
"setup-cwa.sh",
"update_translations.sh",
"check_spdx_headers.py",
"watch_fallback.py"
]
},
{
"added": [],
"changed_count": 3,
"db_signature": false,
"dir": "/etc",
"files": [
"group-",
"ImageMagick-6",
"passwd-"
]
},
{
"added": [],
"changed_count": 1,
"db_signature": false,
"dir": "/etc/ImageMagick-6",
"files": [
"policy.xml"
]
},
{
"added": [
".config"
],
"changed_count": 0,
"db_signature": false,
"dir": "/root",
"files": [
".config"
]
},
{
"added": [
"calibre"
],
"changed_count": 0,
"db_signature": false,
"dir": "/root/.config",
"files": [
"calibre"
]
},
{
"added": [
"global.py.json",
"plugins"
],
"changed_count": 0,
"db_signature": false,
"dir": "/root/.config/calibre",
"files": [
"global.py.json",
"plugins"
]
},
{
"added": [],
"changed_count": 2,
"db_signature": false,
"dir": "/usr",
"files": [
"bin",
"share"
]
},
{
"added": [
"lrs2lrf",
"calibre-server",
"web2disk",
"calibre-customize",
"ebook-convert",
"calibre-uninstall",
"calibredb",
"fetch-ebook-metadata",
"calibre-parallel",
"markdown-calibre",
"ebook-device",
"ebook-meta",
"lrfviewer",
"ebook-polish",
"calibre-debug",
"calibre",
"ebook-viewer",
"lrf2lrs",
"ebook-edit",
"calibre-smtp"
],
"changed_count": 0,
"db_signature": false,
"dir": "/usr/bin",
"files": [
"lrs2lrf",
"calibre-server",
"web2disk",
"calibre-customize",
"ebook-convert",
"calibre-uninstall",
"calibredb",
"fetch-ebook-metadata",
"calibre-parallel",
"markdown-calibre",
"ebook-device",
"ebook-meta",
"lrfviewer",
"ebook-polish",
"calibre-debug",
"calibre",
"ebook-viewer",
"lrf2lrs",
"ebook-edit",
"calibre-smtp"
]
}
],
"diff_token_dirs": [],
"diff_total": 1799,
"diff_unresolved": [],
"exit": 0,
"gid": 0,
"health": "healthy",
"image": "crocodilestick/calibre-web-automated:v4.0.6",
"mounts": [
{
"class": "named-declared",
"files": 11,
"name": "volgate-calibreweb_calibre_web_config",
"sample": [
"gdrive.db",
"app.db-shm",
"app.db-wal",
"app.db",
".key",
"cwa_ingest_status",
"user_profiles.json",
"cwa_ingest_retry_queue",
"cwa.db",
"client_secrets.json",
".cwa_migrations/duplicates_sidebar_v1"
],
"source": "/var/lib/docker/volumes/volgate-calibreweb_calibre_web_config/_data",
"target": "/config",
"writable_by_app": "yes"
},
{
"class": "bind",
"files": 0,
"name": null,
"sample": [],
"source": "/srv/felhom-gate/import/calibre",
"target": "/cwa-book-ingest",
"writable_by_app": "yes"
},
{
"class": "bind",
"files": 3,
"name": null,
"sample": [
"metadata.db",
"metadata.db-shm",
"metadata.db-wal"
],
"source": "/srv/felhom-gate/hdd/userdata/media/books",
"target": "/calibre-library",
"writable_by_app": "yes"
}
],
"name": "calibre-web",
"restarts": null,
"status": "running",
"uid": 0
}
],
"declared_volumes": [
"calibre_web_config"
],
"env_keys": [
"DOMAIN",
"HDD_PATH",
"IMPORT_PATH",
"SUBDOMAIN",
"TZ",
"USERDATA_PATH"
],
"exercise": [],
"ports": []
},
"reasons": [
"calibre-web: /app/calibre-web-automated/empty_library \u2014 database file(s) touched but byte-identical to the image; a chown sweep, not a write",
"calibre-web: /app/calibre-web-automated/empty_library \u2014 database file(s) touched but byte-identical to the image; a chown sweep, not a write"
],
"verdict": "CLEAN",
"verdict_recomputed_by": "check-volume-persistence.py classify() at final rules"
}