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
-**"5-hour" label stragglers in Conversations.tsx** — `LimitPill` label and its hover tooltip still say "5h" / "5-hour". Commit 8c52236's "10-hour" terminology refactor missed those two spots.
90
+
-**`getTeamUsage()` now normalizes via `normalizeTeamUsage()`** — Added in issue #482. The Rust sidecar passes backend JSON through opaquely (`src/openhuman/team/ops.rs`), so the TS client must normalize field names and types. Pattern matches existing `normalizeCreditBalance()` in the same file. Any new billing API that returns raw backend data should follow the same normalize-at-the-client pattern.
91
+
-**Two separate `TeamUsage` types exist** — `creditsApi.ts:24` (billing: cycle budget, limits) and `types/team.ts:11` (team model: daily token limit). Different import paths, no collision, but confusing.
Copy file name to clipboardExpand all lines: app/src-tauri/src/core_process.rs
+76-7Lines changed: 76 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -108,6 +108,10 @@ impl CoreProcessHandle {
108
108
"[core] found existing core rpc endpoint at {}",
109
109
self.rpc_url()
110
110
);
111
+
log::warn!(
112
+
"[core] reusing port {} — if channel/Telegram behavior mismatches the app, another stale `openhuman` core may be attached; check [core-update] logs for version skew.",
113
+
self.port
114
+
);
111
115
returnOk(());
112
116
}
113
117
@@ -310,26 +314,35 @@ impl CoreProcessHandle {
310
314
311
315
/// Stop the core process this handle spawned (child or in-process task). Safe to call if
312
316
/// nothing was spawned or core was already external.
317
+
///
318
+
/// On Unix, sends SIGTERM first so the core process can run its graceful
319
+
/// shutdown hooks (e.g. stopping the autocomplete engine and its Swift
320
+
/// overlay helper). Falls back to SIGKILL after a timeout.
313
321
pubasyncfnshutdown(&self){
314
322
letmut child_guard = self.child.lock().await;
315
323
ifletSome(mut child) = child_guard.take(){
316
324
log::info!("[core] terminating child core process on app shutdown");
317
-
ifletErr(e) = child.kill().await{
318
-
log::warn!("[core] failed to kill child core process: {e}");
325
+
326
+
let exited = self.try_graceful_terminate(&child).await;
0 commit comments