Compare commits
7
Commits
e984f15ac1
...
0.1.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b5bfe83140 | ||
|
|
60bf1bb3a9 | ||
|
|
24bd0270c0 | ||
|
|
475136c1e5 | ||
|
|
67e3e13b5e | ||
|
|
595759ca7a | ||
|
|
8495adc47b |
No files matched your search
@@ -16,7 +16,7 @@ jobs:
|
|||||||
# pushes `main` and the tag seconds apart, and the tag points at exactly
|
# pushes `main` and the tag seconds apart, and the tag points at exactly
|
||||||
# the HEAD commit that push delivers — so the branch run would verify the
|
# the HEAD commit that push delivers — so the branch run would verify the
|
||||||
# identical tree the tag run verifies anyway (plus `publish`). When a push
|
# identical tree the tag run verifies anyway (plus `publish`). When a push
|
||||||
# to `main` is headed by a release commit (`:bookmark: Release x.y.z`, the
|
# to `main` is headed by a release commit (`:rocket: Release x.y.z`, the
|
||||||
# single commit release.sh creates), the full CI is skipped here and the
|
# single commit release.sh creates), the full CI is skipped here and the
|
||||||
# tag run becomes the authoritative one for that SHA. All other pushes —
|
# tag run becomes the authoritative one for that SHA. All other pushes —
|
||||||
# PRs, tags, ordinary `main` merges — see `skip=false` and run as before.
|
# PRs, tags, ordinary `main` merges — see `skip=false` and run as before.
|
||||||
@@ -38,7 +38,7 @@ jobs:
|
|||||||
# Keyed on the ref, not just the message: a tag run checks out
|
# Keyed on the ref, not just the message: a tag run checks out
|
||||||
# the same release commit, and `publish` needs its `build`.
|
# the same release commit, and `publish` needs its `build`.
|
||||||
if [ "${REF}" = "refs/heads/main" ] &&
|
if [ "${REF}" = "refs/heads/main" ] &&
|
||||||
git log -1 --format=%s | grep -qE '^:bookmark: Release [0-9]+\.[0-9]+\.[0-9]+$'; then
|
git log -1 --format=%s | grep -qE '^:rocket: Release [0-9]+\.[0-9]+\.[0-9]+$'; then
|
||||||
echo 'Release commit on main — the tag run covers this SHA; skipping full CI.'
|
echo 'Release commit on main — the tag run covers this SHA; skipping full CI.'
|
||||||
echo 'skip=true' >>"${GITHUB_OUTPUT}"
|
echo 'skip=true' >>"${GITHUB_OUTPUT}"
|
||||||
else
|
else
|
||||||
|
|||||||
+11
-1
@@ -7,4 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
[Unreleased]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts
|
## [0.1.1] - 2026-09-14
|
||||||
|
|
||||||
|
- upgrade dependencies
|
||||||
|
|
||||||
|
## [0.1.0] - 2026-09-14
|
||||||
|
|
||||||
|
- basic setup
|
||||||
|
|
||||||
|
[Unreleased]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.1.1...main
|
||||||
|
[0.1.1]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/0.1.0...0.1.1
|
||||||
|
[0.1.0]: https://gitea.e1nsnull.de/tmu/tiny-pattern-ts/compare/20308c5a6d8cccfb09b02ac2ebebd8055e91cd11...0.1.0
|
||||||
+1
-1
@@ -87,7 +87,7 @@ This is why every test in the suite pairs an `expectTypeOf(...)` with an `assert
|
|||||||
- **Branch naming:** `feature/<desc>` / `fix/<desc>` / `chore/<desc>`
|
- **Branch naming:** `feature/<desc>` / `fix/<desc>` / `chore/<desc>`
|
||||||
- **Starting work:** `npm run create:branch -- <prefix>/<desc>`. It refuses, without changing anything, unless the working tree is clean (untracked files included), no merge/rebase/cherry-pick is in progress, `main` matches its upstream, and `npm run test` is green on `main` — so a later failure is always attributable to your edits. The prefix is still _your_ call, inferred from the task; the script validates it rather than guessing it.
|
- **Starting work:** `npm run create:branch -- <prefix>/<desc>`. It refuses, without changing anything, unless the working tree is clean (untracked files included), no merge/rebase/cherry-pick is in progress, `main` matches its upstream, and `npm run test` is green on `main` — so a later failure is always attributable to your edits. The prefix is still _your_ call, inferred from the task; the script validates it rather than guessing it.
|
||||||
- **Merging:** `npm run create:finish` (on the branch). It asserts the same clean-tree / no-operation / current-`main` preconditions, fast-forwards a stale `main` (a true divergence is refused), merges the branch `--no-ff`, runs `npm run verify`, and deletes the branch only after the merge is green. The push is deliberately left to `create:release`, so the merge stays local and reviewable — read the diff yourself before finishing.
|
- **Merging:** `npm run create:finish` (on the branch). It asserts the same clean-tree / no-operation / current-`main` preconditions, fast-forwards a stale `main` (a true divergence is refused), merges the branch `--no-ff`, runs `npm run verify`, and deletes the branch only after the merge is green. The push is deliberately left to `create:release`, so the merge stays local and reviewable — read the diff yourself before finishing.
|
||||||
- CI runs `npm run check` + `npm run test:ci` on every push to `main` — this is the authoritative gate. The one exception: a push headed by a release commit (`:bookmark: Release x.y.z`) skips the full `build`/`maintain` jobs, because `create:release` pushes the tag for that exact commit right after and the tag run is the authoritative one (see `release-gate` in [.gitea/workflows/ci.yml](./.gitea/workflows/ci.yml)).
|
- CI runs `npm run check` + `npm run test:ci` on every push to `main` — this is the authoritative gate. The one exception: a push headed by a release commit (`:rocket: Release x.y.z`) skips the full `build`/`maintain` jobs, because `create:release` pushes the tag for that exact commit right after and the tag run is the authoritative one (see `release-gate` in [.gitea/workflows/ci.yml](./.gitea/workflows/ci.yml)).
|
||||||
- **Releases are NOT triggered by pushes.** Only the maintainer triggers a release (see [Publishing workflow](#publishing-workflow)).
|
- **Releases are NOT triggered by pushes.** Only the maintainer triggers a release (see [Publishing workflow](#publishing-workflow)).
|
||||||
|
|
||||||
## Publishing workflow
|
## Publishing workflow
|
||||||
|
|||||||
+1
-1
@@ -35,7 +35,7 @@ Maintenance:
|
|||||||
✔ Add a minimal dir-listing webserver to the gitea docker setup (e.g. caddy `file_server browse` reusing the existing reverse proxy, or any single-binary static server, lipanski/docker-static-website) @done (9/13/2026, 9:02:37 PM)
|
✔ Add a minimal dir-listing webserver to the gitea docker setup (e.g. caddy `file_server browse` reusing the existing reverse proxy, or any single-binary static server, lipanski/docker-static-website) @done (9/13/2026, 9:02:37 PM)
|
||||||
✔ drop the `actions/upload-artifact` coverage step in favour of the shared-dir layout @done (9/13/2026, 10:37:22 PM)
|
✔ drop the `actions/upload-artifact` coverage step in favour of the shared-dir layout @done (9/13/2026, 10:37:22 PM)
|
||||||
☐ Explore serving coverage for non-tag pushes (e.g. `main/coverage`, PR previews) @low
|
☐ Explore serving coverage for non-tag pushes (e.g. `main/coverage`, PR previews) @low
|
||||||
☐ Manually verify the coverage was created on a real tag push (needs main) @low
|
✔ Manually verify the coverage was created on a real tag push (needs main) @low @done (9/14/2026, 1:55:03 PM)
|
||||||
→ design: no deploy step in CI; the webserver just exposes the shared directory (decided over Gitea Pages / Codecov — neither confirmed available/ wanted)
|
→ design: no deploy step in CI; the webserver just exposes the shared directory (decided over Gitea Pages / Codecov — neither confirmed available/ wanted)
|
||||||
☐ serve docs over self hosted server @low
|
☐ serve docs over self hosted server @low
|
||||||
☐ Add a minimal dir-listing webserver to the gitea docker setup for serving docs (reuse existing reverse proxy)
|
☐ Add a minimal dir-listing webserver to the gitea docker setup for serving docs (reuse existing reverse proxy)
|
||||||
|
|||||||
Generated
+322
-322
File diff suppressed because it is too large.
Load diff
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "tiny-pattern-ts",
|
"name": "tiny-pattern-ts",
|
||||||
"version": "0.0.0",
|
"version": "0.1.1",
|
||||||
"description": "Pattern matching for TypeScript/ESM environments (F#-style, not regex)",
|
"description": "Pattern matching for TypeScript/ESM environments (F#-style, not regex)",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"adt",
|
"adt",
|
||||||
@@ -87,6 +87,6 @@
|
|||||||
"node": ">=26"
|
"node": ">=26"
|
||||||
},
|
},
|
||||||
"allowScripts": {
|
"allowScripts": {
|
||||||
"lefthook@2.1.12": true
|
"lefthook@2.1.14": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -103,10 +103,10 @@ fi
|
|||||||
echo "Amending release commit..."
|
echo "Amending release commit..."
|
||||||
git add package.json package-lock.json "${CHANGELOG}"
|
git add package.json package-lock.json "${CHANGELOG}"
|
||||||
# The exact message format is load-bearing: the `release-gate` job in
|
# The exact message format is load-bearing: the `release-gate` job in
|
||||||
# .gitea/workflows/ci.yml recognizes `:bookmark: Release x.y.z` on main and
|
# .gitea/workflows/ci.yml recognizes `:rocket: Release x.y.z` on main and
|
||||||
# skips the full CI run, since the tag push immediately after verifies the
|
# skips the full CI run, since the tag push immediately after verifies the
|
||||||
# identical SHA (and publishes). Keep the two in sync.
|
# identical SHA (and publishes). Keep the two in sync.
|
||||||
git commit --amend -m ":bookmark: Release ${VERSION}"
|
git commit --amend -m ":rocket: Release ${VERSION}"
|
||||||
|
|
||||||
echo "Creating tag ${VERSION}..."
|
echo "Creating tag ${VERSION}..."
|
||||||
git tag "${VERSION}"
|
git tag "${VERSION}"
|
||||||
|
|||||||
Reference in new issue
Block a user