Skip to content

refactor: drop compose profiles — osa start/stop manage the whole stack - #18

Merged
rorybyrne merged 2 commits into
mainfrom
remove-compose-profiles
Aug 1, 2026
Merged

refactor: drop compose profiles — osa start/stop manage the whole stack#18
rorybyrne merged 2 commits into
mainfrom
remove-compose-profiles

Conversation

@rorybyrne

Copy link
Copy Markdown
Contributor

What

Removes docker compose profiles from the local stack. Now osa start brings up every service in the compose template, and osa stop (docker compose down, which operates project-wide) tears them all down — no profile bookkeeping.

Profiles were gating two services:

  • dashboard (profile ui) — already started by default, so the profile bought nothing.
  • web (profile web) — the out-of-date end-user app, deliberately excluded.

Changes

  • compose template: drop profiles: - ui from dashboard; comment out the web service (uncomment to re-enable once it's updated — it no longer needs a profile).
  • instance.py: _build_compose_command no longer takes or emits --profile; start_instance drops the with_ui param and always prints the dashboard URL. Fixed the stale --with-ui reference in the .env template comment.
  • main.py: remove the --no-ui flag; osa start docstring is now "(API + dashboard)".
  • tests: assert --profile is never emitted (base command, default start, --source start); dropped the with_ui/--no-ui cases.

Behavior note

There's no longer a headless/API-only mode — osa start always requires the dashboard image to be pullable. Easy to add a --no-dashboard flag back if CI needs it.

Verification

  • uv run pytest tests/ — 379 passed
  • ruff check / ruff format / ty check — clean
  • docker compose config --services lists exactly db, docker-socket-proxy, server, dashboard (web excluded, dashboard always present)
  • Confirmed empirically that docker compose down (no profile) removes a profiled container, so osa stop fully tears the stack down

The first commit (chore: sync uv.lock to 0.8.0) resolves pre-existing lock drift — main's uv.lock was stale at 0.7.0, which the ty pre-commit hook kept regenerating.

Profiles added indirection for no benefit now that the dashboard is a
default service. Remove them so `osa start` brings up every service in the
compose template and `osa stop` (docker compose down, which is project-wide)
tears them all down.

- compose: drop `profiles: - ui` from the dashboard; comment out the
  out-of-date `web` service (uncomment to re-enable once it's updated).
- instance: `_build_compose_command` no longer takes/emits profiles;
  `start_instance` drops the `with_ui` param and always reports the
  dashboard URL. Fix the stale `--with-ui` note in the .env template.
- main: remove the `--no-ui` flag.
- tests: assert `--profile` is never emitted; drop the with_ui/no-ui cases.
@greptile-apps

greptile-apps Bot commented Aug 1, 2026

Copy link
Copy Markdown

Greptile Summary

The PR removes Compose profile bookkeeping so osa start consistently launches the API and dashboard while the outdated web application remains excluded.

  • Removes profile arguments and the API-only CLI mode.
  • Makes the dashboard an unconditional Compose service and always reports its configured URL.
  • Comments out the outdated web service until it can be re-enabled.
  • Updates tests for the profile-free command behavior and synchronizes the root package version in uv.lock.

Confidence Score: 5/5

The PR appears safe to merge, with profile removal applied consistently across the CLI, Compose template, and tests.

No concrete changed-code-triggered failure remains; removed parameters have no stale callers, and the supported Compose services align with the new unconditional startup behavior.

Important Files Changed

Filename Overview
osa/cli/instance.py Removes profile command construction and conditional dashboard handling without leaving dangling callers or abstractions.
osa/cli/main.py Removes the --no-ui option and consistently delegates startup of the full supported stack.
osa/cli/templates/docker-compose.yml Makes the dashboard unconditional and excludes the stale web service by commenting out its complete definition.
tests/test_instance.py Replaces profile-specific cases with assertions that default and source-based startup never emits profile arguments.
uv.lock Updates only the editable root package version; reported vulnerable transitive versions are unchanged from the base revision.

Reviews (1): Last reviewed commit: "refactor: drop compose profiles — osa st..." | Re-trigger Greptile

@rorybyrne
rorybyrne merged commit e75d09e into main Aug 1, 2026
4 checks passed
@rorybyrne
rorybyrne deleted the remove-compose-profiles branch August 1, 2026 12:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant