diff --git a/docs/asset-provenance-manifest.json b/docs/asset-provenance-manifest.json index d057842fb..21b6c4334 100644 --- a/docs/asset-provenance-manifest.json +++ b/docs/asset-provenance-manifest.json @@ -3,10 +3,10 @@ "audited_repository": "masarray/arsas", "audited_commit": "45838496e5dd289b42fbb731a6cafd8cd3547c32", "audited_date": "2026-10-25", - "scope": "All Git-tracked binary visual/font assets (.png, .jpg, .jpeg, .webp, .ico, .svg, .ttf, .otf, .woff2, .gif), including 16 verified v1.6.42 operator PNG/WebP screenshot assets.", + "scope": "All Git-tracked binary visual/font assets, including 16 operator-approved v1.6.42 PNG/WebP captures and one additional authentic cropped v1.6.42 Connect to IED dialog WebP.", "disclaimer": "Inventory and Git identity only. This manifest does not certify originality, license clearance, or freedom from resemblance. Manual origin/rights/content review remains required where disposition says so.", - "tracked_asset_count": 81, - "unique_blob_count": 58, + "tracked_asset_count": 82, + "unique_blob_count": 59, "files": [ { "path": "Assets/app-icon-256.png", @@ -289,6 +289,25 @@ "duplicate_of": null, "review_status": "origin-rights-and-visual-similarity-review-required" }, + { + "path": "landing/assets/screenshots/arsas-add-ied-connect-dialog-v1.6.42.webp", + "blob_sha": "82221972ff30404603fa1b7a5256f16b039e38f8", + "size_bytes": 5194, + "duplicate_of": null, + "source_filename": "image(20261025-142302).png", + "source_sha256": "29e711addbc31f553ae936cdbe8a0d03f2ceb70b0579d823d0d4a3766da2a84a", + "crop_rectangle_xyxy": [ + 657, + 275, + 1035, + 597 + ], + "dimensions": [ + 378, + 322 + ], + "review_status": "authentic v1.6.42 operator-provided Connect dialog crop; user explicitly approved public screenshot privacy 2026-10-25" + }, { "path": "landing/assets/screenshots/arsas-alarm-annunciator-v1.6.40.webp", "blob_sha": "29b9b3866ce8b29b401df8ffde0cd9239b623b5d", diff --git a/landing/assets/screenshots/arsas-add-ied-connect-dialog-v1.6.42.webp b/landing/assets/screenshots/arsas-add-ied-connect-dialog-v1.6.42.webp new file mode 100644 index 000000000..82221972f Binary files /dev/null and b/landing/assets/screenshots/arsas-add-ied-connect-dialog-v1.6.42.webp differ diff --git a/landing/templates/id.html b/landing/templates/id.html index cbbfc54be..ed18d4845 100644 --- a/landing/templates/id.html +++ b/landing/templates/id.html @@ -108,14 +108,14 @@

Buka file SCL

IIDInstantiated IED Description · model exchange IED terinstansiasi
SCDSubstation Configuration Description · model sistem gardu terintegrasi
-
Sekarang ikuti layar

Add IED → pilih sumber → bentuk model → monitor.

Dua gambar dialog konfigurasi awal adalah contoh historis v1.6.40; gambar IED Browser di bawah berasal dari capture asli operator v1.6.42.

+
Sekarang ikuti layar

Add IED → pilih sumber → bentuk model → monitor.

Seluruh gambar onboarding menampilkan aplikasi asli v1.6.42, termasuk crop autentik dialog Connect to IED.

-
Menu Add IED ARSAS dengan pilihan Open SCL dan Discover IED by IP
+
IED Browser ARSAS v1.6.42 dengan tombol Add IED di panel kiri
01Pilih sumber

Klik Add IED, lalu pilih IP live atau file SCL.

Gunakan Discover IED by IP untuk relay yang dapat dijangkau. Gunakan Open SCL / CID / ICD untuk memeriksa model vendor atau project secara offline; IID dan SCD juga didukung oleh workflow SCL.

-
Dialog Add IEC 61850 IED ARSAS dengan alamat IP relay dan aksi Connect and Discover
+
Crop asli dialog Connect to IED v1.6.42 dengan input IP empat oktet dan tombol Connect
02Bangun model

Masukkan IP relay dan jalankan Smart Discovery.

ARSAS terhubung melalui IEC 61850 MMS pada port 102, membaca identity IED yang sebenarnya, lalu membangun live model. Jika memilih file SCL, ARSAS membuka configured model tersebut tanpa membuat koneksi live.

diff --git a/landing/templates/index.html b/landing/templates/index.html index f20f7c0c1..be7d57491 100644 --- a/landing/templates/index.html +++ b/landing/templates/index.html @@ -109,14 +109,14 @@

Open an SCL file

IIDInstantiated IED Description · instantiated IED exchange model
SCDSubstation Configuration Description · integrated system model
-
Now follow the screen

Add IED → choose source → build the model → monitor.

The first two setup-dialog images are historical v1.6.40 examples; the IED Browser example below is an actual v1.6.42 operator capture.

+
Now follow the screen

Add IED → choose source → build the model → monitor.

All onboarding images now show the actual v1.6.42 application, including an authentic crop of the current Connect to IED dialog.

-
ARSAS Add IED menu with Open SCL and Discover IED by IP choices
+
Real ARSAS v1.6.42 IED Browser with Add IED action visible in the left rail
01Choose the source

Click Add IED, then choose live IP or SCL.

Use Discover IED by IP for a reachable relay. Use Open SCL / CID / ICD to inspect a vendor or project model offline; IID and SCD are supported by the SCL workflow too.

-
ARSAS Add IEC 61850 IED dialog with relay IP address and Connect and Discover action
+
Authentic cropped v1.6.42 Connect to IED dialog with IPv4 field and Connect button
02Build the model

Enter the relay IP and run Smart Discovery.

ARSAS connects over IEC 61850 MMS on port 102, reads the real IED identity and builds its live model. If you chose an SCL file, ARSAS opens that configured model without making a live connection.

diff --git a/landing/templates/panduan-mulai-arsas.html b/landing/templates/panduan-mulai-arsas.html index 3457bcacb..6c89a184d 100644 --- a/landing/templates/panduan-mulai-arsas.html +++ b/landing/templates/panduan-mulai-arsas.html @@ -22,23 +22,23 @@ - + - + {{> header}}
Quick Start pemula · IP live atau SCL · tiga langkah terlihat

IED pertama Anda di ARSAS: hubungkan, bentuk model, monitor.

ARSAS adalah tester IEC 61850 untuk Windows. Hubungkan relay lewat IP pada network test yang berwenang Anda gunakan, atau buka file engineering SCL—ICD, CID, IID maupun SCD—untuk memeriksa configured model secara offline.

-
Tiga langkah yang terlihat

Gunakan control yang sama seperti yang akan Anda lihat di aplikasi.

Langkah 1 dan 2 menggunakan gambar dialog konfigurasi historis v1.6.40. Langkah 3 menggunakan IED Browser asli v1.6.42. Tampilannya dapat berbeda antarversi.

-
Menu Add IED ARSAS dengan pilihan Open SCL dan Discover IED by IP
01Tambahkan IED

Pilih relay live atau model SCL.

Klik Add IED. Pilih Discover IED by IP untuk relay live. Pilih Open SCL / CID / ICD untuk model engineering offline; workspace SCL juga menerima IID dan SCD.

-
Dialog Add IEC 61850 IED ARSAS dengan alamat IP relay dan aksi Connect and Discover
02Discovery dengan aman

Masukkan IP relay pada network test yang berwenang.

Pertahankan MMS port 102 kecuali project menetapkan endpoint lain. Pilih Connect & Discover; ARSAS membaca identity IED yang sebenarnya, DataSet, RCB, dan live model melalui jalur Smart Discovery produksi.

+
Tiga langkah yang terlihat

Gunakan control yang sama seperti yang akan Anda lihat di aplikasi.

Semua screenshot menampilkan aplikasi asli v1.6.42. Langkah 2 memakai crop dialog Connect to IED dari screenshot operator.

+
IED Browser ARSAS v1.6.42 dengan tombol Add IED di panel kiri
01Tambahkan IED

Buka Add IED di Device Explorer.

Pilih Device Explorer, lalu klik Add IED di panel kiri. Pada v1.6.42 dialog Connect to IED langsung terbuka. File SCL diimpor melalui workspace SCL secara terpisah.

+
Crop asli dialog Connect to IED v1.6.42 dengan input IP empat oktet dan tombol Connect
02Discovery dengan aman

Masukkan IP relay pada network test yang berwenang.

Isi alamat IP pada field empat oktet, lalu klik Connect. Buka Advanced settings bila perlu mengubah detail koneksi seperti port MMS default 102. ARSAS kemudian mencoba koneksi dan discovery IED.

Screenshot asli IED Browser ARSAS v1.6.42 dengan model IED, nilai MMS dan Command Dock terproteksi
03Monitor atau test

Mulai monitoring, lalu tampilkan hanya control tervalidasi.

Pilih Static DataSet untuk jalur cepat report-ready, atau Select Signals untuk pemilihan manual. Review value, quality, dan timestamp di Live Monitor. Gunakan Command Dock hanya untuk control object tervalidasi dengan prosedur test yang disetujui.

Quick Start Engineering

Setelah live value pertama, tambahkan engineering checks.

Tiga langkah di atas adalah jalur sukses pemula. Gunakan checklist yang lebih dalam ini sebelum FAT, GOOSE, SMV, file transfer atau active control pada pekerjaan lapangan.

diff --git a/landing/templates/quick-start.html b/landing/templates/quick-start.html index 61e63f70c..0af4a7ac6 100644 --- a/landing/templates/quick-start.html +++ b/landing/templates/quick-start.html @@ -22,23 +22,23 @@ - + - + {{> header}}
Beginner Quick Start · live IP or SCL · three visible steps

Your first IED in ARSAS: connect, build the model, monitor.

ARSAS is a Windows IEC 61850 tester. Connect a relay by IP on an authorized test network, or open an SCL engineering file—ICD, CID, IID or SCD—to inspect the configured model offline.

-
Three visible steps

Use the same controls you will see in the application.

Steps 1 and 2 use archived v1.6.40 setup-dialog examples. Step 3 shows the current v1.6.42 IED Browser. The UI may differ between those two source versions.

-
ARSAS Add IED menu with Open SCL and Discover IED by IP choices
01Add the IED

Choose a live relay or an SCL model.

Click Add IED. Select Discover IED by IP for a live relay. Select Open SCL / CID / ICD for an offline engineering model; the SCL workspace also accepts IID and SCD.

-
ARSAS Add IEC 61850 IED dialog with relay IP address and Connect and Discover action
02Discover safely

Enter the relay IP on your authorized test network.

Keep MMS port 102 unless the project explicitly specifies another endpoint. Select Connect & Discover; ARSAS reads the real IED identity, DataSets, RCBs and live model through the production Smart Discovery path.

+
Three visible steps

Use the same controls you will see in the application.

All screenshots show the actual v1.6.42 application. Step 2 is cropped from the operator-provided Connect to IED screenshot.

+
Real ARSAS v1.6.42 IED Browser with Add IED action visible in the left rail
01Add the IED

Open Add IED in Device Explorer.

Select Device Explorer, then click Add IED in the left rail. In v1.6.42 the Connect to IED dialog opens directly. SCL files are handled separately by the SCL import workspace.

+
Authentic cropped v1.6.42 Connect to IED dialog with IPv4 field and Connect button
02Discover safely

Enter the relay IP on your authorized test network.

Enter the address in the four-octet IP field, then select Connect. Open Advanced settings only if connection details such as the default MMS port 102 need changing. ARSAS attempts IED connection and discovery.

Actual ARSAS v1.6.42 IED Browser: selected IED data model, MMS values and guarded Command Dock
03Monitor or test

Start monitoring, then expose only validated controls.

Choose Static DataSet for a fast report-ready path, or Select Signals for manual selection. Review value, quality and timestamp in Live Monitor. Use the Command Dock only for validated control objects under an approved test procedure.

Engineering Quick Start

After your first live value, add the engineering checks.

The three-step path above is the beginner success path. Use this deeper checklist before FAT, GOOSE, SMV, file transfer or active control in field work.

diff --git a/scripts/audit-public-media.py b/scripts/audit-public-media.py index 7ca068d0d..145fcd878 100644 --- a/scripts/audit-public-media.py +++ b/scripts/audit-public-media.py @@ -84,6 +84,15 @@ def audit(root: Path) -> list[dict[str, object]]: results.append({ "file": path.name, "status": status, "metadata_chunks": finding }) + # Current Add IED dialog is a distinct approved crop from a later original. + crop = screens / "arsas-add-ied-connect-dialog-v1.6.42.webp" + try: + metadata = webp_metadata(crop.read_bytes()) + results.append({"file": crop.name, "status": "PASS" if not metadata else "FAIL", + "metadata_chunks": ",".join(metadata)}) + except (OSError, ValueError) as exc: + results.append({"file": crop.name, "status": "FAIL", + "metadata_chunks": type(exc).__name__}) return results diff --git a/scripts/build-responsive-media.py b/scripts/build-responsive-media.py index 977a1fa5b..fbfa91c9f 100644 --- a/scripts/build-responsive-media.py +++ b/scripts/build-responsive-media.py @@ -24,7 +24,11 @@ def generate(source: Path, target_dir: Path) -> dict[str, Any]: variants: list[tuple[int, Path]] = [] with Image.open(source) as image: original_width, original_height = image.size - for width in WIDTHS: + # An authentic dialog crop may be narrower than the standard 480px preset. + # Still create one smaller candidate so the source image participates in + # the same srcset/sizes and CI contract without upscaling its pixels. + widths = WIDTHS if original_width > WIDTHS[0] else (max(160, round(original_width * 0.75)),) + for width in widths: if width >= original_width: continue height = max(1, round(original_height * width / original_width)) diff --git a/scripts/validate-product-source.py b/scripts/validate-product-source.py index f344e1371..009484e64 100644 --- a/scripts/validate-product-source.py +++ b/scripts/validate-product-source.py @@ -457,7 +457,7 @@ def main() -> int: if value not in footer: errors.append(f"footer missing {value}") root_html = [path.name for path in LANDING.glob("*.html") if not VERIFICATION.fullmatch(path.name)] if root_html: errors.append("legacy HTML outside templates: " + ", ".join(sorted(root_html))) - for required in ("device-evidence.json", "adoption.css", "guide-filter.js", "demo.js", "latest.json", "release-notes.json", "robots.txt", "assets/social-card.png", "assets/screenshots/arsas-ied-explorer-command-v1.6.40.webp", "assets/screenshots/arsas-quick-start-choose-source-v1.6.40.webp", "assets/screenshots/arsas-quick-start-discover-ip-v1.6.40.webp", "assets/screenshots/arsas-quick-start-monitor-control-v1.6.40.webp"): + for required in ("device-evidence.json", "adoption.css", "guide-filter.js", "demo.js", "latest.json", "release-notes.json", "robots.txt", "assets/social-card.png", "assets/screenshots/arsas-ied-explorer-command-v1.6.40.webp", "assets/screenshots/arsas-quick-start-choose-source-v1.6.40.webp", "assets/screenshots/arsas-quick-start-discover-ip-v1.6.40.webp", "assets/screenshots/arsas-quick-start-monitor-control-v1.6.40.webp", "assets/screenshots/arsas-add-ied-connect-dialog-v1.6.42.webp"): if not (LANDING / required).is_file(): errors.append(f"missing landing source {required}") for capture in ("ied-browser", "event-logs", "signal-testing", "fat-report-preview", "smv", "goose", "annunciator", "diagnostics"): for fmt in ("png", "webp"): diff --git a/tests/ARSAS.Tests/WebsiteHeroLocalizationRegressionTests.cs b/tests/ARSAS.Tests/WebsiteHeroLocalizationRegressionTests.cs index d5343dc4e..1b23c5a22 100644 --- a/tests/ARSAS.Tests/WebsiteHeroLocalizationRegressionTests.cs +++ b/tests/ARSAS.Tests/WebsiteHeroLocalizationRegressionTests.cs @@ -55,13 +55,12 @@ public void BeginnerJourney_UsesTheCurrentThreeStepProductFlow(string path, stri var page = Read(path); Assert.Contains(heading, page, StringComparison.Ordinal); - Assert.Contains("arsas-quick-start-choose-source-v1.6.40.webp", page, StringComparison.Ordinal); - Assert.Contains("arsas-quick-start-discover-ip-v1.6.40.webp", page, StringComparison.Ordinal); - // Setup-dialog captures are explicitly historical; step 3 is the actual public stable UI. + Assert.DoesNotContain("arsas-quick-start-choose-source-v1.6.40.webp", page, StringComparison.Ordinal); + Assert.DoesNotContain("arsas-quick-start-discover-ip-v1.6.40.webp", page, StringComparison.Ordinal); + Assert.Contains("arsas-add-ied-connect-dialog-v1.6.42.webp", page, StringComparison.Ordinal); Assert.Contains("arsas-ied-browser-v1.6.42.webp", page, StringComparison.Ordinal); Assert.Contains("href=\"assets/screenshots/arsas-ied-browser-v1.6.42.png\"", page, StringComparison.Ordinal); Assert.DoesNotContain("arsas-quick-start-monitor-control-v1.6.40.webp", page, StringComparison.Ordinal); - Assert.Contains("v1.6.40", page, StringComparison.Ordinal); Assert.Contains("v1.6.42", page, StringComparison.Ordinal); Assert.Contains("SCL", page, StringComparison.Ordinal); }