src/vs/workbench/contrib/welcome/gettingStarted/browser/gettingStartedService.ts/GettingStartedService/getCategoryProgress
class GettingStartedService:	private getCategoryProgress(category: IGettingStartedCategory): IGettingStartedCategoryWithProgress {
		if (category.content.type === 'startEntry') {
			return { ...category, content: category.content, priority: 0 };
		}
		const stepsWithProgress = category.content.steps.map(step => this.getStepProgress(step));
		const stepsComplete = stepsWithProgress.filter(step => step.done);

		const isFeatured = category.isFeatured;

		const hasOpened = this.metadata.get(category.id)?.manaullyOpened;
		const firstSeenDate = this.metadata.get(category.id)?.firstSeen;
		const isNew = firstSeenDate && firstSeenDate > (+new Date() - NEW_WALKTHROUGH_TIME);

		const lastStepIDs = this.metadata.get(category.id)?.stepIDs;
		const hasNewSteps = lastStepIDs && (category.content.steps.length !== lastStepIDs.length || category.content.steps.some(({ id }, index) => id !== lastStepIDs[index]));

		let priority = 0;

		if (isFeatured) {
			priority += 20;
		}

		if (isNew && firstSeenDate) {
			priority += 10 + (NEW_WALKTHROUGH_TIME - (+new Date() - firstSeenDate)) / (24 * 60 * 60 * 1000);
		}

		if (hasNewSteps) {
			priority += 1;
		}

		return {
			...category,
			priority,
			content: {
				type: 'steps',
				steps: stepsWithProgress,
				accolades:
					isFeatured ? 'featured'
						: (isNew && !hasOpened) ? 'newCategory'
							: hasNewSteps ? 'newContent'
								: undefined,

				// accolades: Math.random() < 0.333 ? 'featured' : Math.random() < 0.5 ? 'newCategory' : 'newContent',
				stepsComplete: stepsComplete.length,
				stepsTotal: stepsWithProgress.length,
				done: stepsComplete.length === stepsWithProgress.length,
			}
		};
	}