<feed xmlns='http://www.w3.org/2005/Atom'>
<title>living-village.git/src/LivingVillage.Desktop/Interaction.fs, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>http://git.somhairle.bid/living-village.git/atom?h=main</id>
<link rel='self' href='http://git.somhairle.bid/living-village.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/'/>
<updated>2026-09-29T07:44:35+00:00</updated>
<entry>
<title>p77: 日历卡/浮动提示药丸化并修复面板遮挡快捷栏</title>
<updated>2026-09-29T07:44:35+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-29T07:44:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=dce50b835235a103af1d8e6ec836fe12d841f135'/>
<id>urn:sha1:dce50b835235a103af1d8e6ec836fe12d841f135</id>
<content type='text'>
- DrawCalendarCard 改半透明底+1px 描边+accent 发丝线，日历卡微缩(52→48)
- FloatingPrompt 新增 layoutWrapped/wrapText，锚定长文本逐字折行(不丢字、居中锚点、避让 HUD 带)
- 新增 HudLayout.panelRect，DrawPanel 用其几何；DialogOverlay.bottomMargin 24→72
  1280x720 下对话 rect 底 648、任务面板底 652，均 &lt; hotbar 顶 660，不再压 3-8 号槽
- 新增 P77LayoutTests(4 尺寸不破版/不遮挡 + 真实长提示折行)
- 证据 LV_P43/P44/P67_SHOT + scripts/analyze-p77.py(verdict PASS) 落 docs/evidence/p77-*
- Desktop 361/361, Kernel 120/120, digest 953775FA...F7F6C 不变
</content>
</entry>
<entry>
<title>p69: 中文 UI 文案统一审校（面板措辞/交易缺货口径/页脚留白与 ESC）</title>
<updated>2026-09-29T01:27:16+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-29T01:27:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=1d56991fadfaa6eb43d98b904db59685e77c220a'/>
<id>urn:sha1:1d56991fadfaa6eb43d98b904db59685e77c220a</id>
<content type='text'>
- 面板打开语统一：「年鉴已打开」→「年鉴面板已打开」（Interaction + requiredUiLabels）
- 交易缺货口径统一：「背包不足」→「库存不足」（PlayerTrade，与对话交易失败名一致）
- 分页页脚留白/大小写统一：「…页   空格 翻页   Esc 关闭」→「…页  空格 翻页  ESC 关闭」
- P69CopyAuditTests（2 例，红先）+ P61 钉住样例同步
- 只改字符串字面量与相关断言；Kernel/Sim/MapSnapshot 未动
- Desktop 338/338、Kernel 119/119；digest 953775FA…7F6C 不变
</content>
</entry>
<entry>
<title>p67: 每日任务面板展示目标（TargetNpc/TargetTile 可见化）</title>
<updated>2026-09-29T00:56:42+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-29T00:56:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=a578791b0dd8ca95fba3af6f3c2f39c816bd7e52'/>
<id>urn:sha1:a578791b0dd8ca95fba3af6f3c2f39c816bd7e52</id>
<content type='text'>
- TaskRuntime.targetText/taskLine：帮工→「村民 N」、翻土→「自家地块」，
  无目标时与旧任务行文案逐字节一致（不加箭头/目标名）
- Interaction TaskPanel 任务行改用 taskLine（其余面板/文案不动）
- 字形表新增 地 块 →（343 字，图集重生成）；ChineseText.requiredUiLabels 增补
- P67TaskTargetUiTests（5 例，红先）+ PrototypeTests 计数同步 340→343
- LV_P67_SHOT 证据钩子（有目标/无目标各一帧）+ scripts/analyze-p67.py
- Desktop 333/333、Kernel 119/119；digest 953775FA…7F6C ×3 PASS；未动 Kernel/Sim
</content>
</entry>
<entry>
<title>p65: 职业切片五 货郎打听行情读 World.Rumors（中文行情短答 + 稿证据）</title>
<updated>2026-09-28T22:51:21+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-28T22:51:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=2da1cbaf253245c437800e80b9aed9e8e47306b5'/>
<id>urn:sha1:2da1cbaf253245c437800e80b9aed9e8e47306b5</id>
<content type='text'>
- Kernel Occupation 新增 freshReliableRumors/inquiryRumor/marketInquiryText（纯判定+文案，
  对齐 Sim.latestRumorFor 新鲜度/可信度口径，全序命中规则，禁随机；不改 Sim.fs）
- Desktop chooseIntent：货郎 OfferTrade 读对话前谣言池，Status=inquiry|&lt;短答&gt;；statusLabel 透出
- 真字补 17 字（东头西北巷口盐巴米布茶柴涨两文落些）并重出 atlas（340 字/384x528）
- 红先 P65RumorInquiryTests（6 例）：命中/幂等/陈旧·微弱·空池/仅货郎/非货郎回归逐字节/
  save v2 头不变+v3 round-trip/穷举组合无缺字
- LV_P65_SHOT 钩子 + scripts/analyze-p65.py + docs/evidence/p65-*（PASS）
- Desktop 320/320，Kernel 119/119；digest 953775FA…7F6C ×3 PASS
</content>
</entry>
<entry>
<title>p55: 当日任务经济闭环——设计口径物品报酬入账(夜捕鱼×2/送粮食物×1, 其余不发) + 连续完成天数(streak 跨日保留/漏完成清零) + v3 streak 尾段与 save(None) 兼容 + LV_P55_SHOT 证据</title>
<updated>2026-09-28T16:24:08+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-28T16:24:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=a59a4bbe1ab45adb29d1367995230d3f09847d9b'/>
<id>urn:sha1:a59a4bbe1ab45adb29d1367995230d3f09847d9b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>p54: 当日任务玩家可见与可完成——Kernel 状态机接入真实事件/环境信号（接受/对话/交易/到达/夜水边），HUD 短中文反馈 + 任务面板接受提示 + v3 任务态往返与 save(None) 兼容 + LV_P54_SHOT 证据</title>
<updated>2026-09-28T15:55:20+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-28T15:55:20+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=3669d9710e3783c325385a5648766b798d20ec77'/>
<id>urn:sha1:3669d9710e3783c325385a5648766b798d20ec77</id>
<content type='text'>
</content>
</entry>
<entry>
<title>p53: 情境提示与输入隔离回归——提示文案=实际作用对象(唯一映射)+隔墙/边界/切换/离开/隔离断言 + LV_P53_REC 录制证据</title>
<updated>2026-09-28T15:24:24+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-28T15:24:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=7673d4af229735c9bdec5b167f7b29985b5bc858'/>
<id>urn:sha1:7673d4af229735c9bdec5b167f7b29985b5bc858</id>
<content type='text'>
</content>
</entry>
<entry>
<title>p52: 玩家交易通道——买/卖经 Sim.quotePrice→Occupation.biasedQuote，背包侧车/钱财增减 + v3 round-trip + HUD 短反馈(design §2.4-2)</title>
<updated>2026-09-28T15:06:20+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-28T15:06:20+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=07f2e072a14cc74133b187bb8715758790cdfe67'/>
<id>urn:sha1:07f2e072a14cc74133b187bb8715758790cdfe67</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(desktop): P31 step4 story progress display + evidence shots</title>
<updated>2026-09-22T08:42:26+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-22T08:42:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=4f512323e521bf57dee7b2bd5e060b69b7b6d029'/>
<id>urn:sha1:4f512323e521bf57dee7b2bd5e060b69b7b6d029</id>
<content type='text'>
- Task panel (T key): a storyline row per occupation, e.g. ju-qing-xian:
shui-wei-yu-shou-cheng, zou-fang-zhong (line name + stage name); absent
for occupation-free saves.
- Occupation select page: minimal hint line showing the selected
  occupation's storyline name.
- Evidence hook LV_STORY_SHOT=1 (+LV_STORY_OCCUPATION, LV_STORY_STAGE):
  boots a real world through the standard bootstrap, advances the story
  via the real dialogue pipeline (chooseDialogueWith bias + Story.onDialogue
  + StoryAnnal append), opens the task panel and saves one back-buffer
  frame, then exits. 4 Xvfb shots (farmer/fisher/peddler/scholar) captured
  under art/ (gitignored, not committed).
- 4 new desktop tests (156 -&gt; 160): panel storyline lines, bias + story
  advance through M5Interaction, no-occupation path stays story-free.
</content>
</entry>
<entry>
<title>feat(kernel,desktop): P31 step3 story annals + identity entry + glyph atlas</title>
<updated>2026-09-22T08:33:03+00:00</updated>
<author>
<name>Somhairle H. Marisol</name>
<email>muqiu-han@outlook.com</email>
</author>
<published>2026-09-22T08:33:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.somhairle.bid/living-village.git/commit/?id=9821b54ff2a77539898b62471d79dc4685b59cad'/>
<id>urn:sha1:9821b54ff2a77539898b62471d79dc4685b59cad</id>
<content type='text'>
- Sim.AnnalKind gains StoryAnnal (summary lives in the existing Summary
  field); WorldSave v3 serializes it with the new 'story' token. v1/v2
  saves never contain the token and stay byte-identical; v3 save -&gt; load
  -&gt; save roundtrips byte-for-byte (tested).
- Occupation.Story.identitySummaryOf: plain chronicle-style identity line
  written to the yearbook at game start (design section 3), e.g. yi-da-yu-wei-sheng.
- Desktop: story summaries render in the chronicle panel; StartNewGame
  appends the identity annal; chooseIntent now routes responses through
  Occupation.biasResponse and advances the storyline (one stage per
  player dialogue) with the summary appended as a StoryAnnal.
- M5View gains Seed (world seed source for the story start-day hash).
- Chinese copy synced into requiredUiLabels; cjk-glyphs.txt +
  CjkGlyphAtlas.characterTable extended 238 -&gt; 307 glyphs (384x480),
  atlas regenerated with the deterministic script.
- 4 new kernel tests (115 -&gt; 119); performance digest unchanged.
</content>
</entry>
</feed>
