SignalWeave is a cross-platform .NET 8 desktop and CLI alternative to BasicProp. The project is open source, runs on Windows, Linux, and macOS through Avalonia, and is built around a compatibility-first core so the original BasicProp workflows can be reproduced without locking the project to a single OS.
Current status: the checked-in BasicProp 1.3 parity checklist is fully closed, with local probe-backed sign-off and a verified remote GitHub publish-matrix run.
Rebuilding every BasicProp screen and workflow in one pass would produce a brittle prototype. SignalWeave instead starts with the parts that matter for long-term parity:
- BasicProp-style text configuration parsing
- text pattern files with sequence resets for simple recurrent networks
- feed-forward and simple recurrent network execution
- training controls for learning rate, momentum, update mode, random range, and stopping rules
- saved weight snapshots
- output testing and hierarchical clustering over model activations
- a desktop shell plus a scriptable CLI
Implemented now:
- feed-forward and simple recurrent network definitions
- config parser with aliases for common BasicProp-style field names
- pattern parser with
resetsequence markers - training with online (
pattern) and batch updates - sum-squared-error and cross-entropy output losses
- error history suitable for plotting
- test-all and test-one execution
- weight save/load
- output and hidden-state hierarchical clustering
- desktop workbench with a BasicProp-style control panel, live network view, editor tabs, testing, clustering, and weight inspection
- dedicated desktop network-configuration dialog with feed-forward and SRN modes, including 2-layer, 3-layer, and 4-layer feed-forward paths
- screenshot-verified feed-forward and SRN configuration tabs with BasicProp-style layer-count and bias controls
- 4-layer feed-forward topology now flows through the live desktop summary, network diagram, and weight-inspection utilities
- native desktop file workflows for network save/load, pattern load, and weight save/load
- utility views for weight maps, pattern/output inspection, projected 3D plotting, time-series plotting, and hidden-activation export
- BasicProp-style visual touches including weight-value legend, Hinton-like weight cells, and axis-based error plotting
- dedicated secondary windows for weights, patterns/outputs, and plot utilities from the top-level menus
- popup utility windows with BasicProp-style layer controls and axis labels
- dedicated JAR-aligned time-series plot window with
Output,Add plot, andDismisscontrols - dedicated JAR-aligned
Plot Setupwindow for 3D/surface plotting withX,Y,Z,Show Plot, andDismiss - dedicated JAR-aligned
PatternPlotwindow with per-pattern selector and stackedOutputs/Targets/Inputscharts - JAR decompile verification for
PatternPlot,TimeSeriesPlotter, andSurfacePlotternow matches the implemented utility-window sizes and control surfaces - full checked-in BasicProp probe coverage now runs through
scripts/parity-signoff.sh, which builds the solution, executes the core regression suite, compiles the probe, and runs every committed.bpprexperiment - checked-in BasicProp golden fixtures for 2-layer, 3-layer, 3-layer batch, 3-layer cross-entropy, 3-layer momentum, stop-rule, and 4-layer feed-forward training parity
- checked-in BasicProp multi-step online feed-forward fixture to verify repeated pattern-mode updates against the reference JAR
- checked-in BasicProp SRN fixtures for forward outputs, sequential-training weights, and batch-training weights
- reset-aware SRN trace capture in the BasicProp probe for consistent hidden-state parity checks
- full JAR-backed parity sign-off across the checked-in probe suite and core regression fixtures
- screenshot-backed main-window and weight-window parity checks against the local BasicProp reference bundle
- successful remote GitHub
releaseworkflow publish-matrix run with bundled artifacts for all supported desktop targets
Deliberate differences:
- legacy BasicProp file compatibility is out of scope by project decision
- SignalWeave uses native
signalweave-project/v2andsignalweave-checkpoint/v1formats instead of the retired BasicProp file formats
Classic: the current BasicProp-style desktop experience insrc/SignalWeave.Classic.DesktopModern: a separate desktop product line for the next workflow/UI insrc/SignalWeave.Modern.Desktop, centered on a single project-file workflow
Both apps share the same engine and general logic through src/SignalWeave.Core.
Modern workflow direction:
- one project file stores network settings, embedded patterns, current weights, completed cycles, and Modern control-panel state
- Modern no longer needs separate load/save actions for network settings, weights, or patterns
- the network settings surface lives inside the main window as a control-panel tab instead of a popup dialog
- detailed Modern usage docs live in:
docs/modern-ui-guide.mddocs/modern-user-manual.md
src/SignalWeave.Core: parsers, engine, clustering, sample assetssrc/SignalWeave.Cli: terminal workflowsrc/SignalWeave.Classic.Desktop: BasicProp-style Avalonia desktop appsrc/SignalWeave.Modern.Desktop: new product-line Avalonia desktop apptests/SignalWeave.Core.Tests: parser and trainer tests
dotnet run --project src/SignalWeave.Cli -- summary --network samples/xor.swcfg --patterns samples/xor.pat
dotnet run --project src/SignalWeave.Cli -- train --network samples/xor.swcfg --patterns samples/xor.pat --weights weights.json --seed 42
dotnet run --project src/SignalWeave.Cli -- test-all --network samples/xor.swcfg --patterns samples/xor.pat --weights weights.json
dotnet run --project src/SignalWeave.Cli -- cluster --network samples/xor.swcfg --patterns samples/xor.pat --weights weights.json --mode outputs
dotnet run --project src/SignalWeave.Cli -- pack-project --network samples/xor.swcfg --patterns samples/xor.pat --output xor.swproj.json
dotnet run --project src/SignalWeave.Cli -- pack-checkpoint --network samples/xor.swcfg --patterns samples/xor.pat --weights weights.json --output xor.swcheckpoint.json --cycles 5000
dotnet run --project src/SignalWeave.Cli -- summary --project xor.swproj.json
dotnet run --project src/SignalWeave.Cli -- train --project xor.swproj.json --checkpoint-out xor.swcheckpoint.json
dotnet run --project src/SignalWeave.Cli -- summary --checkpoint xor.swcheckpoint.jsondotnet run --project src/SignalWeave.Classic.Desktop
dotnet run --project src/SignalWeave.Modern.DesktopThe Classic desktop app ships with built-in XOR and SRN demos and now exposes a BasicProp-like workflow surface:
- top-level
Network,Weights,Patterns,Utilities, andHelpmenus - startup with a default feed-forward network, no loaded patterns, and the original BasicProp-style prompt to load patterns before running simulations
- desktop dialogs for configuring networks and loading/saving SignalWeave files
- native desktop workflows for loading/saving
signalweave-project/v2andsignalweave-checkpoint/v1documents - progress state now follows cumulative completed training cycles more closely across repeated
Trainruns - per-step training progress now updates the progress display during active learning instead of only changing at the start and end of a run
- the error-progress plot now updates live during active learning instead of only after the run completes
- right-side training/test control panel with BasicProp-like defaults, button layout, and BasicProp-style
continuetext only during active training - explicit controller activity states now keep
Train/continuealigned with BasicProp, so test actions no longer flip the train button tocontinue - train/test actions now enter a real busy state so the control-panel labels, combos, Batch Update checkbox, pattern selector, and run buttons disable during active controller work more like BasicProp’s
SimControl.checkControls() - the
X-entropycheckbox now stays enabled during controller activity, matching the BasicProp 1.3 control surface more closely SimControl.checkControls()has now been checked directly against the BasicProp JAR decompile for the controller-managed enable/disable set andTest onethreshold behavior- screenshot-verified four-panel main shell matching the original BasicProp layout more closely:
Network,Control panel,Console, andError progress - visible top-level menus now match the BasicProp 1.3 shell more closely, with only the original
Network,Weights,Patterns,Utilities, and single-itemHelpsurface - the four-panel main desktop workbench is now treated as complete parity surface; remaining gaps there are fidelity items, not missing shell workflow
- main window title and weight legend now follow the BasicProp shell more closely instead of using SignalWeave-specific defaults
- live network diagram colored by weight sign and magnitude, now verified from actual rendered desktop screenshots
- main network nodes now render as BasicProp-like unlabeled boxes with tighter BasicProp-style spacing instead of SignalWeave-style annotated editor nodes
- 2-layer, 3-layer, and 4-layer-aware topology summaries, diagram layout, and weight-layer inspection
- BasicProp-style training console wording (
Training steps/Training finished) - BasicProp-style
Test All/Test Oneconsole output wording and menu gating - test-one gating that follows the original controller behavior: enabled through
24patterns, then disabled above that while the combo collapses to the pattern-source name - pattern loading bound to the currently configured network state rather than an editor reparse
- BasicProp-style
Failed to load patternsnote for bad pattern files - network saving bound to the currently loaded configured network state rather than an editor reparse
- successful network/pattern/weight file actions now stay quiet in the main console, matching BasicProp more closely
- network-definition apply/load paths now clear stale console output instead of leaving old notes/results visible
- BasicProp-style
Batch Updatebehavior in the desktop control panel: still visible/enabled on the surface, but automatically cleared for SRNs in the applied runtime - BasicProp-style pattern selector text in the main control panel
- cycle-based progress-bar behavior that no longer invents a separate
Loaded weightsstate or use the selected learning-step count as the idle maximum - weight legend and error plot styling that tracks the original BasicProp layout more closely
- modal
Invalid valuedialogs plus BasicProp-style note routing into the detached messages window - BasicProp-style note prefix formatting (
Note:) in controller-driven desktop feedback - note-style controller feedback now appends to the desktop console instead of replacing the current console text
- note-style controller feedback now renders with proper
Note: ...spacing in the main console - BasicProp-style
No can do!modal feedback when train/test actions are attempted with zero loaded patterns - split
Weightsmenu entries for feed-forward and SRN loading, with BasicProp-style wrong-menu notes - menu-driven pop-up windows for weights, patterns/outputs, time-series plots, and 3D plots
- patterns and outputs are viewable both as a detailed table window and through the dedicated per-pattern chart workflow
- visible utility-menu access to output clustering and hidden-state clustering through dedicated text-report windows
- desktop pattern loading and clustering utilities are now fully reachable through the visible controller/menu workflow
- the visible menu labels now mirror the BasicProp wording more closely by removing extra ellipses and non-reference top-level actions
- network configuration
Applynow updates the live desktop state without closing the dialog - network configuration styling now follows the BasicProp dialog more closely, with centered
OK/Apply/Cancelbuttons and tighter slider/bias layout - weight display now uses a matrix-sized Hinton-style frame with numeric layer selectors plus
Recfor SRN recurrent weights, BasicProp-style target-row/source-column orientation, a compact BasicProp-like bottom control strip, a liveRefreshaction against the current engine weights, and screenshot-backed popup verification against the BasicProp reference window - utility-window launches stay quiet in the main console, matching BasicProp more closely
- in-place analysis/refresh actions also stay quiet unless they actually produce user-facing output or a note
- reset and hidden-activation export no longer emit synthetic console lines
- a detached message-log window under
Help, mirroring the original BasicProp message-frame workflow - restored
Help -> MessagesandHelp -> Clear Messagesactions so the detached message window is reachable from the visible desktop shell - hidden-activation export from the desktop app through a save dialog using the BasicProp
getHiddenActs()helper semantics and raw concatenated.datrows - screenshot-driven main-shell cleanup now trims some wasted network-pane space while keeping the existing diagram visible
The Modern desktop app uses a single-project workflow instead:
- top toolbar for
New,Load,Save, andSave As - left workspace tabs for
Network Graph,Weights, andAnalysis - right workflow tabs for
Network,Training,Tests,Patterns, andSummary - bottom
ConsoleandError graphpanels - project-first save/load using
.swproj.json
Quick start for Modern:
- Start the app:
dotnet run --project src/SignalWeave.Modern.Desktop- Click
📂 Load - Open
samples/seventeen-patterns-7x7-modern.swproj.json - Open
Trainingand clickTrain #1 - Open
Testsand clickTest all - Inspect the result in:
Network GraphWeightsAnalysis
Full step-by-step instructions are in:
docs/modern-ui-guide.mddocs/modern-user-manual.md
.github/workflows/ci.ymlruns restore, release build, and core tests on Linux, Windows, and macOS..github/workflows/release.ymlpublishes self-contained bundles for either theClassicorModerndesktop line depending on the release tag prefix.- release tags are product-specific:
classic-vX.Y.Zmodern-vX.Y.Z
- the GitHub
releaseworkflow is now verified from a successful remoteworkflow_dispatchpublish-matrix run:22874465646 scripts/parity-signoff.shis the local release-gate command for theClassicline: it builds the solution, runs the core parity tests, compiles and executes every checked-in BasicProp probe, then publishes and archives the Classic desktop bundles forlinux-x64,win-x64,osx-x64, andosx-arm64.- validated local publish examples:
dotnet publish src/SignalWeave.Classic.Desktop/SignalWeave.Classic.Desktop.csproj -c Release -r linux-x64 --self-contained true -o artifacts/signalweave-classic-desktop-linux-x64
dotnet publish src/SignalWeave.Classic.Desktop/SignalWeave.Classic.Desktop.csproj -c Release -r win-x64 --self-contained true -o artifacts/signalweave-classic-desktop-win-x64
dotnet publish src/SignalWeave.Modern.Desktop/SignalWeave.Modern.Desktop.csproj -c Release -r linux-x64 --self-contained true -o artifacts/signalweave-modern-desktop-linux-x64
dotnet publish src/SignalWeave.Modern.Desktop/SignalWeave.Modern.Desktop.csproj -c Release -r win-x64 --self-contained true -o artifacts/signalweave-modern-desktop-win-x64Full local sign-off:
./scripts/parity-signoff.shThe samples/ directory contains starter network and pattern files:
xor.swcfgandxor.patecho-srn.swcfgandecho-srn.patseventeen-patterns-7x7-modern.swproj.json
SignalWeave targets BasicProp 1.3 behavioral parity using the local reference JAR in /home/simon/temp/BasicProp/basicProp-1.3.jar. Legacy BasicProp file compatibility is intentionally out of scope.
docs/basicprop-compatibility.md: scope and compatibility basisdocs/basicprop-engine-notes.md: observed BasicProp 1.3 runtime semanticsdocs/reference-assets.md: local BasicProp reference bundle inventorydocs/parity-checklist.md: parity status by engine, UI, and utilitiesdocs/e2e-backlog.md: milestone backlog and implementation tasksdocs/signalweave-schema.md: native project and checkpoint schema definitionsdocs/product-lines.md: Classic/Modern product-line and release strategydocs/modern-ui-todo.md: Modern-specific backlog for porting analysis and utility workflowsdocs/modern-ui-guide.md: step-by-step guide for loading, training, testing, analyzing, and saving Modern projectsdocs/modern-user-manual.md: full Modern reference manual covering every section, setting, and workflow surface