* esbuild package
* almost get esbuild working
* fix react-virtualized imports
* add splitting
* fix funny import reorder bug
* fix squeakAudio referring to itself
* write index.html file
* fix some bad imports
* update antd paths
* remove raw-loader usage, it didn't work anyway
* refactor and copy public
* build app and toolbar
* get toolbar working, but without styles
* make toolbar and its styles work
* shared dashboards
* clean frontend build before rebuilding
* add watch mode
* reorder tasks
* revert js url
* incremental builds of app with debounced chokidar watching
* common build/watch script
* improve logs
* watch during firrst build
* fix toolbar url
* fix wrongly exported scene
* create sceneProxyLogic to untangle sceneLogic from all bundles
* disconnect sceneLogic and refactor setPageTitle
* live reloading server
* rename utils file
* only wait for /static
* fix encoding
* simplify
* add missing dayjs plugins
* fix pathless logics
* simplify options
* add jsx for webapck
* slight delay to catch changes
* a type is a type
* fix build
* esbuild in start
* funnelLogic path
* include all files with a "." (so .mjs, etc) in /frontend/ to docker
* rename to "utils.mjs", make "build.mjs" executable
* improve erroring
* revert some needless changes
* more reverts
* change some scripts
* remove setuff
* clarify function
* make "--host 0.0.0.0" work
* fix import order issue in webpack
* remove webpack css inlining for toolbar to simplify config
* make toolbar with external styles work in storybook
* move live server injection into django
* fix undefined bug
* simplify setup to work with injection directly in http://localhost:8000 (no proxying needed on :8234)
* add comments
* Fix `fse` usage
I was getting this otherwise:
$ node frontend/build.mjs
file:///Users/twixes/Developer/posthog/frontend/utils.mjs:46
fse.copySync(srcDir, destDir, { overwrite: true }, function (err) {
^
TypeError: fse.copySync is not a function
at copyPublicFolder (file:///Users/twixes/Developer/posthog/frontend/utils.mjs:46:9)
at file:///Users/twixes/Developer/posthog/frontend/build.mjs:5:1
at ModuleJob.run (internal/modules/esm/module_job.js:146:23)
at async Loader.import (internal/modules/esm/loader.js:165:24)
at async Object.loadESM (internal/process/esm_loader.js:68:5)
* Mock `process` for VFile used by ReactMarkdown
I was getting this otherwise:
core.js:55 Uncaught ReferenceError: process is not defined
at new VFile (core.js:55)
at VFile (core.js:49)
at Function.parse (index.js:273)
at ReactMarkdown2 (react-markdown.js:42)
at renderWithHooks (react-dom.development.js:14803)
at mountIndeterminateComponent (react-dom.development.js:17482)
at beginWork (react-dom.development.js:18596)
at HTMLUnknownElement.callCallback2 (react-dom.development.js:188)
at Object.invokeGuardedCallbackDev (react-dom.development.js:237)
at invokeGuardedCallback (react-dom.development.js:292)
* Mock `process.env` for VFile used by ReactMarkdown
I was getting this otherwise:
platform.ts:73 Uncaught TypeError: Cannot read properties of undefined (reading 'ENABLE_VSCODE_BROWSER_CODE_LOADING')
at platform.ts:73
at platform.ts:79
at Function.r._invokeFactory (loader.js:1118)
at r.complete (loader.js:1128)
at r._onModuleComplete (loader.js:1754)
at r._resolve (loader.js:1714)
at r.defineModule (loader.js:1357)
at _ (loader.js:1804)
at numbers.ts:10
at fake:1
* pass the heavy appScenes to sceneLogic through props via App.tsx
* remove sceneProxyLogic
* remove exported variables
* fix sceneLogic test
Co-authored-by: Michael Matloka <dev@twixes.com>
* Add top level danger `TopBar` indicator for potential system issues
* Update frontend/src/layout/lemonade/TopBar/SitePopover.tsx
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* Run prettier
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* feat(correlation): add team wide person property exclusion list
This change just adds the exclusion list to the `Team` model and checks
that it can be updated. Separately we can:
1. add interface for the Project page to display
2. pull and update this list from the funnels correlation page
NOTE: We don't perform any validation on the structure, :fingerscrossed:
this won't be an issue. Alternative would be to use ArrayField, but use
of JSONField is consistent with other fields.
* test(correlation): add test checking exclude properties pulled from team
* feat(correlation): load exclude properties from team settings
Previously we were loading exclude properties from local storage, so we
would not be sharing the exclusion list between users. This change
simply plugs the `excludePropertyNames` into the `teamLogic` for the
purpose of persisting and loading the values.
* use [teamLogic.actionTypes.loadCurrentTeamSuccess]
* get tests passing
* switch frontend to using `correlation_config`
* refactor: use Team.correlation_config for persistence
* add project settings for correlation
* fix lint
* ensure excluded properties are saved to project config
* Add default excluded properties
* format
* make propertyCorrelations not null
* ensure excluded property names config is unique
* rename excludeProperty to excludePropertyFromProject
* update var names
* change to targetProperties
* remove null special casing
* update to filter client side on exclude from project clicked
* update test name to reflect new functionality
* fix tests
* Keep top bar always visible
* Add `LemonPopover`
* Add empty account control sections
* Rename `AccountControl` to `SitePopover`
* Add basic Sign out button
* Add `LemonButton` and use it for sign out
* Scale down popover scaling
* Remove `LemonPopover` in favor of `Popup`
* Improve icons story
* Polish account info
* Add organizations to site popover
* Add `CreateOrganizationModal` to `TopBar`
* Polish things
* Add PostHog status items
* Update FunnelTab.tsx
* Rename `InitialBlob` to `Lettermark`
* Update utils.test.ts
* Address feedback
* Handle long emails
* Update Cypress test for sentence case title
* insights buttons padding right fix
* add icon column
* fix all types
* fix select icons
* improve display and empty states
* searching for a number gives a direct result
* more debouncing time to throttle typing in the searchfield
* 2 columns > 960px, 3 columns > 1580px
* more height for card view
* split options column
* add person icon
* added profile picture
* fix column sort
* add min-width to funnels to make them readable on tiny dashboards
* add "trends" as default type
* stop screaming
* fix api call
* Rename groups => taxonomicGroups
Avoids confusion with group analytics down the line
* Rename groupTypes => taxonomicGroupTypes
This avoids confusion with groups
* chore: fix typo in usePersonProperties
* refactor(property-select): introduce useSelectedPropertiesContext
This is largely just me copying from
https://react-hook-form.com/api/useformcontext but the intent is to
remove the requirement for introducing a Provider in simple cases.
I could I suppose use react-hook-form for some of this, but I'm using it
as a little bit of a learning exercise as well.
* feat(correlation): add exclude property button next to correlations
This is quick and dirty and still uses the include logic. I'll follow up
with something to make this into a specific exclude of properties, and
make it sticky.
* chore(correlation): switch to exclude for property correlation
* fix lint
* Fix serialization to localstorage
* once more
* refactor(correlation): update popup to use kea logic
This commit creates a new kea logic that is intended to be the logic for
the PropertyNamesSelect component. This commit however only implements
the popup aspect of the component as a logic, with the intention that
the search implementation and selection logic will be handled in a
follow-up commit.
Note that this implementation doesn't actually currently work and I'm
still debugging what is wrong.
* chore(correlation): remove manual typing from kea logic
* refactor(property-selection): use concise action definitions
This makes the logic more consistent with others in the codebase. As
mentioned in the docs:
https://keajs.org/docs/guide/concepts#actions
* refactor(property-select): move ref prop reference outside of logic
The logic shouldn't be referencing anything relevant to `React` (or
anything else specific to a particular view implementation)
* chore(property-select): fix typing issues
* chore(property-select): make reducers a little neater
* refactor(property-select): move logic to separate file
This is to highlight that we should not have any React dependencies in
the logic. We still encapsulate the React specifics as the `usePopup`
hook.
* chore(property-select): make listeners functional
* wip: move selection into property names select logic as well
* refactor(property-select): complete select logic migration
This gets the tests passing again with logics!
* refactor(property-select): remove usePersonProperties
* fix typing
* remove unused import
* refactor: remove custom hooks and context
* wip
* add excludeProperty action, isSelect value
* chore: get storybook funnel working again
* refactor: move property search into logic
* refactor: rename popup actions/values/selectors/listeners
* chore: fix typing
* refactor: use kea-localstorage to persist excluded property names
* rename isSelected funnel logic selector to isPropertyExcluded
* chore: simplify storybook for `PropertyNamesSelect`
* avoid specifying key on propertynamesselect
* ensure excludeProperty triggers refresh
* button with a B
* use values in loadpropertycorrelations
* remove localstorage, fix action call on refresh
* chore: rename PropertyNamesSelectLogic to propertyNamesSelectLogic
* test(correlations): add tests for property exclusions
* chore: fix load correlations on loadResultsSuccess
* add initial select logic tests
* rename logic filename to lower
* feat: remove exclude properties select box
I'm removing this as we have the "Exclude Property" button which should
give us what we want for now wrt excluding properties to reveal more
relevant correlations past the first few ones.
* restrict changes to just the Exclude property button
* Revert "restrict changes to just the Exclude property button"
This reverts commit cd35674489.
* Revert "feat: remove exclude properties select box"
This reverts commit 5b2e6202fb.
Co-authored-by: Neil Kakkar <neilkakkar@gmail.com>
* chore: fix typo in usePersonProperties
* refactor(property-select): introduce useSelectedPropertiesContext
This is largely just me copying from
https://react-hook-form.com/api/useformcontext but the intent is to
remove the requirement for introducing a Provider in simple cases.
I could I suppose use react-hook-form for some of this, but I'm using it
as a little bit of a learning exercise as well.
* feat(correlation): add exclude property button next to correlations
This is quick and dirty and still uses the include logic. I'll follow up
with something to make this into a specific exclude of properties, and
make it sticky.
* chore(correlation): switch to exclude for property correlation
* fix lint
* Fix serialization to localstorage
* once more
* refactor(correlation): update popup to use kea logic
This commit creates a new kea logic that is intended to be the logic for
the PropertyNamesSelect component. This commit however only implements
the popup aspect of the component as a logic, with the intention that
the search implementation and selection logic will be handled in a
follow-up commit.
Note that this implementation doesn't actually currently work and I'm
still debugging what is wrong.
* chore(correlation): remove manual typing from kea logic
* refactor(property-selection): use concise action definitions
This makes the logic more consistent with others in the codebase. As
mentioned in the docs:
https://keajs.org/docs/guide/concepts#actions
* refactor(property-select): move ref prop reference outside of logic
The logic shouldn't be referencing anything relevant to `React` (or
anything else specific to a particular view implementation)
* chore(property-select): fix typing issues
* chore(property-select): make reducers a little neater
* refactor(property-select): move logic to separate file
This is to highlight that we should not have any React dependencies in
the logic. We still encapsulate the React specifics as the `usePopup`
hook.
* chore(property-select): make listeners functional
* wip: move selection into property names select logic as well
* refactor(property-select): complete select logic migration
This gets the tests passing again with logics!
* refactor(property-select): remove usePersonProperties
* fix typing
* remove unused import
* refactor: remove custom hooks and context
* wip
* add excludeProperty action, isSelect value
* chore: get storybook funnel working again
* refactor: move property search into logic
* refactor: rename popup actions/values/selectors/listeners
* chore: fix typing
* refactor: use kea-localstorage to persist excluded property names
* rename isSelected funnel logic selector to isPropertyExcluded
* chore: simplify storybook for `PropertyNamesSelect`
* avoid specifying key on propertynamesselect
* ensure excludeProperty triggers refresh
* button with a B
* use values in loadpropertycorrelations
* remove localstorage, fix action call on refresh
* chore: rename PropertyNamesSelectLogic to propertyNamesSelectLogic
* test(correlations): add tests for property exclusions
* chore: fix load correlations on loadResultsSuccess
* add initial select logic tests
* rename logic filename to lower
* feat: remove exclude properties select box
I'm removing this as we have the "Exclude Property" button which should
give us what we want for now wrt excluding properties to reveal more
relevant correlations past the first few ones.
* restrict changes to just the Exclude property button
Co-authored-by: Neil Kakkar <neilkakkar@gmail.com>
* Add base header with logo, search, account icon, and announcement
* Rearrange code, add logic, and add announcement X button
* Add help button to top bar and create a story
* Make the top bar logo a link to posthog.com
* Only display help button caret in new top bar
* Fix help button position a bit
* remove "view" button on dashboard
* prevent insight card views from opening in a new window
* create a storybook for all icons
* add funnel icons and improve new insight menu
* remove debug
* add insights sessions icon
* link without a link is a button
* fix icons in select box
* fix router redirect
* remove dependence on user var
* split scenes and sceneTypes out of sceneLogic
* rename LoadedScene type to SceneExport
* export SceneExport from most scenes
* use exported scene objects, warn if not exported
* fix type import bugs
* remove dashboard
* keep all loaded scene logics in memory
* fix sorting bugs
* support scenes with params, make it work with dashboards
* fetch result from dashboard if mounted
* fix mutations
* add lastTouch
* refactor scene parameters to include searchParams and hashParams
* add insights scene to scene router
* add insight router scene to scene router
* fix cohort back/forward bug
* this works
* bring back delayed loading of scenes
* set insight from dashboard also in afterMount
* split events, actions, event stats and properties stats into their own scenes
* refactor to options object for setInsight
* override filters
* clean filters for comparison
* fix cohort bug
* get a better feature flag
* make turbo mode faster by making non-turbo-mode slower
* less noise in failed tests
* fix tests
* flyby: add jest tests pycharm launcher
* clean up scenes
* add test for loading from dashboardLogic
* fix bug
* split test init code into two
* have the same data in the context and in the api
* add basic tests for sceneLogic
* run the latest and greatest
* fix menu highlight
* implement screaming snake
* only show scenes with logics
* backend fixes and test
* add breakdown value to pie chart
* adjust test
* fix faulty test
* fill param
* fix formula tests
* more date passing
* more cleanup
* all tests working
* make test data explicit and add better checks
* support both ee and postgres
* length checks
* rename sessionRecording to session-recording
* logic for new player
* move rrweb-player into repo
* remove awkward wrapper and fix time not updating bug
* chunk load meta timing
* fix duration setting bug
* update icons and styling for controller
* styling icons
* slider styling
* ugly slider
* remove consoles
* sonarqube
* typescript
* typescript
* implement working seekbar
* fix time mismatches
* remove hardcode
* Fix icon from merge
* move report usage back to sessionsplaylogic
* refactor to seekbar
* implement real time seek time
* play on paused fixed
* bug with play pause
* fix buffer play state bug
* add comments back
* remove consoles and revert limit
* remove empty file
* address feedback
* fix scrubbing issue and onclick lag
* remove console
Co-authored-by: Rick Marron <rcmarron@gmail.com>
* Remove papercups widget
* remove unused import
* helper button in the nav bar
* post-merge fix
* extra fixes & improvements
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* Update InsightsNav.tsx
Tweaked lifecycle tooltip copy
* Update InsightsNav.tsx
Pushed last two words to new line to fix prettier issue.
* prettier format InsightsNav.tsx
Co-authored-by: Harry Waye <harry@microwayes.net>
* Only run `test_migrations_are_null` on new migrations
* Rename `DashboardItem` to `SavedInsight`
* Add explanation to `test_migrations_are_null` script
* Rename `test_dashboard` to `test_saved_insight_model`
* Ditch `DashboardItem{ViewSet,Serializer}` altogether
* Fix refresh via `InsightSerializer`
* "SavedInsight" to just "Insight"
* Update file names
* Update insight.py
* Update dashboardLogic.test.ts
* Update migration
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* initial refactoring
* popup UI
* refactor path cleaning logic
* add nullable
* all ui working
* fix migration
* use regex replacement from team object
* add flag
* add switch
* fix type
* fix type
* UI update
* restore removed arg
* add local path cleaning filters to api
* add test for local path filters
* working new UI
* reduced repeated code
* fix numbering
* minor refactoring
* update copy
* add under advanced features
* address comments, minor cleanup
Co-authored-by: Neil Kakkar <neilkakkar@gmail.com>
* saved insights url sync WIP
* sync filters with the url
* improve trend and date filters
* convert utils test to typescript
* create simple object shallow diff function
* only persist the difference from the default filters in the url
* add tests and simplify operations
* improve tests
* better load checking
* Closes 6541 add step to empty funnel
* added comments back
* hide delete button when single step exists
* use values directly in first step
* Update frontend/src/scenes/insights/ActionFilter/ActionFilterRow/ActionFilterRow.tsx
Co-authored-by: Neil Kakkar <neilkakkar@gmail.com>
I haven't made any attept here to resolve anything here, just to
explicitly acknowledge that these are issues that eslint has highlighted
and we should ignore, for the sake of easily picking up new issues. If
these are truely problematic, then I am assuming they should have been
picked up as bugs with the system.
This doesn't stop someone from coming in and reviewing the code in this
pr retrospectively.
* adds a search box to the toolbar featureflag list
* test flakes because react is re-rendering between the get and the click. add an assertion to try and slow cypress down to avoid this
* move filtering toolbar feature flags to a Set and out of CSS
* support initKeaTestLogic() with no args
* fix query-selector-all-deep jest bug
* add simple test case for feature flags logic
* combine selectors
* with more understanding of Fuse
* add simple test for flag filtering
Co-authored-by: Marius Andra <marius.andra@gmail.com>
* refactor(taxonomic-filter): add api mock functions
* chore: remove makeApi from storybook preview.js
* feat(correlation): add multiselect for property names
Previously we had a simple text input box that was splitting the input
to get a list of property names. This doesn't give the greatest user
experience.
Now we have a simple select box that includes:
1. search filtering for options
2. multiselecting options
3. a select $all, although this is pretty poorly implemented at the
moment, for instance you can select $all, at the same time as
selecting a subset of properties.
* add a little commentary around PropertyNamesSelect
* add deps to useEffect
* ignore return type eslint issues
* just use console.log instead of actions
* remove unused import
* chore: add error condition
* chore(correlation): update styling of property select
This puts it more in line with
https://www.figma.com/file/gQBj9YnNgD8YW4nBwCVLZf/PostHog-App?node-id=4200%3A30715
* Add no search results message
* input focus border
* fix type
* use onBlur
* make checkbox checked colour change
* make query bold in no results message
* add clear
* Implement search highlighting
* fix typing
* add regex split comment
* if no property names selected, default to $all
* typo
* Add test for selection component
* Add test highlighting onChange lag and clicking outside
* click out side should depend on hide
* make sure onChange triggered on clear or select all
* wip implementation of grey pills for breakdown properties
* cohort pills need coercing differently to line up with the close icon
* which allows removal of some markup
* much better layout and matching behaviour
* resolve type errors in trends tab
* resolve type errors on funnels tab
* remove console.logs
* Closes #1688 Allow dashboards to be duplicated in the backend
* Allow dashboards to be duplicated in the frontend
* Remove unused method
* Filter existing dashboard along with team id
* Add title attributes to actions in dashboard listing page
* add doNotLoad to insights on dashboards that come without results
* load dashboard items without results in sequence
* fix test
* don't use the visibility map if it's empty (no keys)
* Update frontend/src/scenes/dashboard/dashboardLogic.tsx
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* work with both dashboards and saved insight card views
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* Optimize `dashboardsModel` a tiny bit
* Fix typing
* Make sorting more reliable
* Use more correct `dashboardModel` selectors, with better names
* Fix value name
* Fix and simplify `nextDashboard`
* Rename selectors
* reload insights on dashboards, clean up utils
* refresh items
* fix test
* test reloading with a fixed list
* show "0 out of N" where N is 1 or all
* add comment re: custom reload logic
* only pass object id
* add loadresults
* add tests that validate loadResults exists on insight logics for dashboard item refresh
* add name to payload
* remove refresh fix
* paginate session recording events api
* code quality
* don't rerender replayer every time events get loaded
* refactor session recordings, make it backwards compatible, add bunch of tests
* move limit and offset to after decompress
* change limit
* add caching of recording
* add duration
* fix a few tests
* fix api tests
* add partial chunk test
* fix default limit test
* code quality
* typing
* fix backend tests
* mypy fixes and signature
* remove circular dependency
* mypy and sessionsplaylogic tests
* fix migration
* make single migration
* revert mypy typing
* remove require react resolve
* fix loading state to persist across multi chunks and add test'
* cleanup
* duration to ms
* fix duration tests
* remove require react resolve
* fix test
* bump rrweb player
* change cache behavior plus more
* fix frontend tests and make duration calculation more robust
* fix timestamp in ms bug in tests
* fix duration 0 test
* fix compatibility with rrweb-player
* update lockfile
* yarn unlink
* resolve kea-test-utils changes
* another one
* remove caching for now (leave as todo) and change limit to 100
* remove unused prop from the eventTableLogic
* WIP commit to allow task switching
* tidies up feature flag and updates table config button to latest design
* make tablewidth calculation explicit but leave it in the wrong place
* don't allow undefined as a possible logic to test for
* give a better name to the thing that shows and hides the modal
* remove unused input to table config
* better mobile view for events table column choosing
* fix a leftover setstate to setmodalvisible
* moved table config logic out of events table logic
* push more from events table into tableconfig
* push more from events table into table config
* fix things these changes broke
* keep pushing things down
* keep pushing things down
* rename refactoring
* stores and reads table column config to and from the URL
defaults to user columns when they are stored but gives no mechanism to store new columns
* allow saving column config to the user
* Add advice on why you would save visible columns
* be less vague with the name of the tableconfig component
* Revert "be less vague with the name of the tableconfig component"
This reverts commit fb3fac2ce271fc737688ca19eae5c27d6b902719.
* update the visible columns when saving to the user
* from interface to props
* only need to get a reference to connected logics after mount, not to call initkea on them
* remove kea listener anti=pattern
* make showing and hiding modal more kea idiomatic, and remove use of ability to store column selection on the server *without removing that functionality*
* safer update of selected columns from URL
* don't render a column when the tableconfig isn't enabled
* improves styling of the table config list
* change ok text of table config model
* even closer to the design
* adds a tooltip to the locked columns in the table config modal
* scope blue text to the column configurator modal
* deprcate the events_column_config column
* less likely for long table rows using propertykey to display oddly
* move column configurator state into the tableconfig logic
* fix test that was written as a describe and didn't fail the suite
* move two setup calls into a useEffect block to avoid thinking about order of setup
* split the tableconfig to simplify its jobs by context and remove setState from the column configurator
* tableconfig no longer needs props
* fix import
Co-authored-by: Marius Andra <marius.andra@gmail.com>
* refetch insight if id changes
* current project also ingested event
* upgrade kea and loaders
* do not load if sceneLogic is not mounted
* add test for url sync
* don't load results from the API if none in the insight
* avoid extra queries
* avoid loading the results twice
* update kea-loaders to get payload in async actions
* have apiURL without the `/`
* link to flag in posthog
* add bold external link icon
* add external link icon to the end of the row
* import from urls.ts
* wrap feature flag key and description in a typography text block so that it copes with very long values better
* wrap feature flag key and description in a typography text block so that it copes with very long values better
* add manual word-breaks in long feature flag keys
* just a bit less
Co-authored-by: Marius Andra <marius.andra@gmail.com>
* wip
* moves processing of personheaders out of the react component and into a logic
* generates personheader key and persondisplay when props change
* change personheader so the generated HTML better matches previous state for anonymous people
* remove console logging that shouldn't have been included
* add props to the name of the props
* add props to the name of the props
* don't guard against having no props
* hash the person header key
* inline two methods
* instrument changes
* don't send more info if filters don't change
* use selectors with previousState to get the last filters
* return previous state and track deeper changes with entities
* typos
* remove unneeded
* move function
* tests
* add logic test
Co-authored-by: Marius Andra <marius.andra@gmail.com>
* Add `slug` fields to `Organization` and `Team`
* Expose slugs to user
* Add slug autogeneration for new orgs/projects
* Improve slug UX
* Remove slug from settings
* Update org/team instance creation plus add tests
* Only require project slug to be unique for org, not globally
* Fix `get_prep_value`
* Test organization slugification
* Deslugify `Team`
* Clean up changes
* Update test_user.py
* Apply suggestions from code review
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* Random 4 letter suffixes for the win
* Fix import
* Ignore `test_migrations_are_null`
* Fix `RunSQL` query being empty
* Fix `generate_random_short_suffix` testing
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* chore(correlation): funnel story with correlation events and properties
This commit:
1. adds msw so we can easily mock the API requests
2. starts msw on storybook page load
3. adds the `mockServiceWorker.js` to storybook public folder so it can
be loaded by the frontend
4. adds a Funnel story that defines the funnel and correlation
responses
Note that we also define types for requests and responses. These could
be shared with the actual application code, so we can explicitly couple
the application changes to updating storybooks, i.e. to help avoid
stories going stale.
The requests and responses are quite basic, but they are sufficient to
be able to easily see and make changes. It has a requirement that it
should be easy for anyone else who comes to the code to easily parse and
be able to make updates. We don't want these to be rotten stories but
*the place* that people go to first when making their changes.
Having simple handwritten request/responses also introduces the
stability needed to, for example, use regression tests. Changes are
deliberate.
* refactor(storybook): move funnel stories to their own file
This also does quite a bit of cleaning up of the storybook and funnel
story code. Trying to come down on an acceptable way to manage the
sample data.
* dev(storybook): specify public dir when building storybook
I'm hoping this means that chromatic will function properly 🙏
* chore: add back the withApi decorator
* setup msw first
* dev(storybook): Make posthogjs work in chromatic
* dont use as cast for response types
* make hot module reload work
* feat(correlation): add warning when funnel skewed
This actual just uses the funnel numbers rather than the correlation
endpoint as this gives us a little more freedom to, for instance, add
details of why we think there might be inaccurate results, without
having to update the definition in the backend as well.
And alternative option might be to introduce an error code along with a
human readable message that includes the details of skew reasoning,
returned from the API, but I think this gives us what we want.
* Create FunnelCorrelation.tsx, add useMemo
* don't add a logic for funnel correlation
I tried to add one, but got caught in typing issues. I'm not sure adding
isSkewed warrants one tbh
* Move isSkewed to funnelLogic
* allow for horizontal scrolling on paths viz
* wip
* add axis lines
* move more paths util functions over
* do not shorten urls without parameters
* show hidden path cards on link hover
* convert file to typescript
* small fixes and prettier
* es lint fixes
* more typing fixes
* typing
* final fix
* fix bug where session recording is split by new distinct_id
* fix query bug to allow distinct_id clause
* Basic query filtering by events on clickhouse
* add duration filtering
* Add multiple action/event filters
* Move to using person_id + optimize query
* add postgres support and querying on person_id
* move back to distinct_ids
* remove lots of duplicated logic
* Add pagination to backend
* Pagination
* Add duration and date filter
* Use person header is list view
* type fixes
* bug fix
* bugs and tests
* test fixes
* style filters
* logic tests
* Add another test for team leakage
* fix flaky test
* UX changes
* UX tweaks
* auto focus filter box on open
* add test for recording viewed change
* move duration filter to using a tested logic
* move to clsx
* add debounce breakpoint
* Small style change
* fix debounce
* fix breakpoint
* move test to defaultAPIMocks (merging changes)
* react to url change
* kea test "toNotHaveDispatchedActions"
* fix dashboard logic test
* add props and key to insight logic (has no effect)
* inform about is_sample's uniqueness
* use common InsightLogicProps
* persist state via BindLogic and shared insightProps
* persist hashParams
* remove cached Urls
* upgrade new to saved logic
* upgrade typegen
* patch metadata logic
* always show title if saved insights active
* fix negative bug
* fix interval filter
* go to view mode after saving
* full reload when going from dashboard to insight
* use clean filter
* createInsight is no longer used
* fix tests
* fix setAllFilters
* clean retention table duplicate code, fix test
* scene has its own key
* unify insightLogicProps key logic
* consolidate logic fetching
* fix test
* fix reloads
* clears the scene funnel
* move setInsight to reducer
* stronger clicks on menu items
* rename setAllFilters to setFilters, add tests to make sure insight logics use it to sync filters
* fix retention type filter key
* easier printActions
* add failing tests
* unified and broken cleanFilters
* refactor funnel filter cleaning, fix initial event setting,
* fix type
* revert setFilters override, fix filter function
* untangle FunnelStepReference
* move setFilters away from trendsLogic
* fix various type errors
* set filteres inside insightLogic
* set funnel state via insightLogic
* more random changes
* trends working with results in insightLogic
* remove setCachedResults
* move loadResults into insightLogic
* fix trendlogic test
* fetch insight if no fetched data
* fix metrics chart
* fix insight update logic
* consolidate tests
* only load results if needed
* various fixes
* remove wait
* remove activeView
* merge results after updating filters
* don't switch to view mode after saving insight
* don't override results
* misc undefined fixes
* move props down
* cleaner code
* consolidate API mocks
* fix funnel test
* persist some filters when changing tabs
* connect last badly connected funnelLogic
* fetch results if none returned with insight
* show only the right results
* fix paths selector
* match filters and results
* cleanFilters resets fields if switching tabs
* change type insight display if changing tabs
* don't show data if loaded a different type of insight, reload if switching to funnels
* clean filters for history view
* fix trends visibility map
* reset funnel type to VIZ
* fix funnel min height issue on scene
* kea test "toNotHaveDispatchedActions"
* fix dashboard logic test
* add props and key to insight logic (has no effect)
* inform about is_sample's uniqueness
* use common InsightLogicProps
* persist state via BindLogic and shared insightProps
* persist hashParams
* remove cached Urls
* upgrade new to saved logic
* upgrade typegen
* patch metadata logic
* always show title if saved insights active
* fix negative bug
* fix interval filter
* go to view mode after saving
* full reload when going from dashboard to insight
* use clean filter
* createInsight is no longer used
* fix tests
* fix setAllFilters
* clean retention table duplicate code, fix test
* scene has its own key
* unify insightLogicProps key logic
* consolidate logic fetching
* fix test
* fix reloads
* clears the scene funnel
* move setInsight to reducer
* stronger clicks on menu items
* remove wait
* clarify testcases
* node highlighting for path start and end
* rename for clarity
* check for funnel paths between steps
* clean up renderPaths function
* move tooltip placement
* forgot to commit util file
* adds a detection method that isn't flummoxed by the shadow dom
* guard against not having a result for path from older browsers
* guard against the event target returned by composePath not being an html element
* composePath is the standard, check it first
* paths related UI fixes
* add tooltip for long urls
* more fixes
* show cards on hover for smaller paths
* styling and font fixes
* increase font weight
* clean up code
* highlight start and end paths on hover
* undo path start end highlight
* add logic for highlighting all sources
* add centering and move constant
* restore number to normal
Co-authored-by: eric <eeoneric@gmail.com>
* make sure funnel and path dates are always aligned and add api handling for funnel filter persons
* use post instead of GET for paths
* parse label
* change type
* use post in test
* fix types
* test both get and post
* refactor insight metadata into separate reusable components
* create insightMetdataLogic
* added editable states to fields
* description add suffix to input
* fix functional bugs with input values
* remove consoles
* testing for insightMetadataLogic
* revert Insight
* revert Insight
* make editable in view mode
* test for update path
* adds Sentry to the window object to facilitate logging for PostHog/posthog-js#290
* inject xhr error behaviour rather than injecting Sentry - depends on PostHog/posthog-js#296
* Add expected type to onXHRError function
* more safely add Sentry to posthog config
* update setting on xhr error config to correct exported config type
* enrich sentry error after testing
* basic modal for dropoff and completed paths
* use right link for completed calculation
* fix calculations
* update Modal text
* cleanup
* rerun prettier
* Add project-nested version of all project-dependent endpoints
* Fix hook `perform_create`
* Adjust `plugin-configs` to adhere to style of other endpoints
* restore progress
* working connection no UI visual
* working for events
* edit endpoint to start point
* working with close button
* funnel to path work (no dropoff yet)
* run prettier
* make suggested adjustmenst
* Refactor `AvailableFeature` from strings to an enum everywhere
* Fix circular dependency and type
* Add "Per-project access" feature flag, premium feature, and organization switch
* Rename `OrganizationMembershipLevel` to `OrganizationAccessLevel`
* Create `ExplicitTeamMembership` model
* Show whether projects are restricted in the project switcher
* Update organizations API code
* Fix migrations
* Move organization tests that require EE to `ee`
* Revert `OrganizationMembershipLevel` rename
* Fix organization tests
* Update migration
* Fix schema and add Members to Project Settings
* Build out test memberships API with security tests
* Update `TeamMembers` and `teamMembersLogic`
* Move "Per-project access" description to tooltip
* Add moar tests
* Fix Project Members list logic
* Add additional membership checks
* Update migrations
* Fix typing
* Adjust explicit team memberships API similarly
* Fix typo
* Unify `ExplicitTeamMemberSerializer`
* Remove old changes to `membersLogic` usage
* Use `effective_membership_level` on `TeamBasicSerializer`
* Clean up organization update tests
* Explicitly disallow enabling per-project access for free
* Fix circular import
* Remove `id` from `UserSerializer`
* Fix typing
* Try to fix import
* Fix fatal typing
* Add more tests
* Update permissioning.ts
* Add clarifying comment to migration
* Fix import
* Revert `TopNavigation` changes
* Restore `TopNavigation` changes
This reverts commit 05fd9e4ed6.
* Try to add a story for `TopNavigation`
* minor clarifications
* Revert `TopNavigation` changes
* Restore `TopNavigation` changes
* Make new access control entirely project-based
* Update migrations
* Add `project_based_permissioning` to `TeamBasicSerializer`
* Update test_team.py
* Fix `isRestricted` in `ProjectRow`
* Disable project creation for non-admins
* Make project icon in top nav itself dynamic as well
* Fix story
* Delete 0169_project_based_permissioning.py
* Apply suggestions from code review
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* Update frontend/src/layout/navigation/TopNavigation.tsx
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* Address feedback
* Project-based permissioning full data access restrictions (#6068)
* Fix Access Control restriction tooltip
* Add `TeamMemberAccessPermission` and use it in viewsets
* Add `ErrorProjectUnavailable` scene
* Ignore mypy
* Update MainNavigation.tsx
* Update explicit_team_member.py
* Fix frontend detection of unavailable project
* Fix some tests and edge cases
* Fix basic permissions
* Add more tests
* Simplify `ExplicitTeamMemberViewSet` permissions
* Improve restrictions and add moar tests
* Update frontend
* Fix a couple of things
* Fix import
* Fix some edge cases
* Fix typing errors
* Use hedgehog instead of moth
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* Address feedback
* Add proper permissioning to dashboard views
* Update ee/api/test/test_dashboard.py
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* Run prettier
* Remove debug code
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* Move Sessions tab -> Session Recording (behind feature flag)
Note: the /scenes/sessionRecordings folder is a copy of /scenes/sessions. Planning to remove sessions from the new SessionRecordings folder over the next coupld of commits
* Add very basic session recording page
* Add session recordings to persons page and session recs can play
* add endpoints for clickhouse
* fix ordering in existing tests
* add basic test to pg and clickhouse
* small bug fix
* type fix
* add test for data leaking between teams
* fix navigation bugs
* Fix name of logic
* Add basic logic tests
* fix tests
* fix laoding state bug
* revert changes to existing session queries
* move to proper queries for session recordings
* type fixes
* rename feature flag
* type fix
* Fix capitalization
* remove showSessions and clean up ifs
* Style changes and refactor SessionPlayerDrawer
* bug fix
* move to using query params
* remove type from persons logic
* Move sessionRecordingTableLogic key to distinctId
* rename setSessionRecordingId to openSessionPlayer
* improve tests
* Cleanup from review
* move team and limit to parameters
* new path tab querybuilder
* prettier
* clean up
* wip
* format querybuidler
* prepare path type filter component
* dropdown
* formatted popup
* change button for endpoints
* styling the type buttons
* logic for all left side querybuilder components
* exclusion UI and logic
* improve exclusion handling, ensure API calls are made
* API fixes for event types
* fix popup on close issue with exclusions
* hide overflow on buttons
* all ui working
* more formatting adjustments
* type fixes
* leave response ambiguous
* feature flagging and adjust styles
* Add Step limit option
* add tooltip to wildcards
* rewrite tooltip for exclusions
* make Events toggle responsive
* fix types
* responsive at xl instead of lg for no overlaps
* Proof of concept of connecting Funnel to Paths
* protecc wip
* Connect Funnels to Paths
* remove funnel button for now
* remove unused
Co-authored-by: eric <eeoneric@gmail.com>
Co-authored-by: Neil Kakkar <neilkakkar@gmail.com>
* begins converting eventsTableLogic from js to ts and adding logic tests
still *very much* a work in progress
* more tests and types
* more tests and types (add structure to help track that only reducers are covered by tests so far)
* more tests and types
* add injectable hisotry to the logic test runner and test urlToAction
* kea router is cleverer and more accessible than I realised
* add tests and implementation to read and store event filter from/to the URL
* slightly clearer error output when toDispatchActions times out waiting
* even more slightly clearer error output when toDispatchActions times out waiting
* even more slightly clearer error output when toDispatchActions times out waiting
* no TS errors in the eventsTableLogic and its tests
* very few ts errors
* eventsTableLogic converted to ts
* change eventtype interface to ensure eventToName in utils works
* defaulting to an array containing an empty object for properties seems to break a cypress test for person
* no point having a test for a case that is so practically impossible
* declaring properties on EventType as Record<string, unknown> cascaded dealing with the unknown into files that are out of scope of this PR
* switch cypress test to check for equally valid empty properties value of [{}]
* removes unused action property from EventType
* removes unnecessary cast
* make the properties type even more explicit
* make the properties type even more explicit
* Revert "make the properties type even more explicit"
This reverts commit 7c4f5aed9a.
* Revert "make the properties type even more explicit"
This reverts commit 26580e62d7.
* resolve the bug that meant an empty array in the URL for properties stopped the page loading
* rename a short variable
* allow types to propogate in eventstable logic
* allow types to propogate in eventstable logic
* allow highlighted events to be cleared by the action of the page, no need to clear them on poll success
* update cypress test for new expected default properties value
* moves dayjs extension setup into the initkea block
* use an existing function
Co-authored-by: Paul D'Ambra <paul@posthog.com>
Co-authored-by: Marius Andra <marius.andra@gmail.com>
* add custom_name to model
* added testing and functionality
* add custom_name to entity model
* get new entity info working on legends, tables, and other contexts
* fix test and add custom name to funnel
* fix more tests
* finish up funnel edge cases
* remaining broken tests
* update action in logic test
* remove consoles
* autofocus
* fix a few bugs
* split trends types into their own file
* add test to make sure trendsLogic gets the right cached items
* not needed unless we're on a dashboard
* this would be false most of the time
* update filters directly when you set cached results
* move costly operation one level up, as get_result() is called many times
* reload dashboard item model if cache was busted
* verify more parts of trendsLogic
* refresh last_refresh from API
* remove debugger
* fix TS errors
* refactor visibilityMap
* move toggleLifecycle to reducer and fix mutation bug
* add a warning for how ActionsLineGraph uses this prop
* add fromDashboardId because dashboardId is used to control the key
* create combined funnel api response type
* compact printActions
* set filters on cache change
* test result and cached item loading works as intended
* remove print
* rename DashboardItemLogicProps -> SharedInsightLogicProps
* cleaner indexedResults
Co-authored-by: Alex Kim <alexgkim205@gmail.com>
* Cleanup Insights.tsx (#6037)
* refactors a bunch of stuff out of Insights.tsx into a separate component
* use view map
* make funnels full width (#6039)
* Add CTA empty state to saved insights page (#6042)
* add cta for empty saved insights table
* refactor
* Add descriptive headers to Saved Insights View/Edit/Create modes (#6045)
* add header to insight graphs and styling
* remove console
* Use radio instead of buttons (#6048)
* Split person asynchronously (#5992)
* docs(events): add documentation on index on posthog_event.distinct_id (#5973)
* use displaymaps in saved insights (#6047)
* add loading state and fix person modal not showing bug
Co-authored-by: Tim Glaser <tim@posthog.com>
Co-authored-by: Harry Waye <harry@scalexp.com>
* Export 10k lines in CSV, allow limit= query param
* this should be min
* fix test var
* add limit support to postgres, make tests to check all cases
* update tooltip to say 10k events
* fix 10k event text again
* reload 4 dashboard items at a time
* reload all items WIP
* delete dead code
* make visibilityMap default to visible
* fix insight logic props
* bugfix
* pass cachedResults do element
* type for insight logic props
* type and syntax cleanup
* set cached items if present
* fix more type inconsistencies
* fix undefined bug
* simpler refresh checking
* cleanup
* clean results exception
* remove escape hatch
* Revert "make visibilityMap default to visible"
This reverts commit 5e7e1befd5.
* create jest truth function
* basic dashboard logic test
* basic reload test
* add "toDispatchActionsInAnyOrder"
* improve dashboard logic test with toDispatchActionsInAnyOrder
* fix types
* Refactor `AvailableFeature` from strings to an enum everywhere
* Fix circular dependency and type
* Add "Per-project access" feature flag, premium feature, and organization switch
* Rename `OrganizationMembershipLevel` to `OrganizationAccessLevel`
* Create `ExplicitTeamMembership` model
* Show whether projects are restricted in the project switcher
* Update organizations API code
* Fix migrations
* Move organization tests that require EE to `ee`
* Revert `OrganizationMembershipLevel` rename
* Fix organization tests
* Update migration
* Fix schema and add Members to Project Settings
* Build out test memberships API with security tests
* Update `TeamMembers` and `teamMembersLogic`
* Move "Per-project access" description to tooltip
* Add moar tests
* Fix Project Members list logic
* Add additional membership checks
* Update migrations
* Fix typing
* Adjust explicit team memberships API similarly
* Fix typo
* Unify `ExplicitTeamMemberSerializer`
* Remove old changes to `membersLogic` usage
* Use `effective_membership_level` on `TeamBasicSerializer`
* Clean up organization update tests
* Explicitly disallow enabling per-project access for free
* Fix circular import
* Remove `id` from `UserSerializer`
* Fix typing
* Try to fix import
* Fix fatal typing
* Add more tests
* Update permissioning.ts
* Add clarifying comment to migration
* Fix import
* Revert `TopNavigation` changes
* Add project member addition button+modal
* minor clarifications
* Revert `TopNavigation` changes
* Make new access control entirely project-based
* Update migrations
* Add `project_based_permissioning` to `TeamBasicSerializer`
* Update test_team.py
* Fix Access Control restriction tooltip
* minor improvements
* fix frontend typing
* Fix frontend typing a bit more
* adjust copy & UI a bit
* Address feedback on field comment
* "Privacy settings" to "Access Control"
* Make `FusedTeamMemberType` comment clearer
* Remove useless `export`
* Delete 0169_project_based_permissioning.py
* Clean some code up a bit
* Project-based permissioning member removal (#6067)
* Fix `teamMembersLogic` loaders
* Allow explicit project members to leave
* Add member removal/leaving button to Members with Project Access
* Restore error message
* Fix error message
* Correct things
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* barebones implementation for #3899
Wires up an unlabelled switch with existing functionality. Doesn't provide any persistence of the setting or user feedback for when data is loading. Doesn't highlight new rows
* align content in table config to baseline
* make auto-loading text clickable without resolving page structure
* lift exporting and auto-loading out of table content and a pass through organising the page with grid layout
* note that the fixed filters won't change per logic instance
* never display the column configurator button. to be resolved by #1534
* simplify the labelled switch component
* highlight new rows when they're added to the table
* use styling from variables for labelled switch
* load new events into the table when the toggle is clicked so the human doesn't have to wait
* saves auto-load toggle to URL and loads it from there
* clearer name for temporary, fixed featured toggle
* use clsx for row classes in the EventsTable
* remove use of window in actionToUrl of events table logic
* add a test for unusual input to toParams while looking for the source of a bug
* don't allow input that stops events loading in the table
this is a workaround not a fix
* don't allow input that stops events loading in the table
this is a workaround not a fix
Co-authored-by: Paul D'Ambra <paul@posthog.com>
* reload 4 dashboard items at a time
* reload all items WIP
* delete dead code
* make visibilityMap default to visible
* fix insight logic props
* bugfix
* pass cachedResults do element
* type for insight logic props
* type and syntax cleanup
* set cached items if present
* fix more type inconsistencies
* fix undefined bug
* simpler refresh checking
* cleanup
* clean results exception
* remove escape hatch
* Revert "make visibilityMap default to visible"
This reverts commit 5e7e1befd5.
* fix TS error
* no separate time conversion bins
* make funnels horizontal
* move exclusion filter to horizontal tab
* barebones implementation of vertical breakdowns
* refactor bar graph stuff a bit
* add visibility toggle to table
* tie in table logic visibility map to bar display
* remove dummy data
* add table legend
* add graphs to table
* breakdown indices bug
* fix toggling
* fix regression tests and add bar interaction
* remove consoles
* edge cases with long steps and many breakdowns
* fixes from review
* hide behind FF
* actually hide behind FF, fix time conversion bug, and convert visibility map to hidden map
Co-authored-by: Marius Andra <marius.andra@gmail.com>
* mockup usable logic tests
* actually filter
* a little verbosity never hurt anyone
* await
* sync toDispatchActions and toMatchValues working
* get at least one test working
* should await this
* better action awaiting
* cleanup
* smarter logic test action matching
* cleanup
* delete snapshots
* fix titles
* remove .run(), add .then-magic
* cleanup
* more cleanup
* refactor into multiple files
* refactor into multiple files WIP
* finish refactor
* make nodejs compatible
* funnel logic test WIP
* delay and printActions
* fix label
* add more mocks
* only call action if it makes sense
* fix reload issue with funnels and actions
* explicitly connect to this logic
* listener and mount functions for kea-test-utils
* improve tests
* mock out scss files
* rename antd es/ to lib/ for compatibility in jest
* add breakdown test
* funnel test updates
* set pointer to now if running a block with expectLogic
* fix mock
* more mock
* ignore if breakpoint
* reset window history and posthog-js with logic tests
* one more breakpoint
* add test mode ecxeptions
* update kea
* improve funnel test
* merge, but break
* add safeguard
* safer props
* fix test bugs
* clarify window.crypto polyfill
* simplify api.mock
* simple throw if unmocked api
* use a global actionMap pointer, so we could query between logics
* use the global querying
* remove "Scene" hack
* fix type bug
* clarify some variables
* dropdown menu
* creation buttons setup
* temp save
* editing name/description mode
* clean up
* fix bug
* new main nav button
* wording
* undo removal
* fix test
* fix logic flow with new tab insight creation
* fix functionalities
* clean up props and fix toast
* prettier
* fix lint error
* try to fix annotations menu item test
* do not create new insight upon tab switch
* view and edit mode, final clean up, bug fixes
* clean up insights without the feature flag
* update insight only when it exists
* clean up and fix bugs
* prettier
* do not run create insight code on dashboards
* split out funnel apis and fix histogram paint order bug
* fix broken tests
* simplify some more
* make this fail if no steps returned
Co-authored-by: Marius Andra <marius.andra@gmail.com>
* very rough feature flags in the toolbar
* link to feature flag's posthog app url
* Update posthog-js to 1.13.0
* update sentry to fix TS error
* simplify type
* separately return original and overridden feature flags
* do not load properties that are not there, add one query for person get
* simpler variant setting
* add feature_flag_override column
* feature flag override in apis
* simplify v1 feature flag code
* /decide uses overridden flags from user
* toolbar fetch
* get more data from api for keys
* variants in toolbar
* z-index for select component
* fix flag state
* fix test errors
* nicer name for endpoint
* abstract feature flag overrides
* help mypy
* use feature flags in toolbar
* update feature flag toolbar button
* demo warning color demo
* update design
* override feature flags in the API
* improve types (thanks mypy!)
* remove unrelated code
* better comment
* fix test query count
* remove v2 in get_active_feature_flags_v2
* store `$feature/{key}` in properties
* Move feature flag overrides to their own model
* little bit of cleanup
* some type check + test cleanup
* respond to comments, add tests, add team permission checks
* add basic analytics
* move new endpoints
* Move to new endpoints + add "remove override" link
* add team to override model and simplify endpoints
* cleanup
* fix up instrumentation
* restrict a user to only their own overrides
* override query now works for all distinct ids
* typing fix
* fix tests
* update for new URL
* reload feature flags after change
* clean up UI
* sort flags by created date
* fix tests
* clean up
* update style and move logic to selectors
* clean up icons
* small ui changes
* Clean up
* remove defualt from override_value field
* first pass on new ui
* Move to new UI
* delete remnant migration from api work
* revert black formatting with bad config
* move button behind feature flag
* little bit of cleanup
* revert demo feature
* Make AnimatedCollapsible self-contained
* Remove unused styles
* Fix scroll bars
Co-authored-by: Marius Andra <marius.andra@gmail.com>
Co-authored-by: posthog-bot <posthog-bot@users.noreply.github.com>