chore: update workspace dependencies and chat behavior

- Adjust package metadata and lockfiles across the workspace
- Refine chat sidebar and auto-scroll behavior in the UI
- Update PWA install handling alongside runtime package changes
This commit is contained in:
Bohdan Triapitsyn
2026-04-06 13:04:36 +03:00
parent 4db1e6baad
commit e42471ee7b
8 changed files with 136 additions and 10 deletions
+1 -1
View File
@@ -39,7 +39,7 @@
"@fontsource/ibm-plex-sans": "^5.1.1",
"@ibm/plex": "^6.4.1",
"@lezer/highlight": "^1.2.3",
"@opencode-ai/sdk": "^1.3.13",
"@opencode-ai/sdk": "^1.3.17",
"@pierre/diffs": "1.1.0-beta.13",
"@radix-ui/react-collapsible": "^1.1.12",
"@radix-ui/react-dialog": "^1.1.15",
@@ -584,6 +584,7 @@ export const ChatContainer: React.FC = () => {
const handleSessionReselected = (event: Event) => {
const customEvent = event as CustomEvent<string>;
if (customEvent.detail !== currentSessionId) return;
if (isPinned || !isOverflowing || isProgrammaticFollowActive) return;
resumeToBottomInstant();
};
@@ -591,7 +592,7 @@ export const ChatContainer: React.FC = () => {
return () => {
window.removeEventListener(SESSION_RESELECTED_EVENT, handleSessionReselected as EventListener);
};
}, [currentSessionId, resumeToBottomInstant]);
}, [currentSessionId, isOverflowing, isPinned, isProgrammaticFollowActive, resumeToBottomInstant]);
React.useLayoutEffect(() => {
const container = scrollRef.current;
@@ -2,6 +2,7 @@ import React from 'react';
import { toast } from '@/components/ui';
import { isWebRuntime } from '@/lib/desktop';
import { usePwaDetection } from '@/hooks/usePwaDetection';
import { getSafeSessionStorage } from '@/stores/utils/safeStorage';
type InstallPromptOutcome = 'accepted' | 'dismissed';
@@ -10,6 +11,8 @@ type BeforeInstallPromptEvent = Event & {
userChoice: Promise<{ outcome: InstallPromptOutcome }>;
};
const INSTALL_TOAST_SESSION_KEY = 'pwa-install-toast-shown';
export const usePwaInstallPrompt = () => {
const { browserTab } = usePwaDetection();
@@ -54,10 +57,17 @@ export const usePwaInstallPrompt = () => {
installEvent.preventDefault();
deferredPrompt = installEvent;
const sessionStorage = getSafeSessionStorage();
if (sessionStorage.getItem(INSTALL_TOAST_SESSION_KEY) === 'true') {
return;
}
if (installToastId !== null) {
return;
}
sessionStorage.setItem(INSTALL_TOAST_SESSION_KEY, 'true');
installToastId = toast.info('Install OpenChamber for quicker access', {
duration: Infinity,
action: {
+1 -1
View File
@@ -243,7 +243,7 @@
},
"dependencies": {
"@openchamber/ui": "workspace:*",
"@opencode-ai/sdk": "^1.3.13",
"@opencode-ai/sdk": "^1.3.17",
"adm-zip": "^0.5.16",
"jsonc-parser": "^3.3.1",
"react": "^19.1.1",
+1 -1
View File
@@ -29,7 +29,7 @@
"@fontsource/ibm-plex-sans": "^5.1.1",
"@ibm/plex": "^6.4.1",
"@octokit/rest": "^22.0.1",
"@opencode-ai/sdk": "^1.3.13",
"@opencode-ai/sdk": "^1.3.17",
"@radix-ui/react-collapsible": "^1.1.12",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16",