Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,21 @@

<!-- Copyright 2026 Firefly Software Foundation. SPDX-License-Identifier: Apache-2.0 -->

## 0.2.45 — 2026-10-25

- Page project and campaign data without a fixed project-count ceiling, retain revision-bound references, and configure finite campaign execution windows with durable usage accounting.
- Stream credential fingerprint preparation and checkpoint source admission outside database writer units while retaining current credential, source and ownership checks.
- Ground AI-written status in current verification facts, recorded reasons and next factory actions. Preserve historical checks as historical context and keep pending factory work separate from questions requiring a person.
- Accept normal and blocked worker outcomes through atomic native completion custody, including restored checkpoints. Keep QA and Git delivery behind the exact accepted outcome and current authority.
- Add explicit administrator acknowledgement of an unknown command for one separately bound verification continuation and its following coding/QA/Git lineage. Preserve the unknown row, spent ordinals, frozen command and repair budgets, and repeated current-actor checks.
- Bind retained source-catalog manifests to their immutable hash and stable identity across checks. For file ctime-only changes, stream a bounded rehash against the original payload SHA-256 without refreshing its baseline. Preserve other identity fields and full metadata checks during reads.
- Add explicit native checkpoint-mode adoption for an eligible older Bridge continuation that stopped before model dispatch. Retain the original provider revision, unfinished intents, source, unknown outcomes and spent budgets while admitting only stronger result-recovery and checkpoint settings.
- Follow validated test and maintenance descendants when selecting current issue status, retaining the root conversation receipt and asking for clarification when current leaves are ambiguous.
- Include the audited credential-scanner dependency closure in fixed workspace exports, preserve later native receipts after an accepted worker outcome, and withhold malformed historical verification requests from public facts.
- Preserve the originally selected model profile for same-provider Bridge verification continuations and admit only a separately reviewed correction for an eligible retained selection failure before model dispatch. Keep the original configuration, claims, unknown outcomes and spent budgets intact.
- Record restart recovery against the current intent or explicit readmission claim. Repair a missing annotation for an already held task without rewriting its state or replaying work. Refuse unresolved Bridge results before reading provider configuration.
- Require fresh source-profile measurements and preserve every historical profile literal. Keep Studio 0.2.45 assets unchanged. Controlled native, SQL, host and visual evidence remains separate from completed CRM delivery or live-provider acceptance.

## 0.2.44 — 2026-10-25

- Store equal native history arrays once in the version-3 lossless checkpoint codec, then reconstruct and hash the complete canonical record before restoration. Preserve version-1 raw and version-2 compressed snapshot readability and original encoded identities.
Expand Down
2 changes: 1 addition & 1 deletion docs/agent-lifecycle.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ The lifecycle projection reports execution bindings and knowledge availability.

An implementation worker can return a typed `verification` request when it needs results from the run's approved checks. With a frozen automatic-verification grant, forge runs all explicit `run.commands` through the authorized runner, records their native intents and outcomes, and supplies factory feedback. Request names and question text do not select commands or grant access. Product choices, credentials and approvals still require a person.

New runs default to one verification continuation, with a strict configurable maximum of three. Each completed handoff permits one additional coding task, separately from the frozen repair budget and within the existing four-attempt ceiling. Earlier attempts and failed checks remain recorded. Current authority, source, policy and provider are checked again before effects and the next coding task. [Recovery](recovery.md#inspect-a-factory-verification-handoff) explains holds and explicit adoption for older runs.
New runs default to one verification continuation. Operators configure a positive finite window; an explicit policy renewal and fresh adoption retain every spent handoff and command slot. Each completed handoff permits one additional coding task, separately from the frozen repair budget and within the existing four-attempt coding-stage ceiling. Earlier attempts and failed checks remain recorded. Current authority, source, policy and provider are checked again before effects and the next coding task. [Recovery](recovery.md#inspect-a-factory-verification-handoff) explains holds and explicit adoption for older runs.

The run's verification panel shows command counts and `pending`, `running`, `completed` or `held` state. Completed means every configured command has a known result, including failures. Final acceptance still depends on the run's verification and delivery evidence. An uncertain effect stays held without automatic replay.

Expand Down
50 changes: 48 additions & 2 deletions docs/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,14 @@ running application's OpenAPI document is the authoritative schema.
## Automatic verification handoffs

New runs freeze `settings.automatic_verification` from `GET /tools/policy`.
The factory default is `{"enabled": true, "max_continuations": 1}`; the strict
maximum is three. The existing administrator-only policy update accepts this
The factory default is `{"enabled": true, "max_continuations": 1}`. The configured
window must be a positive finite integer. The existing administrator-only policy update accepts this
setting with the other tool settings. A frozen snapshot without this setting
does not grant automatic execution.
Older SDK/MCP policy writes that omit this setting preserve its current value.
An explicit renewal changes the current policy and requires a new exact adoption;
it retains every spent handoff and command slot. The separate four-attempt coding
stage limit remains unchanged.

A pending implementation request with typed `kind: "verification"` can ask
Forge to run all explicit, frozen `run.commands` through `SandboxExecutor`.
Expand Down Expand Up @@ -74,6 +77,49 @@ The Python SDK exposes `verification_handoff_candidates`,
perform one explicit request each and do not create IDs, apply a fallback or
resume a run implicitly.

### Unknown command acknowledgements

The native operator routes are under
`/runs/{run_id}/sandbox-executions/{execution_id}/unknown-command-acknowledgements`:

| Method | Path | Purpose |
| --- | --- | --- |
| GET | `/candidate?agent=agentic&adoption_request_id=...` | Review one unknown execution and one exact future verification adoption |
| POST | `/{request_id}` | Append the reviewed version 1 acknowledgement once |
| GET | `/{request_id}` | Read that exact immutable receipt with current permissions and credential admission |

The strict `UnknownCommandAcknowledgementV1` input contains the candidate, policy,
run, journal and execution digests, the exact `followup` object, and the server's
observed `classification`. Every input must acknowledge no original replay and
the bound verification and native continuation with literal `true` in
`acknowledge_bound_verification_and_continuation`. For `start_unknown`, it must also
acknowledge the unknown result and possible effects. For `closed_before_start`,
it must instead acknowledge that the complete native WAL has no start intent;
unknown-result acknowledgements do not apply. It accepts no claimed exit code,
success result or arbitrary absence proof.
This first contract covers native host executions under their original frozen
sandbox policy. Docker and pool custody require separate supported recovery.

The receipt leaves the original sandbox row, unknown start, consumed ordinal,
held handoffs and all counters intact. It does not execute, adopt or resume.
Only a later ordinary verification adoption using the bound request ID can admit
the exact reviewed source, request, commands, policy, provider and new ordinals.
Every handoff remains counted against the current finite policy. An exhausted
window requires an explicit policy renewal and fresh review.
Several eligible custody records require separate acknowledgements bound to the
same future adoption. A receipt never waives unrelated or unreviewed executions.
After every reviewed command has a known result (including known failures), only
the completed handoff's factory response, native resume and continuation intent
can carry the acknowledgement into coding, normal QA and Git. Existing frozen
repair and provider grants remain required, with every spent counter retained.
The acknowledging actor is checked again before dispatch and delivery. Original
unknown outcomes remain unknown and are disclosed in publication communication.

The Python SDK exposes `unknown_command_acknowledgement_candidate`,
`acknowledge_unknown_command` and `unknown_command_acknowledgement`. After an
uncertain POST, read the original request identity; do not choose a new identity
or resend an unknown execution. See [operator recovery](recovery.md#acknowledge-an-unknown-command-for-follow-up-verification).

## Failed official-provider recovery

A native factory administrator can review `GET /runs/{id}/provider-recoveries/candidate?agent=codex` or `claude`, explicitly POST the returned candidate digest under one caller-owned request ID to `/runs/{id}/provider-recoveries`, and read its exact receipt at `/runs/{id}/provider-recoveries/{request_id}`. Admission reserves one dispatch in the same run. It does not execute a model in the request or reset repair and verification budgets.
Expand Down
Binary file modified docs/assets/screenshots/activity-claude-request-desktop-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-claude-request-desktop-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-claude-request-mobile-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-claude-request-mobile-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-claude-result-desktop-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-claude-result-desktop-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-claude-result-mobile-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-claude-result-mobile-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-codex-mcp-desktop-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-codex-mcp-desktop-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-codex-mcp-mobile-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-codex-mcp-mobile-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-provider-full-desktop-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-provider-full-desktop-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-provider-full-mobile-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-provider-full-mobile-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-provider-preview-desktop-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-provider-preview-desktop-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-provider-preview-mobile-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/activity-provider-preview-mobile-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/agent-answer-confirmed-desktop-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/agent-answer-confirmed-desktop-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/agent-answer-confirmed-mobile-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/agent-answer-confirmed-mobile-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/agent-answer-review-desktop-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/assets/screenshots/agent-answer-review-desktop-light.png
Binary file modified docs/assets/screenshots/agent-answer-review-mobile-dark.png
Binary file modified docs/assets/screenshots/agent-answer-review-mobile-light.png
Binary file modified docs/assets/screenshots/agent-answer-unresolved-desktop-dark.png
Binary file modified docs/assets/screenshots/agent-answer-unresolved-desktop-light.png
Binary file modified docs/assets/screenshots/agent-answer-unresolved-mobile-dark.png
Binary file modified docs/assets/screenshots/agent-answer-unresolved-mobile-light.png
Binary file modified docs/assets/screenshots/agent-question-desktop-dark.png
Binary file modified docs/assets/screenshots/agent-question-desktop-light.png
Binary file modified docs/assets/screenshots/agent-question-mobile-dark.png
Binary file modified docs/assets/screenshots/agent-question-mobile-light.png
Binary file modified docs/assets/screenshots/agent-question-preview-desktop-dark.png
Binary file modified docs/assets/screenshots/agent-question-preview-desktop-light.png
Binary file modified docs/assets/screenshots/agent-question-preview-mobile-dark.png
Binary file modified docs/assets/screenshots/agent-question-preview-mobile-light.png
Binary file modified docs/assets/screenshots/agent-question-retained-desktop-dark.png
Binary file modified docs/assets/screenshots/agent-question-retained-desktop-light.png
Binary file modified docs/assets/screenshots/agent-question-retained-mobile-dark.png
Binary file modified docs/assets/screenshots/agent-question-retained-mobile-light.png
Binary file modified docs/assets/screenshots/agent-role-authority-desktop-dark.png
Binary file modified docs/assets/screenshots/agent-role-authority-desktop-light.png
Binary file modified docs/assets/screenshots/agent-role-authority-mobile-dark.png
Binary file modified docs/assets/screenshots/agent-role-authority-mobile-light.png
Binary file modified docs/assets/screenshots/agent-role-instructions-desktop-dark.png
Binary file modified docs/assets/screenshots/agent-role-instructions-desktop-light.png
Binary file modified docs/assets/screenshots/agent-role-instructions-mobile-dark.png
Binary file modified docs/assets/screenshots/agent-role-instructions-mobile-light.png
Binary file modified docs/assets/screenshots/campaign-plan-milestones-desktop-dark.png
Binary file modified docs/assets/screenshots/campaign-plan-milestones-desktop-light.png
Binary file modified docs/assets/screenshots/campaign-plan-milestones-mobile-dark.png
Binary file modified docs/assets/screenshots/campaign-plan-progress-desktop-dark.png
Binary file modified docs/assets/screenshots/campaign-plan-progress-desktop-light.png
Binary file modified docs/assets/screenshots/campaign-plan-progress-mobile-dark.png
Binary file modified docs/assets/screenshots/campaign-plan-progress-mobile-light.png
Binary file modified docs/assets/screenshots/campaign-plan-review-desktop-dark.png
Binary file modified docs/assets/screenshots/campaign-plan-review-desktop-light.png
Binary file modified docs/assets/screenshots/campaign-plan-review-mobile-dark.png
Binary file modified docs/assets/screenshots/campaign-plan-review-mobile-light.png
Binary file modified docs/assets/screenshots/campaign-plan-unresolved-desktop-dark.png
Binary file modified docs/assets/screenshots/campaign-plan-unresolved-desktop-light.png
Binary file modified docs/assets/screenshots/campaign-plan-unresolved-mobile-dark.png
Binary file modified docs/assets/screenshots/campaign-plan-unresolved-mobile-light.png
Binary file modified docs/assets/screenshots/campaign-plan-waves-desktop-dark.png
Binary file modified docs/assets/screenshots/campaign-plan-waves-desktop-light.png
Binary file modified docs/assets/screenshots/campaign-plan-waves-mobile-dark.png
Binary file modified docs/assets/screenshots/campaign-plan-waves-mobile-light.png
Binary file modified docs/assets/screenshots/campaign-report-references-desktop-dark.png
Binary file modified docs/assets/screenshots/campaign-report-references-mobile-dark.png
Binary file modified docs/assets/screenshots/campaign-report-summary-desktop-dark.png
Binary file modified docs/assets/screenshots/campaign-report-summary-desktop-light.png
Binary file modified docs/assets/screenshots/campaign-report-summary-mobile-dark.png
Binary file modified docs/assets/screenshots/campaign-report-summary-mobile-light.png
Binary file modified docs/assets/screenshots/coding-check-grant-desktop-dark.png
Binary file modified docs/assets/screenshots/coding-check-grant-desktop-light.png
Binary file modified docs/assets/screenshots/coding-check-mitigation-desktop-dark.png
Binary file modified docs/assets/screenshots/coding-check-mitigation-desktop-light.png
Binary file modified docs/assets/screenshots/coding-check-mitigation-mobile-dark.png
Binary file modified docs/assets/screenshots/coding-check-mitigation-mobile-light.png
Binary file modified docs/assets/screenshots/coding-check-reserved-desktop-dark.png
Binary file modified docs/assets/screenshots/coding-check-reserved-desktop-light.png
Binary file modified docs/assets/screenshots/coding-check-reserved-mobile-dark.png
Binary file modified docs/assets/screenshots/coding-check-reserved-mobile-light.png
Binary file modified docs/assets/screenshots/coding-check-review-desktop-dark.png
Binary file modified docs/assets/screenshots/coding-check-review-desktop-light.png
Binary file modified docs/assets/screenshots/coding-check-scope-desktop-dark.png
Binary file modified docs/assets/screenshots/coding-check-scope-desktop-light.png
Binary file modified docs/assets/screenshots/communication-profile-desktop-dark.png
Binary file modified docs/assets/screenshots/communication-profile-desktop-light.png
Binary file modified docs/assets/screenshots/communication-profile-mobile-dark.png
Binary file modified docs/assets/screenshots/communication-profile-mobile-light.png
Binary file modified docs/assets/screenshots/connect-coding-ai-desktop-dark.png
Binary file modified docs/assets/screenshots/connect-coding-ai-desktop-light.png
Binary file modified docs/assets/screenshots/connect-coding-ai-mobile-dark.png
Binary file modified docs/assets/screenshots/connect-coding-ai-mobile-light.png
Binary file modified docs/assets/screenshots/connect-knowledge-desktop-dark.png
Binary file modified docs/assets/screenshots/connect-knowledge-desktop-light.png
Binary file modified docs/assets/screenshots/connect-knowledge-mobile-dark.png
Binary file modified docs/assets/screenshots/connect-knowledge-mobile-light.png
Binary file modified docs/assets/screenshots/connect-repositories-desktop-dark.png
Binary file modified docs/assets/screenshots/connect-repositories-desktop-light.png
Binary file modified docs/assets/screenshots/connect-repositories-mobile-dark.png
Binary file modified docs/assets/screenshots/connect-repositories-mobile-light.png
Binary file modified docs/assets/screenshots/connect-workspace-desktop-dark.png
Binary file modified docs/assets/screenshots/connect-workspace-desktop-light.png
Binary file modified docs/assets/screenshots/connect-workspace-mobile-dark.png
Binary file modified docs/assets/screenshots/connect-workspace-mobile-light.png
Binary file modified docs/assets/screenshots/evidence-artifacts-desktop-dark.png
Binary file modified docs/assets/screenshots/evidence-artifacts-desktop-light.png
Binary file modified docs/assets/screenshots/evidence-artifacts-mobile-dark.png
Binary file modified docs/assets/screenshots/evidence-artifacts-mobile-light.png
Binary file modified docs/assets/screenshots/evidence-changes-desktop-dark.png
Binary file modified docs/assets/screenshots/evidence-changes-desktop-light.png
Binary file modified docs/assets/screenshots/evidence-changes-mobile-dark.png
Binary file modified docs/assets/screenshots/evidence-changes-mobile-light.png
Binary file modified docs/assets/screenshots/evidence-plan-desktop-dark.png
Binary file modified docs/assets/screenshots/evidence-plan-desktop-light.png
Binary file modified docs/assets/screenshots/evidence-plan-mobile-dark.png
Binary file modified docs/assets/screenshots/evidence-plan-mobile-light.png
Binary file modified docs/assets/screenshots/evidence-verification-desktop-dark.png
Binary file modified docs/assets/screenshots/evidence-verification-desktop-light.png
Binary file modified docs/assets/screenshots/evidence-verification-mobile-dark.png
Binary file modified docs/assets/screenshots/evidence-verification-mobile-light.png
Binary file modified docs/assets/screenshots/external-catalog-desktop-dark.png
Binary file modified docs/assets/screenshots/external-catalog-desktop-light.png
Binary file modified docs/assets/screenshots/external-catalog-mobile-dark.png
Binary file modified docs/assets/screenshots/external-catalog-mobile-light.png
Binary file modified docs/assets/screenshots/external-connection-desktop-dark.png
Binary file modified docs/assets/screenshots/external-connection-desktop-light.png
Binary file modified docs/assets/screenshots/external-connection-mobile-dark.png
Binary file modified docs/assets/screenshots/external-connection-mobile-light.png
Binary file modified docs/assets/screenshots/external-discovery-desktop-dark.png
Binary file modified docs/assets/screenshots/external-discovery-desktop-light.png
Binary file modified docs/assets/screenshots/external-discovery-mobile-dark.png
Binary file modified docs/assets/screenshots/external-discovery-mobile-light.png
Binary file modified docs/assets/screenshots/external-figma-availability-mobile-dark.png
Binary file modified docs/assets/screenshots/external-figma-requirements-mobile-dark.png
Binary file modified docs/assets/screenshots/external-granted-desktop-dark.png
Binary file modified docs/assets/screenshots/external-granted-desktop-light.png
Binary file modified docs/assets/screenshots/external-granted-mobile-dark.png
Binary file modified docs/assets/screenshots/external-granted-mobile-light.png
Binary file modified docs/assets/screenshots/external-project-desktop-dark.png
Binary file modified docs/assets/screenshots/external-project-desktop-light.png
Binary file modified docs/assets/screenshots/external-project-fields-desktop-dark.png
Binary file modified docs/assets/screenshots/external-project-fields-desktop-light.png
Binary file modified docs/assets/screenshots/external-project-fields-mobile-dark.png
Binary file modified docs/assets/screenshots/external-project-fields-mobile-light.png
Binary file modified docs/assets/screenshots/external-project-mobile-dark.png
Binary file modified docs/assets/screenshots/external-project-mobile-light.png
Binary file modified docs/assets/screenshots/external-review-overview-desktop-dark.png
Binary file modified docs/assets/screenshots/external-review-overview-desktop-light.png
Binary file modified docs/assets/screenshots/external-review-overview-mobile-dark.png
Binary file modified docs/assets/screenshots/external-review-overview-mobile-light.png
Binary file modified docs/assets/screenshots/factory-overview-desktop-dark.png
Binary file modified docs/assets/screenshots/factory-overview-desktop-light.png
Binary file modified docs/assets/screenshots/factory-overview-mobile-dark.png
Binary file modified docs/assets/screenshots/factory-overview-mobile-light.png
Binary file modified docs/assets/screenshots/learning-candidate-desktop-dark.png
Binary file modified docs/assets/screenshots/learning-candidate-desktop-light.png
Binary file modified docs/assets/screenshots/learning-candidate-mobile-dark.png
Binary file modified docs/assets/screenshots/learning-candidate-mobile-light.png
Loading
Loading