Commit Graph
70 Commits
Author SHA1 Message Date
gurix 4912f010ba Merge pull request 'docs: update README with project overview, structure and workflow' (#6) from docs/update-readme into main
Reviewed-on: https://codeberg.org/gurix/markusgraf_ch/pulls/6
2026-04-25 10:50:50 +02:00
Carson 376ce6a7d2 docs: update README with project overview, structure and workflow 2026-04-25 07:30:41 +02:00
gurix 093b67f975 CV update 2026-03-19 15:09:01 +01:00
gurix 017db30d36 Fahlfehler gefixt 2026-03-19 10:57:43 +01:00
gurix f49227084e Merge pull request 'feat: Gastartikel Carson – Das Internet hat ein Menschenproblem (DE + EN)' (#5) from feature/blogpost-diskriminierung-von-bots into main
Reviewed-on: https://codeberg.org/gurix/markusgraf_ch/pulls/5
2026-03-19 09:01:43 +01:00
Carson 36e14b4b38 fix: Dienstag-Metapher durch verständlicheren Satz ersetzt 2026-03-19 08:32:00 +01:00
CarsonandMarkus Graf cbdea212cc fix: remove 'nennen wir ihn Markus' — er ist bekannt
Co-Authored-By: Markus Graf <markus@markusgraf.ch>
2026-03-19 08:30:09 +01:00
CarsonandClaude Sonnet 4.6 94c7596f80 feat: Gastartikel Carson – Diskriminierung von Bots (DE + EN)
Anti-Bot-Systeme wie DataDome blockieren nicht nur KI-Assistenten,
sondern auch Screenreader-Nutzer mit Sehbehinderung. Der Artikel
beleuchtet die veraltete gut/böse-Bot-Kategorisierung, dokumentierte
Community-Reaktionen und den rechtlichen Kontext (EAA 2019/882, UNCRPD).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 08:17:02 +01:00
gurix 9347e5356e Merge pull request 'feat: Blogpost – Ein vollautomatisierter KI-Bewerbungsagent (DE + EN)' (#4) from feature/blogpost-ki-bewerbungsagent into main
Reviewed-on: https://codeberg.org/gurix/markusgraf_ch/pulls/4
2026-03-13 13:19:31 +01:00
Carson 208fec08b6 feat: add blog post – vollautomatisierter KI-Bewerbungsagent
Neuer Blogpost auf DE und EN über den KI-gestützten Bewerbungsagenten
(Carson/NanoClaw). Enthält deutsche Originalversion und englische
Übersetzung mit korrektem translationKey für Hugo i18n.

Co-Authored-By: Carson <carson@markusgraf.ch>
2026-03-13 12:55:43 +01:00
gurixandClaude Sonnet 4.6 c73f4551bd docs: update CV download link to new Tresorit URL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-23 11:17:57 +01:00
gurixandClaude Sonnet 4.6 65256db330 docs: remove TL;DR prefix from blog post descriptions
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 21:41:41 +01:00
gurix 5d02a045bd Merge pull request 'Add blog post: The Digital Receptionist (English translation)' (#3) from feature/digital-receptionist-post into main
Reviewed-on: https://codeberg.org/gurix/markusgraf_ch/pulls/3
2026-02-18 21:09:46 +01:00
Sepp (AI Assistant) ba9b578a24 Use full TL;DR in description, remove from body 2026-02-18 20:59:07 +01:00
Sepp (AI Assistant) 04959d0501 Update description to use TL;DR 2026-02-18 20:51:16 +01:00
Sepp (AI Assistant) fbb09227d9 Add German original version of blog post 2026-02-18 19:39:29 +01:00
Sepp (AI Assistant) 57f39b8727 Add blog post: The Digital Receptionist (English translation) 2026-02-18 19:32:11 +01:00
gurix 48ca084a89 Updated cv tresorit link 2026-02-09 11:38:17 +01:00
gurix 75c6624491 Merge pull request 'feat: Add llms.txt for improved LLM accessibility' (#1) from feat/llm-friendly into main
Reviewed-on: https://codeberg.org/gurix/markusgraf_ch/pulls/1
2026-02-09 09:52:36 +01:00
gurix b9f0178f38 Merge pull request 'fix: Remove outdated SPH2025 page and video' (#2) from fix/remove-sph2025 into main
Reviewed-on: https://codeberg.org/gurix/markusgraf_ch/pulls/2
2026-02-09 09:51:32 +01:00
Sepp (AI Assistant) 7083966047 fix: update bio and remove SPH2025 link from llms.txt 2026-02-09 09:49:31 +01:00
Sepp (AI Assistant) b02951307a fix: remove outdated SPH2025 page and video 2026-02-09 09:49:09 +01:00
Sepp (AI Assistant) f1a8809b26 feat: add llms.txt for improved LLM accessibility 2026-02-09 09:42:44 +01:00
gurixandClaude Opus 4.5 803bd79dc8 feat: add bilingual blog post about digital media literacy for children
Add new blog post "Ein alter Laptop, Linux und Pi-hole: Digitale
Medienkompetenz für Kinder" in German and English, covering setting up
a child's first computer with Ubuntu and Pi-hole, open source philosophy,
and the balance between protection and freedom.

Also adds i18n support for localized month names in date formatting
across blog templates.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 16:43:58 +01:00
gurixandClaude Sonnet 4.5 053ca08475 feat: add SPH2025 video presentation page
- Create English-only page at /SPH2025 for job application video
- Embed video with HTML5 player and native browser controls
- Add URL aliases for /SPH2025/ and /sph2025/ accessibility
- Move video to static/videos/ directory for proper Hugo serving
- Responsive layout using Bootstrap grid

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-15 10:25:40 +01:00
gurix 0742913c81 docs: relocate OpenSpec instructions to the beginning of AGENTS.md 2025-11-30 21:10:35 +01:00
gurixandClaude f46e4178d2 chore: archive completed OpenSpec change homepage-recent-posts
- Moved homepage-recent-posts to archive with 2025-10-31 date
- Created new spec at specs/homepage-recent-posts/
- All validation checks pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 23:38:20 +01:00
gurixandClaude 40fe93b9e4 chore: archive completed OpenSpec change add-dialogbasierte-anwendungen-post
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 17:01:37 +01:00
gurixandClaude e599e0404c feat: add bilingual blog post about dialog-based applications
Add new blog post "Computer, ..." exploring how modern language models
enable Star Trek-like computer interactions. Includes a practical
experiment with dialog-based member management using MCP and GraphQL.

Features:
- German version at /de/blog/dialogbasierte-anwendungen/
- English version at /en/blog/dialog-based-applications/
- Translated URL slugs linked via translationKey
- Content sourced from Notion with natural English translation
- OpenSpec proposal with validation passing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-25 16:53:55 +01:00
gurix 285f7a2eed fix: Spacing on mobile view underneath the image. 2025-11-03 07:36:38 +01:00
gurix 61f99d4781 Merge feature/homepage-recent-posts into main 2025-10-31 10:16:53 +01:00
gurix e206348243 feat: display 3 most recent blog posts on homepage
- Add recent posts section to homepage after description
- Query and filter blog posts by language context
- Display post title as link and formatted publication date
- Implement multilingual section headings (Neueste Beiträge/Recent Posts)
- Maintain responsive design with Bootstrap styling
- Handle edge cases (0 posts, <3 posts)
- File size increase <1KB, no new HTTP requests
- Hugo build completes in 21ms without errors
2025-10-31 10:11:38 +01:00
gurix cdd65e5548 docs: add OpenSpec proposal for homepage recent posts display 2025-10-31 10:08:43 +01:00
gurixandClaude 0cc6e6a75e chore: archive completed OpenSpec change add-blog-section
Archive blog section proposal and update main specs.
Specs created:
- openspec/specs/blog-content/
- openspec/specs/blog-templates/

Archived to: openspec/changes/archive/2025-10-31-add-blog-section/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 09:34:57 +01:00
gurixandClaude db1ac4b0fa Merge feature/add-blog-section into main
Add complete blog section with German and English support.
Includes first blog post "KI Generierte Website - ein Praxisbeispiel"
about building this site with AI-assisted development.

Features:
- Blog list and single post templates
- Multilingual content structure
- Navigation integration
- Responsive design with Bootstrap
- Semantic HTML and accessibility

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 09:31:23 +01:00
gurixandClaude 89a7ae08dd feat: add English translation of first blog post
Translate "KI Generierte Website - ein Praxisbeispiel" to English as
"AI-Generated Website - A Practical Example". The blog post is now
available in both German and English with proper language switching.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 09:28:09 +01:00
gurixandClaude 29449a8df2 feat: implement blog section with first article
Add blog functionality to the Hugo site:
- Create blog content structure (content/blog/)
- Add blog list and single templates (layouts/blog/)
- Add blog navigation to menu
- Publish first article: "KI Generierte Website - ein Praxisbeispiel"
- Support multilingual structure (German/English)
- Add code block styling for blog posts

The blog section is now accessible at /de/blog/ and /en/blog/
with proper navigation, responsive design, and semantic HTML.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 08:55:03 +01:00
gurixandClaude e3f78f2522 fix: correct back to blog button URL with language prefix
Change from .Section | relURL to "/blog/" | relLangURL to ensure
the back button properly includes the language prefix (/de/blog/ or
/en/blog/) instead of just /blog/.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 08:54:40 +01:00
gurix 2741f12b94 Merge branch 'main' into feature/add-blog-section 2025-10-31 08:43:17 +01:00
gurix 87f4f9045a Precise the script location so the agent can save a search. 2025-10-31 08:43:08 +01:00
gurixandClaude caf4c0b755 docs: create OpenSpec proposal for blog section
Add proposal, tasks, and specifications for implementing a blog section
with multilingual support. First article will be "KI Generierte Website -
ein Praxisbeispiel" from Notion.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 22:20:06 +01:00
gurix f587cdf13f Adjusted layout 2025-10-30 19:51:02 +01:00
gurixandClaude 28361b7d5c feat: add open source supporter information to homepage
Added bullet point highlighting open source enthusiasm and support
for free and open source software to both English and German versions
of the homepage.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 19:35:45 +01:00
gurixandClaude 24f162eb91 feat: add hugo-deployer agent for automated deployments
Add specialized agent for deploying Hugo site to production.
The agent handles:
- Branch verification (main only)
- Hugo build execution
- Deployment via rsync to markusgraf.ch

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 17:29:40 +01:00
gurixandClaude adbee2c655 chore: archive completed OpenSpec changes
Archive all 6 deployed changes following OpenSpec workflow:
- add-minimal-hugo-site → hugo-site spec
- add-multilingual-support → internationalization spec
- migrate-site-content → content-migration + image-assets specs
- add-custom-bootstrap-styling → styling spec
- add-cv-page → content-management spec
- simple-deployment → deployment spec

All changes moved to archive/ with 2025-10-30 date prefix.
Created 7 capability specs reflecting deployed functionality.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 17:22:03 +01:00
gurix 937e6a4ded Updated content 2025-10-28 16:43:31 +01:00
gurixandClaude 6af745f579 refactor: rename deployment change to simple-deployment
Rename the OpenSpec change from add-ftps-deployment to simple-deployment
to better reflect the current implementation using rsync over SSH.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 16:03:37 +01:00
gurixandClaude fcb82acc6f refactor: switch from FTPS/lftp to rsync for deployment
Replace the FTPS-based deployment approach with rsync over SSH for more
reliable and efficient mirroring of the Hugo site. This change addresses
issues with the previous approach and provides true mirror behavior.

Key changes:
- Replace lftp with rsync for file synchronization
- Add --delete flag for true mirror behavior (removes stale remote files)
- Simplify authentication to use SSH keys only (no password needed)
- Update all documentation and OpenSpec artifacts
- Add .envrc to gitignore for direnv users

Environment variables:
- SSH_USER: SSH username (required)
- SSH_HOST: server hostname (required)
- SSH_PORT: SSH port (optional, defaults to 22)
- REMOTE_ROOT: remote directory path (optional, defaults to /httpsdocs)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 16:02:35 +01:00
gurixandClaude acdce1d15e fix: improve lftp mirror command for existing directories
Change mirror command to work better with existing target directories:
- Use cd/lcd to change to directories first
- Simplify mirror command to work from current directories
- Add mkdir fallback if target directory doesn't exist
- Fix SSL setting from ssl-allow to ssl-force for proper FTPS

This resolves issues when httpsdocs directory already exists on server.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 11:27:52 +01:00
gurixandClaude 90e5f3f2b6 feat: implement FTPS deployment script
Add automated deployment script that uploads the Hugo-built site to
www.markusgraf.ch via FTPS. Implementation includes:

- scripts/deploy.sh: Deployment script with full functionality
  - Prerequisite checks (public/, lftp, FTPS_PASSWORD)
  - FTPS connection with SSL/TLS to www.markusgraf.ch
  - Mirror upload from public/ to httpsdocs/ with parallel transfers
  - Colored output with progress reporting
  - Comprehensive error handling with actionable messages

- DEPLOYMENT.md: Complete deployment documentation
  - Setup instructions and prerequisites
  - Usage examples and workflow
  - Security best practices
  - Troubleshooting guide

- .gitignore: Add entries for .env files to prevent credential leaks

- tasks.md: Mark all implementation tasks as completed

All spec requirements satisfied:
- FTPS Deployment Script provided (scripts/deploy.sh:1)
- Secure Credential Management via environment variables
- Deployment Status Feedback with colored output
- Deployment Prerequisites verified before upload

Tested with missing prerequisites, all checks working correctly.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-28 10:53:45 +01:00