Smart changelog (#5205)
Added a smart Changelog : - Publish the Changelog before the app release. If the release has not yet been pushed to production, do not display it. - When the app release is done, make the Changelog available with the correct date. - If the Changelog writing is delayed because the release has already been made, publish it immediately. - Display everything locally to be able to iterate on the changelog and have a preview Added an endpoint for the Changelog --------- Co-authored-by: Ady Beraud <a.beraud96@gmail.com> Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
This commit is contained in:
41
packages/twenty-website/src/app/api/releases/route.tsx
Normal file
41
packages/twenty-website/src/app/api/releases/route.tsx
Normal file
@ -0,0 +1,41 @@
|
||||
import { desc } from 'drizzle-orm';
|
||||
|
||||
import { getGithubReleaseDateFromReleaseNote } from '@/app/releases/utils/get-github-release-date-from-release-note';
|
||||
import { getReleases } from '@/app/releases/utils/get-releases';
|
||||
import { getVisibleReleases } from '@/app/releases/utils/get-visible-releases';
|
||||
import { findAll } from '@/database/database';
|
||||
import { GithubReleases, githubReleasesModel } from '@/database/model';
|
||||
|
||||
export const dynamic = 'force-dynamic';
|
||||
|
||||
export async function GET() {
|
||||
try {
|
||||
const githubReleases = (await findAll(
|
||||
githubReleasesModel,
|
||||
desc(githubReleasesModel.publishedAt),
|
||||
)) as GithubReleases[];
|
||||
|
||||
const latestGithubRelease = githubReleases[0];
|
||||
const releaseNotes = await getReleases();
|
||||
|
||||
const visibleReleasesNotes = getVisibleReleases(
|
||||
releaseNotes,
|
||||
latestGithubRelease.tagName,
|
||||
);
|
||||
|
||||
const formattedReleasesNotes = visibleReleasesNotes.map((releaseNote) => ({
|
||||
...releaseNote,
|
||||
publishedAt: getGithubReleaseDateFromReleaseNote(
|
||||
githubReleases,
|
||||
releaseNote.release,
|
||||
releaseNote.date,
|
||||
),
|
||||
}));
|
||||
|
||||
return Response.json(formattedReleasesNotes);
|
||||
} catch (error: any) {
|
||||
return new Response(`Github releases error: ${error?.message}`, {
|
||||
status: 500,
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user