Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
673cdd3
feat(backend): add in-memory geometry repo and ops service stubs
Obayne Sep 24, 2025
00c4d87
feat(backend): add DTO models to support repo/service stubs
Obayne Sep 24, 2025
acf1ff8
chore(backend): ruff/black clean repo + ops service stubs
Obayne Sep 24, 2025
750cf9b
chore(backend): adjust module docstring/import order to satisfy E402
Obayne Sep 24, 2025
ad4f26c
docs(backend): add PR description for repo/service stubs
Obayne Sep 24, 2025
f4052e2
feat: Enhanced CLI automation and Layer Intelligence system
Obayne Nov 22, 2025
917511f
feat: Communication log system and comprehensive project documentation
Obayne Nov 22, 2025
2272f3d
security: Update gitignore to prevent sensitive file commits
Obayne Nov 22, 2025
a0489a1
docs(cli): Clarify CLI tools as testing/automation utilities
Obayne Dec 1, 2025
4f723c5
test(backend): Add comprehensive backend test coverage
Obayne Dec 1, 2025
63239cc
devops: Complete CI/CD and security improvements
Obayne Dec 1, 2025
924b798
feat: Add comprehensive DevOps improvements
Obayne Dec 1, 2025
85eff32
Merge branch 'main' into feat/backend-geom-repo-service-clean
Obayne Dec 1, 2025
8b1952f
docs: Comprehensive README and documentation overhaul
Obayne Dec 1, 2025
4bb7f03
chore: Update gitignore to exclude status reports and run metadata
Obayne Dec 1, 2025
529b1ab
chore: Add DevOps completion roadmap and fix communication logs
Obayne Dec 1, 2025
7c106d9
fix: Fix all markdown linting errors (MD022, MD032, MD040)
Obayne Dec 1, 2025
2479cbf
Add missing tests and fix CI/build workflows
Obayne Dec 1, 2025
c838dfc
feat: Add comprehensive DevOps automation and security workflows
Obayne Dec 2, 2025
bd04efa
fix: Remove strict coverage threshold temporarily
Obayne Dec 2, 2025
4dba35a
feat: Fix tests, add integration tests, complete operational docs
Obayne Dec 2, 2025
a72a634
feat: Add batch analysis CLI agent and Copilot integration guide
Obayne Dec 2, 2025
f2037a7
fix: Batch analysis path resolution + automated analysis results
Obayne Dec 2, 2025
96d47fc
feat: Fully automated DevOps pipeline with continuous workflows
Obayne Dec 2, 2025
1e8bb8c
docs: Add continuous workflow guide - zero touch automation
Obayne Dec 2, 2025
7d32636
feat: Add mobile development support via GitHub Codespaces
Obayne Dec 2, 2025
9281a47
fix: Add consistent permissions across all workflow agents
Obayne Dec 2, 2025
8116884
fix: Add consistent permissions across all workflow agents
Obayne Dec 2, 2025
6cd5714
feat: Add test fixtures structure for real DXF testing
Obayne Dec 2, 2025
a274e3e
docs: Automated DXF analysis [skip ci]
github-actions[bot] Dec 2, 2025
8526f6b
feat: Add unified multi-format CAD file conversion system
Obayne Dec 2, 2025
5fcd42b
docs: Automated DXF analysis [skip ci]
github-actions[bot] Dec 2, 2025
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
37 changes: 37 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"name": "AutoFire LV CAD Development",
"image": "mcr.microsoft.com/devcontainers/python:3.11",
"features": {
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"postCreateCommand": "pip install -r requirements.txt && pip install -r requirements-dev.txt",
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance",
"charliermarsh.ruff",
"ms-python.black-formatter",
"GitHub.copilot",
"GitHub.copilot-chat"
],
"settings": {
"python.defaultInterpreterPath": "/usr/local/bin/python",
"python.linting.enabled": true,
"python.linting.ruffEnabled": true,
"python.formatting.provider": "black",
"editor.formatOnSave": true,
"files.trimTrailingWhitespace": true
}
}
},
"forwardPorts": [
5000,
8000
],
"remoteUser": "vscode",
"mounts": [
"source=${localWorkspaceFolder}/Projects,target=/workspaces/AutoFireBase/Projects,type=bind,consistency=cached"
]
}
59 changes: 59 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# AutoFire Environment Configuration Template
# Copy this file to .env and fill in your actual values
# NEVER commit .env file to version control!

# =============================================================================
# OpenAI API Configuration (if using AI features)
# =============================================================================
# Get your API key from: https://platform.openai.com/api-keys
# OPENAI_API_KEY=sk-proj-...your-key-here...

# =============================================================================
# GitHub Configuration (for automation/CLI tools)
# =============================================================================
# Personal access token for GitHub API access
# Create at: https://github.com/settings/tokens
# GITHUB_TOKEN=ghp_...your-token-here...

# =============================================================================
# Development Settings
# =============================================================================
# Set to 'development', 'staging', or 'production'
# ENVIRONMENT=development
# AUTOFIRE_ENV=development

# Enable debug logging (true/false)
# DEBUG=false

# =============================================================================
# Error Tracking & Monitoring (Sentry)
# =============================================================================
# Sentry DSN for error tracking (optional, free tier: 5k events/month)
# Get from: https://sentry.io/ β†’ Create Project β†’ Copy DSN
# SENTRY_DSN=https://your-key@o1234567.ingest.sentry.io/1234567

# Sentry environment (defaults to AUTOFIRE_ENV or 'production')
# SENTRY_ENVIRONMENT=production

# =============================================================================
# Application Settings
# =============================================================================
# Application data directory
# APP_DATA_DIR=./data

# Log level: DEBUG, INFO, WARNING, ERROR, CRITICAL
# LOG_LEVEL=INFO

# =============================================================================
# Database/Storage (if applicable)
# =============================================================================
# DATABASE_URL=sqlite:///./autofire.db

# =============================================================================
# Security Notes
# =============================================================================
# 1. NEVER commit .env files to version control
# 2. Add .env to .gitignore (already done)
# 3. Use different keys for development/production
# 4. Rotate keys regularly
# 5. Use environment variables in CI/CD instead of .env files
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

3 changes: 1 addition & 2 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ labels: enhancement
## Rationale

## Acceptance Criteria
- [ ]
- [ ]

## Notes

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

1 change: 0 additions & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,3 @@ Closes #<number>
## Checklist
- [ ] Follows style (Black/Ruff)
- [ ] Docs updated (README/docs/* if needed)

29 changes: 29 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
version: 2
updates:
# Python dependencies
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 10
labels:
- "dependencies"
- "type: chore"
commit-message:
prefix: "chore(deps)"
assignees:
- "Obayne"

# GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
labels:
- "dependencies"
- "type: chore"
- "area: ci"
commit-message:
prefix: "chore(ci)"
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] });

120 changes: 120 additions & 0 deletions .github/workflows/automated-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
name: Automated DXF Analysis

permissions:
contents: write
pull-requests: write
issues: write
actions: read

on:
push:
branches: ["**"]
paths:
- "Projects/**/*.dxf"
- "tests/fixtures/dxf/**/*.dxf"
- "autofire_layer_intelligence.py"
- "tools/cli/**"
pull_request:
branches: ["**"]
schedule:
# Run daily at 2 AM UTC
- cron: "0 2 * * *"
workflow_dispatch:

jobs:
batch-analysis:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

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

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install -r requirements-dev.txt

- name: Run Batch DXF Analysis
run: |
python tools/cli/batch_analysis_agent.py --analyze
continue-on-error: true

- name: Upload Analysis Reports
if: always()
uses: actions/upload-artifact@v4
with:
name: dxf-analysis-reports
path: docs/analysis/
retention-days: 90

- name: Commit Analysis Reports
if: github.event_name != 'pull_request'
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add docs/analysis/
git diff --staged --quiet || git commit -m "docs: Automated DXF analysis [skip ci]"
git push || echo "No changes to push"

coverage-optimization:
runs-on: ubuntu-latest
needs: batch-analysis
if: github.event_name != 'pull_request'
steps:
- uses: actions/checkout@v4

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

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

- name: Run Coverage Optimization
run: |
# Extract devices from analysis and run optimization
python tools/cli/intel_cli.py optimize --devices '[]'
continue-on-error: true

geometry-validation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

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

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

- name: Validate Geometry Operations
run: |
# Test trim operation
python tools/cli/geom_ops.py trim \
--segment '{"type":"line","start":[0,0],"end":[10,10]}' \
--cutter '{"type":"line","start":[5,0],"end":[5,10]}' \
--format json

# Test extend operation
python tools/cli/geom_ops.py extend \
--segment '{"type":"line","start":[0,0],"end":[5,5]}' \
--target '{"type":"line","start":[10,0],"end":[10,10]}' \
--format json

# Test intersect operation
python tools/cli/geom_ops.py intersect \
--segment1 '{"type":"line","start":[0,0],"end":[10,10]}' \
--segment2 '{"type":"line","start":[0,10],"end":[10,0]}' \
--format json
continue-on-error: true
Loading