docs: move published docs under docs/public
Relocate the Mintlify tree to docs/public and consolidate internal docs under docs/internal. Update build scripts, tests, CI filters, README references, and local docs skills to follow the new layout.
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
name: changelog
|
||||
description: Generate and update the product changelog in Mintlify docs. Use when the user asks to update the changelog, add a changelog entry, document recent changes, or write release notes. Reads git history on main, filters to user-facing changes, and writes dated MDX files to docs/changelog/.
|
||||
description: Generate and update the product changelog in Mintlify docs. Use when the user asks to update the changelog, add a changelog entry, document recent changes, or write release notes. Reads git history on main, filters to user-facing changes, and writes dated MDX files to docs/public/changelog/.
|
||||
---
|
||||
|
||||
# Changelog
|
||||
|
|
@ -43,13 +43,13 @@ If there are no user-facing changes in the entire range, tell the user and stop.
|
|||
|
||||
### 4. Write changelog entries
|
||||
|
||||
Create one file per date at `docs/changelog/YYYY-MM-DD.mdx`, using the commit date (not today's date). If a file already exists for a date, regenerate it with the full set of commits for that day (not just new ones). Follow the references linked above for format, writing style, and hero vs. accordion decisions.
|
||||
Create one file per date at `docs/public/changelog/YYYY-MM-DD.mdx`, using the commit date (not today's date). If a file already exists for a date, regenerate it with the full set of commits for that day (not just new ones). Follow the references linked above for format, writing style, and hero vs. accordion decisions.
|
||||
|
||||
- **Batch related commits** into a single feature section (e.g., multiple hook-related commits become one "Lifecycle hooks" section)
|
||||
|
||||
### 5. Update docs/docs.json
|
||||
### 5. Update docs/public/docs.json
|
||||
|
||||
Add all new pages to the Changelog tab's pages array in `docs/docs.json`. List entries most recent first. The page path is `changelog/YYYY-MM-DD` (no `.mdx` extension).
|
||||
Add all new pages to the Changelog tab's pages array in `docs/public/docs.json`. List entries most recent first. The page path is `changelog/YYYY-MM-DD` (no `.mdx` extension).
|
||||
|
||||
### 6. Write watermark
|
||||
|
||||
|
|
@ -57,4 +57,4 @@ Write the output of `git rev-parse HEAD` to `.claude/skills/changelog/watermark`
|
|||
|
||||
### 7. Clean up legacy single-file changelog
|
||||
|
||||
If `docs/changelog.mdx` still exists as the old single-file changelog, delete it and remove its reference from `docs/docs.json`.
|
||||
If `docs/public/changelog.mdx` still exists as the old single-file changelog, delete it and remove its reference from `docs/public/docs.json`.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Mintlify Changelog MDX Format
|
||||
|
||||
Each changelog entry is a separate `.mdx` file in `docs/changelog/`.
|
||||
Each changelog entry is a separate `.mdx` file in `docs/public/changelog/`.
|
||||
|
||||
## Template
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
name: update-docs
|
||||
description: Update documentation in docs/ based on recent code changes. Reads git history since a watermark commit, maps changed files to doc pages, and makes surgical edits to keep docs in sync with code.
|
||||
description: Update documentation in docs/public/ based on recent code changes. Reads git history since a watermark commit, maps changed files to doc pages, and makes surgical edits to keep docs in sync with code.
|
||||
---
|
||||
|
||||
# Update Docs
|
||||
|
|
@ -8,7 +8,7 @@ description: Update documentation in docs/ based on recent code changes. Reads g
|
|||
Detect code changes since the last run and update affected documentation pages.
|
||||
|
||||
- [references/mapping.md](references/mapping.md) — code-to-doc page mapping
|
||||
- Follow `docs/CONTRIBUTING.md` and `docs/AGENTS.md` for writing style
|
||||
- Follow the existing pages under `docs/public/` for writing style
|
||||
|
||||
## Workflow
|
||||
|
||||
|
|
@ -50,7 +50,7 @@ Surgical edits only — change only affected sections. Preserve existing voice,
|
|||
- Insert rows into reference tables in logical position
|
||||
- Add new sections for entirely new capabilities
|
||||
- Update existing descriptions when behavior changes
|
||||
- Never edit `docs/api-reference/fabro-api.yaml` — that is the API workflow's source of truth
|
||||
- Never edit `docs/public/api-reference/fabro-api.yaml` — that is the API workflow's source of truth
|
||||
|
||||
### 6. Validate DOT examples
|
||||
|
||||
|
|
|
|||
|
|
@ -4,33 +4,33 @@ Which source files affect which doc pages. Use this as guidance — also apply j
|
|||
|
||||
| Source | Docs |
|
||||
|--------|------|
|
||||
| `lib/crates/fabro-cli/src/main.rs`, `lib/crates/fabro-workflow/src/cli/mod.rs`, `lib/crates/fabro-workflow/src/cli/run.rs` | `docs/reference/cli.mdx` |
|
||||
| `lib/crates/fabro-cli/src/cli_config.rs` | `docs/reference/cli-configuration.mdx` |
|
||||
| `lib/crates/fabro-llm/src/cli.rs` | `docs/reference/cli.mdx` |
|
||||
| `lib/crates/fabro-api/src/serve.rs` | `docs/reference/cli.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/parser/*.rs` | `docs/reference/dot-language.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/condition.rs` | `docs/reference/dot-language.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/cli/validate.rs` | `docs/reference/dot-language.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/stylesheet.rs` | `docs/workflows/stylesheets.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/transform.rs` | `docs/workflows/variables.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/handler/*.rs` | `docs/workflows/stages-and-nodes.mdx`, `docs/reference/dot-language.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/handler/human.rs` | `docs/workflows/human-in-the-loop.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/cli/run_config.rs` | `docs/execution/run-configuration.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/engine.rs` | `docs/core-concepts/how-arc-works.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/context/*.rs` | `docs/execution/context.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/checkpoint.rs` | `docs/execution/checkpoints.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/retro.rs`, `lib/crates/fabro-workflow/src/retro_agent.rs` | `docs/execution/retros.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/interviewer/*.rs` | `docs/execution/interviews.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/hook/*.rs` | `docs/agents/hooks.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/daytona_sandbox.rs` | `docs/integrations/daytona.mdx`, `docs/execution/environments.mdx` |
|
||||
| `lib/crates/fabro-agent/src/tools.rs`, `lib/crates/fabro-agent/src/tool_registry.rs`, `lib/crates/fabro-agent/src/tool_execution.rs` | `docs/agents/tools.mdx` |
|
||||
| `lib/crates/fabro-agent/src/v4a_patch.rs` | `docs/agents/tools.mdx` |
|
||||
| `lib/crates/fabro-agent/src/cli.rs` | `docs/agents/permissions.mdx` |
|
||||
| `lib/crates/fabro-agent/src/subagent.rs` | `docs/agents/subagents.mdx` |
|
||||
| `lib/crates/fabro-agent/src/mcp_integration.rs` | `docs/agents/mcp.mdx` |
|
||||
| `lib/crates/fabro-llm/src/catalog.rs`, `lib/crates/fabro-llm/src/providers/*.rs` | `docs/core-concepts/models.mdx` |
|
||||
| `lib/crates/fabro-devcontainer/src/*.rs` | `docs/execution/devcontainers.mdx` |
|
||||
| `lib/crates/fabro-slack/src/*.rs` | `docs/integrations/slack.mdx` |
|
||||
| `lib/crates/fabro-mcp/src/*.rs` | `docs/agents/mcp.mdx` |
|
||||
| `lib/crates/fabro-api/src/*.rs` | `docs/api-reference/overview.mdx`, `docs/api-reference/demo-mode.mdx` |
|
||||
| `lib/crates/fabro-api/src/server_config.rs` | `docs/administration/server-configuration.mdx` |
|
||||
| `lib/crates/fabro-cli/src/main.rs`, `lib/crates/fabro-workflow/src/cli/mod.rs`, `lib/crates/fabro-workflow/src/cli/run.rs` | `docs/public/reference/cli.mdx` |
|
||||
| `lib/crates/fabro-cli/src/cli_config.rs` | `docs/public/reference/cli-configuration.mdx` |
|
||||
| `lib/crates/fabro-llm/src/cli.rs` | `docs/public/reference/cli.mdx` |
|
||||
| `lib/crates/fabro-api/src/serve.rs` | `docs/public/reference/cli.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/parser/*.rs` | `docs/public/reference/dot-language.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/condition.rs` | `docs/public/reference/dot-language.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/cli/validate.rs` | `docs/public/reference/dot-language.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/stylesheet.rs` | `docs/public/workflows/stylesheets.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/transform.rs` | `docs/public/workflows/variables.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/handler/*.rs` | `docs/public/workflows/stages-and-nodes.mdx`, `docs/public/reference/dot-language.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/handler/human.rs` | `docs/public/workflows/human-in-the-loop.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/cli/run_config.rs` | `docs/public/execution/run-configuration.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/engine.rs` | `docs/public/core-concepts/how-arc-works.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/context/*.rs` | `docs/public/execution/context.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/checkpoint.rs` | `docs/public/execution/checkpoints.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/retro.rs`, `lib/crates/fabro-workflow/src/retro_agent.rs` | `docs/public/execution/retros.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/interviewer/*.rs` | `docs/public/execution/interviews.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/hook/*.rs` | `docs/public/agents/hooks.mdx` |
|
||||
| `lib/crates/fabro-workflow/src/daytona_sandbox.rs` | `docs/public/integrations/daytona.mdx`, `docs/public/execution/environments.mdx` |
|
||||
| `lib/crates/fabro-agent/src/tools.rs`, `lib/crates/fabro-agent/src/tool_registry.rs`, `lib/crates/fabro-agent/src/tool_execution.rs` | `docs/public/agents/tools.mdx` |
|
||||
| `lib/crates/fabro-agent/src/v4a_patch.rs` | `docs/public/agents/tools.mdx` |
|
||||
| `lib/crates/fabro-agent/src/cli.rs` | `docs/public/agents/permissions.mdx` |
|
||||
| `lib/crates/fabro-agent/src/subagent.rs` | `docs/public/agents/subagents.mdx` |
|
||||
| `lib/crates/fabro-agent/src/mcp_integration.rs` | `docs/public/agents/mcp.mdx` |
|
||||
| `lib/crates/fabro-llm/src/catalog.rs`, `lib/crates/fabro-llm/src/providers/*.rs` | `docs/public/core-concepts/models.mdx` |
|
||||
| `lib/crates/fabro-devcontainer/src/*.rs` | `docs/public/execution/devcontainers.mdx` |
|
||||
| `lib/crates/fabro-slack/src/*.rs` | `docs/public/integrations/slack.mdx` |
|
||||
| `lib/crates/fabro-mcp/src/*.rs` | `docs/public/agents/mcp.mdx` |
|
||||
| `lib/crates/fabro-api/src/*.rs` | `docs/public/api-reference/overview.mdx`, `docs/public/api-reference/demo-mode.mdx` |
|
||||
| `lib/crates/fabro-api/src/server_config.rs` | `docs/public/administration/server-configuration.mdx` |
|
||||
|
|
|
|||
8
.github/workflows/rust.yml
vendored
|
|
@ -11,8 +11,8 @@ on:
|
|||
- ".cargo/**"
|
||||
- ".config/**"
|
||||
- "bin/dev/**"
|
||||
- "docs/reference/cli.mdx"
|
||||
- "docs/reference/user-configuration.mdx"
|
||||
- "docs/public/reference/cli.mdx"
|
||||
- "docs/public/reference/user-configuration.mdx"
|
||||
- "openapi/**"
|
||||
- ".github/workflows/rust.yml"
|
||||
pull_request:
|
||||
|
|
@ -25,8 +25,8 @@ on:
|
|||
- ".cargo/**"
|
||||
- ".config/**"
|
||||
- "bin/dev/**"
|
||||
- "docs/reference/cli.mdx"
|
||||
- "docs/reference/user-configuration.mdx"
|
||||
- "docs/public/reference/cli.mdx"
|
||||
- "docs/public/reference/user-configuration.mdx"
|
||||
- "openapi/**"
|
||||
- ".github/workflows/rust.yml"
|
||||
workflow_dispatch:
|
||||
|
|
|
|||
14
AGENTS.md
|
|
@ -46,16 +46,16 @@ macOS note: if `cargo nextest run` fails with `Too many open files (os error 24)
|
|||
2. `cd apps/fabro-web && bun run dev` — rebuilds web assets on change; refresh the browser manually
|
||||
3. Mintlify docs dev server (requires Docker — `mintlify dev` needs Node LTS which may not match the host):
|
||||
```
|
||||
docker run --rm -d -p 3333:3333 -v $(pwd)/docs:/docs -w /docs --name mintlify-dev node:22-slim \
|
||||
docker run --rm -d -p 3333:3333 -v $(pwd)/docs/public:/docs -w /docs --name mintlify-dev node:22-slim \
|
||||
bash -c "npx mintlify dev --host 0.0.0.0 --port 3333"
|
||||
```
|
||||
Then open http://localhost:3333. Stop with `docker stop mintlify-dev`.
|
||||
|
||||
## API workflow
|
||||
|
||||
The OpenAPI spec at `docs/api-reference/fabro-api.yaml` is the source of truth for the fabro-api HTTP interface.
|
||||
The OpenAPI spec at `docs/public/api-reference/fabro-api.yaml` is the source of truth for the fabro-api HTTP interface.
|
||||
|
||||
1. Edit `docs/api-reference/fabro-api.yaml`
|
||||
1. Edit `docs/public/api-reference/fabro-api.yaml`
|
||||
2. `cargo build -p fabro-api` — build.rs regenerates Rust types and client via progenitor
|
||||
3. Write/update handler in `lib/crates/fabro-server/src/server.rs`, add route to `build_router()`
|
||||
4. `cargo nextest run -p fabro-server` — conformance test catches spec/router drift
|
||||
|
|
@ -106,10 +106,10 @@ Fabro is an AI-powered workflow orchestration platform. Workflows are defined as
|
|||
|
||||
When working on Rust crates, read the relevant strategy doc **before** making changes:
|
||||
|
||||
- **`docs-internal/logging-strategy.md`** — read when adding `tracing` calls (`info!`, `debug!`, `warn!`, `error!`), working on error handling paths, or adding new operations that should be observable
|
||||
- **`docs-internal/events-strategy.md`** — read when adding or modifying `Event` variants, touching `Emitter`/`emit()`, changing `progress.jsonl` output, or adding new workflow stage types
|
||||
- **`docs-internal/testing-strategy.md`** — read when adding or reorganizing tests, choosing between unit vs `tests/it`, deciding whether a test belongs in `cmd` vs `workflow` vs `scenario`, or deciding how to structure snapshots and fixtures
|
||||
- **`docs-internal/server-secrets-strategy.md`** — read when adding or changing server-level secrets, startup validation, install-time secret persistence, or subprocess env inheritance/scrubbing
|
||||
- **`docs/internal/logging-strategy.md`** — read when adding `tracing` calls (`info!`, `debug!`, `warn!`, `error!`), working on error handling paths, or adding new operations that should be observable
|
||||
- **`docs/internal/events-strategy.md`** — read when adding or modifying `Event` variants, touching `Emitter`/`emit()`, changing `progress.jsonl` output, or adding new workflow stage types
|
||||
- **`docs/internal/testing-strategy.md`** — read when adding or reorganizing tests, choosing between unit vs `tests/it`, deciding whether a test belongs in `cmd` vs `workflow` vs `scenario`, or deciding how to structure snapshots and fixtures
|
||||
- **`docs/internal/server-secrets-strategy.md`** — read when adding or changing server-level secrets, startup validation, install-time secret persistence, or subprocess env inheritance/scrubbing
|
||||
|
||||
## Shell quoting in sandbox code
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<div align="left" id="top">
|
||||
<a href="https://docs.fabro.sh"><img alt="Fabro" src="docs/logo/dark.svg" height="75"></a>
|
||||
<a href="https://docs.fabro.sh"><img alt="Fabro" src="docs/public/logo/dark.svg" height="75"></a>
|
||||
</div>
|
||||
|
||||
## The open source dark software factory for expert engineers
|
||||
|
|
@ -27,7 +27,7 @@ curl -fsSL https://fabro.sh/install.sh | bash
|
|||
|
||||
Then run `fabro server start` to finish setup in your browser. The server opens a web wizard, exits when the wizard completes, and starts in configured mode the next time you run it.
|
||||
|
||||
<img src="docs/images/runs-board.png" alt="Fabro Runs board showing workflows across Working, Pending, Verify, and Merge stages" />
|
||||
<img src="docs/public/images/runs-board.png" alt="Fabro Runs board showing workflows across Working, Pending, Verify, and Merge stages" />
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ Then run `fabro server start` to finish setup in your browser. The server opens
|
|||
|
||||
A plan-approve-implement workflow where a human reviews the plan before the agent writes code:
|
||||
|
||||
<img src="docs/images/plan-implement-readme.svg" alt="Plan-Implement workflow graph showing Start → Plan → Approve Plan → Implement → Simplify → Exit with a Revise loop" />
|
||||
<img src="docs/public/images/plan-implement-readme.svg" alt="Plan-Implement workflow graph showing Start → Plan → Approve Plan → Implement → Simplify → Exit with a Revise loop" />
|
||||
|
||||
```dot
|
||||
digraph PlanImplement {
|
||||
|
|
|
|||
|
|
@ -20,8 +20,8 @@ disallowed-methods = [
|
|||
{ path = "std::fs::File::create", reason = "Blocking open; prefer tokio::fs::File::create on Tokio paths. Document intentional sync I/O with #[expect(clippy::disallowed_methods, reason = \"...\")]" },
|
||||
{ path = "std::fs::File::create_new", reason = "Blocking open; prefer tokio::fs::File::create_new on Tokio paths. Document intentional sync I/O with #[expect(clippy::disallowed_methods, reason = \"...\")]" },
|
||||
{ path = "std::fs::OpenOptions::open", reason = "Blocking open; prefer tokio::fs::OpenOptions::open on Tokio paths. OS file-lock semantics may require spawn_blocking instead. Document intentional sync I/O with #[expect(clippy::disallowed_methods, reason = \"...\")]" },
|
||||
{ path = "std::env::set_var", reason = "Server/process env must be injected at construction or child-process spawn time, not mutated globally. See docs-internal/server-secrets-strategy.md" },
|
||||
{ path = "std::env::remove_var", reason = "Server/process env must be injected at construction or child-process spawn time, not mutated globally. See docs-internal/server-secrets-strategy.md" },
|
||||
{ path = "std::env::set_var", reason = "Server/process env must be injected at construction or child-process spawn time, not mutated globally. See docs/internal/server-secrets-strategy.md" },
|
||||
{ path = "std::env::remove_var", reason = "Server/process env must be injected at construction or child-process spawn time, not mutated globally. See docs/internal/server-secrets-strategy.md" },
|
||||
{ path = "std::env::var", reason = "Use fabro_static::EnvVars for fixed environment variable names; document intentional process-env lookup facades with #[expect(clippy::disallowed_methods, reason = \"...\")]", allow-invalid = true },
|
||||
{ path = "std::env::var_os", reason = "Use fabro_static::EnvVars for fixed environment variable names; document intentional process-env lookup facades with #[expect(clippy::disallowed_methods, reason = \"...\")]", allow-invalid = true },
|
||||
{ path = "std::env::vars", reason = "Snapshotting the ambient process env must be limited to documented subprocess/test/bootstrap facades.", allow-invalid = true },
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 608 B After Width: | Height: | Size: 608 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 623 KiB After Width: | Height: | Size: 623 KiB |
|
Before Width: | Height: | Size: 624 KiB After Width: | Height: | Size: 624 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 7.6 KiB |
|
|
@ -32,7 +32,7 @@ With the SPA baked into the binary, there's no in-container edit path. Commit th
|
|||
|
||||
## Updating logos
|
||||
|
||||
Logos live at `apps/fabro-web/public/logotype.svg` (dark) and `apps/fabro-web/public/logotype-light.svg` (light). These are bundled into the SPA at build time — rebuilding the image picks up the changes. The source-of-truth logos are in `docs/logo/dark.svg` and `docs/logo/light.svg`.
|
||||
Logos live at `apps/fabro-web/public/logotype.svg` (dark) and `apps/fabro-web/public/logotype-light.svg` (light). These are bundled into the SPA at build time — rebuilding the image picks up the changes. The source-of-truth logos are in `docs/public/logo/dark.svg` and `docs/public/logo/light.svg`.
|
||||
|
||||
## Browser setup
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ If the nav bar is too crowded at this width, hide low-priority items (Start, Set
|
|||
|
||||
## Taking screenshots
|
||||
|
||||
Screenshots live in `docs/images/web/`. Each screenshot maps to a specific URL (served from `http://localhost/` with the `X-Fabro-Demo: 1` header):
|
||||
Screenshots live in `docs/public/images/web/`. Each screenshot maps to a specific URL (served from `http://localhost/` with the `X-Fabro-Demo: 1` header):
|
||||
|
||||
| File | URL |
|
||||
|---|---|
|
||||
|
|
@ -2,9 +2,4 @@
|
|||
# .git, .github, .claude, .agents, .idea, node_modules,
|
||||
# README.md, LICENSE.md, CHANGELOG.md, CONTRIBUTING.md
|
||||
|
||||
# Non-docs files
|
||||
AGENTS.md
|
||||
|
||||
# Draft content
|
||||
drafts/
|
||||
*.draft.mdx
|
||||