From 5eb31b13b7889220cef0bd246478d79371d04b04 Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Tue, 22 Sep 2026 08:24:40 +0700 Subject: [PATCH 1/5] site: strengthen beginner path hierarchy --- landing/templates/index.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/landing/templates/index.html b/landing/templates/index.html index b044c16fd..88210dfeb 100644 --- a/landing/templates/index.html +++ b/landing/templates/index.html @@ -81,11 +81,11 @@

ARSAS is a free Windows IEC 61850 tester for rel
Start here

Two ways in. One clear path to useful IEC 61850 data.

-

Use a live relay when you can reach the device, or open an SCL file when you want to inspect the configured engineering model offline.

+

Choose based on what you already have: a reachable relay for live discovery, or an IEC 61850 engineering file for offline inspection.

- I have a live relay or IED +
I have a live relay or IEDRecommended first connection

Connect by IP address

Use the relay IP address on your authorized test, FAT, SAT or commissioning network. ARSAS connects over IEC 61850 MMS, discovers the live model and lets you choose what to monitor.

IP address → Smart Discovery → DataSet or signals → Live Monitor
@@ -157,7 +157,7 @@

Start with the job—not the protocol vocabulary.

Real product evidence

See the working engineering surfaces.

-

A curated view of current ARSAS v1.6.40 workflows. Full capability pages carry the deeper engineering detail.

+

Once the first connection makes sense, these real ARSAS surfaces show how the same IED context expands into alarms, FAT, Reporting, SCL, fault records and disturbance analysis.

ARSAS Alarm Annunciator for multiple IEC 61850 IEDs

01Alarm Annunciator

See alarms from multiple IEDs in one place. Active, unacknowledged and returned states stay separate and tied to the device that produced them.

From be87eaf9657ee2ee93d1a7305c23c471a82da40f Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Tue, 22 Sep 2026 08:24:43 +0700 Subject: [PATCH 2/5] site: strengthen Indonesian beginner path hierarchy --- landing/templates/id.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/landing/templates/id.html b/landing/templates/id.html index bfe7653a3..63e8a3215 100644 --- a/landing/templates/id.html +++ b/landing/templates/id.html @@ -80,11 +80,11 @@

ARSAS adalah tester IEC 61850 Windows gratis untuk Mulai di sini

Dua cara masuk. Satu jalur jelas menuju data IEC 61850 yang berguna.

-

Gunakan relay live jika device dapat dijangkau, atau buka file SCL jika Anda ingin memeriksa model engineering secara offline.

+

Pilih berdasarkan apa yang sudah Anda punya: relay yang dapat dijangkau untuk live discovery, atau file engineering IEC 61850 untuk inspeksi offline.

- Saya punya relay atau IED live +
Saya punya relay atau IED liveDisarankan untuk koneksi pertama

Hubungkan lewat alamat IP

Gunakan alamat IP relay pada network test, FAT, SAT atau commissioning yang memang Anda berwenang gunakan. ARSAS terhubung melalui IEC 61850 MMS, discovery live model, lalu Anda memilih apa yang ingin dimonitor.

Alamat IP → Smart Discovery → DataSet atau signal → Live Monitor
@@ -155,7 +155,7 @@

Mulai dari pekerjaan—bukan dari jargon protokol.

Evidence produk nyata

Lihat engineering surface yang benar-benar bekerja.

-

Tampilan terkurasi dari workflow ARSAS v1.6.40. Halaman capability membawa detail engineering yang lebih dalam.

+

Setelah alur koneksi pertama terasa jelas, surface ARSAS nyata ini menunjukkan bagaimana konteks IED yang sama berkembang ke alarm, FAT, Reporting, SCL, fault record, dan analisis gangguan.

Alarm Annunciator ARSAS untuk beberapa IED IEC 61850

01Alarm Annunciator

Lihat alarm dari beberapa IED di satu tempat. State active, unacknowledged dan returned tetap terpisah serta terkait ke device yang menghasilkannya.

From ba50096e225727b489d81534b4dbb2a5d636843f Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Tue, 22 Sep 2026 08:24:56 +0700 Subject: [PATCH 3/5] site: emphasize recommended live IED path --- landing/home.css | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/landing/home.css b/landing/home.css index 5a9033845..21f2bc99c 100644 --- a/landing/home.css +++ b/landing/home.css @@ -167,10 +167,35 @@ body[data-page="overview"] .start-choice-card { } body[data-page="overview"] .start-choice-card.highlight { - border-color: rgba(77, 190, 255, .26); + position: relative; + border-color: rgba(77, 190, 255, .42); background: - radial-gradient(circle at 0 0, rgba(56, 189, 248, .12), transparent 22rem), - linear-gradient(145deg, rgba(17, 42, 72, .8), rgba(8, 23, 44, .62)); + radial-gradient(circle at 0 0, rgba(56, 189, 248, .18), transparent 22rem), + linear-gradient(145deg, rgba(17, 46, 78, .88), rgba(8, 24, 46, .68)); + box-shadow: 0 20px 52px rgba(0, 26, 54, .2), inset 0 1px 0 rgba(255,255,255,.035); +} + +body[data-page="overview"] .start-choice-topline { + display: flex; + align-items: center; + justify-content: space-between; + gap: .65rem; + flex-wrap: wrap; +} + +body[data-page="overview"] .recommended-badge { + display: inline-flex; + align-items: center; + min-height: 1.7rem; + padding: .26rem .52rem; + border: 1px solid rgba(86, 205, 255, .28); + border-radius: 999px; + color: #dff7ff; + background: rgba(43, 175, 234, .11); + font-size: .69rem; + font-weight: 700; + letter-spacing: -.006em; + white-space: nowrap; } body[data-page="overview"] .start-choice-card h3 { From 9c8d387eb1529c82c158f0b2dc706089bbc973aa Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Tue, 22 Sep 2026 08:25:12 +0700 Subject: [PATCH 4/5] site: guard recommended onboarding path --- scripts/validate-product-source.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/validate-product-source.py b/scripts/validate-product-source.py index 22af17969..e663143f8 100644 --- a/scripts/validate-product-source.py +++ b/scripts/validate-product-source.py @@ -234,9 +234,9 @@ def main() -> int: if value not in rendered: errors.append(f"{label}: missing premium homepage contract value {value}") onboarding_contract = ( - ("I have a live relay or IED", "I have an engineering file", "Substation Configuration Language", "ICD", "CID", "IID", "SCD", "Open the complete Quick Start") + ("I have a live relay or IED", "Recommended first connection", "I have an engineering file", "Substation Configuration Language", "ICD", "CID", "IID", "SCD", "Open the complete Quick Start") if path == "" else - ("Saya punya relay atau IED live", "Saya punya file engineering", "Substation Configuration Language", "ICD", "CID", "IID", "SCD", "Buka Quick Start lengkap") + ("Saya punya relay atau IED live", "Disarankan untuk koneksi pertama", "Saya punya file engineering", "Substation Configuration Language", "ICD", "CID", "IID", "SCD", "Buka Quick Start lengkap") ) for value in onboarding_contract: if value not in rendered: From 40b3a4d1a5c2ca0e856204ce58dab57ddf6e8af5 Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Tue, 22 Sep 2026 08:25:15 +0700 Subject: [PATCH 5/5] site: guard rendered recommended onboarding path --- scripts/validate-product-build.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/validate-product-build.py b/scripts/validate-product-build.py index e8ec3699d..a7802d176 100644 --- a/scripts/validate-product-build.py +++ b/scripts/validate-product-build.py @@ -189,9 +189,9 @@ def main() -> int: for value in premium_contract: if value not in home_text: errors.append(f"{home}: missing premium homepage contract value {value}") onboarding_contract = ( - ("I have a live relay or IED", "I have an engineering file", "Substation Configuration Language", "ICD", "CID", "IID", "SCD", "Open the complete Quick Start") + ("I have a live relay or IED", "Recommended first connection", "I have an engineering file", "Substation Configuration Language", "ICD", "CID", "IID", "SCD", "Open the complete Quick Start") if home == "index.html" else - ("Saya punya relay atau IED live", "Saya punya file engineering", "Substation Configuration Language", "ICD", "CID", "IID", "SCD", "Buka Quick Start lengkap") + ("Saya punya relay atau IED live", "Disarankan untuk koneksi pertama", "Saya punya file engineering", "Substation Configuration Language", "ICD", "CID", "IID", "SCD", "Buka Quick Start lengkap") ) for value in onboarding_contract: if value not in home_text: errors.append(f"{home}: missing guided-onboarding contract value {value}")