Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
6335fcc
docs: add multi-session chat design spec
chloebyun-wd Apr 29, 2026
46e0f8f
docs: prettier-format multi-session spec
chloebyun-wd Apr 29, 2026
5add8d6
docs: add multi-session chat implementation plan
chloebyun-wd Apr 29, 2026
581e7bb
docs: prettier-format multi-session implementation plan
chloebyun-wd Apr 29, 2026
f0ba86d
docs: add multi-session decision log and rationale
chloebyun-wd Apr 29, 2026
bbeee47
docs: prettier-format rationale doc
chloebyun-wd Apr 29, 2026
3b47442
feat(sessions): add titleFromMessage utility and debug harness
chloebyun-wd Apr 30, 2026
b4278c4
fix(sessions): revert web.ts public export; inline harness port
chloebyun-wd Apr 30, 2026
f211431
refactor(sessions): drop dead null-coalesce on firstUser.message
chloebyun-wd Apr 30, 2026
a3b8ee6
feat(sessions): add sessionStorage read API and types
chloebyun-wd Apr 30, 2026
8ac047c
fix(sessions): array-guard readMessages; document harness inline-port…
chloebyun-wd Apr 30, 2026
000920e
feat(sessions): add storage writes, GC, and quota error type
chloebyun-wd Apr 30, 2026
f6f23c0
feat(sessions): add v1→v2 in-place migration
chloebyun-wd Apr 30, 2026
286d929
refactor(sessions): drop unused imports from sessionMigration
chloebyun-wd Apr 30, 2026
e0f3db1
feat(sessions): scaffold sessionStore with init + selectors
chloebyun-wd Apr 30, 2026
2720fe4
feat(sessions): add store actions (new/switch/upsert/rename/delete)
chloebyun-wd May 1, 2026
47ffcdc
feat(sessions): add emergency eviction on QuotaExceededError
chloebyun-wd May 1, 2026
16e39d0
feat(sessions): add MultiSessionConfig to BotProps and sessionPanel t…
chloebyun-wd May 1, 2026
7790a3c
refactor(sessions): drop unused full/popup types files; keep bubble +…
chloebyun-wd May 1, 2026
b49f6c5
refactor(sessions): make setLocalStorageChatflow a field-merge wrappe…
chloebyun-wd May 1, 2026
3bf9e4a
feat(sessions): add ChatRoot shell component
chloebyun-wd May 1, 2026
d386d08
fix(sessions): add multiSession to defaultBotProps so solid-element p…
chloebyun-wd May 1, 2026
842693b
feat(sessions): render SessionPanel from ChatRoot with theme cascade
chloebyun-wd May 1, 2026
2eff1ed
feat(sessions): wire ChatRoot into Full mode for Phase 4 visual testing
chloebyun-wd May 1, 2026
6dace45
fix(sessions): scope session-store init to multiSession-enabled branch
chloebyun-wd May 1, 2026
9f6d40b
feat(sessions): inline rename and delete-confirm on session items
chloebyun-wd May 1, 2026
6663abb
feat(sessions): one-time cap-warning toast on first eviction
chloebyun-wd May 1, 2026
6299b66
feat(sessions): collapsible sidebar with persisted state in full-page…
chloebyun-wd May 1, 2026
dfef436
feat(sessions): drawer mode for bubble/popup with header toggle
chloebyun-wd May 1, 2026
9e61a39
docs(sessions): note the no-lifecycle constraint on panelBody render …
chloebyun-wd May 1, 2026
6ecf6b5
refactor(bot): read active session from sessionStore via context
chloebyun-wd May 1, 2026
cccae72
feat(sessions): add removeMessageById, replaceActiveMessages, upsertM…
chloebyun-wd May 1, 2026
56e2917
refactor(bot): route message writes through sessionStore
chloebyun-wd May 1, 2026
6f2d223
fix(sessions): tighten upsertMessage replaceId, bump updatedAt on tru…
chloebyun-wd May 1, 2026
c54f742
feat(sessions): best-effort stream abort on session switch
chloebyun-wd May 1, 2026
f3d060f
feat(sessions): custom events for new/switch/changed and repurpose cl…
chloebyun-wd May 1, 2026
7cd0cc0
feat(sessions): cross-tab sync via storage event
chloebyun-wd May 1, 2026
aac5b5f
fix(sessions): capture previous activeChatId before setIndex in cross…
chloebyun-wd May 1, 2026
41cdac1
feat(sessions): wire ChatRoot into bubble mode
chloebyun-wd May 1, 2026
bc300b6
feat(sessions): keyboard nav, focus trap, and Escape-to-close
chloebyun-wd May 1, 2026
292d1c9
fix(bot): guard getInputDisabled against empty messages array
chloebyun-wd May 1, 2026
c666cbf
fix(bot): pin originating session id for streaming-vs-switch correctness
chloebyun-wd May 1, 2026
5df1387
fix(bot): synthesize welcome bubble in store mode for fresh sessions
chloebyun-wd May 1, 2026
d7b6eb2
docs(sessions): manual test plan + spec status to Implemented
chloebyun-wd May 1, 2026
798ac66
feat(sessions): brand-driven palette + Gemini/GPT/Claude-style sideba…
chloebyun-wd May 1, 2026
f095427
feat(sessions): tone "+ New chat" down to subdued left-aligned compos…
chloebyun-wd May 1, 2026
c8bf144
fix(sessions): match SessionPanel font to Bot's chatbot-container stack
chloebyun-wd May 1, 2026
668c8f4
fix(sessions): keep rename input alive when streaming bumps session u…
chloebyun-wd May 1, 2026
3ec75c6
feat(sessions): starred section + transparent chat-name header with menu
chloebyun-wd May 1, 2026
ebde730
fix(sessions): preserve streamingChatId pin + always show Recents header
chloebyun-wd May 1, 2026
439b8fd
feat(sessions): bare bot bubbles, max-width chat, header takes own he…
chloebyun-wd May 1, 2026
6405cfd
fix(sessions): SessionTitleHeader takes its own height (no overlap)
chloebyun-wd May 1, 2026
d3cc415
dist files
chloebyun-wd May 1, 2026
65f0c04
dist files
chloebyun-wd May 1, 2026
a295bc4
dist files
chloebyun-wd May 1, 2026
7c24cf2
feat(sessions): bug fixes and cleanup
chloebyun-wd May 4, 2026
606eb5a
feat(sessions): UI updates following modern text input design patterns
chloebyun-wd May 4, 2026
b5d4ad4
feat(sessions): add scrolling logic to mimic behaviing to the top fro…
chloebyun-wd May 4, 2026
1c01da7
fix(sessions): agent-driven pr review
chloebyun-wd May 5, 2026
e0a2716
fix(sessions): cleanup
chloebyun-wd May 5, 2026
7bd5c6b
chore(sessions): rm testing/local files
chloebyun-wd May 5, 2026
8ea99ae
chore(sessions): dist
chloebyun-wd May 5, 2026
dee4b3f
feat(sessions): separate logic for non multi and multi session
chloebyun-wd May 5, 2026
4128a77
feat(sessions): continue removing functionality for multi vs non
chloebyun-wd May 5, 2026
f5a4075
restore gitignore
chloebyun-wd May 5, 2026
bb83198
fix(sessions): fix index and gitignore
chloebyun-wd May 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions dist/components/Bot.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,10 @@ export type MessageType = {
};
type observerConfigType = (accessor: string | boolean | object | MessageType[]) => void;
export type observersConfigType = Record<'observeUserInput' | 'observeLoading' | 'observeMessages', observerConfigType>;
export type MultiSessionConfig = {
enabled: boolean;
maxSessions?: number;
};
export type BotProps = {
chatflowid: string;
apiHost?: string;
Expand Down Expand Up @@ -124,6 +128,7 @@ export type BotProps = {
closeBot?: () => void;
hasCustomHeader?: boolean;
dialogContainer?: HTMLElement;
multiSession?: MultiSessionConfig;
};
export type LeadsConfig = {
status: boolean;
Expand Down
2 changes: 1 addition & 1 deletion dist/components/Bot.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/components/avatars/Avatar.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/components/bubbles/BotBubble.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ type Props = {
handleTTSStop?: (messageId: string) => void;
hasCustomHeader?: boolean;
dialogContainer?: HTMLElement;
bare?: boolean;
};
export declare const BotBubble: (props: Props) => import("solid-js").JSX.Element;
export {};
Expand Down
2 changes: 1 addition & 1 deletion dist/components/bubbles/BotBubble.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion dist/components/bubbles/LoadingBubble.d.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
export declare const LoadingBubble: () => import("solid-js").JSX.Element;
export declare const LoadingBubble: (props: {
backgroundColor?: string;
}) => import("solid-js").JSX.Element;
//# sourceMappingURL=LoadingBubble.d.ts.map
2 changes: 1 addition & 1 deletion dist/components/bubbles/LoadingBubble.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/components/buttons/LeadCaptureButtons.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/components/buttons/SendButton.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ type SendButtonProps = {
isDisabled?: boolean;
isLoading?: boolean;
disableIcon?: boolean;
useUpArrow?: boolean;
} & JSX.ButtonHTMLAttributes<HTMLButtonElement>;
export declare const SendButton: (props: SendButtonProps) => JSX.Element;
export declare const DeleteButton: (props: SendButtonProps) => JSX.Element;
Expand Down
2 changes: 1 addition & 1 deletion dist/components/buttons/SendButton.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions dist/components/icons/UpArrowIcon.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { JSX } from 'solid-js/jsx-runtime';
export declare const UpArrowIcon: (props: JSX.SvgSVGAttributes<SVGSVGElement>) => JSX.Element;
//# sourceMappingURL=UpArrowIcon.d.ts.map
1 change: 1 addition & 0 deletions dist/components/icons/UpArrowIcon.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/components/icons/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export * from './CircleDotIcon';
export * from './DeleteIcon';
export * from './RecordIcon';
export * from './SendIcon';
export * from './UpArrowIcon';
export * from './TrashIcon';
export * from './XIcon';
export * from './TickIcon';
Expand Down
2 changes: 1 addition & 1 deletion dist/components/icons/index.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/components/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export * from './buttons/SendButton';
export * from './TypingBubble';
export * from './sessions/ChatRoot';
//# sourceMappingURL=index.d.ts.map
2 changes: 1 addition & 1 deletion dist/components/index.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ type ShortTextInputProps = {
onInput: (value: string) => void;
fontSize?: number;
disabled?: boolean;
compact?: boolean;
} & Omit<JSX.TextareaHTMLAttributes<HTMLTextAreaElement>, 'onInput'>;
export declare const ShortTextInput: (props: ShortTextInputProps) => JSX.Element;
export {};
Expand Down
Loading