Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
f960edf
docs: rebuild README for professional product positioning
masarray Jul 14, 2026
5af3934
docs: add branded product workspace illustration
masarray Jul 14, 2026
365ac17
website: add responsive premium design system
masarray Jul 14, 2026
765a966
website: add accessible navigation and progressive enhancement
masarray Jul 14, 2026
3bc65e2
website: add SEO-optimized product landing page
masarray Jul 14, 2026
0ae3eda
website: add vector favicon
masarray Jul 14, 2026
49a83ab
website: add social preview artwork
masarray Jul 14, 2026
43d34d7
website: add detailed IEC 61850 features page
masarray Jul 14, 2026
602e3e5
website: add Smart Control product page
masarray Jul 14, 2026
540f0f9
website: add application architecture page
masarray Jul 14, 2026
f468fef
website: add installable site metadata
masarray Jul 14, 2026
fa28e87
website: add search crawler directives
masarray Jul 14, 2026
67efc7c
website: add XML sitemap
masarray Jul 14, 2026
709dc09
website: add branded not-found page
masarray Jul 14, 2026
6bd8937
website: disable Jekyll processing
masarray Jul 14, 2026
91f07aa
ci: deploy landing pages through GitHub Pages
masarray Jul 14, 2026
a58a177
docs: add professional documentation hub
masarray Jul 14, 2026
4ddf11f
docs: add security and operational disclosure policy
masarray Jul 14, 2026
288562a
docs: add support and diagnostic guidance
masarray Jul 14, 2026
c753ab8
docs: expand professional contribution guide
masarray Jul 14, 2026
3f971cc
docs: professionalize application architecture
masarray Jul 14, 2026
5c6aea2
docs: refresh engine compatibility for v1.6.6
masarray Jul 14, 2026
2190d65
build: align product metadata with public positioning
masarray Jul 14, 2026
b5aef1b
docs: rename external IP audit as evidence-based provenance review
masarray Jul 14, 2026
c7b625c
docs: remove superseded cleanliness audit title
masarray Jul 14, 2026
a3d31af
docs: link renamed provenance review
masarray Jul 14, 2026
2ce705c
ci: extend source checks to website and public wording
masarray Jul 14, 2026
9a26ba9
github: add structured engineering bug report template
masarray Jul 14, 2026
a807a64
github: add engineering feature request template
masarray Jul 14, 2026
76b2cde
github: configure issue intake
masarray Jul 14, 2026
95f0a9c
github: strengthen pull request quality checklist
masarray Jul 14, 2026
58c572c
docs: add project community conduct policy
masarray Jul 14, 2026
0f80335
ci: use reviewed ARIEC61850 main integration baseline
masarray Jul 14, 2026
035e045
ci: add static landing page validator
masarray Jul 14, 2026
3199763
ci: validate SEO metadata and internal website links
masarray Jul 14, 2026
6cde48e
docs: add Windows UI validation guide
masarray Jul 14, 2026
4849d57
docs: fix documentation hub links
masarray Jul 14, 2026
cd6c942
docs: add public changelog
masarray Jul 14, 2026
d546112
docs: modernize application validation checklist
masarray Jul 14, 2026
0a01ae3
ci: include Python validators in source provenance scan
masarray Jul 14, 2026
f4afd51
ci: align SEO validator with rich technical metadata
masarray Jul 14, 2026
021879f
ci: allow standard XML namespaces while rejecting insecure page links
masarray Jul 14, 2026
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
111 changes: 111 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: Engineering bug report
description: Report a reproducible ArIED connection, discovery, monitoring, event, control, packaging, or UI defect.
title: "[Bug] "
labels: ["bug", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Thank you for helping improve ArIED 61850. Use synthetic or sanitized data only. Do not include credentials, customer names, station identifiers, confidential SCL, restricted addressing, or proprietary material.

- type: dropdown
id: area
attributes:
label: Affected area
options:
- Connection / association
- SCL import / project workspace
- MMS discovery / model browser
- Signal selection
- Reporting / monitoring
- Event log / timestamps / quality
- Smart Control
- Diagnostics
- Build / packaging
- UI / accessibility / performance
- Documentation / website
validations:
required: true

- type: input
id: app-version
attributes:
label: ArIED version or commit
placeholder: "1.6.6 or commit SHA"
validations:
required: true

- type: input
id: engine-version
attributes:
label: ARIEC61850 branch or commit
placeholder: "main or commit SHA"
validations:
required: true

- type: input
id: environment
attributes:
label: Environment
description: Windows version, .NET SDK/runtime, and display scaling when relevant.
placeholder: "Windows 11 24H2, .NET SDK 8.0.x, 125% scaling"
validations:
required: true

- type: textarea
id: steps
attributes:
label: Reproduction steps
placeholder: |
1. Open...
2. Connect...
3. Select...
4. Observe...
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected behavior
validations:
required: true

- type: textarea
id: observed
attributes:
label: Observed behavior
validations:
required: true

- type: textarea
id: diagnostics
attributes:
label: Sanitized diagnostic evidence
description: Paste a sanitized Copy Diagnostic report or the smallest relevant excerpt. Remove confidential data first.
render: text

- type: dropdown
id: evidence-source
attributes:
label: Validation environment
options:
- Static source review only
- Unit or integration test
- Simulator / loopback
- Isolated laboratory IED
- Approved commissioning environment
validations:
required: true

- type: checkboxes
id: confirmations
attributes:
label: Confirmations
options:
- label: I removed confidential customer, employer, station, credential, and restricted network information.
required: true
- label: I did not include external proprietary screenshots, manuals, code, or support material.
required: true
- label: Any active control or network test was performed under the required authority and test boundary.
required: true
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: Security vulnerability
url: https://github.com/masarray/ArIED61850Tester/security
about: Review SECURITY.md and use private vulnerability reporting when available.
- name: Support and diagnostics guide
url: https://github.com/masarray/ArIED61850Tester/blob/main/SUPPORT.md
about: Review connection checks, required environment details, and sanitization rules before filing an issue.
- name: Product website
url: https://masarray.github.io/ArIED61850Tester/
about: Product overview, features, Smart Control, and architecture.
76 changes: 76 additions & 0 deletions .github/ISSUE_TEMPLATE/feature-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Engineering feature request
description: Propose a focused ArIED workflow, usability, diagnostics, monitoring, or control improvement.
title: "[Feature] "
labels: ["enhancement", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Describe the engineering problem before proposing the UI or implementation. Protocol behavior should remain in ARIEC61850; ArIED should consume typed engine services.

- type: dropdown
id: area
attributes:
label: Product area
options:
- SCL / project workflow
- MMS explorer / discovery
- Signal selection
- Reporting / live monitoring
- Events / diagnostics
- Smart Control
- Performance / scalability
- Accessibility / keyboard workflow
- Packaging / release
- Documentation / website
validations:
required: true

- type: textarea
id: problem
attributes:
label: Engineering problem
description: What is difficult, slow, ambiguous, or currently impossible?
validations:
required: true

- type: textarea
id: workflow
attributes:
label: Desired workflow
description: Describe the user steps and expected evidence, not only the final screen.
validations:
required: true

- type: textarea
id: acceptance
attributes:
label: Acceptance criteria
placeholder: |
- Given...
- When...
- Then...
validations:
required: true

- type: textarea
id: protocol-boundary
attributes:
label: Application / engine boundary
description: Identify whether the request needs a new ARIEC61850 engine contract, an ArIED-only change, or both.

- type: textarea
id: validation
attributes:
label: Proposed validation
description: Unit test, simulator, loopback, laboratory IED, performance measurement, or UI verification.

- type: checkboxes
id: confirmations
attributes:
label: Confirmations
options:
- label: This request does not include confidential or proprietary customer or employer material.
required: true
- label: This request does not depend on copying another product's UI, wording, code, or documentation.
required: true
38 changes: 29 additions & 9 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,36 @@
## Summary
## Engineering problem

Describe the change and its engineering purpose.
Describe the user or protocol problem and why this change belongs in ArIED rather than ARIEC61850.

## Solution

Summarize the implementation and the application/engine boundary.

## Validation

- [ ] Build completed
- [ ] Relevant tests completed
- [ ] No confidential SCL/PCAP/customer data included
- [ ] No proprietary or restrictive-license code copied or mechanically translated
State the evidence source and result:

- [ ] Source/provenance gate completed
- [ ] Restore and Release build completed
- [ ] Relevant automated tests completed
- [ ] Simulator or loopback validation completed, when applicable
- [ ] Laboratory IED validation completed, when applicable
- [ ] Keyboard, scaling, and visual checks completed for UI changes
- [ ] Public documentation updated when behavior or claim boundaries changed

## Operational and data boundary

- [ ] No confidential SCL, capture, diagnostic, screenshot, customer, employer, station, credential, or restricted network data is included
- [ ] No external proprietary code, API composition, test, wording, screenshot, manual, asset, or UI design was copied or mechanically translated
- [ ] Active control or network validation was performed only under the required authority and test boundary
- [ ] The change does not imply formal conformance, universal interoperability, functional safety, or switching authority

## Contribution licensing

- [ ] I have read and agree to `CONTRIBUTOR-LICENSE-AGREEMENT.md`.
- [ ] I have the legal right and, where necessary, employer authorization to submit this contribution.
- [ ] Every commit includes a DCO sign-off (`Signed-off-by: Name <email>`).
- [ ] I have read and agree to `CONTRIBUTOR-LICENSE-AGREEMENT.md`
- [ ] I have the legal right and, where necessary, employer authorization to submit this contribution
- [ ] Every commit includes a DCO sign-off: `Signed-off-by: Name <email>`

## Screenshots or diagnostics

Use synthetic or sanitized material only. Explain what the evidence demonstrates.
8 changes: 5 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ on:
workflow_dispatch:

env:
# Temporary integration pin. Switch this to main after ARIEC61850 PR #25 is merged.
ARIEC61850_REF: agent/scl-workspace-api
ARIEC61850_REF: main

jobs:
build-windows:
name: Build, validate and package Windows application
runs-on: windows-latest
steps:
- name: Checkout ArIED application
Expand All @@ -20,7 +20,7 @@ jobs:
$ref = if ($env:GITHUB_HEAD_REF) { $env:GITHUB_HEAD_REF } else { $env:GITHUB_REF_NAME }
git clone --quiet --depth 1 --branch $ref "https://github.com/$env:GITHUB_REPOSITORY.git" ArIED61850Tester

- name: Verify ArIED clean-room source
- name: Verify source, website and license boundaries
shell: powershell
run: .\ArIED61850Tester\scripts\verify-source-clean.ps1

Expand All @@ -37,6 +37,8 @@ jobs:
ArIED61850Tester/GridUxBehavior.cs
ArIED61850Tester/Models
ArIED61850Tester/Services
ArIED61850Tester/docs
ArIED61850Tester/landing

- name: Checkout ARIEC61850 engine
shell: powershell
Expand Down
67 changes: 67 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Deploy product website

on:
push:
branches: [ main ]
paths:
- "landing/**"
- "scripts/validate-landing.py"
- ".github/workflows/pages.yml"
pull_request:
branches: [ main ]
paths:
- "landing/**"
- "scripts/validate-landing.py"
- ".github/workflows/pages.yml"
workflow_dispatch:

permissions:
contents: read

concurrency:
group: pages
cancel-in-progress: true
Comment on lines +21 to +23

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Scope Pages concurrency to each ref

When any PR validation or manual run starts while a main push is deploying, this workflow-level literal group puts every run in the same cancellation bucket; with cancel-in-progress: true, a non-deploying PR run can cancel the in-progress deployment (or another PR's required Pages check) before the upload/deploy finishes. Scope the group by github.ref/event or move concurrency to the deploy job so validation runs do not interrupt production publishes.

Useful? React with 👍 / 👎.


jobs:
validate:
name: Validate static website
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Validate HTML, local links and SEO metadata
run: python scripts/validate-landing.py

- name: Verify public website boundaries
shell: bash
run: |
set -euo pipefail
! grep -R --line-number --fixed-strings 'LICENSE-APACHE-2.0' landing
! grep -R --line-number -E '(href|src|content)="http://' landing --include='*.html'

- name: Upload website artifact
if: github.event_name != 'pull_request'
uses: actions/upload-pages-artifact@v3
with:
path: landing

deploy:
if: github.event_name != 'pull_request'
needs: validate
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
10 changes: 5 additions & 5 deletions ArIED61850Tester.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@
<AssemblyName>ArIED61850</AssemblyName>
<RootNamespace>ArIED61850Tester</RootNamespace>
<ApplicationIcon>Assets\app-icon.ico</ApplicationIcon>
<Authors>Mas Ari / masarray</Authors>
<Copyright>Copyright (C) 2026 Mas Ari / masarray</Copyright>
<Authors>Ari Sulistiono / masarray</Authors>
<Copyright>Copyright (C) 2026 Ari Sulistiono</Copyright>
<Product>ArIED 61850</Product>
<AssemblyTitle>ArIED 61850</AssemblyTitle>
<Description>Smart IED Explorer &amp; Monitor for SCL-based offline engineering, live IEC 61850 discovery, multi-IED monitoring, reporting, control-object inspection, quality, timestamps, and event logging.</Description>
<AssemblyTitle>ArIED 61850 — IEC 61850 Engineering Workstation</AssemblyTitle>
<Description>Windows IEC 61850 engineering workstation for SCL-assisted project setup, live MMS model discovery, independent multi-IED monitoring, reporting diagnostics, sequence of events, and guarded Smart Control.</Description>
<Version>1.6.6</Version>
<AssemblyVersion>1.6.6.0</AssemblyVersion>
<FileVersion>1.6.6.0</FileVersion>
<PackageTags>iec61850;iec-61850;mms;scl;ied;relay-testing;substation-automation;digital-substation;report-control-block;wpf;dotnet</PackageTags>
<PackageTags>iec61850;iec-61850;mms;scl;ied-explorer;multi-ied-monitoring;relay-testing;substation-automation;digital-substation;report-control-block;sequence-of-events;smart-control;wpf;dotnet</PackageTags>
<PackageLicenseExpression>GPL-3.0-or-later</PackageLicenseExpression>
<ArIec61850Project Condition="'$(ArIec61850Project)' == '' and '$(ARIEC61850_PROJECT)' != ''">$(ARIEC61850_PROJECT)</ArIec61850Project>
<ArIec61850Project Condition="'$(ArIec61850Project)' == ''">..\ARIEC61850\src\AR.Iec61850\AR.Iec61850.csproj</ArIec61850Project>
Expand Down
Loading
Loading