chore: bump version to 2.4.0 (#20345)

## Summary

- Moves current version to previous versions array
- Sets TWENTY_CURRENT_VERSION to the new version
- Updates TWENTY_NEXT_VERSIONS with the next minor version

## Checklist

- [x] Verify version constants are correct

---------

Co-authored-by: Github Action Deploy <github-action-deploy@twenty.com>
Co-authored-by: prastoin <paul@twenty.com>
This commit is contained in:
twenty-pr[bot]
2026-05-07 09:41:47 +00:00
committed by GitHub
parent 9f930aa366
commit f720186122
5 changed files with 23 additions and 23 deletions
@@ -1,15 +1,15 @@
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`InstanceCommandGenerationService should encode version correctly in file and class names 1`] = `
{
"className": "TestFastInstanceCommand",
"fileName": "1-21-instance-command-fast-1775000000000-test.ts",
"fileName": "30-40-instance-command-fast-1775000000000-test.ts",
"fileTemplate": "import { QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface';
@RegisteredInstanceCommand('1.21.0', 1775000000000)
@RegisteredInstanceCommand('30.40.0', 1775000000000)
export class TestFastInstanceCommand implements FastInstanceCommand {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query('SELECT 1');
@@ -26,13 +26,13 @@ export class TestFastInstanceCommand implements FastInstanceCommand {
exports[`InstanceCommandGenerationService should escape backslashes in SQL queries 1`] = `
{
"className": "UpdatePathFastInstanceCommand",
"fileName": "2-3-instance-command-fast-1775000000000-update-path.ts",
"fileName": "10-20-instance-command-fast-1775000000000-update-path.ts",
"fileTemplate": "import { QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface';
@RegisteredInstanceCommand('2.3.0', 1775000000000)
@RegisteredInstanceCommand('10.20.0', 1775000000000)
export class UpdatePathFastInstanceCommand implements FastInstanceCommand {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query('UPDATE "core"."config" SET "value" = E\\'path\\\\\\\\to\\\\\\\\file\\'');
@@ -49,13 +49,13 @@ export class UpdatePathFastInstanceCommand implements FastInstanceCommand {
exports[`InstanceCommandGenerationService should escape single quotes in SQL queries 1`] = `
{
"className": "UpdateConfigFastInstanceCommand",
"fileName": "2-3-instance-command-fast-1775000000000-update-config.ts",
"fileName": "10-20-instance-command-fast-1775000000000-update-config.ts",
"fileTemplate": "import { QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface';
@RegisteredInstanceCommand('2.3.0', 1775000000000)
@RegisteredInstanceCommand('10.20.0', 1775000000000)
export class UpdateConfigFastInstanceCommand implements FastInstanceCommand {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query('UPDATE "core"."config" SET "value" = \\'it\\'\\'s done\\'');
@@ -72,13 +72,13 @@ export class UpdateConfigFastInstanceCommand implements FastInstanceCommand {
exports[`InstanceCommandGenerationService should generate a migration with a single up/down query 1`] = `
{
"className": "AddFooColumnFastInstanceCommand",
"fileName": "2-3-instance-command-fast-1775000000000-add-foo-column.ts",
"fileName": "10-20-instance-command-fast-1775000000000-add-foo-column.ts",
"fileTemplate": "import { QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface';
@RegisteredInstanceCommand('2.3.0', 1775000000000)
@RegisteredInstanceCommand('10.20.0', 1775000000000)
export class AddFooColumnFastInstanceCommand implements FastInstanceCommand {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query('ALTER TABLE "core"."user" ADD "foo" varchar');
@@ -95,13 +95,13 @@ export class AddFooColumnFastInstanceCommand implements FastInstanceCommand {
exports[`InstanceCommandGenerationService should generate a migration with multiple queries 1`] = `
{
"className": "CreateTaskTableFastInstanceCommand",
"fileName": "2-3-instance-command-fast-1775000000000-create-task-table.ts",
"fileName": "10-20-instance-command-fast-1775000000000-create-task-table.ts",
"fileTemplate": "import { QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface';
@RegisteredInstanceCommand('2.3.0', 1775000000000)
@RegisteredInstanceCommand('10.20.0', 1775000000000)
export class CreateTaskTableFastInstanceCommand implements FastInstanceCommand {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query('CREATE TABLE "core"."task" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "name" varchar NOT NULL)');
@@ -120,13 +120,13 @@ export class CreateTaskTableFastInstanceCommand implements FastInstanceCommand {
exports[`InstanceCommandGenerationService should generate a migration with query parameters 1`] = `
{
"className": "SeedSettingFastInstanceCommand",
"fileName": "2-3-instance-command-fast-1775000000000-seed-setting.ts",
"fileName": "10-20-instance-command-fast-1775000000000-seed-setting.ts",
"fileTemplate": "import { QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface';
@RegisteredInstanceCommand('2.3.0', 1775000000000)
@RegisteredInstanceCommand('10.20.0', 1775000000000)
export class SeedSettingFastInstanceCommand implements FastInstanceCommand {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query('INSERT INTO "core"."setting" ("key", "value") VALUES ($1, $2)', ["theme","dark"]);
@@ -143,13 +143,13 @@ export class SeedSettingFastInstanceCommand implements FastInstanceCommand {
exports[`InstanceCommandGenerationService should generate a slow instance command with populated up/down 1`] = `
{
"className": "MakeColumnNotNullableSlowInstanceCommand",
"fileName": "2-3-instance-command-slow-1775000000000-make-column-not-nullable.ts",
"fileName": "10-20-instance-command-slow-1775000000000-make-column-not-nullable.ts",
"fileTemplate": "import { DataSource, QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { SlowInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/slow-instance-command.interface';
@RegisteredInstanceCommand('2.3.0', 1775000000000, { type: 'slow' })
@RegisteredInstanceCommand('10.20.0', 1775000000000, { type: 'slow' })
export class MakeColumnNotNullableSlowInstanceCommand implements SlowInstanceCommand {
async runDataMigration(dataSource: DataSource): Promise<void> {
// TODO: implement data backfill before the DDL migration
@@ -170,13 +170,13 @@ export class MakeColumnNotNullableSlowInstanceCommand implements SlowInstanceCom
exports[`InstanceCommandGenerationService should use default migration name in class and file names 1`] = `
{
"className": "AutoGeneratedFastInstanceCommand",
"fileName": "2-3-instance-command-fast-1775000000000-auto-generated.ts",
"fileName": "10-20-instance-command-fast-1775000000000-auto-generated.ts",
"fileTemplate": "import { QueryRunner } from 'typeorm';
import { RegisteredInstanceCommand } from 'src/engine/core-modules/upgrade/decorators/registered-instance-command.decorator';
import { FastInstanceCommand } from 'src/engine/core-modules/upgrade/interfaces/fast-instance-command.interface';
@RegisteredInstanceCommand('2.3.0', 1775000000000)
@RegisteredInstanceCommand('10.20.0', 1775000000000)
export class AutoGeneratedFastInstanceCommand implements FastInstanceCommand {
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query('ALTER TABLE "core"."user" ADD "bar" integer');
@@ -2,11 +2,10 @@ import { Test } from '@nestjs/testing';
import { getDataSourceToken } from '@nestjs/typeorm';
import { InstanceCommandGenerationService } from 'src/database/commands/instance-command-generation.service';
import { TWENTY_CURRENT_VERSION } from 'src/engine/core-modules/upgrade/constants/twenty-current-version.constant';
import { TWENTY_PREVIOUS_VERSIONS } from 'src/engine/core-modules/upgrade/constants/twenty-previous-versions.constant';
import { type TwentyAllVersion } from 'src/engine/core-modules/upgrade/constants/twenty-all-versions.constant';
const VERSION_A = TWENTY_CURRENT_VERSION;
const VERSION_B = TWENTY_PREVIOUS_VERSIONS[0];
const VERSION_A = '10.20.0' as TwentyAllVersion;
const VERSION_B = '30.40.0' as TwentyAllVersion;
const FIXED_TIMESTAMP = 1775000000000;
@@ -7,4 +7,4 @@
* |___/
*/
export const TWENTY_CURRENT_VERSION = '2.3.0' as const;
export const TWENTY_CURRENT_VERSION = '2.4.0' as const;
@@ -7,4 +7,4 @@
* |___/
*/
export const TWENTY_NEXT_VERSIONS = ['2.4.0'] as const;
export const TWENTY_NEXT_VERSIONS = ['2.5.0'] as const;
@@ -14,4 +14,5 @@ export const TWENTY_PREVIOUS_VERSIONS = [
'2.0.0',
'2.1.0',
'2.2.0',
'2.3.0',
] as const;