diff --git a/.changeset/hreflang-canonical-query.md b/.changeset/hreflang-canonical-query.md deleted file mode 100644 index ffca789..0000000 --- a/.changeset/hreflang-canonical-query.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -"@ingram-tech/nk-seo": minor ---- - -Fix the self-referencing canonical for the `"query"` hreflang strategy, and add -`@ingram-tech/nk-seo/verify`. - -`hreflangAlternates` treated "default locale" and "bare path" as the same thing, -which only holds for the `"prefix"` strategy. Under `"query"` every locale has -its own `?hl=` address and the bare path is the negotiating `x-default`, so -`?hl=en` was canonicalizing away to the bare path and deleting the default -locale from its own cluster. It now canonicalizes to itself. Prefix behaviour is -unchanged. - -**This changes emitted canonical URLs for query-strategy sites that pass -`currentLocale`.** That is the point, but re-crawl expectations accordingly. - -`verify` adds `verifyHreflangCluster` / `assertHreflangCluster`, which fetch -every advertised URL and fail on one that redirects, is not 200, canonicalizes -elsewhere, has no or duplicate canonicals, is non-reciprocal, or serves an -`` contradicting its `hreflang`. hreflang is a set of promises about -other URLs; nothing local can tell you whether they hold. diff --git a/.changeset/id758-extraction.md b/.changeset/id758-extraction.md deleted file mode 100644 index cdb8ba5..0000000 --- a/.changeset/id758-extraction.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@ingram-tech/nk-db": minor -"@ingram-tech/nk-auth": patch ---- - -The id codec now lives in its own package, [`id758`](https://github.com/ingram-technologies/id758), which `@ingram-tech/nk-db` depends on. `@ingram-tech/nk-db/id` re-exports the whole `id758` surface, so existing imports keep working; `uuidGenerateId`, `toPrefixedId`, `fromPrefixedId` and `base58Id` are kept as deprecated aliases of `uuidv7`, `encodeId`, `decodeId` and `mintId`. One behaviour change inherited from `id758`: `fromPrefixedId` / `decodeId` now requires the full `prefix_<22 chars>` shape rather than decoding whatever follows the first underscore. diff --git a/.changeset/id758-lint-message.md b/.changeset/id758-lint-message.md deleted file mode 100644 index 711bfd3..0000000 --- a/.changeset/id758-lint-message.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@ingram-tech/nk-dev": patch ---- - -`no-crypto-random-uuid` now points at `uuidv7()` from `id758`. diff --git a/.changeset/locale-url-routing.md b/.changeset/locale-url-routing.md deleted file mode 100644 index e8aee3c..0000000 --- a/.changeset/locale-url-routing.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@ingram-tech/nk-i18n": minor ---- - -Add locale URL routing: `defineLocaleRouting` (one definition of how a locale is -encoded in a URL, shaped so it can be handed straight to nk-seo's -`hreflangAlternates`), a fixed precedence chain (`LOCALE_PRECEDENCE`: URL → -account → cookie → `Accept-Language` → country → default) with eager and lazy -resolvers, and a `/next` subpath wiring it to middleware and server components -(`forwardUrlLocale`, `getUrlLocale`, `createLocaleResolver`, `hreflangConfigFor`). - -The URL beating the account setting is deliberate and not configurable: a shared -`?hl=fr` link must show the recipient French, or every localized link the site -ships is a lie and so is the hreflang annotation pointing at it. - -See `docs/i18n-routing.md`. diff --git a/packages/nk-auth/CHANGELOG.md b/packages/nk-auth/CHANGELOG.md index 2707d1c..f35242c 100644 --- a/packages/nk-auth/CHANGELOG.md +++ b/packages/nk-auth/CHANGELOG.md @@ -1,5 +1,13 @@ # @ingram-tech/nk-auth +## 0.13.5 + +### Patch Changes + +- e5a6f40: The id codec now lives in its own package, [`id758`](https://github.com/ingram-technologies/id758), which `@ingram-tech/nk-db` depends on. `@ingram-tech/nk-db/id` re-exports the whole `id758` surface, so existing imports keep working; `uuidGenerateId`, `toPrefixedId`, `fromPrefixedId` and `base58Id` are kept as deprecated aliases of `uuidv7`, `encodeId`, `decodeId` and `mintId`. One behaviour change inherited from `id758`: `fromPrefixedId` / `decodeId` now requires the full `prefix_<22 chars>` shape rather than decoding whatever follows the first underscore. +- Updated dependencies [e5a6f40] + - @ingram-tech/nk-db@1.6.0 + ## 0.13.4 ### Patch Changes diff --git a/packages/nk-auth/package.json b/packages/nk-auth/package.json index 5d93978..5848c0f 100644 --- a/packages/nk-auth/package.json +++ b/packages/nk-auth/package.json @@ -1,6 +1,6 @@ { "name": "@ingram-tech/nk-auth", - "version": "0.13.4", + "version": "0.13.5", "description": "The Ingram Better Auth foundation: composable presets (org, dual-shape JWT, active-org hooks, pg pool) for Next.js sites.", "license": "MIT", "type": "module", diff --git a/packages/nk-blog/CHANGELOG.md b/packages/nk-blog/CHANGELOG.md index c04324f..50bd336 100644 --- a/packages/nk-blog/CHANGELOG.md +++ b/packages/nk-blog/CHANGELOG.md @@ -1,5 +1,12 @@ # @ingram-tech/nk-blog +## 0.1.5 + +### Patch Changes + +- Updated dependencies [8503c09] + - @ingram-tech/nk-seo@0.8.0 + ## 0.1.4 ### Patch Changes diff --git a/packages/nk-blog/package.json b/packages/nk-blog/package.json index f6f3f2b..945cfda 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.4", + "version": "0.1.5", "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-db/CHANGELOG.md b/packages/nk-db/CHANGELOG.md index 3ff4c26..56b7e26 100644 --- a/packages/nk-db/CHANGELOG.md +++ b/packages/nk-db/CHANGELOG.md @@ -1,5 +1,11 @@ # @ingram-tech/nk-db +## 1.6.0 + +### Minor Changes + +- e5a6f40: The id codec now lives in its own package, [`id758`](https://github.com/ingram-technologies/id758), which `@ingram-tech/nk-db` depends on. `@ingram-tech/nk-db/id` re-exports the whole `id758` surface, so existing imports keep working; `uuidGenerateId`, `toPrefixedId`, `fromPrefixedId` and `base58Id` are kept as deprecated aliases of `uuidv7`, `encodeId`, `decodeId` and `mintId`. One behaviour change inherited from `id758`: `fromPrefixedId` / `decodeId` now requires the full `prefix_<22 chars>` shape rather than decoding whatever follows the first underscore. + ## 1.5.0 ### Minor Changes diff --git a/packages/nk-db/package.json b/packages/nk-db/package.json index 0e16d30..4c560ee 100644 --- a/packages/nk-db/package.json +++ b/packages/nk-db/package.json @@ -1,6 +1,6 @@ { "name": "@ingram-tech/nk-db", - "version": "1.5.0", + "version": "1.6.0", "description": "The Ingram Postgres data layer: one TLS-aware pg pool, raw-SQL helpers, Drizzle wiring, and a PGlite (no-Docker) dev/test harness for Next.js sites.", "license": "MIT", "type": "module", diff --git a/packages/nk-dev/CHANGELOG.md b/packages/nk-dev/CHANGELOG.md index 3b5f10d..adf308c 100644 --- a/packages/nk-dev/CHANGELOG.md +++ b/packages/nk-dev/CHANGELOG.md @@ -1,5 +1,11 @@ # @ingram-tech/nk-dev +## 0.11.1 + +### Patch Changes + +- e5a6f40: `no-crypto-random-uuid` now points at `uuidv7()` from `id758`. + ## 0.11.0 ### Minor Changes diff --git a/packages/nk-dev/package.json b/packages/nk-dev/package.json index ac89bd4..f1f41e7 100644 --- a/packages/nk-dev/package.json +++ b/packages/nk-dev/package.json @@ -1,6 +1,6 @@ { "name": "@ingram-tech/nk-dev", - "version": "0.11.0", + "version": "0.11.1", "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 e4abac2..d08ecaf 100644 --- a/packages/nk-i18n/CHANGELOG.md +++ b/packages/nk-i18n/CHANGELOG.md @@ -1,5 +1,22 @@ # @ingram-tech/nk-i18n +## 0.4.0 + +### Minor Changes + +- 8503c09: Add locale URL routing: `defineLocaleRouting` (one definition of how a locale is + encoded in a URL, shaped so it can be handed straight to nk-seo's + `hreflangAlternates`), a fixed precedence chain (`LOCALE_PRECEDENCE`: URL → + account → cookie → `Accept-Language` → country → default) with eager and lazy + resolvers, and a `/next` subpath wiring it to middleware and server components + (`forwardUrlLocale`, `getUrlLocale`, `createLocaleResolver`, `hreflangConfigFor`). + + The URL beating the account setting is deliberate and not configurable: a shared + `?hl=fr` link must show the recipient French, or every localized link the site + ships is a lie and so is the hreflang annotation pointing at it. + + See `docs/i18n-routing.md`. + ## 0.3.4 ### Patch Changes diff --git a/packages/nk-i18n/package.json b/packages/nk-i18n/package.json index 2b94d1e..5693e39 100644 --- a/packages/nk-i18n/package.json +++ b/packages/nk-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@ingram-tech/nk-i18n", - "version": "0.3.4", + "version": "0.4.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 b12fbe2..39c042e 100644 --- a/packages/nk-seo/CHANGELOG.md +++ b/packages/nk-seo/CHANGELOG.md @@ -1,5 +1,28 @@ # @ingram-tech/nk-seo +## 0.8.0 + +### Minor Changes + +- 8503c09: Fix the self-referencing canonical for the `"query"` hreflang strategy, and add + `@ingram-tech/nk-seo/verify`. + + `hreflangAlternates` treated "default locale" and "bare path" as the same thing, + which only holds for the `"prefix"` strategy. Under `"query"` every locale has + its own `?hl=` address and the bare path is the negotiating `x-default`, so + `?hl=en` was canonicalizing away to the bare path and deleting the default + locale from its own cluster. It now canonicalizes to itself. Prefix behaviour is + unchanged. + + **This changes emitted canonical URLs for query-strategy sites that pass + `currentLocale`.** That is the point, but re-crawl expectations accordingly. + + `verify` adds `verifyHreflangCluster` / `assertHreflangCluster`, which fetch + every advertised URL and fail on one that redirects, is not 200, canonicalizes + elsewhere, has no or duplicate canonicals, is non-reciprocal, or serves an + `` contradicting its `hreflang`. hreflang is a set of promises about + other URLs; nothing local can tell you whether they hold. + ## 0.7.0 ### Minor Changes diff --git a/packages/nk-seo/package.json b/packages/nk-seo/package.json index 11b53d1..2d27d2f 100644 --- a/packages/nk-seo/package.json +++ b/packages/nk-seo/package.json @@ -1,6 +1,6 @@ { "name": "@ingram-tech/nk-seo", - "version": "0.7.0", + "version": "0.8.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",