Changelog

1.13.0

Released: 25.09.2026

Download: https://download.useblocks.com/ubtrace/1.13.0/ubtrace-offline-bundle-1.13.0.tar.gz

Breaking changes

  • Production mode is decided by the build, not by configuration. A released image carries that fact inside its compiled bundle, so licence enforcement and the other production-only safeguards hold on it whatever DEPLOY_ENV is set to. Setting DEPLOY_ENV=development together with UBTRACE_LICENSE_DISABLED=true – a workaround earlier documentation suggested for evaluating without a licence – no longer relaxes anything on a released image: the API and the worker refuse to start and name the setting to remove. Remove UBTRACE_LICENSE_DISABLED (or set it to false) before upgrading; see Installation for the upgrade note and License Configuration for evaluation licences.

New features

  • Agentic Engineer, an AI chat assistant, is now part of ubTrace. Ask a question about your traceability data in plain language – how a requirement is covered, what a change would affect, which needs have no verification – and get an answer backed by real queries against your ingested versions, with the tables and charts it read shown alongside the text. It answers only from artifacts the asking user is already permitted to see, so a question can never return a need that user could not open in the browser. Agentic Engineer is optional and off by default: it runs as its own container, is switched on with UBAI_ENABLED=true, and needs an LLM provider that you configure and pay for. The shipped default provider is a third-party cloud service, and a deployment where no data may leave your network can point it at an inference server you host instead. See Agentic Engineer – AI Chat Assistant for the setup, the provider options and what each one means for your data.

  • Agentic Engineer comes with per-user monthly spend control. Every model call it makes is priced and recorded, and in Enforce mode a user who has reached their monthly budget is declined a new turn until the next UTC month. You set a default budget, per-user overrides and your provider’s prices in the admin application under LLM budgets; there is no new environment variable and no price list is ever fetched, so prices are yours to keep up to date. The budget is checked when a turn starts and never interrupts one already running, so the real ceiling is the budget plus at most one turn. Usage is recorded from the moment the assistant runs, but an amount needs a price table: until you save prices every call is recorded at zero, and those calls are not repriced afterwards, so to watch real figures before enforcing anything, save your prices with the mode set to Observe. The page says so in place while no prices are configured. A turn you stop part-way is also recorded: your provider has already generated and charged for what it produced, so that spend is counted rather than disappearing. The spend table’s Estimated column is the share of the amount that came from character estimates, not the share of the calls – a few long calls a provider reported nothing for can account for most of the money. See Assistant Cost Control.

  • Agentic Engineer can export a trace of its LLM calls to Langfuse for observability. Tracing is off by default and must be enabled explicitly with LANGFUSE_ENABLED=true. When enabled, each assistant turn is recorded as a single trace carrying the prompts, model outputs, the retrieved artifact content, the requesting user’s id and the organization/project/version, sent to the LANGFUSE_BASE_URL you configure. Langfuse is self-hostable, so a deployment can point that URL at its own instance and keep all of the data inside the network. With tracing enabled both Langfuse keys and LANGFUSE_BASE_URL are mandatory and the assistant refuses to start without them: there is deliberately no default endpoint, so enabling tracing can never start sending your data to a host you did not name.

  • Turning Agentic Engineer on without an LLM key now stops the deployment at startup rather than appearing to succeed. Previously the API server started normally and only the assistant container failed, restarting every few seconds: every health check was green, the chat sidebar was simply absent, and nothing said why. Now, with UBAI_ENABLED=true and a provider that cannot work without a key (openrouter, the default, or azure-openai), both the API server and the assistant refuse to start and print COPILOT_LLM_API_KEY is required when UBAI_ENABLED is true naming the provider. Set COPILOT_LLM_API_KEY in your .env (or the Helm secret) and start again, or set UBAI_ENABLED=false to run without the assistant. Providers that read a key from their own environment variable (anthropic, openai, google) and keyless OpenAI-compatible endpoints are not affected.

  • Agentic Engineer is explicit about the limits of an answer. A turn that was cut short says why – it reached its planning budget, it reached the maximum number of retrieval agents, it hit its time limit, or it was stopped – and the advice differs accordingly, so “ask again at a higher effort level” is only offered where that would help. An answer resting on no successfully retrieved data says so rather than reading like any other answer. Where a question returns more data than one answer can describe, every table is kept and the answer names the ones it did not write about. The counts, totals, per-value breakdowns and ranges in the prose are computed from the retrieved rows, so the numbers in the text and in the table beside it are the same numbers.

  • Every planning pass of a turn stays on screen. The assistant plans several times per question – once to dispatch its retrieval agents, again after their results, again to answer – and each pass is shown in order: the current one open, earlier ones as a line you can expand and read in full. A turn keeps its reasoning after it finishes and after a reload.

  • A failed turn reports the cause it actually had. A provider or configuration problem is reported as such rather than as your own expired session, and the Retry button is withheld where an identical retry cannot succeed – a question too large for the model, an exhausted budget, or a fault on the browser side.

  • A turn in progress keeps streaming across a rolling update or a pod restart. Run bookkeeping is shared between processes rather than held in one, so a question survives the process that started it going away.

  • Agentic Engineer ships with skills of its own and reads yours as well. Shipped skills are part of the product and need no installation. Your own skills directory is read first, so a folder of yours that reuses a shipped skill’s name overrides it – that is the supported way to replace a shipped skill whose wording does not fit your project – and the copy that lost is reported as skipped, by name, on GET /api/v1/copilot/health. That endpoint lists every skills directory in the order they are read. See Assistant Skills for the header reference and the agent ids.

  • Questions about need tags are answered too. Tags are exported with each need, and a need with no tags is reported as having none rather than as unknown. Tags become available for a version the next time it is ingested.

Improvements

  • make up in an offline installation refuses to start while .env still contains <CHANGE-ME> placeholders, and lists the settings that still need a value, instead of starting a production deployment with template passwords. The customer Makefile also reports whether each step it ran succeeded.

  • Loading an offline bundle that predates the image manifest is refused before any image is restored, instead of after minutes of loading.

  • The documentation builder image ships PlantUML and the Java runtime it needs, so projects using sphinxcontrib-plantuml build without extra setup.

Bug fixes

  • API paths are now matched exactly, including their capitalisation. Previously a request whose path differed only in case – for example /api/v1/artifacts/organizations/.../Versions/... instead of versions – was still served, and some of the checks that decide what a user may see compared the path literally and therefore did not recognise it. Such a request now returns 404. Requests that use the documented paths are unaffected; an integration that relied on the previous tolerance must correct its casing.

  • Documentation now states what a rule’s need-type pattern does and does not cover. It applies to needs, the traceability graph, search results and metrics; it does not redact documentation page bodies, because a rendered page contains the needs authored on it and access to a page is decided by the document pattern alone. A role granted every document but only one need type can therefore still read the rendered text of the other types on those pages – to keep a need type unreadable, restrict the document pattern. The artifact-permissions admin page now says the same beside the field. Enforcement is unchanged; this is a correction to what was documented.

  • Search results are now narrowed by role-based visibility everywhere, not only inside a version. Searching across a whole organization or a whole project used to return every need and document section it matched – including the matching text excerpts – regardless of the visibility rules the searching user’s roles carry. Each result is now checked against those rules and withheld if no rule covers both its document and its type. The reported result count remains the search engine’s own count over the unfiltered query, so a page may hold fewer rows than its page size without the results having ended; page using the reported total rather than the number of rows returned.

  • Search autocomplete (typeahead) now requires a version to be selected. Requesting it for a whole organization or a whole project used to return matches from every version the search index held, without applying the role-based visibility rules – those rules are defined per version, so there was nothing to apply. Such a request is now refused rather than answered, and the version-scoped autocomplete is unchanged.

  • Role-based artifact visibility is no longer bypassable through the path. A version-scoped artifact request whose path could not be matched against the visibility rules used to be answered in full; it is now refused, and the organization, project and version listings are narrowed to what the caller may see regardless of how the path was capitalised.

  • A version imported while Elasticsearch was unavailable is indexed once Elasticsearch is back. The index write used to be skipped without a trace while the import reported success, leaving the traceability tree and need search empty and analytics reporting zero for that version. The skipped write is now recorded and retried.

  • A pull request review never places more comments inline than ubTrace’s own limit, even where the code host would accept more.

Security

  • Version-scoped artifact endpoints are now filtered against your artifact permissions without exception. Previously the type-ahead search endpoint returned the id, title and type of every need in a version regardless of the document and need-type rules applied to the caller; it is now scoped both in the search query and per result row. Every version-scoped endpoint is now answered from a single explicit policy, and an endpoint with no policy entry is refused rather than served unfiltered.

  • The aggregate analysis endpoints – coverage, statistics, schema violations, ASPICE readiness and version health – now refuse a caller who holds only partial access to a version’s artifacts. These endpoints report scores and totals computed over all of a version’s needs, which cannot be narrowed to the subset a caller may see, so a partially-restricted caller previously received numbers covering artifacts they cannot open. Callers with unrestricted access are unaffected. Scoping these numbers to the caller’s accessible subset is planned.

  • The Agentic Engineer service enforces the ubTrace licence itself: an unlicensed deployment is not served. Its health endpoint still answers without credentials, because container and cluster probes need it, but the operator diagnostics in that response – the skills directory paths and the list of rejected skill folders with their reasons – require a token.

  • Dependency security sweep (#1930). Known vulnerabilities reported against ubTrace’s third-party dependencies were remediated across the backend, the frontend and the build toolchain, closing the large majority of the advisories open against the project. Where an upstream fix existed it was taken; where none had been published, the affected component was assessed instead for whether ubTrace can reach the vulnerable code at all, and the outcome recorded alongside the change.

    Three items are knowingly left open, and none of them is reachable from request data in a running ubTrace deployment. The image-size library has no patched release; it reaches ubTrace only as an optional dependency of the stylesheet compiler in the build toolchain, and the image parsers named by the advisories were added to that library after the version ubTrace builds with, so the reported code is not present. One further advisory affects the Nx build toolchain and is tracked separately in #1938. Those two are build-time only and are absent from the shipped container images.

    The third, deepmerge-ts, has no patched release below a new major version, and the version in use is not ubTrace’s to choose: it is held by an exact pin inside the Prisma CLI’s own configuration package. It is therefore present in one shipped image, the database-migration job, where that CLI runs; it is absent from the API, worker, frontend and admin images. The affected code path is reached only when the CLI merges developer-authored configuration at startup, and never when handling request data or any other untrusted input.

    No ubTrace configuration, API behaviour or deployment step changes as a result of this sweep.

  • The statistics and coverage endpoints no longer answer for a project or a version the caller has no access to. A caller with no grant on a project, or on one version of it, previously received the same totals as an administrator. Single-need lookups and the combined need-and-document search on such a version are refused in the same way.

  • Shared and cloned dashboard widgets that are not pinned to explicit versions – Need Filter and Gauge widgets that follow the dashboard’s version selector, and custom metrics that select versions automatically – are shown to anyone other than their owner in their unconfigured state, instead of revealing document and need-type filter values the viewer may not be allowed to see. Filters listing several values keep only the values the viewer may see. Pin a widget to the versions it is about to share it in full; see Custom Metrics.

  • Custom metric permission patterns match exactly as they do everywhere else. A rule such as docs/* no longer also admits documents in sub-folders, and a few other pattern shapes no longer admit documents outside the rule.

  • Credentials no longer reach the application log. A failed call to the identity provider could write the service account’s token or client secret into the API log; request details are now redacted, and the sign-in exchange and the identity provider’s health check no longer log their requests.

  • An offline licence file is accepted only when it was issued for ubTrace.

  • Test roles and visibility rules that an earlier permission seed installed into every database (e2e-restricted) are removed on upgrade, and are no longer created on new installations.

  • Dependency security updates, including Next.js 16.3.3 and later, and fixed releases of multer, hono and qs.

1.12.0

Released: 18.09.2026

Download: https://download.useblocks.com/ubtrace/1.12.0/ubtrace-offline-bundle-1.12.0.tar.gz

New features

  • PR Review Mode brings documentation review into the pull request workflow. A selector in the header lists the reviewer’s open pull requests from GitHub or GitLab, drafts included and labelled. Choosing one pairs the build of the pull request’s branch with the build of the branch it targets, using the git provenance recorded at import, and opens the documentation and the traceability views with the differences between the two highlighted. Reviewers attach comments to a need, to a single field of a need, or to a section; the drafts are held on the server, so an unfinished review survives a closed tab or a second machine. Finish Review shows before submitting which comments can be placed inline on the pull request’s diff and which travel in the review body, and then posts everything as one review with a verdict. A review can also be discarded as a whole. PR Review Mode builds on the issue tracker integration and is enabled per deployment.

  • A version can record where it was built from. The branch, commit and pull request are read from an optional [ubtrace.git] block in config/ubtrace_project.toml, or passed on the import call as gitBranch, gitCommit and gitPullRequest; a value passed on the call takes precedence over the file. Provenance is shown alongside the version and never changes its identity.

  • A version can carry its release date. The date is declared on the import call with releasedAt and kept when the same version is imported again without one. Separately, each version records when this deployment first saw it. Neither is guessed for versions imported before this release – they read as not recorded until a date is declared.

  • Custom metrics no longer need their versions picked one by one. A metric can select versions by a name pattern, using * and ?, with a live preview of what the pattern matches, or by a release-date range chosen in a calendar; the two can be combined. A selection may span up to a thousand versions, and when more match than that, the chart says so rather than quietly dropping the rest.

  • A status-trend chart widget follows need counts across many versions at once. Each version is one point, several series can be drawn together, and versions are ordered naturally by name, so v2 comes before v10. A series with nothing to measure is shown as such, never as a zero.

  • A need’s change history can be opened from its menu in the traceability tree and from the action rail on a documentation page. The timeline lists every imported version in which the need was introduced, changed or removed, newest first, with the fields that changed and their old and new values. Where a change cannot be computed, the timeline says so instead of guessing. Change history is enabled per deployment.

  • Usage statistics show how ubTrace is used. Every user has a page with their own figures – documentation pages read, traceability trees opened, reports read and sign-ins – per day across the retention window. Administrators see an adoption view: for each feature, the share of people who use it, across the installation and per project. A figure drawn from fewer people than USAGE_ADOPTION_MIN_POPULATION (default 5) is withheld rather than published, and a project the administrator may not read does not appear at all. A gauge view gives the installation’s current size: organizations, projects, versions, and registered and active users. Both pages can be downloaded as CSV. Counts are stored per day and never as individual events, and after USAGE_RETENTION_DAYS (default 90) each person’s counts are folded into an anonymous daily total. Collection is on by default and is switched off with USAGE_STATS_ENABLED=false, which stops collection as well as hiding the pages.

  • The Activity area charts how long each import took over time, one point per completed run, so a project whose imports are getting slower is visible before it becomes a problem.

  • Version Diff exports are listed under a general Report Exports page, with a Report Type column and a title search. Links to the previous address keep working.

  • Every need on a documentation page shows an action rail with the actions available for it, instead of revealing them only on hover.

  • The Deep and Walkthrough views of the traceability tree offer a searchable selector for the starting need, instead of requiring its exact ID.

Improvements

  • Elasticsearch authentication is configured by method. ELASTICSEARCH_AUTH_MODE selects none, basic, api_key or bearer, and a private CA certificate or a client certificate and key can be supplied for a TLS cluster. An existing installation that sets a username and password keeps working with no change. A mode missing a setting it needs is reported by name at startup, as is TLS material configured against a plain-HTTP node. The Helm chart exposes the same settings as chart values.

  • Permission rules are evaluated for many versions in one pass, which keeps dashboards and multi-version charts responsive as the number of versions grows.

  • The Version Diff report’s controls – the comparison picker, the filters and CSV export – sit in the right sidebar, leaving the report itself more room.

  • A long version name in the breadcrumb no longer crowds out the rest of the path. It is shortened to fit, and the full name is shown on hover.

  • A user is identified by their identity provider’s subject rather than by e-mail address, so changing an address keeps the same account instead of appearing as a second person.

  • The documentation builder prints the Sphinx toolchain it resolved at startup and again in its exit summary, so a build can be traced to the versions that produced it.

  • The admin application image is published to the container registry alongside the other images.

Bug fixes

  • The identity provider configuration shipped with ubTrace assigns the basic client scope, without which recent Keycloak versions issue tokens that do not identify the user. A realm imported from an older export does not have it: add the basic scope to the ubTrace client. The API now logs an error naming the fix when it receives such tokens.

  • User counts for the licence check and the usage pages count people and no longer include service accounts. An unreadable count from the identity provider is reported as unknown instead of as zero.

  • Changing a filter on the dashboard Filter widget returns to the first page, instead of leaving the table on a page that no longer exists.

  • The Create Issue button for a text selection on a documentation page stays reachable while the page scrolls and while the selection is dragged.

  • Trackpad and mouse-wheel scrolling works again in searchable lists shown inside a dialog.

  • The need-type filter in version analytics applies every selected type, to every metric and scope, and Type stays selectable as a grouping for pie charts.

  • A Version Diff export that fails now notifies the users waiting for it, with a reason that reveals nothing they could not otherwise see.

  • A version whose schema-violations report arrived after its import is imported again, so the report is not lost.

  • The worker checks its administrator role setting before seeding permissions, instead of failing part way through.

  • The Create Issue description field no longer grows beyond the dialog.

  • USAGE_RETENTION_DAYS set through a Helm values file is rendered as a plain integer.

Security

  • A dashboard widget that spans several versions is checked against the permissions of every one of those versions, not only the first, before its configuration is shown to someone other than its owner.

  • An account created before this release is linked to its identity-provider subject only when the provider confirms the e-mail address is verified.

1.11.0

Released: 26.08.2026

Download: https://download.useblocks.com/ubtrace/1.11.0/ubtrace-offline-bundle-1.11.0.tar.gz

New features

  • Documentation pages can now be compared between two versions without leaving the page. A version picker on a document opens an inline comparison that marks added, removed and changed blocks in place, so a reviewer sees what moved between two releases of the same page instead of reading both side by side. A comparison too large to render is refused with the reason given, and access follows the permissions already in force on the document.

  • Issues can be filed against an external tracker directly from a documentation page. A connection to the tracker is registered per user, verified when it is saved, and stored with its credentials encrypted. Hovering a need or a table row on a page then offers a Create Issue control, which opens the tracker’s new-issue form prefilled with the need, its content and a link back to the page it came from. Outbound calls are restricted to the hosts an administrator has allowed.

  • Need references are live throughout the application. A need ID rendered in a table, a report or a document links to the need it names, and hovering it shows a preview of that need’s title, type and content without navigating away. Where a need can be opened in more than one place, the reference offers the available destinations instead of choosing one.

  • Traceability search matches need titles and content, not only need IDs. Substring and whole-word searches look at the ID, the title and the prose body of a need; regular-expression searches stay restricted to the ID and title, where they can be answered without scanning whole documents. A need that previously had to be found by its exact ID can now be found by any part of what it says.

  • The traceability tree gained a Complex Search tab beside its existing free-text search. It builds conditions over need properties – the same field, operator and value builder used by dashboard base filters – and applies them to the graph on demand. Results are capped at the first thousand matches, and the cap is stated when it is reached.

  • The traceability tree opens in the force-directed layout, which separates clusters and makes link paths easier to follow on dense graphs. The hierarchical layout remains available, and whichever layout you choose is remembered across reloads instead of reverting on every visit.

  • The Activity stream’s organization and project filters are searchable selects listing what actually exists, instead of free-text fields that had to be typed exactly. The project list is scoped to the chosen organization, and changing the organization clears a project that no longer applies.

  • A version whose documentation pages failed to index now repairs itself. Doc-indexing failures are tracked separately from content ingestion, with their own retry budget, and are re-driven as a documentation-only task against the material already imported – no re-ingest, and no reprocessing of the version’s content.

Improvements

  • The Elasticsearch per-request timeout is configurable through ELASTICSEARCH_REQUEST_TIMEOUT_MS, with a default of 5000 milliseconds. A deployment that reaches Elasticsearch over a high-latency path – a tunnel, a proxy hop, or a managed Elasticsearch-compatible service – can raise the ceiling instead of meeting a fixed five-second wall. The readiness probe keeps its own shorter timeout, so health checks do not slow down with it.

  • The Elasticsearch tuning settings are exposed through the Helm chart, so a Kubernetes deployment can set them from its values file rather than patching the container environment by hand.

  • The chart can seed a demonstration data set on install or upgrade. It is disabled by default and has no effect on an ordinary installation; where it is enabled, the sample documentation is placed in the input volume and picked up by the normal build and import cycle.

Bug fixes

  • Elasticsearch credentials are sent to the client again. ELASTICSEARCH_USERNAME and ELASTICSEARCH_PASSWORD were validated at startup and then dropped, so a secured cluster rejected every request while the deployment reported the credentials as configured. Both are now passed to the pooled client and to the readiness probe alike, and a half-configured pair – one without the other – sends no credentials at all rather than a broken one. A cluster that rejects the credentials is reported as a rejection, separately from one that is simply unreachable, and the password never appears in a log line.

  • The Version Diff report no longer retains memory after it runs. The database driver’s debug layer kept the arguments of recent statements alive whether or not debug output was enabled, so every comparison left its data behind and a sequence of large diffs drove the API to a restart.

  • The API is sized for a worst-case Version Diff instead of being killed under one. The container’s memory limit and the runtime’s heap ceiling were set independently, which let the runtime grow past the limit it lived inside; both were measured against a large comparison and raised together. An out-of-memory kill is also no longer silent – it is reported, rather than appearing as an unexplained restart.

  • Search across all organizations honours the content-type filter. Needs, documents and the combined view returned one identical mixed result set with the same total, because the filter never reached the query. Each now searches only the content it names, in the totals as well as in the listing.

  • The Schema Validation report distinguishes a version with no validation data from one that passed. A version whose validation artifact was absent was shown as fully passing, stating a result that had never been produced. Absence is now reported as absence.

  • A known violation count stays visible when only the detail list cannot be loaded. The summary – the total, the counts by severity and the most common subtypes – renders on its own, and only the detail table degrades to a notice, instead of the whole report falling back to an unknown state.

  • Import results no longer record schema validation as successful when no validation file was produced. That component is reported as skipped, matching how the other optional import stages already behave.

  • Errors returned by the server are shown in the artifact-permissions and role-mapping administration screens. A rejected create, update or delete left the dialog open with no message, so the operation looked as though nothing had happened; the reason is now displayed inline, and the dialog stays open so the entry can be corrected.

  • Navigation items are reachable at intermediate window widths. Between 768 and 1023 pixels the top bar had already switched to its compact form while the sidebar had not yet exposed the same entries, leaving the project selector unreachable in that range. Both now change over at the same width.

  • A documentation-indexing failure no longer fails the whole import. An error carrying no response body threw inside the handler meant to report it, which aborted the surrounding task and eventually discarded it – the version’s content had been imported but was never recorded as such. Every error shape is now handled, and a doc-indexing failure leaves the import degraded rather than failed.

  • Numeric values set through a Helm values file are rendered as plain integers. A raised ingest file-size ceiling, coverage input ceiling or Elasticsearch tuning value was written into the container environment in exponential notation, which the reading process could not parse.

  • On AWS, the load-balancer controller can create load balancers again. Its permissions were missing an action called on every reconcile, so the controller was refused and no load balancer appeared.

1.10.0

Released: 12.08.2026

Download: https://download.useblocks.com/ubtrace/1.10.0/ubtrace-offline-bundle-1.10.0.tar.gz

New features

  • Dashboard favorites: a dashboard can now be marked as a favorite, from the star button in the dashboard’s actions menu or from the star in the dashboard list. Favorites appear as a collapsible “Favorites” group in the sidebar, next to the “Dashboards” entry, so the dashboards you use most are one click away.

  • Widgets configured in custom mode now state which version their data covers. The version inherited from the project selector is shown as a read-only indicator, and where no version is pinned the indicator names the fallback the widget actually uses – up to the latest few versions – instead of claiming that no version is selected.

Bug fixes

  • Traceability links that point to a need on another document page no longer end in a “document not found” error. The two Sphinx HTML builders write such links with opposite meaning, distinguished only by a trailing slash; both are now resolved correctly, so flat-file and directory-style documentation sets both navigate as expected. Links carrying a query or a fragment keep it, and images referenced from a parent directory continue to resolve unchanged.

  • The documentation viewer’s left navigation now opens on the page you are reading: the sections containing it are expanded and the entry is highlighted, including when you arrive through a deep link into a nested page. Opening a section reveals what is below it, and sections you collapsed yourself stay collapsed.

  • The Filter widget no longer ignores the version chosen in the project selector. It follows the selector by default, and its sidebar now offers a version dropdown to pin one version for that widget alone. Switching to a version with fewer needs also returns the table to the first page, instead of showing an empty “No needs match the filter” message with no way back.

  • A version pair that is too large to compare is now reported as such in the Version Diff report, with the reason given by the server, instead of being described as “no longer available” – which named a cause that did not apply. The message appears immediately rather than after several seconds of retries, and CSV export is disabled while the pair cannot be compared.

  • The Version Diff report’s “Compare with” picker and “Base” label now show the version name together with its dimension values, instead of the raw internal version key with its digest suffix. Variants of the same version are grouped together and the groups are ordered newest first, and the CSV export file is named the same way. Very long variant names are shortened so the file name stays within the file-system limit and two variants can never produce the same name; an export started from the exports page always downloads under that one name.

1.9.1

Released: 30.07.2026

Download: https://download.useblocks.com/ubtrace/1.9.1/ubtrace-offline-bundle-1.9.1.tar.gz

Bug fixes

  • A database schema other than public now works. Previously the ?schema= parameter of DATABASE_URL was applied when the database tables were created but ignored by the running application, which continued to read and write public. A deployment pointed at its own schema therefore failed at the first request even though the database setup had reported success. Where the database is shared with other applications, this surfaced as a permission error rather than a missing table.

  • The schema can now be configured in both deployment methods, instead of being fixed to public: set POSTGRES_SCHEMA in your .env file for Docker Compose, or the postgresql.schema value for Kubernetes. Note that the database role must be allowed to create tables in the schema you name – see Installation for details. Choose the schema before the first start: changing it on an installation that already holds data points ubTrace at a new, empty schema instead of moving the existing tables into it.

  • Connection strings are no longer rejected for cosmetic reasons. The query parameters of DATABASE_URL may now appear in any order and any number (for example sslmode alongside schema), and the port may be omitted so the database default applies. Previously such a connection string was refused at startup with only a generic “not a valid DATABASE_URL” message, even though it was perfectly valid.

  • A misconfigured schema is now reported at startup. The application refuses to start and names the schema it could not find, along with the step to run, instead of starting successfully and then failing on every request.

1.9.0

Released: 29.07.2026

Download: https://download.useblocks.com/ubtrace/1.9.0/ubtrace-offline-bundle-1.9.0.tar.gz

New features

  • Version comparison: you can now compare any two versions of a project and see what changed between them. The new Version Diff report lists the needs that were added, deleted, or changed from a base version to a target version, with a summary count for each category. A changed need can be expanded to show exactly which fields changed and their old and new values. The tables can be filtered by need type, by change category, and by which field changed, and the New, Deleted, and Changed tables each paginate independently.

  • Version Diff export: a comparison can be exported to CSV for offline review. Exports are generated in the background and collected on a per-project exports page, and a notification links straight to an export once it is ready. When the two versions were not ingested with compatible content hashing, the export still delivers the added and deleted needs and clearly marks itself as partial – both in a note at the top of the file and in the file name – instead of silently leaving the changed rows out.

  • New dashboard widgets: a Need Filter widget that filters needs and shows the result either as a table or as a traceability graph; a Gauge widget that compares “is” against “shall” values; and an Ingestion Date widget that shows when a version was last ingested.

Improvements

  • Project overview: the document and need counts on each project card are now direct links to the matching pages, the project identifier is labelled, and the whole card is clickable as a single target.

  • The dashboard “Add widget” palette now scrolls when the list of available widgets is taller than the palette, so the widgets at the bottom stay reachable.

  • The text widget’s default content now includes hyperlink and image examples, showing how to use them.

Bug fixes

  • Deep links into a document now scroll to the correct location reliably, even while the page is still settling as it loads.

1.8.0

Released: 15.07.2026

Download: https://download.useblocks.com/ubtrace/1.8.0/ubtrace-offline-bundle-1.8.0.tar.gz

New features

  • Version variants: a version can now declare a set of dimensions (such as build configuration or target hardware), so several variants share one version name while remaining individually addressable. A cascading variant selector narrows the choice dimension by dimension, never offers a combination that has no matching variant, and fills in the remaining values automatically as soon as only one variant is left. Variants that do not define a given dimension are reachable through a dedicated “not set” entry.

  • Configurable search: the global search palette (the navbar search button and the Ctrl/Cmd + K shortcut) now lets you choose the search scope – this project, this organization, or all organizations you have access to – and filter by content type (everything, needs only, or documents only). Searching across organizations runs a single full-text query and returns one ranked, normalized result list, and selecting a result takes you straight to it in the right project and version. Previously search was limited to a single organization at a time.

  • Role mappings are now managed in the admin app: administrators can create, edit, and delete mappings from an identity-provider token claim to a ubTrace role (admin, editor, or viewer) under “Role mappings”. Changes take effect immediately, without redeploying or restarting the service, and replace the previous environment-variable-only configuration.

  • The traceability graph offers three layouts – tree, radial, and force-directed – and lets each walkthrough step choose which need properties are shown on the nodes. The view switcher moved to the left sidebar, and the “Navigator” view is now called “Traceability”.

  • The start page is no longer tied to a single project: it opens on an overview of all projects you can see, grouped by organization and paginated.

  • The maximum input size accepted by the traceability-coverage step is now configurable through UBT_COVERAGE_MAX_INPUT_BYTES (also exposed as a Docker Compose and Helm setting), replacing the previous fixed 1 GiB limit.

Improvements

  • The sidebar footer now carries attribution text and links in place of the version icon, shows the version correctly, and is also present in the admin app.

  • The theme selector is hidden while only one theme is active, so it no longer presents a choice that has no effect; a previously saved, now-inactive theme is migrated to the active default.

  • Code snippets and admonitions in the document view are legible in dark mode.

  • Table-of-contents entries containing inline code stay on a single line instead of wrapping out of alignment.

  • The project’s logo and name are shown above the Dashboard entry in the sidebar.

Bug fixes

  • Versions no longer remain stuck in the “pending” state after an interrupted ingestion: leftover pending markers are reconciled against the ingestion queue and cleared.

  • [source] links in generated API documentation open the corresponding source page in a new tab instead of leading to a broken link.

  • Signing out through the identity provider no longer prevents the next sign-in: the leftover logout marker is cleared on login.

  • The offline import-build step accepts a source path pointing either at the build directory or at its parent, and reports a clear error otherwise. Previously the wrong choice silently produced an unusable directory layout and the version was never imported.

  • Where two needs are connected by more than one link type, the edge labels in the traceability graph are stacked instead of drawn on top of each other.

  • Project cards on the start page now open on the first click; previously the card required a second click before it navigated to the project.

  • The left sidebar’s traceability navigation no longer has a redundant nesting level: Tree, Deep, and Walkthrough appear directly under the “Traceability” group instead of below an extra intermediate entry.

  • Version variants now show their clean version name in the project overview instead of an internal identifier, and the variant (dimension) selector is shown again where it was missing – restoring behaviour that regressed in 1.7.

1.7.1

Released: 06.07.2026

Bug fixes

  • Very large, densely linked projects (hundreds of thousands of needs) now ingest reliably: the traceability-coverage computation was rewritten to scale roughly linearly with project size. Previously it could run for hours on such projects and was killed by the worker’s processing limit, failing the whole ingestion after several retries.

  • The coverage step’s processing time limit now scales with input size and is configurable (UBT_COVERAGE_TIMEOUT_MS and UBT_COVERAGE_TIMEOUT_PER_MB_MS, also exposed as Helm values). When the limit is genuinely exceeded, the error now states the timeout and the affected input clearly instead of an opaque “Command failed”, and the job is not retried pointlessly on input that cannot succeed.

1.7.0

Released: 01.07.2026

New features

  • Artifact-permission rule editor: list, create, and delete glob-based artifact-visibility rules directly in the admin app (the dimension-filter editor within a rule is part of the dimension-scoped access beta).

  • Traceability tree link-type colouring: edges are coloured by link type, with a “Link Types” legend panel that doubles as a per-type visibility filter and an on/off display toggle.

  • Versioned deployment artifacts: the Helm chart now ships as an OCI image and the Terraform/EKS stack (with an eks-tunnel helper) as GitHub Release assets, so a ubTrace version can be pinned with its matching deploy surface. Optional Keycloak Google Workspace identity provider and email-domain sign-up config were added (off by default).

Improvements

  • Configurable admin role via ADMIN_ROLE_NAME (default ubtrace-admin); existing deployments are unaffected.

  • New ELASTICSEARCH_BULK_MAX_BYTES setting (default 50 MB) to tune the indexing bulk request cap.

  • Faster dimension reads on large projects: dimension aggregation now runs in the database (dimension-scoped access beta).

  • More reliable ingestion at scale: a durable database-backed catalogue, worker state moved to durable storage, and validate-on-dequeue against a durable gate prevent duplicate or stuck jobs across restarts.

Bug fixes

  • No more unexpected sign-outs after brief inactivity: refreshed authentication cookies now persist with a proper expiry, and Keycloak idle/session lifetimes were raised.

  • Deep links are preserved across sign-in instead of dropping you on the default dashboard.

  • Unknown or mistyped organization/project/version ids now show a clear “not found” instead of an empty page (the read API returns 404 for an unknown or case-mismatched scope id).

  • Large projects index reliably past ~40,000 needs, and need totals above 10,000 are reported exactly.

  • Documentation viewer: images honour the RST :width: directive, Sphinx-Needs body content is left-aligned, and document links opened in a new tab keep the correct project/version scope.

  • Increased vertical spacing between traceability-tree node layers.

  • Patched security vulnerabilities via a hono dependency update.

1.6.0

Released: 24.06.2026

New features

  • Dimension-scoped artifacts and access rules (beta): tag versions with dimensions and define dimension-aware visibility rules, so users only see the versions that match their access. A dimension filter is available directly in the version selector.

  • Admin application: a dedicated admin panel for notification configuration and API-token management, with direct navigation between the admin app and the main application.

  • Guided traceability walkthrough: step through a requirement’s relationships in an interactive walkthrough mode, with a deep-dive mode, a per-node actions menu, a restart control, and easier jumping between nodes.

  • Edit at source: each Need now offers an “edit source” action that opens the originating file at the correct line in the configured VCS, complementing the existing source-navigation links.

  • Per-machine user limits: enforce a configurable user limit per deployment, blocking new sign-ins once the limit is reached.

Improvements

  • Global search: inline suggestion completion as you type, and a version context badge on each search result.

  • Metric builder: enum values are now surfaced for low-cardinality properties, and metric execution is access-control aware.

  • Shared dashboards: widget configurations are sanitized for non-owner viewers, so a shared dashboard no longer exposes owner-only configuration.

  • ASPICE readiness: configuration now opens in a right-hand sidebar panel instead of modal dialogs.

Bug fixes

  • Improved ingestion reliability: per-version worker state is now durable, with an admin dead-letter facility, preventing duplicate or stuck ingestion jobs across restarts.

  • Hardened the Elasticsearch health check against stale keep-alive sockets, improving availability under intermittent connectivity.

1.5.0

Released: 03.06.2026

Improvements

  • Traceability tree: the visible-properties picker is now a searchable dropdown, so projects with many properties are easier to configure.

Bug fixes

  • Resolved an issue where repeated ingestion of unchanged documentation could cause duplicate processing and excessive background activity.

  • Improved worker stability and recovery under heavy load and during long-running ingestion jobs.

  • Large documentation uploads no longer time out: archive extraction is faster, so big projects upload reliably.

  • The application stays available for browsing documentation even when the search service is temporarily unreachable, instead of going offline.

  • Hardened the Elasticsearch connection handling to recover automatically from dropped connections.

  • Long email addresses now wrap correctly in the user menu.

1.4.0

Released: 26.05.2026

New features

  • Source code navigation for Needs: an actions menu on each Need links directly to the source file and line number in the configured VCS (GitHub, GitLab, Bitbucket).

  • Per-project admin settings for VCS integration, including version-to-branch mapping for accurate source links.

  • Version health diagnostics: a banner on the version page flags partially ingested or empty versions, with per-component ingestion status available via the API.

  • Delete projects and versions through the API.

  • Custom property grouping in pie chart widgets: select any needs_fields property as the grouping dimension.

  • Select-all toggle for visible properties in the traceability tree.

Improvements

  • Three content-width options (narrow, wide, full-width) in the theme switcher.

  • Updated ubt_sphinx to 0.8.0 (recommended for use with ubTrace 1.4.0; see ubTrace compatibility).

  • ASPICE readiness page loads faster for organizations with many configured projects.

  • Sidebar navigation items aligned consistently; chevron moved to the right side.

  • Links in the documentation viewer are underlined for better accessibility.

Bug fixes

  • Large file uploads now respect INGEST_MAX_FILE_SIZE end-to-end through the frontend proxy instead of silently capping at the default limit.

  • Dashboard banners no longer stack without visual separation.

  • Asset URLs in documentation pages resolve correctly across deployment configurations, including absolute same-origin paths.

  • Interactive needtable stability improvements during page navigation.

  • ASPICE readiness configuration cleanup uses atomic operations to prevent data races; the worker now correctly detects configuration changes between scheduler runs.

  • ASPICE readiness configuration returns proper conflict errors for duplicate process mappings or traceability rules instead of failing silently.

  • Version health no longer flags ASPICE readiness as missing for projects without ASPICE configuration; the banner now shows a neutral “Not applicable” status.

  • Worker scheduler prevents queue duplication and scan overlap on systems with many versions.

  • Worker cache invalidation is now conditional and per-version, avoiding unnecessary full-cache rebuilds on every scan cycle.

  • Notification configuration dialog user selector no longer overflows on narrow screens.

  • Traceability tree deep view shows meaningful error messages instead of failing silently.

  • Patched security vulnerabilities in axios, @nestjs/microservices, and dompurify.

  • Eliminated brief skeleton flash during initial page load.

  • Dashboard unsaved-changes dialog no longer blocks navigation after saving.

  • Dashboard save confirmation toast displays correctly.

Documentation

  • Simplified the uv install recipe for the ubTrace Sphinx builder: the three-line [[tool.uv.index]] block is now sufficient, no explicit = true or [tool.uv.sources] required. Multi-index setups are documented as well.

  • Documented the identifier-match requirement on the builder reference page: ubtrace_organization, ubtrace_project and ubtrace_version in conf.py must equal the path segments of the /v1/ingest URL, with cross-references to Project Integration, Multi-Project Support, the project options reference, and the TOML identity check rules.

1.3.0

Released: 07.05.2026

New features

  • Custom metric builder UI: build, preview, and save custom metrics directly on dashboard widgets. The builder is now enabled by default.

  • Dashboard management UI: dashboard selector, creation dialog, and sharing dialog (the project-scoped sharing model shipped in 1.2.0).

  • Configurable page content width.

  • Interactive Sphinx-Needs needtable support: pagination, on-the-fly filtering and search, column sorting, and colored rows.

  • CycloneDX SBOM shipped with the offline bundle for supply-chain compliance.

Improvements

  • ASPICE configuration UI moved to a dedicated admin app section, separating read-only readiness reports from configuration management.

  • Updated ubt_sphinx to 0.7.1 (recommended for use with ubTrace 1.3.0; see ubTrace compatibility).

  • Helm chart: rate-limit proxy configuration documented and supported.

  • Helm chart: a pre-created ubtrace secret can now be reused across Helm upgrades.

  • Improved default frontend.config.apiLoginUrl for common deployment shapes.

Bug fixes

  • Logout now tolerates invalid Keycloak sessions instead of failing the request.

  • Builder tolerates managed volumes that enforce file ownership.

  • Rate limiting is skipped for loopback connections, avoiding self-throttle on internal calls.

  • Sphinx-Needs items are collapsed by default on document load for faster rendering, and needtable links handle hash fragments correctly.

  • Traceability tree preserves zoom and tree view state when properties or filters change, and renders all schema-defined visible properties.

  • Custom metric widget empty states unified and version sort order corrected.

  • Dashboard toolbar button states and reset behavior improved; sharing dialog UX refinements.

  • Dashboard dialogs now expose proper aria-describedby linkage for screen readers.

  • ASPICE save buttons stay disabled until the form is dirty; back-button label fixed.

  • Top-bar breadcrumb selectors render with correct positioning.

  • Logo is clickable for home navigation.

  • Default cursor restored on widget surfaces.

  • Sphinx documentation links resolve correctly when the base path ends in /index.

1.2.1

Released: 27.04.2026

Bug fixes

  • Helm chart now exposes CORS, ingest size, feature flag, and admin URL settings that were previously unreachable.

  • “Go to Admin” button now renders correctly for admin users across local dev, docker-compose, minikube, and Helm-managed Kubernetes deployments.

  • Rotating Helm secrets now restarts the affected pods instead of leaving them with stale credentials.

  • Documentation pages now load correctly when navigated from other sections such as Activity Feed or Dashboard.

1.2.0

Released: 21.04.2026

New features

  • Custom metric builder backend with property discovery, aggregation, and access control.

  • Project-scoped dashboards with role-based sharing.

  • Artifact dimension filtering.

  • Inline search suggestions in the global search palette.

  • Helm chart: one-shot license install via Helm values.

  • Helm chart included in the offline bundle for air-gapped Kubernetes deployments.

  • Versioned customer-facing documentation.

Improvements

  • Self-hosted fonts for fully air-gapped deployments.

  • Automatic coverage recomputation on format version changes.

  • Updated ubt_sphinx to 0.6.1.

  • Expanded Minikube deployment documentation.

  • Customer-facing API ingest walkthrough.

Bug fixes

  • Fixed logout requiring two clicks on expired sessions.

  • Fixed expired sessions showing a raw error instead of redirecting to login.

  • Schema validation shows empty state instead of error when no violations exist.

  • Coverage orphan counts now included per type.

  • Fixed missing Helm environment variables and Keycloak realm sync.

  • Fixed Redis TLS detection in non-default deployment environments.

  • Fixed read-only volume mount preventing data writes in Kubernetes API pods.

1.1.2

Released: 13.04.2026

New features

  • ASPICE readiness meter with visual gauge and configurable thresholds.

  • Admin application for managing notifications, API tokens, and system configuration.

  • Per-machine user limit enforcement for license management.

  • Helm chart templates for ub-admin deployment, service, and ingress.

  • ubt_sphinx Python wheels included in the offline bundle for air-gapped installation.

Bug fixes

  • Resolved 23 npm security vulnerabilities (7 critical, 1 high, 15 moderate).

  • Fixed traceability tree node truncation for long need IDs.

  • Frontend stability improvements across admin app, search, and deep view navigation.

  • Fixed OpenShift GID 0 compatibility: all Docker images now run correctly under OpenShift SCCs (arbitrary UID, root group).

1.1.1

Released: 23.03.2026

New features

  • License gate screen with expiry banner for clear license status visibility.

  • Activity feed and notification system with real-time updates.

  • API token management for machine-to-machine (CI/CD) authentication.

  • Automatic user provisioning on first OIDC login.

  • Configurable feature flags with admin API.

Improvements

  • Flexible CORS configuration for diverse deployment environments.

  • Configurable cookie security for HTTP and IP-based deployments.

  • Global license enforcement with expiry status handling.

Bug fixes

  • Fixed graph connector positions not matching layout direction.

  • Frontend stability improvements for sidebar, authentication, and loading states.

1.1.0

Released: 17.03.2026

New features

  • Full-text search with global search command palette (Ctrl+K / Cmd+K), deep linking to document sections, and typeahead suggestions.

  • Query builder UI components for custom dashboard analytics.

  • Streaming ingest endpoint for uploading documentation archives via HTTP.

  • Mermaid diagram rendering in the documentation viewer.

Improvements

  • Improved deployment documentation for new users.

  • Added installation instructions for ubt_sphinx and ubt_runtime.

Bug fixes

  • License status endpoint no longer requires authentication.

  • Fixed Mermaid diagrams not rendered in documentation viewer.

1.0.3

Released: 10.03.2026

Improvements

  • Updated ubt_sphinx status from Alpha to Beta (#861).

Bug fixes

  • Builder guard for git data collection – skip when not using ubtrace builder (#821).

  • Removed ubtrace_server.toml dependency from worker pipeline (#854).

Security

  • Resolved Dependabot vulnerabilities in direct dependencies (#832).

  • Major update of jsdom (22 → 28) to address security advisories (#852).

1.0.2

Released: 10.03.2026

New features

  • Docker strip profile for IP protection (#761) – optional build profile that strips workspace package source files from Docker images, with compose build arg support.

  • System Requirements documentation (#647) – new docs page covering hardware, software, and network requirements.

  • Git worktree scripts – helper scripts for parallel feature development with automatic port collision avoidance.

Security

  • Elasticsearch authentication (#770) – enable username/password auth for Elasticsearch connections. Both ELASTICSEARCH_USERNAME and ELASTICSEARCH_PASSWORD must be set (or both omitted).

  • Avoid leaking Elasticsearch password in Docker health check output.

  • Patch security vulnerabilities in direct npm dependencies.

Bug fixes

  • make clean now preserves imported input data (#815).

  • Exclude macOS resource fork files from offline bundle.

  • Remove keycloak-data volume to fix startup race condition.

  • Suppress duplicate warnings for missing html_favicon/html_logo in builder (#806).

Internal

  • Cleanup ubt_sphinx package (#805).

  • Regenerate package-lock.json with npm 11 for CI compatibility.

  • Skip Release packages job on ubTrace v* tag pushes.

1.0.1

Released: 05.03.2026

New features

  • Worker Pipeline (ub-worker) (#780)

    • Background NestJS service with scheduler, processor, and loaders

    • Scans input_build/ and input_src_build/ for new/changed versions

    • Runs Rust preprocessing (ubt-coverage), generates NDJSON, and loads data into PostgreSQL + Elasticsearch

Improvements

  • Unified Docker Compose service names across all environments (#769)

  • Upgraded Node.js 20 to 22 LTS (#771)

  • Use bind mounts for input_src and input_build volumes

  • Improved README-offline.md and docker-compose-prod.yml for customers (#772)

  • Updated brand logos and favicons (#791)

  • Pass UBTRACE_BUILD_VERSION to frontend in local Docker Compose

Bug fixes

  • Fixed hardcoded version in footer – replaced with dynamic useBuildInfo hook (#776)

  • Switched Keycloak clients to confidential mode (#785)

  • Restored Keycloak client Credentials tab and improved realm navigation docs (#775)

  • Hidden non-functional top bar search input (#779)

  • Replaced placeholder logo with brand SVGs, fixed theme label casing

  • Invalidate Redis license cache on startup (#758)

  • Fixed CI backmerge workflow and release job

  • Fixed smoke-test: re-added ubtrace-worker health check, pull native arm64 Elasticsearch on ARM Macs

1.0.0

Released: 27.02.2026

Breaking changes

  • KuzuDB replaced by PostgreSQL + Elasticsearch – all Sphinx-Needs data, analytics, and statistics are now stored in PostgreSQL with Elasticsearch indexing for search and filtering. KuzuDB is no longer used or required.

  • Elasticsearch is now required – the ELASTICSEARCH_ENABLED environment variable has been removed. Elasticsearch is always started alongside the backend.

  • NDJSON-only data format – the JSON fallback for bootstrap loading has been removed. All data interchange uses NDJSON files generated by the ubt-coverage Rust CLI.

  • Legacy js/ folder removed – the old Svelte-based frontend (js/ubt, js/vis-tree) has been replaced by the Next.js frontend. The docker-compose-local.yml file has also been removed.

New features

  • Next.js Frontend

    • Complete rewrite of the frontend using Next.js (React) with TypeScript

    • Design system with shadcn/ui components and Storybook

    • Branded Keycloak login theme with automatic dark mode sync

    • Coming Soon placeholders for in-progress pages

  • Schema Validation Report (#639)

    • Server-side pagination and filtering for schema violations

    • Expandable rows for nested violation children

    • Need type colors and action tooltips

    • Skeleton loading states

  • Analytics Dashboard

    • Pie chart widget for need type distribution with version selector

    • Text widget with Markdown and RST rendering support

    • Version analytics with configurable property breakdowns

    • Scoring and tier classification for artifact statistics

  • Coverage Analysis

    • Traceability coverage metrics via the ubt-coverage Rust CLI

    • Per-need and aggregate coverage reports in NDJSON format

    • Reports/coverage page in the frontend (Coming Soon)

  • Unified Builder (ub-builder) (#700)

    • Single Docker image for both Sphinx builds and NDJSON post-processing

    • Replaces the separate Sphinx builder and coverage pipeline containers

    • Supports flat input structure (without source/ subdirectory)

  • Offline / Air-Gapped Deployment (#654)

    • Pre-built offline bundle with all Docker images (tar.gz)

    • Customer-facing Makefile with make init, make up, make build-docs

    • .env.example with all 27 customer-facing environment variables

    • README-offline.md deployment guide

    • offline-load.sh and offline-verify.sh helper scripts

    • Smoke test target (make offline-smoke-test)

  • Secrets Management (dotenvx)

    • Encrypted .env files committed to git via dotenvx

    • Per-project encryption (backend, backend-e2e, frontend, root Docker Compose)

    • env-init, env-encrypt, env-decrypt, env-diff Nx targets

    • Pre-commit hook prevents committing unencrypted secrets

  • Release Automation

    • make release-bump – bump VERSION + published compose defaults + env drift check

    • make release-verify-images – verify all GHCR images exist for a tag

    • make offline-bundle – build air-gapped customer bundle

    • .env template drift detection (check_env_template.py)

Improvements

  • Docker & Infrastructure

    • Unified backend and frontend into single app Dockerfile

    • GHCR image publishing for backend, frontend, and keycloak-theme

    • Elasticsearch 9.3.0 in Docker stack

    • Full-stack make targets (make stack, make stack-dev, make prod)

    • Deprecated legacy OIDC and api-server-custom-oidc services

  • Backend (NestJS)

    • Rate limiting infrastructure with per-endpoint configuration

    • Guard array pattern for feature modules

    • Dashboard DB tables/indexes renamed to UpperCamelCase

    • Artifact schema feature module with validation endpoints

    • Artifact analytics endpoints with scope-based queries

    • Need property name mapping to Elasticsearch field names

  • Build Pipeline

    • Rust checks (cargo fmt, clippy, test) in pre-commit hook

    • Gitflow branching strategy with develop as integration branch

    • Dynamic base branch detection in pre-commit hook

    • Nx generators for feature-backend, feature-types, shared-backend, shared-types, feature-widget, and ui-wrapper

  • Documentation

    • All docs/source/ pages updated to reflect current architecture

    • C4 architecture diagrams added

    • README.md restructured as enterprise landing page

Bug fixes

  • Fixed dark mode flash after login/logout

  • Fixed search debounce resetting pagination on mount

  • Fixed horizontal scroll on mobile pagination

  • Fixed RST table formatting in text widget

  • Fixed API server health check path

  • Fixed analytics cache key collision – different query parameters (filters, versions) now produce distinct cache keys via SHA-256 hashing (#653)

  • Fixed Docker permission management for output volumes

  • Fixed NX environment variable pollution with dotenvx

  • Fixed macOS pipe buffer truncation in dotenvx scripts

  • Resolved formatting conflicts in markdown tables

0.6.0

Released: 28.11.2025

New features

  • AI Chatbot Integration

    • Basic chatbot support for documentation

    • Workaround against LLM HTML output issues

  • Sphinx-Needs Preview & Navigation

    • Preview feature for Sphinx-Needs object links in docs and reports

    • Root index page link added to TOC tree

  • MCP (Model Context Protocol) Server

    • 8 specialized tools for querying and exploring Sphinx-Needs documentation

    • Automatic database discovery and registration (org/project/version structure)

    • Support for multiple transport protocols (stdio, http, sse)

    • Tools: get_toc, get_file_sections, get_needs_schema, enumerate_attribute_values, find_needs, get_need_links, get_rendered_content, get_need_source

    • Integration with Kuzu graph database for efficient queries

    • Multi-project support with centralized database management

  • KuzuDB Integration

    • Content stored in Kuzu graph database by ubTrace Builder

    • KuzuDB build process implemented into ubTrace-Sphinx

    • Improved database queries with better performance

  • Frontend Improvements

    • Svelte 5 migration completed

    • Inline document comparison in diff viewer

    • Refactored browser history navigation handling

    • Special table view handling in diff viewer

Improvements

  • Streamlined development environment setup

  • Robust Docker permission management

  • Improved startup sequence for Docker environments

  • Better mcp_servers package structure

  • Fixed circular dependencies

Bug fixes

  • Increased unique ID length for section and directory generation

  • Fixed workaround against LLM HTML output

  • Fixed various frontend issues

  • Fixed mcp_servers package structure

  • Fixed sync metadata pre-commit hook

  • Added missing bs4 dependency

  • Fixed ubTrace Server test cases

  • Fixed local OIDC server token response internals

  • Fixed Nx checks to run only for relevant source or config changes

  • Fixed node_modules missing check for Nx commands

  • Fixed UBTRACE_SERVER_SIDEBAR_APPS_CONFIG usage

  • Fixed user info response according to OIDC server JWT payload changes

  • Fixed API server build dependencies

  • Resolved formatting conflicts

0.5.0

Released: 10.09.2025

New features

  • Schema validation report

0.4.0

Released: 08.09.2025

New features

  • Git history collection and display system for documents

  • Diff traceability analysis with expandable table rows and property comparison

  • Dark theme support with LightSwitch component

  • Code links integration for showcase project

  • Deathstar scenario showcase data

Improvements

  • Enhanced directory structure creation in builder

  • Improved documentation with clearer builder and server configuration references

  • Better project search ID handling with clearer selected options behavior

  • Reports page refactored to use Svelte instead of server-rendered HTML

  • Improved image representation in complex need layouts

  • Enhanced documentation app links

  • Better reactive search functionality in search modal

  • Scrollable tables with maximum height limits

Bug fixes

  • Fixed showcase build of ubtrace package

  • Fixed CSS alignment for centered images

  • Fixed Vis-Tree button injection on document navigation

  • Fixed dark mode styling issues

  • Fixed need ID background size

  • Fixed pagination buttons and table styling

  • Fixed column filters to search in subrows

  • Fixed table colors and hover colors

  • Logo display fixes

Technical improvements

  • Enhanced filtering with complex custom subrows support

  • Improved pagination with better button wrapping

  • Better state preservation when switching pages

0.3.2

Released:

19.08.2025

  • Reporting

  • Traceability-Tree

  • Dashboard

  • Home / Welcome page

0.1.0

Released:

21.03.2025

Initial release of ubTrace components.