From 342e09f5e86c68c2554f35a538f7853eba1a4e3e Mon Sep 17 00:00:00 2001 From: Teakowa Date: Tue, 18 Aug 2026 18:55:29 +0800 Subject: [PATCH 1/2] feat(homepage): reframe around three developer entry points MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restructures the homepage per issue #10 to lead with three clear developer workflows — Native Workshop, OverPy/OSTW, and AI Agents — rather than internal compiler architecture. Changes: - site.ts: update headline/subheadline/description for user-oriented positioning; add pillars export with three entry points (capabilities, commands, copy grounded in current repository evidence); rename features->capabilities with updated title/lead; update nav to expose Workflows and Capabilities anchors (removes Agents nav item now integrated into the AI Agents pillar). - PillarsSection.svelte: new tabbed section (id=workflows) rendering the three pillars with headline, body, capability checklist, and command snippet per pillar. - CapabilitiesSection.svelte: renamed from FeaturesSection, uses capabilities export, id=capabilities. - Hero.svelte: add subheadline beneath h1 surfacing the three workflow types. - +page.svelte: new section order: Hero → Install → Pillars → Capabilities → Compatibility → Ecosystem → OpenSource. Removes standalone AgentsSection (content merged into AI Agents pillar). FeaturesSection.svelte and AgentsSection.svelte are preserved as unused files; they are not referenced from any route. Closes #10 --- src/lib/components/CapabilitiesSection.svelte | 35 ++++++ src/lib/components/Hero.svelte | 3 + src/lib/components/PillarsSection.svelte | 106 ++++++++++++++++++ src/lib/site.ts | 72 ++++++++++-- src/routes/+page.svelte | 8 +- 5 files changed, 212 insertions(+), 12 deletions(-) create mode 100644 src/lib/components/CapabilitiesSection.svelte create mode 100644 src/lib/components/PillarsSection.svelte diff --git a/src/lib/components/CapabilitiesSection.svelte b/src/lib/components/CapabilitiesSection.svelte new file mode 100644 index 0000000..283b747 --- /dev/null +++ b/src/lib/components/CapabilitiesSection.svelte @@ -0,0 +1,35 @@ + + +
+
+
+

{capabilities.title}

+

+ {capabilities.lead} +

+
+ +
+ {#each capabilities.items as item (item.id)} +
+
+

{item.title}

+

+ {item.body} +

+
+ +
+
+ {item.command} + +
+
+
+ {/each} +
+
+
diff --git a/src/lib/components/Hero.svelte b/src/lib/components/Hero.svelte index 0c0c8a7..7c2f927 100644 --- a/src/lib/components/Hero.svelte +++ b/src/lib/components/Hero.svelte @@ -14,6 +14,9 @@

{site.headline}

+

+ {site.subheadline} +

{site.description}

diff --git a/src/lib/components/PillarsSection.svelte b/src/lib/components/PillarsSection.svelte new file mode 100644 index 0000000..f84bab7 --- /dev/null +++ b/src/lib/components/PillarsSection.svelte @@ -0,0 +1,106 @@ + + +
+
+
+

Who is WrightKit for?

+

+ WrightKit supports three established Workshop development workflows. Pick the one closest to + how you work. +

+
+ + +
+ {#each pillars as pillar, i (pillar.id)} + + {/each} +
+ + + {#each pillars as pillar, i (pillar.id)} + + {/each} +
+
diff --git a/src/lib/site.ts b/src/lib/site.ts index b0f5897..f803e85 100644 --- a/src/lib/site.ts +++ b/src/lib/site.ts @@ -17,10 +17,11 @@ export const site = { product: 'Wright', brand: 'WrightKit', url: 'https://wrightkit.dev', - tagline: 'Tooling-first ecosystem for Overwatch Workshop', - headline: 'Tooling for the Overwatch Workshop.', + tagline: 'Tooling for Overwatch Workshop development', + headline: 'Tooling for Overwatch Workshop development.', + subheadline: 'Native Workshop, OverPy / OSTW, and AI agents.', description: - 'WrightKit is an open-source ecosystem of tools for Overwatch Workshop development. Wright, its primary product, is a standalone Rust toolchain for linting, static analysis, semantic inspection, and compilation — for developers, CI, and AI agents.', + 'WrightKit is an open-source tooling ecosystem for Overwatch Workshop development. Whether you work in native Workshop text, OverPy, OSTW, or use AI coding agents — Wright provides linting, static analysis, semantic inspection, validated source editing, and language services.', github: 'https://github.com/wrightkit/wright', org: 'https://github.com/wrightkit', releases: 'https://github.com/wrightkit/wright/releases', @@ -36,10 +37,10 @@ export interface NavItem { export const nav = [ { label: 'Install', href: '#install' }, - { label: 'Features', href: '#features' }, + { label: 'Workflows', href: '#workflows' }, + { label: 'Capabilities', href: '#capabilities' }, { label: 'Compatibility', href: '#compatibility' }, { label: 'Ecosystem', href: '#ecosystem' }, - { label: 'Agents', href: '#agents' }, { label: 'GitHub', href: site.org, external: true } ] satisfies readonly NavItem[]; @@ -66,6 +67,61 @@ export const terminal = [ { prompt: '', text: '✓ compiled 12 rules, 4 subroutines (0.018s)' } ] as const; +/** + * Three primary developer entry points. + * Capability claims trace to current wright/workshop-rs/opy-rs/del-rs/workshop-agent evidence. + */ +export const pillars = [ + { + id: 'workshop', + anchor: 'workflows', + label: 'Native Workshop', + headline: 'Parse, inspect, lint, and transform raw Workshop scripts.', + body: 'Workshop text is the canonical interoperability boundary. WrightKit treats it as a first-class source form — not only as compiler output. Parse, validate, check, analyze, and emit Workshop projects with full catalog awareness.', + capabilities: [ + 'Parse and validate Workshop text against the live action/value catalog', + 'Static analysis and lint rules with stable diagnostic codes', + 'Semantic inspection: rules, variables, subroutines, control flow', + 'Deterministic re-emission for diffs, CI, and round-trip verification', + 'Source-span diagnostics in terminal and machine-readable JSON' + ], + command: 'wright lint src/main.workshop', + commandCaption: 'Lint native Workshop text with stable diagnostic codes.' + }, + { + id: 'opy', + anchor: 'workflows', + label: 'OverPy & OSTW', + headline: 'Modern tooling for OverPy and OSTW projects.', + body: 'OverPy (OPY) and DeltinScript (OSTW) are widely-used languages for Workshop development. WrightKit provides source-aware tooling — checking, linting, semantic analysis, and compilation where supported — for existing projects without replacing upstream implementations.', + capabilities: [ + 'OverPy frontend: preprocessor, macros, declarations, expressions, settings blocks', + 'Corpus-evidenced semantic frontend, verified against a pinned OverPy oracle', + 'OPY → Workshop compilation (supported), Workshop → OPY (in development)', + 'DEL/OSTW-compatible frontend in development (del-rs)', + 'Language server hover, definition, references, and rename (wright-lsp)' + ], + command: 'wright check src/hero.opy', + commandCaption: 'Check an OverPy source file with exact source-span diagnostics.' + }, + { + id: 'agents', + anchor: 'workflows', + label: 'AI Agents', + headline: 'Semantic understanding and validated edits for coding agents.', + body: 'Workshop projects are hard for agents to reason about: the action/value catalog is large, semantics are non-obvious, and mistakes can silently break behavior. WrightKit gives agents the same structured interfaces developers use — no scraped logs or brittle regexes.', + capabilities: [ + 'Semantic inspection APIs: rules, symbols, dependencies, control-flow graphs', + 'Machine-readable diagnostics with stable codes, severity levels, and source spans', + 'Validated source editing that agents can verify before applying', + 'workshop-agent: deterministic CLI tools and engineering knowledge for agent harnesses', + 'Non-interactive installer for CI and agent containers' + ], + command: 'wright analyze src/hero.opy --format json', + commandCaption: 'Structured program analysis for programmatic consumption.' + } +] as const; + export const install = { title: 'Install Wright', lead: 'Standalone wright and wright-lsp binaries for macOS (Apple Silicon & Intel), Linux (x86_64), and Windows (x86_64). Zero runtime dependencies — no Node.js, .NET, or external interpreters required.', @@ -130,9 +186,9 @@ export const install = { } } as const; -export const features = { - title: 'Features', - lead: 'Developer tooling — linting, diagnostics, semantic queries, editor assistance, and safe source transformations — as first-class product surfaces.', +export const capabilities = { + title: 'Shared Capabilities', + lead: 'The same tooling foundation — linting, diagnostics, semantic inspection, language services, and agent APIs — applies across all supported source forms.', items: [ { id: 'lint', diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index fe924c3..d60ce4e 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,10 +1,10 @@ @@ -23,8 +23,8 @@ - + + - From 60f494ee489d40753a6d50283c2e6bd9c880a345 Mon Sep 17 00:00:00 2001 From: Teakowa Date: Tue, 18 Aug 2026 19:08:42 +0800 Subject: [PATCH 2/2] fix(homepage): remove stale FeaturesSection.svelte svelte-check scans all .svelte files and failed because FeaturesSection.svelte still imported the renamed 'features' export (now 'capabilities'). The file has been superseded by CapabilitiesSection.svelte and is no longer referenced, so delete it. --- src/lib/components/FeaturesSection.svelte | 35 ----------------------- 1 file changed, 35 deletions(-) delete mode 100644 src/lib/components/FeaturesSection.svelte diff --git a/src/lib/components/FeaturesSection.svelte b/src/lib/components/FeaturesSection.svelte deleted file mode 100644 index 8b1d8cc..0000000 --- a/src/lib/components/FeaturesSection.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - -
-
-
-

{features.title}

-

- {features.lead} -

-
- -
- {#each features.items as item (item.id)} -
-
-

{item.title}

-

- {item.body} -

-
- -
-
- {item.command} - -
-
-
- {/each} -
-
-