Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
96abf77
Update actions to work after clearing cache, bump to RC2 (#854)
macumber Jan 31, 2026
758927c
Merge branch 'master' into develop
macumber Jan 31, 2026
21e980d
Remove rc2 label
macumber Feb 13, 2026
4ce4a3c
Merge branch 'master' into develop
macumber Feb 18, 2026
04d72fb
Update CMakeLists.txt
macumber Feb 18, 2026
49bd936
#757 - Initial implementation for SiteGroundTemperatureBuildingSurfac…
jmarrec Mar 2, 2026
563ed2d
Add Site:GT:Shallow object too and refactor a bit
jmarrec Mar 3, 2026
4e1a3f7
Revamp into a custom page, so I don't have to use OSItem here
jmarrec Mar 3, 2026
40d4011
Break into sevreral files and rename classes for clarity.
jmarrec Mar 3, 2026
7c56825
Style a bit more
jmarrec Mar 3, 2026
cc0f469
OSQuantityEdit2::completeBind sets Enabled but not Locked=False
jmarrec Mar 3, 2026
7620bef
Add Site:GroundTemperature:Deep too
jmarrec Mar 3, 2026
82ea35f
Add ability to import Site:GroundTemperature:Shallow/Deep from EPW if…
jmarrec Mar 3, 2026
522676c
Switch m_isIP when toggle Units clicked.
jmarrec Mar 3, 2026
ae6d2ab
Fixup (existing) bug that didn't update m_isIP in LocationTabController
jmarrec Mar 3, 2026
c4cf313
Initial UI for Site:WaterMains:Temperature
jmarrec Mar 3, 2026
14697d5
Tweak the layout
jmarrec Mar 5, 2026
731a258
Style the OSDropZone2
jmarrec Mar 5, 2026
fc4af9d
Revert "Style the OSDropZone2" - I think it was a mistake to use that…
jmarrec Mar 5, 2026
eefb94f
Replace OSDropZone2 with OSDropZone
jmarrec Mar 5, 2026
52f661a
Style the left list (GroundTemperatureEntry(List))
jmarrec Mar 5, 2026
e0819cf
Style the left list via a Stylesheet instead, leaving Qt to handle al…
jmarrec Mar 5, 2026
cfe19c2
Merge branch '757-SiteWaterMainsTemperature' into 757_SiteGroundTempe…
jmarrec Mar 5, 2026
aa93262
Shush cppcheck incorrectly flagging unused
jmarrec Mar 5, 2026
24579cf
Add a remove button to remove the Unique ModelObjects related to grou…
jmarrec Mar 5, 2026
940a95e
Style the not present page
jmarrec Mar 5, 2026
fabb08c
Add a batch edit mode to set all months to the same value
jmarrec Mar 5, 2026
7618c71
Move MonthBInding stuff to the header, so I can reuse the setter in a…
jmarrec Mar 5, 2026
e65a5b4
Rename the "using" field to MOType (ModelObject Type)
jmarrec Mar 5, 2026
e175f30
Make the QDoubleSPinBox default to be january value for the object
jmarrec Mar 5, 2026
bf6e5cf
Add a bar chart to display monthly values?
jmarrec Mar 5, 2026
aa713b8
Make the MonthlyWidget inside a QScrollArea to avoid monthly edit fie…
jmarrec Mar 5, 2026
f111d8c
Implement a axhline at 0 if it crosses it, and a hover tooltip for th…
jmarrec Mar 5, 2026
fc162f9
Inhrit nano observer instead of manually triggering refreshChartFromModl
jmarrec Mar 5, 2026
9b8d3f3
Merge branch '757-bar-chart' into 757_SiteGroundTemperature
jmarrec Mar 5, 2026
7e45ad7
Add Site:GroundTmeperature:FCFactorMethod with option to import from …
jmarrec Mar 5, 2026
9a1e331
Fix up background appearing white on mac
jmarrec Mar 5, 2026
9f50e41
On macOS I had a dangling iterator bug with EpwGroundTemperatureDepth
jmarrec Mar 5, 2026
b40bdde
Remove chart junk (gridlines not needed)
jmarrec Mar 5, 2026
7905935
Remove touch-event related warnings in console on the animated QtChart
jmarrec Mar 5, 2026
eea7ad3
Add ability, in GeometryPreview, to flip a PlanarSurface's vertices
jmarrec Mar 6, 2026
03eff72
Construct a better UI on the fly
jmarrec Mar 6, 2026
7de0836
Style the Actions popup more
jmarrec Mar 6, 2026
6cbd380
Add actions to switch the Outside Boundary COndition, Sun/Wind Exposu…
jmarrec Mar 6, 2026
530f5d9
Add an action to set a Space's SpaceType from javascript
jmarrec Mar 6, 2026
31481b1
Add a way to set Construction from Javascript
jmarrec Mar 6, 2026
cda4a3b
Add way to set ThermalZone and BuildingStory from JS
jmarrec Mar 6, 2026
dcba90d
When triggering a model refresh from a JS action, store renderBy and …
jmarrec Mar 6, 2026
a25eefc
Persist the current camera state too
jmarrec Mar 6, 2026
6728494
Move logic to html instead of inlining in C++
jmarrec Mar 6, 2026
ba0c2f8
Fix existing issue that loads the wrong value from localStorage
jmarrec Mar 6, 2026
28605ce
For completeness, also restore the Show Air Loop value
jmarrec Mar 6, 2026
24a861b
MacOS: now we do use QWebChannel for sure so move it up the IF NOT AP…
jmarrec Mar 6, 2026
35b502c
Add a new action to triangulate a surface
jmarrec Mar 6, 2026
9467965
Style the disabled case
jmarrec Mar 6, 2026
c4da188
Merge remote-tracking branch 'origin/master' into remove_qt_ruby
macumber Mar 15, 2026
da37a79
Merge remote-tracking branch 'origin/master' into develop
macumber Mar 15, 2026
05fa44b
Remove Qt functions from ModelEditor ruby bindings
macumber Mar 15, 2026
3bdc7d9
Clang tidy
macumber Mar 15, 2026
aaa15bf
Fix OSSimpleProgressBar, will remove the ruby bindings entirely next
macumber Mar 16, 2026
22a10a9
No longer load openstudio_modeleditor.so
macumber Mar 16, 2026
4c2b835
Remove openstudio_modeleditor.so, keep the simple openstudio_modeledi…
macumber Mar 16, 2026
a506d53
Merge pull request #859 from openstudiocoalition/757_SiteGroundTemper…
jmarrec Mar 23, 2026
5d17b84
Merge pull request #863 from openstudiocoalition/interactive_geometry
jmarrec Mar 23, 2026
6bfb02c
Remove Qt functions from ModelEditor ruby bindings
macumber Mar 15, 2026
2dd9437
Clang tidy
macumber Mar 15, 2026
3e18a9e
Fix OSSimpleProgressBar, will remove the ruby bindings entirely next
macumber Mar 16, 2026
539d2a7
No longer load openstudio_modeleditor.so
macumber Mar 16, 2026
3507fb3
Remove openstudio_modeleditor.so, keep the simple openstudio_modeledi…
macumber Mar 16, 2026
b3c90db
Remove qt5compat (#867)
jmarrec Mar 24, 2026
34931b9
Merge branch 'remove_qt_ruby' of github.com:openstudiocoalition/OpenS…
macumber Mar 24, 2026
a44218c
Remove unused macros
macumber Mar 24, 2026
2124f1f
Add step to see if CPACK_POST_BUILD_SCRIPT is running before dmg is f…
macumber Mar 24, 2026
34a9c97
Only sleep if needed
macumber Mar 24, 2026
fa98316
Address copilot review comments
macumber Mar 29, 2026
10d403e
Merge pull request #864 from openstudiocoalition/remove_qt_ruby
jmarrec Mar 30, 2026
bcce366
Update to Qt 6.11.0
jmarrec Mar 23, 2026
4f445e8
‘void QCheckBox::stateChanged(int)’ deprecated -> `checkStateChanged()`
jmarrec Mar 23, 2026
523cc5e
Qt 6.11.0 actually has icu libs, but they are all versionned... Harco…
jmarrec Mar 23, 2026
226bce5
Copy v8_context_snapshot.bin for QtWebEngine
jmarrec Mar 23, 2026
9693c9e
Grab a few more extra libs for QtWebEngine 6.11: QmlWorkerScript and …
jmarrec Mar 23, 2026
57f8659
Warning: QLayout: Attempting to add QLayout "" to openstudio::Preview…
jmarrec Mar 23, 2026
c65a4f5
Warning: QObject::disconnect: wildcard call disconnects from destroye…
jmarrec Mar 23, 2026
3d38813
Warning: QLayout: Attempting to add QLayout "" to openstudio::EditorW…
jmarrec Mar 23, 2026
fd72cf1
More disconnect issues
jmarrec Mar 23, 2026
7d91cd8
Put back 6.11.0 as default version: reverted by mistake
jmarrec Mar 23, 2026
044611b
Remove AboutBox alignment: it no longer exists and prints issues to c…
jmarrec Mar 23, 2026
7371bb1
QScrollArea { background: #E6E6E6; } QSS rule used to make the viewpo…
jmarrec Mar 23, 2026
f07e3f2
Bump QT_VERSION in workflow
jmarrec Apr 8, 2026
ac1da81
Update QT_ARCH for linux for aqtinstall
jmarrec Apr 9, 2026
1ea2707
TODO: TEMPORARY: aqtinstall on windows: need to pip install from master
jmarrec Apr 9, 2026
414700a
clang-format 18 for SpaceTypesGridView
jmarrec Apr 9, 2026
cfdb5f8
Adjust QT_INSTALL_DIR path
jmarrec Apr 9, 2026
cc3c064
Merge pull request #868 from openstudiocoalition/bump_qt_6_11_0
jmarrec Apr 12, 2026
3b2e877
@Ski90Moo has signed the CLA in openstudiocoalition/OpenStudioApplica…
github-actions[bot] May 10, 2026
76e0138
Add docker build container for AI agents to use (#870)
macumber May 25, 2026
25bf54d
Future proof pinging bcl.nlr.gov instead of bcl.nrel.gov (#856)
jmarrec Jun 2, 2026
d640698
Update prerelease to rc1
macumber Jun 12, 2026
febd791
Merge remote-tracking branch 'origin/master' into develop
macumber Jun 20, 2026
ef230a7
Complete language support to all GUI tabs (#876) (#877)
macumber Jun 21, 2026
60635e0
Update actions to avoid warnings (#884)
macumber Jun 21, 2026
a2af322
Refactor with architecture and developer documentation (#865)
macumber Jun 21, 2026
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
  •  
  •  
  •  
41 changes: 41 additions & 0 deletions .github/instructions/cpp-refactoring.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
description: "Use when moving, renaming, or refactoring C++ classes in src/. Covers include order, git mv, shared_ptr vs raw pointer, and C++ covariance rules."
applyTo: "src/**/*.cpp,src/**/*.hpp,src/**/CMakeLists.txt"
---

# C++ Refactoring Guidelines

## Include Order

Within every `.cpp` and `.hpp`, includes must appear in this order, with a blank line between each group:

```cpp
// 1. Own header (in .cpp only — the header this .cpp implements)
#include "ThisClass.hpp"

// 2. Same-directory relative includes
#include "Sibling.hpp"

// 3. Cross-directory repo includes
#include "../other_module/Foo.hpp"

// 4. OpenStudio SDK includes
#include <openstudio/model/Model.hpp>

// 5. Qt, Boost, and system includes
#include <QWidget>
#include <boost/optional.hpp>
#include <memory>
```

Do not mix groups. When adding a new include, place it in the correct group in the same edit — not as a deferred cleanup. Within each group, sort includes alphabetically by filename.

---

## Naming

When introducing an interface method, choose its name before writing any code:

- Prefer names that describe the *concept*, not the return type (`currentDocument`, not `currentBaseDocument`).
- Check for name collisions with existing virtuals in the inheritance chain before committing.
- A rename that touches 100+ files is expensive; settle the name at design time.
314 changes: 314 additions & 0 deletions .github/instructions/docker-build.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,314 @@
---
description: "Use when building, compiling, testing, or validating C++ changes; fixing build errors or compilation failures; running make configure, make build, make test, or cppcheck; working with CMake, Conan, Docker, or Makefile; or refactoring C++ code. Covers how to compile and test the project inside the Docker build container."
applyTo: "src/**/*.cpp,src/**/*.hpp,src/**/CMakeLists.txt,docker/**,Makefile"
---

# Building and Testing with the Docker Build Container

Production release builds are made on native CI machines. The Docker container is used for local development validation — it provides a consistent environment without needing to install Qt, Conan, or the OpenStudio SDK locally.

When using the Docker container builds, use `make` targets from the project root to build, test, and validate changes. The Makefile handles all further Docker invocations.

---

## Prerequisites

Docker must be running. On a fresh checkout, build the image once:

```bash
make image
```

This is slow (~20 min) because it bakes Qt 6.11.0 and the OpenStudio SDK into
the image. Re-run only when `docker/Dockerfile` changes.

---

## Typical workflow

### First time after checkout (or after `make clean`)

```bash
make configure # Conan install + cmake configure
make build # Compile
make test # Run all CTest tests
```

### Incremental build after editing source files

```bash
make build # Recompiles only changed translation units (ccache accelerated)
make test # Re-runs tests
```

### After changing `conanfile.py` or `CMakeLists.txt`

```bash
make configure # Re-run conan + cmake before building
make build
make test
```

---

## All available targets

| Target | When to use |
|--------|-------------|
| `make image` | Rebuild the Docker image (Dockerfile changed) |
| `make configure` | After checkout, after `conanfile.py`/`CMakeLists.txt` changes, or after `make clean` |
| `make build` | After any source file edit |
| `make test` | Validate correctness; starts Xvfb at `:99`, runs `ctest -j4 --test-timeout 120 --exclude-regex GithubRelease` |
| `make cppcheck` | Static analysis; output written to `build/cppcheck-results.txt` |
| `make run-app` | Launch the compiled OpenStudioApp GUI (requires WSLg/Linux/macOS+XQuartz) |
| `make check-build` | Bash shell with all volumes mounted - inspect build artifacts, run commands against your actual source and build output |
| `make attach` | `/bin/sh` with **no volumes mounted** - inspect the image itself (e.g. verify Qt at `/opt/Qt`, check `/opt/openstudio-sdk`) |
| `make clean` | Wipe the build volume (keeps Conan + ccache volumes); alias for `build-clean` |
| `make build-clean` | Destroy and recreate the build volume (empty slate) |
| `make image-clean` | Remove the Docker image |
| `make volumes-clean` | Destroy all named volumes - build, Conan, and ccache (forces complete rebuild) |

---

## Agent Instructions

The sections below contain behavioral rules for the agent. Follow "Platform-specific command execution" to choose the right syntax, then refer to "Common build validation rules" and "Validating a refactoring step" for testing requirements. All remaining sections are reference documentation.

---

## Platform-specific command execution

**Always determine the user's OS before generating `make` commands.** Look for these indicators:

| OS | Indicators |
|----|-----------|
| **Windows** | PowerShell prompts, Windows paths like `C:\`, explicit mention of Windows |
| **Linux** | Unix paths like `/home/`, bash prompts, explicit mention of Linux/Ubuntu/Debian/Fedora |
| **macOS** | Unix paths like `/Users/`, explicit mention of macOS/Mac |

**If the OS is unknown**, ask the user before generating commands.

---

## Common build validation rules

`make build` and `make test` can run for many minutes. Follow these rules to avoid getting stuck not knowing whether a command finished.

**Always capture the exit code explicitly** by appending `; echo "EXIT: $?"` (bash/Linux/macOS) or ``; echo 'EXIT: '`$?`` (PowerShell/Windows) so the final line of output is unambiguous even when stdout is truncated.

**Never pipe Docker commands** - piping (e.g. `| tail -50`, `| grep`) causes SIGPIPE (exit 141) when the consumer exits before Docker finishes. Redirect stderr into stdout with `2>&1` instead.

**Completion markers to look for in output:**

| Command | Success indicator |
|---------|-------------------|
| `make configure` | `Install finished successfully` + `conan install exit code: 0` |
| `make build` | `cmake --build` exits and `EXIT: 0` is printed |
| `make test` | `100% tests passed` or `EXIT: 0` printed after ctest |

**If output is truncated** and the completion marker is not visible, call `get_terminal_output` again immediately. Continue polling every 30 seconds. Only conclude the command is still running (and stop polling) if no new output has appeared for 5 consecutive minutes.

---

## Running make commands on Windows

All `make` targets require a Linux-compatible shell because they invoke Docker
with bash process substitution and Unix-style paths. On Windows, always run
`make` commands inside **WSL** (Windows Subsystem for Linux), not in
PowerShell or Command Prompt.

### Command syntax

Wrap all `make` commands in `wsl bash -lc`. Set `PROJECT_ROOT` to the WSL path before running commands:

```powershell
$env:PROJECT_ROOT = '/mnt/c/repos/osapp'
wsl bash -lc "cd $env:PROJECT_ROOT && make configure"
wsl bash -lc "cd $env:PROJECT_ROOT && make build"
wsl bash -lc "cd $env:PROJECT_ROOT && make test"
```

**Path conversion:** Windows path `c:\repos\osapp` maps to `/mnt/c/repos/osapp` in WSL. To convert any Windows path to WSL, replace the drive letter and colon with `/mnt/<drive>` and flip backslashes to forward slashes (e.g. `D:\projects\osapp` → `/mnt/d/projects/osapp`).

**Windows command template** combining exit-code capture and stderr redirect:

```powershell
$env:PROJECT_ROOT = '/mnt/c/repos/osapp'
wsl bash -lc "cd $env:PROJECT_ROOT && make <target> 2>&1; echo 'EXIT: '`$?"
```

Alternatively, open a persistent WSL session and run commands directly there. Never run `make` targets in PowerShell or `cmd.exe`.

### Prerequisites: Install Ubuntu 22.04 in WSL

This project's local Windows workflow should match the Linux CI environment (`ubuntu-22.04`).

1. In PowerShell, install Ubuntu 22.04 in WSL:
```powershell
wsl --install -d Ubuntu-22.04
```
1. Confirm it is installed:
```powershell
wsl -l -v
```
1. Set Ubuntu-22.04 as the default distro:
```powershell
wsl --set-default Ubuntu-22.04
```
1. Start Docker Desktop on Windows.
1. In Docker Desktop, enable WSL integration for Ubuntu-22.04:
- Open **Settings > Resources > WSL Integration**.
- Turn on **Enable integration with additional distros**.
- Enable **Ubuntu-22.04**.
1. In PowerShell, verify Docker Desktop is reachable from WSL:
```powershell
wsl bash -lc 'docker version'
```
1. In PowerShell, run a container pull test from WSL:
```powershell
wsl bash -lc 'docker pull ubuntu:22.04'
```
1. Open the distro:
```powershell
wsl
```
1. In Ubuntu, update package indexes:
```bash
sudo apt update
```
1. Install Make:
```bash
sudo apt install -y make
```
1. Verify installation:
```bash
make --version
```
1. Verify Docker access in Ubuntu:
```bash
docker info
```

If `docker info` fails with a permission error on `/var/run/docker.sock`, run:

```bash
sudo usermod -aG docker $USER
newgrp docker
docker info
```

---

## Running make commands on Linux/macOS

On native Linux or macOS, run `make` targets directly in your terminal without any WSL wrapper.

### Command syntax

Navigate to the project root and run commands directly:

```bash
cd /path/to/osapp
make configure
make build
make test
```

**Command template with exit code capture:**

```bash
cd /path/to/osapp && make <target>; echo "EXIT: $?"
```

### Prerequisites

**Linux (Ubuntu/Debian):**
- Docker must be installed and running
- Install `make`: `sudo apt install make`
- Add user to docker group: `sudo usermod -aG docker $USER && newgrp docker`

**macOS:**
- Docker Desktop must be installed and running
- `make` is pre-installed via Xcode Command Line Tools

**macOS GUI testing (optional):**

To use `make run-app` on macOS:
1. Install XQuartz: `brew install --cask xquartz`
2. Open XQuartz preferences → enable "Allow connections from network clients"
3. Restart XQuartz
4. Set `DISPLAY=host.docker.internal:0` before running `make run-app`

---

## Validating a refactoring step

After every logical change (e.g. one item from `developer/doc/refactoring-ideas.md`):

1. **Determine which targets to run** based on what changed:
- Source files only (`.cpp`/`.hpp`) → `make build && make test`
- Added or removed source files from a `CMakeLists.txt` → `make configure && make build && make test`
- Changed `conanfile.py`, `CMakeLists.txt` contents, or any `*.cmake` file → `make configure && make build && make test`

If changes fall into multiple categories, use the highest-priority category that applies, where priority order is: **(1)** `conanfile.py`/`CMakeLists.txt`/`*.cmake` changes → **(2)** `CMakeLists.txt` source additions/removals → **(3)** source-only. When in doubt, run `make configure && make build && make test`.

1. **`make build` must exit 0 with zero warnings.** The project builds with `-Werror`; any compiler warning is a build failure. Fix all warnings before proceeding.

1. **`make test` must exit 0 with no regressions.** All tests that passed before the change must still pass. The following tests are known baseline failures in the Docker environment and are **not** regressions:

| Test | Reason |
|------|--------|
| `ModelEditorFixture.MorePath_Conversions` | Tests Windows-style backslash path conversion; always fails on Linux |
| `OpenStudioLibFixture.AnalyticsHelperSecrets` | Requires analytics API secrets injected by CI; always empty in local builds |

`GithubRelease*` tests are excluded entirely by the Makefile (`--exclude-regex GithubRelease`) and are not part of the baseline. If `make test` fails, read `build/Testing/Temporary/LastTest.log` to identify which test failed and why before attempting a fix.

If a test fails that is not in the known-baseline table and does not appear related to your change, re-run `make test` once to rule out flakiness. If it fails again, check `git log` on that test file. If the test was already failing on `main` before your change, document it and continue; otherwise treat it as a regression to fix.

1. **Optionally run `make cppcheck`** after any non-trivial structural change (new class, moved logic, changed ownership patterns). Review `build/cppcheck-results.txt` for new issues introduced by the change.

Do not proceed to the next refactoring step until steps 2 and 3 succeed.

---

## Named Docker volumes

Three named volumes persist data between runs:

| Volume | Mounted at | Contents |
|--------|-----------|----------|
| `osapp-build` | `/workspace/build` | CMake build tree, compiled objects, Ninja database |
| `osapp-conan-cache` | `/conan-cache` | Downloaded Conan packages (`CONAN_HOME`) |
| `osapp-ccache` | `/ccache` | ccache object cache (`CCACHE_DIR`) |

The build volume shadows the host `build/` directory - build output never lands on the host filesystem directly. Use `make check-build` to inspect volume contents interactively. `make clean` / `make build-clean` wipes only `osapp-build`; Conan and ccache volumes are preserved. `make volumes-clean` destroys all three.

---

## Reading build output

Build artifacts and logs land in `build/` (git-ignored). Key paths inside the container (mapped to the same path on the host):

| Path | Contents |
|------|----------|
| `build/compile_commands.json` | Compilation database (used by cppcheck and clangd) |
| `build/Testing/Temporary/LastTest.log` | CTest output from the most recent run |
| `build/cppcheck-results.txt` | Static analysis output from `make cppcheck` |

---

## Troubleshooting

**`make configure` fails with a Conan error about a missing package**
Run `make volumes-clean` then `make configure` again to rebuild the Conan cache from scratch.

**`make image` fails to pull `ubuntu:22.04`**
Docker Desktop cannot reach `docker.io`. Restart Docker Desktop or check proxy/VPN settings. Run `docker pull ubuntu:22.04` to confirm connectivity before retrying.

**Tests fail due to a missing display**
The container includes `xvfb`; `make test` starts a dedicated Xvfb process at `DISPLAY=:99` before invoking ctest, then kills it afterward. If running ctest manually inside `make check-build`, start Xvfb first:
```bash
Xvfb :99 -screen 0 1280x1024x24 -ac &
export DISPLAY=:99
cd build && ctest -j4 --output-on-failure --test-timeout 120 --exclude-regex GithubRelease
```
18 changes: 18 additions & 0 deletions .github/instructions/pr-review.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
description: "Use when reviewing pull requests, conducting code review, or checking a diff for correctness. Covers documentation accuracy checks for developer/doc/."
---

# Pull Request Review Guidelines

On every PR review, verify documentation and comments are consistent with the code changes:

**`developer/doc/` docs**
- `CMakeLists.txt` changed → check the corresponding `libraries/*.md` for stale dependency tables or target names; check `architecture.md` dependency graph.
- Class added/moved/deleted → check library doc's Key Classes section is accurate and the header has a `/** */` doc comment.

**Inline comments**
- Significant class added or refactored (`src/**/*.hpp`) → `/** */` comment above the class must exist, describe current responsibility, and contain no stale references.
- Workflow added or modified (`.github/workflows/*.yml`) → `#` comment block at top must accurately reflect purpose, triggers, and required secrets.
- CI script added or modified (`ci/*.sh`, `ci/*.py`, `ci/*.qs`) → header comment must accurately describe usage, arguments, and exit codes.

> Full standards: [`.github/prompts/update-docs.prompt.md`](../prompts/update-docs.prompt.md)
Loading
Loading