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>
Strip dummy finish_reason/function_call payloads so downstream clients do not treat incomplete chunks as real tool calls.
Co-authored-by: Cursor <cursoragent@cursor.com>
previewToday() used the real clock, so the Sep 10 fixture failed on later calendar days and blocked Portal fast-release guards.
Co-authored-by: Cursor <cursoragent@cursor.com>
Stop the one-time force-dark migration from overriding users, default first visits to light, and roll forced-dark browsers back to light once.
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>
Wire WECHAT_AGENT_REPLY_TIMEOUT into the same Cursor takeover path used by
agent runs, raise the default WeChat reply timeout to 20 minutes, and fall
back to env-based tool-gateway detection when runtime exports are missing.
Co-authored-by: Cursor <cursoragent@cursor.com>
When a page-generation run times out without recoverable HTML, retry once
via Cursor code executor if MEMIND_CURSOR_PAGE_TIMEOUT_TAKEOVER is enabled.
Also release delivery contracts after successful deliverable recovery.
Co-authored-by: Cursor <cursoragent@cursor.com>
Reset saved light preferences once via memind-theme-migration marker so
existing visitors switch to dark on next load; inline boot script and OA
drive share the same migration version.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use inline daily-news HTML fixture instead of missing dev page file,
and assert WireGuard upstream 10.10.0.2 in canary release script test.
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>
After 103 public IP migration, 105 edge configs proxy to 10.10.0.2:8081 instead of the unreachable 58.38.22.103 or direct public 180.159.29.143.
Co-authored-by: Cursor <cursoragent@cursor.com>
Update scripts, docs, nginx configs, and release-gate safety checks after the Studio server public IP changed from 58.38.22.103.
Co-authored-by: Cursor <cursoragent@cursor.com>
First-time and cleared-storage users see dark mode; saved light preference is unchanged. Inline boot script avoids a light flash before React loads.
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>
Non-greedy brace regex missed the queue object when worker status output contains nested JSON; scan balanced objects from the end instead.
Co-authored-by: Cursor <cursoragent@cursor.com>
Update release script regression test to match the drain helper that selects the JSON block containing queue.
Co-authored-by: Cursor <cursoragent@cursor.com>
Release drain was timing out because --status now prints a preamble JSON blob without queue; pick the object that contains queue instead of sed from the first brace.
Co-authored-by: Cursor <cursoragent@cursor.com>
Unify chat and OA drive appearance with shared memind-theme storage, default light mode, and cross-frame sync so users can switch themes from chat or the drive shell.
Co-authored-by: Cursor <cursoragent@cursor.com>