- Rename "DMR Editor" to "DMR İndir" across nav and about page
- Add target="_blank" support to Header component
- Add all 5 board members with QRZ.com links to hakkimizda page
- Update DMR blog post with channel list section
- Remove "Liderlik" tagline from board section
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The blog utility was looking for 'publishDate' field but .mdoc files
use 'date'. Updated the destructuring to read from 'date' field.
This fixes the missing blog posts on https://radio.org.tr/
Co-Authored-By: Claude <noreply@anthropic.com>
Remove descriptions, defaults, and extra options that might cause
compatibility issues with KeyStatic 5.x.
Co-Authored-By: Claude <noreply@anthropic.com>
The format configuration with contentField and frontmatter might be
causing compatibility issues with KeyStatic 5.x.
Co-Authored-By: Claude <noreply@anthropic.com>
The title field was incorrectly using fields.slug() when it should be
fields.text(). KeyStatic automatically slugifies the title for URLs
when slugField is set.
This fixes the "n.call is not a function" error when opening a post.
Co-Authored-By: Claude <noreply@anthropic.com>
Removed all experimental features that were causing errors:
- Site singleton
- Brand mark (logo)
- Entry layout grouping
- Preview URL
- Published/featured checkbox fields
- Related posts field
Kept only the working Turkish UI customization:
- Brand name: "ARC CMS"
- Navigation: "İçerik" for posts
Co-Authored-By: Claude <noreply@anthropic.com>
The relationship field was causing "n.call is not a function" error.
Removed relatedPosts from both keystatic.config.ts and content.config.ts.
Other optimizations remain:
- Site singleton for global settings
- Brand mark (globe logo)
- Entry layout grouping
- Preview URL configuration
- Published and featured checkbox fields
Co-Authored-By: Claude <noreply@anthropic.com>
- Add site singleton for global settings (name, description, URL, contact, social media)
- Add brand mark (globe icon) to KeyStatic header
- Add entry layout grouping (Ana Bilgiler, Medya, Sınıflandırma, Özet, İçerik)
- Add preview URL configuration for local development
- Add published, featured, and relatedPosts fields
- Use local storage for development, GitHub storage for production
- Update Astro content schema with new fields
Co-Authored-By: Claude <noreply@anthropic.com>
- Add Turkish brand name "ARC CMS"
- Add Turkish navigation "İçerik"
- Add columns to show title, date, and author in list view
- Improve all field descriptions with Turkish examples and better help text
- Add itemLabel for better UX in array fields
Note: KeyStatic doesn't have built-in i18n/locale support yet.
This is tracked in: https://github.com/Thinkmill/keystatic/discussions/1423
Co-Authored-By: Claude <noreply@anthropic.com>
- Convert all 32 blog posts to .mdoc format
- Add content.config.ts to handle .mdoc files in Astro
- This allows KeyStatic to find and manage the blog posts
Co-Authored-By: Claude <noreply@anthropic.com>
This allows KeyStatic to match filenames to title-based slugs.
The date prefix was preventing KeyStatic from finding posts.
Co-Authored-By: Claude <noreply@anthropic.com>
- Add explicit frontmatter: 'yaml' to match existing posts
- Remove publishDate field that doesn't exist in current posts
- Keep body as markdoc (supports markdown content)
Co-Authored-By: Claude <noreply@anthropic.com>
The Netlify adapter automatically handles all routing when using
output: 'server'. Manual redirect rules were interfering with
proper API endpoint handling.
Co-Authored-By: Claude <noreply@anthropic.com>
Add redirect to route all requests to the Netlify SSR server function.
This enables KeyStatic API routes and GitHub OAuth to work properly.
Co-Authored-By: Claude <noreply@anthropic.com>
Disabling Image compression in astro-compress to fix build error:
"pngload: libspng read error"
The error was caused by a corrupted PNG file that Sharp couldn't process.
Images will still be served normally, just not recompressed during build.
Co-Authored-By: Claude <noreply@anthropic.com>
Changes:
- Added Netlify adapter for server-side rendering
- Changed output mode from static to server
- Updated KeyStatic storage from local to GitHub
- Removed SKIP_KEYSTATIC from Netlify build
- KeyStatic Admin UI will be available at /keystatic
Features:
- Server-side rendering with Netlify Functions
- GitHub integration for content management
- Production-ready KeyStatic Admin UI
Co-Authored-By: Claude <noreply@anthropic.com>
Features added:
- KeyStatic Core and Astro integration installed
- Markdoc integration for content rendering
- keystatic.config.ts with blog post schema
- Local storage mode for content management
- Conditional loading via SKIP_KEYSTATIC env var
- Netlify build command updated to skip KeyStatic in production
KeyStatic Admin UI available at:
- Local: http://localhost:4321/keystatic
- Production: Disabled for security
Co-Authored-By: Claude <noreply@anthropic.com>
Features added:
- React integration with @astrojs/react
- React components: DMRDashboard, MemberSearch
- API endpoints: /api/repeaters.json, /api/dmr-contacts.json, /api/feed/[category].xml
- i18n support for TR/EN locales with LanguageSwitcher component
- Partytown enabled for third-party script optimization
- Admin panel logo fixed (moved to public/images/)
Co-Authored-By: Claude <noreply@anthropic.com>
Performance:
- Enable image optimization (Image: true, SVG: true)
- 429MB saved with WebP conversion
SEO:
- Add JSON-LD structured data (Organization & FAQ schemas)
- Add keywords and author metadata
- Update robots.txt with sitemap reference
- Add alt text to OpenGraph images
CMS:
- Enable Google OAuth login for admin panel
- Add logo to admin login page
Fixes:
- Update Telegram link to @ym1ktc on homepage
Co-Authored-By: Claude <noreply@anthropic.com>