diff --git a/PROJECT_STATUS.md b/PROJECT_STATUS.md index 9250625..c7e22a3 100644 --- a/PROJECT_STATUS.md +++ b/PROJECT_STATUS.md @@ -1,6 +1,6 @@ # resume-tailor — PROJECT STATUS -Last updated: 2026-07-31 +Last updated: 2026-08-09 ## Why / What @@ -20,6 +20,9 @@ Live on `rolepatch.com` via Cloudflare Workers (OpenNext). ### External +- **Ultracite 7.10.2:** Exact development-only shared Biome presets; RolePatch + keeps explicit local compatibility exceptions and does not ship Ultracite at + runtime. - **Cloudflare D1:** Signed-in persistence: jobs, applications, evidence, saved searches, alerts. - **Dodo Payments:** Token purchases; webhook + success verification hardened in audit. - **LinkedIn (guest API):** In-Worker job search — no API key; datacenter IP rate limits possible. @@ -63,6 +66,11 @@ SHA-tagged `workflow_dispatch`. ## Timeline +- **2026-08-09 — Adopted the verified Fleet lint baseline:** Extended the + exact Ultracite core, React, Next.js, and Vitest Biome presets while retaining + RolePatch's existing formatter contract, generated-file exclusions, and + explicit compatibility exceptions. No source rewrite, production dependency, + runtime, route, deploy, secret, or production configuration changed. - **2026-08-05 — ATS metrics guide aligned to live search evidence:** The public ATS score guide now distinguishes third-party resume-match scores from employer recruiting metrics, removes unsupported universal threshold claims, diff --git a/biome.json b/biome.json index ba022a5..06b3ecd 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,11 @@ { "$schema": "https://biomejs.dev/schemas/2.5.5/schema.json", + "extends": [ + "ultracite/biome/core", + "ultracite/biome/react", + "ultracite/biome/next", + "ultracite/biome/vitest" + ], "vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true }, "files": { "ignoreUnknown": true, @@ -40,11 +46,14 @@ "jsxQuoteStyle": "double" } }, + "html": { "formatter": { "enabled": false } }, + "json": { "formatter": { "enabled": false } }, "linter": { "enabled": true, "rules": { "preset": "recommended", "a11y": { + "noNoninteractiveElementInteractions": "off", "noSvgWithoutTitle": "off", "useButtonType": "off", "useValidAnchor": "off", @@ -54,22 +63,81 @@ "useSemanticElements": "off" }, "suspicious": { + "noAlert": "off", "noExplicitAny": "off", "noArrayIndexKey": "off", + "noBiomeFirstException": "off", + "noBitwiseOperators": "off", + "noEmptyBlockStatements": "off", + "noEqualsToNull": "off", + "noLeakedRender": "off", + "noNestedPromises": "off", + "noShadow": "off", + "noShadowRestrictedNames": "off", + "noUnnecessaryConditions": "off", "useIterableCallbackReturn": "off", - "noShadowRestrictedNames": "off" + "useAwait": "off" }, "security": { "noDangerouslySetInnerHtml": "off" }, "style": { + "noIncrementDecrement": "off", + "noNegationElse": "off", + "noNestedTernary": "off", "noNonNullAssertion": "off", - "useNodejsImportProtocol": "off" + "noParameterAssign": "off", + "noUnusedTemplateLiteral": "off", + "useAtIndex": "off", + "useBlockStatements": "off", + "useConsistentArrayType": "off", + "useConsistentArrowReturn": "off", + "useConsistentMethodSignatures": "off", + "useConsistentTypeDefinitions": "off", + "useDefaultSwitchClause": "off", + "useDestructuring": "off", + "useErrorCause": "off", + "useFilenamingConvention": "off", + "useForOf": "off", + "useNodejsImportProtocol": "off", + "useNumericSeparators": "off" }, "complexity": { - "useLiteralKeys": "off" + "noDivRegex": "off", + "noExcessiveCognitiveComplexity": "off", + "noForEach": "off", + "noUselessUndefined": "off", + "noVoid": "off", + "useArrayFind": "off", + "useLiteralKeys": "off", + "useSimplifiedLogicExpression": "off" + }, + "correctness": { + "noGlobalDirnameFilename": "off" + }, + "nursery": { + "useSortedClasses": "off" + }, + "performance": { + "noAwaitInLoops": "off", + "noBarrelFile": "off", + "noDelete": "off", + "noJsxPropsBind": "off", + "useTopLevelRegex": "off" } } }, - "assist": { "enabled": true, "actions": { "source": { "organizeImports": "off" } } } + "assist": { + "enabled": true, + "actions": { + "source": { + "organizeImports": "off", + "useSortedAttributes": "off", + "useSortedInterfaceMembers": "off", + "useSortedKeys": "off", + "useSortedPackageJson": "off", + "useSortedProperties": "off" + } + } + } } diff --git a/package.json b/package.json index 60e5a3a..f5139c8 100644 --- a/package.json +++ b/package.json @@ -84,6 +84,7 @@ "knip": "^6.29.0", "tailwindcss": "^4.3.3", "typescript": "^5", + "ultracite": "7.10.2", "vitest": "^4.1.10", "wrangler": "^4.114.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dd5cc19..4ff8e69 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -156,6 +156,9 @@ importers: typescript: specifier: ^5 version: 5.9.3 + ultracite: + specifier: 7.10.2 + version: 7.10.2 vitest: specifier: ^4.1.10 version: 4.1.10(@opentelemetry/api@1.9.0)(@types/node@20.19.33)(@vitest/coverage-v8@4.1.10)(jsdom@29.1.1(@noble/hashes@2.2.0))(vite@8.1.5(@types/node@20.19.33)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.16.9)(yaml@2.9.0)) @@ -4853,6 +4856,9 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + citty@0.2.2: + resolution: {integrity: sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==} + classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -4902,6 +4908,10 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -5231,6 +5241,10 @@ packages: decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + defu@6.1.7: resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} @@ -6802,6 +6816,11 @@ packages: resolution: {integrity: sha512-GX0gsdbGVCgnRgbeGaubfjpBXyYRWOOCVeYh08bSQvDZqxz5ndXs1OTfAt/h36G1xvI94YIspsI0sVFqAV9+RQ==} engines: {node: '>=20.19.0'} + nypm@0.6.9: + resolution: {integrity: sha512-zxlE2yvSWZWmHcNdT3+5zV2lrCogeE9YOklHrR3dFjqutq5wO7GFDYLFDRXLsYnJzwvy/im9fYoxePvS0VTW0w==} + engines: {node: '>=18'} + hasBin: true + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -7771,6 +7790,18 @@ packages: uhyphen@0.2.0: resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} + ultracite@7.10.2: + resolution: {integrity: sha512-WP1Hu/BKy/BDgntaiU33uq2Y8hKL2gEO5li2wfg7XFvmlyIkGDEy8qbWg7GHsxTEjEpWOAKpyFSF8aqc3JNEGQ==} + hasBin: true + peerDependencies: + oxfmt: '>=0.1.0' + oxlint: ^1.0.0 + peerDependenciesMeta: + oxfmt: + optional: true + oxlint: + optional: true + ultrahtml@1.6.0: resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==} @@ -13111,6 +13142,8 @@ snapshots: dependencies: consola: 3.4.2 + citty@0.2.2: {} + classnames@2.5.1: {} cli-boxes@3.0.0: {} @@ -13169,6 +13202,8 @@ snapshots: commander@11.1.0: {} + commander@15.0.0: {} + commander@2.20.3: {} commander@7.2.0: {} @@ -13510,6 +13545,8 @@ snapshots: dependencies: character-entities: 2.0.2 + deepmerge@4.3.1: {} + defu@6.1.7: {} degenerator@5.0.1: @@ -15502,6 +15539,12 @@ snapshots: dependencies: boolbase: 2.0.0 + nypm@0.6.9: + dependencies: + citty: 0.2.2 + pathe: 2.0.3 + tinyexec: 1.2.4 + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -16778,6 +16821,18 @@ snapshots: uhyphen@0.2.0: {} + ultracite@7.10.2: + dependencies: + '@clack/prompts': 1.7.0 + commander: 15.0.0 + cross-spawn: 7.0.6 + deepmerge: 4.3.1 + glob: 13.0.6 + jsonc-parser: 3.3.1 + nypm: 0.6.9 + yaml: 2.9.0 + zod: 4.4.3 + ultrahtml@1.6.0: {} ultrahtml@1.7.0: {}