Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,14 @@ name: CI
on:
push:
branches: [main]
# Nothing the checks build or test reads these files, so a change limited to them skips CI.
paths-ignore: &non-code
- '**/*.md'
- site/**
- .github/workflows/pages.yml
- LICENSE
pull_request:
paths-ignore: *non-code

permissions:
contents: read
Expand Down
2 changes: 1 addition & 1 deletion docs/releasing.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ NeedMark is published to npm by GitHub Actions. Changing `version` in `package.j
2. publishes with `npm publish` through npm trusted publishing, so no npm token is stored in GitHub and npm attaches a provenance attestation;
3. creates the Git tag and GitHub release `v<version>` with generated release notes.

The release workflow does not run E2E tests; the CI workflow runs them on every pull request and push to `main`.
The release workflow does not run E2E tests; the CI workflow runs them on pull requests and pushes to `main` that change more than documentation or the site ([`testing.md`](./testing.md#running)).

## Making a release

Expand Down
2 changes: 1 addition & 1 deletion docs/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ pnpm test:e2e # Playwright: every spec in headed Chromium, @cross-engine test

Install the browser engines once with `pnpm exec playwright install chromium webkit`. On Linux, add `--with-deps` and run E2E under a virtual display, `xvfb-run --auto-servernum pnpm test:e2e`, because Chromium runs headed.

While working, run what the change touches: `pnpm test src/server/storage.test.ts`, `pnpm test:e2e tests/review-ux.spec.ts`, a single test with `-g "<title>"`, or one engine with `--project=chromium`. Rebuild with `pnpm build` before E2E after changing `src/`. Before committing or opening a pull request, all four commands must pass. CI (`.github/workflows/ci.yml`) runs `build`, `typecheck` and `test` on Node 22 and 24, and the full E2E suite on Node 24 on Ubuntu under `xvfb-run`; when E2E fails, the traces in `test-results/` are uploaded as the `playwright-traces` artifact.
While working, run what the change touches: `pnpm test src/server/storage.test.ts`, `pnpm test:e2e tests/review-ux.spec.ts`, a single test with `-g "<title>"`, or one engine with `--project=chromium`. Rebuild with `pnpm build` before E2E after changing `src/`. Before committing or opening a pull request, all four commands must pass. CI (`.github/workflows/ci.yml`) runs `build`, `typecheck` and `test` on Node 22 and 24, and the full E2E suite on Node 24 on Ubuntu under `xvfb-run`; when E2E fails, the traces in `test-results/` are uploaded as the `playwright-traces` artifact. CI skips pull requests and pushes that change only files no check reads: Markdown, `site/`, the Pages workflow and `LICENSE` (`paths-ignore` in the workflow). When a new kind of such file is added, list it there. The `main` ruleset requires no status checks, so a skipped run does not block merging.

E2E specs run sequentially against one demo server on port 4192 that writes to `needmark-e2e-feedback` in the temporary directory (`/private/tmp` on macOS). Specs that need a proxy start their own on other ports. Chromium runs with overlay scrollbars on every platform, so the viewport keeps its full width as on macOS. A spec that needs classic scrollbars styles them with `::-webkit-scrollbar` in the page's initial CSS, because a styled scrollbar is never an overlay in either engine and WebKit ignores one added after the first layout.

Expand Down
11 changes: 11 additions & 0 deletions site/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,17 @@
<title>NeedMark</title>
<meta name="description" content="Point at your UI, leave a comment, and hand it to any coding agent. Local-first visual feedback with context and screenshots.">
<link rel="alternate" hreflang="ja" href="ja/">
<meta property="og:type" content="website">
<meta property="og:site_name" content="NeedMark">
<meta property="og:title" content="NeedMark">
<meta property="og:description" content="Point at your UI, leave a comment, and hand it to any coding agent. Local-first visual feedback with context and screenshots.">
<meta property="og:url" content="https://mssh21.github.io/needmark/">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://mssh21.github.io/needmark/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="NeedMark: Point at your UI, leave a comment, and hand it to any coding agent.">
<meta name="twitter:card" content="summary_large_image">
<link rel="stylesheet" href="style.css">
<link rel="icon" href="favicon.svg" type="image/svg+xml">
</head>
Expand Down
11 changes: 11 additions & 0 deletions site/ja/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,17 @@
<title>NeedMark</title>
<meta name="description" content="UIを指してコメントを書き、いつものコーディングAIへ渡す。コメントと対象の情報、スクリーンショットをローカルファイルに保存します。">
<link rel="alternate" hreflang="en" href="../">
<meta property="og:type" content="website">
<meta property="og:site_name" content="NeedMark">
<meta property="og:title" content="NeedMark">
<meta property="og:description" content="UIを指してコメントを書き、いつものコーディングAIへ渡す。コメントと対象の情報、スクリーンショットをローカルファイルに保存します。">
<meta property="og:url" content="https://mssh21.github.io/needmark/ja/">
<meta property="og:locale" content="ja_JP">
<meta property="og:image" content="https://mssh21.github.io/needmark/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="NeedMark: Point at your UI, leave a comment, and hand it to any coding agent.">
<meta name="twitter:card" content="summary_large_image">
<link rel="stylesheet" href="../style.css">
<link rel="icon" href="../favicon.svg" type="image/svg+xml">
</head>
Expand Down
Binary file added site/og-image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading