You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
普通版与 Lite 版同步:两端都接入端口自增、失败上报与残留识别;Lite 版用独立的 app 标识,互不误判。
升级方式不变:按 README「版本迁移」覆盖文件即可;本次改动不涉及配置或数据库迁移。
English
Fixed "deleted common prompts come back": the startup migration no longer treats a dangling pointer (a session ref whose target entry was deleted) as a legacy text copy. Previously, deleting a common prompt and restarting re-created it as a content-hash entry — a cpXXXX "serial number" that could never be deleted and changed value on every restart. Dangling refs now resolve to "not set"; legacy text migration is unchanged.
Automatic port fallback on conflict: the app now starts on 8000 and automatically falls back to 8001, 8002, … (up to 20 candidates), correctly skipping the TIME_WAIT window left by a just-exited instance. No more endless boot-screen countdown caused by an occupied port.
Backend startup failures are visible: a uvicorn bind failure is no longer silent. The boot screen is replaced with a readable error page (port in use / database service failed), and the tray plus logs/server.log explain the cause.
Stale-instance detection: "the app is already open" now requires the window to be actually raised and already showing the app UI. A stale instance whose backend is alive but whose window is broken or stuck on the boot screen is detected, and the new instance starts on a new port instead of silently exiting or handing the user a broken window.
Both editions updated: the normal and Lite editions share the port fallback, failure reporting, and stale-instance detection; Lite uses its own app identity so the two never mistake each other.
Upgrading is unchanged (see README "Version migration"); this release has no config or database migration.