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
12 changes: 12 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,18 @@ jobs:
- name: Spellcheck
run: nix develop -c codespell docs-source README.md

format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- uses: cachix/install-nix-action@v27
with:
nix_path: nixpkgs=channel:nixos-unstable

- name: Check formatting
run: nix develop -c mdformat --check --wrap 120 docs-source README.md

deploy:
if: github.event_name == 'push'
needs: build
Expand Down
11 changes: 10 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
# Sphinx build output
_build/
_built/
.doctrees/

# Generated light/dark drawio SVG exports (rendered at build time, see conf.py)
docs-source/**/*.light.svg
docs-source/**/*.dark.svg

# Python
__pycache__/
*.pyc
Expand All @@ -18,6 +23,10 @@ result-*
Thumbs.db

# Editors
.vscode/
.vscode/*
!.vscode/settings.json
.idea/
*.swp

# Claude Code local overrides
.claude/settings.local.json
5 changes: 5 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"editor.wordWrap": "wordWrapColumn",
"editor.wordWrapColumn": 120,
"editor.rulers": [120]
}
23 changes: 19 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@

See the [Contributing Guide](CONTRIBUTING.md) and the [Code of Conduct](CODE_OF_CONDUCT.md)!

RoboCup Small Size League docs. [Sphinx](https://www.sphinx-doc.org/) + [MyST](https://myst-parser.readthedocs.io/), deployed to GitHub Pages via Actions.
RoboCup Small Size League docs. [Sphinx](https://www.sphinx-doc.org/) + [MyST](https://myst-parser.readthedocs.io/),
deployed to GitHub Pages via Actions.

This repository documents top level items, such as field architecture, new team guides, etc. Highly technical documentation regarding the usage of a
league software tool should be in the repository for that tool. Any top level integration/usages guides would be welcome here.
This repository documents top level items, such as field architecture, new team guides, etc. Highly technical
documentation regarding the usage of a league software tool should be in the repository for that tool. Any top level
integration/usages guides would be welcome here.

## Build

Expand Down Expand Up @@ -60,11 +62,17 @@ nix develop -c sphinx-build -b linkcheck docs-source _build/linkcheck

# spelling (codespell)
nix develop -c codespell docs-source README.md

# formatting (mdformat, 120-col wrap)
nix develop -c mdformat --check --wrap 120 docs-source README.md
```

Auto-fix formatting: drop `--check` from the last command.

## Deploy

`main` push → [`.github/workflows/docs.yml`](.github/workflows/docs.yml) builds + deploys via GitHub Pages Actions. Not RTD-hosted.
`main` push → [`.github/workflows/docs.yml`](.github/workflows/docs.yml) builds + deploys via GitHub Pages Actions. Not
RTD-hosted.

## Diff versions

Expand All @@ -73,6 +81,13 @@ scripts/diff-versions.sh v1.0.0 v1.1.0
scripts/diff-versions.sh v1.0.0 main rules.md
```

## External Links Manual Checks

If a website blocks bots, then the external links Ci check will fail. You can add these links to `linkcheck_ignore` in
`conf.py`. Periodically, anyone can run `./scripts/reverify-ignored-links.sh` which will find a browser and open all the
ignored links to be checked manually. This usually passes the cloudflare bot check. Currently no clear way to do this in
CI.

## License

[CC BY 4.0](LICENSE).
39 changes: 39 additions & 0 deletions docs-source/_static/camera-calc.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
.camera-calc { border: 1px solid var(--color-background-border, #ccc); border-radius: 6px; padding: 1em; margin: 1em 0; }
.camera-calc-group { border: 1px solid var(--color-background-border, #ddd); border-radius: 6px; margin: 0 0 1em 0; padding: 0.75em 1em 1em; }
.camera-calc-group legend { font-weight: bold; padding: 0 0.4em; }
.camera-calc-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0.75em; }
.camera-calc-grid label { display: flex; flex-direction: column; font-size: 0.9em; gap: 0.25em; }
.camera-calc-grid label > span:first-child { display: flex; align-items: center; height: 1.4em; gap: 0.3em; }
.camera-calc-grid mjx-container {
vertical-align: middle !important;
min-height: 0 !important;
max-height: 1.4em;
overflow: hidden;
}
.camera-calc-grid input { padding: 0.3em; }
.camera-calc-grid input:disabled {
background: var(--color-background-secondary, #e9e9e9);
color: var(--color-foreground-muted, #767676);
border-color: var(--color-background-border, #ccc);
cursor: not-allowed;
opacity: 0.85;
}
.camera-calc-radio { display: flex; gap: 1.5em; margin: 0.75em 0; font-size: 0.9em; flex-wrap: wrap; }
.camera-calc-radio label { display: flex; align-items: center; gap: 0.4em; font-weight: normal; }
.camera-calc-note { font-size: 0.85em; opacity: 0.75; margin: 0.25em 0 0; }
.camera-calc button { margin-top: 0.25em; padding: 0.5em 1.2em; cursor: pointer; }
.camera-calc-preset {
margin-top: 0 !important;
padding: 0.3em 0.7em !important;
font-size: 0.85em;
background: var(--color-background-secondary, #f0f0f0);
color: var(--color-foreground-primary, #000) !important;
border: 1px solid var(--color-background-border, #ccc);
border-radius: 4px;
}
.camera-calc-output { margin-top: 1em; }
.camera-calc-output dt { font-weight: bold; }
.camera-calc-output dd { margin: 0 0 0.6em 0; }
.camera-calc-output .cc-pass { color: #1a7f37; }
.camera-calc-output .cc-fail { color: #cf222e; }
.camera-calc-output .cc-subhead { margin-top: 1em; padding-top: 0.5em; border-top: 1px solid var(--color-background-border, #ddd); }
Loading