Changelog
What actually landed in the repo — subject lines plus the longer explanation when there is one. loke-dev/loke.dev
Repository on GitHub-
refactor: enhance resource links
2e26536 Loke -
chore: update GitHub Actions workflow for deployment
- Upgraded actions/checkout, pnpm/action-setup, and actions/setup-node to their latest versions for improved performance and security. - Removed the environment variable that forced JavaScript actions to use Node.js 24, simplifying the configuration.
f65881f Loke -
feat: update deploy workflow for Node.js environment
- Added environment variable to force JavaScript actions to use Node.js 24. - Removed specific version setting for pnpm action to allow for flexibility in updates.
6190342 Loke -
feat: enhance content generation and markdown handling
- Updated the PortableText component to escape HTML in links, improving security against XSS attacks. - Modified the humanizer to enforce no markdown links in article bodies, ensuring URLs are only included in the Resources section. - Refactored the generate function to utilize a new utility for stripping markdown links outside code fences, enhancing content consistency. - Adjusted resource curation logic to limit the number of curated resources and refined the rules for citing sources, promoting better content integrity.
e33af67 Loke -
feat: add cronstrue dependency and enhance Dashboard component
- Added the cronstrue package to package.json for improved cron expression parsing. - Updated the Dashboard component to streamline topic fetching and status management, replacing the previous generation ID tracking with a more efficient in-flight topic ID approach. - Enhanced polling logic to refresh topic data based on active statuses, improving real-time updates during content generation.
1b5e934 Loke -
feat: enhance content topic synchronization with new fields and SEO improvements
- Updated the update-topics script to include additional problem-led fields in Content Topic documents, enhancing content relevance. - Improved SEO attributes for existing topics to boost discoverability and user engagement. - Streamlined the update process to effectively manage both existing and new topics based on name matching.
4eaa667 Loke -
feat: sync Content Topic documents with problem-led fields and SEO enhancements
- Updated the update-topics script to sync Content Topic documents in Sanity, incorporating new problem-led fields such as realWorldProblem, promisedOutcome, researchSeeds, and articleIntent. - Enhanced existing topics with detailed problem-led descriptions and SEO-focused attributes to improve content relevance and discoverability. - Refined the structure of the update process to include both patching existing topics and creating new ones based on name matching, ensuring comprehensive content management.
a28c5d9 Loke -
feat: enhance content generation with problem-led features
- Added new fields to support real-world problem focus in content generation, including realWorldProblem, promisedOutcome, researchSeeds, and articleIntent. - Updated the generate function to incorporate these new fields, improving the relevance and specificity of generated content. - Enhanced the ResearchOptions interface and related modules to utilize the new problem-led attributes, ensuring a more targeted approach to content creation. - Refined the contentTopic schema in Sanity to include problem-led fields, facilitating better content management and organization.
1166e3b Loke -
feat: enhance PostResources component with resource reference markers and improve markdown parsing
- Updated the PostResources component to include unique IDs for resource list items and added reference markers for better navigation. - Modified the content generation process to apply resource reference markers, ensuring that resources are clearly linked within the generated content. - Improved the markdown parsing function to handle inline formatting more effectively, including support for links and strong text, enhancing the overall content structure.
9f53f3e Loke -
feat: enhance content generation with resource curation and research integration
- Added new functionality to merge resource links from research results and curated resources, ensuring a comprehensive set of references. - Updated the generate function to apply resource reference markers to humanized content, improving the contextual relevance of resources. - Expanded the ResearchResult interface to include developer pain points, community signals, and citable sources for richer content generation. - Enhanced the curateResources function to prioritize real-world problems and solutions, refining the content curation process. - Improved the writer module to incorporate developer pain points and community signals into the blog post structure, emphasizing real-world relevance.
88073b1 Loke -
feat: enhance content generation with markdown normalization
- Introduced a new module for normalizing generated blog markdown, including functions to strip em dashes and relax clause semicolons. - Updated the humanizeContent function to utilize the new normalization module for improved output consistency. - Refactored the researcher and seo-planner modules to apply markdown normalization to key content fields, ensuring better formatting and readability. - Improved prompt instructions in humanizeContent for clarity and effectiveness in content rewriting.
70c6f28 Loke -
feat: update TypeScript configuration and clean up component imports
- Added "jsxImportSource" for Solid.js in tsconfig.json to streamline JSX handling. - Excluded "dist" and "studio" directories from TypeScript compilation for better project structure. - Removed unnecessary JSX pragma comments from ContactForm and HeaderSearch components to simplify code.
9b49f04 Loke -
feat: add cron job configuration and update dependencies
- Introduced a new cron job in vercel.json to schedule the Seshat worker API. - Added CRON_SECRET to env.example for secure access to the cron job. - Included cron-parser dependency in package.json and updated pnpm-lock.yaml for scheduling functionality. - Enhanced the Sanity content generation module with a new fetchTopicsForScheduler function to retrieve scheduled topics.
28344c1 Loke -
feat: enhance header component and add search functionality
- Integrated HeaderSearch component into the Header for improved navigation. - Updated ISR configuration to exclude search routes. - Refactored date formatting by importing from utils. - Added new queries for searching posts and projects in Sanity. - Included search route in the sitemap for better indexing.
40c48e1 Loke -
feat: update IMAGE_MODEL export in gemini.ts
- Changed IMAGE_MODEL export from 'gemini-3.1-flash-image-preview' to 'imagen-4.0-generate-001' to reflect the latest model version.
b37d69d Loke -
feat: update Gemini model exports and usage
- Updated model exports in gemini.ts to reflect new versioning for FLASH, PRO, and IMAGE models. - Modified writer.ts to utilize FLASH_MODEL instead of PRO_MODEL for content generation, enhancing consistency with the updated model structure.
8caeb7e Loke -
feat: update Seshat API and configuration
- Added maxDuration setting to Vercel adapter in astro.config.ts for improved request handling. - Removed unused schedule-sync and worker API files to streamline the Seshat API. - Updated trigger API to directly reference the write function, simplifying the code structure. - Removed SyncSchedulesAction from Sanity actions and adjusted the Dashboard component for better user feedback. - Updated contentTopic schema description for clarity on cron expressions.
402998f Loke -
feat: integrate SpeedInsights component into BaseLayout
- Added the SpeedInsights component from @vercel/speed-insights to the BaseLayout, enhancing performance monitoring capabilities within the application.
eedaf5c Loke -
feat: add @vercel/speed-insights dependency
- Added @vercel/speed-insights version 2.0.0 to package.json and updated pnpm-lock.yaml to include the new dependency, enhancing performance monitoring capabilities.
e623a2a Loke -
feat: improve Seshat API and Dashboard functionality
- Enhanced origin resolution logic in the Seshat API to better handle app URLs and improve CORS compatibility. - Introduced a normalization function for QStash signing keys to ensure consistent handling of environment variables. - Updated the Dashboard component to track generation start times, providing better feedback on generation status and error handling. - Improved error messaging for generation failures and idle states, enhancing user experience during content generation.
52622af Loke -
feat: improve app site origin resolution logic
- Added a new function to validate and resolve configured app origins, enhancing the handling of environment variables for app site URLs. - Updated getAppSiteOrigin to utilize the new resolution function, ensuring consistent return of the default app site origin when necessary. - Introduced a constant for the default app site origin to improve code clarity and maintainability.
0cd21e1 Loke -
feat: add function to identify Sanity hosted studio hosts
- Introduced a new function to check if a hostname is a Sanity hosted studio, improving the clarity and maintainability of the origin handling logic. - Updated the getAppSiteOrigin function to utilize the new hostname check, enhancing the overall structure of the code.
24af181 Loke -
feat: enhance CORS handling for Seshat API
- Renamed allowed origins set for clarity and added support for dynamic origin validation. - Introduced a function to check if an origin is allowed based on exact matches and specific patterns. - Updated CORS middleware to handle request headers more flexibly, improving compatibility with various client requests.
f6490cf Loke -
feat: add ISR and Sanity webhook revalidation
Enable Vercel ISR caching for on-demand routes, add a signed Sanity webhook revalidation endpoint, document required env vars, and prefetch blog navigation links for faster transitions.
97599ea Loke -
feat: add CORS support and update API endpoint handling
- Implemented CORS middleware for the '/api/seshat' endpoint, allowing requests from specified origins. - Updated fetch calls in Sanity actions and Dashboard component to use a centralized appApiUrl for better maintainability. - Added SANITY_STUDIO_APP_SITE_URL to the environment example for easier configuration.
30968d5 Loke -
refactor: remove Sanity configuration files and update ESLint settings
- Deleted obsolete Sanity configuration files including sanity.cli.ts, sanity.config.ts, and related schemas to streamline the project structure. - Updated ESLint configuration to exclude the removed files and directories, ensuring cleaner linting processes. - Removed unused components and actions related to Sanity, enhancing overall code maintainability.
342b897 Loke -
feat: enhance Astro configuration and Vercel rewrites for studio integration
- Added a proxy configuration in Astro for '/studio' to redirect requests to a local server. - Updated Vercel rewrites to correctly route '/studio' paths to the appropriate destination. - Included deployment appId in Sanity CLI configuration for improved project management.
cc49c10 Loke -
feat: add resources field to post schema and enhance blog components
- Introduced a new 'resources' field in the post schema to allow for the inclusion of related resources with titles and URLs. - Updated BlogPostCard and blog post detail pages to display resources, improving content richness. - Enhanced the reading time calculation to account for plain text and added related functionality in the content generation process. - Refactored various components to improve layout and interactivity, including updates to the footer and header for better user experience.
8421769 Loke -
refactor: unify image handling across components and improve cache control
- Replaced getPostImageUrl and getProjectImageUrl with getSanityImageUrl in BlogPostCard and ProjectCard components for consistent image processing. - Updated Footer and various page components to use 'noopener noreferrer' for improved security in external links. - Refactored cache control settings across multiple pages to utilize a centralized CACHE_CONTROL configuration for better maintainability. - Removed deprecated image handling functions from helpers.ts to streamline the codebase.
b69df6a Loke -
feat: enhance image loading and layout structure in BaseLayout and index pages
- Added a slot for head elements in BaseLayout.astro to allow for dynamic head content. - Updated index.astro to preload AVIF images for improved loading performance and adjusted image sizes for better responsiveness. - Refactored image handling in index.astro to utilize new image loading strategies.
8e046a7 Loke -
feat: enhance image handling in Astro configuration and components
- Added imagesConfig to Astro configuration for improved image size management. - Updated BlogPostCard and ProjectCard components to include a listQuality parameter for better image quality control. - Refactored getPostImageSrcSet and getProjectImageSrcSet functions to utilize layoutWidth for responsive image handling.
3f69028 Loke -
chore: update Astro configuration and refactor image component usage
- Added inlineStylesheets configuration to Astro build settings for improved performance. - Removed duplicate preconnect link for Vercel insights in BaseLayout.astro. - Replaced Image component with Picture component in index.astro for better image format handling and added support for AVIF and WebP formats.
1920a2a Loke -
fix: add JSX import source for SolidJS in ContactForm component
7490950 Loke -
refactor: migrate from React to SolidJS and update related components
- Replaced React with SolidJS for the ContactForm component, utilizing Solid's reactive signals and lifecycle methods. - Updated the Header component to implement a mobile navigation dialog using native HTML dialog elements, removing the previous MobileMenu component. - Adjusted related posts functionality to align with the new SolidJS structure, including changes in the API and query handling. - Removed unused React dependencies and updated package.json and pnpm-lock.yaml accordingly. - Enhanced CLAUDE.md documentation to reflect the new client-side JavaScript architecture.
0013862 Loke -
chore: update Vercel adapter configuration and add sharp package
- Enhanced Vercel adapter configuration to include imageService support. - Added sharp package for image processing in package.json and updated pnpm-lock.yaml.
85c5bec Loke -
chore: downgrade package manager to [email protected] and update Vite patch hash in pnpm-lock.yaml
55a22b7 Loke -
chore: update package manager to [email protected] in package.json
2d264b9 Loke -
refactor: remove unused image and update SEO component to use default profile image
- Deleted unused loke_clay.png image file. - Updated Seo.astro to import and use getDefaultProfileOgUrl for default image handling. - Modified createArticleSchema in schema.ts to accept a fallback image URL. - Replaced img tags with Image component in about.astro and index.astro for better performance and added attributes. - Updated blog post page to utilize the new default image URL for article schema.
56c4348 Loke -
chore: update Vite version and add patching configuration
- Set Vite version to 7.3.1 in package.json and pnpm-lock.yaml - Introduce pnpm overrides and patchedDependencies for Vite to ensure consistent versioning across the project
0a9d474 Loke -
chore: isolate sanity studio into studio/ subdirectory
- Add studio/ with isolated package.json (React 19, Sanity 5, lucide-react) - Add studio/tsconfig.json and studio/.gitignore - Remove sanity, @sanity/vision, styled-components from root devDeps - Update root studio script: pnpm --dir studio dev - Update @tailwindcss/vite and tailwindcss 4.1.12 → 4.2.2 (fixes Vite transform error) - Untrack .sanity/ runtime artifacts, add to .gitignore - Remove eslint-plugin-react-refresh references (removed during Astro migration)
ff07087 Loke -
refactor: update image URL builder import to use createImageUrlBuilder
a5d2d80 Loke -
chore: add sanity, @sanity/vision, styled-components as devDeps for studio
06b1f83 Loke -
feat: proxy /studio to sanity hosted studio, add studio dev script
ff861df Loke -
Merge pull request #8 from loke-dev/feat/astro-migration
b32b18f Loke -
fix: add padding to shiki code blocks (pre.shiki selector for Shiki v3)
3d23cdb Loke -
docs: update CLAUDE.md to reflect Astro architecture
4abe6ae Loke -
chore: add astro build output dirs to .gitignore
23d5014 Loke -
fix: resolve typecheck errors after remix removal
aead8a2 Loke -
fix: replace ViewTransitions with ClientRouter (Astro v5+ rename)
9635997 Loke -
chore: remove vite.config.ts (replaced by astro.config.ts)
23f4d02 Loke