chore: v2.8.15 — Oh My Pi login sharing, omp --allow-home, Markdown Preview default, first-login password

- omp-share.js: an admin's switch (S3) runs omp's own auth broker + gateway as
  the host on loopback; a member's omp pane reaches it as a scoped client keyed
  by its pane token (clients file = live omp panes only), runs on
  --model agenthub/<model>, never holds a credential.
- omp catalog: --allow-home, so a workspace at the account's home keeps its
  sessions there (they were recorded under a temp dir and dropped).
- Settings → Appearance → Open Markdown as: Preview (default) or Raw, for
  Files/Changes, the config viewer and a chat's file panel.
- First-login password change and password rules, avatar URLs, Artifacts
  "Mine" includes installed shared skills/plugins, a member's own hook pages.
This commit is contained in:
2026-10-22 10:04:30 +07:00
parent 8a6dc6a29e
commit 750d74a2af
66 changed files with 3021 additions and 696 deletions
+10
View File
@@ -1297,6 +1297,10 @@ if (require.main === module) {
startBackgroundServices();
// The status-area icon (server/lib/tray.js) — production servers only.
require("./lib/tray").startTrayWatch();
// Oh My Pi login sharing's broker + gateway, when an admin turned it on (S3).
require("./lib/omp-share")
.start()
.catch((err) => console.warn("omp share failed to start:", err.message));
})
.catch((err) => {
console.error(listenFailure(err, PORT));
@@ -1312,6 +1316,12 @@ if (require.main === module) {
process.exit(1);
}
shutdownInProgress = true;
// Its omp daemons are this server's children; KillMode=process would keep them.
try {
require("./lib/omp-share").stop();
} catch {
/* best effort */
}
console.log(`\n${signal} received — shutting down gracefully… (hit Ctrl+C again to force)`);
// Drop realtime clients first — open WS sockets otherwise hold the HTTP