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
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ jobs:
- name: Windows x64
os: windows-latest
rid: win-x64
artifact: SimForge-0.4.0-windows-x64
artifact: SimForge-0.7.0-windows-x64
- name: Linux x64
os: ubuntu-latest
rid: linux-x64
artifact: SimForge-0.4.0-linux-x64
artifact: SimForge-0.7.0-linux-x64
- name: macOS arm64
os: macos-14
rid: osx-arm64
artifact: SimForge-0.4.0-macos-arm64
artifact: SimForge-0.7.0-macos-arm64

steps:
- name: Check out repository
Expand Down
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,32 @@
# Changelog

## 0.7.0 - 2026-09-01

- Added a live Circuit Assistant designed for people who do not know C++ yet.
- Added ordered, actionable diagnostics for missing controllers, sensor power, signal wiring, empty sketch pins, unused outputs, incomplete LED loops, and unsafe LED paths.
- Added beginner-friendly explanations for common sketch diagnostics.
- Added complete starter sketches for analog sensors, HC-SR04, and DHT11 circuits.
- Increased regression coverage to 52 tests, including Windows CRLF sketch parsing.

## 0.6.0 - 2026-09-01

- Connected live analog, pulse, distance, temperature, and humidity readings to simple Arduino `if/else` output rules.
- Added common sensor-variable and HC-SR04 distance-conversion recognition.
- Added D7 as a bidirectional controller pin and made automatic wiring follow the sketch's referenced pins.
- Added explicit diagnostics for sensor conditions that are too complex to simulate reliably.
- Added live sensor-to-output reaction feedback and clearer powered/wired sensor status.
- Increased regression coverage to 41 tests.

## 0.5.0 - 2026-08-31

- Expanded Arduino-style C++ analysis with constants, macros, built-in pin aliases, numeric logic levels, and input-only sketches.
- Added independent HIGH/LOW timing profiles so asymmetric blink sketches run correctly.
- Added A0 analog input paths and controller-ground references for practical sensor wiring.
- Replaced threshold-only sensor behavior with LDR divider, potentiometer ADC, HC-SR04 echo-time, and DHT11 sampling models.
- Allowed complete powered sensor circuits to run without requiring an LED path.
- Removed an incompatible debug-tools dependency that prevented desktop debug builds.
- Increased regression coverage from 21 to 36 tests.

## 0.4.0 - 2026-08-25

- Hardened Arduino sketch analysis so comments and string literals are ignored.
Expand Down
39 changes: 34 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
# SimForge Circuit Studio

SimForge is a modern desktop workspace for building, inspecting, and simulating electronic circuits. Version 0.4.0 includes an English-first interface, a searchable component library, pin-aware wiring, safer Arduino-style sketch analysis, circuit safety checks, and a polished engineering canvas.
SimForge is a modern desktop workspace for building, inspecting, and simulating electronic circuits. Version 0.7.0 adds a beginner-focused Circuit Assistant that explains missing wiring, unsafe LED paths, pin mismatches, and C++ sketch problems with actionable fixes.

## Highlights

- Interactive component palette and gridded circuit workspace
- Visible, type-aware pins and guided wire creation
- Contextual inspector for component properties
- Arduino-style `pinMode` and `digitalWrite` sketch parsing
- Arduino constants, `#define`, `LED_BUILTIN`, `analogRead`, `digitalRead`, and `pulseIn` recognition
- Live sensor-driven `if/else` output rules, including common HC-SR04 distance conversion
- Non-linear LDR response, analog ADC values, HC-SR04 echo timing, and DHT11 sampling limits
- Live circuit status, topology validation, and short-circuit protection
- Live Circuit Assistant with ordered wiring fixes and complete beginner C++ examples
- Keyboard-accessible controls and clear simulation feedback
- Native desktop builds for Windows, Linux, and macOS

Expand All @@ -31,25 +35,50 @@ Run the desktop application:
dotnet run --project SimForge/SimForge.csproj
```

Verify that the native UI can initialize and open its main window:

```bash
dotnet run --project SimForge/SimForge.csproj -- --smoke-test
```

## Sensor-driven sketches

SimForge runs a deterministic Arduino-style subset rather than invoking a native compiler. A sensor read can be used directly or assigned to a variable before a simple `if/else`:

```cpp
void setup() { pinMode(13, OUTPUT); }

void loop() {
int light = analogRead(A0);
if (light > 600) {
digitalWrite(13, HIGH);
} else {
digitalWrite(13, LOW);
}
}
```

Equivalent `pulseIn`, HC-SR04 distance, and DHT11 temperature conditions are supported. The editor reports a diagnostic instead of silently approximating unsupported complex expressions.

## Create platform builds

Each command creates a self-contained application that does not require a separate .NET installation on the target computer.

```bash
# Windows x64
dotnet publish SimForge/SimForge.csproj -c Release -r win-x64 --self-contained true -o artifacts/SimForge-0.4.0-windows-x64
dotnet publish SimForge/SimForge.csproj -c Release -r win-x64 --self-contained true -o artifacts/SimForge-0.7.0-windows-x64

# Linux x64
dotnet publish SimForge/SimForge.csproj -c Release -r linux-x64 --self-contained true -o artifacts/SimForge-0.4.0-linux-x64
dotnet publish SimForge/SimForge.csproj -c Release -r linux-x64 --self-contained true -o artifacts/SimForge-0.7.0-linux-x64

# macOS Apple Silicon
dotnet publish SimForge/SimForge.csproj -c Release -r osx-arm64 --self-contained true -o artifacts/SimForge-0.4.0-macos-arm64
dotnet publish SimForge/SimForge.csproj -c Release -r osx-arm64 --self-contained true -o artifacts/SimForge-0.7.0-macos-arm64
```

To create a signed macOS application bundle and upload-ready ZIP:

```bash
./scripts/package-macos.sh 0.4.0
./scripts/package-macos.sh 0.7.0
```

On Linux, mark the executable as runnable if the archive tool does not preserve permissions:
Expand Down
Loading
Loading