diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 128e2c7..bd4e1ad 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -19,7 +19,7 @@ body: id: version attributes: label: stackmap version - description: "`npx @hyamero/stackmap --version`, or the version in the skill's SKILL.md" + description: "`npx @omsimos/stackmap --version`, or the version in the skill's SKILL.md" validations: required: true - type: input diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 580ef78..05ef378 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false contact_links: - name: Report a security vulnerability - url: https://github.com/hyamero/stackmap/security/advisories/new + url: https://github.com/omsimos/stackmap/security/advisories/new about: Please report security issues privately, not as a public issue. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 296a31c..99bb0db 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -29,7 +29,7 @@ bun run test && bun run typecheck && bun run build # unit tests, types, viewer | `packages/schema` | Zod schema → `stackmap.schema.json`, the validator and its diagnostics | | `packages/layout` | ELK wrapper and stackmap's own lane and sequence layout: diagram → absolute geometry | | `packages/viewer` | React viewer, built into one self-contained HTML template | -| `packages/cli` | `@hyamero/stackmap`: validate · deliver · serve (the only published package) | +| `packages/cli` | `@omsimos/stackmap`: validate · deliver · serve (the only published package) | | `skill/` | the agent skill that `npx skills add` installs: `SKILL.md`, the schema reference, examples | | `site/` | `@stackmap/site`: the website (Next.js), deployed on Vercel; never published | @@ -92,11 +92,11 @@ workflow's `release` job runs them after the checks pass. - **Release candidates:** every push to `staging` with a `feat`, `fix` or `perf` commit since the last release publishes `x.y.z-rc.N` to npm under the `rc` tag, with a GitHub prerelease. Try one with - `npx @hyamero/stackmap@rc`. + `npx @omsimos/stackmap@rc`. - **Releases:** merging `staging` into `main` with a **merge commit** publishes `x.y.z` under `latest`, with a GitHub release. Don't squash or rebase this merge: the release candidates' tags must stay in `main`'s history, or the next version is miscounted. -- **The version is pinned in the repo:** the skill runs an exact CLI version (`npx -y @hyamero/stackmap@x.y.z`), +- **The version is pinned in the repo:** the skill runs an exact CLI version (`npx -y @omsimos/stackmap@x.y.z`), and the JSON Schema id and the examples name it too. On a release, `scripts/set-version.mjs` updates them all, the bot commits `chore(release): x.y.z [skip ci]` to `main`, and then merges `main` back into `staging`. Release candidates only change the published package, so the repo keeps the last release's version between diff --git a/README.md b/README.md index 2f44a56..01fb59c 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@

- npm - CI - MIT licence + npm + CI + MIT licence

@@ -26,7 +26,7 @@ https://github.com/user-attachments/assets/4dd05dfc-fa5a-42e7-ad1a-6150aeb9ad9f Install the skill into your agent (Claude Code, Cursor, Codex and [others](https://github.com/vercel-labs/skills)): ```bash -npx skills add hyamero/stackmap +npx skills add omsimos/stackmap ``` Then ask: @@ -63,7 +63,7 @@ The agent writes `.stackmap//diagram.json`, validates and repairs it, and ```json { - "$schema": "https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json", + "$schema": "https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json", "kind": "architecture", "title": "Bookshop", "direction": "DOWN", @@ -96,9 +96,9 @@ Full reference: [skill/references/schema.md](skill/references/schema.md), or the The skill runs the CLI for you, and it works on its own too (Node 22.12 or later): ```bash -npx @hyamero/stackmap validate diagram.json [--json] # diagnostics with fixes; exit 1 on errors -npx @hyamero/stackmap deliver diagram.json [-o out.html] [--open] # validate → layout → one offline HTML file -npx @hyamero/stackmap serve diagram.json [--port 4400] # live viewer that reloads on every save +npx @omsimos/stackmap validate diagram.json [--json] # diagnostics with fixes; exit 1 on errors +npx @omsimos/stackmap deliver diagram.json [-o out.html] [--open] # validate → layout → one offline HTML file +npx @omsimos/stackmap serve diagram.json [--port 4400] # live viewer that reloads on every save ``` - **validate** lists every problem with a code, its evidence and the allowed fixes, including card text that won't fit. It exits `1` when the diagram has errors and `2` on usage, IO or internal errors. diff --git a/SECURITY.md b/SECURITY.md index 4a6f277..6e8041c 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -3,10 +3,10 @@ ## Reporting a vulnerability Please report security issues privately through GitHub: -[**Report a vulnerability**](https://github.com/hyamero/stackmap/security/advisories/new). Don't open a public +[**Report a vulnerability**](https://github.com/omsimos/stackmap/security/advisories/new). Don't open a public issue or pull request for them. -Include what an attacker could do, the stackmap version (`npx @hyamero/stackmap --version`), and a diagram or steps +Include what an attacker could do, the stackmap version (`npx @omsimos/stackmap --version`), and a diagram or steps that reproduce it. You'll get a reply within a week. Once a fix is released, the advisory is published with credit to you unless you'd rather stay anonymous. diff --git a/assets/brand/stackmap-github-preview.png b/assets/brand/stackmap-github-preview.png index d0b914b..f5783ef 100644 Binary files a/assets/brand/stackmap-github-preview.png and b/assets/brand/stackmap-github-preview.png differ diff --git a/assets/brand/stackmap-social-card-light.png b/assets/brand/stackmap-social-card-light.png index aeee97a..7810f62 100644 Binary files a/assets/brand/stackmap-social-card-light.png and b/assets/brand/stackmap-social-card-light.png differ diff --git a/assets/brand/stackmap-social-card.png b/assets/brand/stackmap-social-card.png index ac20e3f..d775b0d 100644 Binary files a/assets/brand/stackmap-social-card.png and b/assets/brand/stackmap-social-card.png differ diff --git a/bun.lock b/bun.lock index 215484f..65116d9 100644 --- a/bun.lock +++ b/bun.lock @@ -20,7 +20,7 @@ }, }, "packages/cli": { - "name": "@hyamero/stackmap", + "name": "@omsimos/stackmap", "version": "0.2.0", "bin": { "stackmap": "./dist/cli.js", @@ -263,7 +263,7 @@ "@gsap/react": ["@gsap/react@2.1.2", "", { "peerDependencies": { "gsap": "^3.12.5", "react": ">=17" } }, "sha512-JqliybO1837UcgH2hVOM4VO+38APk3ECNrsuSM4MuXp+rbf+/2IG2K1YJiqfTcXQHH7XlA0m3ykniFYstfq0Iw=="], - "@hyamero/stackmap": ["@hyamero/stackmap@workspace:packages/cli"], + "@omsimos/stackmap": ["@omsimos/stackmap@workspace:packages/cli"], "@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="], diff --git a/package.json b/package.json index 79e557a..29ab25c 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "scripts": { "test": "bun run --filter './packages/*' test", "typecheck": "bun run --filter './packages/*' typecheck", - "build": "bun run --filter @stackmap/viewer build && bun run --filter @hyamero/stackmap build" + "build": "bun run --filter @stackmap/viewer build && bun run --filter @omsimos/stackmap build" }, "devDependencies": { "@commitlint/cli": "^21.2.3", diff --git a/packages/cli/package.json b/packages/cli/package.json index d41ff12..93f3bd9 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,5 +1,5 @@ { - "name": "@hyamero/stackmap", + "name": "@omsimos/stackmap", "version": "0.2.0", "description": "Interactive system diagrams your coding agent writes, as one offline HTML file", "keywords": [ @@ -11,15 +11,18 @@ "elk", "offline", "html", - "dataflow" + "dataflow", + "workflow", + "lifecycle", + "sequence" ], "homepage": "https://stackmap.omsimos.com", "repository": { "type": "git", - "url": "git+https://github.com/hyamero/stackmap.git", + "url": "git+https://github.com/omsimos/stackmap.git", "directory": "packages/cli" }, - "bugs": "https://github.com/hyamero/stackmap/issues", + "bugs": "https://github.com/omsimos/stackmap/issues", "license": "MIT", "type": "module", "bin": { diff --git a/packages/cli/scripts/prepack.mjs b/packages/cli/scripts/prepack.mjs index 8c909f9..9abf131 100644 --- a/packages/cli/scripts/prepack.mjs +++ b/packages/cli/scripts/prepack.mjs @@ -5,5 +5,5 @@ for (const f of ['README.md', 'LICENSE', 'THIRD_PARTY_NOTICES.md']) copyFileSync // npm resolves relative images against the package, not the repo root: point the README's images at GitHub. const readme = new URL('../README.md', import.meta.url); -const raw = 'https://raw.githubusercontent.com/hyamero/stackmap/main/'; +const raw = 'https://raw.githubusercontent.com/omsimos/stackmap/main/'; writeFileSync(readme, readFileSync(readme, 'utf8').replace(/(src|srcset)="(assets\/[^"]+)"/g, `$1="${raw}$2"`)); diff --git a/packages/cli/test/skill.test.ts b/packages/cli/test/skill.test.ts index 71b73f7..4d35725 100644 --- a/packages/cli/test/skill.test.ts +++ b/packages/cli/test/skill.test.ts @@ -1,5 +1,6 @@ import { readdirSync, readFileSync } from 'node:fs'; import { describe, expect, it } from 'vitest'; +import { DIAGRAM_KINDS } from '@stackmap/core'; import { SCHEMA_ID } from '@stackmap/schema'; const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')) as { name: string; version: string }; @@ -10,7 +11,7 @@ const pinned = `${pkg.name}@${pkg.version}`; describe('skill ↔ CLI version', () => { it('SKILL.md runs exactly this CLI version', () => { const md = skill('SKILL.md'); - const pins = [...md.matchAll(/@hyamero\/stackmap@[\w.-]+/g)].map((m) => m[0]); + const pins = [...md.matchAll(/@omsimos\/stackmap@[\w.-]+/g)].map((m) => m[0]); expect(pins.length).toBeGreaterThan(0); expect(new Set(pins)).toEqual(new Set([pinned])); expect(md).toContain(`version: "${pkg.version}"`); @@ -24,6 +25,11 @@ describe('skill ↔ CLI version', () => { }); describe('package.json', () => { + it('names every diagram kind in its npm keywords, so a search for any of them finds the package', () => { + const { keywords } = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')) as { keywords: string[] }; + for (const kind of DIAGRAM_KINDS) expect(keywords, kind).toContain(kind); + }); + it('declares bin paths the way npm publish accepts them (no "./" prefix, or npm drops the bin)', () => { const { bin } = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')) as { bin: Record }; expect(bin).toEqual({ stackmap: 'dist/cli.js' }); diff --git a/packages/core/src/samples/index.ts b/packages/core/src/samples/index.ts index e2068b5..5733531 100644 --- a/packages/core/src/samples/index.ts +++ b/packages/core/src/samples/index.ts @@ -16,7 +16,7 @@ export const commerceApi: DiagramDraft = { kind: 'architecture', title: 'Commerce API', subtitle: 'Production topology', - source: { url: 'https://github.com/hyamero/stackmap/blob/main' }, + source: { url: 'https://github.com/omsimos/stackmap/blob/main' }, direction: 'RIGHT', nodes: [ { diff --git a/packages/schema/src/schema.ts b/packages/schema/src/schema.ts index 4462fa4..afd1281 100644 --- a/packages/schema/src/schema.ts +++ b/packages/schema/src/schema.ts @@ -117,7 +117,7 @@ const View = z.strictObject({ export const DiagramDraftSchema = z .strictObject({ - $schema: z.string().optional().meta({ description: `Optional; set it to ${'`'}https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json${'`'} for editor completion.` }), + $schema: z.string().optional().meta({ description: `Optional; set it to ${'`'}https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json${'`'} for editor completion.` }), kind: z.enum(DIAGRAM_KINDS), density: z .enum(['compact']) @@ -145,7 +145,7 @@ export const DiagramDraftSchema = z .meta({ title: 'stackmap diagram', description: 'Agent-authored diagram. Layout is computed by stackmap; never give coordinates.' }); /** Served from the published CLI package, so it is pinned to the same version as the validator. */ -export const SCHEMA_ID = 'https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json'; +export const SCHEMA_ID = 'https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json'; export function buildJsonSchema(): Record { return { ...z.toJSONSchema(DiagramDraftSchema, { target: 'draft-2020-12' }), $id: SCHEMA_ID }; diff --git a/packages/schema/stackmap.schema.json b/packages/schema/stackmap.schema.json index 1c2b733..06f3c79 100644 --- a/packages/schema/stackmap.schema.json +++ b/packages/schema/stackmap.schema.json @@ -3,7 +3,7 @@ "type": "object", "properties": { "$schema": { - "description": "Optional; set it to `https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json` for editor completion.", + "description": "Optional; set it to `https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json` for editor completion.", "type": "string" }, "kind": { @@ -510,5 +510,5 @@ "additionalProperties": false, "title": "stackmap diagram", "description": "Agent-authored diagram. Layout is computed by stackmap; never give coordinates.", - "$id": "https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json" + "$id": "https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json" } diff --git a/packages/viewer/e2e/explore.spec.ts b/packages/viewer/e2e/explore.spec.ts index 4042c9c..37ae7b5 100644 --- a/packages/viewer/e2e/explore.spec.ts +++ b/packages/viewer/e2e/explore.spec.ts @@ -26,7 +26,7 @@ test('clicking a card selects it: inspector shows its data, connections and evid await expect(panel.getByText('Read replicas', { exact: true })).toBeVisible(); await expect(panel.getByRole('list', { name: 'Connections' }).getByRole('button')).toHaveCount(3); const link = panel.getByRole('link', { name: 'infra/orders/postgres.tf:12' }); - await expect(link).toHaveAttribute('href', 'https://github.com/hyamero/stackmap/blob/main/infra/orders/postgres.tf#L12'); + await expect(link).toHaveAttribute('href', 'https://github.com/omsimos/stackmap/blob/main/infra/orders/postgres.tf#L12'); await expect(panel.getByText('Primary + 2 read replicas')).toBeVisible(); // Its direct edges take the source (service) tint. await expect(page.locator('path[data-edge-id="e-1-orders"]')).toHaveAttribute('data-tint', 'service'); diff --git a/packages/viewer/index.html b/packages/viewer/index.html index 08132a1..7c08cb0 100644 --- a/packages/viewer/index.html +++ b/packages/viewer/index.html @@ -2,11 +2,11 @@ diff --git a/packages/viewer/src/samples/commerce-api.layout.ts b/packages/viewer/src/samples/commerce-api.layout.ts index 2aac715..ed6a207 100644 --- a/packages/viewer/src/samples/commerce-api.layout.ts +++ b/packages/viewer/src/samples/commerce-api.layout.ts @@ -7,7 +7,7 @@ export const commerceApiLayout: LaidOutDiagram = { "title": "Commerce API", "subtitle": "Production topology", "source": { - "url": "https://github.com/hyamero/stackmap/blob/main" + "url": "https://github.com/omsimos/stackmap/blob/main" }, "direction": "RIGHT", "nodes": [ diff --git a/scripts/set-version.mjs b/scripts/set-version.mjs index 71aca31..2a09a3e 100644 --- a/scripts/set-version.mjs +++ b/scripts/set-version.mjs @@ -1,5 +1,5 @@ // Sets the release version everywhere it is pinned: the CLI's package.json and lockfile entry, and every -// `@hyamero/stackmap@x.y.z` in tracked files (the skill's npx commands, the JSON Schema id, the examples). +// `@omsimos/stackmap@x.y.z` in tracked files (the skill's npx commands, the JSON Schema id, the examples). // semantic-release runs it before packing; `skill.test.ts` checks the pins agree. Usage: node scripts/set-version.mjs import { execFileSync } from 'node:child_process'; import { readFileSync, writeFileSync } from 'node:fs'; @@ -23,12 +23,12 @@ const changed = []; // Only the version line, so the rest of each file keeps its formatting. if (edit('packages/cli/package.json', (s) => s.replace(/^( "version": )"[^"]+"/m, `$1"${version}"`))) changed.push('packages/cli/package.json'); // `bun install --frozen-lockfile` fails when a workspace's version no longer matches its lockfile entry. -if (edit('bun.lock', (s) => s.replace(/("packages\/cli": \{\s*"name": "@hyamero\/stackmap",\s*"version": )"[^"]+"/, `$1"${version}"`))) changed.push('bun.lock'); +if (edit('bun.lock', (s) => s.replace(/("packages\/cli": \{\s*"name": "@omsimos\/stackmap",\s*"version": )"[^"]+"/, `$1"${version}"`))) changed.push('bun.lock'); if (edit('skill/SKILL.md', (s) => s.replace(/^( version: )"[^"]+"/m, `$1"${version}"`))) changed.push('skill/SKILL.md'); -const pin = /@hyamero\/stackmap@\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?/g; -const tracked = execFileSync('git', ['grep', '-lE', '@hyamero/stackmap@[0-9]', '--', ':!bun.lock'], { cwd: root, encoding: 'utf8' }); +const pin = /@omsimos\/stackmap@\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?/g; +const tracked = execFileSync('git', ['grep', '-lE', '@omsimos/stackmap@[0-9]', '--', ':!bun.lock'], { cwd: root, encoding: 'utf8' }); for (const path of tracked.split('\n').filter(Boolean)) - if (edit(path, (s) => s.replace(pin, `@hyamero/stackmap@${version}`)) && !changed.includes(path)) changed.push(path); + if (edit(path, (s) => s.replace(pin, `@omsimos/stackmap@${version}`)) && !changed.includes(path)) changed.push(path); console.log(`stackmap ${version}: ${changed.length ? changed.join(', ') : 'already set'}`); diff --git a/site/app/docs/cli/page.tsx b/site/app/docs/cli/page.tsx index 1ff62da..5dd2346 100644 --- a/site/app/docs/cli/page.tsx +++ b/site/app/docs/cli/page.tsx @@ -16,7 +16,7 @@ export const metadata: Metadata = { }; const DEMO = '.stackmap/commerce-api/diagram.json'; -const npx = `npx @hyamero/stackmap@${SITE.version}`; +const npx = `npx @omsimos/stackmap@${SITE.version}`; function Synopsis({ name }: { name: (typeof CLI_COMMANDS)[number]['name'] }) { const c = CLI_COMMANDS.find((x) => x.name === name)!; diff --git a/site/app/docs/page.tsx b/site/app/docs/page.tsx index 53fb902..55dce03 100644 --- a/site/app/docs/page.tsx +++ b/site/app/docs/page.tsx @@ -25,7 +25,7 @@ export const metadata: Metadata = { const ASK = 'Make an architecture diagram of this repository, backed by evidence from the code.'; // The agent's file pins the schema to the installed CLI, so the example does too. -const JSON_TEXT = SOURCES.quickStart.replace('{\n', `{\n "$schema": "https://unpkg.com/@hyamero/stackmap@${SITE.version}/dist/stackmap.schema.json",\n`); +const JSON_TEXT = SOURCES.quickStart.replace('{\n', `{\n "$schema": "https://unpkg.com/@omsimos/stackmap@${SITE.version}/dist/stackmap.schema.json",\n`); const FILE = '.stackmap/commerce-api/diagram.json'; function Step({ n, id, title, children }: { n: number; id: string; title: string; children: React.ReactNode }) { diff --git a/site/app/docs/schema/page.tsx b/site/app/docs/schema/page.tsx index 7dd26d8..258a58f 100644 --- a/site/app/docs/schema/page.tsx +++ b/site/app/docs/schema/page.tsx @@ -115,7 +115,7 @@ export default function SchemaPage() {

diff --git a/site/app/opengraph-image.png b/site/app/opengraph-image.png index ac20e3f..d775b0d 100644 Binary files a/site/app/opengraph-image.png and b/site/app/opengraph-image.png differ diff --git a/site/app/twitter-image.png b/site/app/twitter-image.png index ac20e3f..d775b0d 100644 Binary files a/site/app/twitter-image.png and b/site/app/twitter-image.png differ diff --git a/site/components/site/links.ts b/site/components/site/links.ts index ce45a66..f74b03c 100644 --- a/site/components/site/links.ts +++ b/site/components/site/links.ts @@ -1,4 +1,4 @@ -const repo = 'https://github.com/hyamero/stackmap'; +const repo = 'https://github.com/omsimos/stackmap'; export const LINKS = { how: { label: 'How it works', href: '/#how' }, @@ -14,7 +14,7 @@ export const LINKS = { // The film is the video in the README, hosted by GitHub. film: { label: 'Launch film', href: `${repo}#readme` }, github: { label: 'GitHub', href: repo }, - npm: { label: 'npm', href: 'https://www.npmjs.com/package/@hyamero/stackmap' }, + npm: { label: 'npm', href: 'https://www.npmjs.com/package/@omsimos/stackmap' }, contributing: { label: 'Contributing', href: `${repo}/blob/main/CONTRIBUTING.md` }, security: { label: 'Security', href: `${repo}/blob/main/SECURITY.md` }, archify: { label: 'archify', href: 'https://github.com/tt-a1i/archify' }, diff --git a/site/content/examples/repo-architecture.json b/site/content/examples/repo-architecture.json index 769bad9..b37ffdc 100644 --- a/site/content/examples/repo-architecture.json +++ b/site/content/examples/repo-architecture.json @@ -4,7 +4,7 @@ "subtitle": "How an agent-written diagram.json becomes the delivered viewer", "direction": "DOWN", "source": { - "url": "https://github.com/hyamero/stackmap/blob/a2111f0590892de04f16c2d2f11ad877a502d89b" + "url": "https://github.com/omsimos/stackmap/blob/a2111f0590892de04f16c2d2f11ad877a502d89b" }, "groups": [ { @@ -61,7 +61,7 @@ "type": "service", "group": "pipeline", "card": { - "title": "@hyamero/stackmap", + "title": "@omsimos/stackmap", "subtitle": "CLI: validate/deliver/serve", "rows": [ { diff --git a/site/e2e/smoke.spec.ts b/site/e2e/smoke.spec.ts index a7d4f6a..df1a341 100644 --- a/site/e2e/smoke.spec.ts +++ b/site/e2e/smoke.spec.ts @@ -236,7 +236,7 @@ test('the docs copy button confirms', async ({ page, context }) => { await page.goto('/docs'); await page.getByRole('button', { name: 'Copy the install command' }).click(); await expect(page.getByRole('button', { name: 'Copied' })).toBeVisible(); - expect(await page.evaluate(() => navigator.clipboard.readText())).toBe('npx skills add hyamero/stackmap'); + expect(await page.evaluate(() => navigator.clipboard.readText())).toBe('npx skills add omsimos/stackmap'); }); test('on a phone the nav menu opens the site links and closes on Escape', async ({ browser }) => { diff --git a/site/lib/data/data.test.ts b/site/lib/data/data.test.ts index e4a35d4..66b278a 100644 --- a/site/lib/data/data.test.ts +++ b/site/lib/data/data.test.ts @@ -21,8 +21,8 @@ describe('version', () => { // Built, not written out: a literal pin would be rewritten by every release (see tests/no-pins.test.ts). const version = '1.2.3'; expect(installCommands(version)).toEqual({ - skill: 'npx skills add hyamero/stackmap', - cli: `npx @hyamero/stackmap@${version} deliver diagram.json`, + skill: 'npx skills add omsimos/stackmap', + cli: `npx @omsimos/stackmap@${version} deliver diagram.json`, }); }); }); diff --git a/site/lib/data/version.ts b/site/lib/data/version.ts index 99fc821..4451e08 100644 --- a/site/lib/data/version.ts +++ b/site/lib/data/version.ts @@ -7,5 +7,5 @@ export function readCliVersion(pkg: URL = CLI_PACKAGE): string { // The skill command has no version: `skills add` installs from the repo, not from npm. export function installCommands(version: string) { - return { skill: 'npx skills add hyamero/stackmap', cli: `npx @hyamero/stackmap@${version} deliver diagram.json` }; + return { skill: 'npx skills add omsimos/stackmap', cli: `npx @omsimos/stackmap@${version} deliver diagram.json` }; } diff --git a/site/lib/schema-docs.ts b/site/lib/schema-docs.ts index 65a59fe..ad41856 100644 --- a/site/lib/schema-docs.ts +++ b/site/lib/schema-docs.ts @@ -68,7 +68,7 @@ export const SAMPLES: Record = { { file: 'services/api/src/db.ts', line: 8 }, ], }, - source: { file: 'source', place: 'source', value: { url: 'https://github.com/hyamero/stackmap/blob/a2111f0590892de04f16c2d2f11ad877a502d89b' } }, + source: { file: 'source', place: 'source', value: { url: 'https://github.com/omsimos/stackmap/blob/a2111f0590892de04f16c2d2f11ad877a502d89b' } }, edges: { file: 'edges', place: 'array', @@ -127,5 +127,5 @@ export function diagramOutline(version: string, draft: object): string { const d = draft as Record; const keys = ['kind', 'title', 'subtitle', 'direction'].filter((k) => d[k] !== undefined).map((k) => ` "${k}": ${JSON.stringify(d[k])}`); const arrays = ['groups', 'lanes', 'phases', 'nodes', 'edges', 'views', 'notes'].flatMap((k) => (Array.isArray(d[k]) && d[k].length ? [` "${k}": [ … ${d[k].length} ]`] : [])); - return ['{', [` "$schema": "https://unpkg.com/@hyamero/stackmap@${version}/dist/stackmap.schema.json"`, ...keys, ...arrays].join(',\n'), '}'].join('\n'); + return ['{', [` "$schema": "https://unpkg.com/@omsimos/stackmap@${version}/dist/stackmap.schema.json"`, ...keys, ...arrays].join(',\n'), '}'].join('\n'); } diff --git a/site/lib/seo.ts b/site/lib/seo.ts index 602f662..55c8de2 100644 --- a/site/lib/seo.ts +++ b/site/lib/seo.ts @@ -7,7 +7,7 @@ type Env = Record; export const SITE_NAME = 'stackmap'; export const DESCRIPTION = 'Interactive system diagrams your coding agent writes, as one offline HTML file.'; -export const REPO = 'https://github.com/hyamero/stackmap'; +export const REPO = 'https://github.com/omsimos/stackmap'; // Next merges metadata shallowly: a page that sets openGraph replaces the layout's, and with it the root's // opengraph-image file, so pages spread this and it names the image (and its alt.txt) again. diff --git a/site/tests/links.test.ts b/site/tests/links.test.ts index e59c9a0..e70c509 100644 --- a/site/tests/links.test.ts +++ b/site/tests/links.test.ts @@ -10,8 +10,8 @@ describe('site links', () => { }); it('points the project links at the public repo and npm', () => { - expect(LINKS.github.href).toBe('https://github.com/hyamero/stackmap'); - expect(LINKS.npm.href).toBe('https://www.npmjs.com/package/@hyamero/stackmap'); - expect(LINKS.contributing.href).toBe('https://github.com/hyamero/stackmap/blob/main/CONTRIBUTING.md'); + expect(LINKS.github.href).toBe('https://github.com/omsimos/stackmap'); + expect(LINKS.npm.href).toBe('https://www.npmjs.com/package/@omsimos/stackmap'); + expect(LINKS.contributing.href).toBe('https://github.com/omsimos/stackmap/blob/main/CONTRIBUTING.md'); }); }); diff --git a/site/tests/no-pins.test.ts b/site/tests/no-pins.test.ts index 1e38205..feed684 100644 --- a/site/tests/no-pins.test.ts +++ b/site/tests/no-pins.test.ts @@ -2,14 +2,14 @@ import { execFileSync } from 'node:child_process'; import { fileURLToPath } from 'node:url'; import { describe, expect, it } from 'vitest'; -// scripts/set-version.mjs rewrites every `@hyamero/stackmap@x.y.z` in tracked files, but the release commit +// scripts/set-version.mjs rewrites every `@omsimos/stackmap@x.y.z` in tracked files, but the release commit // never includes site/: a pin here would be edited in the release job's tree and left uncommitted. describe('no version pins in site/', () => { - it('has no @hyamero/stackmap@ literal in any tracked or new file', () => { + it('has no @omsimos/stackmap@ literal in any tracked or new file', () => { const repo = fileURLToPath(new URL('../../', import.meta.url)); let hits = ''; try { - hits = execFileSync('git', ['grep', '-nE', '--untracked', '@hyamero/stackmap@[0-9]', '--', 'site'], { cwd: repo, encoding: 'utf8' }); + hits = execFileSync('git', ['grep', '-nE', '--untracked', '@omsimos/stackmap@[0-9]', '--', 'site'], { cwd: repo, encoding: 'utf8' }); } catch { // git grep exits 1 when nothing matches } diff --git a/skill/SKILL.md b/skill/SKILL.md index 74f08a9..655f9f8 100644 --- a/skill/SKILL.md +++ b/skill/SKILL.md @@ -17,9 +17,9 @@ You write a typed diagram JSON. `stackmap` validates it, lays it out (you never Run it as one literal command (each shell call starts fresh, so don't rely on variables set earlier): ```bash -npx -y @hyamero/stackmap@0.2.0 validate --json -npx -y @hyamero/stackmap@0.2.0 deliver --open -npx -y @hyamero/stackmap@0.2.0 serve # optional live preview; see below +npx -y @omsimos/stackmap@0.2.0 validate --json +npx -y @omsimos/stackmap@0.2.0 deliver --open +npx -y @omsimos/stackmap@0.2.0 serve # optional live preview; see below ``` If the environment variable `STACKMAP_BIN` is set, it is the path of a stackmap executable: use `"$STACKMAP_BIN" validate …` (quoted, exactly like that) instead of `npx …`. diff --git a/skill/examples/checkout.sequence.json b/skill/examples/checkout.sequence.json index 4b2e00f..9f44065 100644 --- a/skill/examples/checkout.sequence.json +++ b/skill/examples/checkout.sequence.json @@ -1,5 +1,5 @@ { - "$schema": "https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json", + "$schema": "https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json", "kind": "sequence", "title": "Checkout request", "subtitle": "Card payment with a fraud check", diff --git a/skill/examples/clickstream.dataflow.json b/skill/examples/clickstream.dataflow.json index ee2e4a2..2ac8cc9 100644 --- a/skill/examples/clickstream.dataflow.json +++ b/skill/examples/clickstream.dataflow.json @@ -1,5 +1,5 @@ { - "$schema": "https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json", + "$schema": "https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json", "kind": "dataflow", "title": "Clickstream analytics", "subtitle": "From SDK events to dashboards", diff --git a/skill/examples/job.lifecycle.json b/skill/examples/job.lifecycle.json index 8bb16e3..c38ca14 100644 --- a/skill/examples/job.lifecycle.json +++ b/skill/examples/job.lifecycle.json @@ -1,5 +1,5 @@ { - "$schema": "https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json", + "$schema": "https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json", "kind": "lifecycle", "title": "Export job lifecycle", "subtitle": "States of one export job", diff --git a/skill/examples/release.workflow.json b/skill/examples/release.workflow.json index df937bf..2d67753 100644 --- a/skill/examples/release.workflow.json +++ b/skill/examples/release.workflow.json @@ -1,5 +1,5 @@ { - "$schema": "https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json", + "$schema": "https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json", "kind": "workflow", "title": "Release delivery", "subtitle": "From merge to announced release", diff --git a/skill/examples/web-app.architecture.json b/skill/examples/web-app.architecture.json index cdcbf92..7ed1264 100644 --- a/skill/examples/web-app.architecture.json +++ b/skill/examples/web-app.architecture.json @@ -1,5 +1,5 @@ { - "$schema": "https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json", + "$schema": "https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json", "kind": "architecture", "title": "Bookshop", "subtitle": "Web storefront and order pipeline", diff --git a/skill/references/schema.md b/skill/references/schema.md index 3faad8c..25843f8 100644 --- a/skill/references/schema.md +++ b/skill/references/schema.md @@ -7,7 +7,7 @@ Agent-authored diagram. Layout is computed by stackmap; never give coordinates. | Field | Type | Required | Notes | |---|---|---|---| -| `$schema` | string | no | Optional; set it to `https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json` for editor completion | +| `$schema` | string | no | Optional; set it to `https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json` for editor completion | | `kind` | enum | yes | one of `architecture`, `dataflow`, `workflow`, `lifecycle`, `sequence` | | `density` | enum | no | Architecture and dataflow: compact cards (title, subtitle, brand, tag) for long chains or summaries. one of `compact` | | `title` | string | yes | non-blank | diff --git a/skill/references/stackmap.schema.json b/skill/references/stackmap.schema.json index 1c2b733..06f3c79 100644 --- a/skill/references/stackmap.schema.json +++ b/skill/references/stackmap.schema.json @@ -3,7 +3,7 @@ "type": "object", "properties": { "$schema": { - "description": "Optional; set it to `https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json` for editor completion.", + "description": "Optional; set it to `https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json` for editor completion.", "type": "string" }, "kind": { @@ -510,5 +510,5 @@ "additionalProperties": false, "title": "stackmap diagram", "description": "Agent-authored diagram. Layout is computed by stackmap; never give coordinates.", - "$id": "https://unpkg.com/@hyamero/stackmap@0.2.0/dist/stackmap.schema.json" + "$id": "https://unpkg.com/@omsimos/stackmap@0.2.0/dist/stackmap.schema.json" }