* chore: Replace lodash with es-toolkit
Migrate all direct lodash imports to es-toolkit/compat for a smaller,
faster, lodash-compatible utility library. Transitive lodash usage from
other packages remains unchanged.
* fix: Restore isPlainObject semantics in CanCan policy
The lodash migration aliased `isObject` to `lodash/isPlainObject` and
the codemod incorrectly mapped the local name to es-toolkit's `isObject`,
which also returns true for arrays and functions. This caused condition
objects in policy definitions to be skipped, breaking authorization
checks across the codebase.
* fix: Restore unicode-aware length counting in validators
es-toolkit/compat's size() returns string.length, while lodash's _.size()
counts unicode code points. Switch to [...value].length to preserve the
previous behavior so multi-byte characters like emoji count as one.
* First pass
* Remove prop drilling, fix comment layout
* Revert dev:watch to use dev:backend
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* fix: Integrations list missing when language is not English
The group filter on the Integrations settings page compared against the
hardcoded string "Integrations" instead of the translated value from
t("Integrations"), causing no integrations to appear in non-English locales.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: Sidebar shows unconnected integrations in non-English locales
Same hardcoded "Integrations" string comparison issue as the main
integrations page — the sidebar filter skipped the connected-check
when the translated group name didn't match the English literal.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix: Use singleton for tooltips, ensures that only one is visible at a time and animations are shared
* fix: give toolbar menu its own context
* Remove duplicate props
* GA integration settings
* trackingId -> measurementId
Hook up script
* Public page GA tracking
Correct layout of settings
* Remove multiple codepaths for loading GA measurementID, add missing db index
* Remove unneccessary changes, tsc
* test
* Remove home link on desktop app
* Spellcheck, installation toasts, background styling, …
* Add email,slack, auth support
* More desktop style tweaks
* Move redirect to client
* cleanup
* Record desktop usage
* docs
* fix: Selection state in search input when double clicking header
* feat: Optional branding on shared documents
* Refactor
Remove unneccessarily exposed team id
Remove top-level collapsible document on publicly shared urls
* fix: Branding disappears when revising document
fix: Clicking title should go back to main app when logged in
* Normalize code around localStorage
Persist disabled embed state
* fix: Cannot view more than 10 starred items on load
* More tidying of sidebar state
* fix: add disclosure and transition
* fix: keep collections expanded
* fix: tune transition and collapsing conditions
* fix: collectionIcon expanded props is no longer driven by expanded state
* fix: sync issue
* fix: managing state together
* fix: remove comment
* fix: simplify expanded state
* fix: remove extra state
* fix: remove animation and retain expanded state
* fix: remove isCollectionDropped
* fix: don't use ref
* review suggestions
* fix many functional and design issues
* don't render every single document in the sidebar, just ones that the user has seen before
* chore: Sidebar refinement (#3154)
* stash
* wip: More sidebar tweaks
* Simplify draft bubble
* disclosure refactor
* wip wip
* lint
* tweak menu position
* Use document emoji for starred docs where available
* feat: Trigger cmd+k from sidebar (#3149)
* feat: Trigger cmd+k from sidebar
* Add hint when opening command bar from sidebar
* fix: Clicking internal links in shared documents sometimes reroutes to Login
* fix: Spacing issues on connected slack channels list
* Merge
* fix: Do not prefetch JS bundles on public share links
* fix: Buttons show on collection empty state when user does not have permission to edit
* fix: the hover area for the "collections" subheading was being obfuscated by the initial collection drop cursor
* fix: top-align disclosures
* fix: Disclosure color PR feedback
fix: Starred no longer draggable
* fix: Overflow on sidebar button
* fix: Scrollbar in sidebar when command menu is open
* Minor alignment issues, clarify back in settings sidebar
* fix: Fade component causes SidebarButton missizing
Co-authored-by: Nan Yu <thenanyu@gmail.com>
Co-authored-by: Tom Moor <tom.moor@gmail.com>
Co-authored-by: Nan Yu <thenanyu@gmail.com>
This PR moves the entire project to Typescript. Due to the ~1000 ignores this will lead to a messy codebase for a while, but the churn is worth it – all of those ignore comments are places that were never type-safe previously.
closes#1282