Imported from starquakee/sgs (
AGENTS.md). Install upstream withnpx skills add starquakee/sgs. Copyright stays with the author.
SGS single-player adaptation
Read tasks/prd-sgs-client-experience.md, tasks/prd-sgs-decade.md, prd.json and progress.txt before editing. Current active run is ralph/sgs-client-experience; prior PRD/progress archived at archive/2026-10-04-sgs-decade. Old US-006 remains incomplete; do not change its status. User accepted: all decade-version generals/skills as the overall goal; single-player AI only; reuse Noname GPL-3.0 with attribution. Upstream is locked at 7fcf23ed54d8a7ce2b49ae2c15a054123891a52a. Preserve LICENSE and upstream source. NEVER push to libnoname/noname. The later user request authorizes publishing this project to https://github.com/starquakee/sgs. In the original sparse checkout, origin remains upstream; publish only to the explicit project remote sgs. Future pushes still require a user request. Keep local development history; use scripts/sgs/create-github-snapshot.mjs for an asset-bounded publication snapshot. Keep changes to the SGS adapter/launcher where possible. Do not replace real rules/AI with toy simulations. Do not claim all official generals or skills are verified without evidence. Use Node 22 and pnpm. In this Windows environment pnpm and Git mutations may require tool escalation; do not disable sandboxing. New programs must not spawn visible console windows. Never run upstream file server exposed to a network. UI must be visually verified in a browser. The configured browser tool is available in the desktop parent; CLI agents without it should explicitly leave UI validation pending. Current sparse checkout omits apps/mobile, apps/core/audio and apps/core/image/character. Keep compressed local WebP portraits in the SGS adapter and mute absent audio. Later user request supersedes the old text-only fallback: every catalog entry needs existing network/upstream art; do not generate images. User accepted labeled public test silhouettes for dengwantang, liupanxi and luwenyi. Later user request: four-player tables use native 2v2, fixed seats 1+4 versus 2+3 with the human at seat 4 and clear ally/enemy labels. Other counts retain identity mode. Include local card voices in sgs/audio; only absent hero/music audio stays muted. Card voices trigger on committed use/respond, never mere selection. Three-player Doudizhu is supported via native normal mode with selectable landlord/farmer. Use decade dcfeiyang and native bahu (preparation draw1, Slash uses+1), landlord HP bonus and native victory. Preserve the adapter-only selection handoff and legacy mode migration. Muniu stays banned in all modes. Teammate hands are always visible beside the allied seat in 2v2 and farmer Doudizhu, gated by the native viewHandcard permission. Keep this read-only view synchronized with the real hand; hide it after teammate death or loss of permission. Opening mulligans are unlimited and human-only in all three supported modes. The adapter wraps only the first native gameDraw and repeats native replaceHandcards before turn one. Keep native change_card prompts disabled to avoid duplication; preserve special piles, starting tags, four-seat bonus and landlord draw timing. Single-card hand choices support direct switching to another natively legal hand card, clear old targets, and still require manual confirmation. Keep multi-card, complex-card and custom selection handlers native; never mark extra cards natively selectable merely for this UI behavior. During native card choices, show legal hand cards brightly with a distinct shadow, dim unavailable cards strongly, and keep selected cards in a clear gold frame. Legal direct-switch candidates must remain bright. Shade only the card root, preserving the fixed face layout and native rule classes; idle/opening hands retain their normal appearance. After a human card click newly selects a normal single card or simple one-card view-as requiring exactly one target, preselect the sole native-selectable other character through the native target-click handler. This includes Slash, Snatch and other single-target cards per the 2026-10-04 follow-up request. Never auto-confirm, guess legality from AI attitude, overwrite existing targets, or reselect after a manual target cancellation. Active skills without view-as, multi-card costs, complex/custom and optional/multi-target choices remain native. Keep primary confirmation/start/cancel buttons large enough for comfortable clicks. Qinglong's native follow-up marks complexTarget/complexSelect even for one required defender. Permit that exact native qinglong_skill/sourcex follow-up to preselect its sole legal defender when using one Slash with exactly one required target; keep native filters, manual confirmation, cancellation and addCount=false. Do not generalize this exception to other complex skills or multi-target Slashes. Later reference-image correction supersedes the centered suit/rank layout: use a fixed classic card face with rank above suit at upper left, horizontal name at upper right and artwork below. Keep native card nodes, freeze inner transforms/opacity transitions, and animate only whole-card movement. Use the official classic fire/thunder Slash scans and motifs, never the unrelated liehuo/tianlei spell art; preserve source attribution and hidden-card behavior. Later user request (2026-10-03) supersedes the previous Wei-Dong-Zhuo-only audio scope: "威董卓的语音大概占用多不多?如果不多的话,我希望你也能去收集一些其他的最近两年的比较强力武将的语音。以前的像那种标包的或者界线突破的武将就不用。" Collect a curated set of recent 2025–2026 decade generals, keeping standard/refresh voices excluded. Keep all local recordings byte-identical to the locked upstream. Preserve native skill/death timing, subskill aliases and conversion forms; share one unlocked audio context and mute switch, with independent card and hero queues that may overlap, but never deduplicate hero lines using card event tokens. Unpackaged hero/music audio remains muted. Record official release evidence, exact version IDs and file sizes. Native damage impacts are enabled for positive real damage only. Preserve the engine's final nature, amount (1 versus 2+) and armor path; do not infer a hit from Slash selection/use or bypass damage prevention. Impacts share the unlocked audio context and sound switch but start immediately, independently of the voice queue; deduplicate per victim damage event. Keep the 14 pinned impact assets attributable.
Current accepted UX run: desktop client layout, fixed visible launch/actions, native context prompts, owned pause/settings/background pause, independent three-channel volume, short actual-event feedback, native result and recent50 records. No saved-game resume, new generals, rewritten AI, generated art or publishing. Desktop parent must verify UI before marking a story passing.
