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>
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>
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>
WeChat page delivery now triggers syncUserGeneratedPages so write_file HTML
gets page records; public share widget redirects unauthenticated owners to
WeChat OAuth instead of only showing an error.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add public-page WeChat draft button, publication standard conversion for poem/prose/generic pages, and quick push APIs. Default Studio release SSH targets to john@180.159.29.143 with 105 edge upstream via 10.10.0.2.
Co-authored-by: Cursor <cursoragent@cursor.com>
Run scheduled page generation before push time and write WeChat drafts from admin config so news morning reports no longer require manual pushes.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose authenticated /api/mindspace/v1/oa/drive APIs over each user's oa/ workspace and wire a MindSpace entry at /space/oa/drive.
Co-authored-by: Cursor <cursoragent@cursor.com>
Enable daily morning greeting on reply 1 (with custom time, modify, and cancel),
random greeting delivery, M发现 in subscribe welcome, and optional LLM parsing when
rules miss. Also fix WeChat MP draft/config error passthrough and add Tang E2E scripts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Let users bind their own official account credentials in M 配置 and push MindSpace pages to the WeChat draft box during or after publish, reusing the existing draft conversion pipeline.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose /health and /api/health/observations behind MEMIND_HEALTH_ENABLED, redirect ordinary chat health intents without persisting, and run a dedicated WeChat menu flow with confirm-before-write semantics.
Co-authored-by: Cursor <cursoragent@cursor.com>
Start a periodic reflect loop from portal and MindSpace service bootstraps when EXPERIENCE_REFLECT_ENABLED=1, aggregating repeated task outcomes on a configurable interval.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extend h5_experience with structured fields, wire mindspace-agent-runner and agent-run-gateway to persist task_outcome records with provenance, and add local migration and verification scripts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expose page/data/scheduled-task/chat-bridge switches in the智趣体验通道 config so Tang can roll out Cursor paths independently with DeepSeek fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
Plaza posts now resolve cover_url to /u/{slug}/pages/{urlSlug}.thumbnail.png
instead of MindSpace workspace paths that fail on plaza.tkmind.cn. Public-html
and chat quick-plaza flows regenerate workspace thumbnails with force:true
after hero images are on disk so feed cards embed the generated art.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a lightweight LLM over active task lists to pick taskId for cancel,
exclude page.generate from scheduled-task inbound, and remove single-task
auto-cancel so Cursor page generation stays isolated.
Co-authored-by: Cursor <cursoragent@cursor.com>
Non-allowlisted users stay on the existing Goose/DeepSeek path; only memindadm whitelist users enter the TKMind Cursor channel on selected intents and channels.
Co-authored-by: Cursor <cursoragent@cursor.com>
Align publication validation, portal gate HTML, H5 publish UI, MCP docs,
and page-data skill guidance so passwords like 888888 are accepted while
3-character values such as 888 remain rejected.
Co-authored-by: Cursor <cursoragent@cursor.com>
Refresh/login previously dropped active subscription from the client user
payload, so paid users saw a 0% balance ring despite valid plan quota.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ship Leaflet 1.9.4 under public/assets/leaflet and rewrite common CDN script/stylesheet URLs during publish and public HTML delivery, matching the existing Chart.js guard pattern.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce Draft → Confirm → Commit flow for WeChat schedule intents behind
feature flags, plus h5_tasks dual-write/read aggregation and rollout scripts
so reminders and automations get explicit user confirmation before persisting.
Co-authored-by: Cursor <cursoragent@cursor.com>
Wait for HTML materialization before releasing delivery contracts, pass
verified MindSpace URLs through proactive WeChat sends, resend on reconcile
when pages land late, and report deferred customer-service delivery as unsent.
Co-authored-by: Cursor <cursoragent@cursor.com>
Finish now releases static HTML delivery contracts in a finally block so
re-edited pages are not stuck at HTTP 409, and M成果 groups pages by
Asia/Shanghai calendar dates to avoid duplicate day headings.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ship the M成果 page with list/delete UX, fix deletePage for incomplete page records, route /space/achievements, and add M成果 under the WeChat M空间 menu.
Co-authored-by: Cursor <cursoragent@cursor.com>
Prevent publication delivery from crashing when test or proxy requests omit
headers while attaching SEO/GEO discovery metadata.
Co-authored-by: Cursor <cursoragent@cursor.com>
Document Umami as the sole analytics platform, remove Rybbit proxy and
tracker code, and classify public page traffic with discovery_channel for
adm SEO/GEO dashboards.
Co-authored-by: Cursor <cursoragent@cursor.com>
Scheduled automations were saved but never executed because the worker
required an explicit env flag. Follow H5_REMINDER_WORKER_ENABLED when unset,
add WeChat preflight to write tasks deterministically, and surface worker
warnings on create.
Co-authored-by: Cursor <cursoragent@cursor.com>
Allow margin/FX/cost-mode knobs to be overridden via h5_billing_admin_config so memind_adm can adjust DeepSeek billing without editing env.
Co-authored-by: Cursor <cursoragent@cursor.com>
Public generated pages were calling umami.identify(owner_id), collapsing
every visitor into the creator session. Anonymous visits now skip identify;
logged-in viewers identify with their own distinct id.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add period_images_bonus and ledger tracking, gate image_make on remaining quota,
expose admin image-quota routes, show remaining image quota in the balance popover,
and document that admin UI must live in memind_adm (5174) not ops.
Co-authored-by: Cursor <cursoragent@cursor.com>
Production WeChat delivery strips localPath from artifacts, so share-preview
auto-repair never wrote back to HTML. Resolve paths via publishDir +
relativePath, repair at materialize and delivery prep, and pass h5Root from
Portal so page.generate can patch missing meta before sending links.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add keyword fallback and dedupe for pgvector resolve, score personal vs episodic memories by relevance, record WeChat recall product events, and disable broken chatrecall on Postgres session storage.
Co-authored-by: Cursor <cursoragent@cursor.com>
Schedule LLM now binds an explicit provider key and fails closed on network errors so dead relay endpoints cannot block ordinary chat; relay bootstrap is opt-in only.
Co-authored-by: Cursor <cursoragent@cursor.com>
Give WeChat MP its own chat.general→page.generate LLM refinement layer with memindadm toggles, shadow mode, and canary openids so service account routing stays independent of the H5 chatIntentRouter.
Co-authored-by: Cursor <cursoragent@cursor.com>