feat: named case-result load combinations with full GUI support

Snapshots the current development tree, headlined by proper load
combinations (user request): a reusable LoadCombination entity of
weighted completed static-case results (e.g. 1.2xDead + 1.6xLive).

- core: LoadCombination/LoadCombinationItem entities, Project
  integration (lookup, unique ids, reference validation)
- services: combinations.py (linear superposition + envelope),
  exported via services __init__
- commands: undoable Add/Delete/Update for combinations
- GUI: Load Combinations manager dialog, Run-dialog evaluation,
  envelope display in Results panel, Combinations tab in Table dock
- tests: unit coverage (validation, math, error paths) + integration
  superposition check vs a single factored run
This commit is contained in:
smill 2026-09-11 13:19:59 -04:00
commit f361fee969
560 changed files with 178701 additions and 0 deletions

56
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View file

@ -0,0 +1,56 @@
name: Bug report
description: Report a defect in OTKO
labels: ["bug"]
body:
- type: textarea
id: what-happened
attributes:
label: What happened?
description: A clear and concise description of the bug.
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
placeholder: |
1. Open a new project
2. Click 'Draw Frame'
3. ...
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
validations:
required: true
- type: input
id: version
attributes:
label: OTKO version
placeholder: 0.0.1
validations:
required: true
- type: input
id: python
attributes:
label: Python version
placeholder: 3.11.7
validations:
required: true
- type: dropdown
id: os
attributes:
label: Operating System
options:
- Windows
- macOS
- Linux
validations:
required: true
- type: textarea
id: logs
attributes:
label: Console output / traceback
render: shell

View file

@ -0,0 +1,31 @@
name: Feature request
description: Propose a new feature or improvement
labels: ["enhancement"]
body:
- type: textarea
id: motivation
attributes:
label: Motivation
description: What engineering problem does this solve?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
validations:
required: true
- type: dropdown
id: phase
attributes:
label: Roadmap phase this fits into
options:
- "Phase 1 — Core Model"
- "Phase 2 — OpenSees Service"
- "Phase 3 — 3D Viewport"
- "Phase 4 — Modeling Tools"
- "Phase 5 — Properties"
- "Phase 6 — Analysis Pipeline"
- "Phase 7 — Post-processing"
- "Phase 8 — Earthquake Engineering"
- "Out of scope / new"