From d59d0fc40e42fd5bc91c30e36fd5bd07f0819056 Mon Sep 17 00:00:00 2001 From: Dylan Roussel Date: Fri, 28 Aug 2026 18:35:58 +0200 Subject: [PATCH] Release cleanup --- package.json | 2 +- src/app/(home)/_components/sections/work.tsx | 26 +++----------- src/app/(home)/_data/projects.ts | 36 ++++++------------- .../[slug]/_components/case-study-header.tsx | 2 +- src/components/debug/selection.ts | 5 ++- src/components/ui/video.tsx | 2 -- src/lib/mcu.ts | 2 +- src/theme/material.ts | 2 +- 8 files changed, 21 insertions(+), 56 deletions(-) diff --git a/package.json b/package.json index eb2b401..39d0cf5 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "format": "prettier --write .", "db:generate": "drizzle-kit generate --config=drizzle.config.ts", "db:migrate": "drizzle-kit migrate --config=drizzle.config.ts", - "db:push": "drizzle-kit push:pg --config=drizzle.config.ts" + "db:push": "drizzle-kit push --config=drizzle.config.ts" }, "dependencies": { "@evowizz/material-color-utilities-canary": "0.4.0-canary.1", diff --git a/src/app/(home)/_components/sections/work.tsx b/src/app/(home)/_components/sections/work.tsx index 13cd42a..a6d5930 100644 --- a/src/app/(home)/_components/sections/work.tsx +++ b/src/app/(home)/_components/sections/work.tsx @@ -8,27 +8,9 @@ import { SectionTitle } from '../section-title' import { Reveal } from '@/components/ui/reveal' import { CountUp } from '../count-up' -const SENTENCES: Record = { - Inware: 'An Android app I have been building since 2018 to answer one question: what is actually inside your phone?', - 'Personal Website': 'The page you are reading, built with Next.js and open source from front to back.', - Cosmose: 'A small demo gallery of Jetpack Compose components and animations.', - Common: 'A Kotlin library of the utilities and extensions I kept rewriting for Android.', - 'De-Gmojify': 'A Chrome extension that swaps Google emojis for the ones your system already ships.', - Actio: 'A Figma plugin that resizes frames to an aspect ratio, so nobody does the math by hand.', -} - -const STAT_LABELS: Record = { - downloads: 'Downloads', - rating: 'Rating, about 2,000 reviews', -} - const lead = projects.find((project) => project.spotlight) const rest = projects.filter((project) => !project.spotlight && !project.deprecated) -const sentenceFor = (project: Project) => SENTENCES[project.title] ?? project.description - -const statValue = (stat: { value: string; label: string }) => (stat.label === 'rating' ? `${stat.value}/5` : stat.value) - /** Counts "500k+" up. Leaves non-integer values like "4.7/5" static. */ const StatValue = ({ value }: { value: string }) => { const match = /^(\d+)(\D*)$/.exec(value) @@ -69,7 +51,7 @@ const Lead = ({ project }: { project: Project }) => (
-

{sentenceFor(project)}

+

{project.description}

{project.links[0] && ( @@ -107,9 +89,9 @@ const Lead = ({ project }: { project: Project }) => (
{project.spotlightStats?.map((stat) => (
-
{STAT_LABELS[stat.label] ?? stat.label}
+
{stat.label}
- +
))} @@ -131,7 +113,7 @@ const Row = ({ project }: { project: Project }) => {

{project.title}

-

{sentenceFor(project)}

+

{project.description}

{link ? ( ({ label: 'Google Play', }) -export type SpotlightStat = { +type SpotlightStat = { value: string label: string } -export type ProjectImage = { +type ProjectImage = { path: string alt: string } @@ -33,8 +33,6 @@ export type Project = { description: string image?: ProjectImage techStack: string[] - openSource: boolean - featured?: boolean spotlight?: boolean // Rendered as the oversized lead block in Selected Work spotlightStats?: SpotlightStat[] deprecated?: boolean @@ -46,18 +44,16 @@ export const projects: Project[] = [ { title: 'Inware', description: - "An Android app I've been building since 2018 to answer one question: what is actually inside your phone? It digs into the hardware and software (CPU, display, sensors, camera, battery) and themes itself to your wallpaper with Material You.", + 'An Android app I have been building since 2018 to answer one question: what is actually inside your phone?', image: { path: '/content/projects/inware-promo.png', alt: 'Screens from the Inware app on Android', }, techStack: ['Kotlin', 'Jetpack Compose', 'Android'], - openSource: false, - featured: true, spotlight: true, spotlightStats: [ - { value: '500k+', label: 'downloads' }, - { value: '4.7', label: 'rating' }, + { value: '500k+', label: 'Downloads' }, + { value: '4.7/5', label: 'Rating, about 2,000 reviews' }, ], caseStudies: [{ slug: 'inware', label: 'Case Study' }], links: [playStoreLink('com.evo.inware')], @@ -66,39 +62,30 @@ export const projects: Project[] = [ title: 'Personal Website', description: "You're looking at it! Built with Next.js and Tailwind CSS.", techStack: ['Next.js', 'TypeScript', 'Tailwind CSS'], - openSource: true, - featured: false, links: [githubLink('evowizz/evowizz.dev')], }, { title: 'Cosmose', - description: 'A simple Jetpack Compose demo gallery showcasing various UI components and animations.', + description: 'A small demo gallery of Jetpack Compose components and animations.', techStack: ['Kotlin', 'Jetpack Compose', 'Android'], - openSource: true, links: [githubLink('evowizz/cosmose')], }, { title: 'Common', - description: - 'A Kotlin library providing common utilities and extensions for Android development, including helpers for views, networking, and data processing.', + description: 'A Kotlin library of the utilities and extensions I kept rewriting for Android.', techStack: ['Kotlin', 'Android'], - openSource: true, links: [githubLink('evowizz/common')], }, { title: 'De-Gmojify', - description: - 'A Chrome extension that replaces Google emojis with standard system emojis for a more consistent browsing experience.', + description: 'A Chrome extension that removes the emoji reaction button in Gmailâ„¢.', techStack: ['JavaScript', 'Chrome Extension'], - openSource: true, links: [githubLink('evowizz/De-Gmojify')], }, { title: 'Actio', - description: - 'A small Figma plugin for resizing frames and rectangles based on aspect ratios with the purpose of eliminating manual dimension calculations.', + description: 'A Figma plugin that resizes frames to an aspect ratio, so nobody does the math by hand.', techStack: ['TypeScript', 'Figma Plugin API'], - openSource: false, links: [], }, { @@ -106,7 +93,6 @@ export const projects: Project[] = [ description: 'Edge-to-edge display implementation for Android apps using Jetpack Compose, providing a modern full-screen experience.', techStack: ['Kotlin', 'Jetpack Compose', 'Android'], - openSource: true, deprecated: true, links: [githubLink('evowizz/compose-to-edge')], }, diff --git a/src/app/case-studies/[slug]/_components/case-study-header.tsx b/src/app/case-studies/[slug]/_components/case-study-header.tsx index 95e2859..bd399a4 100644 --- a/src/app/case-studies/[slug]/_components/case-study-header.tsx +++ b/src/app/case-studies/[slug]/_components/case-study-header.tsx @@ -2,7 +2,7 @@ import Image from 'next/image' import { Label } from '@/components/ui/typography' import { Reveal } from '@/components/ui/reveal' -export type CaseStudyMeta = { +type CaseStudyMeta = { title: string overview: string stack: string[] diff --git a/src/components/debug/selection.ts b/src/components/debug/selection.ts index 6a125b9..ab16d85 100644 --- a/src/components/debug/selection.ts +++ b/src/components/debug/selection.ts @@ -1,4 +1,4 @@ -export type SelectedEntry = { +type SelectedEntry = { element: Element selector: string } @@ -12,8 +12,7 @@ export type RegionBounds = { } export type Selection = - | ({ kind: 'element' } & SelectedEntry) - | ({ kind: 'region'; elements: SelectedEntry[] } & RegionBounds) + ({ kind: 'element' } & SelectedEntry) | ({ kind: 'region'; elements: SelectedEntry[] } & RegionBounds) export const isDevtoolNode = (element: Element) => element.closest('[data-devbar]') !== null || diff --git a/src/components/ui/video.tsx b/src/components/ui/video.tsx index 9a4e9b4..55975af 100644 --- a/src/components/ui/video.tsx +++ b/src/components/ui/video.tsx @@ -155,5 +155,3 @@ const DimButton = forwardRef(({ className, ac }) DimButton.displayName = 'DimButton' - -export { PlayPauseButton, DimButton } diff --git a/src/lib/mcu.ts b/src/lib/mcu.ts index b090a3d..8af486f 100644 --- a/src/lib/mcu.ts +++ b/src/lib/mcu.ts @@ -5,7 +5,7 @@ const COLOR_REGEX = /^#?([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i const STANDARD_TONES = [5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95] -export type TonalPaletteName = (typeof TARGETS)[number] +type TonalPaletteName = (typeof TARGETS)[number] export type PaletteRequest = { base: string diff --git a/src/theme/material.ts b/src/theme/material.ts index 76c66e3..fe735c2 100644 --- a/src/theme/material.ts +++ b/src/theme/material.ts @@ -12,7 +12,7 @@ import { export { Hct, Variant, argbFromHex, argbFromRgb, hexFromArgb, redFromArgb, greenFromArgb, blueFromArgb } -export type SpecVersion = '2021' | '2025' +type SpecVersion = '2021' | '2025' export type Theme = { source: number