How to disable the "Tips for getting started" info?

Read the Solution.

It will fix the problem, trust me!

I was switching between browsers and ChatGPT was working fine, it wasn’t until I decided to sync browser data between Waterfox (Browser based on Firefox) and Firefox itself using sync function with my Firefox account.

Waterfox is even more privacy focused than Firefox and a little aggressive, which makes me think that it or privacy/tracker extension might be causing the issue.

Ronald’s solution worked for me on Firefox, haven’t tested other browsers.

Edit: This was meant to be a reply to the new comment saying they just installed Firefox, and suggesting the data sync might be causing the issue. I had imported my data from Chrome browser as well.

This looks really cool. & Open source! Thanks for sharing!

Just wanted to add information regarding this issue.

I had the same problem after a reinstall of windows.

The issue when first loading now is that the localStorage keyname that is set automatically, is now formatted with a hash in it - but it would seem it was lacking that before.

So the original keyname: ‘oai/apps/hasSeenOnboarding/chat’

actually looks like this now:

‘oai/apps/hasSeenOnboarding/321321-321321-321321-321321/chat’

renaming the LS keyname to ‘oai/apps/hasSeenOnboarding/chat’, without the hash resolved the issue.

So somewhere in the past months it seems they’ve pushed an update regarding how to read that keyname+value, but not properly addressing the formatting changes of the keyname they are parsing.

It seems like they have separated it into two parts. One for personal, and one for a Workspace. Possibly for business accounts?

Here’s what I managed to grab for setting the value.

ex = function (e, t) {
      var a = (0, g.useCallback) (function () {
        em.m.setItem(em.F.WorkspaceOnboarding, new Date().toLocaleDateString('en-CA', {
          year: 'numeric',
          month: '2-digit',
          day: '2-digit'
        }), {
          workspaceId: null != t ? t : void 0,
          workspaceScope: e
        })
      }, [
        e,
        t
      ]),
      n = (0, o._) ((0, g.useState) (null), 2),
      s = n[0],
      r = n[1];
      (0, g.useEffect) (function () {
        var a = em.m.getItem(em.F.WorkspaceOnboarding, {
          workspaceScope: e
        });
        a || e !== i.Workspace || (a = em.m.getItem(em.F.WorkspaceOnboarding, {
          workspaceId: null != t ? t : void 0,
          workspaceScope: e
        })),
        r(!!a && a)
      }, [
        e,
        t
      ]);
      var c = (0, g.useCallback) (function () {
        return s ? new Date(!0 === s ? '2022-12-14' : s) : s
      }, [
        s
      ]);
      return (0, g.useMemo) (function () {
        return {
          setHasSeenOnboarding: a,
          getHasSeenOnboardingDate: c
        }
      }, [
        c,
        a
      ])
    };

Then determining if the modal should appear

function eW(e) {
  var t = e.ageVerificationDeadline,
  a = e.showCookieConsentBanner,
  n = e.canManageBrowserStorage,
  s = (0, o._) ((0, g.useState) (0), 2),
  r = s[0],
  l = s[1],
  d = (0, h.ec) (h.F_.workspaceId),
  u = ex(i.Personal).getHasSeenOnboardingDate,
  p = (0, h.ec) (h.F_.isBusinessWorkspace),
  f = ex(i.Workspace, d).getHasSeenOnboardingDate,
  m = 0 === (0, h.hz) ().size ? 'loading' : ee.b.getCookie(ee.c.AgeVerification) || null == t ? 'hide' : 'show',
  x = 0 === (0, h.hz) ().size ? 'loading' : a ? 'show' : 'hide',
  v = (0, h.$T) (),
  b = (0, y.Go) (),
  k = (0, h.ec) (h.F_.hasMultipleWorkspaces) && null == d,
  w = (0, g.useMemo) (function () {
    return [{
      Component: Q,
      getModalState: function () {
        return v ? 'loading' : k ? 'show' : 'hide'
      }
    },
    {
      Component: P,
      getModalState: function () {
        return v ? 'loading' : null !== b ? 'show' : 'hide'
      }
    },
    {
      Component: eu,
      getModalState: function () {
        return x
      }
    },
    {
      Component: eE,
      getModalState: function () {
        if (p) return 'hide';
        var e = u();
        return null === e ? 'loading' : !1 === e ? 'show' : 'hide'
      }
    },
    {
      Component: eT,
      getModalState: function () {
        if (!p) return 'hide';
        var e = f();
        return null === e ? 'loading' : !1 === e ? 'show' : 'hide'
      }
    },
    {
      Component: es,
      getModalState: function () {
        return m
      }
    }
    ]
  }, [
    v,
    k,
    b,
    x,
    p,
    u,
    f,
    m
  ]);
  (0, g.useEffect) (function () {
    w[r] && 'hide' === w[r].getModalState() && l(w.findIndex(function (e) {
      return 'hide' !== e.getModalState()
    }))
  }, [
    r,
    w
  ]);
  var j = w[r];
  if (null == j) return null;
  var M = j.getModalState();
  if ('loading' === M) return null;
  'hide' === M && l(function (e) {
    return e + 1
  });
  var C = w[r].Component;
  return (0, c.jsx) (C, {
    onClose: function () {
      l(function (e) {
        return e + 1
      })
    },
    ageVerificationDeadline: t,
    canManageBrowserStorage: n
  })
}

Either that or shared computers, if two people share the same computer and swap google account it will be a different id on that tip first seen, makes sense if they don’t want subsequent logins to inherit hidden tips etc :smiley: but someone made a goof

1 Like

I believe that for Enterprise accounts they are multiple accounts/workspaces held under the same account. Looking further it seems like the workspaceID for me is just my account ID as a hash.

I think this is the truth :joy: It is accidentally setting the localstorage to indicate that we have seen the “Workplace” onBoarding, and not the “Personal”.

Specifically. It is this part of the code that makes the mistake I believe. It’s a bit hard because of being minified and I am assuming a bit of what the variables are.

Both the personal and workspace is checked, with “t” (or “d” as the workspaceID) being undefined for personal.

  u = ex(i.Personal).getHasSeenOnboardingDate,
  p = (0, h.ec) (h.F_.isBusinessWorkspace),
  f = ex(i.Workspace, d).getHasSeenOnboardingDate,

It’s important to note here that “t” is the variable used to determine if the workspaceId is used

i is an enum defined simply as:

i: {…}
​​
Personal: "chat"
​​
Workspace: "workspace"
ex = function (e, t) {
var a = (0, g.useCallback) (function () {
        em.m.setItem(em.F.WorkspaceOnboarding, new Date().toLocaleDateString('en-CA', {
          year: 'numeric',
          month: '2-digit',
          day: '2-digit'
        }), {
          workspaceId: null != t ? t : void 0,
          workspaceScope: e
        })
      }, [
        e,
        t
      ]),

I set a breakpoint and for some reason it is indeed setting it as a workspace ID and not as personal.

It’s called from here:

function ev(e) {
      var t = e.onClose,
      a = e.scope,
      n = ex(a, (0, h.ec) (h.F_.workspaceId)).setHasSeenOnboarding,
      s = (0, g.useCallback) (function () {
        t(!0),
        n()
      }, [
        t,
        n
      ]);
      return a === i.Personal ? (0, c.jsx) (ey, {
        onSubmit: s
      }) : (0, c.jsx) (ek, {
        onSubmit: s
      })
    }

Specifically:

n = ex(a, (0, h.ec) (h.F_.workspaceId)).setHasSeenOnboarding,

Looks like h.F_.workspaceId should be undefined (to indicate a personal account) but it’s always truthy (I think)

Looks like it is meant to separate between personal and business accounts based on the h.F_ values. So I’m guessing “workspaces” are shared conversations.

F_: {…}
​​​
accountUserId(Y)
businessWorkspace(Y)
businessWorkspaceId(Y)
features(Y)
hasCustomerObject(Y)
hasMultipleWorkspaces(Y)
hasPaidSubscription(Y)
isAdmin(Y)
isBusinessWorkspace(Y)
isOwner(Y)
isPersonalWorkspace(Y)
lastActiveSubscription(Y)
useHasClaimedFreeTrial(Y)
wasPaidCustomer(Y)
workspaceId(Y)
workspaces(Y)

It could also be that they are reading/separating it incorrectly. It’s a function from a different location and I think doing this is fruitless

 s = (0, o._) ((0, g.useState) (0), 2),
  r = s[0],
  l = s[1],

r is always false with the hashed key, but properly returns the date when using the non-hashed version.

I believe it’s either A) They forgot to consider if there’s a hash when checking or B) They are incorrectly adding the hash when it’s a chat and not a workspace. Could even be both A and B. This is not harmonized at all.

So. That was fun. Even if nobody cares and nothing will happen and this bug will probably never get acknowledged. But. Yay…

I could also be wrong here. Still a reactjs newbie.

The strange thing is how they have labelled it as “workspaceOnBoarding” (resolves to WorkspaceOnboarding: "oai/apps/hasSeenOnboarding")which leads me to believe that they want to consolidate the two together but didn’t. Or half-way did. Whatever. :spaghetti:

UPDATE

This has been fixed with some new changes and general cleanup. (Including workspaceOnboarding → Onboarding)

var a = (0, m.useCallback) (function () {
        ef.m.setItem(ef.F.Onboarding, new Date().toLocaleDateString('en-CA', {
          year: 'numeric',
          month: '2-digit',
          day: '2-digit'
        }), {
          workspaceId: null != t ? t : void 0,
          workspaceScope: e
        })
      }, [
        e,
        t
      ]),

from

n = ex(a, (0, h.ec) (h.F_.workspaceId)).setHasSeenOnboarding,

to

s = ex(a, a === i.Workspace ? n : void 0).setHasSeenOnboarding,

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.