Commit Graph
9 Commits
Author SHA1 Message Date
casjay e8a76856cb 📖 Replace legacy org spec AI.md with standardized master 📖
AI.md is now the standardized application-image specification from
claudemgr/docker/CASJAYSDEVDOCKER.md — PARTs 0–8 covering critical
rules and org mapping, repo model, template system with the OCI label
canon (image.url
https://hub.docker.com/r/casjaysdevdocker/super-productivity), tooling
reference, .env.scripts, runtime system, README layout, CI/CD, and
verification gates. This replaces the old org-wide "Docker Container
Repository Specification," whose stale OCI canon (base.name,
schema-version, duplicate source labels) was superseded; the
bootstrap/update runbook lives in the dockersrc-bootstrap agent.

- AI.md: replaced with the CASJAYSDEVDOCKER.md master template
2026-08-14 15:21:36 -04:00
casjay 56656973ce 🗃️ Update codebase 🗃️
rootfs/usr/local/etc/docker/functions/entrypoint.sh
2026-08-02 20:44:38 -04:00
casjay 93dbf5f521 🐛 Fix entrypoint hang and lost-interpreter bugs 🐛
- rootfs/usr/local/bin/entrypoint.sh:
  1. The "start all services" gate
     (`if [ "$START_SERVICES" = "yes" ] || [ -z "$1" ]`) always evaluated
     true on a first-run container regardless of $1, because
     START_SERVICES is force-set to "yes" whenever no PID file exists yet.
     Any command passed to `docker run` — `exec ...`, `sh -c ...`,
     `shell`, or an arbitrary program — was swallowed into the
     service-start+monitor branch before reaching the `case "$1"`
     statement that already handles those subcommands, hanging the
     container as a daemon instead of running the given command. Changed
     the condition to `if [ -z "$1" ]` so the daemon branch only fires
     when no command was given at all.
  2. The `*/bin/sh | */bin/bash | bash | sh | shell)` case branch
     unconditionally shifted $1 before `__exec_command "$@"` (a bare
     `exec "$@"`). For `docker run image sh -c 'cmd'` this turned the
     exec into `exec -c cmd` (command not found, exit 127) instead of
     `exec sh -c 'cmd'`. Split the branch: real interpreter names
     (*/bin/sh, */bin/bash, bash, sh) now pass through unshifted; the
     "shell" keyword (not a real interpreter) gets its own branch that
     shifts and prepends "sh" to any remaining args, or falls back to a
     bare `__exec_command` (exec bash -l) when none remain.
  Verified `bash -n` passes. Found and fixed upstream in
  dockersrc/go, confirmed identical in this repo's generated
  entrypoint.sh, and mechanically applied here with the same patch.
2026-07-27 23:28:03 -04:00
casjay 513b12fe6e 📝 Migrate /var/lib/srv docker paths to /srv in README 📝
Update volume mount examples and dockerHome variable from
the old /var/lib/srv/$USER/docker layout to /srv/$USER/docker.
- README.md: update volume path references to /srv/$USER/docker

README.md
rootfs/usr/local/bin/copy
rootfs/usr/local/bin/healthcheck
rootfs/usr/local/bin/symlink
2026-07-10 12:19:59 -04:00
casjay 02a1651574 🐛 Fix __create_service_env to write .local.sh to disk 🐛
The .local.sh block defined stub functions in memory but never
wrote the file to disk, so __file_exists_with_content always
failed and __create_service_env returned non-zero on every run.
Fix: use a heredoc to write the stub functions into .local.sh.
- rootfs/usr/local/etc/docker/init.d/zz-nginx.sh: write .local.sh
via heredoc in __create_service_env; bump version to 202606261600-git

rootfs/usr/local/etc/docker/init.d/zz-nginx.sh
2026-06-26 21:03:00 -04:00
casjay 2f88315fdf 🗑️ Remove WebDAV sync support; SuperSync only 🗑️
WebDAV was added as an alternative sync provider but the design decision
is to ship SuperSync only. Removes all WebDAV env vars, the nginx reverse
proxy block for /webdav/, and the WebDAV branch in __pre_execute that
wrote sync-config-default-override.json. SuperSync behavior is unchanged.
- Dockerfile: drop WEBDAV_BACKEND, WEBDAV_BASE_URL, WEBDAV_USERNAME,
WEBDAV_SYNC_FOLDER_PATH from ENV declarations
- rootfs/usr/local/etc/docker/init.d/zz-nginx.sh: remove WEBDAV_*
variable declarations, nginx /webdav/ proxy location block, and
WebDAV branch in __pre_execute sync config generation

Dockerfile
rootfs/usr/local/etc/docker/functions/entrypoint.sh
rootfs/usr/local/etc/docker/init.d/zz-nginx.sh
2026-06-26 15:13:47 -04:00
casjay 2684bd5dfa 🐛 Fix container init so nginx starts reliably 🐛
Four bugs prevented nginx from starting in the super-productivity container.
All four are fixed; tested end-to-end: HTTP 200 on /, /health returns
"healthy", and sync-config-default-override.json is written correctly
from SUPERSYNC_BASE_URL env vars.
- Dockerfile: remove /etc/postfix and /etc/ssmtp in the pkmgr RUN step
so ssmtp binary cannot resolve config dirs that were never installed
- rootfs/usr/local/bin/entrypoint.sh: make __setup_mta non-fatal with
|| true; image has ssmtp binary but no config dirs — MTA is optional
- rootfs/usr/local/etc/docker/functions/entrypoint.sh: fix __setup_mta
guard (bare return → return 0) so it does not exit caller with code 1;
gate all verbose debug echoes behind DEBUGGER=on so they do not slow
down __fix_permissions / __setup_directories with unnecessary tee pipes
- rootfs/usr/local/etc/docker/init.d/zz-nginx.sh: guard EXEC_PRE_SCRIPT
type-P lookup behind [ -n ] so type -P '' cannot fire __trap_err_handler;
create nginx.local.sh with touch inside __create_service_env and remove
its __file_exists_with_content check from exitCode so the function
returns 0 and zz-nginx.sh proceeds to __run_start_script

Dockerfile
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/etc/docker/functions/entrypoint.sh
rootfs/usr/local/etc/docker/init.d/zz-nginx.sh
2026-06-26 15:00:27 -04:00
casjay 57bdeb5ff8 🔧 empty diff, no changes to commit 🔧
rootfs/usr/local/etc/docker/init.d/zz-nginx.sh
2026-06-26 14:24:46 -04:00
casjay 134db61c18 🦈🏠🐜 Initial Commit 🐜🦈🏠 2026-06-26 14:10:54 -04:00