From 2d5ff80a42ec59733376f9cae01f026ad6b79335 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Aug 2026 20:59:09 +0000 Subject: [PATCH] Version Packages --- .changeset/locale-cluster-shape.md | 44 ---------------------------- .changeset/nk-dev-cold-type-check.md | 12 -------- packages/nk-blog/CHANGELOG.md | 7 +++++ packages/nk-blog/package.json | 2 +- packages/nk-dev/CHANGELOG.md | 13 ++++++++ packages/nk-dev/package.json | 2 +- packages/nk-i18n/CHANGELOG.md | 44 ++++++++++++++++++++++++++++ packages/nk-i18n/package.json | 2 +- packages/nk-seo/CHANGELOG.md | 44 ++++++++++++++++++++++++++++ packages/nk-seo/package.json | 2 +- 10 files changed, 112 insertions(+), 60 deletions(-) delete mode 100644 .changeset/locale-cluster-shape.md delete mode 100644 .changeset/nk-dev-cold-type-check.md diff --git a/.changeset/locale-cluster-shape.md b/.changeset/locale-cluster-shape.md deleted file mode 100644 index 9eb8257..0000000 --- a/.changeset/locale-cluster-shape.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -"@ingram-tech/nk-i18n": minor -"@ingram-tech/nk-seo": minor ---- - -Fix the locale cluster shape, and give middleware one way to be written. - -**Breaking, deliberately.** `prefixDefaultLocale` is removed and nothing -replaces it: the cluster's shape is no longer configurable. Whichever strategy -you pick, every locale gets its own address (the default included) and the bare -path belongs to no locale — it negotiates, and it is `x-default`. - -Previously the prefix strategy made the bare path the default locale's URL, so -`localeFromUrl` returned `defaultLocale` for it. That is the URL signal, which -outranks the cookie, so a visitor who chose French snapped back to English on -the first bare internal link — and every site that starts with a cookie switcher -has bare internal links. The two shapes now excluded (bare path IS the default -locale, bare path redirects on perceived language) are the two that go wrong; -offering either as an option is how a fleet drifts. - -- **`localeProxy(routing, request)`** is the whole middleware side: forwards the - pathname and locale headers, rewrites `/fr/about` → `/about` so the app keeps - one route tree, remembers an explicit choice in the cookie, never redirects. - Middleware that does more passes `requestHeaders` in and keeps editing the - response. Replaces `forwardUrlLocale` and the strip/rewrite/cookie/consolidate - code every prefix site was hand-writing. -- **`forwardRequestContext`** sets nk-seo's `x-pathname` and the locale header - together, so the two conventions can't be wired separately and one forgotten. -- **`defineLocaleRouting` is generic over the locale union.** `isLocale` is a - type guard, `resolve` / `localeFromUrl` / `createLocaleResolver` return `L`. - Sites stop writing their own guards and casts. -- **`hrefLangTags` and `cookieName` move onto routing.** A site with regional - tags no longer builds a second config object, which was exactly the drift this - package exists to prevent. `routing.htmlLang(locale)` gives the `` - value, and `hreflangConfigFor` passes the tags through. -- **`routing.stripLocale(pathname)`** exposes the app-facing path. - -nk-seo's `HreflangConfig` drops `defaultLocale` and `prefixDefaultLocale`; -`x-default` is always the bare path now, so neither is needed. - -Migration: delete `prefixDefaultLocale`, replace `forwardUrlLocale` + -manual `x-pathname` with `localeProxy`, drop any local `isLocale` guard and -`as Locale` cast. Prefix sites gain `/en/…` as a real address — verify with -`assertHreflangCluster` from `@ingram-tech/nk-seo/verify`. diff --git a/.changeset/nk-dev-cold-type-check.md b/.changeset/nk-dev-cold-type-check.md deleted file mode 100644 index 2d71bbe..0000000 --- a/.changeset/nk-dev-cold-type-check.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@ingram-tech/nk-dev": minor ---- - -`nk type-check` starts cold when the dependency tree moved: a `*.tsbuildinfo` -older than `bun.lock` / `package.json` is dropped before the run, because -`tsc --incremental` does not reliably re-check a program after a dependency's -`.d.ts` changes and a green result against the stale cache means nothing. -`--cold` drops the cache unconditionally. `nk doctor` now flags a `"prettier"` -key in `package.json` and `.prettierrc*` files alongside `.prettierignore` -(all `--fix`able), and warns when a site has no `ci` script or one that skips -`nk check` / `nk type-check`. diff --git a/packages/nk-blog/CHANGELOG.md b/packages/nk-blog/CHANGELOG.md index 7d136de..64ad2d7 100644 --- a/packages/nk-blog/CHANGELOG.md +++ b/packages/nk-blog/CHANGELOG.md @@ -1,5 +1,12 @@ # @ingram-tech/nk-blog +## 0.1.7 + +### Patch Changes + +- Updated dependencies [c9307ad] + - @ingram-tech/nk-seo@0.9.0 + ## 0.1.6 ### Patch Changes diff --git a/packages/nk-blog/package.json b/packages/nk-blog/package.json index 9cae52d..681dcb6 100644 --- a/packages/nk-blog/package.json +++ b/packages/nk-blog/package.json @@ -1,6 +1,6 @@ { "name": "@ingram-tech/nk-blog", - "version": "0.1.6", + "version": "0.1.7", "description": "File-based blog foundation for Next.js sites: frontmatter schema, build-time reader, limited-MDX rendering, a typed component contract with unstyled defaults, GitHub read/publish, and RSS.", "license": "MIT", "type": "module", diff --git a/packages/nk-dev/CHANGELOG.md b/packages/nk-dev/CHANGELOG.md index 895e7a5..2dac386 100644 --- a/packages/nk-dev/CHANGELOG.md +++ b/packages/nk-dev/CHANGELOG.md @@ -1,5 +1,18 @@ # @ingram-tech/nk-dev +## 0.13.0 + +### Minor Changes + +- c9307ad: `nk type-check` starts cold when the dependency tree moved: a `*.tsbuildinfo` + older than `bun.lock` / `package.json` is dropped before the run, because + `tsc --incremental` does not reliably re-check a program after a dependency's + `.d.ts` changes and a green result against the stale cache means nothing. + `--cold` drops the cache unconditionally. `nk doctor` now flags a `"prettier"` + key in `package.json` and `.prettierrc*` files alongside `.prettierignore` + (all `--fix`able), and warns when a site has no `ci` script or one that skips + `nk check` / `nk type-check`. + ## 0.12.2 ### Patch Changes diff --git a/packages/nk-dev/package.json b/packages/nk-dev/package.json index 077a695..5d9e30c 100644 --- a/packages/nk-dev/package.json +++ b/packages/nk-dev/package.json @@ -1,6 +1,6 @@ { "name": "@ingram-tech/nk-dev", - "version": "0.12.2", + "version": "0.13.0", "description": "The nextkit dev toolchain in one package: the `nk` CLI plus shared oxlint/oxfmt, TypeScript, and Vitest config, the format-on-commit hook, and the AI agent guide. `nk init` scaffolds a site to use it.", "license": "MIT", "type": "module", diff --git a/packages/nk-i18n/CHANGELOG.md b/packages/nk-i18n/CHANGELOG.md index 4eb9490..3e6ddce 100644 --- a/packages/nk-i18n/CHANGELOG.md +++ b/packages/nk-i18n/CHANGELOG.md @@ -1,5 +1,49 @@ # @ingram-tech/nk-i18n +## 0.5.0 + +### Minor Changes + +- c9307ad: Fix the locale cluster shape, and give middleware one way to be written. + + **Breaking, deliberately.** `prefixDefaultLocale` is removed and nothing + replaces it: the cluster's shape is no longer configurable. Whichever strategy + you pick, every locale gets its own address (the default included) and the bare + path belongs to no locale — it negotiates, and it is `x-default`. + + Previously the prefix strategy made the bare path the default locale's URL, so + `localeFromUrl` returned `defaultLocale` for it. That is the URL signal, which + outranks the cookie, so a visitor who chose French snapped back to English on + the first bare internal link — and every site that starts with a cookie switcher + has bare internal links. The two shapes now excluded (bare path IS the default + locale, bare path redirects on perceived language) are the two that go wrong; + offering either as an option is how a fleet drifts. + + - **`localeProxy(routing, request)`** is the whole middleware side: forwards the + pathname and locale headers, rewrites `/fr/about` → `/about` so the app keeps + one route tree, remembers an explicit choice in the cookie, never redirects. + Middleware that does more passes `requestHeaders` in and keeps editing the + response. Replaces `forwardUrlLocale` and the strip/rewrite/cookie/consolidate + code every prefix site was hand-writing. + - **`forwardRequestContext`** sets nk-seo's `x-pathname` and the locale header + together, so the two conventions can't be wired separately and one forgotten. + - **`defineLocaleRouting` is generic over the locale union.** `isLocale` is a + type guard, `resolve` / `localeFromUrl` / `createLocaleResolver` return `L`. + Sites stop writing their own guards and casts. + - **`hrefLangTags` and `cookieName` move onto routing.** A site with regional + tags no longer builds a second config object, which was exactly the drift this + package exists to prevent. `routing.htmlLang(locale)` gives the `` + value, and `hreflangConfigFor` passes the tags through. + - **`routing.stripLocale(pathname)`** exposes the app-facing path. + + nk-seo's `HreflangConfig` drops `defaultLocale` and `prefixDefaultLocale`; + `x-default` is always the bare path now, so neither is needed. + + Migration: delete `prefixDefaultLocale`, replace `forwardUrlLocale` + + manual `x-pathname` with `localeProxy`, drop any local `isLocale` guard and + `as Locale` cast. Prefix sites gain `/en/…` as a real address — verify with + `assertHreflangCluster` from `@ingram-tech/nk-seo/verify`. + ## 0.4.1 ### Patch Changes diff --git a/packages/nk-i18n/package.json b/packages/nk-i18n/package.json index 97433fb..4a06def 100644 --- a/packages/nk-i18n/package.json +++ b/packages/nk-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@ingram-tech/nk-i18n", - "version": "0.4.1", + "version": "0.5.0", "description": "Type-safe, English-as-key i18n for Ingram Next.js sites — ICU translator, scopes, locale config, Accept-Language negotiation, and locale URL routing.", "license": "MIT", "type": "module", diff --git a/packages/nk-seo/CHANGELOG.md b/packages/nk-seo/CHANGELOG.md index fab3d77..419bea6 100644 --- a/packages/nk-seo/CHANGELOG.md +++ b/packages/nk-seo/CHANGELOG.md @@ -1,5 +1,49 @@ # @ingram-tech/nk-seo +## 0.9.0 + +### Minor Changes + +- c9307ad: Fix the locale cluster shape, and give middleware one way to be written. + + **Breaking, deliberately.** `prefixDefaultLocale` is removed and nothing + replaces it: the cluster's shape is no longer configurable. Whichever strategy + you pick, every locale gets its own address (the default included) and the bare + path belongs to no locale — it negotiates, and it is `x-default`. + + Previously the prefix strategy made the bare path the default locale's URL, so + `localeFromUrl` returned `defaultLocale` for it. That is the URL signal, which + outranks the cookie, so a visitor who chose French snapped back to English on + the first bare internal link — and every site that starts with a cookie switcher + has bare internal links. The two shapes now excluded (bare path IS the default + locale, bare path redirects on perceived language) are the two that go wrong; + offering either as an option is how a fleet drifts. + + - **`localeProxy(routing, request)`** is the whole middleware side: forwards the + pathname and locale headers, rewrites `/fr/about` → `/about` so the app keeps + one route tree, remembers an explicit choice in the cookie, never redirects. + Middleware that does more passes `requestHeaders` in and keeps editing the + response. Replaces `forwardUrlLocale` and the strip/rewrite/cookie/consolidate + code every prefix site was hand-writing. + - **`forwardRequestContext`** sets nk-seo's `x-pathname` and the locale header + together, so the two conventions can't be wired separately and one forgotten. + - **`defineLocaleRouting` is generic over the locale union.** `isLocale` is a + type guard, `resolve` / `localeFromUrl` / `createLocaleResolver` return `L`. + Sites stop writing their own guards and casts. + - **`hrefLangTags` and `cookieName` move onto routing.** A site with regional + tags no longer builds a second config object, which was exactly the drift this + package exists to prevent. `routing.htmlLang(locale)` gives the `` + value, and `hreflangConfigFor` passes the tags through. + - **`routing.stripLocale(pathname)`** exposes the app-facing path. + + nk-seo's `HreflangConfig` drops `defaultLocale` and `prefixDefaultLocale`; + `x-default` is always the bare path now, so neither is needed. + + Migration: delete `prefixDefaultLocale`, replace `forwardUrlLocale` + + manual `x-pathname` with `localeProxy`, drop any local `isLocale` guard and + `as Locale` cast. Prefix sites gain `/en/…` as a real address — verify with + `assertHreflangCluster` from `@ingram-tech/nk-seo/verify`. + ## 0.8.1 ### Patch Changes diff --git a/packages/nk-seo/package.json b/packages/nk-seo/package.json index 3ca1cbb..12ebce6 100644 --- a/packages/nk-seo/package.json +++ b/packages/nk-seo/package.json @@ -1,6 +1,6 @@ { "name": "@ingram-tech/nk-seo", - "version": "0.8.1", + "version": "0.9.0", "description": "SEO primitives for Next.js sites: typed schema.org JSON-LD builders, a tag, a Metadata factory (canonical + OG + Twitter), and configurable hreflang alternates.", "license": "MIT", "type": "module",