Web application generating interactive and highly customizable maps
This report summarizes scanner evidence for Azgaar/Fantasy-Map-Generator, a HTML project with 6,163 GitHub stars. SynthScan examined 317,843 lines of code across 928 source files, recording 237 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 1.2 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 206 finding(s).
Are imports declared and package/API names verified? 19 finding(s).
Are wrappers, guards, and repeated structures necessary? 58 finding(s).
Which changes need focused human review? 237 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 237 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/locales/zh.json | 853 | "Don't forget to save your map on a regular basis!": "别忘了定期保存地图!", | CODE |
| LOW | src/locales/zh.json | 2043 | "Please don't forget to save the project to desktop from time to time": "请不要忘记不时将项目保存到桌面", | CODE |
| LOW | src/locales/zh.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "请不要忘记保存进度(保存到桌面是最佳选择)", | CODE |
| LOW | src/locales/zh.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/tr.json | 853 | "Don't forget to save your map on a regular basis!": "Haritanı düzenli olarak kaydetmeyi unutma!", | CODE |
| LOW | src/locales/tr.json | 2043 | "Please don't forget to save the project to desktop from time to time": "Lütfen projeyi zaman zaman masaüstüne kaydetm | CODE |
| LOW | src/locales/tr.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "Lütfen ilerlemeni kaydetmeyi unut | CODE |
| LOW | src/locales/tr.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/hu.json | 853 | "Don't forget to save your map on a regular basis!": "Ne felejtsen rendszeresen menteni!", | CODE |
| LOW | src/locales/hu.json | 2043 | "Please don't forget to save the project to desktop from time to time": "Ne felejtse időnként asztali gépre menteni a | CODE |
| LOW | src/locales/hu.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "Ne felejtse el menteni a haladásá | CODE |
| LOW | src/locales/hu.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/bn.json | 853 | "Don't forget to save your map on a regular basis!": "নিয়মিত আপনার মানচিত্র সংরক্ষণ করতে ভুলবেন না!", | CODE |
| LOW | src/locales/bn.json | 2043 | "Please don't forget to save the project to desktop from time to time": "মাঝে মাঝে ডেস্কটপে প্রকল্প সংরক্ষণ করতে ভুলবে | CODE |
| LOW | src/locales/bn.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "অগ্রগতি সংরক্ষণ করতে ভুলবেন না (ড | CODE |
| LOW | src/locales/bn.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/nl.json | 853 | "Don't forget to save your map on a regular basis!": "Vergeet niet je kaart regelmatig op te slaan!", | CODE |
| LOW | src/locales/nl.json | 2043 | "Please don't forget to save the project to desktop from time to time": "Vergeet niet het project af en toe op de desk | CODE |
| LOW | src/locales/nl.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "Vergeet niet je voortgang op te s | CODE |
| LOW | src/locales/nl.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/ja.json | 853 | "Don't forget to save your map on a regular basis!": "定期的に地図を保存するのを忘れないでください!", | CODE |
| LOW | src/locales/ja.json | 2043 | "Please don't forget to save the project to desktop from time to time": "時々プロジェクトをデスクトップに保存するのを忘れないでください", | CODE |
| LOW | src/locales/ja.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "進行状況を保存するのを忘れないでください(デスクトップに保存するの | CODE |
| LOW | src/locales/ja.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/de.json | 853 | "Don't forget to save your map on a regular basis!": "Vergiss nicht, deine Karte regelmäßig zu speichern!", | CODE |
| LOW | src/locales/de.json | 2043 | "Please don't forget to save the project to desktop from time to time": "Vergiss bitte nicht, das Projekt von Zeit zu | CODE |
| LOW | src/locales/de.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "Vergiss bitte nicht, deinen Forts | CODE |
| LOW | src/locales/de.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/ru.json | 853 | "Don't forget to save your map on a regular basis!": "Не забывайте регулярно сохранять карту!", | CODE |
| LOW | src/locales/ru.json | 2043 | "Please don't forget to save the project to desktop from time to time": "Не забывайте время от времени сохранять проек | CODE |
| LOW | src/locales/ru.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "Не забывайте сохранять прогресс ( | CODE |
| LOW | src/locales/ru.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/pl.json | 853 | "Don't forget to save your map on a regular basis!": "Nie zapomnij regularnie zapisywać mapy!", | CODE |
| LOW | src/locales/pl.json | 2043 | "Please don't forget to save the project to desktop from time to time": "Nie zapominaj od czasu do czasu zapisywać pro | CODE |
| LOW | src/locales/pl.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "Nie zapomnij zapisywać postępów ( | CODE |
| LOW | src/locales/pl.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/uk.json | 853 | "Don't forget to save your map on a regular basis!": "Не забувайте регулярно зберігати карту!", | CODE |
| LOW | src/locales/uk.json | 2043 | "Please don't forget to save the project to desktop from time to time": "Не забувайте час від часу зберігати проєкт на | CODE |
| LOW | src/locales/uk.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "Не забувайте зберігати прогрес (н | CODE |
| LOW | src/locales/uk.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/pt.json | 853 | "Don't forget to save your map on a regular basis!": "Não se esqueça de guardar o seu mapa regularmente!", | CODE |
| LOW | src/locales/pt.json | 2043 | "Please don't forget to save the project to desktop from time to time": "Não se esqueça de guardar o projeto no ambien | CODE |
| LOW | src/locales/pt.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "Não se esqueça de guardar o seu p | CODE |
| LOW | src/locales/pt.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/be.json | 853 | "Don't forget to save your map on a regular basis!": "Не забывайцеся рэгулярна захоўваць мапу!", | CODE |
| LOW | src/locales/be.json | 2043 | "Please don't forget to save the project to desktop from time to time": "Не забывайцеся час ад часу захоўваць праект н | CODE |
| LOW | src/locales/be.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "Не забывайцеся захоўваць прагрэс | CODE |
| LOW | src/locales/be.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/en.json | 867 | "Don't forget to save your map on a regular basis!": "Don't forget to save your map on a regular basis!", | CODE |
| LOW | src/locales/en.json | 2066 | "Please don't forget to save the project to desktop from time to time": "Please don't forget to save the project to de | CODE |
| LOW | src/locales/en.json | 2067 | "Please don't forget to save your progress (saving to desktop is the best option)": "Please don't forget to save your | CODE |
| LOW | src/locales/en.json | 3058 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/it.json | 853 | "Don't forget to save your map on a regular basis!": "Non dimenticare di salvare la mappa con regolarità!", | CODE |
| LOW | src/locales/it.json | 2043 | "Please don't forget to save the project to desktop from time to time": "Non dimenticare di salvare ogni tanto il prog | CODE |
| LOW | src/locales/it.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "Non dimenticare di salvare i prog | CODE |
| LOW | src/locales/it.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| LOW | src/locales/fr.json | 853 | "Don't forget to save your map on a regular basis!": "N’oubliez pas d’enregistrer votre carte régulièrement !", | CODE |
| LOW | src/locales/fr.json | 2043 | "Please don't forget to save the project to desktop from time to time": "N’oubliez pas d’enregistrer le projet sur vot | CODE |
| LOW | src/locales/fr.json | 2044 | "Please don't forget to save your progress (saving to desktop is the best option)": "N’oubliez pas d’enregistrer votre | CODE |
| LOW | src/locales/fr.json | 3008 | "This operation is destructive and irreversible. It will create a completely new map based on the current one. Don't f | CODE |
| 65 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/e2e/river-label-removal.spec.ts | 14 | const group = w.options.map.labels.groups.find((g: any) => g.name === "river"); | CODE |
| CRITICAL | src/model/options/options-model.ts | 342 | if (!mapSchema.shape.geography.shape.coordinates.safeParse(coordinates).success) Coordinates.calculate(); | CODE |
| CRITICAL⚡ | src/model/styles/styles.test.ts | 90 | expect(schema.grid.shape.options.shape.type.safeParse("pointyHex").success).toBe(true); | CODE |
| CRITICAL⚡ | src/model/styles/styles.test.ts | 91 | expect(schema.grid.shape.options.shape.type.safeParse("hex").success).toBe(false); | CODE |
| CRITICAL⚡ | src/model/styles/styles.test.ts | 92 | expect(schema.relief.shape.options.shape.set.safeParse("illustrated").success).toBe(true); | CODE |
| CRITICAL⚡ | src/model/styles/styles.test.ts | 93 | expect(schema.relief.shape.options.shape.set.safeParse("fancy").success).toBe(false); | CODE |
| CRITICAL⚡ | src/model/styles/styles.test.ts | 94 | expect(schema.ocean.shape.groups.shape.oceanLayers.shape.options.shape.outline.safeParse("-6,-3,-1").success).toBe( | CODE |
| CRITICAL⚡ | src/model/styles/styles.test.ts | 97 | expect(schema.ocean.shape.groups.shape.oceanLayers.shape.options.shape.outline.safeParse("-1").success).toBe(false); | CODE |
| CRITICAL⚡ | src/model/styles/styles.test.ts | 106 | expect(schema.map.shape.attrs.shape.filter.safeParse("").success).toBe(false); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/e2e/style-parity.spec.ts | 76 | function stripContentDerivedLayout(snapshot: Record<string, Record<string, string>>) { | CODE |
| LOW | tests/e2e/load-map.spec.ts | 21 | function buildLegacyMapWithLabelNotes(): Buffer { | CODE |
| LOW | tests/e2e/load-map.spec.ts | 48 | function buildLegacyMapWithAttributeHiddenBorders(): Buffer { | CODE |
| LOW | tests/e2e/load-map.spec.ts | 57 | function buildLegacyMapWithoutLakeShorelines(): Buffer { | CODE |
| LOW | src/ui/dialog/table.ts | 187 | export function restoreDefaultColumnVisibility(dialogId: string, columns: EditorColumn[]): Set<string> { | CODE |
| LOW | src/ui/map/viewbox-events.ts | 17 | export function applyDefaultViewboxEvents(): void { | CODE |
| LOW | src/renderers/draw-emblems.ts | 194 | export function subscribeToEmblemReconciliation(listener: () => void): () => void { | CODE |
| LOW | src/renderers/draw-emblems.ts | 225 | function releaseTransientDefinitions(ids: string[]): void { | CODE |
| LOW | src/renderers/draw-emblems.ts | 296 | function evictUnreferencedDefinitions(): void { | CODE |
| LOW | src/model/options/options-legacy.ts | 146 | export function normalizeLegacyBurgGroupFilters(groups: unknown): void { | CODE |
| LOW | src/controllers/world-configurator.ts | 277 | function updateConvertedTemperatures(): void { | CODE |
| LOW | src/controllers/view-3d.ts | 556 | function onChangeErosionRiverDepth(this: HTMLInputElement): void { | CODE |
| LOW | src/controllers/political/provinces-editor.ts | 534 | function triggerIndependencePromps(p: number): void { | CODE |
| LOW | src/controllers/political/provinces-editor.ts | 548 | function declareProvinceIndependence(provinceId: number): [number, number] | undefined { | CODE |
| LOW | src/controllers/political/provinces-editor.ts | 802 | function regenerateShortNameCulture(): void { | CODE |
| LOW | src/controllers/political/provinces-editor.ts | 809 | function regenerateShortNameRandom(): void { | CODE |
| LOW | src/controllers/political/provinces-editor.ts | 1370 | function highlightProvinceOnMergeHover(event: Event): void { | CODE |
| LOW | src/controllers/political/states-editor.ts | 671 | function regenerateShortNameCulture() { | CODE |
| LOW | src/controllers/political/states-editor.ts | 678 | function regenerateShortNameRandom() { | CODE |
| LOW | src/controllers/political/states-editor.ts | 1099 | function openTariffChecklistDialog({ | CODE |
| LOW | src/controllers/political/states-editor.ts | 1610 | function highlightStateOnMergeHover(event: Event) { | CODE |
| LOW | src/controllers/economy/production-chains.ts | 682 | function renderComponentSeparators(componentBands: ComponentBand[], offsetY: number, svgWidth: number): string { | CODE |
| LOW | src/controllers/economy/goods/goods-editor.ts | 548 | function selectResourceOnLineClick(this: HTMLElement) { | CODE |
| LOW | src/controllers/economy/goods/goods-editor.ts | 555 | function changeResourceOnCellClick(this: SVGElement, event: MouseEvent) { | CODE |
| LOW | src/controllers/economy/goods/goods-editor.ts | 696 | function requestProductionRegeneration() { | CODE |
| LOW | src/controllers/economy/routes/route-editor.ts | 408 | function showRouteElevationProfile(): void { | CODE |
| LOW | src/controllers/physical/heightmap-editor.ts | 619 | function setHistoryButtonsDisabled(undo: boolean, redo: boolean): void { | CODE |
| LOW | src/controllers/physical/heightmap-editor.ts | 1849 | function restoreImageConverterState(): void { | CODE |
| LOW | src/controllers/physical/rivers/river-editor.ts | 362 | function showRiverElevationProfile(): void { | CODE |
| LOW | src/controllers/society/religions-editor.ts | 263 | function religionsCollectStatistics(): void { | CODE |
| LOW | src/controllers/society/religions-editor.ts | 720 | function religionChangeExpansionism(this: HTMLInputElement): void { | CODE |
| LOW | src/controllers/society/cultures-editor.ts | 263 | function culturesCollectStatistics(): void { | CODE |
| LOW | src/controllers/society/cultures-editor.ts | 649 | function cultureChangeExpansionism(this: HTMLInputElement): void { | CODE |
| LOW | src/controllers/society/cultures-editor.ts | 674 | function cultureChangeEmblemsShape(this: HTMLSelectElement): void { | CODE |
| LOW | src/controllers/annotations/measurers-editor.ts | 182 | function toggleRouteOpisometerMode(this: HTMLElement): void { | CODE |
| LOW | src/controllers/annotations/labels/label-spread.ts | 299 | function getPathStartOffsetCandidates(currentOffset: number): number[] { | CODE |
| LOW | src/controllers/annotations/labels/label-spread.ts | 308 | function getPathStartOffsetPreference(startOffset: number): number { | CODE |
| LOW | src/controllers/annotations/labels/label-spread.ts | 354 | function getDisplayedBurgIconBounds(): Map<number, LabelBounds> { | CODE |
| LOW | src/controllers/annotations/labels/label-spread.ts | 607 | function transformRectToRootBounds( | CODE |
| LOW | src/controllers/annotations/labels/label-spread.ts | 772 | function getMinimumMovementPreference(item: LabelPlacementItem): number { | CODE |
| LOW | src/controllers/annotations/labels/labels-editor.ts | 495 | function changeStartOffsetFromValue(this: HTMLInputElement): void { | CODE |
| LOW | src/services/ui-tour.ts | 434 | function hideHeightmapCustomizationPanel() { | CODE |
| LOW | src/services/io/load.ts | 60 | async function createSharableDropboxLink(): Promise<void> { | CODE |
| LOW | src/services/io/export.ts | 890 | function getZonePolygonCoordinates(zoneCells: number[]) { | CODE |
| LOW | src/services/io/styles-legacy.ts | 520 | export function restoreStrippedLayerStyles(svg: LegacySvg, preset: Record<string, unknown>): void { | CODE |
| LOW | src/services/io/auto-update.ts | 2005 | function migrateLegacyCustomEmblems(): Set<string> { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/renderers/trade-animation.test.ts | 15 | // ─── helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderers/trade-animation.test.ts | 44 | // ─── shared setup ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderers/trade-animation.test.ts | 74 | // ─── getPathCost ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderers/trade-animation.test.ts | 98 | // ─── getDealBatches ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderers/trade-animation.test.ts | 131 | // ─── getPath ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/renderers/trade-animation.test.ts | 215 | // ─── trigger ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/services/ui-tour.ts | 111 | // ── Layers tab ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/services/ui-tour.ts | 150 | // ── Style tab ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/services/ui-tour.ts | 191 | // ── Options tab ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/services/ui-tour.ts | 255 | // ── Tools tab ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/services/ui-tour.ts | 306 | // ── About tab ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/services/ui-tour.ts | 334 | // ── Export / Save / Load ───────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/index.css | 161 | fill: none; | COMMENT |
| LOW | src/index.css | 1521 | #burgBody > div > div, | COMMENT |
| LOW | src/renderers/erosion-bake.ts | 801 | float ridgeAcc = acc.x * gate; | COMMENT |
| LOW | src/renderers/draw-satellite-texture.ts | 421 | float land = smoothstep(0.5, 0.54, landFactor); | COMMENT |
| LOW | src/renderers/draw-satellite-texture.ts | 581 | } | COMMENT |
| LOW | src/renderers/view-3d-renderer.ts | 1121 | float steep = clamp(flow.b * 1.186 - 0.186, 0.0, 1.0); // byte 40..255 -> 0..1 | COMMENT |
| LOW | src/app/chrome/tabs/style-tab.ts | 41 | #styleForm .changed .reset { visibility: visible; } | COMMENT |
| LOW | src/model/political/burgs-generator.test.ts | 1 | import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; | COMMENT |
| LOW | src/controllers/color-picker.ts | 21 | #${DIALOG} { padding: .6em; } | COMMENT |
| LOW | src/controllers/assistant/index.ts | 141 | } | COMMENT |
| LOW | src/controllers/assistant/index.ts | 161 | #assistant .assistantItem pre { overflow: auto; max-height: 14em; margin: .45em 0; padding: .4em .55em; border-radiu | COMMENT |
| LOW | src/controllers/assistant/index.ts | 181 | #assistant .assistantProposalSummary { flex: 1; font-weight: 600; } | COMMENT |
| LOW | src/controllers/assistant/index.ts | 201 | #assistant .assistantChangeEntity > .assistantNotePreview { margin: .15em 0 0 .6em; font-size: .92em; } | COMMENT |
| LOW | src/controllers/assistant/index.ts | 221 | #assistant .assistantCard { padding: .6em .7em; } | COMMENT |
| LOW | src/controllers/assistant/index.ts | 241 | #assistant .assistantChartCaption { padding: 0 .7em .45em; opacity: .6; font-size: .88em; } | COMMENT |
| LOW | src/controllers/assistant/index.ts | 261 | #assistant .assistantFeedback button { padding: 0 .2em; border: 0; background: none; opacity: .3; font-size: .9em; } | COMMENT |
| LOW | src/controllers/assistant/index.ts | 281 | #assistantAsk:hover { background: var(--header-active); } | COMMENT |
| LOW | src/controllers/assistant/index.ts | 301 | #assistant .assistantDelete { padding: 0 .2em; border: 0; background: none; opacity: .4; } | COMMENT |
| LOW | src/controllers/political/emblems/emblems-editor.ts | 41 | #emblemEditor .fields .row { display: contents; } | COMMENT |
| LOW | src/controllers/physical/relief/relief-pool-editor.ts | 21 | const DIALOG = "reliefPoolEditor"; | COMMENT |
| LOW | src/controllers/physical/relief/relief-pool-editor.ts | 41 | #${DIALOG} .head { opacity: .7; } | COMMENT |
| LOW | src/controllers/style/dialogs.ts | 201 | ? sentences(t("Layer is on"), t("Click to toggle")) | COMMENT |
| LOW | src/controllers/icon-picker/index.ts | 41 | #${ICON_PICKER} > div { width: auto; } | COMMENT |
| LOW | src/controllers/icon-picker/index.ts | 61 | #${ICON_PICKER} .panel { position: relative; overflow-y: auto; padding: .4em 0 .4em .6em; } | COMMENT |
| LOW | src/controllers/story/notes-editor.ts | 101 | /* the dialog sets its content height inline; the layout column fills it, the editor takes the rest */ | COMMENT |
| LOW | src/controllers/story/notes-editor.ts | 121 | #notesToolbar button:focus-visible, #notesToolbar .ql-picker-label:focus-visible { outline: 2px solid #5e4fa2; out | COMMENT |
| LOW | src/controllers/story/notes-editor.ts | 141 | #notesLayout .notes-symbols button { margin: 0; min-height: 28px; padding: 2px; font-size: 18px; background: white | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/controllers/political/provinces-editor.ts | 401 | <span data-tip="${sentences(t("Province capital"), t("Click to zoom"))}" class="icon-star-empty pointer ${p.burg | CODE |
| LOW | src/controllers/political/provinces-editor.ts | 402 | <select data-tip="${sentences(t("Province capital"), t("Click to select from burgs within the state"), t("No cap | CODE |
| LOW | src/controllers/political/provinces-editor.ts | 428 | <span data-col="independence" data-tip="${t("Declare province independence (turn non-capital province with burgs i | CODE |
| LOW | src/controllers/political/states-editor.ts | 430 | <svg width="1em" height="1em" class="placeholder" data-col="color"></svg> | CODE |
| LOW | src/controllers/political/states-editor.ts | 463 | <div data-col="tags" class="placeholder"></div> | CODE |
| LOW | src/controllers/political/zones-editor.ts | 280 | <span data-col="focus" data-tip="${t("Toggle zone focus")}" class="zoneFog icon-pin ${focused ? "" : "inactive"} $ | CODE |
| LOW | src/controllers/physical/features-overview.ts | 293 | ${feature.type === "lake" ? `<span data-tip="${t("Edit Lake")}" data-col="edit" class="icon-pencil"></span>` : `<s | CODE |
| LOW | src/controllers/physical/features-overview.ts | 296 | ? `<span data-col="coastline" class="placeholder"></span>` | CODE |
| LOW | src/controllers/society/religions-editor.ts | 325 | <svg width="9" height="9" class="placeholder" data-col="color"></svg> | CODE |
| LOW | src/controllers/society/cultures-editor.ts | 322 | <svg width="11" height="11" class="placeholder" data-col="color"></svg> | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | package-lock.json | 5603 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| MEDIUM | src/model/political/military-generator.ts | 533 | // utilize si function to make regiment total text fit regiment box | COMMENT |
| MEDIUM | src/model/physical/coastline-generator.ts | 241 | // smooth so the closed loop is fully seamless; otherwise start at vertex 0. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/wiki/Ollama-text-generation.md | 11 | ## Step 1: Download and Install Ollama | COMMENT |
| LOW | docs/wiki/Ollama-text-generation.md | 18 | ## Step 2: Download an AI Model | COMMENT |
| LOW | docs/wiki/Ollama-text-generation.md | 38 | ## Step 3: Allow Ollama to be accessed from the web | COMMENT |
| LOW | docs/wiki/Ollama-text-generation.md | 79 | ## Step 4: Start the server | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/app/shell.ts | 1 | // The app window itself: the SVG layer scaffold, browser-level behaviours | COMMENT |