Scryer 0.16.3 released - recommended maintenance release

Headlines

  • Root folder ergonomics
    • Root folders are now considered a domain object
    • Root folders can no longer be typed in or bespoke per title, they must be configured at the Library level and linked at the title
  • API rework
    • Lots of internal API rework to make the GraphQL API more ergonomic for 3rd party integrators
    • The Scryer GraphQL API is now safe. I will not make any more breaking changes, this is verified and validated on every release by my tooling. Breaking changes will be put into a v2 API as they arise.
  • Recycle bin + deletion safety
    • Restore conflicts: If a title is restored and there's another file with the same name, the new file gets a `-restored` suffix
    • Fail-closed root check: deletes/recycles are rejected if the file isn't under a configured media root (or if the root list is empty/unknown).
  • Unauthenticated public-access allowlist
    • SCRYER_UNAUTHENTICATED_PUBLIC_ACCESS_ALLOWLIST narrows auth-disabled access to specific IPs, CIDRs, or DNS hostnames (comma-separated, e.g. 8.8.8.8,203.0.113.0/24,home.example.test).
  • File logging
    • New --log-file <path> / SCRYER_LOG_FILE writes logs to a file (in addition to console + in-app buffer). Windows defaults to %LocalAppData%/scryer/logs/scryer.log.
  • Anonymous (authless) OAuth
    • OAuth now works when you don't have form login enabled. The actions all get recorded as the Anonymous user that gets used elsewhere for unauthenticated Scryer
  • Recovery mode hardened (behavior change):
    • SCRYER_RECOVERY_ADMIN_PASSWORD now forces form login on and suppresses local-IP bypass (previously it disabled auth).
  • Post-upgrade auto-backup
    • After a version upgrade, if auto-backup is enabled and keyed, a backup is triggered automatically on next startup (tracked via a pending marker, cleared on success).
  • Post-processing hardening (security)
    • Inline shell scripts require inlineShellAcknowledged: true on create/update/enable; file scripts must use absolute paths; configuration-change events are emitted for every script mutation.

Posted Jun 23, 2026, 9:09 PM UTC

30
Loading comments…