chore: ban em/en dashes, convert existing source usages to hyphens#3212
Merged
Conversation
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.
6 tasks
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]>
Contributor
|
🎉 This PR is included in version 3.17.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Establishes a plain-ASCII-hyphen convention and cleans up existing usages.
.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).apps/server,apps/ui, andpackages/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 nameddto'sbreaks naivexargsword-splitting; verified 0 remaining in source with a per-file check.