Skip to content

Commit f25ed04

Browse files
authored
site: getting-started matches 1.1.0, homepage share previews carry the current pitch, requirements card matches 1.1.0 (#5)
- getting-started: drop the removed 1.0 docs block from the config, restamp to cli@1.1.0, refresh two excerpts - homepage head: title, description, og and twitter tags from the H1 and first pitch sentence; og:image is the drift poster - requirements card and page: the requirement gate runs in every port's verify; every port ships requirement-tests - pick your language: commands verified against the published packages
1 parent 157992e commit f25ed04

3 files changed

Lines changed: 30 additions & 20 deletions

File tree

‎www/getting-started.html‎

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ <h1>One typed model → idiomatic code, in your language.</h1>
5151
for tasks,"</em> <em>"add a priority field and update everything."</em> Because <code>meta&nbsp;init</code> installs
5252
the MetaObjects skills, it knows the model is the source of truth: it edits the model, picks the generators the
5353
job needs, and <strong>generates the code</strong> — it never hand-writes the boilerplate. Every command and
54-
output below is real <span class="real">verified</span>, run against <code>@metaobjectsdev/cli@1.0.9</code>.</p>
54+
output below is real <span class="real">verified</span>, run against <code>@metaobjectsdev/cli@1.1.0</code>.</p>
5555
</section>
5656

5757
<section>
@@ -147,14 +147,17 @@ <h2 class="section-label">3 · Pick your language</h2>
147147
<thead><tr><th>Language</th><th>Install</th><th>Generate</th></tr></thead>
148148
<tbody>
149149
<tr><td><strong>TypeScript</strong> (this guide)</td><td><code>npm i @metaobjectsdev/cli</code></td><td><code>meta gen</code></td></tr>
150-
<tr><td>C# / .NET</td><td><code>dotnet add package MetaObjects</code></td><td><code>dotnet meta gen</code></td></tr>
151-
<tr><td>Java / Kotlin</td><td><code>com.metaobjects</code> (Maven Central)</td><td><code>mvn metaobjects:generate</code></td></tr>
152-
<tr><td>Python</td><td><code>pip install metaobjects</code></td><td><code>metaobjects gen</code></td></tr>
150+
<tr><td>C# / .NET</td><td><code>dotnet tool install --global MetaObjects.Cli</code>, then <code>dotnet meta init</code></td><td><code>dotnet meta gen ./metaobjects --out ./Generated --namespace App</code></td></tr>
151+
<tr><td>Java / Kotlin</td><td><code>com.metaobjects:metaobjects-maven-plugin</code> (Maven Central)</td><td><code>mvn metaobjects:generate</code></td></tr>
152+
<tr><td>Python (3.11+)</td><td><code>pip install metaobjects</code></td><td><code>metaobjects gen</code></td></tr>
153153
</tbody>
154154
</table>
155155
<p class="gs-note">Every port works the same way: <strong>nothing is generated until you name the generators you
156-
want</strong>. There is no default suite to switch off. <code>--list</code> is the catalog in each CLI, and the
157-
C# and Python CLIs take the names you chose with <code>--generators</code>.</p>
156+
want</strong>. There is no default suite to switch off. <code>--list</code> is the catalog in the TypeScript and C# CLIs. Each port keeps the
157+
list you chose in a file you own: <code>generators</code> in <code>metaobjects.config.ts</code> (TypeScript),
158+
<code>codegen/Generators.cs</code> (C#, which <code>dotnet meta init</code> writes empty), <code>metaobjects.config.yaml</code>
159+
(Python), and the plugin's <code>&lt;generators&gt;</code> in your <code>pom.xml</code> (Java and Kotlin, set at plugin level
160+
so the bare goal finds it). <code>--generators</code> only narrows a run to names that list already holds.</p>
158161
</section>
159162

160163
<section>
@@ -198,7 +201,7 @@ <h2 class="section-label">5 · Choose your generators</h2>
198201
queries — Per-entity typed query helpers (findById/create/...). [would emit 1]
199202
requires: entity
200203
api — the HTTP surface — pick ONE framework
201-
routes — Per-entity Fastify CRUD routes (drizzle-fastify mountCrudRoutes). [fastify]
204+
routes — Per-entity Fastify CRUD routes (drizzle-fastify mountCrudRoutes). [fastify, would emit 1 once dbImport is set]
202205
requires: entity
203206
routes-hono — Per-entity Hono CRUD routes (runtime-ts/hono mountCrudRoutes). [hono, would emit 1]
204207
<span class="c"># … client, docs and capability generators, then the ai and iam libraries</span></pre>
@@ -216,7 +219,7 @@ <h2 class="section-label">5 · Choose your generators</h2>
216219

217220
Install what the ejected generators and their output need:
218221
<span class="c"> # … the packages below</span>
219-
These generators read config: apiPrefix, collectionNameOverrides, columnNamingStrategy, dbImport, dialect, extStyle, …</pre>
222+
These generators read config: apiPrefix, collectionNameOverrides, dbImport, dialect, extStyle, outputLayout, …</pre>
220223
<p class="gs-note">Those five files are the point: they're plain TypeScript in your repo, and <strong>yours to
221224
edit</strong>. <code>meta gen</code> runs those local copies — not the ones inside the package — so changing
222225
the shape of the generated code is an ordinary edit to a file you own. Ejecting <code>routes</code> also copies
@@ -247,7 +250,6 @@ <h2 class="section-label">5 · Choose your generators</h2>
247250
namesFile(), <span class="c">// &lt;Entity&gt;Names — physical table/column constants</span>
248251
barrel(), <span class="c">// src/generated/index.ts re-exports</span>
249252
],
250-
docs: { outDir: <span class="s">"./docs/generated"</span>, layout: <span class="s">"flat"</span> },
251253
});</pre>
252254
<p class="gs-note">The rest of the catalog works the same way: React forms, TanStack hooks and grids, Hono routes,
253255
prompt renderers and parsers. <code>meta eject form</code> is all it takes to own one.</p>

‎www/index.html‎

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
<head>
44
<meta charset="UTF-8">
55
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6-
<title>MetaObjects — Cross-language metadata standard for codegen, runtime, drift detection, prompts, and requirements</title>
7-
<meta name="description" content="Define typed entities once. Generate idiomatic code in TypeScript, Java, Kotlin, C#.NET, and Python. Runtime metadata. Drift detection. Conformance-gated. Apache 2.0. Installable in all five languages — npm, Maven Central, NuGet, and PyPI.">
6+
<title>MetaObjects — One typed model of your app. Your agent writes it, your code is generated from it, your build is checked against it.</title>
7+
<meta name="description" content="Coding agents get context — rules files, memories, MCP servers — and context is advisory: nothing fails when the code stops matching it.">
88

99
<link rel="icon" href="/images/mo-logo-only.png" type="image/png">
1010

@@ -14,11 +14,19 @@
1414

1515
<link rel="stylesheet" href="/styles.css">
1616

17-
<meta property="og:title" content="MetaObjects — Cross-language metadata standard">
18-
<meta property="og:description" content="Codegen, runtime metadata, drift detection, prompt construction, capability requirements, and libraries for TypeScript, Java, Kotlin, C#.NET, and Python. Installable in all five — npm, Maven Central, NuGet, PyPI. Apache 2.0.">
17+
<meta property="og:title" content="One typed model of your app. Your agent writes it, your code is generated from it, your build is checked against it.">
18+
<meta property="og:description" content="Coding agents get context — rules files, memories, MCP servers — and context is advisory: nothing fails when the code stops matching it.">
1919
<meta property="og:type" content="website">
20+
<meta property="og:site_name" content="MetaObjects">
2021
<meta property="og:url" content="https://metaobjects.dev/">
21-
<meta property="og:image" content="https://metaobjects.dev/images/mo-logo.png">
22+
<meta property="og:image" content="https://metaobjects.dev/images/cli-drift-poster.png">
23+
<meta property="og:image:width" content="1280">
24+
<meta property="og:image:height" content="720">
25+
<meta property="og:image:alt" content="A terminal recording of meta verify failing the build after a field rename">
26+
<meta name="twitter:card" content="summary_large_image">
27+
<meta name="twitter:title" content="One typed model of your app. Your agent writes it, your code is generated from it, your build is checked against it.">
28+
<meta name="twitter:description" content="Coding agents get context — rules files, memories, MCP servers — and context is advisory: nothing fails when the code stops matching it.">
29+
<meta name="twitter:image" content="https://metaobjects.dev/images/cli-drift-poster.png">
2230

2331
<link rel="alternate" type="text/plain" href="/llms.txt" title="llms.txt — AI assistant index">
2432
</head>
@@ -176,9 +184,9 @@ <h3>Requirements and testing</h3>
176184
<p>A capability is a node in the same model as your entities, so
177185
<code>implementedBy</code> is <strong>resolved, not trusted</strong> — a claim whose
178186
implementation vanished fails the build, and one naming nothing is a warning.
179-
<code>meta verify</code> reports the ledger on every run. It proves the links resolve,
187+
<code>verify</code> reports the ledger on every run. It proves the links resolve,
180188
not that the implementation is correct.</p>
181-
<p class="pillar-maturity">Vocabulary in all five ports; the <code>meta verify</code> checks run in the Node <code>meta</code> CLI; test scaffolding is TypeScript-only. Dogfooded on maintainer-owned projects, no outside adopter yet.</p>
189+
<p class="pillar-maturity">Since 1.1.0 the requirement gate runs in every port's <code>verify</code>, and every port ships a <code>requirement-tests</code> generator; the authoring lint is TypeScript-only (<a href="https://github.com/metaobjectsdev/metaobjects/blob/main/docs/features/requirements.md">docs</a>). Dogfooded on maintainer-owned projects, no outside adopter yet.</p>
182190
<p class="pillar-read"><a href="/requirements.html">Read: capability requirements&nbsp;→</a></p>
183191
</article>
184192
<article class="pillar">

‎www/requirements.html‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@
9797

9898
<main>
9999
<article class="page">
100-
<p class="page-eyebrow">Capability requirements · vocabulary in all five ports · checked by the Node <code>meta</code> CLI</p>
100+
<p class="page-eyebrow">Capability requirements · vocabulary and the verify gate in all five ports</p>
101101
<h1>Check what your AI actually built.</h1>
102102
<p class="page-lede">
103103
A test exercises code that exists. That is the whole reason a passing suite can sit on
@@ -268,9 +268,9 @@ <h3>You write</h3>
268268
<pre class="example-code" data-snippet="ts-requirement-test"></pre>
269269

270270
<p>
271-
<strong>This part is TypeScript-only.</strong> The vocabulary loads and validates in all
272-
five ports, and the <code>meta verify</code> checks run in the Node <code>meta</code> CLI.
273-
The test scaffolding is TypeScript's alone.
271+
<strong>The example above is TypeScript.</strong> Since 1.1.0 the vocabulary loads and validates in
272+
all five ports, the requirement gate runs in every port's <code>verify</code>, and every port
273+
ships a <code>requirement-tests</code> generator. Only the authoring lint is TypeScript-only.
274274
</p>
275275

276276
<h2>Where it sits</h2>

0 commit comments

Comments
 (0)