From c7d195264273acda79d1f84f5d61eb0aaea14234 Mon Sep 17 00:00:00 2001
From: UttyWotty <105616324+UttyWotty@users.noreply.github.com>
Date: Mon, 21 Sep 2026 22:05:46 +0900
Subject: [PATCH] docs(site): platform card on home, About mention [v0.26.1]
---
CHANGELOG.md | 5 +++++
VERSION | 2 +-
public/design/components.css | 1 +
public/design/tokens.css | 2 ++
src/components/Home.astro | 1 +
src/components/ProductCard.astro | 2 +-
src/i18n/about.ts | 4 ++--
src/i18n/home.ts | 18 ++++++++++++++++--
8 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 290103f..fa4d8cd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
Routine `stats.json` refreshes take a PATCH version bump but are grouped rather than
listed individually.
+## [0.26.1] - 2026-09-21
+
+### Changed
+- Home gains a fifth card, *The layer above the lines*, linking to `/platform`; About's "who" paragraph names the platform layer (en + ko); a neutral `--line-platform` accent.
+
## [0.26.0] - 2026-09-21
### Added
diff --git a/VERSION b/VERSION
index 4e8f395..30f6cf8 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.26.0
+0.26.1
diff --git a/public/design/components.css b/public/design/components.css
index 8862eb8..0276429 100644
--- a/public/design/components.css
+++ b/public/design/components.css
@@ -101,6 +101,7 @@
.line-procurement { --line: var(--line-procurement); }
.line-manufacturing { --line: var(--line-manufacturing); }
.line-opsentry { --line: var(--line-opsentry); }
+.line-platform { --line: var(--line-platform); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
@media (max-width: 640px) {
diff --git a/public/design/tokens.css b/public/design/tokens.css
index f6fa837..6500384 100644
--- a/public/design/tokens.css
+++ b/public/design/tokens.css
@@ -33,6 +33,7 @@
--line-procurement: #1baf7a;
--line-manufacturing: #eb6834;
--line-opsentry: var(--brand);
+ --line-platform: var(--ink-2, #4b5563);
/* status / severity — fixed, never themed, never a series */
--sev-critical: #d03b3b;
@@ -106,6 +107,7 @@
--line-procurement: #199e70;
--line-manufacturing: #d95926;
--line-opsentry: var(--brand);
+ --line-platform: var(--ink-2, #9ca3af);
--sev-low: #9ca3af;
--surface-0: #121417;
--surface-1: #1a1d21;
diff --git a/src/components/Home.astro b/src/components/Home.astro
index ffbb9bc..3f6f546 100644
--- a/src/components/Home.astro
+++ b/src/components/Home.astro
@@ -36,6 +36,7 @@ const n = copy.numbers;
+
diff --git a/src/components/ProductCard.astro b/src/components/ProductCard.astro
index dbb8b87..f3ba715 100644
--- a/src/components/ProductCard.astro
+++ b/src/components/ProductCard.astro
@@ -1,6 +1,6 @@
---
import type { LineCard } from '../i18n/home';
-interface Props { card: LineCard; line: 'fraud' | 'procurement' | 'manufacturing' | 'opsentry' }
+interface Props { card: LineCard; line: 'fraud' | 'procurement' | 'manufacturing' | 'opsentry' | 'platform' }
const { card, line } = Astro.props;
---
diff --git a/src/i18n/about.ts b/src/i18n/about.ts
index d5b47da..014c374 100644
--- a/src/i18n/about.ts
+++ b/src/i18n/about.ts
@@ -28,7 +28,7 @@ export const about: Record = {
heading: 'Who',
body: [
'Opsight Intelligence is built and run from Korea by a small team with a background in OSINT entity classification, procurement data and manufacturing analytics. The platform is one codebase per line on one shared bus, collecting nightly on a single schedule.',
- 'Three lines are live — fraud, procurement, manufacturing — and one product, OpSentry, is open source. The platform runs where the data lives; nothing is hosted for a client that the client has not asked for.',
+ 'Three lines are live — fraud, procurement, manufacturing — one product, OpSentry, is open source, and above the lines sits a platform layer: one entity across them, nightly sanctions screening, the corporate registry, and a consortium exchange that shares hashes and bands. The platform runs where the data lives; nothing is hosted for a client that the client has not asked for.',
],
},
where: {
@@ -74,7 +74,7 @@ export const about: Record = {
heading: '누가',
body: [
'Opsight Intelligence는 OSINT 엔티티 분류, 조달 데이터, 제조 분석 배경을 가진 소규모 팀이 한국에서 만들고 운영합니다. 플랫폼은 라인별 하나의 코드베이스가 하나의 공유 버스 위에서, 하나의 일정으로 매일 밤 수집합니다.',
- '세 개의 라인 — 사기, 공공조달, 제조 — 이 운영 중이고, OpSentry 하나는 오픈소스 제품입니다. 플랫폼은 데이터가 있는 곳에서 돌아가며, 고객이 요청하지 않은 것을 고객 대신 호스팅하지 않습니다.',
+ '세 개의 라인 — 사기, 공공조달, 제조 — 이 운영 중이고, OpSentry 하나는 오픈소스 제품이며, 라인 위에는 플랫폼 계층이 있습니다: 라인을 가로지르는 하나의 엔터티, 매일 밤의 제재 스크리닝, 기업 등기, 해시와 구간만 교환하는 컨소시엄. 플랫폼은 데이터가 있는 곳에서 돌아가며, 고객이 요청하지 않은 것을 고객 대신 호스팅하지 않습니다.',
],
},
where: {
diff --git a/src/i18n/home.ts b/src/i18n/home.ts
index 0e1ed8c..b3822c4 100644
--- a/src/i18n/home.ts
+++ b/src/i18n/home.ts
@@ -15,7 +15,7 @@ export interface HomeCopy {
description: string;
hero: { eyebrow: string; title: string; lead: string; lifecycle: string; primary: string; primaryHref: string; secondary: string; secondaryHref: string };
numbers: { heading: string; lead: string; entities: string; clusters: string; notices: string; awards: string };
- lines: { heading: string; lead: string; fraud: LineCard; procurement: LineCard; manufacturing: LineCard; opsentry: LineCard };
+ lines: { heading: string; lead: string; fraud: LineCard; procurement: LineCard; manufacturing: LineCard; opsentry: LineCard; platform: LineCard };
honesty: { badge: string; title: string; body: string };
contact: { heading: string; lead: string; emailLabel: string; lineLabel: string; linePlaceholder: string; hint: string; button: string; mailto: string };
}
@@ -49,7 +49,7 @@ export const home: Record = {
awards: 'Awards with winning price',
},
lines: {
- heading: 'Three intelligence lines, one platform',
+ heading: 'Three intelligence lines, one platform above them',
lead: 'Specialized engines that publish to the same bus, so signals stay comparable and auditable across markets.',
fraud: {
badge: 'Fraud',
@@ -79,6 +79,13 @@ export const home: Record = {
action: 'Install free →',
href: '/opsentry',
},
+ platform: {
+ badge: 'Platform',
+ title: 'The layer above the lines',
+ body: 'One entity per firm, account or wallet across every line, screened nightly against the sanctions lists, enriched from the corporate registry, and a consortium exchange where institutions corroborate a mule signal by hash and band — never a customer.',
+ action: 'See the four layers →',
+ href: '/platform',
+ },
},
honesty: {
badge: 'What is real',
@@ -150,6 +157,13 @@ export const home: Record = {
action: '무료 설치 →',
href: '/ko/opsentry',
},
+ platform: {
+ badge: '플랫폼',
+ title: '라인 위의 계층',
+ body: '모든 라인에 걸쳐 회사·계정·지갑마다 하나의 엔터티, 매일 밤 제재 명단 대조, 기업 등기 정보 보강, 그리고 기관들이 고객 정보 대신 해시와 구간으로 자금세탁 신호를 교차 확인하는 컨소시엄 교환.',
+ action: '네 개의 계층 보기 →',
+ href: '/ko/platform',
+ },
},
honesty: {
badge: '무엇이 실제인가',