Skip to content

Commit

Permalink
chore(release): Test and deploy to Production v8.10.0 (#10564)
Browse files Browse the repository at this point in the history
Signed-off-by: Matt Krick <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Georg Bremer <[email protected]>
Co-authored-by: Matt Krick <[email protected]>
Co-authored-by: Jordan Husney <[email protected]>
Co-authored-by: parabol-release-bot[bot] <150284312+parabol-release-bot[bot]@users.noreply.github.com>
Co-authored-by: Nick O'Ferrall <[email protected]>
Co-authored-by: Terry Acker <[email protected]>
Co-authored-by: Bruce Tian <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: snyk-bot <[email protected]>
Co-authored-by: GitHub Action <[email protected]>
Co-authored-by: Rafa <[email protected]>
Co-authored-by: Dale Bumblis <[email protected]>
Co-authored-by: Sven Seeberg <[email protected]>
Co-authored-by: github-actions <[email protected]>
  • Loading branch information
15 people authored Dec 10, 2024
1 parent af8f225 commit e9bd5ee
Show file tree
Hide file tree
Showing 75 changed files with 44,091 additions and 19,359 deletions.
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "8.8.0"
".": "8.10.0"
}
24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,30 @@ This project adheres to [Semantic Versioning](http://semver.org/).

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

## [8.10.0](https://github.com/ParabolInc/parabol/compare/v8.9.0...v8.10.0) (2024-12-10)


### Added

* GitLab voting to time estimate, weight or label ([#10549](https://github.com/ParabolInc/parabol/issues/10549)) ([1cdbf0b](https://github.com/ParabolInc/parabol/commit/1cdbf0b7b30da60b53cddf76076070b2a9a4edab))


### Fixed

* tasks in poker scoping ([#10563](https://github.com/ParabolInc/parabol/issues/10563)) ([d2b1ef8](https://github.com/ParabolInc/parabol/commit/d2b1ef8d2253100e518b78d10ee9bd36da969878))

## [8.9.0](https://github.com/ParabolInc/parabol/compare/v8.8.0...v8.9.0) (2024-12-09)


### Added

* **node:** upgrade to 20.18.1, latest stable in v20 ([#10558](https://github.com/ParabolInc/parabol/issues/10558)) ([6061003](https://github.com/ParabolInc/parabol/commit/60610038cd30532e36330582a96454de5dbca122))


### Changed

* Use Logger instead of console ([#10557](https://github.com/ParabolInc/parabol/issues/10557)) ([31ce19b](https://github.com/ParabolInc/parabol/commit/31ce19bbfc21da7edb2b0d57df126a0d21f85930))

## [8.8.0](https://github.com/ParabolInc/parabol/compare/v8.7.1...v8.8.0) (2024-12-03)


Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"description": "An open-source app for building smarter, more agile teams.",
"author": "Parabol Inc. <[email protected]> (http://github.com/ParabolInc)",
"license": "AGPL-3.0",
"version": "8.8.0",
"version": "8.10.0",
"repository": {
"type": "git",
"url": "https://github.com/ParabolInc/parabol"
Expand All @@ -13,7 +13,7 @@
"url": "https://github.com/ParabolInc/parabol/issues"
},
"engines": {
"node": "^20.11.0",
"node": "^20.18.1",
"yarn": "^1.22.5"
},
"private": true,
Expand Down
7 changes: 4 additions & 3 deletions packages/chronos/chronos.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import {CronJob} from 'cron'
import getGraphQLExecutor from 'parabol-server/utils/getGraphQLExecutor'
import {Logger} from 'parabol-server/utils/Logger'
import publishWebhookGQL from 'parabol-server/utils/publishWebhookGQL'

interface PossibleJob {
Expand Down Expand Up @@ -124,13 +125,13 @@ const chronos = () => {
cronTime: cronTime!,
onTick
})
console.log(`🌱 Chronos Job ${name}: STARTED`)
Logger.log(`🌱 Chronos Job ${name}: STARTED`)
} catch {
console.log(`🌱 Chronos Job ${name}: SKIPPED`)
Logger.log(`🌱 Chronos Job ${name}: SKIPPED`)
}
})

console.log(`\n🌾🌾🌾 Server ID: ${SERVER_ID}. Ready for Chronos 🌾🌾🌾`)
Logger.log(`\n🌾🌾🌾 Server ID: ${SERVER_ID}. Ready for Chronos 🌾🌾🌾`)
}

chronos()
6 changes: 3 additions & 3 deletions packages/chronos/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "chronos",
"version": "8.8.0",
"version": "8.10.0",
"description": "A cron job scheduler",
"author": "Matt Krick <[email protected]>",
"homepage": "https://github.com/ParabolInc/parabol/tree/master/packages/chronos#readme",
Expand All @@ -21,10 +21,10 @@
},
"devDependencies": {
"@types/cron": "^2.0.1",
"@types/node": "^20.11.17"
"@types/node": "^20.14.8"
},
"dependencies": {
"cron": "^2.3.1",
"parabol-server": "8.8.0"
"parabol-server": "8.10.0"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ const EditGitHubLabelTemplateModal = (props: Props) => {
}
return (
<StyledDialogContainer>
<DialogTitle>{'Edit GitHub Label'}</DialogTitle>
<DialogTitle>{'Edit Label Template'}</DialogTitle>
<DialogContent>
<div>
<LabelTemplateInput
Expand Down
4 changes: 2 additions & 2 deletions packages/client/components/GitHubFieldDimensionDropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {PALETTE} from '~/styles/paletteV3'
import {GitHubFieldDimensionDropdown_stage$key} from '../__generated__/GitHubFieldDimensionDropdown_stage.graphql'
import {MenuPosition} from '../hooks/useCoords'
import useMenu from '../hooks/useMenu'
import interpolateGitHubLabelTemplate from '../shared/interpolateGitHubLabelTemplate'
import interpolateVotingLabelTemplate from '../shared/interpolateVotingLabelTemplate'
import {SprintPokerDefaults} from '../types/constEnums'
import GitHubFieldMenu from './GitHubFieldMenu'
import PlainButton from './PlainButton/PlainButton'
Expand Down Expand Up @@ -76,7 +76,7 @@ const GitHubFieldDimensionDropdown = (props: Props) => {

const label =
labelLookup[serviceFieldName as keyof typeof labelLookup] ||
interpolateGitHubLabelTemplate(serviceFieldName, finalScore)
interpolateVotingLabelTemplate(serviceFieldName, finalScore)

return (
<>
Expand Down
4 changes: 2 additions & 2 deletions packages/client/components/GitHubFieldMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import textOverflow from '../styles/helpers/textOverflow'
import {PALETTE} from '../styles/paletteV3'
import {FONT_FAMILY} from '../styles/typographyV2'
import {SprintPokerDefaults} from '../types/constEnums'
import EditGitHubLabelTemplateModal from './EditGitHubLabelTemplateModal'
import EditVotingLabelTemplateModal from './EditVotingLabelTemplateModal'
import FlatButton from './FlatButton'
import Menu from './Menu'
import MenuItem from './MenuItem'
Expand Down Expand Up @@ -186,7 +186,7 @@ const GitHubFieldMenu = (props: Props) => {
/>
</Menu>
{modalPortal(
<EditGitHubLabelTemplateModal
<EditVotingLabelTemplateModal
updateLabelTemplate={handleClick}
closePortal={closeModal}
defaultValue={serviceFieldTemplate}
Expand Down
15 changes: 12 additions & 3 deletions packages/client/components/GitLabFieldDimensionDropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {PALETTE} from '~/styles/paletteV3'
import {GitLabFieldDimensionDropdown_stage$key} from '../__generated__/GitLabFieldDimensionDropdown_stage.graphql'
import {MenuPosition} from '../hooks/useCoords'
import useMenu from '../hooks/useMenu'
import interpolateVotingLabelTemplate from '../shared/interpolateVotingLabelTemplate'
import {SprintPokerDefaults} from '../types/constEnums'
import GitLabFieldMenu from './GitLabFieldMenu'
import PlainButton from './PlainButton/PlainButton'
Expand Down Expand Up @@ -39,6 +40,9 @@ const StyledIcon = styled(ExpandMore)<{isFacilitator: boolean}>(({isFacilitator}
}))

const labelLookup = {
[SprintPokerDefaults.GITLAB_FIELD_TIME_ESTIMATE]:
SprintPokerDefaults.GITLAB_FIELD_TIME_ESTIMATE_LABEL,
[SprintPokerDefaults.GITLAB_FIELD_WEIGHT]: SprintPokerDefaults.GITLAB_FIELD_WEIGHT_LABEL,
[SprintPokerDefaults.SERVICE_FIELD_COMMENT]: SprintPokerDefaults.SERVICE_FIELD_COMMENT_LABEL,
[SprintPokerDefaults.SERVICE_FIELD_NULL]: SprintPokerDefaults.SERVICE_FIELD_NULL_LABEL
}
Expand All @@ -57,11 +61,14 @@ const GitLabFieldDimensionDropdown = (props: Props) => {
`,
stageRef
)
const {serviceField} = stage
const {finalScore, serviceField} = stage
const {name: serviceFieldName} = serviceField
const {togglePortal, menuPortal, originRef, menuProps} = useMenu<HTMLButtonElement>(
MenuPosition.UPPER_RIGHT,
{isDropdown: true}
{
isDropdown: true,
id: 'gitlabFieldMenu'
}
)

const onClick = () => {
Expand All @@ -70,7 +77,9 @@ const GitLabFieldDimensionDropdown = (props: Props) => {
clearError()
}

const label = labelLookup[serviceFieldName as keyof typeof labelLookup]
const label =
labelLookup[serviceFieldName as keyof typeof labelLookup] ||
interpolateVotingLabelTemplate(serviceFieldName, finalScore)

return (
<>
Expand Down
142 changes: 126 additions & 16 deletions packages/client/components/GitLabFieldMenu.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,72 @@
import styled from '@emotion/styled'
import {Edit} from '@mui/icons-material'
import graphql from 'babel-plugin-relay/macro'
import {useFragment} from 'react-relay'
import {GitLabFieldMenu_stage$key} from '../__generated__/GitLabFieldMenu_stage.graphql'
import useAtmosphere from '../hooks/useAtmosphere'
import {MenuProps} from '../hooks/useMenu'
import useModal from '../hooks/useModal'
import UpdateGitLabDimensionFieldMutation from '../mutations/UpdateGitLabDimensionFieldMutation'
import textOverflow from '../styles/helpers/textOverflow'
import {PALETTE} from '../styles/paletteV3'
import {FONT_FAMILY} from '../styles/typographyV2'
import {SprintPokerDefaults} from '../types/constEnums'
import EditVotingLabelTemplateModal from './EditVotingLabelTemplateModal'
import FlatButton from './FlatButton'
import Menu from './Menu'
import MenuItem from './MenuItem'

const LabelOptionRoot = styled('div')({
display: 'flex',
justifyContent: 'space-between',
minWidth: '300px'
})

const LabelOptionBlock = styled('div')({
display: 'block',
flexDirection: 'column',
maxWidth: '200px',
paddingTop: 12,
paddingLeft: 16,
paddingBottom: 12,
flexGrow: 1
})

const LabelOptionName = styled('div')({
color: PALETTE.SLATE_700,
display: 'flex',
fontFamily: FONT_FAMILY.SANS_SERIF,
lineHeight: '24px'
})

const LabelOptionSub = styled('div')({
...textOverflow,
color: PALETTE.SLATE_600,
fontFamily: FONT_FAMILY.SANS_SERIF,
fontSize: 12,
lineHeight: '16px'
})

const EditButtonGroup = styled('div')({
paddingLeft: '8px',
paddingRight: '8px',
marginTop: 'auto',
marginBottom: 'auto'
})
const Button = styled(FlatButton)({
alignItems: 'center',
color: PALETTE.SLATE_600,
height: 32,
justifyContent: 'center',
padding: 0,
width: 32
})

const ActionButton = styled(Edit)({
height: 18,
width: 18
})

interface Props {
menuProps: MenuProps
stageRef: GitLabFieldMenu_stage$key
Expand Down Expand Up @@ -45,14 +104,24 @@ const GitLabFieldMenu = (props: Props) => {
const {name: dimensionName} = dimensionRef
const {name: serviceFieldName} = serviceField
const defaults = [
SprintPokerDefaults.GITLAB_FIELD_TIME_ESTIMATE,
SprintPokerDefaults.GITLAB_FIELD_WEIGHT,
SprintPokerDefaults.SERVICE_FIELD_COMMENT,
SprintPokerDefaults.SERVICE_FIELD_NULL
] as string[]
const defaultActiveIdx = defaults.indexOf(serviceFieldName)
const {
modalPortal,
openPortal,
closePortal: closeModal
} = useModal({
id: 'editGitLabLabel'
})

if (task?.integration?.__typename !== '_xGitLabIssue') return null
const {integration} = task
const {projectId} = integration
if (!projectId) return null
const handleClick = (labelTemplate: string) => () => {
if (labelTemplate !== serviceFieldName) {
UpdateGitLabDimensionFieldMutation(
Expand All @@ -75,23 +144,64 @@ const GitLabFieldMenu = (props: Props) => {
}
closePortal()
}

const openEditModal = (e: React.MouseEvent) => {
e.stopPropagation()
openPortal()
}
const defaultLabelTemplate = `${dimensionName}: {{#}}`
const serviceFieldTemplate = defaults.includes(serviceFieldName)
? defaultLabelTemplate
: serviceFieldName
return (
<Menu
ariaLabel={'Select whether to publish estimate as a comment in GitLab'}
portalStatus={portalStatus}
isDropdown={isDropdown}
defaultActiveIdx={defaultActiveIdx}
>
<MenuItem
label={SprintPokerDefaults.SERVICE_FIELD_COMMENT_LABEL}
onClick={handleClick(SprintPokerDefaults.SERVICE_FIELD_COMMENT)}
/>
<MenuItem
label={SprintPokerDefaults.SERVICE_FIELD_NULL_LABEL}
onClick={handleClick(SprintPokerDefaults.SERVICE_FIELD_NULL)}
/>
</Menu>
<>
<Menu
ariaLabel={'Select whether to publish estimate as a comment in GitLab'}
portalStatus={portalStatus}
isDropdown={isDropdown}
defaultActiveIdx={defaultActiveIdx}
>
<MenuItem
label={
<LabelOptionRoot>
<LabelOptionBlock>
<LabelOptionName>{'As a label'}</LabelOptionName>
<LabelOptionSub>{serviceFieldTemplate}</LabelOptionSub>
</LabelOptionBlock>
<EditButtonGroup>
<Button onClick={openEditModal} size='small'>
<ActionButton />
</Button>
</EditButtonGroup>
</LabelOptionRoot>
}
onClick={handleClick(serviceFieldTemplate)}
/>
<MenuItem
label={SprintPokerDefaults.GITLAB_FIELD_TIME_ESTIMATE_LABEL}
onClick={handleClick(SprintPokerDefaults.GITLAB_FIELD_TIME_ESTIMATE)}
/>
<MenuItem
label={SprintPokerDefaults.GITLAB_FIELD_WEIGHT_LABEL}
onClick={handleClick(SprintPokerDefaults.GITLAB_FIELD_WEIGHT)}
/>
<MenuItem
label={SprintPokerDefaults.SERVICE_FIELD_COMMENT_LABEL}
onClick={handleClick(SprintPokerDefaults.SERVICE_FIELD_COMMENT)}
/>
<MenuItem
label={SprintPokerDefaults.SERVICE_FIELD_NULL_LABEL}
onClick={handleClick(SprintPokerDefaults.SERVICE_FIELD_NULL)}
/>
</Menu>
{modalPortal(
<EditVotingLabelTemplateModal
updateLabelTemplate={handleClick}
closePortal={closeModal}
defaultValue={serviceFieldTemplate}
placeholder={defaultLabelTemplate}
/>
)}
</>
)
}

Expand Down
11 changes: 8 additions & 3 deletions packages/client/components/ParabolScopingSearchResultItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,14 @@ const ParabolScopingSearchResultItem = (props: Props) => {
const disabled = !isSelected && usedServiceTaskIds.size >= Threshold.MAX_POKER_STORIES
const atmosphere = useAtmosphere()
const {onCompleted, onError, submitMutation, submitting} = useMutationProps()
const {editor, linkState, setLinkState} = useTipTapTaskEditor(content, {atmosphere, teamId})
const isEditingThisItem = !plaintextContent
const {editor, linkState, setLinkState} = useTipTapTaskEditor(content, {
atmosphere,
teamId,
readOnly: !isEditingThisItem
})
const {useTaskChild, addTaskChild, removeTaskChild, isTaskFocused} =
useTaskChildFocus(serviceTaskId)
const isEditingThisItem = !plaintextContent

const updatePokerScope = () => {
if (submitting || disabled) return
Expand All @@ -96,7 +100,8 @@ const ParabolScopingSearchResultItem = (props: Props) => {
const handleTaskUpdate = () => {
if (!editor) return
const isFocused = isTaskFocused()
if (editor.isEmpty && !isFocused) {
if (isFocused) return
if (editor.isEmpty) {
DeleteTaskMutation(atmosphere, {taskId: serviceTaskId})
return
}
Expand Down
Loading

0 comments on commit e9bd5ee

Please sign in to comment.