* Refactor sceneLogic to TypeScript and add dynamic page title
* Add Cypress checks
* Run prettier
* Fix Cypress checks
* Improve camelCaseToTitle JSDoc
* Move "PostHog" to end of page title
* Use bullet
* Remove actions
* Rerun tests
* Fix new Events page after merge conflict
* Finish the local dev w/ proto setup
* WIP manage events view
* Add task, add interface etc
* Move everything to 'manage events' view
* Move all settings into single dropdown (can be reverted)
* Urls for tabs
* Fix migration
* Clickhouse and humanize volume
* Fix cypress test
* Fix sidebar cypress
* Fix cypress again
* Fix some small issues
* Address comments
* Corect naming
* Fix test'
Co-authored-by: James Greenhill <fuziontech@gmail.com>
* plugin progress
* blah
* add posthog config for plugins
* test gitignore
* new functionality for plugins
* support local plugin paths
* also ignore symlinks
* add positional argument
* fixes
* small fixes
* config polish
* config passed to posthog plugin
* ooooooops
* symlink fix
* cleanse dir before loading
* add cache to plugins
* pickle the goods
* unlink symlink
* pass full config
* unlink even if link points to nothing
* fix fix
* return none if value is empty
* plugin model
* plugins scene
* add config schema to plugins
* install plugins
* save descriptions
* show descriptions
* edit plugin
* save plugin config
* plugin modal
* uninstall plugins
* UX cleanup
* add "required" to plugin config
* open plugin modal after install
* split to subcomponents
* install custom plugins
* rework backend for model plugins
* Plugins on models
* simple reload pubsub
* fix apps not installed
* fix master/main issue
* fix reload command
* use the github api to get the default branch
* init plugins only if not running migrate/makemigrations
* store plugins zip archives in postgres
* tag plugins to specific versions
* save plugins in pluginConfig
* update pluginConfigs instead of adding new rows, remove from redux on uninstall
* remove debug
* run plugins from db by team
* reload when deleting
* remove debug
* smarter handling of dynamic plugins, support local plugins again
* improve typings, add some nicer warnings
* yarn lock file after merge
* squash migrations and add "locked" field to plugins
* error if folder not found in zip
* unregister plugins
* skip plugin init in test mode
* basic plugin test
* avoid mutating the same prop hash
* add pip tools to requirements.txt
* fix mypy, fix manage.py script error
* avoid plugins with mypy
* mypy fix
* abstract redis into plugin and add team_id to reload
* refactor and start work on syncing with posthog.json
* start testing plugin loading from json
* test plugin deletion
* test for syncing plugins from config
* complete and then test local json plugin sync
* test converting back and forward between an local and http path
* remove global plugin config from plugins array in posthog.json
* rename configSchema --> config_schema
* fix migration after merge
* rename from_cli to from_json
* mypy
* import pip after plugin loaded
* show error details
* raise exceptions visible to the frontend
* sync plugins on load
* access control to updating plugins from the web
* access control
* remove posthog.json from git
* test config schema from json
* if you can install via the web, you can also configure
* remove separate view access
* title as "Plugins" instead of "Installed Plugins" if we can't install ourselves and don't see the repository
* add self.team to plugin base class
* add instance_init method
* refactor into files
* sync global plugin config from json
* make global plugins work, add test
* global plugins in interface, make them take precedence over local plugins
* add comments to plugin base class
* reload/reset plugins before each test
* add error field to plugins
* add many plugin zips
* add many plugin zips, fix imports
* store errors on plugin object and test them
* fix types
* add null to error
* can be with any team ID in the test
* save problems running plugins in the plugin_config model
* try to create redis connection pool only once
* throw if no redis
* mypy
* get instance inside heartbeat and not top level
* try caching pubsub
* try pip install with -q
* install pip externally
* remove uuid and typing, now in stdlib
* more verbosity
* add pip back
* catch exceptions
* quiet and no input for pip
* check plugin reload every 10sec on new task
* fix type errors
* fix requirements error message
* use repository.json
* only load and reload plugins on workers
* rename task
* support local js plugins via py-mini-racer
* load js plugins from zip files
* extract jsplugin class and convert to syntax that uses global functions instead of initializing a class
* process events via grpc
* process events with the "posthog-plugins" queue to enable plugins
* remove old native python & mini racer plugin code
* default to false
* change env vars
* fix test
* remove grpc tools
* skip plugins in migrate.py scripts
* fix migration
* change output of settings debug banner to STDERR
* start posthog plugin server with worker
* try to fix python 3.7 test
* add fallback for the optional argument
* annoying CI test debug
* try to finally fix python 3.7 test
* here we go again
* move plugins under instance
* move plugins npm start into its own folder
* more console.log debugginf
* and again
* move plugins to separate script
* more prints
* fix test error
* docker config
* small fixes
* dckerfile fix
* reload plugins via pubsub, upgrade version
* plugins that support team setup code
* sync if made changes from config
* move plugins in menu
* require node 14 in heroku for better plugin support (namely ?. support)
* bump node version in dockerfiles
* update node versions for github actions
* update the concurrency for heroku workers
* update the concurrency for heroku workers (add link)
* Fix migrations after merge
* add ignore_result to process_event tasks
* fix: docker-preview run in parallel bug
* change order of commands
* remove separate plugins server conf script
* clarify intent
* revert castaway change
* add context to plugins/sync.py
* change everything to ValidationError
* delegate destroy to super
* no request to repository url if can't install
* make the if cleaner
* add clarifying line
* add clarifying line
* fix url field type
* rename get_redis_instance to get_client, move to posthog.redis
* remove duplicate validation
* flip if around
* simplify api logic
* simplify plugin_config api, fix global_plugin error
* remove unnecessary field rename
* mypy
* Plugins UI (#2090)
* base UI
* more UI
* load plugin image if available
* toggle enabled plugin
* plugin cards for available
* custom plugins
* change plugin configuration to drawer
* asks for confirmation when enabling or disabling a plugin
* loading state
* separation of concerns, leave new styles for separate PR
* general improvements
* remove button when installation is not available
* preemptively avoid merge conflict with #2114
* move papercups widget & hide bottom bar when drawer is open
* allow clicking the entire plugin card
* address all feedback
* move plugins under "project" menu
* Hide "configure" from globally enabled plugins
Co-authored-by: Marius Andra <marius.andra@gmail.com>
* add plugins opt in toggle to project/plugins
* choose pipeline based on team setting
* add "beta"
* plugin opt-in opt-out pages
* adjust install button
* remove tasks that are never called, remove PLUGINS_ENABLED global key
* fix responsive card display
* fix typo and drawer width
* skeleton fixes
* typo
* use "posthog-plugin-server" npm package
* "posthog-plugin-server" doc
* require the plugin server to be online before enabling plugins
* remove a few needeless "?." cases
* add hint for config_schema
* add hint for errors
* show plugin errors
* stop clicks if clicking on error
* show plugin errors
* loading indicators
* reload plugins when opting in/out
* nicer beta tag
* add frontend type
* fix mypy error
* fix test
* disable plugins if MULTI_TENANCY
* upgrade plugin-server version
* save event with plugin error
* upgrade plugin server
* squashed & optimized migrations
* remove unused import
* updates opt-in copy & hides tech details for cloud version
* fix cypress tests
* compare with None
* change plugins url and add redirect
* remove ellipsis
* use code snippet in plugin errors
* change github regex
* fix loading flickering on installing plugins
* add comment to plugin archive
* fix python style
* remove pip-tools (relic from the python plugin era)
* hard pin plugin server version
* remove copying of posthog.json from dev dockerfile (breaks if file doesn't exist, copied later anyway)
* update lockfile
Co-authored-by: James Greenhill <fuziontech@gmail.com>
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* Backend changes to implement #1461
* Added the missing migration files
* Fixes Typecheck errors
* Refactor request.user.team_set.get() to use request.user.team
* Updated user patch method to change current_team on team id instead of name
* Merged migration file
* Changes team property to return first item in queryset
* Fixes failing tests
* Changed User api to return the ids of the teams they are currently part of
* Frontend for changing teams
* Update and simplify migrations
* Improve team and user buttons
* Make team changing backend more logical
* Improve current_team mechanics
* Update test_team.py
* Fix Team.objects.create_with_data
* Update migration
* Update tests
* Make setup_review more convenient
* Add Organization and OrganizationMembership
* Replace is_admin with level
* Extend API
* Update team.py
* Improve modeling
* Improve handling of new mechanics
* Add proper migration
* Remove _ensure_organization_and_team
* Update 0084_org_team_user.py
* Improve user, org and team creation
* Make MembershipLevel more flexible for the future
* Add member deletion
* Fix naive datetime warnings
* Update setup_review.py
* Update API route
* Make PersonalAPIKey changes
* Update models and migrations, fix typing
* Fix typing
* Use MAC-less UUID v1 instead of v4 for better performance
* Add abstract UUIDModel
* Update utils.py
* Update utils.py
* Fix multi/unicast bit
* Update APIs, frontend and tests
* Update pull_request_template.md
* Fix comment
* Fix migration error
* Compress migrations
* Updates with minimal renaming
* More updates
* Make further updates
* Update test_team_user.py
* Fix issues
* Add migration
* Satisfy mypy
* Remove Signup redirect on logged in
* Use uuid1_macless in Person
* Fix typing
* Update tests
* Update /api/team/signup to /api/organization/signup
* Fix mypy issues and update tests
The remaining failures are actually missing functionality (TDD applied), so filling these in.
* Update 0086_org_live
* Make small improvements
* Implement permissions
* Remove now unneccesary membership check
* Update setup_dev.py
* Make small frontend improvements
* Add drf-nested-routers as requirement
* Remove unused import
* Implemented nested routes
* Remove cruft
* Add relevant org/proj/user name to headings
* Fix imports
* Update migration
* Replace unreliable drf-nested-routers with drf-extensions
* Improve unset team handling
* Make org and team creation proper
* Update migration
* Fix migration
* Update TopContent
* Update command palette for new sidebar structure
* Remove deprecated demo data deletion
* Assume that each org has a project and fix typing
* Require paid plan for multiple orgs and projects
* Make HogFlix demo a separate team
* Update migration
* Slightly improve style
* Adjust page layout bottom padding
* Make user dropdown nicer
* Fix base app tests
* Satisfy mypy
* Fix test_leave_organization
* Improve wording
* Possibly fix import
* Remove misplaced None check
* Enhance org and teams APIs and add tests
* Fix /api/projects for particular Team
* Improve invites and demo data
* Address feedback
* Put everything related to billing on Organization
* Fix minor issues
* Simplify invitation creation
* Update team model
* Make orgs and projects premium only on self-hosted
* Improve testing
* Update migration
* Remove extra License import
* Fix minor issues
* Fix Django tests
* Fix Cypress
* Fix yarn build
* Fix TeamSignupViewset
* Fix posthog-production incompatibility
* Remove extraneous insight endpoint registration
* Adjust tests for posthog-production
* Simplify invitations and fix email validation
* Address all feedback
* Satisfy mypy
* Update migration
* Fix constraint removal in migration
* Update tests
* Fix test creation edge case
* Run posthog-production CI tests against this branch and teams-live
* Ensure that js_posthog_api_key is always passed
* Fix preflight check pre-login
* Update cypress tests
* Update instanceStatus.js
* Bring ee tets up to par
* Bring actions-ux-201012 back
* Cypress retry in cypress.json
* Revert "Run posthog-production CI tests against this branch and teams-live"
This reverts commit d79cb844d8.
Co-authored-by: anna <ms.annaphilips@gmail.com>
Co-authored-by: Anna Philips <aphilips@matmacorp.com>
* System Status page and API (#1812).
* More resilient to Redis outage. Ensure the table gets loaded.
* Bugfix and reworded.
* Using kea-typegen now and removed a " ".
* add hotkey base
* add platform check
* Rename CommandBox to CommandPalette
* Add styled-components
* Restructure CommandPalette and add Esc handling
* Update utils.js
* add search box
* Add logic types
* Implement base logic
* Fix scroll prevention
* Update logic and add goto command base with Fuse fuzzy serach
* ux hotkey
* Implement command (de)registration
* minor fix
* base UI
* error message & hints
* command groups UI
* Add commands search
* Make commands work
* Prepare palette for fuzzy search and add basic labeling
* ui adjustments
* ui
* Improve colors
* switch to global command
* Optimize resolution
* global go to commands
* abstract item selection logic to command palette
* Update casing and types
* Add conditional useCommands
* Improve results
* keyboard nav
* keyboard nav fix
* removed double fuse (synonyms broken)
* Update style
* Fix highlighting
* Remove extra style
* conditional go to commands
* add mouse hover handling and rename functions
* remove mac check
* add more commands
* added insights stub pages
* Add command components
* refactor logic
* Update styling
* Remove extraneous `input`
* load custom dashboards to command palette
* Add input styling
* Add write icon
* Refactor results
* minor adjustments
* add person search
* remove papercups fully
* fix input indexing
* fix result executing empty
* Add command grouping and improve navigation
* add urls
* make logic explicit
* fix error with hadnler
* Remove redundant border-top
* add trend functions
* personal api key stub
* Add command palette toggle button
* Fix things
* fix personal api keys
* copy api key to clipboard
* Add toggle text
* Improve palette UX and perform refactoring
* Improve UX and add palette usage reporting
* tests refactor
* filter person list
* refactor api person tests
* add squeak
* deprecate by_distinct_id & by_email person endpoints
* Optimize squeak
* fix typegen error
* use new filters in frontend
* Optimize squeak
* key identifier refactor
* fix mypy
* removed unused code
* Make custom command UI more coherent
* Add calculator to palette
* Use equal sign
* Make palette button nicer
* Add lodash back officially and show palette suggestions
lodash is still used in a few places, but it was not in package.json. The reason this was working was that lodash is a dependency of some other depedencies, but this was fragile. It's still not ideal to use this, but at least this is now not a hack the way it was.
* Remove isHint
* Optimize graph time range command
* Move command results grouping to Kea logic
* Fix result focus autoshift
* Improve palette result focusing
* Adjust for window.posthog being optional
* add test for third-party person filters
* Remove styled-components in favor of .scss files
* Remove redundant container class
* Use insect (sic!) squeak instead of pig squeak
* Show only unique palette results
* Fix palette overlay
* Add powerful command building protocol CommandFlow
* Fix minor issues
* Always show scope when flow active
* Use custom label icon
* Add feedback sharing command
* block command input from being captured in screen recording
at least until we can figure out how to capture this info in a privacy-preserving way
* Hide palette button on narrow screens
* Improve responsiveness
* Fix palette feedback sending
* Fix Esc handling
* Add Message Sent info
* Fix Message Sent info
* Fix dashboard creation and null name handling
* Rename Cy tests to JS convention
* Add basic Cypress test
* Address feedback
Co-authored-by: Eric <eeoneric@gmail.com>
Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
* #1292: Added tabs for switching between user types in People
* updated fetchPeople implementation
* refactored and fixed pagination
* fixed search query across tabs issue
* updated api query param for person
* added tests
* added tests & fixed queries
* added cypress tests
* Improve code style
* Improve regex and add compatilibity with demo data
* Improve variable naming
* Switched user identifying mechanism
* made it demo friendly
* Improved method for identifying users, added tests
* fixing minor mistakes
* made cypress test more robust
* cypress test update
* fixed migrations conflict
* updated cypress tests
* Optimize process_event conditions
* Update comment
* Make _set_is_identified more versatile
* Update demo.py
* Rename queryset_anonymous_pass
* Improve rudimental identification detection
* User kea-router for All Users category tab
* Optimize People
* Make category play well with cohort in People
* Simplify way of filtering by identification
* Remove need for deep copy
* Check location in People tabs E2E test
* Update test_process_event.py
* Black test_process_event.py
* Fix test_set_is_identified
* Try E2E test with cy.wait(200)
* Try E2E with more waiting
* Don't check location in E2E test
* Add test_category_param
* Update migration
Co-authored-by: Twixes <dev@twixes.com>
* - set a custom cookie to tell the toolbar we're logged in
- make other cookies secure
* skip adding new toolbar cookie on API requests
* fix demo page local https
* enable/disable secure cookies as needed
* show django toolbar only for API requests
* update posthog-js and kea versions
* satisfy mypy
* add SECURE_COOKIES=0 to cypress tests, since they run over HTTP
* revert kea version
* add test for toolbar cookie middleware
* try something for cypress
* add debug
* add cypress-terminal-report for better logging
* fix demo api_url
* revert previous change that triggered cypress
* add test for caching funnels and refreshing
* Closes #1020 WIP shared dashboards
* Make webpack work
* Progress?
* Hash the entire filter and add share tokens
* Make webpack work properly
* Fix sentry error
* Tighten up the caching logic
* Correctly refresh items and show in frontend'
* Add some padding
* fix caching, update layout
* Add cypress tests
* Fix merge conflict mistake
* Convert share_token to boolean
* Hide text when small
* Redo tooltip for lock
* Remove move cursor when in shared mode
* Improve spacing
* Fix state being incorrect
* Use selectors instead of value
* Use const instead of let
* Fix type errors et al
* Increase cache size
* Fix dashboard tests
* Fix team tests
* Add wait time
* Fix tests
* Fix refreshing
* Fix dashboard tests
* Fix test
* Excluded deleted dashboard items and don't show refreshing
* Fix renaming issue
* Fix migrations and fix display of status change
* Use grid for responsive header
* Don't load annotations
* Eslint
* Fix variable naming
Co-authored-by: Eric <eeoneric@gmail.com>
* working table
* add modal
* continue adding to modal
* added function to create global annotation
* format
* test commit
* add precommit
* add update function
* crud working
* add type
* fix tests
* add next
* add prompt
* tests
* Update entityFilterLogic for filter.math_property
* Add new math types and math_property to ActionFilterRow
* Add backend support for new math types
* Update data-attrs
* Add dropdown Cy test
* Add API tests
* Improve process_math style
* Add resiliency to non-number property value occurences
* Annotate for clarity
* Update UI text
* Update UI text a bit more
* Reword tooltip
* Update UI slightly
* Update capitalization
* Improve internal style
* Improve code style
* Filter out property `token`
* Utilize formatted string
* Don't show empty dropdown contents
* Add event_properties_numerical for the future
* Fix dropdown button title
* Closes #1108 Allows filtering of retention table
* Adds logic to parse properties(filters) from the URL and including the filters while making api request for data
* Adds PropertyFilters component to the rentention table scene
* Adds props that are passed on to the RetentionTable component so that the properties prop is populated
* Fixes failing tests since the person_id wasn't added to the event objects
* Fixes type error for json loads
* Adds frontend and backend test
* Removes print statement
* added checks on input for setup_admin and signup_to_team (#1128)
* added comment about is_input_valid
* minor formatting changes to tests for improved readability
* uncommented cypress/plugins/index.js
* reverting cypress example plugin file to original state
* fixed invalid input tests
* Test lengthening the wait time for the toasts to see if they are less flakey
* use purecomponent hook to prevent unnecessary rerender
* test again
* test again x2
* change pagekey
* test x2
* test
* run on chrome
* remove chrome
Co-authored-by: Eric <eeoneric@gmail.com>
* Retention query v0
* First iteration of endpoint
* Return dates labels as well
* Fix the order of result building
* Improve query for retention.
Instead of trying to figure out the "first date", it instead:
1. Figures out what dates every user does events on (WITH query)
2. Then for every date/'first' date combo counts users.
I doubt this is the efficient way to do things but seems to return the
right results.
We now also include time range filter with the query.
* Add empty views for retention
* Add logic for loading data for retention table
* Get a table rendering for retention
* 11 days over 10
This results in a more pretty table
* Remove raw column
* Use correct relative timeframe
* Add spec for retention feature
Note it's currently failing because of missing functionality
* Use query combining for retention queries
* Color cells in retention table
Background color baseline was picked based on already used colors in
css.
Text color switches when crossing a handpicked threshold for legibility.
* Open submenu when navigating to retention
* Add e2e test for retention route
* Add subheader for retention
* Try make mypy happy
* intiial working
* remove animation and added snippets
* full flow working
* reorganize
* more cleanup
* fix linting
* add test for the onboarding flow
* add elixir and send event script
* try without cache
* restore cache and move directory
* udpate case
* add lazy loading to onboarding flow
* move field to team
* .
* update styling
* add default
* migration with default working
* add missing model field
* conditional test based on DOM
* add promise return
* try wait
* test again x2
* WIP #517 feature flags
* Fix default filters
* Move decide to its own file
* Bump posthog-js 1.2.2
* Fix decide endpoint
* Add logic, update posthog-js
* yarn lock
* update snippet
* Add cypress tests
* Add example code
* Fix example code
* Add tests for query size
* Add errors when trying to create feature flag with same key
* Add explanation comment
* Fix cypress tests
* Do caching of teams in Team model
* Use <= instead of <
* Instrumentation and fix
* Fix ci test
* Add patch for team
* Debug test
* It passed