Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
7d67900
ci: make Ubuntu apt installs robust across runner images (try multipl…
Obayne Sep 30, 2025
7722efc
ci: set QT_QPA_PLATFORM=minimal on Windows and move sample zips to ar…
Obayne Sep 30, 2025
d007c83
ci: make quick-tests resilient to missing test files and prefer headl…
Obayne Sep 30, 2025
4d250b9
ci: make pytest args assembly robust across shells (use single string…
Obayne Sep 30, 2025
29dbbd7
docs: reference headless startup smoke-test (quick-tests workflow use…
Obayne Sep 30, 2025
471bb72
fix(db): restore db/connection.py (clean implementation)
Obayne Sep 30, 2025
0a4474e
ci: checkout submodules recursively so AutoFireBase/tests/ are available
Obayne Sep 30, 2025
dbb8be3
ci: trigger quick-tests run after adding submodule checkout
Obayne Sep 30, 2025
99c0dd4
ci: trigger quick-tests run after adding submodule checkout
Obayne Sep 30, 2025
01e2dff
fix: add missing test_headless_startup.py and remove duplicate test e…
Obayne Sep 30, 2025
0cad3ea
ci: simplify quick-tests to run only headless startup smoke test; ins…
Obayne Sep 30, 2025
81d5bff
ci: trigger quick-tests after simplifying to headless startup
Obayne Sep 30, 2025
372c1a2
ci: avoid checking out submodules (runner failed to fetch AutoFireBas…
Obayne Sep 30, 2025
868dbd2
ci: trigger quick-tests after removing submodule checkout
Obayne Sep 30, 2025
38380a3
ci: trigger quick-tests after removing submodule checkout
Obayne Sep 30, 2025
a1e0e45
Update AutoFireBase
Obayne Sep 30, 2025
3a5f8fd
Add runs.json file
Obayne Sep 30, 2025
23ab083
ci: avoid recursive submodule checkout in quick-tests (submodules: fa…
Obayne Sep 30, 2025
2bf6fe6
ci: install PySide6 and pytest-qt for headless tests
Obayne Sep 30, 2025
5178c22
ci: add PySide6 and pytest-qt to requirements-dev.txt for headless tests
Obayne Sep 30, 2025
8b925dc
ci: apt + minimal pip for quick-tests (install extra EGL libs on ubun…
Obayne Oct 1, 2025
ba99d87
ci: quick-tests use minimal requirements + pip cache; add requiremen…
Obayne Oct 1, 2025
34c41d0
Clean up duplicate AutoFireBase directory and expand settings dialog
Obayne Oct 3, 2025
ec1fa0c
rescue/golden-path: Initialize baseline with database
Obayne Oct 3, 2025
cea63ee
feat: Complete project restructure to modular architecture
Obayne Oct 3, 2025
aa132f7
docs: Establish MASTER_SPECIFICATION.rtf as authoritative scope of wo…
Obayne Oct 3, 2025
d56b3ae
docs: Establish comprehensive continuous development practices
Obayne Oct 3, 2025
63ec1d9
docs: Add comprehensive PROJECT_SPECIFICATION.md
Obayne Oct 3, 2025
d7839b8
docs: Add comprehensive command references for development and CI/CD
Obayne Oct 3, 2025
134e1c8
docs: Add complete VS Code setup guide and automation for non-program…
Obayne Oct 3, 2025
7da0836
MASSIVE ENHANCEMENT: Complete Professional Fire Alarm CAD System
Obayne Oct 4, 2025
d4aeaa6
WIP: System configuration and database improvements
Obayne Oct 4, 2025
bbb84e9
Fix panel selection dialog font visibility
Obayne Oct 4, 2025
31b0cd4
Fix panel selection font visibility in System Builder
Obayne Oct 4, 2025
dfdbe86
Fix panel selection font visibility
Obayne Oct 4, 2025
885cb7d
PANEL VISIBILITY FIXED + PAPERSPACE HIDDEN
Obayne Oct 4, 2025
ac377eb
OSNAP test and fixes: intersection math, item source; public wrapper;…
Obayne Oct 9, 2025
f7a9d7a
feat: port snapping + auto-connect on placement; tag panel terminals …
Obayne Oct 16, 2025
aab7144
chore(tests): quarantine broken comprehensive_test; tidy calculations…
Obayne Oct 22, 2025
e868131
chore(format): run pre-commit fixes (ruff/black) and tidy comprehensi…
Obayne Oct 22, 2025
f0fbd9a
test: re-enable device catalog check (incremental comprehensive tests)
Obayne Oct 22, 2025
0510592
test: add database connectivity checks (incremental comprehensive tests)
Obayne Oct 22, 2025
74e96a0
ci: add GUI tests workflow; add GUI test marker/fixture; tidy transfo…
Obayne Oct 22, 2025
9557020
test(gui): add System Builder and Model Space GUI smoke tests (skippe…
Obayne Oct 22, 2025
f1e3617
Checkpoint from VS Code for coding agent session
Obayne Oct 22, 2025
ff6ccad
Make PySide6 optional in conftest and mark GUI tests properly
Copilot Oct 22, 2025
ae1f49b
Update CI workflow and documentation for GUI/non-GUI test separation
Copilot Oct 22, 2025
284c4bf
Add comprehensive test re-enabling summary documentation
Copilot Oct 22, 2025
2448f7b
ci: expand apt packages for headless Qt in gui-tests workflow
Obayne Oct 22, 2025
fbc0501
ci: install additional fonts and refresh fc-cache for gui-tests
Obayne Oct 23, 2025
09e7e22
ci: add quick GUI smoke workflow for PR feedback
Obayne Oct 23, 2025
da09108
ci: upload pytest output and comment PR with short log excerpt
Obayne Oct 23, 2025
917fd62
ci: pin PySide6, retry installs; always upload and comment pytest output
Obayne Oct 23, 2025
4c3601b
ci: seed CI DB in workspace and loader default; run ci_init_db before…
Obayne Oct 23, 2025
99809b2
ci: robust CI DB init + ensure qapp for GUI tests (conftest)
Obayne Oct 23, 2025
6bf7c57
ci(gui): pin PySide6, add headless deps, run DB init before GUI tests
Obayne Oct 23, 2025
348143d
ci(gui): trigger gui-tests workflow
Obayne Oct 23, 2025
da3207e
ci(gui): trigger gui-tests workflow
Obayne Oct 23, 2025
c35563d
chore: update tools/debug_show.py via copilot agent
Obayne Oct 23, 2025
be81cb5
CI: make seeded DB default for tests; fix debug_show linting
Obayne Oct 23, 2025
43bd125
Merge remote-tracking branch 'origin/copilot/vscode1761173822319' int…
Obayne Oct 23, 2025
16f70cf
CI: use PYTHONPATH and harden ci_init_db for reliable CI imports
Copilot Oct 23, 2025
400832f
ci: set PYTHONPATH and run ci_init_db in quick/gui workflows to fix i…
Obayne Oct 24, 2025
c647803
chore(ci): GUI workflow improvements and tools lint fixes
Obayne Oct 24, 2025
94cbd93
ci: add additional mesa/egl packages to GUI workflows to address libE…
Obayne Oct 24, 2025
5e2b0af
ci: normalize gui-tests workflow, non-fatal sanity check, added egl/g…
Obayne Oct 24, 2025
229ce2b
ci: replace corrupted gui-tests workflow with clean guarded GUI job
Obayne Oct 24, 2025
753ab12
ci: replace corrupted gui-tests.yml with clean guarded workflow
Obayne Oct 24, 2025
c075c00
ci: add ubuntu-24.04 guarded GUI workflow (sanity import + ldd diagno…
Obayne Oct 24, 2025
b4278f8
ci: add ubuntu-24.04 guarded GUI workflow (sanity import + ldd diagno…
Obayne Oct 24, 2025
2449b4a
ci: add ldd diagnostics + widen apt candidates for ubuntu-24 GUI tests
Obayne Oct 24, 2025
c2b86ac
ci: stronger PySide6 import check; add ci_import_check helper
Obayne Oct 24, 2025
80644ec
fix: clean up duplicate code and correct import paths
Obayne Oct 24, 2025
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
  •  
  •  
  •  
Binary file added .autofire_ci_test.db
Binary file not shown.
1 change: 0 additions & 1 deletion .github/ISSUE_TEMPLATE/backend_task.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,3 @@ body:
- label: Tests added (round-trip, CRUD)
- label: No module side effects
- label: ≤300 LOC changed

1 change: 0 additions & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,3 @@ labels: bug
## Logs/Screenshots

## Proposed Fix

1 change: 0 additions & 1 deletion .github/ISSUE_TEMPLATE/cad_core_task.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,3 @@ body:
- label: Unit tests cover new functions
- label: No UI imports or side effects
- label: ≤300 LOC changed

27 changes: 24 additions & 3 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,36 @@
---
name: Feature request
about: Suggest an enhancement
about: Suggest an enhancement aligned with master specification
labels: enhancement
---

## Summary

[Clear, actionable description of the feature]

## Master Specification Reference

[Reference specific section from docs/MASTER_SPECIFICATION.rtf that this implements]

## Rationale

[Why this feature is needed and how it aligns with product vision]

## Acceptance Criteria
- [ ]
- [ ] Feature implemented according to master specification
- [ ] Unit tests added/updated with good coverage
- [ ] Documentation updated (README/docs/* if needed)
- [ ] Manual testing confirms functionality
- [ ] No breaking changes to existing functionality
- [ ] Code follows Black/Ruff standards

## Technical Notes

[Implementation approach, dependencies, potential challenges]

## Notes
## Priority

- [ ] Critical (blocks other work)
- [ ] High (important for next release)
- [ ] Medium (nice to have)
- [ ] Low (future consideration)
1 change: 0 additions & 1 deletion .github/ISSUE_TEMPLATE/frontend_task.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,3 @@ body:
- label: Tests added/updated (signals, handlers)
- label: No side effects in imports
- label: ≤300 LOC changed

6 changes: 4 additions & 2 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ Briefly describe the change and why it’s needed.
Closes #<number>

## Changes
-
- [ ] Small, focused diff (≤300 lines)
- [ ] No unrelated code changes
- [ ] UI changes documented if applicable

## Testing
- [ ] Unit tests added/updated
Expand All @@ -17,4 +19,4 @@ Closes #<number>
## Checklist
- [ ] Follows style (Black/Ruff)
- [ ] Docs updated (README/docs/* if needed)

- [ ] Branch name follows feat/fix/chore/<name>
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
# Ignore major upgrades until maintainers review
# - match:
# dependency-name: "*"
# update-types: ["version-update:semver-major"]
1 change: 0 additions & 1 deletion .github/seed_issues.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,3 @@
"body": "Centralize key/mouse events in a small handler class and log via signal. Unit test for key mapping. See docs/SPRINT-01.md (Frontend / Input handling). DoD: Black/Ruff; tests; no side-effects."
}
]

1 change: 0 additions & 1 deletion .github/workflows/agent-orchestrator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,3 @@ jobs:
} else {
core.info(`PR already open: #${prs[0].number}`);
}

1 change: 0 additions & 1 deletion .github/workflows/assign-owners.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,3 @@ jobs:
const login = process.env.DEFAULT_PR_OWNER || owner;
core.info(`Assigning @${login} to PR #${pr.number}`);
await github.rest.issues.addAssignees({ owner, repo, issue_number: pr.number, assignees: [login] });

22 changes: 22 additions & 0 deletions .github/workflows/ci-agent.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: CI Agent

on:
push:
branches: ["*"]
pull_request:
branches: ["*"]
workflow_dispatch:

jobs:
agent:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Agent Status
run: |
echo "CI Agent active: $GITHUB_REF on $GITHUB_REPOSITORY"
# Add custom steps below for notifications, deployment, or other automation
38 changes: 30 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
name: CI

on:
push:
branches: [ "**" ]
pull_request:
branches: [ "**" ]
types: [opened, synchronize, reopened]
branches:
- "**"
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
runs-on: windows-latest
env:
PYTHONPATH: ${{ github.workspace }}
steps:
- uses: actions/checkout@v4

Expand All @@ -20,16 +22,36 @@ jobs:

- name: Install dependencies
run: |
python -m pip install --upgrade pip wheel
pip install -r requirements.txt
pip install pytest ruff black

- name: Make the repository importable for tools and tests
run: |
# Use PYTHONPATH to import the local package in-place to avoid
# running an editable build (setuptools may fail on a flat layout)
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
if [ -f requirements-dev.txt ]; then pip install -r requirements-dev.txt; fi
python -m pip install --upgrade wheel

- name: Auto-fix lint and format
run: |
ruff check --fix . || true
black . || true

- name: Lint (ruff)
run: ruff check .

- name: Format check (black)
run: black --check .

- name: Run tests
run: pytest -q
- name: Initialize test database for CI
if: always()
env:
PYTHONPATH: ${{ github.workspace }}
run: |
python tools/ci_init_db.py

- name: Run all tests
env:
PYTHONPATH: ${{ github.workspace }}
run: pytest -q -m "not gui"
70 changes: 70 additions & 0 deletions .github/workflows/gui-tests-fixed.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: gui-tests-fixed

on:
push:
paths:
- 'tests/**'
- '.github/workflows/gui-tests-fixed.yml'
branches: ['main']
pull_request:
paths:
- 'tests/**'
- '.github/workflows/gui-tests-fixed.yml'
branches: ['main']

jobs:
gui-tests:
name: GUI tests (Linux headless)
runs-on: ubuntu-latest
env:
PYTHONPATH: ${{ github.workspace }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.11

- name: Install system packages for headless Qt
run: |
sudo apt-get update -y
sudo apt-get install -y --no-install-recommends xvfb libegl1 libegl1-mesa libegl-mesa0 libegl1-mesa-drivers libglvnd0 libglx-mesa0 libglx0 libgl1-mesa-glx \
libgl1-mesa-dri libgles2-mesa libgbm1 libxrandr2 libx11-xcb1 libxcb1 libx11-6 libxkbcommon0 \
libxcb-xinerama0 libxss1 fontconfig fonts-dejavu-core fonts-dejavu-extra || true
sudo fc-cache -f -v || true

- name: Install Python dependencies (pytest-qt + PySide6)
run: |
python -m pip install --upgrade pip
python -m pip install -r requirements-dev-minimal.txt
python -m pip install pytest-qt
python -m pip install --prefer-binary --no-cache-dir "PySide6>=6.5,<7" || \
(sleep 3 && python -m pip install --prefer-binary --no-cache-dir "PySide6>=6.5,<7") || \
python -m pip install --no-deps --force-reinstall "PySide6>=6.5,<7"

- name: Check PySide6 import and set output
id: check_pyside6
run: |
if python -c "import importlib; importlib.import_module('PySide6')" >/dev/null 2>&1; then
echo "import_ok=true" >> "$GITHUB_OUTPUT"
else
echo "import_ok=false" >> "$GITHUB_OUTPUT"
fi

- name: Initialize test database for CI
run: |
export PYTHONPATH="${{ github.workspace }}"
python tools/ci_init_db.py || true

- name: Run GUI-marked tests
if: steps.check_pyside6.outputs.import_ok == 'true'
run: |
export QT_QPA_PLATFORM=offscreen
xvfb-run -s '-screen 0 1280x1024x24' pytest -q -m gui

- name: Skip GUI tests notice
if: steps.check_pyside6.outputs.import_ok != 'true'
run: |
echo 'PySide6 import failed — skipping GUI tests on this runner.'
Loading
Loading