Commit Graph

939 Commits

Author SHA1 Message Date
John 96146a265e docs: register feature/searxng-news-morning-throttle release on 103
Memind CI / Test, build, and release guards (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 07:52:11 +08:00
John b74ab4ec46 feat(wechat): news002 草稿左上角小图,配图本地化且缺图保留文字卡
Memind CI / Test, build, and release guards (push) Has been cancelled
微信 inline 与静态页 lead-card 统一为左侧缩略图;远程配图下载到当日 public/ 后再上传微信素材。SearXNG 预取与配图 enrichment 链路同步收紧,禁止默认占位小图删卡。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-22 07:36:20 +08:00
john 2e436664ce docs: remove trailing spaces in migration note
Memind CI / Test, build, and release guards (push) Successful in 4m59s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 11:04:40 +08:00
john 6a88b98044 feat: enforce real imagery for news002
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 11:03:55 +08:00
john 91d5c7a1fd chore(infra): update Studio/103 host IP to 114.85.107.50
Replace all references to the previous Portal host 180.159.29.143 with
114.85.107.50 across release scripts, safety gates, runbooks, and docs.

Also add scripts/push-wechat-news-morning-draft-now.mjs for direct draft
push without waiting on the worker poll interval.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 09:49:09 +08:00
john 2049bc8c6e fix(news): count lead cards in degradation check, add draft dry-run script
Trying to push a WeChat draft locally surfaced two problems.

isNewsMorningContentDegraded matched cards with `class="card(?:\s|")`, which
never matches news002's `class="lead-card"`. Headline cards were therefore
invisible to the check, so a healthy news002 page could be flagged as degraded
and regenerated. Count cards through the shared extractor instead, which
handles card, lead-card and highlight-box alike.

Add scripts/dryrun-news-morning-draft.mjs to run a page through the dedup gate,
degradation check, inline conversion and footer layout without calling the
WeChat API, since local IPs are not in the official account whitelist
(errcode 40164) and a real push would write into the production draft box.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 09:31:54 +08:00
john 5708b333cc feat(news): add news002 morning-report template with dedup gate and card images
Freeze the 2026-09-18 layout as news001 and add news002 alongside it.

Analysis of the 0918 production page found 49 news cards covering only ~20
distinct events (4x "王毅同鲁比奥通电话", 5x "东博会南宁开幕"), citing just 7
URLs that are all section landing pages rather than article permalinks, with
zero images. The root cause is structural: 23 fixed sections with fixed card
quotas force padding when the day yields fewer events.

news002 changes the contract so events decide sections, not the reverse:
core sections always render, flex sections are dropped entirely when they have
no unused event, total story cards are capped at 28, and every card carries a
data-event-key fingerprint.

Add wechat-news-morning-dedup.mjs as a post-generation gate, since the prompt
level "no duplicates" rule is unverifiable. It dedupes by event key, then by
article permalink (deliberately ignoring section landing pages, which would
otherwise delete most of the page), then by CJK bigram title similarity, since
the existing whitespace-tokenised matcher does not work on Chinese titles.

Carry per-item images through normalizeSearchResult into the prefetch brief so
cards can render real article thumbnails with a placeholder fallback.

Teach the WeChat inline converter both DOM variants (lead-card, masthead meta,
lede). Per-card images in the WeChat draft body remain a known gap.

Template selection is config/env driven and still defaults to news001.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 09:19:41 +08:00
john 18389a28dc docs: register feature/wechat-push-secret-codes branch disposition
Memind CI / Test, build, and release guards (push) Successful in 3m30s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 19:30:15 +08:00
john bb6aa75b3b feat(wechat): add secret codes for morning subscribe and news push
Memind CI / Test, build, and release guards (push) Successful in 4m14s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 19:10:27 +08:00
john 830f8a4011 feat(wechat): add service-account push subscriptions and news morning cover delivery
Memind CI / Test, build, and release guards (push) Successful in 5m36s
Ship the 10-item numeric subscription loop on WeChat MP, wire schedule delivery
for news/weather/quote/health/finance/tech/knowledge/night/surprise pushes, and
extend news morning draft cover generation plus a one-shot draft push script.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 16:15:15 +08:00
John 1c007999e5 docs: register feature/chat-intent-stage-a and leftover news-morning branch
Memind CI / Test, build, and release guards (push) Successful in 4m39s
Record the merged chat-intent work as closed, and mark the leftover local news-morning branch as not reusable.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-19 21:02:50 +08:00
John a30b62b987 feat(chat-intent): observe routing, keep discuss-first on chat, and escalate short follow-ups
Memind CI / Test, build, and release guards (push) Has been cancelled
Close the chat-session dead zone without flipping production flags: record 0.72 fallbacks, stop C-2 from treating「先聊聊」as execute, and promote「不对你去执行」after a completed direct turn on both h5direct and date sessions.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-19 13:13:17 +08:00
John 82811d7b89 chore(news-morning): lock template reference to daily-news-0918
Memind CI / Test, build, and release guards (push) Successful in 3m10s
Finalize the approved 2026-09-18 refined briefing as the production layout and SEO reference for future auto-generation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 09:46:28 +08:00
John e962d86ba5 feat(news-morning): enable comments, compact WeChat layout and SEO spec
Default open WeChat draft comments, add SEO/visual template rules with h2 sections and mindspace-geo, and compress inline styles to pack more cards within the 20k HTML budget.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 09:29:30 +08:00
John 9ae35f38e1 fix(news-morning): drop hot section and WeChat stats row
Remove the trending/hot search lane and section, forbid stats summary in page spec, and stop injecting card/section counts into WeChat inline articles.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 09:00:46 +08:00
John af0282e963 feat(news-morning): add full-tier channels with cross-group dedupe
Expand daily briefing prefetch and template to cover Asia-Pacific, commodities, AI/chips, policy, community, science, culture, startup, crypto, geopolitics, cities and wire feeds, with URL/title deduplication across sections.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 08:12:10 +08:00
John e71e397302 test(news-morning): align specs with global source template
Update worker and draft tests for degraded-page guard and expanded international sections.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 07:28:10 +08:00
John 31762be5ef feat(news-morning): add Google, X, university and global market sources
Expand SearXNG prefetch and template with four English-friendly sections so daily news can surface global headlines without copying stale archives.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 07:24:34 +08:00
john 0de33ad541 feat(analytics): SEO/GEO catalog 合并 Umami 统计并补工作区页
Memind CI / Test, build, and release guards (push) Successful in 4m9s
看板筛选期内的总访问/SEO/GEO 与 Umami memind-pages 取较大值,MindSpace 直链-only 的 public 页也会追加到目录。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 15:15:26 +08:00
john a15cc66f31 docs: register fix/wechat-schedule-delivery-false-success branch disposition
Memind CI / Test, build, and release guards (push) Successful in 3m42s
Record merge into main and 103 fast release artifact for the WeChat
deferred delivery reminder fix.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 21:45:54 +08:00
john d820247aa1 fix(schedule): retry reminders when WeChat delivery is deferred
Memind CI / Test, build, and release guards (push) Successful in 3m32s
Treat deferred/skipped customer-service sends as failures so reminder worker
does not mark reminders sent, and add a 103 read-only health check script.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 21:30:53 +08:00
tkmind eecfb79042 Merge pull request 'feat(seo): 工作区 public/*.html 默认纳入 SEO 收录' (#51) from feature/workspace-public-implicit-seo into main
Memind CI / Test, build, and release guards (push) Successful in 3m19s
2026-09-16 12:56:20 +00:00
john 745e9b691d feat(seo): 工作区 public/*.html 默认纳入 SEO 收录
Memind CI / Test, build, and release guards (pull_request) Successful in 3m35s
未点公开发布但已落盘到 public/ 的页面,在无在线非 public 发布阻挡时
合成 implicit public snapshot,注入 canonical/JSON-LD 并扫描进 sitemap。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 20:49:20 +08:00
tkmind 422ff8647c Merge pull request 'docs: register feature/baidu-seo-push branch disposition' (#50) from docs/baidu-seo-push-disposition into main
Memind CI / Test, build, and release guards (push) Successful in 3m20s
2026-09-16 11:26:59 +00:00
john 607e0d758b docs: register feature/baidu-seo-push branch disposition
Memind CI / Test, build, and release guards (pull_request) Failing after 2m58s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 19:25:46 +08:00
tkmind 61a594f10a Merge pull request 'fix(test): 微信草稿缩略图测试改用自包含 fixture' (#49) from feature/baidu-seo-push into main
Memind CI / Test, build, and release guards (push) Successful in 4m41s
2026-09-16 11:17:34 +00:00
john 856096674a fix(test): 微信草稿缩略图测试改用自包含 fixture
Memind CI / Test, build, and release guards (pull_request) Successful in 3m41s
CI 环境无 gitignore 的 MindSpace/august-afternoon.html,导致 resolveWechatDraftThumbPath 用例 ENOENT。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 16:49:54 +08:00
tkmind 1e4f6433ff feat(seo): 固化 m.tkmind.cn 百度验证、推送与 sitemap 去重
Memind CI / Test, build, and release guards (push) Failing after 3m54s
2026-09-16 08:45:14 +00:00
john f281f15788 feat(seo): 固化 m.tkmind.cn 百度验证、推送与 sitemap 去重
Memind CI / Test, build, and release guards (pull_request) Failing after 3m21s
让 Portal 首页稳定注入站长验证 meta,并提供 sitemap 批量推送脚本与 LaunchAgent 安装入口;sitemap/llms 对同页优先保留 /u/ canonical URL。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 16:28:46 +08:00
john 0f692ab68f docs: register feature/wechat-news-morning-inline-v2 branch disposition
Memind CI / Test, build, and release guards (push) Failing after 4m38s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 15:21:55 +08:00
john b8bcbcb764 feat(wechat): 早报草稿改用内联模板并去掉正文大封面
让定时任务按新版式推送草稿:热门旅游城市天气、无 Hero logo,并约束生成页必须写城市天气卡。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 15:20:44 +08:00
john 96d8e119ed docs: register feature/seo-geo-universal branch disposition
Memind CI / Test, build, and release guards (push) Failing after 2m58s
记录 SEO/GEO 全量能力合并 main 与 103 发布 20260916-103611-8d475087。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 10:43:02 +08:00
john 8d475087d2 test(wechat): 隔离 sidecar 缩略图候选用例,避免 SEO 回填污染
Memind CI / Test, build, and release guards (push) Failing after 3m37s
改用临时目录 fixture,不再依赖本地 MindSpace 可被 backfill 改写的 HTML。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 10:35:34 +08:00
john 357e26ab49 feat(seo-geo): 落盘自动补齐与 143 全量回填支持
Memind CI / Test, build, and release guards (pull_request) Failing after 7m12s
Memind CI / Test, build, and release guards (push) Has been cancelled
Finish/交付写盘前自动回填 mindspace-geo,扩展 storage publications 扫描与 geo meta 解析,并增加 143 生产回填脚本。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 10:26:02 +08:00
john acca846856 feat(seo-geo): 全页面 SEO/GEO 回填、统一检查与 Plaza 注入
Memind CI / Test, build, and release guards (pull_request) Failing after 4m17s
引入批量回填与审计工具链,强制 mindspace-geo 元数据,扩展 sitemap/llms 收录 /learn,并为 Plaza 壳页注入 canonical/OG/JSON-LD;本地 593 页已通过 check:mindspace-cover。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 09:36:01 +08:00
john 7ab7bf0f2d Merge branch 'docs/learn-branch-disposition'
Memind CI / Test, build, and release guards (push) Failing after 2m47s
Register closed disposition for feature/learn-standalone-pages.
2026-09-16 09:15:12 +08:00
john 51a32bf6f2 docs: register feature/learn-standalone-pages branch disposition
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 09:15:12 +08:00
john 01b9a8c16d Merge branch 'feature/learn-standalone-pages'
Memind CI / Test, build, and release guards (push) Has been cancelled
Ship learn standalone pages and MindSpace background list sync fix.
2026-09-16 09:13:49 +08:00
john 63f1b8ee44 test(portal): expect /learn static route in delivery order
Align static delivery route inventory with the learn standalone pages mount
so fast-release guard tests pass on feature/learn-standalone-pages.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 09:00:59 +08:00
john 264c213fbe fix(mindspace): use lightweight page sync for background list refresh
Background page list sync was calling syncAndDeliver over the remote adapter,
which could exceed the 60s timeout for heavy users and block Portal. Route list
sync through pageSyncService only via listSync while keeping full delivery on
Finish and agent-run paths.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 08:53:58 +08:00
john f9e105acd0 feat(learn): add standalone /learn pages backed by Page Data
Serve lightweight child/parent learning assistant pages at /learn without
MindSpace injection, with a rebuild script and Portal static route.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 17:17:18 +08:00
John b99ddbacee docs: register feature/news-morning-force-archive disposition
Memind CI / Test, build, and release guards (push) Failing after 2m55s
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 08:25:22 +08:00
John b89b74f29d fix(wechat): 强制重生成先归档当日早报,避免沿用旧 HTML
forceGenerateOnce 若看到已有 daily-news-MMDD.html 会立刻当完成,SearXNG 新稿写不进去。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 08:25:12 +08:00
John 0edb3716d5 docs: register feature/news-morning-searxng-prefetch disposition
Memind CI / Test, build, and release guards (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 08:15:35 +08:00
John 34ab59e0af feat(wechat): 早报生成预取 SearXNG 新闻,覆盖国内国际热点
生成任务不再只靠 web_search:先并行检索国内/国际/热门事件等,再要求 tkmind_search 与 web_search 补漏写页。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 08:15:12 +08:00
John 8798bf07fa test(wechat): forceGenerateOnce 用例补上当日 slug 规则
Memind CI / Test, build, and release guards (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 06:13:54 +08:00
John d966713d3f docs: register feature/news-morning-fresh-daily disposition
Memind CI / Test, build, and release guards (push) Has been cancelled
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 06:12:07 +08:00
John 4fc488ad33 fix(wechat): 早报必须搜当日新闻,禁止用旧稿充草稿
生成说明强制联网搜索当天内容,pushDraft 拒绝非当日页面;forceGenerateOnce 用于发版后重跑今日早报。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 06:11:36 +08:00
john b6d85d487a Update WeChat draft follow template
Memind CI / Test, build, and release guards (push) Failing after 2m51s
2026-09-14 15:36:40 +08:00
John 64b5819978 chore: allow esbuild builds in pnpm workspace
Memind CI / Test, build, and release guards (push) Failing after 3m13s
Keep local pnpm from blocking esbuild postinstall when switching machines.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 11:28:56 +08:00