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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .stylelintrc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"extends": ["stylelint-config-standard", "stylelint-config-html/svelte"],
"extends": ["stylelint-config-standard", "stylelint-config-html/svelte", "stylelint-config-html/vue"],
Comment thread
rh-hemartin marked this conversation as resolved.
"rules": {
"custom-property-pattern": null,
"selector-class-pattern": null
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Fullsend is a platform for fully autonomous agentic development for Git-hosted o
- You **must** read and follow [COMMITS.md](COMMITS.md) when writing or reviewing commit messages and PR titles. Getting the prefix right is not optional — GoReleaser uses PR titles to build release notes. Breaking changes **must** carry the `!` suffix in both commit messages and PR titles; a missing `!` is an important-severity review finding.
- This repository requires a [Developer Certificate of Origin (DCO)](https://developercertificate.org/). Human-proposed commits **must** be signed off: use `git commit -s` (or add `Signed-off-by: Your Name <email>` as a trailer). Human-driven agent sessions (e.g., using Claude Code locally) should also sign off — the human directing the session is the one certifying the DCO. **Autonomous agent commits are exempt** and must never supply the DCO with `-s` or with `Signed-off-by`. These agents commit using the GitHub App's bot identity, which the [Probot DCO app](https://github.com/apps/dco) auto-skips.
- Never commit secrets (tokens, API keys, PEM keys, gcloud credentials) or sensitive data (GCP project names, service account identifiers, Model Armor template names, internal hostnames). Use environment variables with no defaults for sensitive values.
- When adding a new doc under `docs/`, check `website/.vitepress/config.ts` sidebar config. Sections using `getMarkdownFiles()` are auto-discovered. All other sections need a manual `{ text, link }` entry.
- When adding a new doc under `docs/`, check `website/.vitepress/config.ts` sidebar config. Sections using `getMarkdownFiles()` are auto-discovered. All other sections need a manual `{ text, link }` entry. Also add the new folder's prefix to `search.options.scopes` in the same file so the folder's pages are reachable when search scope pills are active.

## Topic-specific guidance

Expand Down
1 change: 1 addition & 0 deletions docs/doc-site.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ A `prebuild` hook runs `git submodule update --init` before the VitePress build,
- `website/.vitepress/config.ts` defines the sidebar navigation and markdown processing
- `getMarkdownFiles()` auto-discovers markdown files and subdirectory READMEs for dynamic sidebar sections (ADRs, experiments, design docs, specs, plans)
- Symlinks connect submodule content into `docs/` (e.g. `docs/experiments` → `../experiments`)
- The `search.options.scopes` array in `config.ts` defines the scope pills shown in the search modal. Each scope has a `label` and a list of `prefixes` (path prefixes like `/docs/guides/`). When a user activates a scope, search results are filtered to pages whose path starts with one of the scope's prefixes. Every `docs/` subfolder that produces rendered pages must appear in at least one scope; otherwise its pages become unreachable when any scope pill is active.

## Submodules

Expand Down
1 change: 1 addition & 0 deletions vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ export default defineConfig(({ command }) => ({
environment: "jsdom",
include: [
"admin/src/**/*.test.ts",
"../website/.vitepress/**/*.test.ts",
],
passWithNoTests: true,
},
Expand Down
74 changes: 53 additions & 21 deletions website/.vitepress/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -342,32 +342,64 @@ export default defineConfig({

search: {
provider: "local",
options: {
Comment thread
rh-hemartin marked this conversation as resolved.
scopes: [
Comment thread
rh-hemartin marked this conversation as resolved.
Comment thread
rh-hemartin marked this conversation as resolved.
Comment thread
rh-hemartin marked this conversation as resolved.
{ label: "Guides", prefixes: ["/docs/guides/", "/docs/agents/", "/docs/cli/"] },
{
label: "Design Docs",
prefixes: [
"/docs/problems/",
"/docs/ADRs/",
"/docs/superpowers/",
"/docs/plans/",
"/docs/normative/",
"/docs/spikes/",
],
},
{ label: "Experiments", prefixes: ["/docs/experiments/"] },
{ label: "Contributing", prefixes: ["/docs/contributing/"] },
{ label: "Others", prefixes: [], others: true },
],
},
},
},

vite: {
resolve: {
alias: {
"vue/server-renderer": path.resolve(
__dirname,
"..",
"node_modules",
"vue",
"server-renderer",
"index.mjs",
),
vue: path.resolve(__dirname, "..", "node_modules", "vue"),
// Use mermaid's pre-bundled ESM build; the default entry (mermaid.core.mjs)
// externalizes dayjs (CJS-only), which breaks under noExternal: [/./].
mermaid: path.resolve(
__dirname,
"..",
"node_modules",
"mermaid",
"dist",
"mermaid.esm.mjs",
),
},
alias: [
{
find: /^.*\/VPLocalSearchBox\.vue$/,
replacement: fileURLToPath(
new URL("./theme/components/VPLocalSearchBox.vue", import.meta.url),
),
},
{
find: "vue/server-renderer",
replacement: path.resolve(
__dirname,
"..",
"node_modules",
"vue",
"server-renderer",
"index.mjs",
),
},
{
find: "vue",
replacement: path.resolve(__dirname, "..", "node_modules", "vue"),
},
{
find: "mermaid",
replacement: path.resolve(
__dirname,
"..",
"node_modules",
"mermaid",
"dist",
"mermaid.esm.mjs",
),
},
],
// Prevent VitePress SSR from resolving CJS packages in the
// repo-root node_modules (which causes ESM default-import
// failures on Node 22 for packages like entities, estree-walker).
Expand Down
9 changes: 9 additions & 0 deletions website/.vitepress/search.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import "vitepress";

declare module "vitepress" {
namespace DefaultTheme {
interface LocalSearchOptions {
scopes?: { label: string; prefixes: string[] }[];
}
}
}
Loading
Loading