cuelo 0.10.83 → 0.10.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +31 -29
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/required-server-files.js +1 -1
- package/.next/required-server-files.json +1 -1
- package/.next/routes-manifest.json +14 -0
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/api/agent/[id]/account/route.js +1 -1
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/running/route.js +1 -1
- package/.next/server/app/api/attachment-settings/route.js +1 -1
- package/.next/server/app/api/attachments/[id]/transcription/route.js +2 -2
- package/.next/server/app/api/attachments/draft/route.js +1 -1
- package/.next/server/app/api/attachments/route.js +2 -2
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/character-mode/route.js +2 -0
- package/.next/server/app/api/character-mode/route.js.nft.json +1 -0
- package/.next/server/app/api/character-mode/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/display-settings/route.js +1 -1
- package/.next/server/app/api/document-text/route.js +2 -2
- package/.next/server/app/api/experiments/route.js +1 -1
- package/.next/server/app/api/file-index/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +1 -1
- package/.next/server/app/api/git/diff/route.js +2 -2
- package/.next/server/app/api/git/status/route.js +2 -2
- package/.next/server/app/api/github/projects/route.js +1 -1
- package/.next/server/app/api/gpt6/handles/route.js +1 -1
- package/.next/server/app/api/gpt6/reply/route.js +1 -1
- package/.next/server/app/api/gpt6/token/route.js +1 -1
- package/.next/server/app/api/gpt6/web6-session/route.js +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/live/call/[callId]/route.js +1 -1
- package/.next/server/app/api/live/call/[callId]/route.js.nft.json +1 -1
- package/.next/server/app/api/live/events/route.js +2 -2
- package/.next/server/app/api/live/events/route.js.nft.json +1 -1
- package/.next/server/app/api/live/interpret/cloud/events/route.js +2 -2
- package/.next/server/app/api/live/interpret/cloud/events/route.js.nft.json +1 -1
- package/.next/server/app/api/live/interpret/cloud/input/route.js +1 -1
- package/.next/server/app/api/live/interpret/cloud/input/route.js.nft.json +1 -1
- package/.next/server/app/api/live/interpret/cloud/route.js +1 -1
- package/.next/server/app/api/live/interpret/cloud/route.js.nft.json +1 -1
- package/.next/server/app/api/live/interpret/route.js +1 -1
- package/.next/server/app/api/live/interpret/route.js.nft.json +1 -1
- package/.next/server/app/api/live/offer/route.js +1 -1
- package/.next/server/app/api/live/offer/route.js.nft.json +1 -1
- package/.next/server/app/api/live/voices/route.js +1 -1
- package/.next/server/app/api/live/voices/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/route.js +2 -2
- package/.next/server/app/api/model-roles/route.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models-config/catalog/route.js +1 -1
- package/.next/server/app/api/models-config/discover/route.js +1 -1
- package/.next/server/app/api/models-config/route.js +2 -2
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/office-characters/[...path]/route.js +2 -0
- package/.next/server/app/api/office-characters/[...path]/route.js.nft.json +1 -0
- package/.next/server/app/api/office-characters/[...path]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/project-docs/route.js +1 -1
- package/.next/server/app/api/project-trust/route.js +1 -1
- package/.next/server/app/api/projects/route.js +1 -1
- package/.next/server/app/api/runs/[runId]/prelude/route.js +1 -1
- package/.next/server/app/api/runs/[runId]/route.js +1 -1
- package/.next/server/app/api/runs/[runId]/turns/route.js +1 -1
- package/.next/server/app/api/runs/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/search/route.js +1 -1
- package/.next/server/app/api/settings/route.js +1 -1
- package/.next/server/app/api/sidecars/[service]/[...path]/route.js +1 -1
- package/.next/server/app/api/skills/check/route.js +1 -1
- package/.next/server/app/api/skills/install/route.js +2 -2
- package/.next/server/app/api/skills/route.js +2 -2
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/update/route.js +1 -1
- package/.next/server/app/api/subagents/eta/route.js +1 -1
- package/.next/server/app/api/theme/route.js +1 -1
- package/.next/server/app/api/tool-image/route.js +1 -1
- package/.next/server/app/api/update-maintenance/route.js +2 -2
- package/.next/server/app/api/updates/route.js +1 -1
- package/.next/server/app/api/web-access/recovery/route.js +1 -1
- package/.next/server/app/api/web-access/route.js +1 -1
- package/.next/server/app/api/web6/consults/route.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/page.js +21 -21
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recover/page.js +2 -2
- package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
- package/.next/server/app/recover.html +1 -1
- package/.next/server/app/recover.rsc +2 -2
- package/.next/server/app/recover.segments/_full.segment.rsc +2 -2
- package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
- package/.next/server/app/recover.segments/_index.segment.rsc +2 -2
- package/.next/server/app/recover.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
- package/.next/server/app-paths-manifest.json +31 -29
- package/.next/server/chunks/{6775.js → 205.js} +2 -2
- package/.next/server/chunks/3379.js +1 -1
- package/.next/server/chunks/7738.js +1 -0
- package/.next/server/functions-config-manifest.json +2 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/app/_global-error/page-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/account/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/events/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/agent/[id]/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/agent/new/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/agent/running/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/attachment-settings/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/attachments/[id]/transcription/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/attachments/draft/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/attachments/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/auth/all-providers/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/auth/login/[provider]/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/auth/providers/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/character-mode/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/cwd/browse/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/cwd/validate/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/default-cwd/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/display-settings/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/document-text/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/experiments/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/file-index/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/files/[...path]/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/git/diff/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/git/status/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/github/projects/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/gpt6/handles/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/gpt6/reply/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/gpt6/token/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/gpt6/web6-session/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/home/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/live/call/[callId]/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/live/events/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/live/interpret/cloud/events/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/live/interpret/cloud/input/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/live/interpret/cloud/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/live/interpret/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/live/offer/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/live/voices/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/mcp/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/model-roles/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/models/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/models-config/catalog/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/models-config/discover/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/models-config/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/models-config/test/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/office-characters/[...path]/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/plugins/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/project-docs/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/project-trust/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/projects/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/runs/[runId]/prelude/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/runs/[runId]/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/runs/[runId]/turns/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/runs/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/context/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/export/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/sessions/[id]/state/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/sessions/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/sessions/search/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/settings/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/skills/check/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/skills/install/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/skills/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/skills/search/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/skills/update/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/subagents/eta/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/theme/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/tool-image/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/update-maintenance/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/updates/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/web-access/recovery/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/web-access/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/web6/consults/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/api/worktrees/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/{layout-4e22adaca20b3c57.js → layout-9732ddae4dc9638c.js} +1 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/app/page-8e9c8449e2f53ae8.js +75 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-436da0332762a8e3.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-436da0332762a8e3.js +1 -0
- package/.next/static/y4k_8nU4FYWcP7nTP4oCU/_buildManifest.js +1 -0
- package/.next/trace +108 -108
- package/.next/trace-build +1 -1
- package/.next/types/app/api/character-mode/route.ts +351 -0
- package/.next/types/app/api/office-characters/[...path]/route.ts +351 -0
- package/.next/types/routes.d.ts +3 -1
- package/.next/types/validator.ts +18 -0
- package/README.md +1 -1
- package/Tools/CUELO_Setup/files/native-runtime-patch.js +1 -1
- package/Tools/OMP_Global_Config/agent/extensions/character-voice.ts +217 -22
- package/Tools/OMP_Global_Config/agent/extensions/slop-gate/review.ts +1 -1
- package/Tools/OMP_Global_Config/agent/rules/harness-policy.json +2 -1
- package/Tools/OMP_Global_Config/agent/skills/humanizer/LICENSE.txt +21 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/SKILL.md +357 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/UPSTREAM.json +37 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/after-1.md +17 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/after-2.md +27 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/after-3.md +60 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/after-4.md +50 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/before-1.md +15 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/before-2.md +27 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/before-3.md +29 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/examples/before-4.md +23 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/references/pos-patterns.md +132 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/references/punctuation-patterns.md +353 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/references/spacing-patterns.md +132 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/references/structure-patterns.md +186 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/references/translation-ese-patterns.md +641 -0
- package/Tools/OMP_Global_Config/agent/skills/humanizer/references/vocabulary-patterns.md +511 -0
- package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/LICENSE +202 -0
- package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/README.md +113 -0
- package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/SKILL.md +121 -0
- package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/references/detection.md +411 -0
- package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/references/fixes.md +368 -0
- package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/references/taxonomy.md +343 -0
- package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/scripts/rules.ru.mjs +23 -0
- package/Tools/OMP_Global_Config/agent/skills/kill-ai-slop/scripts/scan.mjs +508 -0
- package/Tools/OMP_Global_Config/agent/skills/stop-slop/LICENSE +21 -0
- package/Tools/OMP_Global_Config/agent/skills/stop-slop/README.md +62 -0
- package/Tools/OMP_Global_Config/agent/skills/stop-slop/SKILL.md +68 -0
- package/Tools/OMP_Global_Config/agent/skills/stop-slop/references/examples.md +59 -0
- package/Tools/OMP_Global_Config/agent/skills/stop-slop/references/phrases.md +128 -0
- package/Tools/OMP_Global_Config/agent/skills/stop-slop/references/structures.md +134 -0
- package/package.json +4 -1
- package/.next/static/chunks/app/_global-error/page-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/account/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/bash-output/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/events/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/agent/[id]/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/agent/new/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/agent/running/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/attachment-settings/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/attachments/[id]/transcription/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/attachments/draft/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/attachments/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/auth/all-providers/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/auth/api-key/[provider]/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/auth/login/[provider]/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/auth/logout/[provider]/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/auth/providers/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/cwd/browse/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/cwd/validate/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/default-cwd/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/display-settings/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/document-text/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/experiments/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/file-index/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/files/[...path]/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/git/diff/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/git/status/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/github/projects/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/gpt6/handles/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/gpt6/reply/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/gpt6/token/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/gpt6/web6-session/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/home/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/live/call/[callId]/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/live/events/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/live/interpret/cloud/events/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/live/interpret/cloud/input/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/live/interpret/cloud/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/live/interpret/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/live/offer/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/live/voices/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/mcp/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/model-roles/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/models/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/models-config/catalog/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/models-config/discover/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/models-config/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/models-config/test/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/plugins/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/project-docs/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/project-trust/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/projects/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/runs/[runId]/prelude/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/runs/[runId]/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/runs/[runId]/turns/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/runs/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/context/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/export/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/sessions/[id]/state/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/sessions/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/sessions/search/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/settings/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/sidecars/[service]/[...path]/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/skills/check/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/skills/install/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/skills/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/skills/search/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/skills/update/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/subagents/eta/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/theme/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/tool-image/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/update-maintenance/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/updates/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/web-access/recovery/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/web-access/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/web6/consults/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/api/worktrees/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/manifest.webmanifest/route-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/app/page-b61cdb3a88126c55.js +0 -75
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-60d4ba1619c3b27a.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-60d4ba1619c3b27a.js +0 -1
- package/.next/static/vdQU0PJ0EqoAWyaBUHRpd/_buildManifest.js +0 -1
- /package/.next/static/{vdQU0PJ0EqoAWyaBUHRpd → y4k_8nU4FYWcP7nTP4oCU}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
# The AI-slop taxonomy
|
|
2
|
+
|
|
3
|
+
35 tells, in two tiers. **Classic** = widely recognised. **Evolved** = newer
|
|
4
|
+
defaults that already read as templated. For each: what it is, why it reads as
|
|
5
|
+
machine-made, and the fix. Detection patterns live in `detection.md`; code
|
|
6
|
+
patches in `fixes.md`.
|
|
7
|
+
|
|
8
|
+
The rule under every entry: slop is the *absence of a decision*. A tell is only
|
|
9
|
+
slop when it's a default nobody chose. The same element, chosen and defended,
|
|
10
|
+
is fine.
|
|
11
|
+
|
|
12
|
+
## Color
|
|
13
|
+
|
|
14
|
+
**01 · Indigo→violet gradient** — the `#6366f1 → #a855f7` diagonal on buttons,
|
|
15
|
+
glows, and hero backgrounds. It's the factory setting of Tailwind demos and
|
|
16
|
+
template galleries, so it reads as an absence of a decision.
|
|
17
|
+
*Fix:* one justified accent; if a gradient, give it direction and a reason, not
|
|
18
|
+
a "premium" sticker.
|
|
19
|
+
|
|
20
|
+
**02 · Gradient headline text** — `background-clip:text` rainbow fills on
|
|
21
|
+
headings. Trades legibility and contrast for an effect every AI page uses;
|
|
22
|
+
decoration eats the message.
|
|
23
|
+
*Fix:* solid color for headings; build hierarchy with size, weight, and space.
|
|
24
|
+
|
|
25
|
+
**03 · Warm "cozy" palette** — amber/stone/orange wash on soft beige. The
|
|
26
|
+
model's laziest translation of "warm and friendly": Tailwind's warm ramp served
|
|
27
|
+
raw, so every "human" product looks identical.
|
|
28
|
+
*Fix:* neutral base + one restrained warm accent; warmth comes from words.
|
|
29
|
+
|
|
30
|
+
**04 · The default semantic palette** — info in blue/indigo, tip in amber,
|
|
31
|
+
success in green, error in red: the framework's stock `-50` backgrounds with
|
|
32
|
+
`-600` text. Nobody picked these hues; three or four unrelated candy colors,
|
|
33
|
+
related to nothing — not your brand, not each other. A bowl of default rainbow
|
|
34
|
+
candy where every box shouts a different colour.
|
|
35
|
+
*Fix:* grow semantic colours out of your one palette (tints of a hue plus
|
|
36
|
+
neutrals); colour only the states that truly differ. Most notes need no colour.
|
|
37
|
+
|
|
38
|
+
**05 · The one-hue status box** — a status or alert where the border, text, and
|
|
39
|
+
background are all one hue, the background just a see-through version of it: red
|
|
40
|
+
on red, yellow on yellow, green on green. The framework reflex
|
|
41
|
+
(`border-red-500`, `text-red-500`, `bg-red-500/10`), one loud hue at three
|
|
42
|
+
opacities, nothing toned to sit next to your UI. Red/yellow/green is a traffic
|
|
43
|
+
light, not a palette.
|
|
44
|
+
*Fix:* carry the state in words and weight first — a bold "Error" reads before
|
|
45
|
+
colour does. If you colour at all, one muted accent from your own palette on a
|
|
46
|
+
neutral surface.
|
|
47
|
+
|
|
48
|
+
**06 · Gradients as atmosphere** — a near-black blue page with a soft glow up
|
|
49
|
+
top and cards whose surface is itself a gradient, lighter above and darker
|
|
50
|
+
below: the default "premium dark mode." The glow and surface gradients carry no
|
|
51
|
+
information; it's the move a model makes to look premium in the dark, the same
|
|
52
|
+
midnight blue with a spotlight behind a thousand AI pages. Same family:
|
|
53
|
+
bento cards each washed in a tint of their own accent — the green card gets a
|
|
54
|
+
green gradient, the purple card a purple one — plus repeating-gradient stripes
|
|
55
|
+
as surface decoration, and colored box-shadow glows used as dark-mode accents.
|
|
56
|
+
*Fix:* pick one flat background and hold it; build surface depth with a hairline
|
|
57
|
+
and a restrained shadow. If a glow must exist, let it point at something.
|
|
58
|
+
|
|
59
|
+
## Type
|
|
60
|
+
|
|
61
|
+
**07 · Serif-italic on one word** — swapping one word in a sans headline to
|
|
62
|
+
serif italic for "emphasis." Cheap drama that stages two voices in one sentence;
|
|
63
|
+
the most viral AI headline tic.
|
|
64
|
+
*Fix:* emphasise with weight, position, or a line break; keep one voice, and if
|
|
65
|
+
you truly need italic use the same family's italic.
|
|
66
|
+
|
|
67
|
+
**08 · Serif where sans belongs** — Playfair/Lora/Cormorant display serif on a
|
|
68
|
+
dev tool or SaaS, as body/UI text or as an oversized italic-serif hero
|
|
69
|
+
headline. The model equates "premium" with "serif"; display serifs are hard to
|
|
70
|
+
read at UI sizes and tonally off, a tuxedo on a terminal. The italic-serif hero
|
|
71
|
+
reads as taste in isolation — by now it's the universal AI-startup landing
|
|
72
|
+
page uniform.
|
|
73
|
+
*Fix:* one legible sans you chose; serif only when you want that voice, and a
|
|
74
|
+
text serif not a display one. Set the hero roman, or use a non-serif display
|
|
75
|
+
face (a genuinely editorial product may keep it — judge by context).
|
|
76
|
+
|
|
77
|
+
**09 · Decorative strikes & highlights** — striking out, underlining, or
|
|
78
|
+
swiping a highlighter over a word, not to delete or annotate but as decorative
|
|
79
|
+
"emphasis." The same disease as serif-emphasis: the model doesn't trust the
|
|
80
|
+
words to carry weight, so it draws on them.
|
|
81
|
+
*Fix:* let weight, size, line breaks, and structure carry emphasis; keep strike
|
|
82
|
+
for real edits, underline for links, highlight for real annotation.
|
|
83
|
+
|
|
84
|
+
**10 · The kicker above every heading** — a tiny uppercase, letter-spaced label
|
|
85
|
+
above the hero headline, then another above every section heading: FEATURES,
|
|
86
|
+
HOW IT WORKS, TESTIMONIALS. The kicker is an editorial device for *adding*
|
|
87
|
+
information (a section, a date, a category); the AI page stamps it as a reflex,
|
|
88
|
+
and the label restates what the heading already says. Zero information, worn as
|
|
89
|
+
a hat on every heading — a template's rhythm, not a decision.
|
|
90
|
+
*Fix:* delete any kicker that restates its heading; keep one only where it adds
|
|
91
|
+
a real dimension. Let scale and space introduce sections.
|
|
92
|
+
|
|
93
|
+
**11 · The full-sentence display headline** — a whole marketing sentence set at
|
|
94
|
+
display size (`text-6xl font-extrabold tracking-tight`), wrapping to three or
|
|
95
|
+
four lines and eating the first viewport. Display sizes are for the two or
|
|
96
|
+
three words that can carry that scale; the model doesn't know which words yours
|
|
97
|
+
are, so it sets the whole pitch huge and crushes the tracking to look
|
|
98
|
+
"designed." Size standing in for the decision about what matters. (The
|
|
99
|
+
killaislop.com site itself did it — its definition section set a whole
|
|
100
|
+
sentence at display size until this entry forced the fix.)
|
|
101
|
+
*Fix:* compress the one thing into a few words and let those be big; say the
|
|
102
|
+
rest in a normal-size subline. Tighten tracking only as far as the face was
|
|
103
|
+
designed to go.
|
|
104
|
+
|
|
105
|
+
**12 · The flat type hierarchy** — every size on the page crammed between 14
|
|
106
|
+
and 18px: headings barely bigger than body, labels barely smaller, hierarchy
|
|
107
|
+
left entirely to shades of gray. The opposite failure of the display-size
|
|
108
|
+
sentence, and the same absence: nobody decided what matters most. The model
|
|
109
|
+
plays it safe (`text-lg` heading, `text-sm` everything else), so a reader
|
|
110
|
+
can't tell the page's one important thing from its footnotes.
|
|
111
|
+
*Fix:* a scale with few steps and real contrast between them (1.25× and up);
|
|
112
|
+
give the most important thing a size that says so. If two sizes are within a
|
|
113
|
+
pixel or two, merge them.
|
|
114
|
+
|
|
115
|
+
## Copy
|
|
116
|
+
|
|
117
|
+
**13 · Highlighted keywords** — coloring or bolding scattered words
|
|
118
|
+
mid-paragraph, like a highlighter ran over it. When every word is emphasised,
|
|
119
|
+
none is; it's the signature of not knowing the point.
|
|
120
|
+
*Fix:* let sentence structure carry emphasis — at most one accent per paragraph.
|
|
121
|
+
|
|
122
|
+
**14 · The AI copywriting voice** — "It's not just X — it's Y", "Say goodbye to
|
|
123
|
+
X", punchy three-word triads, an em-dash habit, dismissing things as "X
|
|
124
|
+
theater." A rhythmic fingerprint: symmetrical, one notch too excited,
|
|
125
|
+
specifics-free.
|
|
126
|
+
*Fix:* write something specific — real numbers, nouns, consequences; say it the
|
|
127
|
+
way one person explains it to another.
|
|
128
|
+
|
|
129
|
+
**15 · Emoji everywhere** — an emoji on every heading, button, and bullet: 🚀
|
|
130
|
+
launch, ⚡ fast, 🔒 secure, 🎉 delight. Borrowed warmth standing in for tone
|
|
131
|
+
that copy and design should carry; a glyph before every point is louder, not
|
|
132
|
+
clearer.
|
|
133
|
+
*Fix:* cut decorative emoji from the UI; keep one only where it genuinely
|
|
134
|
+
carries information, like a real status.
|
|
135
|
+
|
|
136
|
+
## Components
|
|
137
|
+
|
|
138
|
+
**16 · The glowing status dot** — a status indicator (online / ready / live)
|
|
139
|
+
drawn as a solid dot in a pale halo, usually pulsing, almost always saturated
|
|
140
|
+
green; at its most decorative, glued into a hero marketing pill, playing status
|
|
141
|
+
for a tagline with no state behind it. A status is a tiny signal; the halo,
|
|
142
|
+
pulse, and breathing glow carry no information. Inflating a binary state into a
|
|
143
|
+
glowing gem is textbook overdesign.
|
|
144
|
+
*Fix:* a small, flat, single-color dot plus a word; no halo, no pulse. Colour
|
|
145
|
+
only when the state actually matters or changes — and if nothing is live behind
|
|
146
|
+
it, no dot at all.
|
|
147
|
+
|
|
148
|
+
**17 · Rounded card, colored left border** — a pale rounded box with a 4px
|
|
149
|
+
colored bar down the left, wrapped around every list item, not just a "Tip/Note"
|
|
150
|
+
but feature points and changelog rows. A docs admonition turned into universal
|
|
151
|
+
decoration, so every row looks like an "important note" and none is. Sibling
|
|
152
|
+
move: a thick accent ring (`border-2` in a loud color) around a rounded card
|
|
153
|
+
to make one tier "pop."
|
|
154
|
+
*Fix:* let a list be a list — alignment, spacing, hierarchy. Callouts are
|
|
155
|
+
scarce: one or two a page, only for a genuine aside.
|
|
156
|
+
|
|
157
|
+
**18 · Rounded-square icon tiles** — every feature gets a rounded-square chip +
|
|
158
|
+
a line icon, tiled into a grid. Shortest path to "looks designed"; the icons
|
|
159
|
+
rarely relate to the content, they just fill the grid. Same reflex at another
|
|
160
|
+
size: a giant decorative line icon (`w-24 h-24`) parked in a card as filler.
|
|
161
|
+
*Fix:* an icon must carry meaning or go; a clear label + one sentence beats a
|
|
162
|
+
row of glyphs.
|
|
163
|
+
|
|
164
|
+
**19 · Max radius + glassmorphism** — everything a max-radius pill; every card a
|
|
165
|
+
translucent `backdrop-blur` pane. A frozen slice of 2021 Dribbble; effect
|
|
166
|
+
presets unrelated to what the product says.
|
|
167
|
+
*Fix:* one radius, held site-wide (usually small); depth from solid surfaces and
|
|
168
|
+
space, not blur.
|
|
169
|
+
|
|
170
|
+
**20 · The oversized drop shadow** — a small card or icon casting a huge, soft
|
|
171
|
+
shadow that bleeds far past it on every side: big blur, low opacity, almost no
|
|
172
|
+
offset. A shadow says how high a surface floats, and real light gives a tight
|
|
173
|
+
contact shadow plus a soft ambient one with the blur tracking the height; this
|
|
174
|
+
one tracks nothing. A big soft blur reads as "depth" in a thumbnail but maps to
|
|
175
|
+
no real height — atmosphere standing in for elevation. Variant: the "ghost
|
|
176
|
+
card," a hairline border *plus* a wide diffuse shadow on the same card — two
|
|
177
|
+
separators doing one job; commit to an edge or an elevation, not both.
|
|
178
|
+
*Fix:* a small elevation scale, held: tight blur, small offset, low opacity,
|
|
179
|
+
never a shadow bigger than the thing casting it. Often a hairline does the
|
|
180
|
+
separating and no shadow is needed; keep it colorless — a tinted glow isn't depth.
|
|
181
|
+
|
|
182
|
+
**21 · Corners that don't nest** — the same radius on every layer: a big-radius
|
|
183
|
+
outer box with an inner box at the same big radius, so the corners don't sit
|
|
184
|
+
concentrically and the inner arc fights the outer one. Nested corners have a
|
|
185
|
+
rule (inner = outer − gap); AI UIs skip the math and stamp one radius token on
|
|
186
|
+
everything.
|
|
187
|
+
*Fix:* compute the nested radius (inner = outer − padding), or don't round the
|
|
188
|
+
inner element at all; keep a small, deliberate radius scale.
|
|
189
|
+
|
|
190
|
+
**22 · The border that dies at the corner** — a rounded rectangle with a 1px
|
|
191
|
+
hairline on its straight edges and nothing at the corners: the outline runs to
|
|
192
|
+
the tangent points and stops, the arcs go naked. It happens because the radius
|
|
193
|
+
and the border live on different boxes. The model memorized a recipe — content
|
|
194
|
+
that can't round its own corners (a table, an image, a list, a scroll area)
|
|
195
|
+
gets wrapped in `rounded-xl overflow-hidden` — while the child component ships
|
|
196
|
+
with its own 1px border or dividers. Every line is locally correct: the
|
|
197
|
+
wrapper owns the radius, the child owns the stroke. But the square stroke ring
|
|
198
|
+
falls outside the rounded clip at all four corners and gets erased; the
|
|
199
|
+
straight runs survive inside the clip. The model never renders its own output,
|
|
200
|
+
so it never sees the corner; a human sees the broken edge in one glance. The
|
|
201
|
+
fingerprint of code that's right line by line and wrong as a whole.
|
|
202
|
+
*Fix:* put the radius and the border on the same box — border + border-radius
|
|
203
|
+
on one element, and the stroke wraps the arc for free. If an outer layer
|
|
204
|
+
genuinely must clip content, move the border up onto the clipping layer too.
|
|
205
|
+
Inverse holds: if the lines are really dividers, keep them straight, run them
|
|
206
|
+
edge to edge, and don't round the fill.
|
|
207
|
+
|
|
208
|
+
**23 · Badge and pill spam** — "✨ New", "β Beta", "🔥 Popular" decorative pills
|
|
209
|
+
everywhere. Manufacturing fake buzz; in bulk each stops meaning anything.
|
|
210
|
+
*Fix:* a badge only for real status (a version, stock).
|
|
211
|
+
|
|
212
|
+
**24 · AI-drawn SVG icons** — asking a model to "draw an icon" and shipping what
|
|
213
|
+
comes back: a round blob with two dot eyes, a mascot of primitive shapes, a logo
|
|
214
|
+
that's a rounded square with a face. Vector art the machine can't really draw,
|
|
215
|
+
used as the product's mark; it looks like placeholder art that never got
|
|
216
|
+
replaced.
|
|
217
|
+
*Fix:* get a real, high-quality icon. Commission a designer, or generate one
|
|
218
|
+
with the best image model and refine it until it's crisp and on-brand. A crude
|
|
219
|
+
SVG the model sketched, or a bare fallback letter, isn't a mark worth shipping.
|
|
220
|
+
|
|
221
|
+
**25 · Icon in a tint of itself** — every icon wrapped in a rounded square
|
|
222
|
+
filled with a see-through tint of its own color: a blue icon on faint blue, a
|
|
223
|
+
green one on faint green (`bg-{color}/10` behind `text-{color}`). A one-line
|
|
224
|
+
reflex — pad, round, wash in 10% of the icon's hue — so the page becomes a grid
|
|
225
|
+
of soft colored squares.
|
|
226
|
+
*Fix:* let an icon just be an icon; inherit the text color, no container. If
|
|
227
|
+
something genuinely needs one, give it a deliberate opaque surface from your
|
|
228
|
+
palette, not a tint of the icon it holds.
|
|
229
|
+
|
|
230
|
+
## Motion
|
|
231
|
+
|
|
232
|
+
**26 · The springy hover** — every card, button, and image wearing
|
|
233
|
+
`hover:scale-105` and `transition-all`: touch it and it grows, lifts, and
|
|
234
|
+
bounces on an elastic ease. Motion is information — what changed, where a thing
|
|
235
|
+
went, what's interactive — and scaling a card on hover says nothing; the card
|
|
236
|
+
isn't growing, and the user already knows the cursor is on it. `transition-all`
|
|
237
|
+
is the tell inside the tell: animating every property is the absence of
|
|
238
|
+
deciding which one means something.
|
|
239
|
+
*Fix:* transition only the properties that carry the state change (background,
|
|
240
|
+
border, opacity), 120–200ms, standard ease. Hover feedback is a surface shift,
|
|
241
|
+
not growth; save spring physics for things that genuinely move through space.
|
|
242
|
+
|
|
243
|
+
**27 · The wobbling spinner** — a loading spinner that doesn't turn around its
|
|
244
|
+
own centre: the arc wobbles, tracing a little circle as it spins. Off-centre
|
|
245
|
+
artwork, a stray `transform-origin`, or a rotate keyframe that clobbers the
|
|
246
|
+
centering `translate(-50%, -50%)` (a keyframe replaces the whole `transform`).
|
|
247
|
+
A spinner has exactly one job — rotate in place around a fixed point — and
|
|
248
|
+
anyone who runs the page sees the wobble within half a second; shipping it is
|
|
249
|
+
an admission that nobody ever watched the interface move. Other tells are an
|
|
250
|
+
absence of taste; this one is an absence of looking. It lands at the worst
|
|
251
|
+
moment: the user has nothing to do but stare, and the most-watched element on
|
|
252
|
+
the page is limping. "Loading" reads as "broken."
|
|
253
|
+
*Fix:* give the rotation a real centre: artwork centred in its own box (the
|
|
254
|
+
SVG arc centred on the viewBox), `transform-origin` at center, and centering
|
|
255
|
+
kept out of the animated `transform` — position with a wrapper or the
|
|
256
|
+
standalone `rotate` property. Then watch one full revolution.
|
|
257
|
+
|
|
258
|
+
## Layout
|
|
259
|
+
|
|
260
|
+
**28 · The all-caps card grid** — an ALL-CAPS label plus a number or icon,
|
|
261
|
+
copied into rows of interchangeable cards: feature grids and dashboard
|
|
262
|
+
stat-cards alike. It fakes structure while stuffing unrelated things into
|
|
263
|
+
identical boxes; the ALL-CAPS micro-label is the default costume for "looks
|
|
264
|
+
designed."
|
|
265
|
+
*Fix:* decide the single most important thing and show it fully; if you must
|
|
266
|
+
list, use real hierarchy and contrast, not a grid of equal-weight cards.
|
|
267
|
+
|
|
268
|
+
**29 · The invented stat row** — three big numbers in a row: 10k+ developers,
|
|
269
|
+
99.9% uptime, 24/7 support, on a product that launched yesterday. Social proof
|
|
270
|
+
turned into a layout, filled whether or not the proof exists; the numbers are
|
|
271
|
+
set dressing (a round 10k+, two nines, a 24/7), not measurements. Real numbers
|
|
272
|
+
are odd and specific — and one invented figure poisons every true one beside it.
|
|
273
|
+
*Fix:* show a number only if you measured it, and say where it came from; one
|
|
274
|
+
real, checkable figure beats three round ones. No numbers yet? Say what the
|
|
275
|
+
product does.
|
|
276
|
+
|
|
277
|
+
**30 · The 01 / 02 / 03 section markers** — a giant faint ordinal beside every
|
|
278
|
+
marketing section (01 Collaborate, 02 Innovate, 03 Scale) as if they were steps
|
|
279
|
+
in a sequence. Numbering is a claim that these things happen in this order;
|
|
280
|
+
feature sections have no order, so the numerals are costume borrowed from
|
|
281
|
+
editorial design where an index means something. The cheapest way to look
|
|
282
|
+
structured without deciding on a structure.
|
|
283
|
+
*Fix:* number what's genuinely ordered — install steps, a changelog, a
|
|
284
|
+
catalogue — and delete the ornamental ordinals everywhere else.
|
|
285
|
+
|
|
286
|
+
**31 · Cards inside cards** — a bordered, rounded, shadowed card holding
|
|
287
|
+
another card holding another, every layer with its own surface and padding. A
|
|
288
|
+
card claims its content is one self-contained thing; nested three deep, nothing
|
|
289
|
+
is contained and the padding stacks until content is a sliver. The model boxes
|
|
290
|
+
because a box is the only grouping move it trusts — grouping by spacing and
|
|
291
|
+
alignment requires deciding what belongs together.
|
|
292
|
+
*Fix:* one surface per region; inside it, group with spacing, alignment, and
|
|
293
|
+
hairline dividers. A child earns its own surface only when it's genuinely a
|
|
294
|
+
separate object (a preview, an embed).
|
|
295
|
+
|
|
296
|
+
**32 · One gap everywhere** — `gap-4`, `p-4`, `space-y-4`: one spacing value
|
|
297
|
+
stamped across the page, so a heading sits exactly as far from its own body as
|
|
298
|
+
from the previous, unrelated section. Spacing is how a layout says what belongs
|
|
299
|
+
together — tight inside a group, generous between groups. One value everywhere
|
|
300
|
+
announces that nothing belongs to anything; proximity stops carrying
|
|
301
|
+
information, and the eye has to read every line to find the structure.
|
|
302
|
+
*Fix:* space by relationship, not by token: pull related lines close, push
|
|
303
|
+
unrelated groups apart. A small scale with real jumps (4/8/16/32/64), used
|
|
304
|
+
unevenly on purpose.
|
|
305
|
+
|
|
306
|
+
## Evolved slop
|
|
307
|
+
|
|
308
|
+
**33 · Inter everywhere** — Space Grotesk for display, Inter for body; or
|
|
309
|
+
Geist, Manrope, Plus Jakarta Sans. Every AI-built page draws from the same five
|
|
310
|
+
faces. They're good typefaces — that's the trap: the model reaches for them
|
|
311
|
+
because everyone did, and every product wearing them dissolves into the same
|
|
312
|
+
page. A typeface is the loudest single signal of who made this; outsourcing it
|
|
313
|
+
to the training-data average dodges the identity decision the way the indigo
|
|
314
|
+
gradient dodged the color one.
|
|
315
|
+
*Fix:* choose a face the way you'd choose a logo — try a few, set your own copy
|
|
316
|
+
in each, be able to say why this one. Landing back on Inter after that is a
|
|
317
|
+
choice; starting there isn't. (A system stack, picked for a reason, is a choice
|
|
318
|
+
too.)
|
|
319
|
+
|
|
320
|
+
**34 · The "tasteful terminal"** — mono everywhere, a near-black background, one
|
|
321
|
+
warm accent, ASCII art: the look of "an AI that read one Vercel blog post." It
|
|
322
|
+
isn't ugly, that's the trap; it's polished enough to have become the new
|
|
323
|
+
default, dodging the design decision exactly like the indigo gradient did, in
|
|
324
|
+
cooler clothing.
|
|
325
|
+
*Fix:* keep monospace for code, not UI chrome; use ASCII art and terminal
|
|
326
|
+
metaphors only where they serve the product. Real taste is a choice you can
|
|
327
|
+
explain, not this season's safest template.
|
|
328
|
+
|
|
329
|
+
**35 · The editorial dashboard** — an operational UI dressed as a magazine: a
|
|
330
|
+
giant serif "Good evening" greeting, serif numerals in the stat cards, cream
|
|
331
|
+
paper, a tracked-caps kicker over every block. The second-wave uniform:
|
|
332
|
+
scolded out of indigo gradients, the model's new shorthand for "taste" is
|
|
333
|
+
cream + display serif + one deep accent, stamped on any surface regardless of
|
|
334
|
+
its job. The greeting is lifted from a chat assistant's home screen, where the
|
|
335
|
+
greeting is the content; a dashboard's content is its numbers, and display
|
|
336
|
+
serifs with proportional oldstyle figures are prose type — the numerals you
|
|
337
|
+
can't scan down a column. A magazine is read once; a console is scanned all
|
|
338
|
+
day.
|
|
339
|
+
*Fix:* match the type to the job — a scanned interface takes a legible sans
|
|
340
|
+
with tabular lining numerals, hierarchy from scale and space. Display serif
|
|
341
|
+
belongs to genuinely editorial surfaces (docs, essays, a magazine). For
|
|
342
|
+
warmth, one material decision — a paper tint or an ink accent — not the full
|
|
343
|
+
costume.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Example --rules module: Russian AI-copywriting tells.
|
|
2
|
+
//
|
|
3
|
+
// node scan.mjs <root> --rules=path/to/rules.ru.mjs
|
|
4
|
+
//
|
|
5
|
+
// Each entry has the same shape as a core tell in scan.mjs. Patterns may be
|
|
6
|
+
// RegExp or plain strings (strings are compiled case-insensitive). `copy: true`
|
|
7
|
+
// means the tell also reads prose (.md), not only code. Use this file as the
|
|
8
|
+
// template for your own language- or stack-specific rules.
|
|
9
|
+
//
|
|
10
|
+
// Note: JavaScript's \b is ASCII-only and never matches next to Cyrillic
|
|
11
|
+
// letters — write plain substrings or explicit boundaries instead.
|
|
12
|
+
export default [
|
|
13
|
+
{ id: "ru-14", group: "copy", name: "русский AI-слог", fix: "скажите конкретную вещь",
|
|
14
|
+
copy: true,
|
|
15
|
+
patterns: [
|
|
16
|
+
/не просто .{1,40}?[—–-]\s*это/iu,
|
|
17
|
+
/попрощайтесь с|забудьте о том|представьте себе мир/iu,
|
|
18
|
+
/молниеносн|бесшовн|безупречн|революционн|беспрецедентн/iu,
|
|
19
|
+
/раскройте (?:весь )?потенциал/iu,
|
|
20
|
+
/выведите .{1,30} на новый уровень/iu,
|
|
21
|
+
/в считанные секунды/iu,
|
|
22
|
+
] },
|
|
23
|
+
];
|