@versini/sassysaint 8.88.2 → 8.88.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/dist/chunks/{AboutChangelog.lOUzPdPg.js → AboutChangelog.C8K_bHsA.js} +3 -3
  2. package/dist/chunks/{AboutEntry.nrx_9raD.js → AboutEntry.BWcnQ5VD.js} +7 -7
  3. package/dist/chunks/{App.CpTC12YE.js → App.C-FFqawg.js} +16 -16
  4. package/dist/chunks/{Chart.C83kRI-n.js → Chart.BLw2z4y6.js} +2 -2
  5. package/dist/chunks/{ChatBubbleAssistant.CsDHg45T.js → ChatBubbleAssistant.BTqSD26w.js} +4 -4
  6. package/dist/chunks/{ChatBubbleUser.DHKD4pkj.js → ChatBubbleUser.Dh3_Mt0e.js} +3 -3
  7. package/dist/chunks/{ChatHistoryTable.BNe7yTzw.js → ChatHistoryTable.Yhv6ijrZ.js} +3 -3
  8. package/dist/chunks/{HistoryEntry.Dq1k5JyM.js → HistoryEntry.DHffDGPT.js} +3 -3
  9. package/dist/chunks/{ProfileEntry.C-QU_Gmg.js → ProfileEntry.Bxk4Jw5J.js} +2 -2
  10. package/dist/chunks/{SettingsEntry.CKR7KYh4.js → SettingsEntry.s2mGjfF9.js} +3 -3
  11. package/dist/chunks/{UsageEntry.2XrCof7k.js → UsageEntry.DYRbKjav.js} +3 -3
  12. package/dist/chunks/{UserMemoriesPanel.BokhjC7d.js → UserMemoriesPanel.WITflZ_0.js} +4 -4
  13. package/dist/chunks/{index.DPv4aRcG.js → index.CRTRfMeQ.js} +1 -1
  14. package/dist/chunks/{index.BqkQUJZh.js → index.C_g9sBak.js} +3 -3
  15. package/dist/chunks/{index.BXksRYaH.js → index.Cpgy3_qK.js} +1 -1
  16. package/dist/chunks/{index.DigULJFG.js → index.CzrV29Ys.js} +1 -1
  17. package/dist/chunks/{index.DpuJMZKy.js → index.DDr47yJM.js} +1 -1
  18. package/dist/chunks/{index.ndUyIlvL.js → index.DbLUR666.js} +1 -1
  19. package/dist/chunks/{index.BHySgpXD.js → index.hQue6TMs.js} +1 -1
  20. package/dist/chunks/{index.BoEUK5Es.js → index.teIw92Ev.js} +1 -1
  21. package/dist/chunks/{index.DUHPpcnH.js → index.wa3EVOX2.js} +2 -2
  22. package/dist/chunks/{useMarkdown.l1hNG47z.js → useMarkdown._7muq_2r.js} +6 -6
  23. package/dist/components/SassySaint/SassySaint.js +1 -1
  24. package/dist/index.js +4 -4
  25. package/package.json +3 -3
@@ -1,8 +1,8 @@
1
1
  import { jsxs as s, jsx as r } from "react/jsx-runtime";
2
- import { useInViewport as c } from "./index.BHySgpXD.js";
2
+ import { useInViewport as c } from "./index.hQue6TMs.js";
3
3
  import { useRef as n, useCallback as f, useLayoutEffect as u } from "react";
4
- import { ButtonScroll as p } from "./App.CpTC12YE.js";
5
- import { useMarkdown as d } from "./useMarkdown.l1hNG47z.js";
4
+ import { ButtonScroll as p } from "./App.C-FFqawg.js";
5
+ import { useMarkdown as d } from "./useMarkdown._7muq_2r.js";
6
6
  const x = ({ content: o }) => {
7
7
  const [l, t] = d(), { ref: i, inViewport: a } = c(), e = n(null), m = f(() => {
8
8
  e.current && e.current.scrollIntoView({
@@ -1,15 +1,15 @@
1
1
  import { jsxs as b, Fragment as l, jsx as e } from "react/jsx-runtime";
2
- import { Panel as g } from "./App.CpTC12YE.js";
3
- import { useUniqueId as d, useServerCapabilities as A, useChangelogs as I, Card as t, renderDataAsList as c, CARDS as r, pluralize as B, isProbablyMobile as E, ABOUT_TITLE as S } from "./index.BHySgpXD.js";
2
+ import { Panel as A } from "./App.C-FFqawg.js";
3
+ import { useUniqueId as d, useServerCapabilities as g, useChangelogs as I, Card as t, renderDataAsList as c, CARDS as r, pluralize as B, isProbablyMobile as E, ABOUT_TITLE as S } from "./index.hQue6TMs.js";
4
4
  import O from "clsx";
5
5
  import { Suspense as C, lazy as U } from "react";
6
6
  const L = U(
7
7
  () => import(
8
8
  /* webpackChunkName: "LazyAboutChangelog" */
9
- "./AboutChangelog.lOUzPdPg.js"
9
+ "./AboutChangelog.C8K_bHsA.js"
10
10
  )
11
11
  ), N = () => {
12
- const s = d(), i = d(), { data: a, isSuccess: m } = A(), { data: T, isSuccess: h } = I(), u = a?.version || "", o = a?.models || [], p = a?.buildTime || "";
12
+ const s = d(), i = d(), { data: a, isSuccess: m } = g(), { data: T, isSuccess: h } = I(), u = a?.version || "", o = a?.models || [], p = a?.buildTime || "";
13
13
  return /* @__PURE__ */ b(l, { children: [
14
14
  /* @__PURE__ */ e(
15
15
  t,
@@ -18,8 +18,8 @@ const L = U(
18
18
  className: "prose-dark dark:prose-lighter mb-4",
19
19
  noBorder: !0,
20
20
  children: c(s, {
21
- [r.ABOUT.VERSION]: "8.88.2",
22
- [r.ABOUT.BUILD_TIMESTAMP]: "11/22/2025 01:44 PM EST"
21
+ [r.ABOUT.VERSION]: "8.88.3",
22
+ [r.ABOUT.BUILD_TIMESTAMP]: "11/23/2025 09:46 AM EST"
23
23
  })
24
24
  }
25
25
  ),
@@ -54,7 +54,7 @@ const L = U(
54
54
  open: s,
55
55
  onOpenChange: i
56
56
  }) => /* @__PURE__ */ e(
57
- g,
57
+ A,
58
58
  {
59
59
  open: s,
60
60
  onOpenChange: i,
@@ -1,5 +1,5 @@
1
1
  import { jsx as d, jsxs as x, Fragment as Ne } from "react/jsx-runtime";
2
- import { ACTION_SORT as sa, e$1 as gt, ACTION_SEARCH as aa, ACTION_RESET_PROMPT as lo, ACTION_TOGGLE_PROMPT as uo, useLocalStorage as xe, LOCAL_STORAGE_PREFIX as $e, LOCAL_STORAGE_CHAT_ID as po, n as ge, isDev as ia, isPWAMode as fo, isTauri as _t, useChat as ca, useClickOutside as la, useInterval as ua, useTheme as Ee, ButtonIcon as Te, IconAddLight as da, DEFAULT_ICON_ACTION_SIZE as Ae, ChatContext as Se, useUserPreferences as Be, useHotkeys as Ur, isProbablyiPhone as Ze, IconCloseLight as pa, IconEditLight as fa, serverUrl as ho, useEntitlements as jr, IconClose as mo, useHaptic as ha, L as Tr, j$1 as at, Button as on, LOCAL_STORAGE_PRIVATE_DISCLOSURE as ma, j as Gt, IconLockedLight as ga, IconUnlockedLight as va, IconSelected as ya, IconUnSelected as _a, IconNext as ba, PromptsContext as Fr, IconBookSparklesLight as wa, IconRewrite as Ia, IconProofread as Ea, IconMagic as Ta, LOCAL_STORAGE_REASONING_DISCLOSURE as Sa, IconLightBulbLight as ka, useSaveChat as Ca, IconDownloadLight as xa, TOAST_CHAT_SAVED as Aa, IconSendLight as Na, INPUT_PLACEHOLDER_TEXT_MORNING as Oa, INPUT_PLACEHOLDER_TEXT_TODAY as Pa, INPUT_PLACEHOLDER_TEXT_AFTERNOON as Ra, INPUT_PLACEHOLDER_TEXT_EVENING as za, INPUT_PLACEHOLDER_TEXT_NIGHT as Ma, INPUT_PLACEHOLDER_TEXT_DEFAULT as go, PROMPT_EDITABLE_AREA_CLASSNAME as $a, PROMPT_CLASSNAME as Za, AppContext as kt, HistoryContext as vo, useChatsHistory as Da, useUniqueId as La, q as yo, ERROR_MESSAGE as Ua, o as bt, CLIPBOARD_PROMPT as sn, getHotkeyHandler as ja, Y as Fa, FOOTER_DISCLAIMERS as an, useViewportSize as Ba, useVisualViewportSize as Va, useResizeObserver as _o, isProbablyiPad as Ha, INPUT_BOTTOM_OFFSET_EXTRA as cn, INPUT_BOTTOM_OFFSET_IPHONE as Ga, INPUT_BOTTOM_OFFSET_IPAD as Ja, INPUT_BOTTOM_OFFSET as bo, APP_SET_FOOTER_HEIGHT as Wa, FOOTER_TOP as Sr, FOOTER_BOTTOM as vt, APP_SET_FOOTER_POSITION as ur, getLayoutPaddingClass as kr, canEvaluateModels as ln, X as Ya, IconOpenAI as qa, l as Xa, IconAnthropic as Ka, _ as Qa, IconGoogleGemini as ei, R as ti, z as ri, H as dr, setNewProvider as un, TOAST_PROVIDER_CHANGED as dn, useQueryClient as ni, LOG_OUT as pn, IconProfile as oi, IconSliders as si, IconHistory as ai, IconEditUser as ii, IconChart as ci, IconInfo as li, IconBack as ui, IconSettings as di, i as wo, O as fn, useInViewport as pi, useServerCapabilities as fi, getMessageContaintWrapperClass as hi, UI_FOOTER_BUFFER as Io, UI_BUTTON_SCROLL_BUFFER as mi, Logo as gi, isProbablyMobile as vi, UI_DEFAULT_MAIN_HEIGHT as hn, e as yi, appReducer as _i, applyOledMode as bi, APP_SET_OLED_MODE as wi, APP_SET_FULL_SCREEN as Ii, APP_SET_THEME_MODE as Ei, APP_SET_THEME_PALETTE as Ti, UI_DEFAULT_MAIN_HEIGHT_IPHONE as Si, APP_CLASSNAME as ki, B as mn, F as Ci, LOCAL_STORAGE_SORT as xi, LOCAL_STORAGE_SEARCH as Ai, LOCAL_STORAGE_OLED_MODE as Ni, LOCAL_STORAGE_FULL_SCREEN as Oi, LOCAL_STORAGE_SORT_TIMESTAMP as Pi, LOCAL_STORAGE_SORT_TOKEN_USAGE as Ri, TOAST_CACHE_ENABLED as zi, TOAST_CACHE_DISABLED as Mi } from "./index.BHySgpXD.js";
2
+ import { ACTION_SORT as sa, e$1 as gt, ACTION_SEARCH as aa, ACTION_RESET_PROMPT as lo, ACTION_TOGGLE_PROMPT as uo, useLocalStorage as xe, LOCAL_STORAGE_PREFIX as $e, LOCAL_STORAGE_CHAT_ID as po, n as ge, isDev as ia, isPWAMode as fo, isTauri as _t, useChat as ca, useClickOutside as la, useInterval as ua, useTheme as Ee, ButtonIcon as Te, IconAddLight as da, DEFAULT_ICON_ACTION_SIZE as Ae, ChatContext as Se, useUserPreferences as Be, useHotkeys as Ur, isProbablyiPhone as Ze, IconCloseLight as pa, IconEditLight as fa, serverUrl as ho, useEntitlements as jr, IconClose as mo, useHaptic as ha, L as Tr, j$1 as at, Button as on, LOCAL_STORAGE_PRIVATE_DISCLOSURE as ma, j as Gt, IconLockedLight as ga, IconUnlockedLight as va, IconSelected as ya, IconUnSelected as _a, IconNext as ba, PromptsContext as Fr, IconBookSparklesLight as wa, IconRewrite as Ia, IconProofread as Ea, IconMagic as Ta, LOCAL_STORAGE_REASONING_DISCLOSURE as Sa, IconLightBulbLight as ka, useSaveChat as Ca, IconDownloadLight as xa, TOAST_CHAT_SAVED as Aa, IconSendLight as Na, INPUT_PLACEHOLDER_TEXT_MORNING as Oa, INPUT_PLACEHOLDER_TEXT_TODAY as Pa, INPUT_PLACEHOLDER_TEXT_AFTERNOON as Ra, INPUT_PLACEHOLDER_TEXT_EVENING as za, INPUT_PLACEHOLDER_TEXT_NIGHT as Ma, INPUT_PLACEHOLDER_TEXT_DEFAULT as go, PROMPT_EDITABLE_AREA_CLASSNAME as $a, PROMPT_CLASSNAME as Za, AppContext as kt, HistoryContext as vo, useChatsHistory as Da, useUniqueId as La, q as yo, ERROR_MESSAGE as Ua, o as bt, CLIPBOARD_PROMPT as sn, getHotkeyHandler as ja, Y as Fa, FOOTER_DISCLAIMERS as an, useViewportSize as Ba, useVisualViewportSize as Va, useResizeObserver as _o, isProbablyiPad as Ha, INPUT_BOTTOM_OFFSET_EXTRA as cn, INPUT_BOTTOM_OFFSET_IPHONE as Ga, INPUT_BOTTOM_OFFSET_IPAD as Ja, INPUT_BOTTOM_OFFSET as bo, APP_SET_FOOTER_HEIGHT as Wa, FOOTER_TOP as Sr, FOOTER_BOTTOM as vt, APP_SET_FOOTER_POSITION as ur, getLayoutPaddingClass as kr, canEvaluateModels as ln, X as Ya, IconOpenAI as qa, l as Xa, IconAnthropic as Ka, _ as Qa, IconGoogleGemini as ei, R as ti, z as ri, H as dr, setNewProvider as un, TOAST_PROVIDER_CHANGED as dn, useQueryClient as ni, LOG_OUT as pn, IconProfile as oi, IconSliders as si, IconHistory as ai, IconEditUser as ii, IconChart as ci, IconInfo as li, IconBack as ui, IconSettings as di, i as wo, O as fn, useInViewport as pi, useServerCapabilities as fi, getMessageContaintWrapperClass as hi, UI_FOOTER_BUFFER as Io, UI_BUTTON_SCROLL_BUFFER as mi, Logo as gi, isProbablyMobile as vi, UI_DEFAULT_MAIN_HEIGHT as hn, e as yi, appReducer as _i, applyOledMode as bi, APP_SET_OLED_MODE as wi, APP_SET_FULL_SCREEN as Ii, APP_SET_THEME_MODE as Ei, APP_SET_THEME_PALETTE as Ti, UI_DEFAULT_MAIN_HEIGHT_IPHONE as Si, APP_CLASSNAME as ki, B as mn, F as Ci, LOCAL_STORAGE_SORT as xi, LOCAL_STORAGE_SEARCH as Ai, LOCAL_STORAGE_OLED_MODE as Ni, LOCAL_STORAGE_FULL_SCREEN as Oi, LOCAL_STORAGE_SORT_TIMESTAMP as Pi, LOCAL_STORAGE_SORT_TOKEN_USAGE as Ri, TOAST_CACHE_ENABLED as zi, TOAST_CACHE_DISABLED as Mi } from "./index.hQue6TMs.js";
3
3
  import Eo, { useRef as J, useCallback as Y, useSyncExternalStore as pr, useEffect as M, useState as z, createContext as Br, useContext as q, forwardRef as Qe, cloneElement as $i, useId as To, useLayoutEffect as Vr, useMemo as Ie, Suspense as Jt, lazy as Pe, useReducer as Rt } from "react";
4
4
  import R, { clsx as De } from "clsx";
5
5
  import { computePosition as Zi, offset as So, flip as ko, shift as Co, arrow as Di, useMergeRefs as Hr, FloatingPortal as Cr, FloatingOverlay as Li, FloatingFocusManager as xr, useFloating as xo, useClick as Ao, useDismiss as No, useRole as Oo, useInteractions as Po, useFloatingParentNodeId as Ro, FloatingTree as Ui, useListItem as zo, useFloatingTree as Mo, useFloatingNodeId as ji, autoUpdate as Fi, useHover as Bi, safePolygon as Vi, useListNavigation as Hi, useTypeahead as Gi, FloatingNode as gn, FloatingList as vn } from "@floating-ui/react";
@@ -5714,7 +5714,7 @@ const Ls = async () => (_r || (_r = import(
5714
5714
  "./index.790ujKXR.js"
5715
5715
  )), _r), Us = async () => (br || (br = import(
5716
5716
  /* webpackChunkName: "toast-utilities" */
5717
- "./index.BHySgpXD.js"
5717
+ "./index.hQue6TMs.js"
5718
5718
  ).then((e) => e.utilities)), br), Df = async () => {
5719
5719
  try {
5720
5720
  await Promise.all([Ls(), Us()]);
@@ -8325,38 +8325,38 @@ const Dh = [".png", ".jpg", ".jpeg", ".webp"], Lh = [".pdf", ".txt"], Uh = [
8325
8325
  }, am = Pe(
8326
8326
  () => import(
8327
8327
  /* webpackChunkName: "modal-chunk" */
8328
- "./ProfileEntry.C-QU_Gmg.js"
8328
+ "./ProfileEntry.Bxk4Jw5J.js"
8329
8329
  ).then((e) => ({
8330
8330
  default: e.Profile
8331
8331
  }))
8332
8332
  ), im = Pe(
8333
8333
  () => import(
8334
8334
  /* webpackChunkName: "modal-chunk" */
8335
- "./SettingsEntry.CKR7KYh4.js"
8335
+ "./SettingsEntry.s2mGjfF9.js"
8336
8336
  ).then((e) => ({
8337
8337
  default: e.SettingsPanel
8338
8338
  }))
8339
8339
  ), cm = Pe(
8340
8340
  () => import(
8341
8341
  /* webpackChunkName: "modal-chunk" */
8342
- "./HistoryEntry.Dq1k5JyM.js"
8342
+ "./HistoryEntry.DHffDGPT.js"
8343
8343
  ).then((e) => ({
8344
8344
  default: e.HistoryPanel
8345
8345
  }))
8346
8346
  ), lm = Pe(
8347
8347
  () => import(
8348
8348
  /* webpackChunkName: "modal-chunk" */
8349
- "./AboutEntry.nrx_9raD.js"
8349
+ "./AboutEntry.BWcnQ5VD.js"
8350
8350
  ).then((e) => ({ default: e.About }))
8351
8351
  ), um = Pe(
8352
8352
  () => import(
8353
8353
  /* webpackChunkName: "modal-chunk" */
8354
- "./UsageEntry.2XrCof7k.js"
8354
+ "./UsageEntry.DYRbKjav.js"
8355
8355
  ).then((e) => ({ default: e.Usage }))
8356
8356
  ), dm = Pe(
8357
8357
  () => import(
8358
8358
  /* webpackChunkName: "modal-chunk" */
8359
- "./UserMemoriesPanel.BokhjC7d.js"
8359
+ "./UserMemoriesPanel.WITflZ_0.js"
8360
8360
  ).then(
8361
8361
  (e) => ({ default: e.default })
8362
8362
  )
@@ -8406,23 +8406,23 @@ const Dh = [".png", ".jpg", ".jpeg", ".webp"], Lh = [".pdf", ".txt"], Uh = [
8406
8406
  f || Promise.all([
8407
8407
  import(
8408
8408
  /* webpackChunkName: "modal-chunk" */
8409
- "./ProfileEntry.C-QU_Gmg.js"
8409
+ "./ProfileEntry.Bxk4Jw5J.js"
8410
8410
  ),
8411
8411
  import(
8412
8412
  /* webpackChunkName: "modal-chunk" */
8413
- "./SettingsEntry.CKR7KYh4.js"
8413
+ "./SettingsEntry.s2mGjfF9.js"
8414
8414
  ),
8415
8415
  import(
8416
8416
  /* webpackChunkName: "modal-chunk" */
8417
- "./HistoryEntry.Dq1k5JyM.js"
8417
+ "./HistoryEntry.DHffDGPT.js"
8418
8418
  ),
8419
8419
  import(
8420
8420
  /* webpackChunkName: "modal-chunk" */
8421
- "./AboutEntry.nrx_9raD.js"
8421
+ "./AboutEntry.BWcnQ5VD.js"
8422
8422
  ),
8423
8423
  import(
8424
8424
  /* webpackChunkName: "modal-chunk" */
8425
- "./UsageEntry.2XrCof7k.js"
8425
+ "./UsageEntry.DYRbKjav.js"
8426
8426
  )
8427
8427
  ]).finally(() => h(!0));
8428
8428
  }, [f]), m = Y(($) => {
@@ -8692,18 +8692,18 @@ const io = "av-spinner", Xs = ({ spinnerRef: e, mode: t = "system", type: r = "c
8692
8692
  ]
8693
8693
  });
8694
8694
  }, gm = Pe(
8695
- () => import("./index.ndUyIlvL.js").then((e) => ({ default: e.Bubble }))
8695
+ () => import("./index.DbLUR666.js").then((e) => ({ default: e.Bubble }))
8696
8696
  ), tn = (e) => /* @__PURE__ */ d(Jt, { fallback: /* @__PURE__ */ d("span", { className: "inline-block" }), children: /* @__PURE__ */ d(gm, { ...e }) });
8697
8697
  tn.displayName = "AsyncBubble";
8698
8698
  const co = 1, vm = 150, ym = Pe(
8699
8699
  () => import(
8700
8700
  /* webpackChunkName: "LazyMessageAssistant" */
8701
- "./ChatBubbleAssistant.CsDHg45T.js"
8701
+ "./ChatBubbleAssistant.BTqSD26w.js"
8702
8702
  )
8703
8703
  ), _m = Pe(
8704
8704
  () => import(
8705
8705
  /* webpackChunkName: "LazyMessageUser" */
8706
- "./ChatBubbleUser.DHKD4pkj.js"
8706
+ "./ChatBubbleUser.Dh3_Mt0e.js"
8707
8707
  )
8708
8708
  ), bm = Eo.memo(
8709
8709
  ({
@@ -1,7 +1,7 @@
1
1
  import { jsx as Ap } from "react/jsx-runtime";
2
- import { getDefaultExportFromCjs as ln } from "./App.CpTC12YE.js";
2
+ import { getDefaultExportFromCjs as ln } from "./App.C-FFqawg.js";
3
3
  import Cp, { useState as Pp, useEffect as Op } from "react";
4
- import { TRIMESTERS as rn, TRIMESTERS_SHORT as Lp, isProbablyMobile as Ep } from "./index.BHySgpXD.js";
4
+ import { TRIMESTERS as rn, TRIMESTERS_SHORT as Lp, isProbablyMobile as Ep } from "./index.hQue6TMs.js";
5
5
  var ls = { exports: {} }, Ip = ls.exports, on;
6
6
  function Dp() {
7
7
  return on || (on = 1, (function(we, he) {
@@ -1,10 +1,10 @@
1
1
  import { jsx as x } from "react/jsx-runtime";
2
- import { ChatContext as P, AppContext as R, n as y, useUserPreferences as L, convertCamelCaseToReadable as _, numberFormatter as v, pluralize as B, O as G } from "./index.BHySgpXD.js";
3
- import { BUBBLE_FOOTER_EMPTY as D } from "./index.ndUyIlvL.js";
2
+ import { ChatContext as P, AppContext as R, n as y, useUserPreferences as L, convertCamelCaseToReadable as _, numberFormatter as v, pluralize as B, O as G } from "./index.hQue6TMs.js";
3
+ import { BUBBLE_FOOTER_EMPTY as D } from "./index.DbLUR666.js";
4
4
  import U from "clsx";
5
5
  import j, { useState as M, useRef as E, useEffect as O, useContext as S } from "react";
6
- import { AsyncBubble as k } from "./App.CpTC12YE.js";
7
- import { useMarkdown as q } from "./useMarkdown.l1hNG47z.js";
6
+ import { AsyncBubble as k } from "./App.C-FFqawg.js";
7
+ import { useMarkdown as q } from "./useMarkdown._7muq_2r.js";
8
8
  const I = 2, W = I * 1e3, b = "", V = (e) => e * (2 - e);
9
9
  function Y(e, n = !0) {
10
10
  const [a, d] = M(0), [i, p] = M(0), [t, C] = M(e), r = E(0), s = E(0);
@@ -1,8 +1,8 @@
1
1
  import { jsx as a, Fragment as h, jsxs as S } from "react/jsx-runtime";
2
- import { Button as C } from "./index.BHySgpXD.js";
2
+ import { Button as C } from "./index.hQue6TMs.js";
3
3
  import { useState as _, useMemo as m, isValidElement as T, useEffect as b } from "react";
4
- import { AsyncBubble as w } from "./App.CpTC12YE.js";
5
- import { useMarkdown as x } from "./useMarkdown.l1hNG47z.js";
4
+ import { AsyncBubble as w } from "./App.C-FFqawg.js";
5
+ import { useMarkdown as x } from "./useMarkdown._7muq_2r.js";
6
6
  /*!
7
7
  @versini/ui-truncate v5.2.1
8
8
  © 2025 gizmette.com
@@ -1,7 +1,7 @@
1
1
  import { jsxs as c, jsx as e } from "react/jsx-runtime";
2
- import { B as x, F as u, INFINITE_SCROLL_THRESHOLD as v, CARDS as I, pluralize as M, ButtonIcon as i, IconRestore as U, IconStarInCircle as y, IconStarInCircleLight as D, IconDelete as z, numberFormatter as L, isProbablyMobile as _ } from "./index.BHySgpXD.js";
3
- import { W as $, j as B, G as m, H as P, M as a, F as f } from "./index.DPv4aRcG.js";
4
- import { Tooltip as d } from "./App.CpTC12YE.js";
2
+ import { B as x, F as u, INFINITE_SCROLL_THRESHOLD as v, CARDS as I, pluralize as M, ButtonIcon as i, IconRestore as U, IconStarInCircle as y, IconStarInCircleLight as D, IconDelete as z, numberFormatter as L, isProbablyMobile as _ } from "./index.hQue6TMs.js";
3
+ import { W as $, j as B, G as m, H as P, M as a, F as f } from "./index.CRTRfMeQ.js";
4
+ import { Tooltip as d } from "./App.C-FFqawg.js";
5
5
  import h from "clsx";
6
6
  import { Fragment as F } from "react";
7
7
  const s = {
@@ -1,12 +1,12 @@
1
1
  import { jsxs as c, Fragment as te, jsx as t } from "react/jsx-runtime";
2
- import { n as P, INFINITE_SCROLL_LIMIT as M, INFINITE_SCROLL_THRESHOLD as ae, HistoryContext as U, ChatContext as re, useLocalStorage as C, LOCAL_STORAGE_PREFIX as S, LOCAL_STORAGE_SORT_TIMESTAMP as se, e$1 as h, LOCAL_STORAGE_SORT_TOKEN_USAGE as oe, LOCAL_STORAGE_SORT as ne, B as I, LOCAL_STORAGE_CHAT_ID as ie, useDeleteChat as ce, useToggleFavoriteChat as le, APP_CLASSNAME as de, TOAST_CHAT_DELETED as he, graphQLRequest as me, SERVICE_TYPES as ue, ACTION_SORT as Ce, F as Se, useChatsHistory as fe, useUserChatStats as ye, LOCAL_STORAGE_SEARCH as Te, LOCAL_STORAGE_FAVORITES_ONLY as pe, HISTORY_TITLE as ge, Card as Ae, TextInput as Ee, debounce as _e, IconSearch as De, Button as z, L as Le, j$1 as ve, ACTION_SEARCH as Oe } from "./index.BHySgpXD.js";
3
- import { useAiChat as ke, ConfirmationPanel as Re, LazyToastContainerWrapper as Ie, showErrorToast as be, v4 as He, CHAT_RESET as xe, CHAT_SET_ATTACHMENTS as Ne, CHAT_SET_STATUS as we, Panel as Fe, Toggle as Ge } from "./App.CpTC12YE.js";
2
+ import { n as P, INFINITE_SCROLL_LIMIT as M, INFINITE_SCROLL_THRESHOLD as ae, HistoryContext as U, ChatContext as re, useLocalStorage as C, LOCAL_STORAGE_PREFIX as S, LOCAL_STORAGE_SORT_TIMESTAMP as se, e$1 as h, LOCAL_STORAGE_SORT_TOKEN_USAGE as oe, LOCAL_STORAGE_SORT as ne, B as I, LOCAL_STORAGE_CHAT_ID as ie, useDeleteChat as ce, useToggleFavoriteChat as le, APP_CLASSNAME as de, TOAST_CHAT_DELETED as he, graphQLRequest as me, SERVICE_TYPES as ue, ACTION_SORT as Ce, F as Se, useChatsHistory as fe, useUserChatStats as ye, LOCAL_STORAGE_SEARCH as Te, LOCAL_STORAGE_FAVORITES_ONLY as pe, HISTORY_TITLE as ge, Card as Ae, TextInput as Ee, debounce as _e, IconSearch as De, Button as z, L as Le, j$1 as ve, ACTION_SEARCH as Oe } from "./index.hQue6TMs.js";
3
+ import { useAiChat as ke, ConfirmationPanel as Re, LazyToastContainerWrapper as Ie, showErrorToast as be, v4 as He, CHAT_RESET as xe, CHAT_SET_ATTACHMENTS as Ne, CHAT_SET_STATUS as we, Panel as Fe, Toggle as Ge } from "./App.C-FFqawg.js";
4
4
  import Me from "clsx";
5
5
  import { useRef as x, useState as N, useContext as w, useCallback as V, Suspense as ze, lazy as Ve, useEffect as Pe } from "react";
6
6
  const Ue = Ve(
7
7
  () => import(
8
8
  /* webpackChunkName: "history-table" */
9
- "./ChatHistoryTable.BNe7yTzw.js"
9
+ "./ChatHistoryTable.Yhv6ijrZ.js"
10
10
  ).then((m) => ({ default: m.ChatHistoryTable }))
11
11
  ), Be = ({
12
12
  filteredHistory: m,
@@ -1,6 +1,6 @@
1
1
  import { jsxs as l, Fragment as K, jsx as e } from "react/jsx-runtime";
2
- import { n as O, useUniqueId as W, useUserPreferences as Y, useServerCapabilities as $, H as V, setUserPlan as q, Card as d, renderDataAsList as J, CARDS as n, L as h, j$1 as i, Button as L, it as Q, isTauri as X, ButtonIcon as Z, IconPasskey as g, PROFILE_TITLE as ee } from "./index.BHySgpXD.js";
3
- import { preloadToast as ae, showSuccessToast as se, showErrorToast as ne, ConfirmationPanel as re, LazyToastContainerWrapper as le, Panel as te } from "./App.CpTC12YE.js";
2
+ import { n as O, useUniqueId as W, useUserPreferences as Y, useServerCapabilities as $, H as V, setUserPlan as q, Card as d, renderDataAsList as J, CARDS as n, L as h, j$1 as i, Button as L, it as Q, isTauri as X, ButtonIcon as Z, IconPasskey as g, PROFILE_TITLE as ee } from "./index.hQue6TMs.js";
3
+ import { preloadToast as ae, showSuccessToast as se, showErrorToast as ne, ConfirmationPanel as re, LazyToastContainerWrapper as le, Panel as te } from "./App.C-FFqawg.js";
4
4
  import ie from "clsx";
5
5
  import { useState as m, useMemo as oe, useCallback as P } from "react";
6
6
  const ce = () => {
@@ -1,7 +1,7 @@
1
1
  import { jsxs as n, jsx as t } from "react/jsx-runtime";
2
- import { n as je, useEntitlements as Ve, AppContext as Fe, useUserPreferences as We, j as ie, useLocalStorage as de, LOCAL_STORAGE_OLED_MODE as $e, LOCAL_STORAGE_FULL_SCREEN as ze, e as ue, canEvaluateModels as He, Z as Ye, getCacheInfo as qe, isServiceWorkerEnabled as Ke, SETTINGS_TITLE as Qe, Card as E, CARDS as r, k as Ze, Button as v, PROMPTS_DESCRIPTION as Je, ee as me, L as Xe, j$1 as he, applyOledMode as Ee, APP_SET_OLED_MODE as fe, APP_SET_FULL_SCREEN as Se, getCurrentGeoLocation as et, graphQLRequest as pe, handleServiceWorkerToggle as tt, SERVICE_TYPES as ge } from "./index.BHySgpXD.js";
3
- import { useCapability as be, Panel as ot, Toggle as l } from "./App.CpTC12YE.js";
4
- import { TextArea as Te } from "./index.BoEUK5Es.js";
2
+ import { n as je, useEntitlements as Ve, AppContext as Fe, useUserPreferences as We, j as ie, useLocalStorage as de, LOCAL_STORAGE_OLED_MODE as $e, LOCAL_STORAGE_FULL_SCREEN as ze, e as ue, canEvaluateModels as He, Z as Ye, getCacheInfo as qe, isServiceWorkerEnabled as Ke, SETTINGS_TITLE as Qe, Card as E, CARDS as r, k as Ze, Button as v, PROMPTS_DESCRIPTION as Je, ee as me, L as Xe, j$1 as he, applyOledMode as Ee, APP_SET_OLED_MODE as fe, APP_SET_FULL_SCREEN as Se, getCurrentGeoLocation as et, graphQLRequest as pe, handleServiceWorkerToggle as tt, SERVICE_TYPES as ge } from "./index.hQue6TMs.js";
3
+ import { useCapability as be, Panel as ot, Toggle as l } from "./App.C-FFqawg.js";
4
+ import { TextArea as Te } from "./index.teIw92Ev.js";
5
5
  import { useContext as at, useState as a, useMemo as st, useCallback as nt, useEffect as Ne } from "react";
6
6
  const ut = ({
7
7
  open: Ce,
@@ -1,13 +1,13 @@
1
1
  import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
- import { n as L, useUniqueId as v, useUserChatStats as z, useChatsUsage as _, USAGE_TITLE as B, Card as A, CARDS as a, L as u, j$1 as h, Button as o, renderDataAsList as P, pluralize as T } from "./index.BHySgpXD.js";
3
- import { Panel as b } from "./App.CpTC12YE.js";
2
+ import { n as L, useUniqueId as v, useUserChatStats as z, useChatsUsage as _, USAGE_TITLE as B, Card as A, CARDS as a, L as u, j$1 as h, Button as o, renderDataAsList as P, pluralize as T } from "./index.hQue6TMs.js";
3
+ import { Panel as b } from "./App.C-FFqawg.js";
4
4
  import { useState as C, Suspense as H, lazy as j } from "react";
5
5
  const s = [0, 3, 6, 9], n = {
6
6
  TOKEN: "token",
7
7
  MODEL: "model"
8
8
  }, G = j(() => import(
9
9
  /* webpackChunkName: "LazyChart" */
10
- "./Chart.C83kRI-n.js"
10
+ "./Chart.BLw2z4y6.js"
11
11
  )), R = ({
12
12
  open: E,
13
13
  onOpenChange: I
@@ -1,10 +1,10 @@
1
1
  import { jsx as e, jsxs as r, Fragment as L } from "react/jsx-runtime";
2
- import { L as E, j$1 as f, Button as b, n as ke, useLocalStorage as Q, LOCAL_STORAGE_PREFIX as Z, LOCAL_STORAGE_SORT_MEMORY_DIRECTION as we, e$1 as l, LOCAL_STORAGE_SORT_MEMORY_COLUMN as Te, useUserMemories as Se, useExpiredMemories as ve, useDeleteMemory as De, useDeleteAllActiveMemories as be, useDeleteAllExpiredMemories as Me, useUpdateMemory as Ee, useRestoreMemory as Re, ButtonIcon as O, IconEdit as Ie, IconDelete as ee, IconRestore as Le } from "./index.BHySgpXD.js";
3
- import { Panel as se, Toggle as _, ConfirmationPanel as te, Tooltip as z } from "./App.CpTC12YE.js";
4
- import { W as re, j as ie, G as D, M as s, F as B, H as oe, D as ne } from "./index.DPv4aRcG.js";
2
+ import { L as E, j$1 as f, Button as b, n as ke, useLocalStorage as Q, LOCAL_STORAGE_PREFIX as Z, LOCAL_STORAGE_SORT_MEMORY_DIRECTION as we, e$1 as l, LOCAL_STORAGE_SORT_MEMORY_COLUMN as Te, useUserMemories as Se, useExpiredMemories as ve, useDeleteMemory as De, useDeleteAllActiveMemories as be, useDeleteAllExpiredMemories as Me, useUpdateMemory as Ee, useRestoreMemory as Re, ButtonIcon as O, IconEdit as Ie, IconDelete as ee, IconRestore as Le } from "./index.hQue6TMs.js";
3
+ import { Panel as se, Toggle as _, ConfirmationPanel as te, Tooltip as z } from "./App.C-FFqawg.js";
4
+ import { W as re, j as ie, G as D, M as s, F as B, H as oe, D as ne } from "./index.CRTRfMeQ.js";
5
5
  import A from "clsx";
6
6
  import { useState as y, useEffect as Oe, useRef as le } from "react";
7
- import { TextArea as _e } from "./index.BoEUK5Es.js";
7
+ import { TextArea as _e } from "./index.teIw92Ev.js";
8
8
  const ze = ({
9
9
  open: C,
10
10
  onOpenChange: M,
@@ -1,5 +1,5 @@
1
1
  import { jsx as l, jsxs as y } from "react/jsx-runtime";
2
- import { ButtonSort_private as f, e$1 as k } from "./index.BHySgpXD.js";
2
+ import { ButtonSort_private as f, e$1 as k } from "./index.hQue6TMs.js";
3
3
  import o from "clsx";
4
4
  import v, { useContext as b } from "react";
5
5
  /*!
@@ -1,6 +1,6 @@
1
- import { getDefaultExportFromCjs as kn } from "./App.CpTC12YE.js";
2
- import { visit as In } from "./useMarkdown.l1hNG47z.js";
3
- import { toText as Cn } from "./index.DpuJMZKy.js";
1
+ import { getDefaultExportFromCjs as kn } from "./App.C-FFqawg.js";
2
+ import { visit as In } from "./useMarkdown._7muq_2r.js";
3
+ import { toText as Cn } from "./index.DDr47yJM.js";
4
4
  function xn(e) {
5
5
  const t = e.regex, i = e.COMMENT("//", "$", { contains: [{ begin: /\\\n/ }] }), a = "decltype\\(auto\\)", r = "[a-zA-Z_]\\w*::", d = "(?!struct)(" + a + "|" + t.optional(r) + "[a-zA-Z_]\\w*" + t.optional("<[^<>]+>") + ")", c = {
6
6
  className: "type",
@@ -1,4 +1,4 @@
1
- import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.l1hNG47z.js";
1
+ import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown._7muq_2r.js";
2
2
  import { longestStreak as q } from "./index.Cyw5OC0t.js";
3
3
  function b() {
4
4
  return {
@@ -1,4 +1,4 @@
1
- import { convert as se, visitParents as Me, unicodeWhitespace as I, unicodePunctuation as N, normalizeIdentifier as _, classifyCharacter as W, visit as _e, toString as ce, EXIT as Oe, asciiAlphanumeric as Z, asciiAlpha as P, markdownLineEndingOrSpace as A, asciiControl as je, blankLine as Be, factorySpace as S, splice as q, resolveAll as We, markdownLineEnding as R, markdownSpace as T, combineExtensions as $e } from "./useMarkdown.l1hNG47z.js";
1
+ import { convert as se, visitParents as Me, unicodeWhitespace as I, unicodePunctuation as N, normalizeIdentifier as _, classifyCharacter as W, visit as _e, toString as ce, EXIT as Oe, asciiAlphanumeric as Z, asciiAlpha as P, markdownLineEndingOrSpace as A, asciiControl as je, blankLine as Be, factorySpace as S, splice as q, resolveAll as We, markdownLineEnding as R, markdownSpace as T, combineExtensions as $e } from "./useMarkdown._7muq_2r.js";
2
2
  import { longestStreak as qe } from "./index.Cyw5OC0t.js";
3
3
  function ne(e, n) {
4
4
  const t = String(e);
@@ -1,4 +1,4 @@
1
- import { convert as E, convertElement as u } from "./useMarkdown.l1hNG47z.js";
1
+ import { convert as E, convertElement as u } from "./useMarkdown._7muq_2r.js";
2
2
  const f = (
3
3
  // Note: overloads like this are needed to support optional generics.
4
4
  /**
@@ -1,5 +1,5 @@
1
1
  import { jsxs as h, jsx as l } from "react/jsx-runtime";
2
- import { ButtonIcon as E, IconCopied as C, IconCopy as I } from "./index.BHySgpXD.js";
2
+ import { ButtonIcon as E, IconCopied as C, IconCopy as I } from "./index.hQue6TMs.js";
3
3
  import { useState as N, useEffect as $ } from "react";
4
4
  import t from "clsx";
5
5
  /*!
@@ -7776,7 +7776,7 @@ const sc = "ASK! ME! ANYTHING!", nc = "Log in with a password", ac = "Log in wit
7776
7776
  ] });
7777
7777
  }, Sc = new URL(document.location.href).searchParams, Ur = !!Sc.get("debug") || !1, bc = tn(() => import(
7778
7778
  /* webpackChunkName: "LazyApp" */
7779
- "./App.CpTC12YE.js"
7779
+ "./App.C-FFqawg.js"
7780
7780
  ).then((e) => e.App)), vc = new _n(), Hr = ({
7781
7781
  isComponent: e,
7782
7782
  headerHeight: t
@@ -1,5 +1,5 @@
1
1
  import { jsxs as oe, jsx as h } from "react/jsx-runtime";
2
- import { useMergeRefs as ce, useResizeObserver as W, useUniqueId as ne, useUncontrolled as le, LiveRegion as ie } from "./index.BHySgpXD.js";
2
+ import { useMergeRefs as ce, useResizeObserver as W, useUniqueId as ne, useUncontrolled as le, LiveRegion as ie } from "./index.hQue6TMs.js";
3
3
  import ue, { useRef as k, useState as I, useLayoutEffect as R } from "react";
4
4
  import o from "clsx";
5
5
  /*!
@@ -1,5 +1,5 @@
1
- import { find as Aa, parse as Ft, parse$1 as Ht, normalize as Pt, html as Ta, svg as Ba, visitParents as Na, SKIP as Da } from "./useMarkdown.l1hNG47z.js";
2
- import { toText as Ca } from "./index.DpuJMZKy.js";
1
+ import { find as Aa, parse as Ft, parse$1 as Ht, normalize as Pt, html as Ta, svg as Ba, visitParents as Na, SKIP as Da } from "./useMarkdown._7muq_2r.js";
2
+ import { toText as Ca } from "./index.DDr47yJM.js";
3
3
  const Gt = /[#.]/g;
4
4
  function qa(r, e) {
5
5
  const t = r || "", a = {};
@@ -1,7 +1,7 @@
1
1
  import { jsx as Le, jsxs as vt, Fragment as Tr } from "react/jsx-runtime";
2
- import { isTauri as Lr, ButtonCopy as zr, unObfuscate as _r, obfuscate as Mr } from "./index.BHySgpXD.js";
2
+ import { isTauri as Lr, ButtonCopy as zr, unObfuscate as _r, obfuscate as Mr } from "./index.hQue6TMs.js";
3
3
  import { useCallback as Dt, useRef as vn, useState as Nr, useEffect as Rr } from "react";
4
- import { getDefaultExportFromCjs as Ot } from "./App.CpTC12YE.js";
4
+ import { getDefaultExportFromCjs as Ot } from "./App.C-FFqawg.js";
5
5
  const Ft = -1, ee = 0, Hn = 1, ne = 2, ze = 3, _e = 4, Me = 5, Ne = 6, Bt = 7, Ut = 8, Qe = typeof self == "object" ? self : globalThis, vr = (n, e) => {
6
6
  const t = (i, l) => (n.set(l, i), i), r = (i) => {
7
7
  if (n.has(i))
@@ -7110,7 +7110,7 @@ class vu {
7110
7110
  if (!this.remarkGfm) {
7111
7111
  const { default: e } = await import(
7112
7112
  /* webpackChunkName: "md-remark" */
7113
- "./index.DigULJFG.js"
7113
+ "./index.CzrV29Ys.js"
7114
7114
  );
7115
7115
  this.remarkGfm = e;
7116
7116
  }
@@ -7121,7 +7121,7 @@ class vu {
7121
7121
  Uu("https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css");
7122
7122
  const { default: e } = await import(
7123
7123
  /* webpackChunkName: "md-rehype-katex" */
7124
- "./index.DUHPpcnH.js"
7124
+ "./index.wa3EVOX2.js"
7125
7125
  );
7126
7126
  this.rehypeKatex = e;
7127
7127
  }
@@ -7131,7 +7131,7 @@ class vu {
7131
7131
  if (!this.remarkMath) {
7132
7132
  const { default: e } = await import(
7133
7133
  /* webpackChunkName: "md-remark" */
7134
- "./index.BXksRYaH.js"
7134
+ "./index.Cpgy3_qK.js"
7135
7135
  );
7136
7136
  this.remarkMath = e;
7137
7137
  }
@@ -7141,7 +7141,7 @@ class vu {
7141
7141
  if (!this.rehypeHighlight) {
7142
7142
  const { default: e } = await import(
7143
7143
  /* webpackChunkName: "md-rehype-highlight" */
7144
- "./index.BqkQUJZh.js"
7144
+ "./index.C_g9sBak.js"
7145
7145
  );
7146
7146
  this.rehypeHighlight = e;
7147
7147
  }
@@ -1,5 +1,5 @@
1
1
  import "react/jsx-runtime";
2
- import { SassySaint as a } from "../../chunks/index.BHySgpXD.js";
2
+ import { SassySaint as a } from "../../chunks/index.hQue6TMs.js";
3
3
  export {
4
4
  a as SassySaint
5
5
  };
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
- import { SassySaint as r } from "./chunks/index.BHySgpXD.js";
1
+ import { SassySaint as r } from "./chunks/index.hQue6TMs.js";
2
2
  /*!
3
- @sassysaint/client v8.88.2
3
+ @sassysaint/client v8.88.3
4
4
  © 2025 gizmette.com
5
5
  */
6
6
  try {
7
7
  window.__VERSINI_SASSY_GLOBAL__ || (window.__VERSINI_SASSY_GLOBAL__ = {
8
- version: "8.88.2",
9
- buildTime: "11/22/2025 01:44 PM EST",
8
+ version: "8.88.3",
9
+ buildTime: "11/23/2025 09:46 AM EST",
10
10
  license: "MIT"
11
11
  });
12
12
  } catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/sassysaint",
3
- "version": "8.88.2",
3
+ "version": "8.88.3",
4
4
  "license": "MIT",
5
5
  "author": "Arno Versini",
6
6
  "publishConfig": {
@@ -33,7 +33,7 @@
33
33
  "react-dom": "^18.3.1 || ^19.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@sassysaint/client": "8.88.2",
36
+ "@sassysaint/client": "8.88.3",
37
37
  "@tailwindcss/vite": "4.1.17",
38
38
  "@versini/ui-styles": "6.1.2"
39
39
  },
@@ -45,5 +45,5 @@
45
45
  "sideEffects": [
46
46
  "**/*.css"
47
47
  ],
48
- "gitHead": "2ecb83b8ed221dbf8230efd5a64944d0fecc8f84"
48
+ "gitHead": "73c717eeb087724f048096d82a21be0a6266bd32"
49
49
  }