Skip to content

Release 0.15.0 - #65

Merged
raffelino merged 14 commits into
mainfrom
release-0.15.0
Sep 29, 2026
Merged

raffelino merged 14 commits into
mainfrom
release-0.15.0

Conversation

@raffelino

Copy link
Copy Markdown
Collaborator

Release 0.15.0: Epic V15 (plan in _bmad-output/planning-artifacts/v015-epics.md).

What's in it

  • V15.5, custom Dockerfile and your own container image: edit the generated Dockerfile or import your own file. Alternatively use an existing image, which is never marked stale or overwritten by a build. Needs the Docker-build permission.
  • V15.1, JUnit/xUnit report export: format=junit on the existing export, produced by rebot in RoboScope's own Python. Runs still never emit --xunit, and user args still can't pass it.
  • V15.2, %{ENV} check in the Flow Editor: refs the repo's environment does not define are flagged. It is a warning only, and only variable names are read.
  • V15.3, automatic retries of failed runs: max_retries is wired up. parallel: true and advanced config combined with retries return 422. The ignored max_parallel_runs setting is removed.
  • Fix: the add-project dialog's environment choice (and pre-run sync) was dropped on creation. The V15.2 e2e spec caught it.
  • Test: the publish-diff e2e test got a longer timeout for its queued clone.

Verification (local, macOS arm64)

  • Backend: 2492 passed. Frontend: 935 vitest passed, vue-tsc clean, vite build OK.
  • E2E: full suite 346 passed / 2 failed / 6 skipped. Both failures are fixed in this PR: the real bug above, and the clone timeout. The affected specs then passed twice in a row.
  • The dev server booted 0.15.0 on an existing database, so the lightweight migration of the new environment columns works.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GReqJWK77kV77FkNvsLgrL

raffelino and others added 14 commits September 28, 2026 19:30
…k, run options)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GReqJWK77kV77FkNvsLgrL
…(V15.5)

- PUT /environments/{id}/dockerfile stores an edited/imported Dockerfile
  (<=100 KB, FROM first after ARGs, no NUL); null/empty resets. GET returns
  it, builds use it and then need no packages. Gated by docker_build op.
- PATCH docker_image + docker_image_custom=true marks an image as
  user-provided: never stale; a RoboScope build switches back to managed.
  Image changes run the docker_build governance check inline.
- New columns dockerfile_override / docker_image_custom via lightweight
  SQLite/Postgres migrations + Alembic a9d4c7e2b1f0.
- Docker section: badges, "Use your own image" form, editable Dockerfile
  with Save / Reset to generated / Import file; i18n EN/DE/FR/ES, docs.
- Contract: image must provide python with robotframework (the runner
  executes python -m robot, workdir /workspace, results in /output).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GReqJWK77kV77FkNvsLgrL
…ile is used

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GReqJWK77kV77FkNvsLgrL
…ariables

Chips in the Variables panel and the node %{} badge compare each %{NAME}
against the keys of the repo's environment (own, else default). Undefined
names without an inline default get an orange warning + tooltip; refs with a
default stay neutral. Keys only, via provide/inject (no form/node-data writes).

Story V15.2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GReqJWK77kV77FkNvsLgrL
GET /reports/{id}/export?format=junit converts the stored output.xml with
`python -m robot.rebot --xunit` (fixed list argv, temp dir, 120 s timeout)
and returns report_<id>_xunit.xml. Missing output.xml -> 404, conversion
error or timeout -> 422 with rebot's stderr. Runs still never emit --xunit;
the advanced-args deny-list rejection of --xunit/-x is now pinned.

"Export JUnit" button in the report detail view and run panel; export
failures toast the server detail (blob error bodies are unwrapped).
i18n EN/DE/FR/ES, docs, CHANGELOG, vitest + e2e coverage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GReqJWK77kV77FkNvsLgrL
# Conflicts:
#	CHANGELOG.md
…s (V15.3)

- Runs ending FAILED/TIMEOUT re-run via retry_run until retry_count reaches
  max_retries; the retry keeps its schedule link and is committed before dispatch.
  PASSED/CANCELLED/ERROR never retry; a retry failure never touches the finished run.
- RunCreate: parallel=true -> 422; max_retries together with advanced_config -> 422
  (auto-retry can never re-pass gate_advanced_execution).
- Run dialog "Retries on failure" (0-3), "Attempt n of m" in runs table + detail.
- max_parallel_runs no longer seeded or shown (executor is single-worker).
- Docs (EN/DE/FR/ES), CHANGELOG, backend/vitest/e2e tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GReqJWK77kV77FkNvsLgrL
… a project

create_repository dropped RepoCreate.environment_id and pre_run_sync,
so the add-project dialog's 'Default environment' had no effect until
changed on the project card. Caught by the V15.2 e2e spec.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GReqJWK77kV77FkNvsLgrL
Epic V15: custom Dockerfile / own container image, JUnit report export,
Flow Editor %{ENV} definition check, automatic retries of failed runs
(inert parallel / max_parallel_runs options retired). Also fixes the
add-project dialog dropping the chosen environment. README and the
landing page mention the new capabilities; in-app docs were updated
per story (EN/DE/FR/ES).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GReqJWK77kV77FkNvsLgrL
@raffelino
raffelino marked this pull request as ready for review September 29, 2026 13:29
@raffelino
raffelino merged commit 00ea189 into main Sep 29, 2026
9 checks passed
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