A host can now render its own blog views through ink's controllers, publishing
nothing. Hosts that needed bespoke markup were reimplementing BlogController
entirely, because ink's pages use @extends(config('ink.layout')) — Blade
inheritance, which cannot pass props to a component layout.
- ink.views: a per-action view map, null falling back to ink::pages.*
- ink.middleware: applied to the blog route group
- Ink::resolvePreviewEditUrlUsing(): the preview edit link is a host decision
- preview now receives relatedPosts and editUrl; show/preview eager-load tags
- Post::tableOfContents(): DOM-parsed, so headings keep inline markup
Route fixes: blog.preview is bounded to [0-9]{1,18} — whereNumber alone left
an unbounded pattern that reached route-model binding and threw 22003 on
PostgreSQL, a 500 on a public unauthenticated route. blog.feed registers only
when its flag is on.
Additive for hosts on ink's own views. See UPGRADING.md.