Customization Model

CryptPad’s intended customization pattern is:

  1. Leave upstream files in the container untouched.
  2. Copy files from /cryptpad/customize.dist into /opt/cryptpad/customize.
  3. Edit the persistent copy under /opt/cryptpad/customize.
  4. Restart/rebuild the CryptPad container when needed.
  5. Verify with a browser, because malformed client config can leave the app stuck on Loading....

Important lesson already learned: - customize/application_config.js for CryptPad 2025.9.0 must use the upstream factory/AMD/CommonJS module shape and return AppConfig. - Do not write direct global AppConfig.* assignments before CryptPad’s internal config loads. - That mistake caused AppConfig is not defined and a browser-side infinite loading state.