Fix local Garage dev setup #99
No reviewers
Labels
No labels
activitypub
admin
api
articles
auth
bug
cleanup
cli
comments
compatibility
config
contacts
database
deployment
design
dev-env
docs
documentation
email
enhancement
feature
federation
feed
homepage
implementation
integration
media
openapi
priority:high
priority:low
priority:medium
proof
public-routes
public-ui
release
safety
social
sources
status:active
status:canceled
status:done
status:inprogress
status:waiting
syndication
tailwind
template
test
web
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
erik/slugkit!99
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/task-576db8cb-local-garage-dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Fixes the Slugkit local Garage dev setup so media storage uses a real Docker Compose Garage service instead of a hidden sleep-loop fallback.
Task
Task: #task-576db8cb
Changes
docker-compose.ymlwith a local Garage service and Slugkit-specific host ports3910-3913to avoid collisions with other local projects.garage.toml, matching the Docker Compose pattern used byerikcraddock.me.Procfile.devto run Docker Compose under Overmind (docker: docker compose up --remove-orphans) instead of a custom Garage wrapper.scripts/setup-garage.shandmake garage-setupto configure layout, key, bucket, permissions, and local.envmedia credentials after Garage is running./media/...) and adds a public media route that streams objects from storage so LAN browsers do not depend on Garage virtual-host DNS.Testing
./scripts/pre-pr.shpassesChecklist
./scripts/pre-pr.shpassesPR Review
Summary
Reviewed PR #99 against task-576db8cb. The change replaces the fake local Garage loop with Docker Compose, adds a setup target/script for bucket/key/env provisioning, updates docs/examples, and adds regression coverage for the dev-environment files.
Acceptance criteria
erikcraddock.meor an equivalent reliable local approach..envdocumentation and examples use the variable names expected by Slugkit (S3_ACCESS_KEY_ID,S3_SECRET_ACCESS_KEY, etc.).make devplus the documented Garage setup path supportsslug media uploadagainst the local dev API.Blocking issues
None.
Warnings
None.
Verification
./scripts/pre-pr.shpassed locally.Verdict
Approved. Stop at human merge approval gate.
a7d792015fc16b6b184dPR Review Update
Summary
Re-reviewed the amended PR #99 after correcting the Garage dev design to match the
erikcraddock.mepattern: Overmind starts Docker Compose, Garage config is committed asgarage.toml, setup is explicit viamake garage-setup, and no hidden wrapper/loop remains.Acceptance criteria
erikcraddock.meor an equivalent reliable local approach..envdocumentation and examples use the variable names expected by Slugkit (S3_ACCESS_KEY_ID,S3_SECRET_ACCESS_KEY, etc.).make devplus the documented Garage setup path supportsslug media uploadagainst the local dev API.Blocking issues
None.
Warnings
None.
Verification
make checkpassed locally../scripts/pre-pr.shpassed locally.Verdict
Approved. Stop at human merge approval gate.
c16b6b184dbecad6a16cbecad6a16c82c6825410PR Review Update
Lifecycle cleanup was amended after dev restart testing showed
.overmind.sockcould disappear while stale Overmind tmux sessions and the Compose container remained.Additional changes reviewed
make dev-stopnow cleans the normal Overmind socket path, stale/tmp/tmux-*/overmind-slugkit-*tmux sessions, and the local Slugkit Compose project.make dev-statusnow reports stale Overmind tmux sessions when.overmind.sockis unavailable instead of incorrectly saying onlystopped.Verification
make checkpassed locally.Verdict
Approved. Stop at human merge approval gate.
82c6825410ad404fa87aPR Review
PR #99 reviewed against task
task-576db8cbafter the latest Garage setup fixes.Summary
make garage-setupconfigures layout, deterministic dev key, bucket permissions, website access, and writes Slugkit S3 env values.template/sitewith the correct local DB path, avoiding root.envpath leakage.test-post-20260604083912.Acceptance criteria
make devplus documented setup path supportsslug media uploadlocally.Verification
npm exec --workspace @slugkit/template-site -- vitest run --config ../../vitest.config.ts src/__tests__/dev-environment.test.tsmake check./scripts/pre-pr.shslug doctorauth passed;slug media uploadreturnedhttp://slugkit-dev.web.garage.localhost:3912/uploads/test/slugkit-cli-test-image-2.png; public image fetch returned200 image/png.Blocking issues
None.
Warnings
None.
Verdict
Approved. Stop at human merge approval gate.
ad404fa87ad77d4b3296d77d4b3296c262d8c77aPR Review Update
PR #99 was amended after validating the media image in the public test post from a LAN browser path.
Summary
/media/...) instead of Garage virtual-host URLs./media/*objects from configured storage, so browsers loadinghttp://10.10.1.197:3000/...can fetch images from the same app host.<img src="/media/uploads/test/slugkit-cli-test-image-2.png" alt="Slugkit test image" />, and the image fetch returns200 image/png.Acceptance criteria
make devplus documented setup path supportsslug media uploadlocally.Verification
http://10.10.1.197:3000/posts/test-post-20260604083912includes the image tag.http://10.10.1.197:3000/media/uploads/test/slugkit-cli-test-image-2.pngreturns200 image/png.make checkpassed../scripts/pre-pr.shpassed.Blocking issues
None.
Warnings
None.
Verdict
Approved. Stop at human merge approval gate.