Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Free trial mutations #9132

Merged
merged 25 commits into from
Nov 27, 2023
Merged

feat: Free trial mutations #9132

merged 25 commits into from
Nov 27, 2023

Conversation

jmtaber129
Copy link
Contributor

@jmtaber129 jmtaber129 commented Nov 7, 2023

Description

Fixes #9133

Spec 🔒

Introduces two mutations, startTrial and endTrial, which set/reset a trialStartDate field on any object with a tier field (Organization, Team, OrganizationUser, and User) to activate a free trial for a particular org without overwriting tier information.

Frontend/GQL:
In the GQL layer, the trialStartDate field is used to override the tier field, such that any checks in the frontend for whether a user has access to a feature based on tier will treat the object as being on the Team plan. We also introduce an isTrial field that indicates that the tier is set via free trial, so that billing-related components (e.g. billing panel, component displaying tier, etc.), can show that a free trial is active.

Server:
In server-side mutations + resolvers, anywhere that we check whether tier is starter, we also check if trialStartDate is non-null.

Mutations:

mutation {
  startTrial(orgId:"nWW2freL5K") {
    ... on StartTrialSuccess {
      organization {
        trialStartDate
      }
    }
  }
}
mutation {
  endTrial(orgId:"nWW2freL5K") {
    ... on EndTrialSuccess {
      organization {
        trialStartDate
      }
    }
  }
}

Demo

https://www.loom.com/share/e78ac40536d04d8fadd8e92ab97be813?sid=04b7efa6-3a0f-4f76-86f8-865dca95cffd

Testing scenarios

  • Smoke test feature access + billing-/plan-related pages for each of these scenarios:
    • Starter plan, never had a trial
    • Trial activated on starter plan
    • Trial ended on starter plan
    • Org upgrade during active trial, then later downgrades
  • Error cases for mutations:
    • Start trial on paid org
    • Start trial on org with active trial
    • End trial on org without active trial

Final checklist

  • I checked the code review guidelines
  • I have added Metrics Representative as reviewer(s) if my PR invovles metrics/data/analytics related changes
  • I have performed a self-review of my code, the same way I'd do it for any other team member
  • I have tested all cases I listed in the testing scenarios and I haven't found any issues or regressions
  • Whenever I took a non-obvious choice I added a comment explaining why I did it this way
  • I added the label One Review Required if the PR introduces only minor changes, does not contain any architectural changes or does not introduce any new patterns and I think one review is sufficient'
  • PR title is human readable and could be used in changelog

@github-actions github-actions bot added the size/l label Nov 7, 2023
@jmtaber129 jmtaber129 marked this pull request as ready for review November 8, 2023 23:11
@github-actions github-actions bot requested a review from tianrunhe November 8, 2023 23:11
@BartoszJarocki
Copy link
Contributor

@jmtaber129 I'd love to clarify a couple of things.

First, do you see any issues with setting tier to team when startTrial mutation runs? alongside updating tier we'd set the information about the trial (start date, whatever else is needed). this way, we wouldn't need to change any business logic related to tier handling, except for showing the information about trial and possibly upgrading. Any thoughts?

Another clarifying question, why do we set the trialStartDate in a few places like Org, OrgUser, Team? why not just one place?

@jmtaber129
Copy link
Contributor Author

@BartoszJarocki

do you see any issues with setting tier to team when startTrial mutation runs

Nothing specific, but because tier is currently tightly coupled with billing, I'm wary about changing that state for a new experimental feature like this one - when starting+ending trials, we'd need to correctly update the tier according to billing. By keeping tier as-is and adding trialStartDate, we can leave billing state untouched, and then use existing state + new state to determine what "feature tier" an org is on.

Effectively, I'm optimizing for "what's easiest to reverse and least likely to cause problems", rather than "what is the ideal long-term state", since this is experimental.

why do we set the trialStartDate in a few places like Org, OrgUser, Team? why not just one place?

This is the same as what we do with tier today, so I'm using the same pattern for consistency. Instead of storing tier just on the Org, we denormalize it onto several different objects that inherit in some way from Org, so we don't need to do a DB lookup of Org when we check the tier of an OrgUser or Team. The trialStartDate on the Org is still the source of truth.

Copy link
Contributor

@tianrunhe tianrunhe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did a quick test locally and it worked fine. I think the bot added me because of the migration script, which I reviewed and it LGTM.
Asked a relevant question on Slack here. We might also want to programmatically add/remove feature flags from the startTrial and endTrial mutations but they are definitely worth a separate PR.
Signing off as-is from data perspective! Great work, looking forward to seeing it in action soon!

@BartoszJarocki
Copy link
Contributor

@BartoszJarocki

do you see any issues with setting tier to team when startTrial mutation runs

Nothing specific, but because tier is currently tightly coupled with billing, I'm wary about changing that state for a new experimental feature like this one - when starting+ending trials, we'd need to correctly update the tier according to billing. By keeping tier as-is and adding trialStartDate, we can leave billing state untouched, and then use existing state + new state to determine what "feature tier" an org is on.

Effectively, I'm optimizing for "what's easiest to reverse and least likely to cause problems", rather than "what is the ideal long-term state", since this is experimental.

why do we set the trialStartDate in a few places like Org, OrgUser, Team? why not just one place?

This is the same as what we do with tier today, so I'm using the same pattern for consistency. Instead of storing tier just on the Org, we denormalize it onto several different objects that inherit in some way from Org, so we don't need to do a DB lookup of Org when we check the tier of an OrgUser or Team. The trialStartDate on the Org is still the source of truth.

got it, makes sense!

@jmtaber129 jmtaber129 force-pushed the jmtaber129/trial-mutations branch from a2d4ff0 to f9762d4 Compare November 14, 2023 16:52
Copy link
Contributor

@Dschoordsch Dschoordsch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only did a smoke test

packages/server/utils/setTierForOrgUsers.ts Outdated Show resolved Hide resolved
packages/server/graphql/public/types/Team.ts Outdated Show resolved Hide resolved
packages/server/graphql/private/mutations/endTrial.ts Outdated Show resolved Hide resolved
packages/server/graphql/private/mutations/startTrial.ts Outdated Show resolved Hide resolved
packages/server/graphql/private/mutations/startTrial.ts Outdated Show resolved Hide resolved
])
organization.trialStartDate = now

await Promise.all([setUserTierForOrgId(orgId), setTierForOrgUsers(orgId)])
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 it's not obvious that setUserTierForOrgId and setTierForOrgUsers can run in parallel as one writes OrganizationUser and the other one reads it. A comment on top of setUserTierForUserIds that it does not read the tier from OrganizationUser for this very reason would be nice.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a comment.

packages/server/utils/setUserTierForUserIds.ts Outdated Show resolved Hide resolved
@Dschoordsch
Copy link
Contributor

@tianrunhe should we have some analytics events in starttrial and endtrial or is this irrelevant because we're reading the data from the db anyways?

@tianrunhe
Copy link
Contributor

@tianrunhe should we have some analytics events in starttrial and endtrial or is this irrelevant because we're reading the data from the db anyways?

I think at this time, the intention is to ask our sales to run these mutations internally. Since it's not public (I think?), I have no tension adding metrics atm.

Copy link
Contributor

@Dschoordsch Dschoordsch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please check what's wrong with the test for draftEnterpriseInvoice? It passes locally for me, so it might be a CI setup issue. Querying the error field in the test might give more insights.

It would be nice if the trial would show up on the OrgPlansAndBillingHeading similar to the team settings, so it would say something along the lines of: "You are on a Free Trial for the Team Tier".

@jmtaber129 jmtaber129 merged commit 7367b94 into master Nov 27, 2023
4 checks passed
@jmtaber129 jmtaber129 deleted the jmtaber129/trial-mutations branch November 27, 2023 22:52
mattkrick added a commit that referenced this pull request Jan 18, 2024
* chore: Users with noTemplateLimit flag can use paid templates (#9160)

* chore: Users with noTemplateLimit flag can use paid templates

* Don't show a lock if a user can access premium templates

regardless whether it's because their tier or a feature flag

* feat: fix custom template border (#9131)

* chore: Add SAML setup to new checkout flow (#9178)

* chore: Add SAML setup to new checkout flow

* Add Authorization also to mobile dash

* chore(release): release v7.7.0 (#9161)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* feat: add GCS as a FileStore (#8493)

* feat: add GCS as a FileStore

Signed-off-by: Matt Krick <[email protected]>

* self-review: fix comments

Signed-off-by: Matt Krick <[email protected]>

* fix: checkExists

Signed-off-by: Matt Krick <[email protected]>

* dockerize testing the branch

* add recent filestore changes to gcs

Signed-off-by: Matt Krick <[email protected]>

* throw on trailing slash

Signed-off-by: Matt Krick <[email protected]>

* retry GCS flakey pushes

Signed-off-by: Matt Krick <[email protected]>

* dockerize

Signed-off-by: Matt Krick <[email protected]>

* bump yarn.lock

Signed-off-by: Matt Krick <[email protected]>

* fix yarn

Signed-off-by: Matt Krick <[email protected]>

---------

Signed-off-by: Matt Krick <[email protected]>
Co-authored-by: Rafael Romero <[email protected]>

* fix: replace saas url with calculated value for PPMIs (#9186)

Signed-off-by: Matt Krick <[email protected]>

* chore: Users with noTemplateLimit flag can create custom templates (#9162)

* chore: Users with noTemplateLimit flag can create custom templates

* Allow creating templates on legacy dialog with noTemplateLimit flag

* chore: Handle migration conflicts (#9166)

* chore: test case: should not run for no migration

Signed-off-by: Matt Krick <[email protected]>

* test: working case

Signed-off-by: Matt Krick <[email protected]>

* test: failing case

Signed-off-by: Matt Krick <[email protected]>

* debug failing case

* test basename

Signed-off-by: Matt Krick <[email protected]>

* test working case

* better logs

Signed-off-by: Matt Krick <[email protected]>

* test no migration

Signed-off-by: Matt Krick <[email protected]>

---------

Signed-off-by: Matt Krick <[email protected]>

* fix(demo): Don't show top bar or sidebar on demo summary (#9190)

* feat(admin): Base Org Admin role (#9194)

* fix: Avoid caching permissions with different arguments (#8670)

* fix: Avoid caching permissions with different arguments

Permissions are cached by function name. When these depend on the
arguments passed, they should have their own cache key, see
https://the-guild.dev/graphql/shield/docs/rules#limitations

* Make isViewerOnTeam strict

The passed function might access source or args and thus we should use
the strict cache.

* fix: sort team names alphabetically (#9187)

* fix: sort team names alphabetically

* sort allTeamsOnOrg

* chore(release): release v7.8.0 (#9185)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* fix: can auto join with saml login (#9189)

* chore(release): release v7.8.1 (#9224)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* feat: node update v20.9.0 LTS, req rethinkdb-ts and uWS version bump (#9232)

* chore: Sorted .env.example and added more documentation (#9104)

* Sorted .env.example and added more documentation

* Added changes related to PR. Improved section naming.

* Fixed CI variable location

* Sorted variables and created new categories for GOOGLE, DATADOG, AWS. Added missing variables.

* Requested changes incorporated

---------

Co-authored-by: Rafael Romero <[email protected]>

* feat: Free trial mutations (#9132)

* feat(trials): Start Trial mutation

* GQL + FE updates

* Copy update

* Minor fixes

* End Trial mutation

* Some cleanup

* More fixes

* Rename var

* Extract 'getFeatureTier'

* More cleanup

* Tiny cleanup

* CR: change to featureTier and billingTier

* CR: Misc fixes

* Rename featureTier back to just tier

* CR: Explicitly do OrgUser and User updates in order

* CR: Combine rethink queries

* Actually we don't need to do those in a specific order

* Why are tests broken

* Revert "CR: Combine rethink queries"

This reverts commit 04ad78d.

* Revert "Why are tests broken"

This reverts commit eca6417.

* Manually bisecting changes that break tests (part 1)

* Revert "Manually bisecting changes that break tests (part 1)"

This reverts commit db90ead.

* Revert "Revert "CR: Combine rethink queries""

This reverts commit a8c21a7.

* Fix tests 🤦

* Update trial copy for OrgPlansAndBillingHeading

* fix: release please build add systemtap (#9241)

* fix: systemtap path (#9242)

* feat: Add Microsoft login (#8984)

* feat: Add Microsoft login

* Microsoft login button styling

* Add Microsoft login to forgot email and team invitation dialogs

* Cleanup and pseudoId

* Formatting

* Use colors from the palette for oauth login buttons

* Cleanup

* chore(kudos): add kudos team settings (#9163)

* chore(kudos): add kudos team settings

* store emoji id

* chore(kudos): add kudos record when adding emoji reaction (#9169)

* chore(kudos): add kudos team settings

* store emoji id

* chore(kudos): add kudos record when adding emoji reaction

* Fix snackbar

* quick fix for types

* Dynamic emoji

* del console log

* Remove comment

* Remove unused kudos field

* expose senderUser

* Fix reactable type

* Fix table name

* Don't check feature flag

* Fix analytics

* Add snackbar events

* fix typescript

* feat(kudos): display notification when kudos received (#9199)

* chore(kudos): add kudos team settings

* store emoji id

* chore(kudos): add kudos record when adding emoji reaction

* Fix snackbar

* quick fix for types

* Dynamic emoji

* del console log

* feat(kudos): display notification when kudos received

* Remove comment

* Update notification text

* Remove unused kudos field

* expose senderUser

* Fix reactable type

* Fix table name

* remove unused fields

* Don't check feature flag

* Fix analytics

* Add snackbar events

* fix typescript

* Fix type

* Fix type

* add notification status analytics

* Fix type

* fix type

* Fix table name caused by wrong merge

* add snackbar clicked event to kudosReceived snackbar

* chore: Fix formatting (#9244)

* fix: author should be nullable when comment was anonymous (#9233)

* fix: author should be nullable when comment was anonymous

* fix: anonymous avatars path

* chore(release): release v7.9.0 (#9238)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* chore(env-file): ununsed variables removed (#9249)

* chore(metrics): add metrics to track search query in AL (#9235)

* feat: remove gcal flag (#9251)

* remove gcal feature flag

* remove gcal feature flag

* fix provider list

* fix: increases integration icon visibility (#9164)

* increases integration icon visibility
* force commit
* yank comment

* feat: update activity library card UI (#9168)

* show title and type below activity card

* make activity library card dynamic

* add retro background swirls

* add background images for all meeting types

* fix custom card size

* truncate text if there is no space

* clean up

* use grape 100

* add premortem and postmortem imgs

* remove bg from categories themes

* move background img to div

* chore: Cleanup Slack/Mattermost/MSTeams notifiers (#9240)

* chore: Cleanup Slack/Mattermost/MSTeams notifiers

These will need some refactoring for #8840 and this will hopefully
simplify this.

* Cleanup

* feat: add tooltip to activity library card (#9236)

* show title and type below activity card

* make activity library card dynamic

* add retro background swirls

* add background images for all meeting types

* fix custom card size

* truncate text if there is no space

* clean up

* use grape 100

* add premortem and postmortem imgs

* remove bg from categories themes

* move background img to div

* add dummy tooltip

* fix tailwind bg colours

* show tooltip after delay

* show descriptions in tooltip

* clean up

* update tooltip position

* update CATEGORY_THEMES colours

* remove tailwind config safelist

* feat: gcal invite all by default (#9260)

* chore(dx): allow any branch with hotfix prefix to build (#9263)

Signed-off-by: Matt Krick <[email protected]>

* fix: cork all http write methods (#9261)

* auto-cork, sse not working

Signed-off-by: Matt Krick <[email protected]>

* fix: auto-cork, sse not working

Signed-off-by: Matt Krick <[email protected]>

* chore(dx): allow any branch with hotfix prefix to build

Signed-off-by: Matt Krick <[email protected]>

* fix: double star glob to match /

Signed-off-by: Matt Krick <[email protected]>

---------

Signed-off-by: Matt Krick <[email protected]>

* chore(release): release v7.10.0 (#9250)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* feat: release checkout flow (#9245)

* remove checkout flow flag

* remove checkout flow feature flag uses

* update release tests

* remove OrganizationPage

* feat(admin): Org Admin permissions - billing leader and team lead permissions (#9195)

* WIP feat(admin): First pass on Org Admin permissions - org perms

* Org Admin - team lead perms

* Check super-user when demoting org admin

* Fix options in org member view

* Handle bad orgId + userId inputs

* CR: Simplify logic + add comments

* Include love@ email address for contacting support

* fix: shake some images from server bundle (#9267)

Signed-off-by: Matt Krick <[email protected]>

* fix: activity library settings mobile (#9275)

* add minimize animation

* fix cta on desktop and mobile

* ensure cta buttons have a higher z index that the minimized content

* add useMenu comment

* fix: activity library colour imports (#9277)

* fix: update activity library category colours

* fix category themes background colours

* chore: Check SERVER_ID in generateUID (#9270)

* chore: Check SERVER_ID in generateUID

If the server id is out of range, we potentially generate duplicate ids,
so it's better to throw immediately.

* Leave breadcrumps

* chore: Reuse data loader for analytics (#9239)

* chore: Reuse dataloader for analytics

* Cleanup

* Formatting

* More cleanup

* Cleanup

* Confusion

* fix: gracefully remove consumer from redis on sigterm (#9252)

* gracefully remove consumer from redis on sigterm

Signed-off-by: Matt Krick <[email protected]>

* fix: gracefully remove consumer from redis on sigterm

Signed-off-by: Matt Krick <[email protected]>

---------

Signed-off-by: Matt Krick <[email protected]>

* chore: rename services in datadog trace (#9048)

Signed-off-by: Matt Krick <[email protected]>

* chore: webpack client and server in parallel (#9279)

* chore: webpack client and server in parallel

Signed-off-by: Matt Krick <[email protected]>

* chore: cleanup my ugly code

Signed-off-by: Matt Krick <[email protected]>

---------

Signed-off-by: Matt Krick <[email protected]>

* chore: Restrict prompt to join org to a smaller set of orgs (#9265)

Prefer higher tiers and bigger over smaller orgs.

* feat: added option to modify icebreakers with ai (#9268)

* feat: added option to modify icebreakers with ai

* code cleanup, analytics

* code cleanup

* fix: added success property to icebreaker modified analytics event

* refactor: use relay mutation helper for modify check in question mutation

* feat: add modified question char limit

* chore: efficient webpack bundles (#9256)

* fix: no opaque responses

Signed-off-by: Matt Krick <[email protected]>

* add min bundle size

Signed-off-by: Matt Krick <[email protected]>

* fix: only dynamic cache parabol assets

Signed-off-by: Matt Krick <[email protected]>

---------

Signed-off-by: Matt Krick <[email protected]>

* feat: Show new meeting snack also on summary page (#9231)

* feat: Show new meeting snack also on summary page

Because the meeting summary shows the sidebar as well, this feels more
in line with the user expectation.

* Fix demo

* fix: Prompt to join org without organization feature flags (#9280)

When no organization feature flag was present, we would not show the
prompt to join org notification.

* chore: Automatically add devops to changes in .env.example

* chore: Update auto-request-reviewer workflow

* fix: Update organization on accept invite (#9281)

* fix: Prompt to join org without organization feature flags

When no organization feature flag was present, we would not show the
prompt to join org notification.

* fix: Update organization on accept invite

When accepting an invite in a different tab, or if the team lead accepts
a prompt to join org invite, the new organization was added partially to
the viewers organization causing undefined errors.

* fix: grab auth token before await (#9292)

Signed-off-by: Matt Krick <[email protected]>

* chore: keep release process in GitHub (#9165)

* chore: release to staging from github

Signed-off-by: Matt Krick <[email protected]>

* chore: push to prod on PR merge

Signed-off-by: Matt Krick <[email protected]>

* fix: naming

Signed-off-by: Matt Krick <[email protected]>

* fix: hotfix branch name prefix

Signed-off-by: Matt Krick <[email protected]>

* fix: poll for pipeline in staging

Signed-off-by: Matt Krick <[email protected]>

---------

Signed-off-by: Matt Krick <[email protected]>

* chore(release): release v7.11.0 (#9271)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* fix: Fix duplicate organizations for teams with auto join (#9290)

* fix: Fix duplicate organizations for teams with auto join

If an organization had multiple teams with `autoJoin` enabled, multiple
`OrganizationUser` objects would be created for a new user.

This fixes the creation of duplicate `OrganizationUser` objects but does
not fix the existing duplicates. Ideally we would add a migration for
this, but filtering over all `OrganizationUser` entries is expensive and
only the Parabol org is affected.

* Add test

* Fix adjustUserCount properly instead

* fix: release-to-staging debug (#9294)

Signed-off-by: Matt Krick <[email protected]>

* chore(release): release v7.11.1 (#9293)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* fix: release-to-staging debugging 2 (#9295)

Signed-off-by: Matt Krick <[email protected]>

* chore(release): release v7.11.2 (#9296)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* chore: disable autoJoin test (#9304)

The test fails randomly, supposedly because the underlying issue is not
completely fixed yet. This should be fixed in #9302, until then let's
unblock CI.

* chore: Change email summary setting copy to be clearer (#9303)

* chore(deps): bump tj-actions/changed-files in /.github/workflows (#9299)

Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 40 to 41.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](tj-actions/changed-files@v40...v41)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(meeting-inception): use retrosInDisguise flag for displaying add an activity button (#9297)

* feat(kudos): send kudos by text in standups (#9259)

* feat(kudos): send kudos by text in standups

* Remove console logs

* Fix test

* Store unicode emoji too

* Link teamPromptResponseId

* Update slack notification

* Update email notification

* Mention notification analytics

* response mentioned toast analytics

* isValid

* Add types

* chore: document SOCKET_PORT environment (#9309)

* fix: Fix kudosSent analytics (#9310)

* fix: add pr write permission to CI (#9313)

Signed-off-by: Matt Krick <[email protected]>

* chore(release): release v7.12.0 (#9305)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* fix: release to staging debug #4 (#9315)

* fix: add pr write permission to CI

Signed-off-by: Matt Krick <[email protected]>

* fix: release-staging handle async job creation

Signed-off-by: Matt Krick <[email protected]>

---------

Signed-off-by: Matt Krick <[email protected]>

* chore(release): release v7.12.1 (#9316)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* chore: Convert GraphQL meeting types to use codegen (#9306)

* chore: Convert GraphQL meeting types to use codegen

* Cleanup

* Cleanup

* fix: longer timeout for unplayable job (#9321)

Signed-off-by: Matt Krick <[email protected]>

* chore(release): release v7.12.2 (#9317)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* fix: gh release staging debug (#9322)

* fix: longer timeout for unplayable job

Signed-off-by: Matt Krick <[email protected]>

* fix: exit condition debug

Signed-off-by: Matt Krick <[email protected]>

---------

Signed-off-by: Matt Krick <[email protected]>

* chore(release): release v7.12.3 (#9323)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* fix: default to empty instead of null (#9325)

Signed-off-by: Matt Krick <[email protected]>

* chore(release): release v7.12.4 (#9326)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* feat(kudos): enable mentions in retro reflections (#9284)

* feat(kudos): send kudos by text in standups

* Remove console logs

* Fix test

* Store unicode emoji too

* Link teamPromptResponseId

* Update slack notification

* Update email notification

* Mention notification analytics

* response mentioned toast analytics

* Enable mentions in retro reflections

* feat(kudos): enable mentions in retro reflections

* Make some params optional

* make editorRef optional

* Clear undo redo stack

* chore: prepare start and endRetrospective for recurrence (#9318)

Only refactored part of the functionality into different functions.

* feat: Add custom category to activity library (#9319)

* feat: Add custom category to activity library

The custom category lists all team and organization custom templates.

* Color adjustment

* fix: Docker build readme updated with the correct PostgreSQL version (#9330)

* chore: Update code review guidelines (#9307)

* chore: Update code review guidelines

* Update reviewers.yml

* Renamed "One Review Required" to "Skip Maintainer Review"

* Link to the label

* Link to correct label

* feat: remove unnecessary github oauth scopes (#8786)

* feat(kudos): send kudos at the end of the retro (#9288)

* feat(kudos): send kudos by text in standups

* Remove console logs

* Fix test

* Store unicode emoji too

* Link teamPromptResponseId

* Update slack notification

* Update email notification

* Mention notification analytics

* response mentioned toast analytics

* Enable mentions in retro reflections

* feat(kudos): enable mentions in retro reflections

* feat(kudos): send kudos at the end of the retro

* Handle anonymous notifications

* Make some params optional

* make editorRef optional

* Clear undo redo stack

* remove any

* rebuild

* make name and picture nullable

* Change anonymous to someone

* feat: adding integrations to team view tabs (#8985)

* feat: adding integrations to team view tabs

* fix/updating-integration-link

* Remove TeamSettingsWrapper

Only 1 route in it was still used, thus removed it

* Fix links

* Cleanup

* Don't use emotion in new components

---------

Co-authored-by: Georg Bremer <[email protected]>

* fix: Show correct template owner for ex-team members (#9331)

Without this fix the edit controls were shown but did not work.

* fix: highlight team dash in sidebar regardless of tab (#9333)

* fix: highlight team dash in sidebar regardless of tab

* Forgot Organizations on mobile

* feat: ai template recommendation (#9223)

* show title and type below activity card

* make activity library card dynamic

* add retro background swirls

* add background images for all meeting types

* fix custom card size

* truncate text if there is no space

* clean up

* use grape 100

* add premortem and postmortem imgs

* remove bg from categories themes

* move background img to div

* add search bar

* add getTemplateSuggestion skeleton

* show ai response to user

* handle error states

* remove ai search props

* fix vertical scroll

* fix padding

* add padding on mobile

* fix merge conflicts

* add feature flag and add json response to open ai

* make suggestedTemplate non null

* clean up

* remove activity grid from activityLibrary file

* hide default search if showing ai search

* remove unused imports

* fix: Allow multiple "*New Template" (#9320)

* fix: Allow multiple *NewTemplate

* Add a number to new templates

* Start counting from 1

* chore(configuration): .env with the minimal configuration to make the application work (#9335)

* chore(configuration): all non required variables commented

* PGAdmin section explained and SOCKET_PORT back and explained

* fix: gh action release switch head to version tag (#9349)

Signed-off-by: Matt Krick <[email protected]>

* feat(kudos): show snackbar when reflection with kudos created (#9334)

* feat(kudos): show snackbar when reflection with kudos created

* Remove console log

* snackbar key

* chore: Add recurring retros feature flag (#9347)

* chore: Add recurring retros feature flag

* Make it an org flag

* fix: fix broken demo summary (#9351)

* chore: Distribute assignSURole (#9353)

This is helpful in the docker image for initial setup.

* feat: update activity library quick start (#9350)

* add actvities to get you started title

* show desired quick start templates in order

* remove most popular

* reduce margin

* chore(release): release v7.13.0 (#9329)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* fix: create release branch as head (#9356)

Signed-off-by: Matt Krick <[email protected]>

* fix: new branch debug (#9358)

Signed-off-by: Matt Krick <[email protected]>

* fix: release-to-staging create branch to act as a the PR head (#9359)

Signed-off-by: Matt Krick <[email protected]>

* chore: embedder add pgvector (and fixes) (#9341)

* chore: add pgvector to development environment Postgres

* fix: MailManagerDebug now always creates file paths under the O/S limit

* fix: bump rethinkdb-ts (fixes development errors on my system)

* chore: review fixes

* chore(release): release v7.13.1 (#9357)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* fix: contents: write for gh actions (#9361)

Signed-off-by: Matt Krick <[email protected]>

* chore(release): release v7.13.2 (#9362)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

* fix: support edge cases in release to prod (#9364)

Signed-off-by: Matt Krick <[email protected]>

* chore(release): release v7.13.3 (#9365)

Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>

---------

Signed-off-by: Matt Krick <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Georg Bremer <[email protected]>
Co-authored-by: Nick O'Ferrall <[email protected]>
Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>
Co-authored-by: Matt Krick <[email protected]>
Co-authored-by: Rafael Romero <[email protected]>
Co-authored-by: James Taber <[email protected]>
Co-authored-by: adaniels-parabol <[email protected]>
Co-authored-by: Marcus Wermuth <[email protected]>
Co-authored-by: Igor Lesnenko <[email protected]>
Co-authored-by: Bartosz Jarocki <[email protected]>
Co-authored-by: Rafa <[email protected]>
Co-authored-by: Bruce Tian <[email protected]>
Co-authored-by: Terry Acker <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alicia Cressall <[email protected]>
Co-authored-by: Jordan Husney <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement Trial Mutations
4 participants