Add Help menu with About dialog to AppShellSubsystem - #5
Merged
Conversation
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).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
AboutDialogView(AboutDialogView.axaml,AboutDialogView.axaml.cs) and its view model (AboutDialogViewModel.cs), presenting application name, tagline, version, copyright, and a list of OSS dependencies.MainWindowView.axaml,MainWindowView.axaml.cs). [1] [2] [3] [4] [5]Requirements, Design, and Verification
about-dialog.yaml). Included this requirements file in the top-level requirements aggregation. [1] [2]about-dialog.mdin both design and verification). [1] [2].reviewmark.yamlfor traceability and review coverage.SysML Model Updates
aboutDialogas 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]