Compare commits

..

2 Commits

Author SHA1 Message Date
john a503fa9cbe fix(deploy): add LaunchAgent prod runner scripts for adm api and web
Restore the missing run-memind-adm-*-prod.sh entrypoints expected by 103
LaunchAgents so admin services can restart cleanly after reboot.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-16 08:57:00 +08:00
john 66dd288015 feat(admin): open SEO/GEO defaults and clarify indexable pages
Align the MindSpace config UI with public-online indexing, add a one-click enable action, and document that 可收录 means public and unexpired.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 15:51:48 +08:00
4 changed files with 38 additions and 10 deletions
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
export ADM_API_PORT="${ADM_API_PORT:-8085}"
export NODE_BIN="${NODE_BIN:-/opt/homebrew/opt/node@24/bin/node}"
export PATH="/opt/homebrew/opt/node@24/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:${PATH}"
cd "${ROOT}"
exec "${NODE_BIN}" server/index.mjs
+12
View File
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
export ADM_PORT="${ADM_PORT:-5174}"
export NODE_BIN="${NODE_BIN:-/opt/homebrew/opt/node@24/bin/node}"
export PATH="/opt/homebrew/opt/node@24/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:${PATH}"
cd "${ROOT}"
if [[ ! -d dist ]]; then
echo "dist/ missing; run npm run build first" >&2
exit 1
fi
exec "${NODE_BIN}" ./node_modules/vite/bin/vite.js preview --host 0.0.0.0 --port "${ADM_PORT}" --strictPort
+17 -9
View File
@@ -4,18 +4,18 @@ import type { MindSpaceAdminConfig, MindSpaceSeoGeoConfig } from '../../types';
function defaultSeoGeoConfig(): MindSpaceSeoGeoConfig { function defaultSeoGeoConfig(): MindSpaceSeoGeoConfig {
return { return {
enabled: false, enabled: true,
seo: { seo: {
enabled: false, enabled: true,
canonical: true, canonical: true,
sitemap: false, sitemap: true,
robotsTxt: false, robotsTxt: true,
baiduPush: false, baiduPush: true,
}, },
geo: { geo: {
enabled: false, enabled: true,
jsonLd: false, jsonLd: true,
llmsTxt: false, llmsTxt: true,
}, },
}; };
} }
@@ -122,7 +122,7 @@ export function MindSpacePage() {
<section className="admin-card"> <section className="admin-card">
<h2>SEO / GEO</h2> <h2>SEO / GEO</h2>
<p className="muted"> <p className="muted">
access_mode=publicstatus=online noindex sitemap / llms.txt 线 SEO/GEO noindex sitemap / llms.txt
</p> </p>
<div className="admin-form"> <div className="admin-form">
<label className="admin-form-row"> <label className="admin-form-row">
@@ -203,6 +203,14 @@ export function MindSpacePage() {
<button type="submit" className="send-btn" disabled={busy || loading}> <button type="submit" className="send-btn" disabled={busy || loading}>
{busy ? '保存中...' : '保存配置'} {busy ? '保存中...' : '保存配置'}
</button> </button>
<button
type="button"
className="ghost-btn"
onClick={() => setSeoGeo(defaultSeoGeoConfig())}
disabled={busy || loading}
>
</button>
<button type="button" className="ghost-btn" onClick={() => void load()} disabled={busy}> <button type="button" className="ghost-btn" onClick={() => void load()} disabled={busy}>
</button> </button>
+1 -1
View File
@@ -127,7 +127,7 @@ export function SeoGeoAnalyticsPage() {
<div className="admin-page-head"> <div className="admin-page-head">
<h2>SEO / GEO </h2> <h2>SEO / GEO </h2>
<p className="muted"> <p className="muted">
线 URL访SEO / GEO referrer User-Agent 线 URL访 = SEO / GEO referrer User-Agent
</p> </p>
</div> </div>