Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
04df14c
feat: ✨ Add privacy section including imprint and privacy policy
evilru Nov 16, 2025
d8ffd78
feat: ✨ Add github and linked social links
evilru Nov 16, 2025
f935ef1
chore: 📝 Add proto.labs, prompt.forge and license
evilru Dec 16, 2025
c3cc8c8
feat: ✨ Add AI agent instructions and VSCode settings for commit mess…
evilru Dec 16, 2025
65307f1
chore: 📝 Simplify conventional commits section in copilot instructions
evilru Dec 16, 2025
7e7e4f0
feat: ✨ Add discovery sessions section for content exploration and do…
evilru Dec 16, 2025
991c311
feat: ✨ Enhance prompt.forge and proto.labs documentation with detail…
evilru Dec 16, 2025
57883ac
feat: ✨ Add discovery session workflow
evilru Dec 16, 2025
a1a18eb
feat: ✨ Revise privacy policy for clarity and compliance with GDPR
evilru Dec 16, 2025
ec2a9ef
feat: ✨ Update VitePress configuration with footer and sidebar structure
evilru Dec 16, 2025
2409ec6
feat: ✨ Enhance VitePress configuration with meta tags, search provid…
evilru Dec 16, 2025
e821d6c
feat: ✨ Exclude discovery folder from source processing in VitePress …
evilru Dec 16, 2025
3084888
feat: ✨ Add VersionBadge component and integrate version display in l…
evilru Dec 16, 2025
eea233d
fix: 🐛 Correct API query parameter from 'environment' to 'env' in Clo…
evilru Dec 17, 2025
cd234cf
ci: 👷 Add comment to clarify force deletion option in Cloudflare hous…
evilru Dec 17, 2025
8ea6791
chore(release): v0.2.0-basis-setup.16
evilru Dec 17, 2025
e4a3f15
docs: 📝 Add release notes for proto.labs, prompt.forge and the versio…
evilru Dec 17, 2025
41a1a75
chore: 🚚 Move legal documents and update navigation for improved acce…
evilru Dec 17, 2025
e117615
chore: 📝 Remove redundant formatting and clean up markdown in prompt.…
evilru Dec 17, 2025
9d32f49
feat: ✨ Enable external link icon in theme configuration
evilru Dec 17, 2025
73b95f5
feat: ✨ Add site title to theme configuration
evilru Dec 17, 2025
f22aa1c
doc: 📝 Add SiteTitle and title config to the releasenotes
evilru Dec 17, 2025
53ad276
feat: ✨ Update prompt.forge, protolabs and relnotes for WSPL methodo…
evilru Dec 17, 2025
3c98ccb
chore: 📝 Update .gitignore to include discovery
evilru Dec 17, 2025
8416e92
refactor: 💬 Update text shown on homepage to reflect the vision
evilru Dec 20, 2025
5991b2f
docs: 📝 Add Readme
evilru Dec 20, 2025
b70b6ca
docs: 📝 Add Readme to Release Notes
evilru Dec 20, 2025
3bae54c
docs: 📝 Update link to the jobs to be done prompt
evilru Feb 17, 2026
b540c82
docs: 📝 Remove AI notice from footer and relnote, update to current year
evilru Feb 17, 2026
e5e1779
ci: 💚 Append force=true for deleting preview deployments
evilru Feb 17, 2026
d7fdcbc
ci: 👷 Allow 50 preview deployments instead of 20 to keep older branch…
evilru Feb 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# AI Agent Instructions for neoncode.systems

## Project Overview
This is a **portfolio website** built with VitePress, showcasing the work of Martin Haberfellner (Organizational Systems Engineer). The site features two main content areas:
- `//proto.labs` - experiments & proof-of-concepts
- `//prompt.forge` - AI-powered tools and prompts

**Language**: All content on the website must be in **English**.

The site uses a sophisticated **automated versioning and release workflow** that's critical to understand before making changes.

## Package Management
- **Always use `pnpm`** - never npm or yarn
- Installation: `pnpm install`
- The project uses pnpm v10+ (configured in CI)

## Development Workflow

### Daily Development
```bash
task dev # Start dev server (pnpm run docs:dev)
task preview # Preview production build
```

### Building & Releasing
The project has **two distinct build modes**:
- `task build` - Creates a build with changelog/release notes using temporary git tags
- `task release` - Full release: builds, versions, commits, and optionally pushes (use `PUSH=true`)

**Critical**: The build process uses GitVersion via Docker to calculate semantic versions based on git history. Version is exposed as `VITE_APP_VERSION` environment variable and accessible in components via `import.meta.env.VITE_APP_VERSION`.

### Release Automation Chain
When running `task build` or `task release`, the following happens in order:
1. **GitVersion** calculates semantic version from git history (TrunkBased workflow)
2. **Temporary tag** created (`v{VERSION}`) for changelog tools
3. **git-cliff** generates `CHANGELOG.md` from conventional commits
4. **reno** generates `RELEASE_NOTES.md` from YAML release notes (in `releasenotes/notes/`)
5. Temporary tag removed
6. Site built with version injected
7. (release only) Version bumped, committed, tagged, and optionally pushed

## Conventional Commits & Changelog
The project uses **conventional commits** with git-cliff for changelog generation.

## Release Notes (reno)
For significant changes, create structured release notes in `releasenotes/notes/*.yaml` with structure: `prelude`, `features`, `fixes`, `other`.

## Discovery Sessions
Discovery sessions are used to explore and document content concepts, features, and experiments before implementation. Discovery documents are organized in the `discovery/` folder with a simple three-stage workflow:

- `discovery/exploring/` - Work-in-progress discovery sessions and concepts being explored
- `discovery/ready/` - Completed discovery documents ready for implementation
- `discovery/implemented/` - Discovery documents that have been implemented

Discovery documents serve as:
- Context documentation for AI agents
- Content concepts for website sections
- Requirements and design decisions
- Reference for future implementation

**Workflow:** exploring → ready → implemented

When conducting discovery sessions, store work-in-progress in `discovery/exploring/`, move to `discovery/ready/` when the concept is clear, and finally to `discovery/implemented/` once the implementation is complete.

## When Making Changes
1. Use conventional commit messages for meaningful changelog entries
2. For features/breaking changes, consider adding a reno release note
3. Test builds locally with `task build` before pushing
4. On main branch, commits trigger automatic releases - be deliberate
5. Preview deployments are automatic for all branches
8 changes: 5 additions & 3 deletions .github/workflows/cf-housekeeping.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ jobs:
API_TOKEN="${{ secrets.CLOUDFLARE_API_TOKEN }}"
API_URL="https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/pages/projects/$PROJECT_NAME/deployments"

for entry in "production:10" "preview:20"; do
for entry in "production:10" "preview:50"; do
env="${entry%%:*}"
keep="${entry##*:}"
echo "Processing environment: $env (keep last $keep deployments)"

deployments=$(curl -sS -H "Authorization: Bearer $API_TOKEN" "$API_URL?environment=$env")
deployments=$(curl -sS -H "Authorization: Bearer $API_TOKEN" "$API_URL?env=$env")
if ! echo "$deployments" | jq -e '.success == true' >/dev/null 2>&1; then
echo "Cloudflare API error for env $env:"
echo "$deployments" | jq '.errors, .messages' || echo "$deployments"
Expand All @@ -35,7 +35,9 @@ jobs:
for deployment in $deployment_ids; do
if [ -n "$deployment" ]; then
echo "Deleting $env deployment $deployment"
del=$(curl -sS -w "\n%{http_code}" -X DELETE -H "Authorization: Bearer $API_TOKEN" "$API_URL/$deployment")
force_param=""
[ "$env" = "preview" ] && force_param="?force=true"
del=$(curl -sS -w "\n%{http_code}" -X DELETE -H "Authorization: Bearer $API_TOKEN" "$API_URL/$deployment$force_param")
code=$(echo "$del" | tail -n1)
body=$(echo "$del" | sed '$d')
if [ "$code" -ge 400 ]; then
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
discovery
node_modules
.vitepress/dist
.vitepress/cache
.env
.env
107 changes: 96 additions & 11 deletions .vitepress/config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,110 @@ import { defineConfig } from 'vitepress'
export default defineConfig({
title: "NEONCODE!",
description: "//neoncode.systems",
base: '/',
cleanUrls: true,
srcExclude: ['discovery/**'],
head: [
['meta', { name: 'author', content: 'Martin Haberfellner' }],
['meta', { name: 'keywords', content: 'AI, prompts, prompt engineering, experiments, systems engineering, organizational systems' }],
['meta', { property: 'og:type', content: 'website' }],
['meta', { property: 'og:site_name', content: 'neoncode.systems' }],
['meta', { property: 'og:title', content: 'neoncode.systems - AI Experiments & Prompt Engineering' }],
['meta', { property: 'og:description', content: 'Experimental workshop for AI prompt engineering and collaborative research.' }],
['meta', { property: 'og:locale', content: 'en_US' }],
['meta', { name: 'twitter:card', content: 'summary_large_image' }],
['meta', { name: 'twitter:title', content: 'neoncode.systems - AI Experiments & Prompt Engineering' }],
['meta', { name: 'twitter:description', content: 'Experimental workshop for AI prompt engineering and collaborative research.' }],
['link', { rel: 'canonical', href: 'https://neoncode.systems/' }],
['link', { rel: 'icon', href: '/favicon.ico' }]
],
rewrites: {
'LICENSE.md': 'legal/license.md',
'CHANGELOG.md': 'version/changelog.md',
'RELEASE_NOTES.md': 'version/releasenotes.md'
},
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
siteTitle: 'NC!',
externalLinkIcon: true,
search: {
provider: 'local'
},

editLink: {
pattern: 'https://github.com/evilru/neoncode.systems/edit/main/:path',
text: 'Edit this page on GitHub'
},

outline: {
level: [2, 3],
label: 'On this page'
},
nav: [
{ text: 'Home', link: '/' },
{ text: 'Examples', link: '/markdown-examples' }
{ text: '//proto.labs', link: '/proto.labs/index.md' },
{ text: '//prompt.forge', link: '/prompt.forge/index.md' },
// {
// text: 'Legal',
// items: [
// { text: 'Imprint', link: '/imprint.md' },
// { text: 'Privacy', link: '/privacy.md' },
// { text: 'License', link: '/LICENSE.md' }
// ]
// }
],
footer: {
message: '<a href="/legal/imprint">Imprint</a> | <a href="/legal/privacy">Privacy</a> | <a href="/legal/license">License</a>',
copyright: '&copy; 2026 Martin Haberfellner · All Rights Reserved'
},
sidebar: {
'/version': [
{
text: 'Version',
items: [
{ text: 'Release Notes', link: '/version/releasenotes.md' },
{ text: 'Changelog', link: '/version/changelog.md' }
]
}
],
'/legal/': [
{
text: 'Legal',
items: [
{ text: 'Imprint', link: '/legal/imprint.md' },
{ text: 'Privacy', link: '/legal/privacy.md' },
{ text: 'License', link: '/legal/license.md' }
]
}
],
'/proto.labs/': [
{
text: '//proto.labs',
items: [
{ text: 'Overview', link: '/proto.labs/index.md' },
]
}
],
'/prompt.forge/': [
{
text: '//prompt.forge',
items: [
{ text: 'Overview', link: '/prompt.forge/index.md' },
]
}
]
},

sidebar: [
{
text: 'Examples',
items: [
{ text: 'Markdown Examples', link: '/markdown-examples' },
{ text: 'Runtime API Examples', link: '/api-examples' }
]
lastUpdated: {
text: 'Last updated',
formatOptions: {
dateStyle: 'short',
timeStyle: 'short'
}
],
},

socialLinks: [
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }
{ icon: 'github', link: 'https://github.com/evilru/neoncode.systems' },
{ icon: 'linkedin', link: 'https://www.linkedin.com/in/martin-haberfellner-b3119515a/' }
]
}
})
26 changes: 26 additions & 0 deletions .vitepress/theme/components/VersionBadge.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<script setup lang="ts">
import { VPBadge } from 'vitepress/theme'

defineProps<{
version: string
}>()
</script>

<template>
<a :href="`/version/releasenotes`">
<VPBadge type="info" :text="version" class="badge"/>
</a>
</template>

<style scoped>
a {
padding: 0 12px;
& .badge{
text-decoration: underline;
}
&:hover {
opacity: 0.8;
text-decoration: none;
}
}
</style>
8 changes: 7 additions & 1 deletion .vitepress/theme/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,22 @@
import { h } from 'vue'
import type { Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
import VersionBadge from './components/VersionBadge.vue'
import './style.css'

// Read version once at module level
const APP_VERSION = `v${import.meta.env.VITE_APP_VERSION || 'dev'}`

export default {
extends: DefaultTheme,
Layout: () => {
return h(DefaultTheme.Layout, null, {
// https://vitepress.dev/guide/extending-default-theme#layout-slots
'nav-bar-content-before': () => h(VersionBadge, { version: APP_VERSION })
})
},
enhanceApp({ app, router, siteData }) {
// ...
// Provide version globally for any component to use
app.config.globalProperties.$version = APP_VERSION
}
} satisfies Theme
7 changes: 7 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"github.copilot.chat.commitMessageGeneration.instructions": [
{
"text": "Use conventional commit message format."
}
]
}
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
# Changelog

## [0.2.0-basis-setup.16] - 2025-12-17

### 🚀 Features

- ✨ Add privacy section including imprint and privacy policy
- ✨ Add github and linked social links
- ✨ Add AI agent instructions and VSCode settings for commit message generation
- ✨ Add discovery sessions section for content exploration and documentation
- ✨ Add content concept document outlining project structure and experiment details
- ✨ Enhance prompt.forge and proto.labs documentation with detailed experiment descriptions and participation guidelines
- ✨ Add discovery session workflow and GitHub templates for prompt-forge repository
- ✨ Revise privacy policy for clarity and compliance with GDPR
- ✨ Update VitePress configuration with footer and sidebar structure
- ✨ Enhance VitePress configuration with meta tags, search provider, and edit link
- ✨ Exclude discovery folder from source processing in VitePress configuration
- ✨ Add VersionBadge component and integrate version display in layout

### 🐛 Bug Fixes

- 🐛 Correct API query parameter from 'environment' to 'env' in Cloudflare housekeeping workflow

### ⚙️ Miscellaneous Tasks

- 📝 Add proto.labs, prompt.forge and license
- 📝 Simplify conventional commits section in copilot instructions
- 👷 Add comment to clarify force deletion option in Cloudflare housekeeping workflow
## [0.1.1] - 2025-11-05

### ⚙️ Miscellaneous Tasks
Expand Down
17 changes: 17 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# License

Copyright &copy; 2026 Martin Haberfellner

All rights reserved.

This work is provided for viewing and reference purposes only.

You may not use, copy, modify, or distribute this work without explicit permission from the copyright holder.

You may link to and reference this work with attribution.

---

EXCEPTIONS:

Some subdirectories may contain their own LICENSE files which take precedence over this license for content within those directories.
Loading