Projects
-Open-source tools for AI-native development. norn makes Markdown vaults queryable, mimir tracks local work state, saga provides agent memory, and skald writes git prose. Built in the open, as separate stories.
++ I build open-source tools that give people and agents predictable ways to work with software. They make rules explicit, provide clear guardrails, and produce results you can inspect and trust. +
++ Good tools should be forgiving when you make a mistake, but structured enough to keep you on the right path. They should have an obvious lifecycle, sensible defaults, and clear boundaries, so the person or agent using them can focus on the problem instead of figuring out how to use the tool. +
{project.data.demo}
{project.data.name}
+
+ {project.data.icon &&
}
+ {project.data.name}
+
{project.data.description}
{project.data.lang} - {project.data.status} · {project.data.version} + {project.data.status} diff --git a/src/pages/search.json.ts b/src/pages/search.json.ts index fe69033..4740fc2 100644 --- a/src/pages/search.json.ts +++ b/src/pages/search.json.ts @@ -5,7 +5,7 @@ import { getCollection } from 'astro:content'; // Order matters: the palette groups rows under Writing / Projects / Pages headers // by type transitions. export const GET: APIRoute = async () => { - const projects = (await getCollection('projects')).sort((a, b) => a.data.order - b.data.order); + const projects = (await getCollection('projects', ({ data }) => data.status !== 'retired')).sort((a, b) => a.data.order - b.data.order); const posts = (await getCollection('writing')).sort((a, b) => b.data.date.valueOf() - a.data.date.valueOf()); const items = [ diff --git a/src/styles/global.css b/src/styles/global.css index 4db04f5..5eac4c5 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -52,7 +52,7 @@ .body a { @apply text-accent-cool border-b border-cool-dim hover:border-accent-cool; } .body h2 { @apply text-2xl font-[650] tracking-[-0.01em] mt-10 mb-4 max-md:text-[21px]; } .body > h2:first-child { @apply mt-0; } - .body ul { @apply m-0 mb-6 pl-5.5; } + .body ul { @apply list-disc m-0 mb-6 pl-5.5; } .body li { @apply text-base leading-[1.7] text-text-2 my-1.5; } .body li::marker { color: var(--color-accent-warm); }