Skip to content

Add Help menu with About dialog to AppShellSubsystem - #5

Merged
Malcolmnixon merged 1 commit into
mainfrom
feature/about-box
Jul 20, 2026
Merged

Add Help menu with About dialog to AppShellSubsystem#5
Malcolmnixon merged 1 commit into
mainfrom
feature/about-box

Conversation

@Malcolmnixon

Copy link
Copy Markdown
Member

This pull request introduces a new "About" dialog to the SysML2Workbench AppShellSubsystem, providing users with application identity, version, copyright, and open-source dependency information. The implementation covers requirements, design, SysML model, verification, and user interface, and is fully integrated into the application's Help menu.

Key changes:

User Interface & Integration

  • Added AboutDialogView (AboutDialogView.axaml, AboutDialogView.axaml.cs) and its view model (AboutDialogViewModel.cs), presenting application name, tagline, version, copyright, and a list of OSS dependencies.
  • Integrated the About dialog into the main window: a new Help > About menu item opens the modal dialog, owned by the main window (MainWindowView.axaml, MainWindowView.axaml.cs). [1] [2] [3] [4] [5]

Requirements, Design, and Verification

  • Added requirements for the About dialog, specifying the exposed fields and dependency list (about-dialog.yaml). Included this requirements file in the top-level requirements aggregation. [1] [2]
  • Documented the design and verification approach for the About dialog, including test scenarios and acceptance criteria (about-dialog.md in both design and verification). [1] [2]
  • Registered the About dialog review in .reviewmark.yaml for traceability and review coverage.

SysML Model Updates

  • Added aboutDialog as a part in the SysML2Workbench AppShellSubsystem block definition and created a dedicated SysML part definition for AboutDialog, referencing its code, tests, requirements, and documentation. [1] [2]

Adds a Help top-level menu to MainWindowView, to the right of File/View, with
a single About menu item (MaterialIcon InformationOutline) that opens a new
modal About dialog via ShowDialog(this), centered over and owned by the main
window. The dialog is the first Window in the application besides
MainWindowView itself.

The About dialog presents the application name (SysML2Workbench), tagline,
a runtime-resolved version string, copyright, and a read-only list of the
application's key OSS dependencies with their license type. The version is
read from the running assembly's AssemblyInformationalVersionAttribute
(matching the --property:Version=... value CI stamps into every build),
falling back to the assembly's normalized AssemblyName.Version, and finally
to a literal "Unknown" if neither is available. The dependency list and
copyright text were independently verified against each dependency's own
LICENSE/nuspec metadata and against this repository's root LICENSE file.

Implementation follows the same thin-code-behind, Avalonia-free view model
convention used by the other AppShellSubsystem panels (for example
WorkspacePanelToolViewModel): AboutDialogViewModel holds no Avalonia
dependency and is directly unit-testable, while AboutDialogView/.axaml.cs
only bind to it and close the dialog on OK.

Companion artifacts added per this repository's software-item conventions:
- Unit tests: AboutDialogViewModelTests.cs (4 xUnit tests covering
  application name/tagline, version resolution, copyright text, and the
  dependency list contents).
- SysML2 model: new AboutDialog part def
  (docs/sysml2/model/sysml2-workbench/app-shell-subsystem/about-dialog.sysml)
  referenced from app-shell-subsystem.sysml; passes
  dotnet sysml2tools lint.
- Design doc: docs/design/sysml2-workbench/app-shell-subsystem/about-dialog.md
  (Purpose/Data Model/Key Methods/Error Handling/Dependencies/Callers),
  and the subsystem-level app-shell-subsystem.md unit listing updated to
  include AboutDialog.
- Verification doc:
  docs/verification/sysml2-workbench/app-shell-subsystem/about-dialog.md
  mapping each test to its verified scenario.
- Reqstream requirements:
  docs/reqstream/sysml2-workbench/app-shell-subsystem/about-dialog.yaml with
  two requirements (expose application info; list key dependencies), each
  referencing the new test method names, included from the top-level
  requirements.yaml.
- .reviewmark.yaml: new SysML2Workbench-AppShellSubsystem-AboutDialog
  review-set entry covering the new unit's design/verification/reqstream
  docs and source/test files.

Verified locally: dotnet build (clean, 0 warnings/errors), dotnet test (all
158 tests pass including the 4 new ones), dotnet sysml2tools lint (clean),
dotnet reqstream --lint (clean), a full dotnet test --logger trx +
dotnet reqstream --enforce pass confirming both new AboutDialog requirements
are satisfied (the only unsatisfied requirements are the pre-existing,
environment-driven Windows/Ubuntu/macOS platform requirements that require
CI's multi-OS test-tag matrix and are unrelated to this change), and
pwsh ./fix.ps1 followed by pwsh ./lint.ps1 (exit 0).
@Malcolmnixon
Malcolmnixon merged commit d101a32 into main Jul 20, 2026
6 checks passed
@Malcolmnixon
Malcolmnixon deleted the feature/about-box branch July 20, 2026 02:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant