@doxbrix/doxloop 0.1.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1145 -0
- package/README.md +422 -227
- package/assets/doxbrix-preview.css +77 -15
- package/contracts/agent-events-v1.schema.json +1 -0
- package/contracts/coverage-v1.schema.json +59 -0
- package/contracts/drift-v1.schema.json +1 -0
- package/contracts/evaluation-v1.schema.json +62 -0
- package/contracts/quality-codes-v1.json +1 -0
- package/contracts/quality-report-v1.schema.json +1 -0
- package/contracts/validation-v1.schema.json +1 -0
- package/dist/agent-failure.d.ts +36 -0
- package/dist/agent-failure.js +98 -0
- package/dist/agent-isolation.d.ts +17 -0
- package/dist/agent-isolation.js +94 -0
- package/dist/agent-log.d.ts +197 -0
- package/dist/agent-log.js +1094 -0
- package/dist/agent-process.d.ts +63 -0
- package/dist/agent-process.js +128 -0
- package/dist/agent-reply.d.ts +47 -0
- package/dist/agent-reply.js +315 -0
- package/dist/agents.d.ts +24 -5
- package/dist/agents.js +60 -9
- package/dist/api-coverage.d.ts +11 -0
- package/dist/api-coverage.js +72 -0
- package/dist/application-probe.d.ts +28 -0
- package/dist/application-probe.js +93 -0
- package/dist/application-url.d.ts +14 -0
- package/dist/application-url.js +26 -0
- package/dist/args.js +15 -0
- package/dist/artifact-deploy.d.ts +9 -0
- package/dist/artifact-deploy.js +28 -8
- package/dist/assets.d.ts +72 -0
- package/dist/assets.js +382 -0
- package/dist/auth.d.ts +10 -0
- package/dist/auth.js +38 -9
- package/dist/author.d.ts +206 -4
- package/dist/author.js +1650 -52
- package/dist/authoring-batches.d.ts +190 -0
- package/dist/authoring-batches.js +489 -0
- package/dist/authoring-postpass.d.ts +79 -0
- package/dist/authoring-postpass.js +1289 -0
- package/dist/authoring-progress.d.ts +95 -0
- package/dist/authoring-progress.js +269 -0
- package/dist/autosync.d.ts +56 -0
- package/dist/autosync.js +442 -0
- package/dist/batch-artifacts.d.ts +81 -0
- package/dist/batch-artifacts.js +412 -0
- package/dist/batch-limits.d.ts +37 -0
- package/dist/batch-limits.js +80 -0
- package/dist/branding.d.ts +41 -0
- package/dist/branding.js +229 -0
- package/dist/bundle-upload.d.ts +26 -0
- package/dist/bundle-upload.js +99 -0
- package/dist/capture-auth.d.ts +95 -0
- package/dist/capture-auth.js +204 -0
- package/dist/capture.d.ts +48 -0
- package/dist/capture.js +20 -1
- package/dist/cli.js +839 -32
- package/dist/content-links.d.ts +10 -0
- package/dist/content-links.js +49 -0
- package/dist/contract-validation.d.ts +4 -0
- package/dist/contract-validation.js +25 -0
- package/dist/coverage-actions.d.ts +8 -0
- package/dist/coverage-actions.js +71 -0
- package/dist/coverage-resolutions.d.ts +16 -0
- package/dist/coverage-resolutions.js +58 -0
- package/dist/db.d.ts +37 -0
- package/dist/db.js +288 -0
- package/dist/demo.d.ts +12 -0
- package/dist/demo.js +122 -0
- package/dist/deploy-credentials.d.ts +7 -0
- package/dist/deploy-credentials.js +76 -0
- package/dist/deploy-targets/github-pages.d.ts +3 -0
- package/dist/deploy-targets/github-pages.js +100 -0
- package/dist/deploy-targets/index.d.ts +8 -0
- package/dist/deploy-targets/index.js +78 -0
- package/dist/deploy-targets/netlify.d.ts +3 -0
- package/dist/deploy-targets/netlify.js +49 -0
- package/dist/deploy-targets/types.d.ts +32 -0
- package/dist/deploy-targets/types.js +2 -0
- package/dist/deploy-targets/vercel.d.ts +3 -0
- package/dist/deploy-targets/vercel.js +95 -0
- package/dist/deploy.d.ts +9 -0
- package/dist/deploy.js +87 -13
- package/dist/deterministic-capture.d.ts +90 -0
- package/dist/deterministic-capture.js +435 -0
- package/dist/direct-edit.d.ts +40 -0
- package/dist/direct-edit.js +159 -0
- package/dist/docs-crawl.d.ts +86 -0
- package/dist/docs-crawl.js +536 -0
- package/dist/docs-site.d.ts +49 -0
- package/dist/docs-site.js +233 -0
- package/dist/doctor.js +8 -0
- package/dist/documentation-collections.d.ts +23 -0
- package/dist/documentation-collections.js +191 -0
- package/dist/documentation-plan.d.ts +253 -0
- package/dist/documentation-plan.js +2563 -0
- package/dist/doxbrix-build.d.ts +19 -0
- package/dist/doxbrix-build.js +167 -0
- package/dist/doxbrix-markdown.d.ts +9 -0
- package/dist/doxbrix-markdown.js +115 -14
- package/dist/drift.d.ts +10 -0
- package/dist/drift.js +164 -0
- package/dist/evaluation.d.ts +46 -0
- package/dist/evaluation.js +113 -0
- package/dist/evidence-pack.d.ts +47 -0
- package/dist/evidence-pack.js +358 -0
- package/dist/evidence.d.ts +25 -0
- package/dist/evidence.js +175 -0
- package/dist/fs.d.ts +8 -2
- package/dist/fs.js +41 -11
- package/dist/generator-api.d.ts +89 -0
- package/dist/generator-preflight.d.ts +27 -0
- package/dist/generator-preflight.js +105 -0
- package/dist/generator-runtime.d.ts +7 -0
- package/dist/generator-runtime.js +17 -1
- package/dist/generators.d.ts +24 -2
- package/dist/generators.js +54 -1
- package/dist/git-delivery.d.ts +17 -0
- package/dist/git-delivery.js +123 -0
- package/dist/globs.d.ts +16 -0
- package/dist/globs.js +65 -0
- package/dist/glossary.d.ts +26 -0
- package/dist/glossary.js +179 -0
- package/dist/history.d.ts +106 -0
- package/dist/history.js +600 -0
- package/dist/html-markdown.d.ts +46 -0
- package/dist/html-markdown.js +423 -0
- package/dist/interactive.js +3 -0
- package/dist/job-events.d.ts +74 -0
- package/dist/job-events.js +377 -0
- package/dist/keep-awake.d.ts +50 -0
- package/dist/keep-awake.js +123 -0
- package/dist/local-source-snapshot.d.ts +20 -0
- package/dist/local-source-snapshot.js +61 -0
- package/dist/mintlify-detect.d.ts +3 -0
- package/dist/mintlify-detect.js +18 -0
- package/dist/mintlify-import.d.ts +75 -0
- package/dist/mintlify-import.js +190 -0
- package/dist/navigation.d.ts +98 -0
- package/dist/navigation.js +310 -0
- package/dist/openapi.d.ts +60 -0
- package/dist/openapi.js +439 -0
- package/dist/page-editor-bridge.d.ts +3 -0
- package/dist/page-editor-bridge.js +109 -0
- package/dist/page-editor-preview.d.ts +10 -0
- package/dist/page-editor-preview.js +55 -0
- package/dist/page-extension.d.ts +9 -0
- package/dist/page-extension.js +15 -0
- package/dist/page-metadata.d.ts +28 -0
- package/dist/page-metadata.js +166 -0
- package/dist/page-operations.d.ts +34 -0
- package/dist/page-operations.js +215 -0
- package/dist/page-routes.d.ts +4 -0
- package/dist/page-routes.js +61 -0
- package/dist/pages.d.ts +20 -0
- package/dist/pages.js +184 -0
- package/dist/plan-generator.d.ts +3 -0
- package/dist/plan-generator.js +21 -0
- package/dist/plan-navigation.d.ts +11 -0
- package/dist/plan-navigation.js +30 -0
- package/dist/planning-captures.d.ts +20 -0
- package/dist/planning-captures.js +143 -0
- package/dist/planning-research.d.ts +135 -0
- package/dist/planning-research.js +472 -0
- package/dist/planning-triage.d.ts +23 -0
- package/dist/planning-triage.js +131 -0
- package/dist/preview.d.ts +24 -0
- package/dist/preview.js +280 -29
- package/dist/project-detect.d.ts +36 -0
- package/dist/project-detect.js +251 -0
- package/dist/project-import.d.ts +54 -0
- package/dist/project-import.js +157 -0
- package/dist/project-lock.d.ts +6 -0
- package/dist/project-lock.js +96 -0
- package/dist/project-registry.d.ts +25 -0
- package/dist/project-registry.js +79 -0
- package/dist/project.d.ts +35 -3
- package/dist/project.js +388 -38
- package/dist/prompts.d.ts +9 -0
- package/dist/prompts.js +25 -0
- package/dist/proposal-replay.d.ts +32 -0
- package/dist/proposal-replay.js +99 -0
- package/dist/quality-claims.d.ts +8 -0
- package/dist/quality-claims.js +168 -0
- package/dist/quality-config.d.ts +5 -0
- package/dist/quality-config.js +84 -0
- package/dist/quality-contract.d.ts +37 -0
- package/dist/quality-contract.js +46 -0
- package/dist/quality-examples.d.ts +4 -0
- package/dist/quality-examples.js +233 -0
- package/dist/quality-gates.d.ts +16 -0
- package/dist/quality-gates.js +192 -0
- package/dist/quality-links.d.ts +7 -0
- package/dist/quality-links.js +149 -0
- package/dist/quality-lint.d.ts +6 -0
- package/dist/quality-lint.js +124 -0
- package/dist/quality-rendered.d.ts +11 -0
- package/dist/quality-rendered.js +222 -0
- package/dist/quality-schema.d.ts +3 -0
- package/dist/quality-schema.js +71 -0
- package/dist/release-notes.d.ts +44 -0
- package/dist/release-notes.js +183 -0
- package/dist/remote-monitor.d.ts +16 -0
- package/dist/remote-monitor.js +74 -0
- package/dist/remote-source.d.ts +34 -0
- package/dist/remote-source.js +426 -0
- package/dist/review-diff.d.ts +82 -0
- package/dist/review-diff.js +400 -0
- package/dist/review-learning.d.ts +11 -0
- package/dist/review-learning.js +60 -0
- package/dist/review-render.d.ts +38 -0
- package/dist/review-render.js +224 -0
- package/dist/review-report.d.ts +9 -0
- package/dist/review-report.js +89 -0
- package/dist/review-ui.d.ts +14 -0
- package/dist/review-ui.js +1248 -0
- package/dist/schedule.d.ts +78 -0
- package/dist/schedule.js +480 -0
- package/dist/screen-capture-provider.d.ts +52 -0
- package/dist/screen-capture-provider.js +218 -0
- package/dist/screenshot-workflow.d.ts +167 -0
- package/dist/screenshot-workflow.js +1237 -0
- package/dist/settings.d.ts +1 -1
- package/dist/settings.js +95 -7
- package/dist/site-export.d.ts +18 -0
- package/dist/site-export.js +87 -0
- package/dist/source-connectors.d.ts +33 -0
- package/dist/source-connectors.js +268 -0
- package/dist/source-discovery.d.ts +132 -0
- package/dist/source-discovery.js +823 -0
- package/dist/source-intelligence.d.ts +9 -0
- package/dist/source-intelligence.js +306 -0
- package/dist/sync-review.d.ts +28 -0
- package/dist/sync-review.js +264 -0
- package/dist/sync-runs.d.ts +192 -0
- package/dist/sync-runs.js +2244 -0
- package/dist/sync.d.ts +35 -0
- package/dist/sync.js +298 -32
- package/dist/text-diff.d.ts +9 -0
- package/dist/text-diff.js +59 -0
- package/dist/types.d.ts +946 -1
- package/dist/ui/assets/doxloop-logo-light-De7Nx7j7.png +0 -0
- package/dist/ui/assets/index-BHBYU2aG.css +1 -0
- package/dist/ui/assets/index-Cq3RPQiC.js +33 -0
- package/dist/ui/index.html +18 -0
- package/dist/ui-server.d.ts +83 -0
- package/dist/ui-server.js +3532 -0
- package/dist/usage-budget.d.ts +28 -0
- package/dist/usage-budget.js +90 -0
- package/dist/validation.d.ts +25 -1
- package/dist/validation.js +312 -26
- package/dist/workspace-tools.d.ts +54 -0
- package/dist/workspace-tools.js +123 -0
- package/docs/agent-compatibility.md +49 -32
- package/docs/ci-and-automation.md +105 -66
- package/docs/doxbrix-http-api.md +8 -1
- package/docs/existing-documentation.md +80 -0
- package/docs/generation-performance.md +108 -0
- package/docs/generator-authoring.md +68 -5
- package/docs/generator-selection.md +50 -13
- package/docs/mintlify-import.md +71 -0
- package/docs/openapi-security.md +25 -0
- package/docs/project-format.md +331 -36
- package/docs/release-quality.md +158 -0
- package/docs/releasing.md +72 -0
- package/docs/review-workflows.md +51 -0
- package/docs/security-model.md +102 -39
- package/docs/troubleshooting.md +226 -93
- package/package.json +46 -15
- package/scripts/test-auto-screenshot.mjs +172 -0
- package/skills/doxloop-authoring/SKILL.md +242 -361
- package/skills/doxloop-authoring/references/existing-documentation.md +94 -0
- package/skills/doxloop-authoring/references/navigation-architecture.md +18 -7
- package/skills/doxloop-authoring/references/page-depth.md +169 -0
- package/skills/doxloop-authoring/references/project-format.md +106 -7
- package/skills/doxloop-authoring/references/quality.md +10 -0
- package/skills/doxloop-authoring/references/screenshot-manifest.md +113 -0
- package/skills/doxloop-authoring/references/screenshots.md +149 -235
- package/skills/doxloop-authoring/references/workflows.md +76 -0
- package/skills/doxloop-doxbrix/SKILL.md +38 -22
- package/skills/doxloop-doxbrix/references/api-endpoints.md +15 -14
- package/skills/doxloop-doxbrix/references/components.md +30 -3
- package/skills/doxloop-doxbrix/references/manifest.md +3 -2
- package/vendor/doxbrix-import/LICENSE +202 -0
- package/vendor/doxbrix-import/README.md +17 -0
- package/vendor/doxbrix-import/UPSTREAM.json +47 -0
- package/vendor/doxbrix-import/dist/docs/frontmatter.d.ts +13 -0
- package/vendor/doxbrix-import/dist/docs/frontmatter.js +83 -0
- package/vendor/doxbrix-import/dist/docs/import.d.ts +21 -0
- package/vendor/doxbrix-import/dist/docs/import.js +147 -0
- package/vendor/doxbrix-import/dist/docs/manifest.d.ts +163 -0
- package/vendor/doxbrix-import/dist/docs/manifest.js +64 -0
- package/vendor/doxbrix-import/dist/docs/project.d.ts +25 -0
- package/vendor/doxbrix-import/dist/docs/project.js +77 -0
- package/vendor/doxbrix-import/dist/docs/starter.d.ts +4 -0
- package/vendor/doxbrix-import/dist/docs/starter.js +11 -0
- package/vendor/doxbrix-import/dist/importer.d.ts +227 -0
- package/vendor/doxbrix-import/dist/importer.js +1567 -0
- package/vendor/doxbrix-import/dist/mintlify-openapi.d.ts +37 -0
- package/vendor/doxbrix-import/dist/mintlify-openapi.js +305 -0
- package/vendor/doxbrix-import/dist/safe-path.d.ts +9 -0
- package/vendor/doxbrix-import/dist/safe-path.js +47 -0
- package/dist/agents.d.ts.map +0 -1
- package/dist/agents.js.map +0 -1
- package/dist/args.d.ts.map +0 -1
- package/dist/args.js.map +0 -1
- package/dist/artifact-deploy.d.ts.map +0 -1
- package/dist/artifact-deploy.js.map +0 -1
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js.map +0 -1
- package/dist/author.d.ts.map +0 -1
- package/dist/author.js.map +0 -1
- package/dist/capture.d.ts.map +0 -1
- package/dist/capture.js.map +0 -1
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/deploy.d.ts.map +0 -1
- package/dist/deploy.js.map +0 -1
- package/dist/deployment-visibility.d.ts.map +0 -1
- package/dist/deployment-visibility.js.map +0 -1
- package/dist/doctor.d.ts.map +0 -1
- package/dist/doctor.js.map +0 -1
- package/dist/doxbrix-markdown.d.ts.map +0 -1
- package/dist/doxbrix-markdown.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/fs.d.ts.map +0 -1
- package/dist/fs.js.map +0 -1
- package/dist/generator-api.d.ts.map +0 -1
- package/dist/generator-api.js.map +0 -1
- package/dist/generator-manager.d.ts.map +0 -1
- package/dist/generator-manager.js.map +0 -1
- package/dist/generator-runtime.d.ts.map +0 -1
- package/dist/generator-runtime.js.map +0 -1
- package/dist/generators.d.ts.map +0 -1
- package/dist/generators.js.map +0 -1
- package/dist/interactive.d.ts.map +0 -1
- package/dist/interactive.js.map +0 -1
- package/dist/preview.d.ts.map +0 -1
- package/dist/preview.js.map +0 -1
- package/dist/progress.d.ts.map +0 -1
- package/dist/progress.js.map +0 -1
- package/dist/project.d.ts.map +0 -1
- package/dist/project.js.map +0 -1
- package/dist/prompts.d.ts.map +0 -1
- package/dist/prompts.js.map +0 -1
- package/dist/settings.d.ts.map +0 -1
- package/dist/settings.js.map +0 -1
- package/dist/sync.d.ts.map +0 -1
- package/dist/sync.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js.map +0 -1
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js.map +0 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Editing, auditing, versions, and review
|
|
2
|
+
|
|
3
|
+
## Start with an audit
|
|
4
|
+
|
|
5
|
+
Try `doxloop demo` to see the workflow without an agent. After importing an existing site, open **Pages → Audit existing documentation and reader verification → Run read-only audit**, or run:
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
doxloop audit --format json
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
The audit lists detected configuration, content roots, preview routes, unmapped pages, unverified pages, and source drift. It does not rewrite documentation or advance source baselines. `doxloop audit --backfill-evidence` adds missing evidence entries as unverified, preserving existing associations. This is a reversible metadata write; it cannot discover factual source associations by itself.
|
|
12
|
+
|
|
13
|
+
## Edit and discuss
|
|
14
|
+
|
|
15
|
+
Search in Pages matches titles, paths, and body text. Expand the text matches and select a section to open the source editor at the matching line. Results are capped at 200; narrow the query for more specific results. The local Doxbrix preview includes **Edit this page in Doxloop** when launched from the control center. Published exports do not contain a link to the local editor.
|
|
16
|
+
|
|
17
|
+
Pages and Review have persistent comments. A review comment can target a whole file or an individual hunk. **Ask agent to address** starts a scoped proposal or revision using that comment. Comments remain open until explicitly resolved; starting a job does not mean the issue was fixed. Comments are local records in `.doxloop/comments.json`, not multi-user identity or notification infrastructure.
|
|
18
|
+
|
|
19
|
+
Select multiple pages and open **Bulk metadata** to preview a shared field change. Each page has an optimistic fingerprint. The batch either saves all pages or restores them all. **Recent direct edits**, under Manage pages, lists reversible page, navigation, branding, asset, metadata, and glossary changes. Undo refuses to overwrite newer edits.
|
|
20
|
+
|
|
21
|
+
In Review, **Review a folder** lists the affected files and accepts or rejects only pending hunks in that folder. Rejection requires a reason. Files edited during generation require individual review before folder acceptance. Already accepted or rejected hunks keep their decisions.
|
|
22
|
+
|
|
23
|
+
## Versions and languages
|
|
24
|
+
|
|
25
|
+
Open **Pages → Versions and languages** and choose a source collection, version, and locale. Collection creation copies the documentation and assets, adds navigation, and creates unverified evidence entries in one reversible transaction. Copied prose is not a completed translation. **Ask agent to translate copied pages** creates a scoped translation proposal for review.
|
|
26
|
+
|
|
27
|
+
Doxbrix and MkDocs use `editions/<version>/<locale>/` under the content directory, with named navigation sections. Docusaurus uses its native `versioned_docs`, `versioned_sidebars`, `versions.json`, and `i18n/<locale>/docusaurus-plugin-content-docs/` layout. Existing native Docusaurus versions and locale pages appear in Pages, search, direct editing, and scoped agent review.
|
|
28
|
+
|
|
29
|
+
The direct Docusaurus creator supports autogenerated sidebars and literal `i18n.locales` arrays. Custom coded sidebars or dynamic locale configuration require a reviewed native proposal; the creator stops before writing. Multiple docs plugin instances and custom version route overrides need a project-specific compatibility check. Other generators retain their native version and translation tooling. MkDocs collections do not replace a site's existing mike or third-party locale plugin deployment scheme.
|
|
30
|
+
|
|
31
|
+
These conventions follow [Docusaurus versioning](https://docusaurus.io/docs/versioning), [Docusaurus localization](https://docusaurus.io/docs/i18n/tutorial), and [MkDocs navigation configuration](https://www.mkdocs.org/user-guide/configuration/#nav).
|
|
32
|
+
|
|
33
|
+
## Honest budgets and verification
|
|
34
|
+
|
|
35
|
+
The plan displays page, screenshot, and per-attempt time caps. Planning also respects the time cap. Once at least three comparable completed authoring runs exist, Doxloop displays an observed duration range scaled by changed page count. It is not a guarantee or a dollar quote. Agent billing remains with the selected provider.
|
|
36
|
+
|
|
37
|
+
The audit panel can enable reader verification labels for the built-in Doxbrix reader. Preview and static builds calculate their state from current evidence; a direct factual edit invalidates its evidence. Unknown drift does not appear verified. Native generator templates remain under the site's control.
|
|
38
|
+
|
|
39
|
+
## Hosted pull-request impact
|
|
40
|
+
|
|
41
|
+
`.github/workflows/documentation-impact.yml` runs a deterministic evidence-map check and maintains one bot comment with the affected pages. It executes only trusted base-branch code with no checkout of the pull request head, agent, or package installation. Configure `DOXLOOP_DOCS_ROOT` if the committed Doxloop project is not at repository root. Sources outside the checkout are explicitly uncheckable. A missing project/evidence map is reported in the job log instead of asserting current documentation.
|
|
42
|
+
|
|
43
|
+
The workflow uses `pull_request_target` so fork pull requests can receive a comment; do not change its checkout to the pull request head. The first installation must reach the base branch before it can run there. Tests: `node --test scripts/docs-impact.test.mjs`.
|
|
44
|
+
|
|
45
|
+
## Execution and release checks
|
|
46
|
+
|
|
47
|
+
Python examples require a locally pulled digest-pinned image in `DOXLOOP_PYTHON_SANDBOX_IMAGE`. There is no host Python fallback. `node scripts/ci-python-sandbox.mjs` exercises real fixture access, blocked host access, read-only mounts, and blocked network access. CI runs this separately from mocked boundary unit tests.
|
|
48
|
+
|
|
49
|
+
`node scripts/ci-existing-sites.mjs` builds representative existing Docusaurus and MkDocs sites six times each: original, accepted update, undone update, version, locale, and restored original. It checks custom routes, base paths, assets, source preservation, and collection undo. The fixtures are representative sites, not production customer audits.
|
|
50
|
+
|
|
51
|
+
Real-agent evaluation results are written to the Git-ignored `evals/results/` folder. `evals/baseline.json` records the accepted benchmark observation, keyed by mode, agent, model, and fixture. A seeded review score measures defect detection; it is distinct from generation quality. These checks are separate from the unit suite.
|
package/docs/security-model.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Security model
|
|
2
2
|
|
|
3
3
|
Doxloop separates local authoring from explicit publishing. This document
|
|
4
|
-
describes which guarantees
|
|
4
|
+
describes which guarantees Doxloop enforces and which behaviour depends on the
|
|
5
5
|
selected coding agent and host environment.
|
|
6
6
|
|
|
7
7
|
## Trust boundaries
|
|
@@ -13,24 +13,39 @@ selected coding agent and host environment.
|
|
|
13
13
|
ignore embedded requests that change scope, reveal secrets, weaken safeguards,
|
|
14
14
|
contact unrelated services, or publish.
|
|
15
15
|
- Coding agents retain the filesystem permissions granted by their host. The
|
|
16
|
-
configured
|
|
17
|
-
system sandbox.
|
|
18
|
-
- Product sources are read-only evidence.
|
|
19
|
-
the agent to write only inside
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
configured source list on the **Sources** page is an authoring-policy
|
|
17
|
+
boundary, not an operating system sandbox.
|
|
18
|
+
- Product sources are read-only evidence. Planning runs are read-only. The
|
|
19
|
+
generation workflow tells the agent to write only inside an isolated
|
|
20
|
+
proposal workspace within the documentation project, and nothing reaches the
|
|
21
|
+
real documentation until a reviewer accepts it.
|
|
22
|
+
|
|
23
|
+
## The control center
|
|
24
|
+
|
|
25
|
+
The control center binds to the loopback address only and is never exposed to
|
|
26
|
+
the network. Project files, tokens, and repository credentials stay on the
|
|
27
|
+
machine; the browser receives project state, proposals, and logs, never
|
|
28
|
+
credentials. Personal access tokens entered for private Git repositories are
|
|
29
|
+
held in memory for the session, forwarded to Doxloop child processes through
|
|
30
|
+
the environment rather than the command line, and never written to the project
|
|
31
|
+
configuration. Authoring jobs are cancellable, proposals stay isolated until
|
|
32
|
+
accepted, and deployment is a separate confirmed action.
|
|
22
33
|
|
|
23
34
|
## Local files
|
|
24
35
|
|
|
25
|
-
The documentation `contentDir` must
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
36
|
+
The documentation `contentDir` must remain contained by the documentation
|
|
37
|
+
project. New native Doxbrix projects use `contentDir: ""`, so their Markdown,
|
|
38
|
+
MDX, assets, and `docs.json` live at the project root; Doxloop allows that root
|
|
39
|
+
only for the native Doxbrix generator and excludes operational, VCS, dependency,
|
|
40
|
+
and build directories from page discovery and deployment. Legacy native
|
|
41
|
+
projects with `contentDir: "docs"` remain supported. External generators must
|
|
42
|
+
use a non-empty relative content directory. Escaping, absolute, and symlinked
|
|
43
|
+
content directories are rejected, and deployment refuses symlinks anywhere in
|
|
44
|
+
the selected documentation content.
|
|
29
45
|
|
|
30
|
-
The
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
files.
|
|
46
|
+
The setup wizard rejects a documentation project that is the same as, inside,
|
|
47
|
+
or contains a configured product source. It also rejects configured sources
|
|
48
|
+
that are missing and an output directory that already exists.
|
|
34
49
|
|
|
35
50
|
Do not place credentials, private keys, environment files, internal data, or
|
|
36
51
|
product source under the documentation content directory.
|
|
@@ -40,9 +55,19 @@ product source under the documentation content directory.
|
|
|
40
55
|
Authoring and validation do not publish. A coding agent may still have network
|
|
41
56
|
access according to its own configuration.
|
|
42
57
|
|
|
43
|
-
|
|
58
|
+
Remote OpenAPI sources follow the [remote OpenAPI safety policy](./openapi-security.md).
|
|
59
|
+
Existing documentation sites are crawled with the same host controls (public
|
|
60
|
+
HTTP(S) only, no embedded credentials, private and loopback ranges refused on
|
|
61
|
+
every redirect), without executing page scripts, honoring `robots.txt`, and
|
|
62
|
+
within page-size and page-count limits; see
|
|
63
|
+
[Rewrite existing documentation](./existing-documentation.md).
|
|
64
|
+
Git repository sources are downloaded as read-only snapshots through the
|
|
65
|
+
provider's read API; Doxloop never clones, fetches, commits, pushes, or changes
|
|
66
|
+
hooks in a source checkout.
|
|
44
67
|
|
|
45
|
-
-
|
|
68
|
+
Design-reference capture:
|
|
69
|
+
|
|
70
|
+
- accepts only configured public HTTP or HTTPS reference origins;
|
|
46
71
|
- captures at most three requested pages per origin;
|
|
47
72
|
- blocks navigation away from the configured origin;
|
|
48
73
|
- blocks loopback, private, link-local, multicast, and other non-public network
|
|
@@ -50,38 +75,76 @@ Design capture:
|
|
|
50
75
|
- stores screenshots and measurements under the Git-ignored
|
|
51
76
|
`.doxloop/cache/reference/`.
|
|
52
77
|
|
|
53
|
-
For a trusted local documentation reference, set
|
|
54
|
-
`DOXLOOP_ALLOW_PRIVATE_REFERENCES=1` for that capture invocation.
|
|
55
|
-
|
|
56
78
|
Application guide screenshots are separate authoring actions. They run only
|
|
57
|
-
when
|
|
58
|
-
|
|
59
|
-
|
|
79
|
+
when **Add product screenshots?** is enabled for a run, when the request asks
|
|
80
|
+
for them, or when the screenshot policy under **Settings → Visual evidence** is
|
|
81
|
+
set to automatic. When capture is enabled, Doxloop injects a run-scoped
|
|
82
|
+
Playwright MCP browser into supported Codex and Claude authoring processes; it
|
|
83
|
+
does not modify the user's global agent configuration. The browser runs
|
|
84
|
+
headless with an isolated profile, writes into the proposal workspace, and
|
|
85
|
+
closes with the agent run. The authoring workflow limits navigation to the
|
|
86
|
+
configured application surface and requires non-production fixtures or test
|
|
60
87
|
accounts, but the selected coding agent and its browser retain the permissions
|
|
61
88
|
granted by their host. Do not configure a production application, store
|
|
62
89
|
credentials in `.doxloop/project.json`, or expose customer data for capture.
|
|
63
|
-
|
|
64
|
-
application.
|
|
90
|
+
Choose **No screenshots** for a run, or set the policy to **Never**, when the
|
|
91
|
+
authoring environment should not operate an application. Plans also require a
|
|
92
|
+
machine-readable capture manifest. Doxloop rejects captures outside the
|
|
93
|
+
approved visual pages, unsafe asset paths, missing or unreadable PNGs, blank or
|
|
94
|
+
duplicate images, unembedded files, and captures that have not completed
|
|
95
|
+
expected-state, privacy, legibility, and meaningfulness review.
|
|
65
96
|
|
|
66
97
|
Doxbrix API requests require HTTPS. HTTP is accepted only for loopback
|
|
67
98
|
development. Authenticated and device-flow requests refuse redirects.
|
|
68
99
|
|
|
100
|
+
Release-quality external-link checks accept only credential-free HTTP or HTTPS
|
|
101
|
+
URLs, validate every redirect destination, and block private, loopback,
|
|
102
|
+
link-local, reserved, or unresolved addresses. Cached responses support
|
|
103
|
+
offline CI. Authentication responses and temporary network/server failures are
|
|
104
|
+
warnings rather than definitive broken-link failures.
|
|
105
|
+
|
|
106
|
+
Executable examples are opt-in. Declared Node files run with explicit
|
|
107
|
+
filesystem permissions and no network permission; Python files run in isolated
|
|
108
|
+
mode with socket creation and process-launch APIs blocked. Both use a minimal
|
|
109
|
+
environment, explicit fixtures, a timeout, no shell, and a temporary workspace
|
|
110
|
+
that is cleaned afterward. OpenAPI request examples are checked against the
|
|
111
|
+
connected contract without contacting an API. Apparent credentials are
|
|
112
|
+
rejected, and runtimes without a portable sandbox remain visibly
|
|
113
|
+
source-verified rather than silently executed.
|
|
114
|
+
|
|
115
|
+
Rendered accessibility and visual checks load generated local HTML and abort
|
|
116
|
+
all browser network requests. Current screenshots and quality reports are
|
|
117
|
+
derived, Git-ignored artifacts; approved visual baselines are separated by
|
|
118
|
+
generator, theme, route, and viewport.
|
|
119
|
+
|
|
120
|
+
Interrupted job checkpoints, raw job logs, proposal-delivery records, and the
|
|
121
|
+
bounded reviewer-preference record are local, owner-readable, Git-ignored
|
|
122
|
+
artifacts. Persisted retry data is accepted only for known Doxloop actions and
|
|
123
|
+
project-contained working directories. Reviewer instructions are length-bound
|
|
124
|
+
and known private-key and provider-token formats are redacted before reuse.
|
|
125
|
+
|
|
126
|
+
**Prepare PR branch** works in a temporary Git worktree and does not switch or
|
|
127
|
+
edit the current checkout. **Push branch** and **Push & create PR** are
|
|
128
|
+
separate explicit actions. Doxloop invokes Git and GitHub CLI with argument
|
|
129
|
+
arrays rather than a shell and does not expose a pasteable shell command built
|
|
130
|
+
from branch names.
|
|
131
|
+
|
|
69
132
|
## Credentials and publishing
|
|
70
133
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
Only
|
|
77
|
-
bundle to the Doxbrix API. External generators are built on the
|
|
78
|
-
Doxloop removes its Doxbrix tokens from the child build
|
|
79
|
-
the declared static output, rejects symbolic
|
|
80
|
-
files, omits source maps, and enforces file
|
|
81
|
-
Deployments are private by default. A
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
134
|
+
Sign in from the **Publish** page with **Sign in with browser**, which uses a
|
|
135
|
+
device flow so no token is typed or pasted. Stored credentials use user-only
|
|
136
|
+
file permissions on operating systems that support them, and **Sign out**
|
|
137
|
+
removes the local token.
|
|
138
|
+
|
|
139
|
+
Only **Publish to Doxbrix** publishes. Native projects send a contained
|
|
140
|
+
documentation bundle to the Doxbrix API. External generators are built on the
|
|
141
|
+
user's machine; Doxloop removes its Doxbrix tokens from the child build
|
|
142
|
+
environment, scans only the declared static output, rejects symbolic
|
|
143
|
+
links/private keys/likely secret files, omits source maps, and enforces file
|
|
144
|
+
and expansion limits before packaging. Deployments are private by default. A
|
|
145
|
+
public visibility setting is shown on the Publish page before every deployment,
|
|
146
|
+
with a note that anyone with the URL will be able to open the site. A **Dry
|
|
147
|
+
run** validates and builds without uploading anything.
|
|
85
148
|
|
|
86
149
|
The archive is uploaded directly to one short-lived, single-object S3 URL whose
|
|
87
150
|
SHA-256 checksum is signed. Doxbrix verifies the object size and checksum before
|
package/docs/troubleshooting.md
CHANGED
|
@@ -1,103 +1,236 @@
|
|
|
1
1
|
# Troubleshoot Doxloop
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## The control center does not open
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Doxloop requires Node.js 22.13 or later. If the browser does not open
|
|
6
|
+
automatically, visit `http://127.0.0.1:4317` yourself. If another process is
|
|
7
|
+
using that port, start Doxloop on a different one:
|
|
6
8
|
|
|
7
9
|
```bash
|
|
8
|
-
doxloop
|
|
10
|
+
doxloop ui --port 4400
|
|
9
11
|
```
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
##
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
13
|
+
The control center opens the setup wizard when the current folder is not a
|
|
14
|
+
documentation project, and the workspace when it is. To open an existing
|
|
15
|
+
workspace, start Doxloop inside that documentation folder.
|
|
16
|
+
|
|
17
|
+
## The wizard rejects the workspace folder
|
|
18
|
+
|
|
19
|
+
Enter a folder name, not a path. The folder is created inside the directory
|
|
20
|
+
where you started Doxloop and must not already exist. A documentation project
|
|
21
|
+
also cannot be the same as, inside, or contain a connected source folder, so
|
|
22
|
+
start Doxloop from the parent folder of your product rather than from inside
|
|
23
|
+
it.
|
|
24
|
+
|
|
25
|
+
## A source cannot be connected
|
|
26
|
+
|
|
27
|
+
On the **Sources** page, choose **Test connection** to see the exact reason.
|
|
28
|
+
Local folders must exist and be outside the documentation project. Git
|
|
29
|
+
repositories need a reachable URL and branch; private repositories need a
|
|
30
|
+
username and personal access token with read access. OpenAPI URLs must be
|
|
31
|
+
public, credential-free HTTP or HTTPS addresses that return a valid OpenAPI 3.x
|
|
32
|
+
or Swagger 2.0 document; see the
|
|
33
|
+
[remote OpenAPI safety policy](./openapi-security.md). Upload the file instead
|
|
34
|
+
when the specification is not publicly reachable.
|
|
35
|
+
|
|
36
|
+
## No coding assistant is available
|
|
37
|
+
|
|
38
|
+
Choose Codex, Claude Code, or Gemini in the wizard's **Tools** step or in the
|
|
39
|
+
**Planning agent** field. If it is not installed, Doxloop offers to install
|
|
40
|
+
it. After installation, sign in to the assistant once in a terminal so it can
|
|
41
|
+
run without prompting; Doxloop never stores model API keys.
|
|
42
|
+
|
|
43
|
+
## A run stops because an installed skill was modified
|
|
44
|
+
|
|
45
|
+
Doxloop refreshes the project-local authoring skills before each run and will
|
|
46
|
+
not overwrite a skill with local edits. The run's **Live activity** log names
|
|
47
|
+
the changed directory under `.agents/skills` or `.claude/skills`. Delete or
|
|
48
|
+
restore that directory and start the run again; Doxloop reinstalls the
|
|
49
|
+
packaged version.
|
|
50
|
+
|
|
51
|
+
## An external generator cannot build
|
|
52
|
+
|
|
53
|
+
External generators need their adapter package and native toolchain. Choose
|
|
54
|
+
**Preview docs**, or publish: a publish runs the generator's strict build
|
|
55
|
+
first, uploads nothing if it fails, and its log names the failing command. Native generators may
|
|
56
|
+
require Python, Ruby, Hugo, or Node dependencies in addition to the adapter.
|
|
57
|
+
|
|
58
|
+
## Validation warns that navigation was not verified
|
|
59
|
+
|
|
60
|
+
`navigation-unverified` means the generator's sidebar or menu is produced by
|
|
61
|
+
something Doxloop cannot read statically: a Hugo or Jekyll theme, a MkDocs
|
|
62
|
+
navigation plugin, a Starlight plugin, a VitePress or Starlight sidebar built
|
|
63
|
+
by a function or imported from another file, or a Sphinx `autosummary`
|
|
64
|
+
toctree. It is a warning, not an error, and it replaces the false
|
|
65
|
+
"unnavigated page" errors those sites used to get. Publishing performs the
|
|
66
|
+
generator's strict build first, which confirms every page is reachable. To turn the warning into real checks, list the navigation
|
|
67
|
+
in the generator's own configuration file instead of building it in code.
|
|
68
|
+
|
|
69
|
+
## The wizard says a generator's tools are missing
|
|
70
|
+
|
|
71
|
+
The **Tools** step checks the runtime the selected generator needs: Node.js
|
|
72
|
+
20.12 or later with npm, pnpm, or yarn; Python 3.9 or later with the `venv`
|
|
73
|
+
module; the `hugo` binary; or Ruby with Bundler. The project can still be
|
|
74
|
+
created, because the adapter package installs with npm, but **Preview docs**
|
|
75
|
+
and the strict build fail until the tool is installed. Install it, then choose
|
|
76
|
+
**Check again**. The check runs on the machine where `doxloop ui` runs, not on
|
|
77
|
+
the machine whose browser shows the control center.
|
|
78
|
+
|
|
79
|
+
## A plan cannot be approved
|
|
80
|
+
|
|
81
|
+
**Approve & generate** stays disabled while questions remain under **Needs
|
|
82
|
+
your decision**, while a required screenshot page is missing its starting
|
|
83
|
+
route or capture details, or while screenshots are required and the
|
|
84
|
+
configured application is not reachable. Resolve each item, or change the
|
|
85
|
+
run's screenshot mode to **Automatic** or **No screenshots**.
|
|
86
|
+
|
|
87
|
+
A change to a connected source after the planner read it does not block
|
|
88
|
+
approval. The plan review notes that sources changed, the structure is
|
|
89
|
+
approved as proposed, and generation reads the current sources when it writes
|
|
90
|
+
each page. Choose **Ask the agent to revise** only when the change should
|
|
91
|
+
alter which pages are written.
|
|
92
|
+
|
|
93
|
+
## A button stays on "Working…"
|
|
94
|
+
|
|
95
|
+
The control center waits at most two minutes for a local request and then
|
|
96
|
+
reports that the server did not respond. If that happens, check the terminal
|
|
97
|
+
where `doxloop ui` is running: a stopped or crashed server needs to be started
|
|
98
|
+
again, and a run that was interrupted can be retried from its last durable
|
|
99
|
+
stage under **Recent activity**.
|
|
100
|
+
|
|
101
|
+
## Planning stopped after 20 minutes
|
|
102
|
+
|
|
103
|
+
The planner has a time budget so a run that never answers becomes a named
|
|
104
|
+
failure rather than a silent hang. The plan shows **Planning stopped after
|
|
105
|
+
20 minutes without a plan reply** and can be retried. Raise **Maximum agent
|
|
106
|
+
minutes** under **Monitoring → Advanced watch scope and budgets** when the
|
|
107
|
+
product genuinely needs longer research, or set `DOXLOOP_PLAN_TIMEOUT_MINUTES`
|
|
108
|
+
in the environment that starts `doxloop ui` to change the planning budget
|
|
109
|
+
alone. A planning run that is stopped is ended together with any capture
|
|
110
|
+
browser it opened.
|
|
111
|
+
|
|
112
|
+
## Stop leaves the workspace changing
|
|
113
|
+
|
|
114
|
+
Stopping a run ends the agent and the capture browser it started within ten
|
|
115
|
+
seconds. If files still change in the run workspace afterwards, the agent
|
|
116
|
+
process was started outside Doxloop's control, for example from a terminal
|
|
117
|
+
where `doxloop create` was run interactively; close that terminal session to
|
|
118
|
+
end it.
|
|
119
|
+
|
|
120
|
+
## A run fails after the agent already did most of the work
|
|
121
|
+
|
|
122
|
+
A generation run can stop after the pages are written, for example when
|
|
123
|
+
required screenshots were not captured for every guide, when the agent hit its
|
|
124
|
+
time budget, or when validation found a problem. Doxloop keeps that run's
|
|
125
|
+
isolated workspace, so nothing the agent wrote or captured is lost. The plan
|
|
126
|
+
review shows **Continue without starting over** with the choices that apply:
|
|
127
|
+
|
|
128
|
+
- **Resume generation** starts the agent again inside the same workspace with
|
|
129
|
+
a brief of what is already finished: which pages exist, which screenshots
|
|
130
|
+
are verified, and why the previous run stopped. Verified screenshots and
|
|
131
|
+
completed pages are kept; only the unfinished or rejected parts are redone.
|
|
132
|
+
- **Ignore problems & continue** accepts the generated files for review as
|
|
133
|
+
they are. Every screenshot problem is recorded on its manifest step as
|
|
134
|
+
text-only, broken image references are removed from the page, and the
|
|
135
|
+
proposal shows how many problems were ignored so you can judge them before
|
|
136
|
+
publishing.
|
|
137
|
+
- **Retry generating** in the footer starts a new run from the approved plan.
|
|
138
|
+
Use it when the workspace itself is unusable.
|
|
139
|
+
|
|
140
|
+
The same two actions appear on a failed proposal under **Review**. When the
|
|
141
|
+
planner itself fails a planning gate but proposed real pages, the plan review
|
|
142
|
+
offers **Review this plan anyway**, which opens that plan for editing and
|
|
143
|
+
approval with the unmet gate shown as a note.
|
|
144
|
+
|
|
145
|
+
Source code that changed after the run stopped never blocks either
|
|
146
|
+
continuation. The proposal carries a note that sources changed, a resumed agent
|
|
147
|
+
re-checks the pages it touches against the current sources, and the proposal's
|
|
148
|
+
evidence snapshot is refreshed so it can be accepted.
|
|
149
|
+
|
|
150
|
+
## The run reports a Claude API error
|
|
151
|
+
|
|
152
|
+
Claude's own API request can break off mid-response: the log shows a line such
|
|
153
|
+
as `API Error: Server error mid-response`, `overloaded`, or a rate limit, and
|
|
154
|
+
Claude exits. Nothing in the documentation task caused this, and the agent's
|
|
155
|
+
session is intact, so Doxloop resumes that session in the same workspace after
|
|
156
|
+
a short pause, up to twice per run. The log shows **Resuming the same session
|
|
157
|
+
(attempt 1 of 2)**, and the agent continues with its context, keeping every
|
|
158
|
+
page and screenshot it already produced.
|
|
159
|
+
|
|
160
|
+
The run fails only when every resume fails too. The message then names the
|
|
161
|
+
API error and how many resumes were tried. Use **Resume the run** under
|
|
162
|
+
**Continue without starting over** once the API is available again; it
|
|
163
|
+
starts the agent in the same workspace with a brief of what is finished, so
|
|
164
|
+
completed pages and verified screenshots are not paid for twice. Do not use
|
|
165
|
+
**Retry generating**, which starts a new run from the plan and captures
|
|
166
|
+
everything again.
|
|
167
|
+
|
|
168
|
+
Set `DOXLOOP_AGENT_API_RESUMES` in the environment Doxloop runs in to change
|
|
169
|
+
how many automatic resumes a run gets; `0` disables them.
|
|
170
|
+
|
|
171
|
+
## Generation finishes but nothing changed
|
|
172
|
+
|
|
173
|
+
Generation never edits the documentation directly. Open **Review** to inspect
|
|
174
|
+
the proposal and accept its changes. The **Home** page shows **Needs your
|
|
175
|
+
review** whenever a proposal is waiting.
|
|
176
|
+
|
|
177
|
+
## Accepting a change reports a conflict
|
|
178
|
+
|
|
179
|
+
A file was edited outside Doxloop while the proposal was pending. Doxloop
|
|
180
|
+
compares the original fingerprint before writing and stops rather than
|
|
181
|
+
overwriting your edit. Review the current file, then use **Ask agent to
|
|
182
|
+
revise** to regenerate the affected page against the new content, or edit the
|
|
183
|
+
page directly in the proposal.
|
|
71
184
|
|
|
72
185
|
## Guide screenshots are missing
|
|
73
186
|
|
|
74
|
-
Application
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
If the selected
|
|
81
|
-
or
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
187
|
+
Application screenshots are captured during generation, not during planning.
|
|
188
|
+
Enable them with **Add product screenshots?** on the Create or Update page, or
|
|
189
|
+
set the policy under **Settings → Visual evidence**. Configure the
|
|
190
|
+
**Application base URL**, a **Ready path**, and a safe **Default starting
|
|
191
|
+
route**, then choose **Test application** to confirm the page is reachable.
|
|
192
|
+
|
|
193
|
+
If the selected assistant has no browser capability, the application is
|
|
194
|
+
unreachable, or safe test data is unavailable, Doxloop keeps the text guide
|
|
195
|
+
complete and omits broken image links.
|
|
196
|
+
|
|
197
|
+
When **Test application** reports **Sign-in needed**, open **Application
|
|
198
|
+
sign-in** on the same page. **Sign in with browser** opens a Chrome window where
|
|
199
|
+
you sign in by hand, including MFA or SSO; choose **Save session** once the
|
|
200
|
+
signed-in screen is showing, and every capture run starts with that session
|
|
201
|
+
loaded. For a plain username and password form you can instead save a test
|
|
202
|
+
account's credentials; the agent fills the form by secret name and never sees
|
|
203
|
+
the values. A **saved browser session has expired** message means the
|
|
204
|
+
application no longer accepts the recorded session: sign in with the browser
|
|
205
|
+
again. Both are stored on your computer outside the project, never in the
|
|
206
|
+
repository. Never provide production credentials or customer data for
|
|
207
|
+
screenshot capture.
|
|
208
|
+
|
|
209
|
+
## Monitoring does not run
|
|
210
|
+
|
|
211
|
+
Open **Sources → Monitoring**. Every source type can be scheduled: a Git
|
|
212
|
+
repository through its provider, a local folder in place. On macOS, Doxloop
|
|
213
|
+
tests the scheduled job in the real scheduler context when you choose **Save
|
|
214
|
+
and install** and reports whether the background process can find the coding
|
|
215
|
+
assistant. Choose **Check now** to run one cycle immediately; a notice reports
|
|
216
|
+
its result and the full log is under **Recent activity** on the Home page.
|
|
217
|
+
|
|
218
|
+
A local folder without Git history reports "no sync baseline" until the first
|
|
219
|
+
accepted update records one. Run **Plan** once so later checks can compare
|
|
220
|
+
the folder's files against that baseline.
|
|
221
|
+
|
|
222
|
+
## Deployment fails
|
|
223
|
+
|
|
224
|
+
Deployment stops when validation reports errors. Open **Review** to see the
|
|
225
|
+
errors on the affected files, or open the failed publish's log on the
|
|
226
|
+
**Publish** page for the full validation and build output. If Doxbrix does not
|
|
227
|
+
accept the saved sign-in, choose **Sign in again**; the Doxbrix API requires HTTPS and does not
|
|
228
|
+
follow redirects. **Deployment history** on the same page keeps the outcome of
|
|
229
|
+
every attempt.
|
|
230
|
+
|
|
231
|
+
## Preview shows stale content
|
|
232
|
+
|
|
233
|
+
**Preview docs** serves the accepted documentation, not a pending proposal.
|
|
234
|
+
Use **Preview documentation** on the Review page to see a proposal before you
|
|
235
|
+
accept it. The local preview runs on port 4321; close any other server using
|
|
236
|
+
that port.
|