Thanks to visit codestin.com
Credit goes to github.com

Skip to content

chore: ban em/en dashes, convert existing source usages to hyphens#3212

Merged
enoch85 merged 4 commits into
developmentfrom
chore/ban-em-dashes
Jul 3, 2026
Merged

chore: ban em/en dashes, convert existing source usages to hyphens#3212
enoch85 merged 4 commits into
developmentfrom
chore/ban-em-dashes

Conversation

@enoch85

@enoch85 enoch85 commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

Establishes a plain-ASCII-hyphen convention and cleans up existing usages.

  • Adds the rule to AGENTS.md (Code Style) and .github/instructions/project-notes.instructions.md (conventions): never use em (U+2014) or en (U+2013) dashes in committed artifacts; always a plain - (U+002D).
  • Converts every existing em/en dash to a hyphen across all TypeScript/TSX and CSS source in apps/server, apps/ui, and packages/contracts (comments, log/UI strings, tests). Purely mechanical, no behavior change.

Scope note: this covers source code only. Markdown prose (docs) still contains em dashes and can be a follow-up sweep if wanted.

The sweep was done NUL-delimited (git ls-files -z | xargs -0) because a directory named dto's breaks naive xargs word-splitting; verified 0 remaining in source with a per-file check.

enoch85 added 4 commits July 2, 2026 01:05
Replaces every em dash (U+2014) and en dash (U+2013) with a plain ASCII hyphen
across TypeScript/TSX and CSS source (comments, log and UI strings, tests), and
adds the convention to AGENTS.md and project-notes.instructions.md so new code
keeps to a single ASCII dash. Purely mechanical in source; no behavior change.

Markdown prose was intentionally left out of scope.
…ashes

# Conflicts:
#	apps/server/src/modules/collections/collections.service.ts
Complete the sweep beyond source: convert em (U+2014) and en (U+2013)
dashes to plain hyphens across docs/, instruction files, .github
workflows, tooling scripts, CHANGELOG, and config. The two lines that
document the ban by showing the banned characters as examples
(AGENTS.md, project-notes.instructions.md) are intentionally preserved.
@enoch85 enoch85 merged commit b83ef44 into development Jul 3, 2026
10 checks passed
@enoch85 enoch85 deleted the chore/ban-em-dashes branch July 3, 2026 21:57
maintainerr-automation Bot added a commit that referenced this pull request Jul 4, 2026
* build(deps): bump @sigstore/core from 3.0.0 to 3.2.1 (#3182)

Bumps [@sigstore/core](https://github.com/sigstore/sigstore-js) from 3.0.0 to 3.2.1.
- [Release notes](https://github.com/sigstore/sigstore-js/releases)
- [Commits](https://github.com/sigstore/sigstore-js/compare/@sigstore/[email protected]...@sigstore/[email protected])

---
updated-dependencies:
- dependency-name: "@sigstore/core"
  dependency-version: 3.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump js-yaml from 3.14.2 to 3.15.0 (#3183)

Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.2 to 3.15.0.
- [Changelog](https://github.com/nodeca/js-yaml/blob/3.15.0/CHANGELOG.md)
- [Commits](nodeca/js-yaml@3.14.2...3.15.0)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 3.15.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix: keep server booting when sharp can't load on pre-x86-64-v2 CPUs (#3184)

sharp 0.35's prebuilt Linux x64 binaries require the x86-64-v2
microarchitecture (libvips 8.18). On older CPUs or minimal VM CPU
models (e.g. QEMU kvm64) the native addon throws while loading at
require() time, which crashed the whole server during Nest bootstrap —
Maintainerr would not start after updating past v3.14.0.

Load sharp through a small try/catch wrapper so the failure no longer
takes down boot. The server starts; only the image features (overlays,
collection posters) degrade, and a clear startup message explains the
CPU requirement. Same sharp package — no dependency change.

* build(deps-dev): bump knip from 6.21.0 to 6.23.0 (#3187)

Bumps [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) from 6.21.0 to 6.23.0.
- [Release notes](https://github.com/webpro-nl/knip/releases)
- [Commits](https://github.com/webpro-nl/knip/commits/[email protected]/packages/knip)

---
updated-dependencies:
- dependency-name: knip
  dependency-version: 6.23.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump eslint from 10.5.0 to 10.6.0 in the eslint group (#3186)

Bumps the eslint group with 1 update: [eslint](https://github.com/eslint/eslint).


Updates `eslint` from 10.5.0 to 10.6.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v10.5.0...v10.6.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump @tanstack/react-query from 5.101.1 to 5.101.2 (#3188)

Bumps [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) from 5.101.1 to 5.101.2.
- [Release notes](https://github.com/TanStack/query/releases)
- [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query/CHANGELOG.md)
- [Commits](https://github.com/TanStack/query/commits/@tanstack/[email protected]/packages/react-query)

---
updated-dependencies:
- dependency-name: "@tanstack/react-query"
  dependency-version: 5.101.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump @tailwindcss/vite from 4.3.1 to 4.3.2 (#3190)

Bumps [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) from 4.3.1 to 4.3.2.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.2/packages/@tailwindcss-vite)

---
updated-dependencies:
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.3.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump @tanstack/eslint-plugin-query (#3189)

Bumps [@tanstack/eslint-plugin-query](https://github.com/TanStack/query/tree/HEAD/packages/eslint-plugin-query) from 5.101.1 to 5.101.2.
- [Release notes](https://github.com/TanStack/query/releases)
- [Changelog](https://github.com/TanStack/query/blob/main/packages/eslint-plugin-query/CHANGELOG.md)
- [Commits](https://github.com/TanStack/query/commits/@tanstack/[email protected]/packages/eslint-plugin-query)

---
updated-dependencies:
- dependency-name: "@tanstack/eslint-plugin-query"
  dependency-version: 5.101.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump @nestjs/swagger in the nestjs group (#3192)

Bumps the nestjs group with 1 update: [@nestjs/swagger](https://github.com/nestjs/swagger).


Updates `@nestjs/swagger` from 11.4.4 to 11.4.5
- [Release notes](https://github.com/nestjs/swagger/releases)
- [Commits](nestjs/swagger@11.4.4...11.4.5)

---
updated-dependencies:
- dependency-name: "@nestjs/swagger"
  dependency-version: 11.4.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nestjs
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump turbo from 2.10.0 to 2.10.1 (#3193)

Bumps [turbo](https://github.com/vercel/turborepo) from 2.10.0 to 2.10.1.
- [Release notes](https://github.com/vercel/turborepo/releases)
- [Changelog](https://github.com/vercel/turborepo/blob/main/RELEASE.md)
- [Commits](vercel/turborepo@v2.10.0...v2.10.1)

---
updated-dependencies:
- dependency-name: turbo
  dependency-version: 2.10.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump react-router-dom from 7.18.0 to 7.18.1 (#3194)

Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 7.18.0 to 7.18.1.
- [Release notes](https://github.com/remix-run/react-router/releases)
- [Changelog](https://github.com/remix-run/react-router/blob/[email protected]/packages/react-router-dom/CHANGELOG.md)
- [Commits](https://github.com/remix-run/react-router/commits/[email protected]/packages/react-router-dom)

---
updated-dependencies:
- dependency-name: react-router-dom
  dependency-version: 7.18.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump @eslint-react/eslint-plugin from 5.9.3 to 5.10.0 (#3195)

Bumps [@eslint-react/eslint-plugin](https://github.com/Rel1cx/eslint-react/tree/HEAD/plugins/eslint-plugin) from 5.9.3 to 5.10.0.
- [Release notes](https://github.com/Rel1cx/eslint-react/releases)
- [Changelog](https://github.com/Rel1cx/eslint-react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Rel1cx/eslint-react/commits/v5.10.0/plugins/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@eslint-react/eslint-plugin"
  dependency-version: 5.10.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump @typescript-eslint/eslint-plugin (#3196)

Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 8.62.0 to 8.62.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.62.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.62.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump typescript-eslint from 8.62.0 to 8.62.1 (#3197)

Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.62.0 to 8.62.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.62.1/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: typescript-eslint
  dependency-version: 8.62.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump nodemailer from 9.0.1 to 9.0.2 (#3199)

Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 9.0.1 to 9.0.2.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](nodemailer/nodemailer@v9.0.1...v9.0.2)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-version: 9.0.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump prettier from 3.8.5 to 3.9.4 (#3198)

* build(deps-dev): bump prettier from 3.8.5 to 3.9.4

Bumps [prettier](https://github.com/prettier/prettier) from 3.8.5 to 3.9.4.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](prettier/prettier@3.8.5...3.9.4)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.9.4
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>

* style: apply prettier 3.9.4 formatting

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: enoch85 <[email protected]>

* fix(deps): patch vulnerable transitive deps via resolutions (#3201)

Force-resolve transitive packages flagged by Dependabot to their patched
versions (their parents pin exact/old versions, so a resolution is the
only way to lift them):

- multer 2.1.1 -> 2.2.0 (via @nestjs/platform-express) — DoS
- dompurify 3.4.2 -> 3.4.11 (via monaco-editor) — XSS/sanitizer bypass
- linkify-it 5.0.0 -> 5.0.1 (via mailparser) — quadratic complexity
- undici 6.25.0 -> 6.27.0 (existing pin) — header/DoS issues

undici 7.x (->7.28.0) and js-yaml 4.x (->4.3.0) resolve to patched
versions naturally from the lockfile; no resolution needed.

Remaining: undici 5.29.0 via @actions/http-client (dev/CI tooling, not
in the production image) needs undici 5->6, a major that breaks the
parent, so it is intentionally left.

* build(deps): bump nodemailer from 9.0.2 to 9.0.3 (#3202)

Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 9.0.2 to 9.0.3.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](nodemailer/nodemailer@v9.0.2...v9.0.3)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-version: 9.0.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump turbo from 2.10.1 to 2.10.2 (#3204)

Bumps [turbo](https://github.com/vercel/turborepo) from 2.10.1 to 2.10.2.
- [Release notes](https://github.com/vercel/turborepo/releases)
- [Changelog](https://github.com/vercel/turborepo/blob/main/RELEASE.md)
- [Commits](vercel/turborepo@v2.10.1...v2.10.2)

---
updated-dependencies:
- dependency-name: turbo
  dependency-version: 2.10.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump vite from 8.1.0 to 8.1.2 (#3205)

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.1.0 to 8.1.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.1.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump @types/node from 26.0.0 to 26.1.0 (#3206)

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 26.0.0 to 26.1.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 26.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump sharp from 0.35.2 to 0.35.3 (#3207)

Bumps [sharp](https://github.com/lovell/sharp) from 0.35.2 to 0.35.3.
- [Release notes](https://github.com/lovell/sharp/releases)
- [Commits](lovell/sharp@v0.35.2...v0.35.3)

---
updated-dependencies:
- dependency-name: sharp
  dependency-version: 0.35.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump @typescript-eslint/parser from 8.62.0 to 8.62.1 (#3208)

Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 8.62.0 to 8.62.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.62.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.62.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Document health probes and LOG_LEVEL override (#3210)

* Potential fix for code scanning alert no. 199: Untrusted Checkout TOCTOU (#3209)

* Potential fix for code scanning alert no. 199: Untrusted Checkout TOCTOU

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* ci: don't persist credentials when checking out untrusted PR code

Keep the workflow GITHUB_TOKEN (packages:write / pull-requests:write) out of
the checked-out worktree that this job builds, complementing the SHA-pin/verify.

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: enoch85 <[email protected]>

* fix(collections): distinguish a missing library from an empty one (#3203) (#3211)

An automatic collection with no server-side collection cleared its link and
always logged that it would be recreated automatically when items match the
rule. That is false when the collection's target Plex library section is gone
(removed, or recreated with a new id) — the 404 the user sees. Check whether
the library still exists and log an actionable message telling the user to
re-point the collection, keeping the auto-create message only for a valid but
empty library. Inconclusive library fetches stay silent so a transient blip
never mislabels a library as missing.

* build(deps-dev): bump knip from 6.23.0 to 6.24.0 (#3213)

Bumps [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) from 6.23.0 to 6.24.0.
- [Release notes](https://github.com/webpro-nl/knip/releases)
- [Commits](https://github.com/webpro-nl/knip/commits/[email protected]/packages/knip)

---
updated-dependencies:
- dependency-name: knip
  dependency-version: 6.24.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump eslint-plugin-jest from 29.15.3 to 29.15.4 (#3214)

Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 29.15.3 to 29.15.4.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](jest-community/eslint-plugin-jest@v29.15.3...v29.15.4)

---
updated-dependencies:
- dependency-name: eslint-plugin-jest
  dependency-version: 29.15.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump @types/node from 26.0.0 to 26.1.0 (#3215)

Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 26.0.0 to 26.1.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 26.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump vite from 8.1.2 to 8.1.3 (#3216)

Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.1.2 to 8.1.3.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.1.3/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 8.1.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump rolldown from 1.1.3 to 1.1.4 (#3217)

Bumps [rolldown](https://github.com/rolldown/rolldown/tree/HEAD/packages/rolldown) from 1.1.3 to 1.1.4.
- [Release notes](https://github.com/rolldown/rolldown/releases)
- [Changelog](https://github.com/rolldown/rolldown/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rolldown/rolldown/commits/v1.1.4/packages/rolldown)

---
updated-dependencies:
- dependency-name: rolldown
  dependency-version: 1.1.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump sigstore from 4.0.0 to 4.1.1 (#3218)

Bumps [sigstore](https://github.com/sigstore/sigstore-js) from 4.0.0 to 4.1.1.
- [Release notes](https://github.com/sigstore/sigstore-js/releases)
- [Commits](https://github.com/sigstore/sigstore-js/compare/[email protected]@4.1.1)

---
updated-dependencies:
- dependency-name: sigstore
  dependency-version: 4.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump @eslint-react/eslint-plugin from 5.10.0 to 5.10.2 (#3219)

Bumps [@eslint-react/eslint-plugin](https://github.com/Rel1cx/eslint-react/tree/HEAD/plugins/eslint-plugin) from 5.10.0 to 5.10.2.
- [Release notes](https://github.com/Rel1cx/eslint-react/releases)
- [Changelog](https://github.com/Rel1cx/eslint-react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/Rel1cx/eslint-react/commits/v5.10.2/plugins/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@eslint-react/eslint-plugin"
  dependency-version: 5.10.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore: ban em/en dashes, convert existing source usages to hyphens (#3212)

* chore: ban em/en dashes and convert existing usages to hyphens

Replaces every em dash (U+2014) and en dash (U+2013) with a plain ASCII hyphen
across TypeScript/TSX and CSS source (comments, log and UI strings, tests), and
adds the convention to AGENTS.md and project-notes.instructions.md so new code
keeps to a single ASCII dash. Purely mechanical in source; no behavior change.

Markdown prose was intentionally left out of scope.

* chore: extend em/en dash ban to docs, markdown, workflows, and tooling

Complete the sweep beyond source: convert em (U+2014) and en (U+2013)
dashes to plain hyphens across docs/, instruction files, .github
workflows, tooling scripts, CHANGELOG, and config. The two lines that
document the ban by showing the banned characters as examples
(AGENTS.md, project-notes.instructions.md) are intentionally preserved.

* feat(rules): add Sonarr episodeFileRank with seriesTitle/seriesId scoping (#3095)

- episodeFileRank: rank on-disk episodes per show by air date (newest = 1).
  Pool requires hasFile, excludes specials (S00), unaired, and null-airDate
  episodes; out-of-pool ranks null so the comparator stays fail-closed.
  Rank maps are memoised through ArrLookupCache so long-running daily
  series fetch the full episode list once per show per rule-run.
- Daily-series airDate fallback for Plex items carrying parentIndex (year)
  but no episode index; keyed on Sonarr's broadcast-date string (not a UTC
  day-bucket) so US primetime broadcasts straddling UTC midnight still match.
- seriesTitle (TEXT) and seriesId (NUMBER) as scoping handles for
  rank-and-delete rules; seriesId survives a title rename or regional/year
  suffix.

* feat(rules): add Radarr movieTitle/movieId scoping properties (#3222)

Movie-scope handles mirroring Sonarr's seriesTitle/seriesId (#3220):
movieTitle (TEXT, case-insensitive matching) and movieId (NUMBER, the
rename-proof handle for destructive rules). Read from the resolved Radarr
movie; not-tracked stays null and transient lookup failures stay undefined,
matching the getter contract.

* feat(rules): add Sonarr seasonFileRank for season-level rolling windows (#3223)

Ranks a season within its show by the air date of its newest downloaded
episode (newest = 1), enabling keep-newest-N-seasons rules. Derived from the
same run-cached episode pool as episodeFileRank (one shared rank-map cache
entry per show, no extra Sonarr calls); season statistics were deliberately
not used because previousAiring is monitored-dependent and Maintainerr's own
unmonitor actions would erase the ranking key. Seasons without downloaded
episodes take no rank slot; specials and unaired-only seasons rank null so
the comparator stays fail-closed.

* fix(rules): plainer labels for the rank properties (#3224)

'Episode/Season position by air date (1 = latest)' replaces the 'file rank'
labels: simpler words chosen for instant readability, including for
non-native English speakers. Display-only; stored rules and YAML exports
reference the internal property names/ids, which are unchanged.

* fix(collections): accept hex-GUID context.id for manual season/episode actions (#3225)

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: maintainerr-automation[bot] <261505141+maintainerr-automation[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: enoch85 <[email protected]>
Co-authored-by: Kristian Matthews-Kennington <[email protected]>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Jack McPherson <[email protected]>
@maintainerr-automation

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 3.17.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant