Skip to content

Releases: MbedLabs/bloom

Bloom 1.2.0

Choose a tag to compare

@elomariamin elomariamin released this 16 Oct 23:50
25293a7

Bloom 1.2.0

Bloom 1.2.0 brings existing tests in and takes verification evidence out: test-case import from TestRail, CSV, XML and Markdown, exports and PDF reports up to a verification dossier, document review and approval, access per project with groups and policies, Jira issues as Bloom defects, an audit log, S3-compatible storage and report requests to Bud.

Highlights

  • Import test cases from TestRail XML or CSV exports, from CSV and XML that round-trip with the export, and Markdown documents classified into artefacts with parameters.
  • Export test cases as Markdown, CSV, XML or PDF, the traceability matrix as CSV or PDF, and a verification dossier: each requirement with the test cases that verify it, their last results and the linked Bud runs.
  • Controlled documents move from Draft through review to approval, with notifications and email.
  • Access per project: groups of policies assigned in each project, policies by resource and origin, custom origins on artefacts, and an access-denied page with access requests.
  • Jira issues of a mapped project create and update Bloom defects; pushing back to Jira is a per-project switch, off by default.
  • Audit log, S3-compatible attachment storage, report requests to Bud, a company logo on PDF reports, and profile pictures.

Upgrade notes

  • Back up the database and the attachments volume first. Eight migrations run from 1.1.0 (d20260907f14).
  • Existing project memberships are converted to the new access model. A maintainer with a maintainer membership gets the full set of project policies; a maintainer with any other membership gets a generated "Released Read-only" policy; every other member gets a generated "Released Read (...)" policy limited to customer content and the document types they could see before. Administrators stay global. Review the Access page after upgrading.
  • Existing activity without an actor is attributed to the administrator whose email equals ADMIN_EMAIL.
  • Reading an artefact by id in a project the user is not in answers 404 instead of 403.
  • Links in emails use APP_BASE_URL. FRONTEND_BASE_URL is still read, but only when APP_BASE_URL is not set.
  • S3 storage is optional: BLOOM_STORAGE_BACKEND=s3 (or STORAGE_BACKEND) with the BLOOM_S3_* settings listed in .env.example.
  • PyJWT replaces python-jose; cryptography, Pillow and boto3 are added.

Compatibility

Component Version
Container image ghcr.io/mbedlabs/bloom:1.2.0 (also 1.2, 1, stable)
Bud (optional) 1.2.0 for report requests

Added

  • Readers request reports beside linked Bud runs and follow Pending, Delivered or Refused state. Bud publishers receive requests through the existing integration connection; successful report delivery provides a document link subject to existing project visibility.
  • Upload and remove your profile picture in Settings; show it alongside users, comments and activity.
  • Admin company logo on PDF reports: an administrator uploads a company logo in Settings; it renders on the report letterhead (top-left) alongside the EmbedLabs tamper-evidence footer, which is always present. The Settings preview loads through the authenticated client so the admin sees exactly what was stored.
  • Markdown document import: classifies a Markdown document into artefacts (by heading tag, front matter, or an at-import marker); a parameter is written inside a sentence as {{parameter: NAME, value: VALUE}}, created on import and replaced with {{NAME}}, and a name that already exists is never overwritten: the import stops and, for each such name, you keep the project's value or import the file's value under a new name; classified sections are persisted as artefacts; an unlinked imported artefact raises a notification to link it; documented per template. A Markdown mode is added to the Import Wizard.
  • Test-case import from CSV and XML, round-tripping with the export, through POST /projects/{id}/import/test-cases?format=csv|xml; every step row (preconditions, loops, nesting, multi-line text, expected results) is kept; a CSV/XML mode in the Import Wizard.
  • Export test cases as Markdown, CSV, XML and PDF, with every step row; the Markdown export re-imports as the same test cases.
  • More PDF reports on the report letterhead: the traceability matrix, the test cases, and a verification dossier (each requirement with the test cases that verify it, their last results and the linked runs). Every project export and report is offered from one Export menu on the traceability page. A requirement lists the Bud runs linked to it; each opens in Bud, where the user signs in with their own Bud account and downloads the run report. An export holds only what the user may see: artefacts hidden from external users and document types outside their allowlist are left out.
  • A {{ parameter chip shows the parameter's name while a body is edited, with its value on hover, and its value when the body is read; a parameter without a value keeps showing its name. Test-case steps show values the same way when read. The stored document keeps {{NAME}}.
  • S3-compatible object storage: STORAGE_BACKEND=s3 keeps attachments in a bucket (AWS S3, MinIO, Hetzner, Ceph) under a per-instance prefix, with the local directory as a mirror that reads fall back to when the bucket does not answer (STORAGE_LOCAL_MIRROR, default on). python -m app.storage migrate --to s3 copies existing files and checks their sizes; cleanup reconciles the bucket; /api/ready reports the storage. Local storage stays the default and is unchanged. Adds boto3 to the locked dependencies.
  • Access management: a group is a set of policies. Assign people to a policy group separately in each project. Administrators, Developers, Product Owners and Testers are available in every project; Customers is optional. Policies control actions by resource and document origin; Write includes Read, while Review remains independent. Read Internal covers all origins; Read Customer and Review Customer cover customer content. Application Administration and Access Management are assigned separately from project access. Default policies are protected and can be duplicated; groups remain editable.
  • Custom origins (stored as tags): the Access Management application permissions control the origin catalogue. An artefact editor assigns origins from their permitted scope on the detail page, and policies can restrict access by origin. Viewer (external) accounts choose origins only when creating an artefact; they cannot change them afterwards. Renaming is available through PATCH /tags/{id}, rather than a rename control in the web app, and preserves references from artefacts and policies.
  • Controlled documents start in Draft. Their creator requests review, the assigned reviewer comments and requests approval, and an eligible approver records approval. Requests produce notifications and email. Approved content is preserved when edited; a new linked approved CHG advances Version and Revision on Save. A correction without a new CHG returns to Draft at the same numbers. Approved CHGs cannot be edited. Risks, defects, campaigns, reports and standards retain their operational lifecycles.
  • Migrate test cases from TestRail: POST /projects/{id}/import/testrail?format=xml|csv reads a TestRail XML suite or CSV export (separated steps, text steps, preconditions, nested sections, one CSV row per step). CSV columns are detected from the header and can be remapped in the Import Wizard (POST /projects/{id}/import/testrail/columns). Each top-level section becomes a test suite, references that match a requirement id become verifies links, the rest are kept in the case body with type, priority and estimate, and cases import as Draft. A case keeps source_ref = testrail:C<id>, so importing the same export again updates it instead of duplicating it. A From TestRail mode is added to the Import Wizard.
  • Resolve artefact detail references by public id; existing database identifiers continue to resolve.
  • Jira to Bloom defects: a Jira issue of a mapped project creates a defect when it matches the project's issue types (default Bug) and optional label, with its description, priority and severity (through a configurable priority map), link and state, reported by the Bloom user behind the integration's account email. The defect then follows the issue (title, description, priority, state; a resolution closes it); a deleted issue leaves the defect marked Removed in Jira; a Bloom test-case id in the issue becomes the defect's source. Pull existing issues creates defects for the issues still open, from a one-time JQL search. The account email and API token are checked with Jira first, and a classic API token or an API token with scopes (read:jira-work, read:jira-user, and write:jira-work for two-way sync) works; a token with scopes is used through Atlassian's API gateway for the site. A credential Jira does not accept is reported instead of an empty search. The push to Jira is behind a per-project two-way switch, off by default. Jira is configured in the project's External issue tracker panel; setup is in docs/OPERATIONS.md.
  • Open a mentioned artefact, and the exact parameter, from a document body; mention links resolve by public id.
  • Audit log: security-relevant events (authentication, accounts, project members, external document types, groups, policies and artefact visibility, configuration, deletions, exports, imports, attachments) are recorded with the acting user, the request id, the client address, the outcome and details without secrets; a failed sign-in is recorded although the request fails. Administrators read it under Audit log (GET /api/audit, filtered by actor, action, target, project, outcome and time). No endpoint changes or deletes an event; python -m app.audit prune --older-than-days N removes old events on the operator's schedule. Event times are shown in the viewer's time zone.
  • Access-...
Read more

1.1.0

Choose a tag to compare

@elomariamin elomariamin released this 21 Sep 16:53
83096f1

Bloom PLM v1.1.0

This release adds Cloudron packaging
and first-run setup, inline artefact tagging in documents, campaign/suite
topology, and Jira alongside GitHub and GitLab — with faster traceability and
project screens.

Added

  • Cloudron package — runs under Cloudron's read-only root filesystem with data and generated secrets in /app/data; PostgreSQL and local-storage addons, optional mail; minBoxVersion 9.1.0; CI smoke-tests the image against the Cloudron contract.
  • First-run setup — GET /api/setup/status and POST /api/setup create the first administrator (409 once any user exists); a confirmation email is sent best-effort.
  • Inline artefact tags — # in a document body searches the project's artefacts and inserts a link (stored as a references link), visible in backlinks, the topology and the registry; excluded from coverage and traceability. Available in requirements, designs, risks, change requests, test concepts and the four document kinds.
  • Topology membership — campaign → suite (relates_to) and suite/campaign → test case (contains) are drawn in the project topology.
  • Jira integration alongside GitHub and GitLab — mandatory HMAC verification when a webhook secret is set, single-use delivery ids, credentials encrypted at rest; issues match by status category; outbound status changes apply as transitions.
  • Results sync reports the campaigns and test suites it reached, each with id, public id, name and page URL.
  • Change requests track an external issue in any supported tracker and record sync attempts.
  • Next document id — GET /api/projects/{project_ref}/next-doc-id/{type_code}; doc-type summaries and navigable relationships from a document into the filtered registry.
  • Release pipeline — tested images promoted by digest to v1.1.0/1.1.0/1.1/1/stable; published versions are never overwritten; an SBOM is attached.

Changed

  • A document's links collapse to per-role counts past twenty.
  • The traceability matrix is paginated; its Test Cases and Test Runs columns are removed.
  • Artefact identifiers are no longer capped at 999.
  • Listing projects counts every project in one pass; artefact_links and defects are indexed on project_id; per-id lookups are batched.
  • The third role reads "Reviewer" in the interface (the stored value stays external).
  • Transactional mail uses Bloom's own colours; the frontend is split by route.
  • Coverage measures threads and greenlets; the CI gate is 78%.
  • Dependency updates — React 19, React Router 8, Node 24, and pinned backend dependencies; the audit carries no exception.

Fixed

  • Constraint violations answer 409/422 with the request id; unhandled errors return the request id.
  • The links panel shows only relationships the open artefact is one end of; a campaign no longer shows its test cases' links as its own.
  • An unreachable issue tracker answers 502 or 504.
  • Deleting a user removes its memberships, notifications, import attempts, service credentials, defect assignments and attachment uploads.
  • Requirements and test cases accept and return their editor body; the create screen shows the identifier the server will assign.
  • The application shell stays mounted while a lazy page loads.
  • Cloudron mail uses the STARTTLS port; delivery failures return 503 naming host, port and TLS mode.

Security

Full changelog: https://github.com/MbedLabs/bloom/blob/main/docs/CHANGELOG.md

1.0.0

Choose a tag to compare

@elomariamin elomariamin released this 11 Sep 11:10

Public release 1.0.0.