首家工业级全流程 AI 影视生产平台。Industry-first professional AI Agent platform for controllable film & video production. From shorts to live-action with Hollywood-standard workflows.
This report presents the forensic synthetic code analysis of waooAI/waoowaoo, a TypeScript project with 13,224 GitHub stars. SynthScan v2.0 examined 221,280 lines of code across 1404 source files, recording 642 pattern matches distributed across 8 syntactic categories. The overall adjusted score of 4.0 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 642 distinct pattern matches across 8 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/user-api/model-template-save.test.ts | 16 | function readSavedModelsFromUpsert(): Array<Record<string, unknown>> { | CODE |
| LOW | …s/unit/api-config/provider-card-tutorial-modal.test.ts | 110 | function ProviderCardShellWithBody( | CODE |
| LOW | …s/integration/api/specific/user-api-config-put.test.ts | 62 | function readSavedProvidersFromUpsert(): SavedProvider[] { | CODE |
| LOW | …s/integration/api/specific/user-api-config-put.test.ts | 81 | function readSavedModelsFromUpsert(): Array<Record<string, unknown>> { | CODE |
| LOW | tests/contracts/tasktype-behavior-matrix.ts | 12 | function resolveChainTestByTaskType(taskType: TaskType): string { | CODE |
| LOW | tests/contracts/tasktype-behavior-matrix.ts | 48 | function resolveApiContractByTaskType(taskType: TaskType): string { | CODE |
| LOW | tests/system/text-workflow.system.test.ts | 153 | async function seedScriptToStoryboardState() { | CODE |
| LOW | tests/helpers/fixtures.ts | 28 | export async function createFixtureNovelProject(projectId: string) { | CODE |
| LOW | tests/helpers/fixtures.ts | 44 | export async function createFixtureGlobalCharacter(userId: string, folderId: string | null = null) { | CODE |
| LOW | tests/helpers/fixtures.ts | 55 | export async function createFixtureGlobalCharacterAppearance(characterId: string, appearanceIndex = 0) { | CODE |
| LOW | tests/helpers/fixtures.ts | 67 | export async function createFixtureGlobalLocation(userId: string, folderId: string | null = null) { | CODE |
| LOW | tests/helpers/fixtures.ts | 78 | export async function createFixtureGlobalLocationImage(locationId: string, imageIndex = 0) { | CODE |
| LOW | scripts/media-safety-backup.ts | 63 | async function listLocalFilesRecursively(rootDir: string, prefix = ''): Promise<StorageIndexRow[]> { | CODE |
| LOW | scripts/watchdog.ts | 128 | async function cleanupZombieProcessingTasks() { | CODE |
| LOW | src/instrumentation.ts | 92 | function resolveTaskLocaleFromPayload(payload: unknown): TaskJobData['locale'] | null { | CODE |
| LOW | src/app/[locale]/workspace/page.tsx | 50 | function toProjectValidationMessage( | CODE |
| LOW | …modes/novel-promotion/WorkspaceStageRuntimeContext.tsx | 68 | export function WorkspaceStageRuntimeProvider({ value, children }: WorkspaceStageRuntimeProviderProps) { | CODE |
| LOW | …tId]/modes/novel-promotion/NovelPromotionWorkspace.tsx | 17 | function NovelPromotionWorkspaceContent(props: NovelPromotionWorkspaceProps) { | CODE |
| LOW | …el-promotion/components/WorkspaceAssetLibraryModal.tsx | 23 | export default function WorkspaceAssetLibraryModal({ | CODE |
| LOW | …el-promotion/components/WorkspaceRunStreamConsoles.tsx | 47 | export default function WorkspaceRunStreamConsoles({ | CODE |
| LOW | …on/components/storyboard/ImageSectionCandidateMode.tsx | 25 | export default function ImageSectionCandidateMode({ | CODE |
| LOW | …mponents/storyboard/PanelVariantModalCustomOptions.tsx | 14 | export default function PanelVariantModalCustomOptions({ | CODE |
| LOW | …components/storyboard/ImageEditModalSelectedAssets.tsx | 16 | export default function ImageEditModalSelectedAssets({ | CODE |
| LOW | …ponents/storyboard/PanelVariantModalSuggestionList.tsx | 19 | export default function PanelVariantModalSuggestionList({ | CODE |
| LOW | …n/components/storyboard/StoryboardGroupFailedAlert.tsx | 12 | export default function StoryboardGroupFailedAlert({ | CODE |
| LOW | …on/components/storyboard/ImageSectionActionButtons.tsx | 24 | export default function ImageSectionActionButtons({ | CODE |
| LOW | …on/components/storyboard/ImageEditModalAssetPicker.tsx | 21 | export default function ImageEditModalAssetPicker({ | CODE |
| LOW | …mponents/storyboard/hooks/useStoryboardStageUiState.ts | 5 | export function useStoryboardStageUiState() { | CODE |
| LOW | …/components/storyboard/hooks/storyboard-state-utils.ts | 9 | export function sortStoryboardsByClipOrder( | CODE |
| LOW | …/components/storyboard/hooks/storyboard-state-utils.ts | 30 | export function buildStoryboardSyncSignature( | CODE |
| LOW | …/components/storyboard/hooks/storyboard-state-utils.ts | 56 | export function computeStoryboardStartIndex( | CODE |
| LOW | …mponents/storyboard/hooks/usePanelImageModification.ts | 36 | export function usePanelImageModification({ | CODE |
| LOW | …components/storyboard/hooks/panel-candidate-runtime.ts | 55 | export function ensurePanelCandidatesInitialized( | CODE |
| LOW | …components/storyboard/hooks/panel-candidate-runtime.ts | 95 | export function getPanelCandidatesFromRuntime( | CODE |
| LOW | …/storyboard/hooks/useStoryboardBatchPanelGeneration.ts | 18 | export function useStoryboardBatchPanelGeneration({ | CODE |
| LOW | …nents/storyboard/hooks/useStoryboardStageController.ts | 32 | export function useStoryboardStageController({ | CODE |
| LOW | …/storyboard/hooks/useStoryboardTaskAwareStoryboards.ts | 22 | function buildStoryboardTextTargets(storyboards: NovelPromotionStoryboard[]): TaskTarget[] { | CODE |
| LOW | …/storyboard/hooks/useStoryboardTaskAwareStoryboards.ts | 88 | export function useStoryboardTaskAwareStoryboards({ | CODE |
| LOW | …mponents/storyboard/hooks/usePanelEpisodeCachePatch.ts | 21 | export function usePanelEpisodeCachePatch({ | CODE |
| LOW | …mponents/storyboard/hooks/useStoryboardGroupActions.ts | 21 | export function useStoryboardGroupActions({ | CODE |
| LOW | …mponents/storyboard/hooks/usePanelImageRegeneration.ts | 28 | export function usePanelImageRegeneration({ | CODE |
| LOW | …nts/storyboard/hooks/useStoryboardPanelAssetActions.ts | 61 | export function useStoryboardPanelAssetActions({ | CODE |
| LOW | …nents/storyboard/hooks/storyboard-panel-asset-utils.ts | 23 | export function buildDefaultAssetsForClip({ | CODE |
| LOW | …nents/storyboard/hooks/useStoryboardGroupTaskErrors.ts | 17 | export function useStoryboardGroupTaskErrors({ | CODE |
| LOW | …omponents/storyboard/hooks/image-generation-runtime.ts | 17 | export function updatePanelImageUrlInStoryboards( | CODE |
| LOW | …omponents/storyboard/hooks/image-generation-runtime.ts | 44 | export function reconcileSubmittingPanelImageIds( | CODE |
| LOW | …omponents/storyboard/hooks/image-generation-runtime.ts | 71 | export function reconcileModifyingPanelIds( | CODE |
| LOW | …tion/components/storyboard/hooks/useImageGeneration.ts | 41 | export function useStoryboardImageGeneration({ | CODE |
| LOW | …mponents/storyboard/hooks/useStoryboardModalRuntime.ts | 74 | export function useStoryboardModalRuntime({ | CODE |
| LOW | …/storyboard/hooks/useStoryboardInsertVariantRuntime.ts | 31 | export function useStoryboardInsertVariantRuntime({ | CODE |
| LOW | …ponents/storyboard/hooks/useStoryboardAiDataRuntime.ts | 44 | export function useStoryboardAiDataRuntime({ | CODE |
| LOW | …ion/components/storyboard/hooks/useAIDataModalState.ts | 58 | export function createAIDataModalDraftState(params: { | CODE |
| LOW | …ion/components/storyboard/hooks/useAIDataModalState.ts | 76 | export function mergeAIDataModalDraftStateByDirty( | CODE |
| LOW | …omotion/components/voice/SpeakerVoiceBindingDialog.tsx | 28 | export default function SpeakerVoiceBindingDialog({ | CODE |
| LOW | …l-promotion/components/assets/location-backed-asset.ts | 3 | export function canGenerateLocationBackedAsset( | CODE |
| LOW | …l-promotion/components/assets/location-backed-asset.ts | 16 | export function resolveLocationBackedGenerateType( | CODE |
| LOW | …motion/components/assets/AssetsStageStatusOverlays.tsx | 24 | export default function AssetsStageStatusOverlays({ | CODE |
| LOW | …/components/assets/hooks/useBatchGeneration.helpers.ts | 11 | function createCharacterGroupSignature(appearance: CharacterAppearance) { | CODE |
| LOW | …/components/assets/hooks/useBatchGeneration.helpers.ts | 19 | function createLocationGroupSignature(location: Location) { | CODE |
| LOW | …tion/components/assets/hooks/useAssetsGlobalActions.ts | 35 | export function isGlobalAnalyzeTaskRunning(taskState: GlobalAnalyzeTaskSnapshot): boolean { | CODE |
| 478 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/helpers/json-repair.test.ts | 4 | // ─── safeParseJson ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/helpers/json-repair.test.ts | 49 | // ─── safeParseJsonObject ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/helpers/json-repair.test.ts | 81 | // ─── safeParseJsonArray ────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/helpers/json-repair.test.ts | 136 | // ─── 真实 LLM 畸形输出回归测试 ─────────────────────────────────────── | COMMENT |
| MEDIUM | …s/novel-promotion/components/assets/AssetFilterBar.tsx | 6 | // ─── Types ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/novel-promotion/components/assets/AssetFilterBar.tsx | 23 | // ─── Component ──────────────────────────────────────── | COMMENT |
| MEDIUM | …des/novel-promotion/components/assets/AssetToolbar.tsx | 37 | // ─── 剧集筛选 Chip ──────────────────────────────────── | COMMENT |
| MEDIUM | …/[locale]/workspace/asset-hub/components/AssetGrid.tsx | 34 | // ─── 新建资产下拉菜单 ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/app/[locale]/dev/segmented-control-test/page.tsx | 295 | // ═══════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/[locale]/dev/segmented-control-test/page.tsx | 297 | // ═══════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/[locale]/dev/segmented-control-test/page.tsx | 299 | // ─── 方案 G: 玻璃霓虹滑块 (Glass Neon Slide) ──────────── | COMMENT |
| MEDIUM⚡ | src/app/[locale]/dev/segmented-control-test/page.tsx | 557 | // ═══════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/[locale]/dev/segmented-control-test/page.tsx | 559 | // ═══════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | src/app/[locale]/dev/segmented-control-test/page.tsx | 561 | // ─── Final 1: 滑动药丸 (Sliding Pill Final) ───────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 5 | // ─── 演示选项 ───────────────────────────────────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 20 | // ─── 原始版本 (Current) ────────────────────────────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 50 | // ─── 方案 A: 滑动指示器 (Sliding Pill) ────────────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 97 | // ─── 方案 B: 渐变下划线 (Gradient Underline) ──────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 146 | // ─── 方案 C: 胶囊按钮组 (Capsule Group) ───────────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 171 | // ─── 方案 D: 霓虹卡片 (Neon Card) ─────────────────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 223 | // ─── 方案 E: 玻璃态 (Glassmorphism) ───────────────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 270 | // ─── 方案 F: 浮雕质感 (Embossed) ──────────────────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 350 | // ─── 方案 H: 极光药丸 (Aurora Pill) ───────────────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 403 | // ─── 方案 I: 冰晶霓虹 (Ice Neon) ──────────────────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 453 | // ─── 方案 J: 磨砂药丸 (Frosted Pill) ──────────────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 502 | // ─── 方案 K: 星辰玻璃 (Stellar Glass) ─────────────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 607 | // ─── Final 2: 蓝色霓虹 (Blue Neon Final) ──────────────── | COMMENT |
| MEDIUM | src/app/[locale]/dev/segmented-control-test/page.tsx | 658 | // ─── 页面 ───────────────────────────────────────────── | COMMENT |
| MEDIUM | src/components/ui/select-variants.tsx | 7 | // ─── Constants & Types ───────────────────────────────────────── | COMMENT |
| MEDIUM | src/components/ui/select-variants.tsx | 29 | // ─── Variant 1: Pill / Solid Card Style ───────────────────────── | COMMENT |
| MEDIUM | src/components/ui/select-variants.tsx | 181 | // ─── Variant 2: Minimalist Line / Base Style ──────────────────── | COMMENT |
| MEDIUM | src/components/ui/select-variants.tsx | 319 | // ─── Variant 3: Ghost / Lightweight ───────────────────────────── | COMMENT |
| MEDIUM | src/components/ui/SegmentedControl.tsx | 5 | // ─── Types ──────────────────────────────────────────── | COMMENT |
| MEDIUM | src/components/ui/SegmentedControl.tsx | 24 | // ─── Component ──────────────────────────────────────── | COMMENT |
| MEDIUM | …omponents/ui/config-modals/ModelCapabilityDropdown.tsx | 19 | // ─── Types ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …omponents/ui/config-modals/ModelCapabilityDropdown.tsx | 76 | // ─── Helpers ────────────────────────────────────────── | COMMENT |
| MEDIUM | …omponents/ui/config-modals/ModelCapabilityDropdown.tsx | 112 | // ─── Component ──────────────────────────────────────── | COMMENT |
| MEDIUM | …ib/novel-promotion/stages/voice-stage-runtime-core.tsx | 215 | // ─── 内联音色绑定弹窗状态 ─────────────────────────── | COMMENT |
| MEDIUM | src/lib/task/reconcile.ts | 23 | // ────────────────────── 常量 ────────────────────── | COMMENT |
| MEDIUM | src/lib/task/reconcile.ts | 42 | // ────────────────────── BullMQ Job 状态检查 ────────────────────── | COMMENT |
| MEDIUM | src/lib/task/reconcile.ts | 82 | // ────────────────────── 孤儿任务终止 ────────────────────── | COMMENT |
| MEDIUM | src/lib/task/reconcile.ts | 149 | // ────────────────────── 批量对账 ────────────────────── | COMMENT |
| MEDIUM | src/lib/task/reconcile.ts | 209 | // ────────────────────── Watchdog ────────────────────── | COMMENT |
| MEDIUM | src/lib/workers/handlers/panel-variant-task-handler.ts | 28 | // ── 构建变体提示词 ────────────────────────────────────── | COMMENT |
| MEDIUM | src/lib/workers/handlers/panel-variant-task-handler.ts | 70 | // ── 构建角色和场景描述信息 ───────────────────────────── | COMMENT |
| MEDIUM | src/lib/logging/file-writer.ts | 15 | // ─── environment guard ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/lib/logging/file-writer.ts | 23 | // ─── node module cache ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/lib/logging/file-writer.ts | 69 | // ─── project-name cache ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/lib/logging/file-writer.ts | 111 | // ─── file helpers ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/lib/logging/file-writer.ts | 143 | // ─── 24h cleanup helpers ───────────────────────────────────────────── | COMMENT |
| MEDIUM | src/lib/logging/file-writer.ts | 187 | // ─── prefix mapping ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/lib/logging/file-writer.ts | 194 | // ─── buffered events ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/lib/logging/file-writer.ts | 218 | // ─── public API ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/lib/logging/file-writer.ts | 273 | // ─── global log writer ────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/lib/logging/file-writer.ts | 309 | // ─── log file access (for download API) ───────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/unit/optimistic/sse-invalidation.test.ts | 82 | return runtime.queryClient.invalidateQueries.mock.calls.some((call) => { | CODE |
| CRITICAL | tests/unit/worker/image-task-handlers-core.test.ts | 129 | const locationUpdateCall = prismaMock.locationImage.update.mock.calls.at(-1) as [unknown] | undefined | CODE |
| CRITICAL | tests/unit/worker/image-task-handlers-core.test.ts | 203 | const panelUpdateCall = prismaMock.novelPromotionPanel.update.mock.calls.at(-1) as [unknown] | undefined | CODE |
| CRITICAL | …unit/worker/modify-image-reference-description.test.ts | 180 | const characterUpdateCall = prismaMock.characterAppearance.update.mock.calls.at(-1) as [unknown] | undefined | CODE |
| CRITICAL | …unit/worker/modify-image-reference-description.test.ts | 216 | const globalCharacterUpdateCall = prismaMock.globalCharacterAppearance.update.mock.calls.at(-1) as [unknown] | undef | CODE |
| CRITICAL | …unit/worker/modify-image-reference-description.test.ts | 239 | const locationUpdateCall = prismaMock.locationImage.update.mock.calls.at(-1) as [unknown] | undefined | CODE |
| CRITICAL | …unit/worker/modify-image-reference-description.test.ts | 272 | const globalLocationUpdateCall = prismaMock.globalLocationImage.update.mock.calls.at(-1) as [unknown] | undefined | CODE |
| CRITICAL | …unit/worker/modify-image-reference-description.test.ts | 292 | const locationUpdateCall = prismaMock.locationImage.update.mock.calls.at(-1) as [unknown] | undefined | CODE |
| CRITICAL | …unit/worker/modify-image-reference-description.test.ts | 321 | const globalLocationUpdateCall = prismaMock.globalLocationImage.update.mock.calls.at(-1) as [unknown] | undefined | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/check-image-urls-contract.ts | 83 | print(summary) | CODE |
| HIGH | scripts/check-image-urls-contract.ts | 103 | print(`[check-image-urls-contract] failed scanned=${totalScanned} violations=${totalViolations}`) | CODE |
| HIGH | scripts/check-image-urls-contract.ts | 108 | print(`[check-image-urls-contract] ok scanned=${totalScanned}`) | CODE |
| HIGH⚡ | scripts/migrate-image-urls-contract.ts | 195 | print(summary) | CODE |
| HIGH⚡ | scripts/migrate-image-urls-contract.ts | 196 | print(`[migrate-image-urls-contract] ${modelName}: reasons=${JSON.stringify(stats.reasons)}`) | CODE |
| HIGH⚡ | scripts/migrate-image-urls-contract.ts | 199 | print(`[migrate-image-urls-contract] ${modelName}: sampleChanges=${JSON.stringify(samples, null, 2)}`) | CODE |
| HIGH⚡ | scripts/migrate-image-urls-contract.ts | 206 | print(`[migrate-image-urls-contract] mode=${APPLY ? 'apply' : 'dry-run'}`) | CODE |
| HIGH | scripts/migrate-image-urls-contract.ts | 221 | print(`[migrate-image-urls-contract] done scanned=${totals.scanned} updatedRows=${totals.updatedRows} changedFields=${ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | messages/zh/smartImport.json | 106 | "placeholder": "在此处粘贴你的小说章节或剧本内容...", | CODE |
| LOW | messages/zh/assetModal.json | 68 | "placeholder": "描述你想要的角色特征...", | CODE |
| LOW | messages/zh/novel-promotion.json | 36 | "placeholder": "在此处粘贴你的小说章节或剧本内容...", | CODE |
| LOW | messages/zh/configModal.json | 23 | "placeholder": "请输入...", | CODE |
| LOW | messages/zh/storyboard.json | 198 | "placeholder": { | CODE |
| LOW | messages/zh/storyboard.json | 375 | "placeholder": "可选:输入补充说明,如添加一个反应镜头..." | CODE |
| LOW | messages/zh/storyboard.json | 387 | "placeholder": "输入首尾帧视频提示词...", | CODE |
| LOW | messages/zh/video.json | 67 | "placeholder": "输入视频提示词...", | CODE |
| LOW | messages/zh/home.json | 21 | "placeholder": "输入关键词、故事大纲或简短创意...\n\n例如:\n• 古代宫廷 复仇 悬疑 女主角\n• 第一幕:女主回到京城,暗访旧宅;第二幕:宫廷宴会偶遇仇人之子", | CODE |
| LOW | messages/zh/worldContextModal.json | 4 | "placeholder": "例如:\n【男主】张三,25岁,黑色短发,总是穿着一件洗得发白的牛仔夹克,眼神忧郁。\n【女主】李四,22岁,红发双马尾,性格活泼,喜欢穿洛丽塔风格的裙子。\n【场景】2077年的赛博朋克城市,霓虹灯 | CODE |
| LOW | messages/en/smartImport.json | 106 | "placeholder": "Paste your novel chapters or script content here...", | CODE |
| LOW | messages/en/assetModal.json | 68 | "placeholder": "Describe the character you want...", | CODE |
| LOW | messages/en/novel-promotion.json | 36 | "placeholder": "Paste your novel chapters or script content here...", | CODE |
| LOW | messages/en/configModal.json | 23 | "placeholder": "Please enter...", | CODE |
| LOW | messages/en/storyboard.json | 198 | "placeholder": { | CODE |
| LOW | messages/en/storyboard.json | 375 | "placeholder": "Optional: Add notes, e.g. add a reaction shot..." | CODE |
| LOW | messages/en/storyboard.json | 387 | "placeholder": "Enter first/last frame video prompt...", | CODE |
| LOW | messages/en/video.json | 67 | "placeholder": "Enter video prompt...", | CODE |
| LOW | messages/en/home.json | 21 | "placeholder": "Enter keywords, story outline, or a short idea...\n\ne.g.\n• ancient palace, revenge, mystery, femal | CODE |
| LOW | messages/en/worldContextModal.json | 4 | "placeholder": "Example:\n【Protagonist】John, 25, short black hair, always wearing a faded denim jacket, melancholy e | CODE |
| LOW | tests/unit/task/presentation.test.ts | 24 | expect(state.mode).toBe('placeholder') | CODE |
| LOW | src/components/ui/config-modals/WorldContextModal.tsx | 96 | placeholder={t('placeholder')} | CODE |
| LOW | src/components/home/AiWriteModal.tsx | 88 | placeholder={t('placeholder')} | CODE |
| LOW | src/components/task/TaskStatusOverlay.tsx | 15 | if (state.mode !== 'overlay' && state.mode !== 'placeholder') return null | CODE |
| LOW | src/lib/task/presentation.ts | 5 | export type TaskPresentationMode = 'none' | 'overlay' | 'placeholder' | CODE |
| LOW | src/lib/task/presentation.ts | 35 | mode: input.hasOutput ? 'overlay' : 'placeholder', | CODE |
| LOW | src/lib/task/presentation.ts | 48 | mode: input.hasOutput ? 'overlay' : 'placeholder', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/components/ui/model-dropdown-variants.tsx | 457 | // No explicit boxes for the dropdown fields. A seamless, document-like feel. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | extract_chinese.py | 7 | CODE | |
| LOW | extract_chinese.py | 8 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | extract_chinese.py | 10 | CODE | |
| LOW | extract_chinese.py | 57 | CODE |