Add a "Read previous changes" accordion to the What's new dialog and backfill the changelog history from git. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
197 lines
4.7 KiB
TypeScript
197 lines
4.7 KiB
TypeScript
import packageInfo from '../../package.json';
|
||
|
||
/**
|
||
* Release notes shown in the "What's new" dialog. This is the single source of
|
||
* truth for the changelog: add a new entry at the top of `changelog` whenever
|
||
* the version in package.json is bumped, and the dialog will surface it once per
|
||
* user on their next login (see $lib/whats-new and WhatsNewDialog.svelte).
|
||
*/
|
||
export type ChangelogEntry = {
|
||
version: string;
|
||
/** ISO date (YYYY-MM-DD) the version shipped. */
|
||
date: string;
|
||
highlights: string[];
|
||
};
|
||
|
||
/** The running app version, read straight from package.json at build time. */
|
||
export const APP_VERSION: string = packageInfo.version;
|
||
|
||
export const changelog: ChangelogEntry[] = [
|
||
{
|
||
version: '0.1.36',
|
||
date: '2026-06-21',
|
||
highlights: [
|
||
'App: Bug fixes & improvements.',
|
||
'App: General improvements.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.35',
|
||
date: '2026-06-21',
|
||
highlights: [
|
||
'App: Bug fixes & improvements.',
|
||
'App: General improvements.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.34',
|
||
date: '2026-06-21',
|
||
highlights: [
|
||
'App: Bug fixes & improvements.',
|
||
'App: General improvements.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.33',
|
||
date: '2026-06-21',
|
||
highlights: [
|
||
'App: Mix Calculator & Ingredients improvements.',
|
||
'App: Bug fixes & improvements.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.32',
|
||
date: '2026-06-21',
|
||
highlights: [
|
||
'Mix Calculator: Added search.',
|
||
'Ingredients: Added ingredient categories.',
|
||
'Throughput: Tidy-up and refinements.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.31',
|
||
date: '2026-06-18',
|
||
highlights: [
|
||
'Mix Editor: Multi-row editing.',
|
||
'App: Bug fixes & improvements.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.30',
|
||
date: '2026-06-18',
|
||
highlights: [
|
||
'Throughput: Overview now shows today-only mix cards.',
|
||
'Mix Editor: Fixed an error when saving a mix formula.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.29',
|
||
date: '2026-06-18',
|
||
highlights: [
|
||
'Mix Editor: Editing a % no longer rebalances the other ingredients.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.28',
|
||
date: '2026-06-17',
|
||
highlights: [
|
||
'Editor & Throughput: Updates and improvements.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.27',
|
||
date: '2026-06-16',
|
||
highlights: [
|
||
'Editor: Edit a mix’s resolved formula directly, with % and kg entry on each row.',
|
||
'Editor: New mix and new ingredient buttons.',
|
||
'Throughput: Power BI / external API now live.',
|
||
'App: Security hardening on API responses.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.23',
|
||
date: '2026-06-15',
|
||
highlights: [
|
||
'App: Improvements & bug fixes.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.22',
|
||
date: '2026-06-15',
|
||
highlights: [
|
||
'Web App - Throughput module is now live.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.21',
|
||
date: '2026-06-14',
|
||
highlights: [
|
||
'Mix Calculator: Composer restyle.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.20',
|
||
date: '2026-06-13',
|
||
highlights: [
|
||
'App - Improvements',
|
||
'App - Bug fixes'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.19',
|
||
date: '2026-06-13',
|
||
highlights: [
|
||
'Throughput: Overview view added.',
|
||
'App: Responsive header.'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.18',
|
||
date: '2026-06-12',
|
||
highlights: [
|
||
'App - Improvements',
|
||
'App - Bug fixes'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.17',
|
||
date: '2026-06-12',
|
||
highlights: [
|
||
'App - Improvements',
|
||
'App - Mix Calculator bug fixes'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.14',
|
||
date: '2026-06-11',
|
||
highlights: [
|
||
'Web App: Improved mix calculator',
|
||
'Web App: Improved design'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.12',
|
||
date: '2026-06-10',
|
||
highlights: [
|
||
'Mix Calculator: Changed from selecting Product to Mix.',
|
||
'Web app design improved',
|
||
'Throughput tab ready for testing',
|
||
'Costing Editor tab ready for testing'
|
||
]
|
||
},
|
||
{
|
||
version: '0.1.11',
|
||
date: '2026-06-03',
|
||
highlights: [
|
||
'Costing Editor: First release.'
|
||
]
|
||
}
|
||
];
|
||
|
||
/** The changelog entry matching a specific version, if one exists. */
|
||
export function changelogFor(version: string): ChangelogEntry | undefined {
|
||
return changelog.find((entry) => entry.version === version);
|
||
}
|
||
|
||
/** The most recent changelog entry, regardless of the running version. */
|
||
export const latestChangelog: ChangelogEntry | undefined = changelog[0];
|
||
|
||
/**
|
||
* The entry the "What's new" dialog shows. Prefer an exact match for the running
|
||
* version, but fall back to the latest documented entry so the manual button
|
||
* always opens something even when the current build's version (e.g. a hotfix
|
||
* suffix like `0.1.24b`) isn't itself listed in the changelog.
|
||
*/
|
||
export const currentChangelog: ChangelogEntry | undefined =
|
||
changelogFor(APP_VERSION) ?? latestChangelog;
|