Add .devcontainer/devcontainer.json pointing at ../Dockerfile.dev so VS Code / Codespaces / any devcontainer-aware tool can build the dev environment directly from source.
Add .forgejo/workflows/publish-dev-container.yml that rebuilds Dockerfile.dev and pushes it to codeberg.org/guettli/sharedinbox-dev whenever Dockerfile.dev, the devcontainer config, or the workflow itself changes on main. The image is tagged both :latest and with the short commit SHA for pinnable references.
The workflow uses the built-in FORGEJO_TOKEN to log in to Codeberg's container registry — no extra secrets required.
Notes
No existing references to ghcr.io/guettli/sharedinbox-dev were found in the repo, so issue step 3 (updating image references) is a no-op here.
workflow_dispatch is also enabled so the image can be rebuilt manually if needed.
Verification
python3 -c "import json; json.load(...)" parses the devcontainer config.
python3 -c "import yaml; yaml.safe_load(...)" parses the workflow.
Triggers (paths filter) match the source files the issue identifies as drift risks.
Closes #552
## Summary
- Add `.devcontainer/devcontainer.json` pointing at `../Dockerfile.dev` so VS Code / Codespaces / any devcontainer-aware tool can build the dev environment directly from source.
- Add `.forgejo/workflows/publish-dev-container.yml` that rebuilds `Dockerfile.dev` and pushes it to `codeberg.org/guettli/sharedinbox-dev` whenever `Dockerfile.dev`, the devcontainer config, or the workflow itself changes on `main`. The image is tagged both `:latest` and with the short commit SHA for pinnable references.
- The workflow uses the built-in `FORGEJO_TOKEN` to log in to Codeberg's container registry — no extra secrets required.
## Notes
- No existing references to `ghcr.io/guettli/sharedinbox-dev` were found in the repo, so issue step 3 (updating image references) is a no-op here.
- `workflow_dispatch` is also enabled so the image can be rebuilt manually if needed.
## Verification
- `python3 -c "import json; json.load(...)"` parses the devcontainer config.
- `python3 -c "import yaml; yaml.safe_load(...)"` parses the workflow.
- Triggers (paths filter) match the source files the issue identifies as drift risks.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #552
Summary
.devcontainer/devcontainer.jsonpointing at../Dockerfile.devso VS Code / Codespaces / any devcontainer-aware tool can build the dev environment directly from source..forgejo/workflows/publish-dev-container.ymlthat rebuildsDockerfile.devand pushes it tocodeberg.org/guettli/sharedinbox-devwheneverDockerfile.dev, the devcontainer config, or the workflow itself changes onmain. The image is tagged both:latestand with the short commit SHA for pinnable references.FORGEJO_TOKENto log in to Codeberg's container registry — no extra secrets required.Notes
ghcr.io/guettli/sharedinbox-devwere found in the repo, so issue step 3 (updating image references) is a no-op here.workflow_dispatchis also enabled so the image can be rebuilt manually if needed.Verification
python3 -c "import json; json.load(...)"parses the devcontainer config.python3 -c "import yaml; yaml.safe_load(...)"parses the workflow.