Skip to content

Commit bd26b40

Browse files
committed
Merge branch 'master' into experiment-yoga
Signed-off-by: Matt Krick <[email protected]>
2 parents a58c607 + 44e7593 commit bd26b40

File tree

18 files changed

+85
-31
lines changed

18 files changed

+85
-31
lines changed

.github/workflows/ironbank.yml

-11
Original file line numberDiff line numberDiff line change
@@ -55,17 +55,6 @@ jobs:
5555
- name: Zip the files
5656
run: zip -r ${{ github.event.inputs.version_number }}.zip dist build ip-to-server_id
5757

58-
- name: Set up AWS Credentials
59-
uses: aws-actions/configure-aws-credentials@v4
60-
with:
61-
aws-access-key-id: ${{ secrets.IRONBANK_AWS_ACCESS_KEY_ID }}
62-
aws-secret-access-key: ${{ secrets.IRONBANK_AWS_SECRET_ACCESS_KEY }}
63-
aws-region: "us-east-1"
64-
65-
- name: Upload to S3
66-
run: |
67-
aws s3 cp ${{ github.event.inputs.version_number }}.zip s3://ironbank-proving-ground-action-files.parabol.co/${{ github.event.inputs.version_number }}.zip
68-
6958
- name: Upload to GCS
7059
uses: actions-hub/gcloud@master
7160
env:

.release-please-manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "8.39.0"
2+
".": "8.39.2"
33
}

CHANGELOG.md

+21
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,27 @@ This project adheres to [Semantic Versioning](http://semver.org/).
55

66
This CHANGELOG follows conventions [outlined here](http://keepachangelog.com/).
77

8+
## [8.39.2](https://github.com/ParabolInc/parabol/compare/v8.39.1...v8.39.2) (2025-04-04)
9+
10+
11+
### Fixed
12+
13+
* gitlab & azure summaries show up ([#11091](https://github.com/ParabolInc/parabol/issues/11091)) ([7c48282](https://github.com/ParabolInc/parabol/commit/7c48282d5759d7b15165f756912fef87c023a243))
14+
15+
16+
### Changed
17+
18+
* add metrics for page creation, insight generation, and team privacy changes ([#11075](https://github.com/ParabolInc/parabol/issues/11075)) ([3c344f2](https://github.com/ParabolInc/parabol/commit/3c344f29513a218433c50d1e5362b7909862608a))
19+
* **Mattermost Plugin:** Move plugin commands ([#11089](https://github.com/ParabolInc/parabol/issues/11089)) ([c438c68](https://github.com/ParabolInc/parabol/commit/c438c6811376e793ca05944e61c65f7e892b52a6))
20+
* remove S3 from Iron Bank action ([#11097](https://github.com/ParabolInc/parabol/issues/11097)) ([e991ec0](https://github.com/ParabolInc/parabol/commit/e991ec03d7050badafaa69df39c6bce91526a957))
21+
22+
## [8.39.1](https://github.com/ParabolInc/parabol/compare/v8.39.0...v8.39.1) (2025-04-03)
23+
24+
25+
### Fixed
26+
27+
* tiptap mentions ([#11093](https://github.com/ParabolInc/parabol/issues/11093)) ([14f4670](https://github.com/ParabolInc/parabol/commit/14f46707e252403f2938185beb9abf7ef0442efb))
28+
829
## [8.39.0](https://github.com/ParabolInc/parabol/compare/v8.38.0...v8.39.0) (2025-04-02)
930

1031

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"description": "An open-source app for building smarter, more agile teams.",
44
"author": "Parabol Inc. <[email protected]> (http://github.com/ParabolInc)",
55
"license": "AGPL-3.0",
6-
"version": "8.39.0",
6+
"version": "8.39.2",
77
"repository": {
88
"type": "git",
99
"url": "https://github.com/ParabolInc/parabol"

packages/chronos/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "chronos",
3-
"version": "8.39.0",
3+
"version": "8.39.2",
44
"description": "A cron job scheduler",
55
"author": "Matt Krick <[email protected]>",
66
"homepage": "https://github.com/ParabolInc/parabol/tree/master/packages/chronos#readme",
@@ -25,6 +25,6 @@
2525
},
2626
"dependencies": {
2727
"cron": "^2.3.1",
28-
"parabol-server": "8.39.0"
28+
"parabol-server": "8.39.2"
2929
}
3030
}

packages/client/modules/email/components/SummaryEmail/MeetingSummaryEmail/SummaryPokerStories.tsx

+12
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,14 @@ const SummaryPokerStories = (props: Props) => {
7272
number
7373
title
7474
}
75+
... on _xGitLabIssue {
76+
__typename
77+
title
78+
}
79+
... on AzureDevOpsWorkItem {
80+
__typename
81+
title
82+
}
7583
}
7684
}
7785
}
@@ -105,6 +113,10 @@ const SummaryPokerStories = (props: Props) => {
105113
title = integration.summary
106114
} else if (integration?.__typename === '_xGitHubIssue') {
107115
title = integration.title
116+
} else if (integration?.__typename === '_xGitLabIssue') {
117+
title = integration.title
118+
} else if (integration?.__typename === 'AzureDevOpsWorkItem') {
119+
title = integration.title
108120
}
109121
const urlPath = `/meet/${meetingId}/estimate/${idx + 1}`
110122
const to = isEmail

packages/client/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"description": "An open-source app for building smarter, more agile teams.",
44
"author": "Parabol Inc. <[email protected]> (http://github.com/ParabolInc)",
55
"license": "AGPL-3.0",
6-
"version": "8.39.0",
6+
"version": "8.39.2",
77
"repository": {
88
"type": "git",
99
"url": "https://github.com/ParabolInc/parabol"

packages/client/utils/tiptapMentionConfig.ts

+7-5
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ const queryNode = graphql`
1313
viewer {
1414
team(teamId: $teamId) {
1515
teamMembers {
16-
id
17-
userId
1816
user {
1917
id
2018
picture
@@ -44,17 +42,21 @@ export const tiptapMentionConfig = (
4442
return (
4543
teamMembers
4644
.map((teamMember) => {
47-
const score = query ? stringScore(teamMember.user.preferredName, query) : 1
45+
const {user} = teamMember
46+
const {id, picture, preferredName} = user
47+
const score = query ? stringScore(preferredName, query) : 1
4848
return {
49-
teamMember,
49+
id,
50+
picture,
51+
preferredName,
5052
score
5153
}
5254
})
5355
.sort((a, b) => (a.score < b.score ? 1 : -1))
5456
.slice(0, 6)
5557
// If you type "Foo" and the options are "Foo" and "Giraffe", remove "Giraffe"
5658
.filter((obj, _idx, arr) => obj.score > 0 && arr[0]!.score - obj.score < 0.3)
57-
.map((s) => ({...s.teamMember}))
59+
.map((s) => ({id: s.id, picture: s.picture, preferredName: s.preferredName}))
5860
)
5961
},
6062

packages/embedder/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "parabol-embedder",
3-
"version": "8.39.0",
3+
"version": "8.39.2",
44
"description": "A service that computes embedding vectors from Parabol objects",
55
"author": "Jordan Husney <[email protected]>",
66
"homepage": "https://github.com/ParabolInc/parabol/tree/master/packages/embedder#readme",

packages/integration-tests/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "integration-tests",
33
"author": "Parabol Inc. <[email protected]> (http://github.com/ParabolInc)",
44
"license": "AGPL-3.0",
5-
"version": "8.39.0",
5+
"version": "8.39.2",
66
"description": "",
77
"main": "index.js",
88
"scripts": {

packages/mattermost-plugin/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import AtmosphereProvider from './AtmosphereProvider'
2121
import AutoLogin from './components/AutoLogin'
2222
import ModalRoot from './components/ModalRoot'
2323
import './index.css'
24-
import commands from './public/mattermost-plugin-commands.json'
24+
import commands from './plugin-commands.json'
2525

2626
export const init = async (registry: PluginRegistry, store: Store<GlobalState, AnyAction>) => {
2727
const serverUrl = getPluginServerRoute(store.getState())

packages/mattermost-plugin/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "parabol-mattermost-plugin",
3-
"version": "8.39.0",
3+
"version": "8.39.2",
44
"description": "A service that computes embedding vectors from Parabol objects",
55
"author": "Georg Bremer <[email protected]>",
66
"homepage": "https://github.com/ParabolInc/parabol/tree/master/packages/mattermost-plugin#readme",
@@ -60,7 +60,7 @@
6060
"@tiptap/extension-link": "^2.11.5",
6161
"@tiptap/starter-kit": "^2.11.5",
6262
"mattermost-redux": "5.33.1",
63-
"parabol-client": "8.39.0",
63+
"parabol-client": "8.39.2",
6464
"react-relay": "^18.2.0",
6565
"react-select": "5.8.2",
6666
"relay-runtime": "^18.1.1",

packages/server/graphql/public/mutations/createPage.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
import getKysely from '../../../postgres/getKysely'
2+
import {analytics} from '../../../utils/analytics/analytics'
23
import {getUserId} from '../../../utils/authorization'
34
import {MutationResolvers} from '../resolverTypes'
45

5-
const createPage: MutationResolvers['createPage'] = async (_source, _args, {authToken}) => {
6+
const createPage: MutationResolvers['createPage'] = async (
7+
_source,
8+
_args,
9+
{authToken, dataLoader}
10+
) => {
611
const userId = getUserId(authToken)
12+
const viewer = await dataLoader.get('users').loadNonNull(userId)
713
const page = await getKysely()
814
.insertInto('Page')
915
.values({userId})
1016
.returningAll()
1117
.executeTakeFirstOrThrow()
18+
analytics.pageCreated(viewer, page.id)
1219
return {page}
1320
}
1421

packages/server/graphql/public/mutations/generateInsight.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {SubscriptionChannel} from 'parabol-client/types/constEnums'
22
import getKysely from '../../../postgres/getKysely'
3+
import {analytics} from '../../../utils/analytics/analytics'
34
import {getUserId} from '../../../utils/authorization'
45
import publish from '../../../utils/publish'
56
import standardError from '../../../utils/standardError'
@@ -14,6 +15,7 @@ const generateInsight: MutationResolvers['generateInsight'] = async (
1415
) => {
1516
const {dataLoader, socketId: mutatorId, authToken} = context
1617
const viewerId = getUserId(authToken)
18+
const viewer = await dataLoader.get('users').loadNonNull(viewerId)
1719

1820
const hasInsightsFlag = await dataLoader
1921
.get('featureFlagByOwnerId')
@@ -65,7 +67,7 @@ const generateInsight: MutationResolvers['generateInsight'] = async (
6567
}
6668

6769
publish(SubscriptionChannel.TEAM, teamId, 'GenerateInsightSuccess', data, subOptions)
68-
70+
analytics.insightGenerated(viewer, insertedInsight.id, teamId)
6971
return data
7072
}
7173

packages/server/graphql/public/mutations/toggleTeamPrivacy.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import toTeamMemberId from '../../../../client/utils/relay/toTeamMemberId'
22
import getKysely from '../../../postgres/getKysely'
3+
import {analytics} from '../../../utils/analytics/analytics'
34
import {getUserId, isUserOrgAdmin} from '../../../utils/authorization'
45
import standardError from '../../../utils/standardError'
56
import {MutationResolvers} from '../resolverTypes'
@@ -10,6 +11,7 @@ const toggleTeamPrivacy: MutationResolvers['toggleTeamPrivacy'] = async (
1011
{authToken, dataLoader}
1112
) => {
1213
const viewerId = getUserId(authToken)
14+
const viewer = await dataLoader.get('users').loadNonNull(viewerId)
1315
const pg = getKysely()
1416

1517
const teamMemberId = toTeamMemberId(teamId, viewerId)
@@ -42,7 +44,7 @@ const toggleTeamPrivacy: MutationResolvers['toggleTeamPrivacy'] = async (
4244
team.isPublic = !team.isPublic
4345

4446
const data = {teamId}
45-
47+
analytics.teamPrivacyChanged(viewer, teamId, team.isPublic)
4648
return data
4749
}
4850

packages/server/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"description": "An open-source app for building smarter, more agile teams.",
44
"author": "Parabol Inc. <[email protected]> (http://github.com/ParabolInc)",
55
"license": "AGPL-3.0",
6-
"version": "8.39.0",
6+
"version": "8.39.2",
77
"repository": {
88
"type": "git",
99
"url": "https://github.com/ParabolInc/parabol"
@@ -134,7 +134,7 @@
134134
"oauth-1.0a": "^2.2.6",
135135
"openai": "^4.86.1",
136136
"oy-vey": "^0.12.1",
137-
"parabol-client": "8.39.0",
137+
"parabol-client": "8.39.2",
138138
"pg": "^8.5.1",
139139
"react": "^17.0.2",
140140
"react-dom": "^17.0.2",

packages/server/utils/analytics/analytics.ts

+19
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ export type AnalyticsEvent =
131131
| 'Sent Invite Accepted'
132132
| 'Notification Email Sent'
133133
| 'Team Joined'
134+
| 'Team Privacy Changed'
134135
// org
135136
| 'Upgrade CTA Clicked'
136137
| 'Organization Upgrade Attempted'
@@ -143,6 +144,10 @@ export type AnalyticsEvent =
143144
| 'Task Created'
144145
| 'Task Published'
145146
| 'Task Estimate Set'
147+
// page
148+
| 'Page Created'
149+
// insight
150+
| 'Insight Generated'
146151
// user
147152
| 'Account Created'
148153
| 'Account Removed'
@@ -509,6 +514,10 @@ class Analytics {
509514
})
510515
}
511516

517+
teamPrivacyChanged = (user: AnalyticsUser, teamId: string, isPublic: boolean) => {
518+
this.track(user, 'Team Privacy Changed', {teamId, isPublic})
519+
}
520+
512521
//org
513522
clickedUpgradeCTA = (user: AnalyticsUser, upgradeCTALocation: UpgradeCTALocationEnumType) => {
514523
this.track(user, 'Upgrade CTA Clicked', {upgradeCTALocation})
@@ -552,6 +561,16 @@ class Analytics {
552561
this.track(user, 'Task Estimate Set', taskEstimateProperties)
553562
}
554563

564+
// page
565+
pageCreated = (user: AnalyticsUser, pageId: number) => {
566+
this.track(user, 'Page Created', {pageId})
567+
}
568+
569+
// insight
570+
insightGenerated = (user: AnalyticsUser, insightId: number, teamId: string) => {
571+
this.track(user, 'Insight Generated', {insightId, teamId})
572+
}
573+
555574
// user
556575
accountCreated = (user: AnalyticsUser, isInvited: boolean, isPatient0: boolean) => {
557576
this.track(user, 'Account Created', {

0 commit comments

Comments
 (0)