Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Ink Laravel Package

relaticle/ink

Filament-native content publishing for Laravel: Eloquent models, full admin for posts/categories, SEO + JSON-LD, RSS, search, Blade UI components, and 13 MCP tools for AI agents. Headless by default with optional public blog routes.

View on GitHub
Deep Wiki
Context7
1.0.1

Fixed

  • Detect user ID column type for author_id foreign key (supports ULID/UUID)
1.0.0

Added

  • Initial release
  • Post and Category Eloquent models with SEO, slugs, soft deletes
  • PostStatus enum (Draft/Published)
  • Filament PostResource with markdown editor, status toggle, SEO section
  • Filament CategoryResource with post count
  • 13 MCP tools for blog post and category CRUD
  • 10 publishable Blade components (meta-tags, structured-data, feed-link, feed, post-card, post-header, post-body, related-posts, category-badge, preview-banner)
  • BlogSitemapGenerator with route-aware URL generation
  • Dark mode support in all UI components
  • Route-aware Post::getUrl() with fallback
2.1.0

Added

  • Relaticle\Ink\Support\BlogListingSeo helper for building per-page SEOData for listings. Headless consumers can call BlogListingSeo::forIndex/forCategory/forTag from their own controllers.
  • Auto-emit FAQPage JSON-LD on post pages when content contains an ## FAQ H2 followed by ### Question? / answer-paragraph pairs. Controlled by schema.faq_auto config (default true).
  • Auto-emit HowTo JSON-LD on post pages when content contains a ## Steps H2 followed by ### Step Name / paragraph pairs. Opt-in via schema.howto_auto config (default false).
  • Relaticle\Ink\Support\SchemaExtractor helper for FAQ + HowTo HTML parsing.
  • Auto-emit Blog and CollectionPage JSON-LD on listing routes (blog.index emits both; blog.category and blog.tag emit CollectionPage).
  • Numbered, aria-labeled pagination view at ink::pagination.blog. Listing pages (index/category/tag) use it by default. Publish via php artisan vendor:publish --tag=ink-views to customize.
  • wire:navigate on the <x-ink::post-card> post-link and pagination links for SPA-feel navigation in Livewire 4 hosts. No-op when Livewire is not present.
  • Post::search($term) query scope. Defaults to a portable LIKE search across title/excerpt/content. Override via search.callback config for Postgres FTS, MySQL FULLTEXT, Scout, etc.
  • The shipped /blog route now honors ?q= for search. The existing BlogListingSeo::forIndex(searchQuery:) call ensures noindex,follow is set on search result URLs.
  • BlogSearch Livewire component (<livewire:blog::search />) with URL-synced ?q= query, 400ms debounce, and empty state. Theme-agnostic — publish the view at resources/views/vendor/ink/livewire/blog-search.blade.php to restyle.

Fixed

  • BlogSitemapGenerator now includes /blog/tag/{slug} URLs when the tags feature is enabled and the tag has published posts.
  • Listing routes (/blog, /blog/category/{slug}, /blog/tag/{slug}) now emit per-page canonical URLs and page-aware titles. Previously every paginated page canonicalized to page 1, causing Google to treat pages 2+ as duplicate content.
  • Shipped show and preview routes now call seo()->for($post) so post-attached SEO (BlogPosting + BreadcrumbList + FAQPage JSON-LD) actually renders in public-routes mode. Previously the schema only worked for consumers who overrode the controller.
2.0.0

Changed (BREAKING)

  • Package renamed from manukminasyan/filament-blog to relaticle/ink
  • PHP namespace changed from ManukMinasyan\FilamentBlog\ to Relaticle\Ink\
  • Service provider renamed: FilamentBlogServiceProviderInkServiceProvider
  • Filament plugin renamed: FilamentBlogPluginInkPlugin
  • Config file renamed: config/filament-blog.phpconfig/ink.php. Use config('ink.X') instead of config('filament-blog.X').
  • Publish tags renamed: filament-blog-configink-config, filament-blog-viewsink-views, filament-blog-migrationsink-migrations, filament-blog-translationsink-translations
  • View component prefix renamed: <x-blog::post-card><x-ink::post-card> (all components affected)
  • View namespace renamed: view('blog::X')view('ink::X')

Unchanged (compatibility-preserving)

  • Database table names (blog_posts, blog_categories, blog_tags, blog_post_tag) — no data migration required
  • Route names (blog.index, blog.show, blog.category, blog.preview, blog.feed, blog.tag) — public API contract preserved
  • URL prefix default (still /blog, configurable via config('ink.prefix'))
  • All public model/component APIs and method signatures

Migration

composer remove manukminasyan/filament-blog
composer require relaticle/ink:^2.0

See UPGRADING.md for the full sed recipe.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
besmartand-pro/php-quality-config
sentix/ai-chatbot
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity