@versini/sassysaint 8.90.1 → 8.90.2

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.hZcl__6u.js → AboutChangelog.Bzj36blr.js} +3 -3
  2. package/dist/chunks/{AboutEntry.C2iuLjZZ.js → AboutEntry.SY2SIeDZ.js} +5 -5
  3. package/dist/chunks/{App.CMEX4yRp.js → App.BLhkVXVz.js} +16 -16
  4. package/dist/chunks/{Chart.Dwit87kM.js → Chart.Ck03N8tk.js} +2 -2
  5. package/dist/chunks/{ChatBubbleAssistant.Dk1eHlZ7.js → ChatBubbleAssistant.DtgiothS.js} +4 -4
  6. package/dist/chunks/{ChatBubbleUser.B-_uuQ4y.js → ChatBubbleUser.D0_zGRN6.js} +3 -3
  7. package/dist/chunks/{ChatHistoryTable.Cpas78zj.js → ChatHistoryTable.DffhDAId.js} +3 -3
  8. package/dist/chunks/{HistoryEntry.Hnk5L4hI.js → HistoryEntry.CyZKhE-r.js} +3 -3
  9. package/dist/chunks/{ProfileEntry.-hrQzEnH.js → ProfileEntry.CKZk7T66.js} +2 -2
  10. package/dist/chunks/{SettingsEntry.CG5kxhLI.js → SettingsEntry.Bmq54xRJ.js} +3 -3
  11. package/dist/chunks/{UsageEntry.GMT4Gpww.js → UsageEntry.CUOJVTSh.js} +3 -3
  12. package/dist/chunks/{UserMemoriesPanel.Bsec5Bo_.js → UserMemoriesPanel.CewUKKEO.js} +4 -4
  13. package/dist/chunks/{index.Cc7JenF0.js → index.25VgFBJF.js} +1 -1
  14. package/dist/chunks/{index.DKe5B8AK.js → index.B2fv-jn6.js} +3 -3
  15. package/dist/chunks/{index.B5mHzY2T.js → index.BnVRcTCh.js} +1 -1
  16. package/dist/chunks/{index.CC8vNcxL.js → index.CGkK3Bq7.js} +1 -1
  17. package/dist/chunks/{index.D1C2rT1e.js → index.Cdezl5BS.js} +4 -4
  18. package/dist/chunks/{index.DAQjp-YE.js → index.D6Jf67I7.js} +1 -1
  19. package/dist/chunks/{index.DYTr_gdR.js → index.DA-sTqbx.js} +1 -1
  20. package/dist/chunks/{index.DaqFvqvg.js → index.Ds35lAgW.js} +2 -2
  21. package/dist/chunks/{index.CJ32w6mG.js → index.XVjKijS9.js} +1 -1
  22. package/dist/chunks/{useMarkdown.epIo7QsU.js → useMarkdown.CAyTbBaF.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.D1C2rT1e.js";
2
+ import { useInViewport as c } from "./index.Cdezl5BS.js";
3
3
  import { useRef as n, useCallback as f, useLayoutEffect as u } from "react";
4
- import { ButtonScroll as p } from "./App.CMEX4yRp.js";
5
- import { useMarkdown as d } from "./useMarkdown.epIo7QsU.js";
4
+ import { ButtonScroll as p } from "./App.BLhkVXVz.js";
5
+ import { useMarkdown as d } from "./useMarkdown.CAyTbBaF.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,12 +1,12 @@
1
1
  import { jsxs as b, Fragment as l, jsx as e } from "react/jsx-runtime";
2
- import { Panel as g } from "./App.CMEX4yRp.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.D1C2rT1e.js";
2
+ import { Panel as g } from "./App.BLhkVXVz.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.Cdezl5BS.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.hZcl__6u.js"
9
+ "./AboutChangelog.Bzj36blr.js"
10
10
  )
11
11
  ), N = () => {
12
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 || "";
@@ -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.90.1",
22
- [r.ABOUT.BUILD_TIMESTAMP]: "11/26/2025 01:47 PM EST"
21
+ [r.ABOUT.VERSION]: "8.90.2",
22
+ [r.ABOUT.BUILD_TIMESTAMP]: "11/26/2025 02:01 PM EST"
23
23
  })
24
24
  }
25
25
  ),
@@ -1,5 +1,5 @@
1
1
  import { jsx as p, jsxs as N, Fragment as ze } from "react/jsx-runtime";
2
- import { ACTION_SORT as da, e$1 as gt, ACTION_SEARCH as pa, ACTION_RESET_PROMPT as mo, ACTION_TOGGLE_PROMPT as ho, ChatContext as we, LOCAL_STORAGE_PREFIX as ke, LOCAL_STORAGE_CHAT_ID as jt, n as Ie, useLocalStorage as Ae, isDev as fa, isPWAMode as go, isTauri as _t, useChat as ma, useClickOutside as ha, useInterval as ga, useTheme as Ce, ButtonIcon as xe, IconAddLight as va, DEFAULT_ICON_ACTION_SIZE as Ne, useUserPreferences as Ue, useHotkeys as Fr, isProbablyiPhone as Re, IconCloseLight as ya, IconEditLight as _a, serverUrl as vo, useEntitlements as Br, IconClose as yo, useHaptic as ba, L as Sr, j$1 as at, Button as cn, useSaveChat as wa, LOCAL_STORAGE_PRIVATE_DISCLOSURE as Ia, j as Jt, IconLockedLight as Ea, IconUnlockedLight as Ta, IconSelected as Sa, IconUnSelected as ka, IconNext as Ca, PromptsContext as Vr, IconBookSparklesLight as xa, IconRewrite as Aa, IconProofread as Na, IconMagic as Oa, LOCAL_STORAGE_REASONING_DISCLOSURE as Pa, IconLightBulbLight as Ra, IconSendLight as za, INPUT_PLACEHOLDER_TEXT_IN_SESSION as _o, INPUT_PLACEHOLDER_TEXT_MORNING as Ma, INPUT_PLACEHOLDER_TEXT_TODAY as $a, INPUT_PLACEHOLDER_TEXT_AFTERNOON as Za, INPUT_PLACEHOLDER_TEXT_EVENING as Da, INPUT_PLACEHOLDER_TEXT_NIGHT as La, INPUT_PLACEHOLDER_TEXT_DEFAULT as Ua, PROMPT_EDITABLE_AREA_CLASSNAME as ja, PROMPT_CLASSNAME as Fa, AppContext as Ct, HistoryContext as bo, useChatsHistory as Ba, useUniqueId as Va, q as wo, ERROR_MESSAGE as Ha, i as bt, CLIPBOARD_PROMPT as ln, getHotkeyHandler as Ga, Y as Ja, FOOTER_DISCLAIMERS as un, useViewportSize as Wa, useVisualViewportSize as Ya, useResizeObserver as Io, isProbablyiPad as qa, INPUT_BOTTOM_OFFSET_EXTRA as dn, INPUT_BOTTOM_OFFSET_IPHONE as Xa, INPUT_BOTTOM_OFFSET_IPAD as Qa, INPUT_BOTTOM_OFFSET as Eo, APP_SET_FOOTER_HEIGHT as Ka, FOOTER_TOP as kr, FOOTER_BOTTOM as vt, APP_SET_FOOTER_POSITION as dr, getLayoutPaddingClass as Cr, canEvaluateModels as pn, X as ei, IconOpenAI as ti, l as ri, IconAnthropic as ni, _ as oi, IconGoogleGemini as si, R as ai, z as ii, H as pr, setNewProvider as fn, TOAST_PROVIDER_CHANGED as mn, useQueryClient as ci, LOG_OUT as hn, IconProfile as li, IconSliders as ui, IconHistory as di, IconEditUser as pi, IconChart as fi, IconInfo as mi, IconBack as hi, IconSettings as gi, o as To, O as gn, useInViewport as vi, useServerCapabilities as yi, getMessageContaintWrapperClass as _i, UI_FOOTER_BUFFER as So, UI_BUTTON_SCROLL_BUFFER as bi, Logo as wi, isProbablyMobile as Ii, UI_DEFAULT_MAIN_HEIGHT as vn, e as Ei, appReducer as Ti, applyOledMode as Si, APP_SET_OLED_MODE as ki, APP_SET_FULL_SCREEN as Ci, APP_SET_THEME_MODE as xi, APP_SET_THEME_PALETTE as Ai, UI_DEFAULT_MAIN_HEIGHT_IPHONE as Ni, APP_CLASSNAME as Oi, B as yn, w as Pi, LOCAL_STORAGE_SORT as Ri, LOCAL_STORAGE_SEARCH as zi, LOCAL_STORAGE_OLED_MODE as Mi, LOCAL_STORAGE_FULL_SCREEN as $i, LOCAL_STORAGE_SORT_TIMESTAMP as Zi, LOCAL_STORAGE_SORT_TOKEN_USAGE as Di, TOAST_CACHE_ENABLED as Li, TOAST_CACHE_DISABLED as Ui } from "./index.D1C2rT1e.js";
2
+ import { ACTION_SORT as da, e$1 as gt, ACTION_SEARCH as pa, ACTION_RESET_PROMPT as mo, ACTION_TOGGLE_PROMPT as ho, ChatContext as we, LOCAL_STORAGE_PREFIX as ke, LOCAL_STORAGE_CHAT_ID as jt, n as Ie, useLocalStorage as Ae, isDev as fa, isPWAMode as go, isTauri as _t, useChat as ma, useClickOutside as ha, useInterval as ga, useTheme as Ce, ButtonIcon as xe, IconAddLight as va, DEFAULT_ICON_ACTION_SIZE as Ne, useUserPreferences as Ue, useHotkeys as Fr, isProbablyiPhone as Re, IconCloseLight as ya, IconEditLight as _a, serverUrl as vo, useEntitlements as Br, IconClose as yo, useHaptic as ba, L as Sr, j$1 as at, Button as cn, useSaveChat as wa, LOCAL_STORAGE_PRIVATE_DISCLOSURE as Ia, j as Jt, IconLockedLight as Ea, IconUnlockedLight as Ta, IconSelected as Sa, IconUnSelected as ka, IconNext as Ca, PromptsContext as Vr, IconBookSparklesLight as xa, IconRewrite as Aa, IconProofread as Na, IconMagic as Oa, LOCAL_STORAGE_REASONING_DISCLOSURE as Pa, IconLightBulbLight as Ra, IconSendLight as za, INPUT_PLACEHOLDER_TEXT_IN_SESSION as _o, INPUT_PLACEHOLDER_TEXT_MORNING as Ma, INPUT_PLACEHOLDER_TEXT_TODAY as $a, INPUT_PLACEHOLDER_TEXT_AFTERNOON as Za, INPUT_PLACEHOLDER_TEXT_EVENING as Da, INPUT_PLACEHOLDER_TEXT_NIGHT as La, INPUT_PLACEHOLDER_TEXT_DEFAULT as Ua, PROMPT_EDITABLE_AREA_CLASSNAME as ja, PROMPT_CLASSNAME as Fa, AppContext as Ct, HistoryContext as bo, useChatsHistory as Ba, useUniqueId as Va, q as wo, ERROR_MESSAGE as Ha, i as bt, CLIPBOARD_PROMPT as ln, getHotkeyHandler as Ga, Y as Ja, FOOTER_DISCLAIMERS as un, useViewportSize as Wa, useVisualViewportSize as Ya, useResizeObserver as Io, isProbablyiPad as qa, INPUT_BOTTOM_OFFSET_EXTRA as dn, INPUT_BOTTOM_OFFSET_IPHONE as Xa, INPUT_BOTTOM_OFFSET_IPAD as Qa, INPUT_BOTTOM_OFFSET as Eo, APP_SET_FOOTER_HEIGHT as Ka, FOOTER_TOP as kr, FOOTER_BOTTOM as vt, APP_SET_FOOTER_POSITION as dr, getLayoutPaddingClass as Cr, canEvaluateModels as pn, X as ei, IconOpenAI as ti, l as ri, IconAnthropic as ni, _ as oi, IconGoogleGemini as si, R as ai, z as ii, H as pr, setNewProvider as fn, TOAST_PROVIDER_CHANGED as mn, useQueryClient as ci, LOG_OUT as hn, IconProfile as li, IconSliders as ui, IconHistory as di, IconEditUser as pi, IconChart as fi, IconInfo as mi, IconBack as hi, IconSettings as gi, o as To, O as gn, useInViewport as vi, useServerCapabilities as yi, getMessageContaintWrapperClass as _i, UI_FOOTER_BUFFER as So, UI_BUTTON_SCROLL_BUFFER as bi, Logo as wi, isProbablyMobile as Ii, UI_DEFAULT_MAIN_HEIGHT as vn, e as Ei, appReducer as Ti, applyOledMode as Si, APP_SET_OLED_MODE as ki, APP_SET_FULL_SCREEN as Ci, APP_SET_THEME_MODE as xi, APP_SET_THEME_PALETTE as Ai, UI_DEFAULT_MAIN_HEIGHT_IPHONE as Ni, APP_CLASSNAME as Oi, B as yn, w as Pi, LOCAL_STORAGE_SORT as Ri, LOCAL_STORAGE_SEARCH as zi, LOCAL_STORAGE_OLED_MODE as Mi, LOCAL_STORAGE_FULL_SCREEN as $i, LOCAL_STORAGE_SORT_TIMESTAMP as Zi, LOCAL_STORAGE_SORT_TOKEN_USAGE as Di, TOAST_CACHE_ENABLED as Li, TOAST_CACHE_DISABLED as Ui } from "./index.Cdezl5BS.js";
3
3
  import ko, { useRef as W, useCallback as q, useSyncExternalStore as fr, useEffect as $, useState as Z, createContext as Hr, useContext as X, forwardRef as Xe, cloneElement as ji, useId as Co, useLayoutEffect as Gr, useMemo as be, Suspense as Wt, lazy as Oe, useReducer as Rt } from "react";
4
4
  import z, { clsx as Me } from "clsx";
5
5
  import { computePosition as Fi, offset as xo, flip as Ao, shift as No, arrow as Bi, useMergeRefs as Jr, FloatingPortal as xr, FloatingOverlay as Vi, FloatingFocusManager as Ar, useFloating as Oo, useClick as Po, useDismiss as Ro, useRole as zo, useInteractions as Mo, useFloatingParentNodeId as $o, FloatingTree as Hi, useListItem as Zo, useFloatingTree as Do, useFloatingNodeId as Gi, autoUpdate as Ji, useHover as Wi, safePolygon as Yi, useListNavigation as qi, useTypeahead as Xi, FloatingNode as _n, FloatingList as bn } from "@floating-ui/react";
@@ -5714,7 +5714,7 @@ const Fs = async () => (br || (br = import(
5714
5714
  "./index.790ujKXR.js"
5715
5715
  )), br), Bs = async () => (wr || (wr = import(
5716
5716
  /* webpackChunkName: "toast-utilities" */
5717
- "./index.D1C2rT1e.js"
5717
+ "./index.Cdezl5BS.js"
5718
5718
  ).then((e) => e.utilities)), wr), Bf = async () => {
5719
5719
  try {
5720
5720
  await Promise.all([Fs(), Bs()]);
@@ -8329,38 +8329,38 @@ const Bm = [".png", ".jpg", ".jpeg", ".webp"], Vm = [".pdf", ".txt"], Hm = [
8329
8329
  }, wh = Oe(
8330
8330
  () => import(
8331
8331
  /* webpackChunkName: "modal-chunk" */
8332
- "./ProfileEntry.-hrQzEnH.js"
8332
+ "./ProfileEntry.CKZk7T66.js"
8333
8333
  ).then((e) => ({
8334
8334
  default: e.Profile
8335
8335
  }))
8336
8336
  ), Ih = Oe(
8337
8337
  () => import(
8338
8338
  /* webpackChunkName: "modal-chunk" */
8339
- "./SettingsEntry.CG5kxhLI.js"
8339
+ "./SettingsEntry.Bmq54xRJ.js"
8340
8340
  ).then((e) => ({
8341
8341
  default: e.SettingsPanel
8342
8342
  }))
8343
8343
  ), Eh = Oe(
8344
8344
  () => import(
8345
8345
  /* webpackChunkName: "modal-chunk" */
8346
- "./HistoryEntry.Hnk5L4hI.js"
8346
+ "./HistoryEntry.CyZKhE-r.js"
8347
8347
  ).then((e) => ({
8348
8348
  default: e.HistoryPanel
8349
8349
  }))
8350
8350
  ), Th = Oe(
8351
8351
  () => import(
8352
8352
  /* webpackChunkName: "modal-chunk" */
8353
- "./AboutEntry.C2iuLjZZ.js"
8353
+ "./AboutEntry.SY2SIeDZ.js"
8354
8354
  ).then((e) => ({ default: e.About }))
8355
8355
  ), Sh = Oe(
8356
8356
  () => import(
8357
8357
  /* webpackChunkName: "modal-chunk" */
8358
- "./UsageEntry.GMT4Gpww.js"
8358
+ "./UsageEntry.CUOJVTSh.js"
8359
8359
  ).then((e) => ({ default: e.Usage }))
8360
8360
  ), kh = Oe(
8361
8361
  () => import(
8362
8362
  /* webpackChunkName: "modal-chunk" */
8363
- "./UserMemoriesPanel.Bsec5Bo_.js"
8363
+ "./UserMemoriesPanel.CewUKKEO.js"
8364
8364
  ).then(
8365
8365
  (e) => ({ default: e.default })
8366
8366
  )
@@ -8410,23 +8410,23 @@ const Bm = [".png", ".jpg", ".jpeg", ".webp"], Vm = [".pdf", ".txt"], Hm = [
8410
8410
  m || Promise.all([
8411
8411
  import(
8412
8412
  /* webpackChunkName: "modal-chunk" */
8413
- "./ProfileEntry.-hrQzEnH.js"
8413
+ "./ProfileEntry.CKZk7T66.js"
8414
8414
  ),
8415
8415
  import(
8416
8416
  /* webpackChunkName: "modal-chunk" */
8417
- "./SettingsEntry.CG5kxhLI.js"
8417
+ "./SettingsEntry.Bmq54xRJ.js"
8418
8418
  ),
8419
8419
  import(
8420
8420
  /* webpackChunkName: "modal-chunk" */
8421
- "./HistoryEntry.Hnk5L4hI.js"
8421
+ "./HistoryEntry.CyZKhE-r.js"
8422
8422
  ),
8423
8423
  import(
8424
8424
  /* webpackChunkName: "modal-chunk" */
8425
- "./AboutEntry.C2iuLjZZ.js"
8425
+ "./AboutEntry.SY2SIeDZ.js"
8426
8426
  ),
8427
8427
  import(
8428
8428
  /* webpackChunkName: "modal-chunk" */
8429
- "./UsageEntry.GMT4Gpww.js"
8429
+ "./UsageEntry.CUOJVTSh.js"
8430
8430
  )
8431
8431
  ]).finally(() => f(!0));
8432
8432
  }, [m]), h = q((M) => {
@@ -8696,18 +8696,18 @@ const po = "av-spinner", ra = ({ spinnerRef: e, mode: t = "system", type: r = "c
8696
8696
  ]
8697
8697
  });
8698
8698
  }, Oh = Oe(
8699
- () => import("./index.B5mHzY2T.js").then((e) => ({ default: e.Bubble }))
8699
+ () => import("./index.BnVRcTCh.js").then((e) => ({ default: e.Bubble }))
8700
8700
  ), on = (e) => /* @__PURE__ */ p(Wt, { fallback: /* @__PURE__ */ p("span", { className: "inline-block" }), children: /* @__PURE__ */ p(Oh, { ...e }) });
8701
8701
  on.displayName = "AsyncBubble";
8702
8702
  const fo = 1, Ph = 150, Rh = Oe(
8703
8703
  () => import(
8704
8704
  /* webpackChunkName: "LazyMessageAssistant" */
8705
- "./ChatBubbleAssistant.Dk1eHlZ7.js"
8705
+ "./ChatBubbleAssistant.DtgiothS.js"
8706
8706
  )
8707
8707
  ), zh = Oe(
8708
8708
  () => import(
8709
8709
  /* webpackChunkName: "LazyMessageUser" */
8710
- "./ChatBubbleUser.B-_uuQ4y.js"
8710
+ "./ChatBubbleUser.D0_zGRN6.js"
8711
8711
  )
8712
8712
  ), Mh = ko.memo(
8713
8713
  ({
@@ -1,7 +1,7 @@
1
1
  import { jsx as Ap } from "react/jsx-runtime";
2
- import { getDefaultExportFromCjs as ln } from "./App.CMEX4yRp.js";
2
+ import { getDefaultExportFromCjs as ln } from "./App.BLhkVXVz.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.D1C2rT1e.js";
4
+ import { TRIMESTERS as rn, TRIMESTERS_SHORT as Lp, isProbablyMobile as Ep } from "./index.Cdezl5BS.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.D1C2rT1e.js";
3
- import { BUBBLE_FOOTER_EMPTY as D } from "./index.B5mHzY2T.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.Cdezl5BS.js";
3
+ import { BUBBLE_FOOTER_EMPTY as D } from "./index.BnVRcTCh.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.CMEX4yRp.js";
7
- import { useMarkdown as q } from "./useMarkdown.epIo7QsU.js";
6
+ import { AsyncBubble as k } from "./App.BLhkVXVz.js";
7
+ import { useMarkdown as q } from "./useMarkdown.CAyTbBaF.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.D1C2rT1e.js";
2
+ import { Button as C } from "./index.Cdezl5BS.js";
3
3
  import { useState as _, useMemo as m, isValidElement as T, useEffect as b } from "react";
4
- import { AsyncBubble as w } from "./App.CMEX4yRp.js";
5
- import { useMarkdown as x } from "./useMarkdown.epIo7QsU.js";
4
+ import { AsyncBubble as w } from "./App.BLhkVXVz.js";
5
+ import { useMarkdown as x } from "./useMarkdown.CAyTbBaF.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, w 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.D1C2rT1e.js";
3
- import { W as B, j as P, G as m, H as $, M as a, F as f } from "./index.CJ32w6mG.js";
4
- import { Tooltip as d } from "./App.CMEX4yRp.js";
2
+ import { B as x, w 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.Cdezl5BS.js";
3
+ import { W as B, j as P, G as m, H as $, M as a, F as f } from "./index.XVjKijS9.js";
4
+ import { Tooltip as d } from "./App.BLhkVXVz.js";
5
5
  import h from "clsx";
6
6
  import { Fragment as W } 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, w 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.D1C2rT1e.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.CMEX4yRp.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, w 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.Cdezl5BS.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.BLhkVXVz.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.Cpas78zj.js"
9
+ "./ChatHistoryTable.DffhDAId.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.D1C2rT1e.js";
3
- import { preloadToast as ae, showSuccessToast as se, showErrorToast as ne, ConfirmationPanel as re, LazyToastContainerWrapper as le, Panel as te } from "./App.CMEX4yRp.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.Cdezl5BS.js";
3
+ import { preloadToast as ae, showSuccessToast as se, showErrorToast as ne, ConfirmationPanel as re, LazyToastContainerWrapper as le, Panel as te } from "./App.BLhkVXVz.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 Fe, AppContext as Ve, 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 f, CARDS as r, F as Ze, Button as v, PROMPTS_DESCRIPTION as Je, et as me, L as Xe, j$1 as he, applyOledMode as fe, APP_SET_OLED_MODE as Ee, APP_SET_FULL_SCREEN as Se, getCurrentGeoLocation as et, graphQLRequest as pe, handleServiceWorkerToggle as tt, SERVICE_TYPES as ge } from "./index.D1C2rT1e.js";
3
- import { useCapability as Te, Panel as ot, Toggle as l } from "./App.CMEX4yRp.js";
4
- import { TextArea as Ne } from "./index.CC8vNcxL.js";
2
+ import { n as je, useEntitlements as Fe, AppContext as Ve, 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 f, CARDS as r, F as Ze, Button as v, PROMPTS_DESCRIPTION as Je, et as me, L as Xe, j$1 as he, applyOledMode as fe, APP_SET_OLED_MODE as Ee, APP_SET_FULL_SCREEN as Se, getCurrentGeoLocation as et, graphQLRequest as pe, handleServiceWorkerToggle as tt, SERVICE_TYPES as ge } from "./index.Cdezl5BS.js";
3
+ import { useCapability as Te, Panel as ot, Toggle as l } from "./App.BLhkVXVz.js";
4
+ import { TextArea as Ne } from "./index.CGkK3Bq7.js";
5
5
  import { useContext as st, useState as s, useMemo as at, useCallback as nt, useEffect as be } from "react";
6
6
  const ut = ({
7
7
  open: Ce,
@@ -1,6 +1,6 @@
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.D1C2rT1e.js";
3
- import { Panel as b } from "./App.CMEX4yRp.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.Cdezl5BS.js";
3
+ import { Panel as b } from "./App.BLhkVXVz.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",
@@ -8,7 +8,7 @@ const s = [0, 3, 6, 9], n = {
8
8
  }, G = j(
9
9
  () => import(
10
10
  /* webpackChunkName: "chart-highcharts" */
11
- "./Chart.Dwit87kM.js"
11
+ "./Chart.Ck03N8tk.js"
12
12
  )
13
13
  ), R = ({
14
14
  open: E,
@@ -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.D1C2rT1e.js";
3
- import { Panel as se, Toggle as _, ConfirmationPanel as te, Tooltip as z } from "./App.CMEX4yRp.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.CJ32w6mG.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.Cdezl5BS.js";
3
+ import { Panel as se, Toggle as _, ConfirmationPanel as te, Tooltip as z } from "./App.BLhkVXVz.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.XVjKijS9.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.CC8vNcxL.js";
7
+ import { TextArea as _e } from "./index.CGkK3Bq7.js";
8
8
  const ze = ({
9
9
  open: C,
10
10
  onOpenChange: M,
@@ -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.epIo7QsU.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.CAyTbBaF.js";
2
2
  import { longestStreak as qe } from "./index.Cyw5OC0t.js";
3
3
  function ne(e, n) {
4
4
  const t = String(e);
@@ -1,6 +1,6 @@
1
- import { getDefaultExportFromCjs as kn } from "./App.CMEX4yRp.js";
2
- import { visit as In } from "./useMarkdown.epIo7QsU.js";
3
- import { toText as Cn } from "./index.DYTr_gdR.js";
1
+ import { getDefaultExportFromCjs as kn } from "./App.BLhkVXVz.js";
2
+ import { visit as In } from "./useMarkdown.CAyTbBaF.js";
3
+ import { toText as Cn } from "./index.DA-sTqbx.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,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.D1C2rT1e.js";
2
+ import { ButtonIcon as E, IconCopied as C, IconCopy as I } from "./index.Cdezl5BS.js";
3
3
  import { useState as N, useEffect as $ } from "react";
4
4
  import t from "clsx";
5
5
  /*!
@@ -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.D1C2rT1e.js";
2
+ import { useMergeRefs as ce, useResizeObserver as W, useUniqueId as ne, useUncontrolled as le, LiveRegion as ie } from "./index.Cdezl5BS.js";
3
3
  import ue, { useRef as k, useState as I, useLayoutEffect as R } from "react";
4
4
  import o from "clsx";
5
5
  /*!
@@ -4129,9 +4129,9 @@ async function Ls() {
4129
4129
  }), Ct.addEventListener("updatefound", () => {
4130
4130
  const e = Ct?.installing;
4131
4131
  e && e.addEventListener("statechange", () => {
4132
- e.state === "installed" && navigator.serviceWorker.controller && confirm(
4133
- "A new version of the app is available. Reload to update cache?"
4134
- ) && (e.postMessage({ type: "SKIP_WAITING" }), window.location.reload());
4132
+ e.state === "installed" && navigator.serviceWorker.controller && (alert(
4133
+ "A new version of the app is available. Reloading to update cached assets."
4134
+ ), e.postMessage({ type: "SKIP_WAITING" }), window.location.reload());
4135
4135
  });
4136
4136
  }), !0;
4137
4137
  } catch (e) {
@@ -7792,7 +7792,7 @@ const ac = "ASK! ME! ANYTHING!", ic = "Log in with a password", oc = "Log in wit
7792
7792
  ] });
7793
7793
  }, vc = new URL(document.location.href).searchParams, Hr = !!vc.get("debug") || !1, Tc = rn(() => import(
7794
7794
  /* webpackChunkName: "LazyApp" */
7795
- "./App.CMEX4yRp.js"
7795
+ "./App.BLhkVXVz.js"
7796
7796
  ).then((e) => e.App)), Ic = new Ln(), Fr = ({
7797
7797
  isComponent: e,
7798
7798
  headerHeight: t
@@ -1,4 +1,4 @@
1
- import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.epIo7QsU.js";
1
+ import { factorySpace as M, markdownLineEnding as g } from "./useMarkdown.CAyTbBaF.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 E, convertElement as u } from "./useMarkdown.epIo7QsU.js";
1
+ import { convert as E, convertElement as u } from "./useMarkdown.CAyTbBaF.js";
2
2
  const f = (
3
3
  // Note: overloads like this are needed to support optional generics.
4
4
  /**
@@ -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.epIo7QsU.js";
2
- import { toText as Ca } from "./index.DYTr_gdR.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.CAyTbBaF.js";
2
+ import { toText as Ca } from "./index.DA-sTqbx.js";
3
3
  const Gt = /[#.]/g;
4
4
  function qa(r, e) {
5
5
  const t = r || "", a = {};
@@ -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.D1C2rT1e.js";
2
+ import { ButtonSort_private as f, e$1 as k } from "./index.Cdezl5BS.js";
3
3
  import o from "clsx";
4
4
  import v, { useContext as b } from "react";
5
5
  /*!
@@ -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.D1C2rT1e.js";
2
+ import { isTauri as Lr, ButtonCopy as zr, unObfuscate as _r, obfuscate as Mr } from "./index.Cdezl5BS.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.CMEX4yRp.js";
4
+ import { getDefaultExportFromCjs as Ot } from "./App.BLhkVXVz.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.Cc7JenF0.js"
7113
+ "./index.25VgFBJF.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.DaqFvqvg.js"
7124
+ "./index.Ds35lAgW.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.DAQjp-YE.js"
7134
+ "./index.D6Jf67I7.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.DKe5B8AK.js"
7144
+ "./index.B2fv-jn6.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.D1C2rT1e.js";
2
+ import { SassySaint as a } from "../../chunks/index.Cdezl5BS.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.D1C2rT1e.js";
1
+ import { SassySaint as r } from "./chunks/index.Cdezl5BS.js";
2
2
  /*!
3
- @sassysaint/client v8.90.1
3
+ @sassysaint/client v8.90.2
4
4
  © 2025 gizmette.com
5
5
  */
6
6
  try {
7
7
  window.__VERSINI_SASSY_GLOBAL__ || (window.__VERSINI_SASSY_GLOBAL__ = {
8
- version: "8.90.1",
9
- buildTime: "11/26/2025 01:47 PM EST",
8
+ version: "8.90.2",
9
+ buildTime: "11/26/2025 02:01 PM 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.90.1",
3
+ "version": "8.90.2",
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.90.1",
36
+ "@sassysaint/client": "8.90.2",
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": "055759dad679dab9e51de6b9761fef6706e35c0c"
48
+ "gitHead": "70c362904ee6af41e0d05469097d4e9c4dd3ee8d"
49
49
  }