Skip to content

Latest commit

 

History

History
2975 lines (2009 loc) · 177 KB

CHANGELOG.md

File metadata and controls

2975 lines (2009 loc) · 177 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Upcoming changes

Please see the RELEASE_NOTES.md for the changelog for the upcoming release.

About the release cycle

HydePHP consists of two primary components, Hyde/Hyde and Hyde/Framework. Development is made in the Hyde/Develop Monorepo. Major and Minor release versions are made in the Develop project. These releases are synced to the Hyde and Framework projects, and are what this changelog file tracks. Patch release versions are made in the Framework and Hyde projects independently. See https://github.com/hydephp/develop#releases for more information.

1.7.0 - 2024-07-05

Added

  • Added support for using HTML comments to create Markdown code block filepath labels in #1693
  • Added a config option to disable the theme toggle buttons to automatically use browser settings in #1697
  • You can now specify which path to open when using the --open option in the serve command in #1694
  • Added a --format=json option to the route:list command in #1724

Changed

  • When a navigation group is set in front matter, it will now be used regardless of the subdirectory configuration in #1703 (fixes #1515)
  • Use late static bindings to support overriding data collections file finding in #1717 (fixes #1716)
  • Method Hyde::hasSiteUrl() now returns false if the site URL is for localhost in #1726
  • Method Hyde::url() will now return a relative URL instead of throwing an exception when supplied a path even if the site URL is not set in #1726
  • Updated the .env.example file to contain more details on the site URL setting's usages in #1746
  • Added a version prefix to the sitemap's generator attribute in #1767
  • Setting a site name in the Yaml config file will now influence all configuration values where this is used, unless already set, in #1770 and #1773

Deprecated

  • Deprecated the global unslash() function, replaced with the existing namespaced \Hyde\unslash() function in #1753
  • Deprecated the BaseUrlNotSetException class in #1759

Removed

  • The Git version is no longer displayed in the debug screen and dashboard in #1756

Fixed

  • Fixed explicitly set front matter navigation group behavior being dependent on subdirectory configuration, fixing #1515 in #1703
  • Fixed DataCollections file finding method not being able to be overridden #1716 in #1717
  • Fixed PHP warning when trying to parse a Markdown file with just front matter without body #1705 in #1728
  • Fixed #1748 by normalizing generator version prefixes in #1767
  • Yaml data files no longer need to start with triple dashes to be parsed by DataCollections in #1733
  • Updated the Hyde URL helper to not modify already qualified URLs in #1757

Extra information

This release contains changes to how HydePHP behaves when a site URL is not set by the user.

These changes are made to reduce the chance of the default localhost value showing up in production environments.

Most notably, HydePHP now considers that default site URL localhost to mean that a site URL is not set, as the user has not set it. This means that things like automatic canonical URLs will not be added, as Hyde won't know how to make them without a site URL. The previous behaviour was that Hyde used localhost in canonical URLs, which is never useful in production environments.

For this reason, we felt it worth it to make this change in a minor release, as it has a such large benefit for sites.

You can read more about the details and design decisions of this change in the following pull request #1726.

1.6.0 - 2024-04-17

Added

  • Added a @head stack to the head.blade.php component in #1567
  • Added a Hyde::route() helper to the Hyde facade in #1591
  • Added new global helper functions (asset(), route(), url()) in #1592
  • Added a new Feature enum to improve the Features facade in #1650
  • Added a helper to ->skip() build tasks in #1656

Changed

  • The features array in the config/hyde.php configuration file is now an array of Feature enums in #1650
  • Sitemap generation will now be skipped if a base URL is not set, as Google now will not index sitemaps without a base URL in #1660
  • Updated the debug command to print the binary path when running in a standalone Phar in #1667

Deprecated

  • Deprecated the static Features flag methods used in the configuration files in #1650 which will be removed in HydePHP v2.0

Fixed

  • Fixed a bug where the sitemap and RSS feed generator commands did not work when the _site/ directory was not present in #1654
  • Fixed extra newlines being written to console for failing build tasks in #1661
  • Markdown formatting will now be stripped when generating an automatic blog post description when none is set in #1662 (fixes #1634)
  • Realtime Compiler: Fixed responsive dashboard table issue in #1595

Upgrade Path

In order to prepare your project for HydePHP v2.0, you should update your config/hyde.php configuration file to use the new Feature enum for the features array.

You can see the changes to make in your Hyde project by looking at the following pull request https://github.com/hydephp/hyde/pull/250/files

Your new config array should look like this:

    // Make sure to import the new Feature enum at the top of the file
    use Hyde\Enums\Feature;

    // Then replace your enabled features with the new Feature enum cases
    'features' => [
        // Page Modules
        Feature::HtmlPages,
        Feature::MarkdownPosts,
        Feature::BladePages,
        Feature::MarkdownPages,
        Feature::DocumentationPages,

        // Frontend Features
        Feature::Darkmode,
        Feature::DocumentationSearch,

        // Integrations
        Feature::Torchlight,
    ],

If you need more help, you can see detailed upgrade instructions with screenshots in the pull request #1650

1.5.0 - 2024-02-13

Improved Patch Release Strategy

This release experiments some changes into how releases are handled to clarify the patch versioning of distributed packages compared to the monorepo source versioning.

In short: We are now experimenting with rolling patch releases, where patches are released as soon as they're ready, leading to faster rollout of bugfixes. This means that the patch version discrepancy between the monorepo and the distributed packages will be increased, but hopefully the end results will still be clearer, thanks to the second related change: Prefixing the subpackage changes in this changelog with the package name. If there is no prefix, the change applies to the core package or the monorepo.

All this to say, please keep in mind that when the monorepo gets a new minor version, the prefixed changes may already have been released as patches in their respective packages.

Added

  • Added the existing media_extensions option to the hyde configuration file in #1531
  • Added configuration options to add custom HTML to the <head> and <script> sections in #1542
  • Added support for adding custom HTML to the <head> and <script> sections using HTML includes in #1554
  • Added an html helper to the Includes facade in #1552

Changed

  • Renamed local template variable $document to $article to better match the usage in #1506
  • Updated semantic documentation article component to support existing variables in #1506
  • Updated the Markdown to plain text converter to trim whitespace in #1561
  • HydeFront: Changed <code> styling to display as inline instead of inline-block in #1525
  • Realtime Compiler: Add strict type declarations in #1555
  • Bumped Realtime Compiler version to v3.3 in #1562
  • Internal: Renamed snake case test methods to camel case in #1556

Deprecated

  • Deprecated the BuildService::transferMediaAssets() method in #1533, as it will be moved into a build task in v2.0.

Fixed

1.4.2 - 2023-12-22

Added

  • Added info banners when dashboard content sections are empty in #1494

Changed

  • Shortened the path printed to console when using the dashboard to create a page in #1492
  • Code cleanup and style improvements in #1501, #1502, and #1503.

Fixed

  • Improved support for running HydePHP through the Phar archive in #1491
  • Fixed wrong section title in the dashboard page in #1493

1.4.0 - 2023-12-11

Added

  • Adds a new fancy output for the realtime compiler serve command in #1444
  • Added support for dot notation in the Yaml configuration files in #1478
  • Added a config option to customize automatic sidebar navigation group names in #1481
  • Added a new hyde serve --open option to automatically open the site in the browser in #1483
  • Added a new Live Edit feature to the realtime compiler in #1458

Changed

  • The docs.sidebar.footer config option now accepts a Markdown string to replace the default footer in #1477
  • Links in the sitemap.xml file are now relative when a site URL is not set, instead of using the default localhost URL in #1479
  • Improves the portability of the realtime compiler to better support running through the standalone executable in #1488
  • Bumps realtime compiler version to v3.2 in #1489
  • Support both route keys and identifiers for specifying sidebar order in #1432
  • Updated sitemap generator to use relative links instead of localhost when missing site URL in #1479

Removed

  • Removed unhelpful boilerplate from the hyde/hyde package.json in #1436

Fixed

  • Fixed dot notation in Yaml configuration not being expanded (#1471) in #1478

Internal

  • Internal: Only inject custom app config location when missing from parent in #1485
  • Internal: Remove experimental Phar support from internal configuration loader in #1485

1.3.0 - 2023-10-30

Added

  • Added support for setting custom content when calling source file creator actions directly in #1393
  • Added support for setting a custom post date when calling post file creator action directly in #1393
  • Added optional FileNotFoundException constructor parameter to set a custom exception message #1398
  • Added a new helper method to the base Command class to ask for a string input from the user in #1416
  • The realtime compiler dashboard is now interactive, and allows you to make edits to your project right from the browser #1392

Changed

  • Realtime Compiler: The DashboardController class is now marked as internal, as it is not intended to be used outside of the package #1394
  • Updated the realtime compiler server configuration options in #1395 (backwards compatible)
  • Updated the realtime compiler to generate the documentation search index each time it's requested in #1405 (fixes #1404)
  • Updated the navigation menu generator to remove duplicates after running the sorting method in #1407 (fixes #1406)
  • Updated the exception message caused by missing source option for featured images to include the path of the file that caused the error in #1409
  • Narrows down parsed BladeMatter array types to array<string, scalar> (Experimental feature not covered by BC promise) in #1410
  • Internal code refactors and improvements in #1410, #1411, and #1413

Fixed

  • Catch RealtimeCompiler dashboard OutOfBoundsException in #1384
  • Updated dropdown navigation menus to support setting priority in config in #1387 (fixing hydephp/hyde#229)
  • Updated the vendor publish command to support parent Laravel Prompts implementation in #1388
  • Fixed wrong version constant in #1391
  • Fixed improperly formatted exception message in #1399
  • Fixed missing support for missing and out of date search indexes when previewing site #1404 in #1405
  • Fixed duplicate navigation items not giving precedence to config defined items #1406 in #1407

v1.2.0 - 2023-06-22

Added

  • Added Markdown configuration option for the Tailwind prose classes in #1357
  • Added prose-img:inline to bundled TailwindCSS classes in #1359

Changed

  • Internal: Decoupled the monorepo composer.json settings in #1361
  • Changed HydePage return types to static in #1371

Removed

  • Removed the Tailwind safelist from the hyde/hyde package (as it is not required there) in #1362

Fixed

  • Fixed two improper method type annotations in the FrontMatter class in #1369

v1.1.0 - 2023-03-22

About

This release is the first since the official release of HydePHP 1.0.0. It contains a number of bug fixes and improvements, but no breaking changes as the project has reached general availability and adheres to the semantic versioning backwards compatibility promise.

Added

  • Added a RealtimeCompiler config option to disable rendered pages being stored to disk in #1334
  • Documentation sidebars now support table of contents when using Setext headings in #1343

Changed

  • Updated discovery exception message to include the causing exception message in #1305
  • Cleaned up PageDataFactory, NavigationDataFactory, and BlogPostDataFactory internals for better type safety in #1312
  • Refactored internals to use the View facade over the view function for better type safety in #1310
  • Refactored the GeneratesTableOfContents class internals to be more accurate in #1343
  • Updated to HydeFront v3.3.0 in #1329

Removed

  • Classes PageDataFactory, NavigationDataFactory, and BlogPostDataFactory no longer use the InteractsWithFrontMatter trait

Fixed

v1.0.0 - 2023-03-14

Changed

  • Compiled TailwindCSS and HydeFront for production #1295
  • Updated to HydeFront v3.2 #1297

Security

  • Bumped Webpack from 5.73.0 to 5.76.1 #1292

v1.0.0-RC.8 - 2023-03-14

Changed

  • General compatible code quality improvements #1284

Removed

  • Removed test class references from main codebase #1287

Fixed

  • Fixed "ReadingTime calculation should never be under one minute" #1286 in #1285
  • Fixed "The HydeCLI list command logo should respect the --no-ansi setting" #1127 in #1288

v1.0.0-RC.7 - 2023-03-14

Added

  • Added generics to the Hyde facade method annotations #1280

Changed

  • Updated 404 page home link to use the index route instead of the site URL #1278
  • Improved generic type usage in the RegisterFileLocations trait #1279
  • Bumped HydeFront to v3.1 #1281

v1.0.0-RC.6 - 2023-03-14

Removed

  • Removed IDE helpers for removed global variables from the IDE helper file. #1274
  • Removed default values from Hyde facade method annotations. #1275

Fixed

  • Added missing version prefix to default generator meta tag value. #1272

v1.0.0-RC.5 - 2023-03-13

Added

  • Add back lost versioning text from compiled HydeFront file by @caendesilva in #1263
  • Create documentation for the HydePHP v1.0 release by @caendesilva in #1242

Changed

  • Use new fixes from StyleCI by @caendesilva in #1264
  • Remove "Beta Software Warning" from Project Readmes by @caendesilva in #1268
  • Format Markdown documents by @caendesilva in #1270
  • Update supported versions in package security policies by @caendesilva in #1269

Fixed

  • Bugfix: Fix missing justify-between class on the documentation article header #1265

v1.0.0-RC.4 - 2023-03-12

Added

  • Added new method HydePage::getCanonicalUrl() to replace deprecated HydePage::$canonicalUrl property.

Changed

  • Added default RSS feed description value to the config stub in #1253
  • Changed the RSS feed configuration structure to be an array of feed configurations in #1258
    • Replaced option hyde.generate_rss_feed with hyde.rss.enabled
    • Replaced option hyde.rss_filename with hyde.rss.filename
    • Replaced option hyde.rss_description with hyde.rss.description

Removed

  • Removed RouteKey::normalize method deprecated in v1.0.0-RC.2
  • Removed RenderData:.getCurrentPage method deprecated in v1.0.0-RC.2
  • Removed RenderData:.getCurrentRoute method deprecated in v1.0.0-RC.2
  • Removed deprecated HydePage::$canonicalUrl property (replaced with HydePage::getCanonicalUrl()).
  • Removed deprecated SourceFile::withoutDirectoryPrefix method only used in one test.
  • Removed deprecated CreatesNewPageSourceFile::getOutputPath method as the save method now returns the path.

Fixed

  • Fixed the blog post article view where metadata assembly used legacy hard-coded paths instead of dynamic path information.

v1.0.0-RC.3 - 2023-03-11

Changed

  • Made the HydePage::$title property readonly

Deprecated

  • HydePage::$canonicalUrl

v1.0.0-RC.2 - 2023-03-10

Added

  • Added a new HydeKernel::currentPage() method to return the page being rendered.

Changed

  • Renamed global $currentRoute and $currentPage variables to $route and $routeKey respectively.
  • Renamed Render::getCurrentRoute() to Render::getRoute() to match renamed property.
  • Renamed Render::getCurrentPage() to Render::getRouteKey() to match renamed property.

Deprecated

This release candidate version contains a few deprecations, these will be removed before the final 1.0.0 release.

  • Deprecate RouteKey::normalize method as it no longer performs any normalization.
  • Deprecate RenderData::getCurrentRoute() as it is renamed to getRoute() to match renamed property.
    • This change affects the Render::getCurrentRoute() and Hyde::currentRoute() facade methods.
  • Deprecate RenderData::getCurrentPage() as it is renamed to getRouteKey() to match renamed property.
    • This change affects the Render::getCurrentPage() and Hyde::currentPage() facade methods.

Removed

  • Remove RouteKey normalization for dot notation support by @caendesilva in #1241

Fixed

  • Update MarkdownPost::getLatestPosts helper to sort using the DateTime object timestamp by @caendesilva in #1235
  • Update PostAuthor::all() to map entries into array keyed by username by @caendesilva in #1236
  • Normalize internal author array keys to lowercase to make author usernames case-insensitive by @caendesilva in #1237
  • Update pretty relative index links to rewrite to ./ instead of / by @caendesilva in #1238
  • Fixed #1240

v1.0.0-RC.1 - 2023-03-07

About

Welcome to the first release candidate for HydePHP 1.0! If you are coming from a beta version, please know that there are is a very large amount of breaking changes regarding the internal structure, so it is highly reccomended that you read through the release notes below.

Added

Breaking changes

Abstract

This beta release contains a plethora of breaking changes compared earlier beta versions. So many in fact, it could actually be easier and faster to recreate your project from scratch than to upgrade a particularly complex project. Though it only took me like five minutes to upgrade a simple documentation site, see this diff to see what I did.

The good news however, is that as HydePHP approaches version 1.0, there will no longer be releases like these with breaking changes.

While I've got your attention: read this the section right after this, as you might not need to make any changes at all.

Do I need to make any changes to my project?

If any of these statements are true, you will probably need to make changes to your project, and it might be easiest to copy over your content to a new project.

  • You currently only have PHP 8.0 installed, HydePHP now requires PHP 8.1.
  • You have written custom code (for example in Blade views) that relies on the old API.
  • You have published the built-in Blade views (you should be able to get away by just republishing them).

In all cases, you will most definitely need to republish the configuration files and update the app/bootstrap.php file.

Upgrade guide

The easiest way to upgrade your project is to copy over your content (source files, etc.) to a new project.

Major breaking changes

These are changes that break backwards compatibility and that are likely to concern users using HydePHP to create sites.

  • HydePHP now requires PHP 8.1 or higher.
  • Almost all namespaces in the framework have been changed and restructured.
  • Many of the internal underling Laravel application files have been moved, this means your app/ directory will look a bit different. See #873
  • The config/site.php file has been merged into config/hyde.php. See #964 for the upgrade guide.

Breaking internal changes

These are changes that break backwards compatibility but are unlikely to concern users using HydePHP to create sites. Instead, these changes will likely only concern those who write custom code and integrations using the HydePHP framework.

These types of changes are handled within the framework ecosystem to ensure they do not affect those using HydePHP to create sites. For example, if a namespace is changed, all internal references to that namespace are updated, so most users won't even notice it. If you however have written custom code that explicitly references the old namespace, you will need to update your code to use the new namespace.

  • The Framework package now uses strict types for its source files.

v0.64.0-beta - 2022-10-18

Note from the maintainer

First of all, I'm really sorry for the just insane amount of breaking changes in this update. I believe they are necessary in order to make v1.0 a great and stable release. I hope you'll understand. Most of the changes are likely to not affect normal usage, with the exception of the front matter navigation key changes.

About

This release performs a large amount of refactors and naming changes in preparation for the 1.0 release. Many of these refactors are breaking as several classes are moved around to new namespaces, several are merged, methods renamed, interfaces updated, and more, so forth, etc.

In general, these changes should only affect those who have written custom code that interacts with the framework, though you may need to update your configuration files, and any Blade components you may have published.

What you can expect to break

This update requires the configuration file to be updated.

The most high impact change is change of sidebar front matter options, and related areas. Please try updating your site in a test environment first, to see if you need to update any of your front matter.

Added

  • Added a JSON build information manifest automatically generated after a site build #465
  • Added a NavigationData object to HydePage.php
  • Added a Route::is() method to determine if a given route or route key matches the instance it's called on
  • Added a Site model #506
  • Added a route:list command #516
  • Added support for "dot notation" to the HydePage::get() method #497
  • Added support for "dot notation" to route key retrievals in the Route facade #513
  • Added support for plain HTML pages that are copied from the _pages to the _site directory #519
  • Added class aliases for all page types so they can be used in Blade components without the full namespace #518
  • Added a Redirect helper to create custom static HTML redirects #527
  • Added automatic cache busting to the Asset helper #530

Changed

Major breaking changes

A very large number the changes in this update are breaking, as such, not all are marked as breaking. The really major changes that require especially close attention are here listed, please scroll down to see the rest as well as the concrete changes of this high level overview.

  • Rename Features::blogPosts to Features::markdownPosts - This means you must update your hyde.php config, otherwise blog posts might not be generated
  • Rename Features::hasBlogPosts to Features::hasMarkdownPosts
  • Renamed base class AbstractPage to HydePage
  • Renamed base class AbstractMarkdownPage to BaseMarkdownPage
  • Renamed several HydePage methods to be more consistent
  • Renamed property $title to $label in NavItem.php
  • Renamed property $uri to $url in Image.php
  • Removed both RouteContract interfaces (inlined into Route.php, which you now type hint against instead)
  • Changed front matter key navigation.title to navigation.label
  • Changed front matter key image.uri to image.url for blog posts
Navigation schema changes

If you are using any of the following front matter properties, you will likely need to update them:

  • navigation.title is now navigation.label
  • The label setting has been removed from documentation pages, use navigation.label instead
  • The hidden setting has been removed from documentation pages, use navigation.hidden instead
  • The priority setting has been removed from documentation pages, use navigation.priority instead

This change also bubbles to the HydePage accessors, though that will only affect you if you have written or published custom code that interacts with the framework.

General

  • Merged interface PageContract into abstract class AbstractPage
  • Merged interface RouteFacadeContract into the Route model implementation
  • Merged interface RouteContract into the Route model implementation
  • Merged getCurrentPagePath() method into existing getRouteKey() method in PageContract and AbstractPage
  • Replaced schema traits with interfaces, see #485
  • Extracted all constructor methods in page schema traits to a new single trait ConstructPageSchemas
  • The StaticPageBuilder::$outputPath property is now a relative path instead of absolute
  • Refactored how navigation and sidebar data are handled, unifying the API, see below for more details
  • The algorithm for finding the navigation and sidebar orders has been updated, this may affect the order of your pages, and may require you to re-tweak any custom priorities.
  • The navigation link to documentation index page now has default priority 500 instead of 100
  • All usages where the RouteContract was type hinted with have been updated to type hint against the Route model implementation instead
  • Changed Blade component identifier class 'sidebar-category' to 'sidebar-group'
  • Changed Blade component identifier class 'sidebar-category-heading' to 'sidebar-group-heading'
  • Changed Blade component identifier class 'sidebar-category-list' to 'sidebar-group-list'
  • Changed the Route::toArray schema
  • Split the page metadata handling so that global metadata is now handled by the Site model (meta.blade.php must be updated if you have published it)
  • The MetadataBag class now implements Htmlable, so you can use it directly in Blade templates without calling render()
  • BladePage $view constructor argument is now optional
  • internal: Move responsibility for filtering documentation pages to the navigation menus (this means that documentation pages that are not 'index' are no longer regarded as hidden)
  • internal: The HydePage::$navigation property is now a NavigationData object instead of an array, however the object extends ArrayObject, so it should be mostly compatible with existing code

Class and method renames

  • Renamed base class AbstractPage to HydePage
  • Renamed base class AbstractMarkdownPage to BaseMarkdownPage
  • Renamed command class HydeBuildStaticSiteCommand to HydeBuildSiteCommand
  • Renamed legacy class FileCacheService to ChecksumService
  • Renamed method Hyde::getSiteOutputPath() to Hyde::sitePath()
  • Renamed method Hyde::formatHtmlPath() to Hyde::formatLink()
  • Renamed class Metadata to MetadataBag

Namespace changes

  • Moved class StaticPageBuilder to Actions namespace
  • Moved class AbstractBuildTask to Concerns namespace
  • Moved class AbstractMarkdownPage to Concerns namespace
  • Moved class AbstractPage to Concerns namespace
  • Moved class Application into Foundation namespace
  • Moved class Includes to Helpers namespace
  • Moved class Asset to Helpers namespace
  • Moved class DocumentationSidebar into Navigation namespace
  • Moved class NavigationMenu into Navigation namespace
  • Moved class NavItem into Navigation namespace
  • Moved class FindsContentLengthForImageObject into Constructors namespace
  • Moved class Markdown into Models\Markdown namespace
  • Moved class Markdown into Models\Markdown namespace
  • Moved class FrontMatter into Models\Markdown namespace
  • Moved class Author into Models\Support namespace
  • Moved class DateString into Models\Support namespace
  • Moved class File into Models\Support namespace
  • Moved class Image into Models\Support namespace
  • Moved class Route into Models\Support namespace
  • Moved class Site into Models\Support namespace
  • Moved class ValidationResult into Models\Support namespace
  • Moved class MarkdownConverter into Actions namespace
  • Moved class MarkdownFileParser into Actions namespace

Page-model specific

  • Removed action class FindsNavigationDataForPage.php (merged into HydePage.php via the GeneratesNavigationData trait)
  • Renamed method outputLocation to outputPath in HydePage.php
  • Renamed method qualifyBasename to sourcePath in HydePage.php
  • Renamed method getOutputLocation to outputLocation in HydePage.php
  • Renamed method getFileExtension to fileExtension in HydePage.php
  • Renamed method getOutputDirectory to outputDirectory in HydePage.php
  • Renamed method getSourceDirectory to sourceDirectory in HydePage.php
  • Changed named variable $basename to $identifier in HydePage.php
  • Removed $strict option from the has() method HydePage.php
  • Removed method renderPageMetadata from HydePage.php (use metadata() and/or metadata()->render() instead)

Documentation page front matter changes

  • Removed property $label in DocumentationPage.php (use $navigation['title'] instead)
  • Removed property $hidden in DocumentationPage.php (use $navigation['hidden'] instead)
  • Removed property $priority in DocumentationPage.php (use $navigation['priority'] instead)
  • Removed property $category in DocumentationPage.php (use $navigation['group'] instead)
  • Removed front matter optionlabel (use navigation.label instead)
  • Removed front matter optionhidden (use navigation.hidden instead)
  • Removed front matter optionpriority (use navigation.priority instead)
  • Removed front matter optioncategory (use navigation.group instead)
  • To access the sidebar label setting via class property, use $navigation['label'] instead of $label, etc.
  • To access the sidebar label setting via front matter getters, use navigation.label instead of label, etc.

Markdown post/pre-processor changes

If you have not written any custom Markdown processors or any custom codes that interacts with default ones, you can ignore this section. Note that list may not be exhaustive.

  • Removed interface MarkdownProcessorContract (use MarkdownPreProcessorContract or MarkdownPostProcessorContract instead)
  • ShortcodeProcessor now implements MarkdownPreProcessorContract instead of MarkdownProcessorContract
  • Renamed method ShortcodeProcessor::process() to ShortcodeProcessor::preprocess()
  • Renamed class AbstractColoredBlockquote to ColoredBlockquotes
  • Refactored a large part of the MarkdownService class

Removed

  • Removed MarkdownServiceProvider (inlined into HydeServiceProvider)
  • Removed interface IncludeFacadeContract
  • Removed interface PageContract (merged into abstract class AbstractPage)
  • Removed interface MarkdownPageContract (merged into abstract class BaseMarkdownPage)
  • Removed interface RouteFacadeContract (merged into the Route.php implementation)
  • Removed interface RouteContract (merged into the Route.php implementation)
  • Removed deprecated interface AssetServiceContract
  • Removed deprecated interface HydeKernelContract
  • Removed deprecated and unused abstract class ActionCommand
  • Removed unused function array_map_unique
  • Removed method PageContract::getCurrentPagePath() (merged into getRouteKey() in the same class)
  • Removed method AbstractPage::getCurrentPagePath() (merged into getRouteKey() in the same class)
  • Removed method Route::getSourceFilePath() (use new Route::getSourcePath() instead)
  • Removed method Route::getOutputFilePath() (use new Route::getOutputPath() instead)
  • Removed unused $default parameter from Hyde::url method
  • Using absolute paths for site output directories is no longer supported (use build tasks to move files around after build if needed)
  • RealtimeCompiler: Removed support for the legacy bootstrapping file removed in Hyde v0.40
  • Removed all experimental schema traits

Fixed

  • Fixed validation bug in the rebuild command
  • Hide x-cloak elements using inline style in styles.blade.php to prevent flashes until stylesheets are loaded
  • Configuration defined navigation labels were documented but not implemented

v0.63.0-beta - 2022-09-01

About

This release contains breaking changes regarding the PostBuildTasks that may require your attention if you have created custom tasks.

Added

  • Added the option to define some site configuration settings in a hyde.yml file. See #449
  • Build tasks are now automatically registered when placed in the app/Actions directory and end with BuildTask.php

Changed

  • Breaking changes to build hooks/tasks:
    • Rename BuildHookService to BuildTaskService
    • AbstractBuildTask::handle and BuildTaskContract::handle now returns null by default instead of void. It can also return an exit code
    • The way auxiliary build actions are handled internally has been changed to use build tasks, see PR #453
    • The documentation has been updated to consistently refer to these as tasks instead of hooks
  • The RSS feed related generators are now only enabled when there are blog posts
    • This means that no feed.xml will be generated, nor will there be any references (like meta tags) to it when there are no blog posts
  • The documentation search related generators are now only enabled when there are documentation pages
    • This means that no search.json nor search.html nor any references to them will be generated when there are no documentation pages
  • The methods in InteractsWithDirectories.php are now static, this does not affect existing usages
  • Renamed HydeSmartDocs.php to SemanticDocumentationArticle.php
  • Cleans up the Author model class and makes the constructors final

Deprecated

  • Deprecated ActionCommand.php as it is no longer used. It will be removed in the next release.

Fixed

  • Fixed #443: RSS feed meta link should not be added if there is not a feed

v0.62.0-beta - 2022-08-27

About

This update deprecates two interfaces (contracts) and inlines them into their implementations. It also refactors the documentation page layout to use more Blade components which may cause you to need to republish any manually published components.

The following interfaces are affected: HydeKernelContract and AssetServiceContract. These interfaces were used to access the service container bindings. Instead, you would now type hint the implementation class instead of the contract. This change will only affect those who have written custom code that uses or type hints these interfaces, which is unlikely. If this does affect you, you can see this diff to see how to upgrade. https://github.com/hydephp/develop/pull/428/commits/68d2974d54345ec7c12fedb098f6030b2c2e85ee. In short, simply replace HydeKernelContract and AssetServiceContract with HydeKernel and AssetService.

Changed

  • The documentation page layout has been internally refactored to utilize more Blade components. This only affects those who have extended or customized the documentation components. Some documentation components have also been renamed.

Deprecated

  • Deprecate interface HydeKernelContract, type hint the HydeKernel::class instead
  • Deprecate interface AssetServiceContract, type hint the AssetService::class instead

Removed

  • Removed legacy .js-enabled class from documentation pages

Fixed

  • The list element of the documentation page sidebar had a conflicting ID (#sidebar) and has now been changed to #sidebar-navigation which may break edge cases where this component is styled or interacted with outside of the framework.
  • Fix documentation page flickering #388

v0.61.0-beta - 2022-08-17

About

Creates a new foundation class, the FileCollection. Which like the other foundation collections, discovers all the files. Running this part of the autodiscovery will further enrich the Hyde Kernel, and allow greater insight into the application. The end user experience should not be affected by this.

Added

  • Adds a new FileCollection class to hold all discovered source and asset files
  • Adds a new File model as an object-oriented way of representing a project file

Changed

  • Move class PageCollection into Foundation namespace
  • Move class RouteCollection into Foundation namespace

Fixed

  • Fix #424 AbstractMarkdownPage save method should use Hyde::path()

Upgrade guide

Collection namespace change

You only need to do this if you have written custom code that uses the old namespace.

To upgrade the moved collection namespaces, simply replace the following namespace imports:

-use Hyde\Framework\PageCollection;
+use Hyde\Framework\Foundation\PageCollection;
-use Hyde\Framework\RouteCollection;
+use Hyde\Framework\Foundation\RouteCollection;

v0.60.0-beta - 2022-08-12

About

This release continues refactoring the internal codebase. As part of this, a large part of deprecated code has been removed and the package has been updated accordingly.

Added

  • Added getRouteKey method to PageContract and AbstractPage

Changed

  • Blog posts now have the same open graph title format as other pages
  • Merged deprecated method getRoutesForModel into getRoutes in RouteCollection
  • Cleans up and refactors GeneratesDocumentationSearchIndexFile, and marks it as internal
  • Changed MarkdownFileParser to expect that the supplied filepath is relative to the root of the project (this may break method calls where an absolute path is supplied, see upgrade guide)
  • internal: Inline deprecated internal method usage getOutputPath replacing it Hyde::pages() helper with in HydeRebuildStaticSiteCommand

Removed

  • Removed class RoutingService as it is no longer used
  • Removed deprecated legacy class Compiler from the Hyde Realtime Compiler
  • Removed deprecated interface RoutingServiceContract (deprecated in v0.59)
  • Removed deprecated method stylePath from AssetService (deprecated in v0.50)
  • Removed deprecated method getHomeLink from NavigationMenu (deprecated in v0.50)
  • Removed deprecated method parseFile from MarkdownDocument (deprecated in v0.56)
  • Removed deprecated method getPostDescription from MarkdownPost (deprecated in v0.58)
  • Removed deprecated method getCanonicalLink from MarkdownPost (deprecated in v0.58)
  • Removed deprecated method getInstance from RoutingService (deprecated in v0.59)
  • Removed deprecated method getRoutesForModel from RouteCollection
  • Removed deprecated method getOutputPath from HydeRebuildStaticSiteCommand
  • Removed deprecated property $body from MarkdownDocument
  • internal: Remove deprecated testing helper functions backup and restore

Fixed

  • MarkdownFileParser not using the Hyde path #399
  • Undefined variable $currentRoute in search.html #421
  • Fixes issues in the documentation search.json and search.html when using custom output directories

Upgrade Guide

MarkdownFileParser path change

This class now expects the supplied filepath to be relative to the root of the project. This will only affect you if you have written any custom code that uses this class. All internal Hyde code is already updated to use the new path format.

To upgrade, change any calls you may have like follows:

-return (new MarkdownFileParser(Hyde::path('_posts/foo.md')))->get();
+return (new MarkdownFileParser('_posts/foo.md'))->get();

v0.59.0-beta - 2022-08-11

About

This release refactors the internal routing system. Unless you have written custom code that directly uses these classes and methods, updating should be fairly smooth. If not, you may want to read through the following overview.

The route index has been decoupled from page index and is split into two new collection classes, PageCollection and RouteCollection. The PageCollection contains all the site's parsed pages, and the RouteCollection contains all the page routes.

The RoutingService class remains for compatibility with existing code, but now only forwards calls to the new RouteCollection. The RoutingServiceContract interface is now deprecated.

Added

  • Adds a new RouteCollection class
  • Adds a new PageCollection class
  • Adds a $routeKey property to the AbstractPage class
  • The page and route collections are now stored as properties of the HydeKernel
  • Adds an option to the Hyde::image() helper to request the returned image path use the configured base URL if it's set
  • Adds a new save() method to Markdown-based pages, to save the page object to the filesystem
  • Added new internal helpers to improve serialization of object models

Changed

  • breaking: Navigation menu priorities now use route keys instead of slugs, see upgrade notes below
  • Removed constructor from RoutingServiceContract interface
  • Refactored RoutingService to use the new RouteCollection class
  • AbstractPage::all() now returns a PageCollection, and includes the source file path as the array key
  • Improved ConvertsArrayToFrontMatter action, which now supports nested arrays
  • An exception is now thrown when attempting to get the path to an Image without a defined source path or URI
  • internal: The HydeKernel is now stored as a singleton within the kernel class, instead of the service container
  • internal: Refactor commands with shared code to extend new abstract base class
  • internal: A large part of the codebase has been refactored and cleaned up while making an effort to maintain compatibility with existing code

Deprecated

  • Deprecated interface RoutingServiceContract
  • Deprecated RoutingServiceContract::getInstance()

Removed

  • Removed all non public-contract methods from RoutingService

Fixed

  • Fix #383: Navigation menu titles can't be set in BladeMatter
  • Fix #385: DocumentationPage::home() did not work for custom documentation page output directories
  • Fix #386: Documentation page sidebar labels were not constructed from front matter
  • Fix bugs relating to the documentation sidebar labels that appeared in the last release
  • Fix #410: Search index generator breaks when storing documentation page source files in subdirectories

Upgrade notes

Route keys are now used in navigation config

Prior to this release, the navigation menu priorities were based on the page slug. This has been changed to the route key. A route key in Hyde is in short the compiled page's path, relative to the site's root. For example, _site/foo/bar.html has the route key foo/bar.

This change is breaking as the order of navigation items may be changed unless the configuration is updated. However, this is really easy. Just change docs to docs/index in the config/hyde.php file.

'navigation' => [
    'order' => [
        'index' => 0,
        'posts' => 10,
-        'docs' => 100,
+        'docs/index' => 100,
    ],
],

If you have used the config to hide the documentation page from the navigation menu, you also need to use the route key by changing 'exclude' => ['docs'] to 'exclude' => ['docs/index']. The same goes if you have used the config to change the navigation titles for the home and documentation pages.

v0.58.0-beta - 2022-08-08

About

This update contains breaking changes to the internal API regarding page models. This should only affect you directly if you've written any code that interacts with the internal page models, such as constructing them using non-built-in Hyde helpers.

The update makes large changes to how dynamic data is constructed. Instead of generating page data at runtime, now the data is generated when constructing a page object. This gives the major benefit of being able to see all dynamic data right away, without having to render the page.

The way metadata tags are handled internally is also refactored. The rendered result should not be affected.

Added

  • Added compile() method to Facades\Markdown, replacing the parse() method of the same class
  • Adds new actions to handle complex dynamic constructors
  • Adds new front matter schema traits to define the public API for front matter and hold their data
  • Adds new Meta::link() helper to create <link> tags
  • Adds new Meta::get() helper to get the metadata array
  • Adds a new system for creating and storing page metadata
  • Adds several new metadata model classes

Changed

  • Breaking: Rename AbstractMarkdownPage constructor parameter slug to identifier
  • Breaking: Rename AbstractPage property slug to identifier
  • Breaking: Change AbstractMarkdownPage constructor argument positions, putting identifier first
  • Breaking: Splits Markdown data from MarkdownDocument into new Markdown model class
  • Breaking: The default config/hyde.php file now uses Models\Author instead of Helpers\Author
  • Major: Restructure internal page data to use new front matter schema traits
  • Begin changing references to slugs to identifiers, see motivation below
  • Makes some helpers in SourceFileParser public static allowing them to be used outside the class
  • Page metadata is now stored as a page property, making it easier to see and understand
  • Page metadata is now generated at compile time instead of build time
  • Page metadata types are now strongly typed, however all types are String able, so end usage is not affected

Deprecated

  • Deprecated Facades\Markdown::parse(), use Facades\Markdown::render() instead
  • Deprecated Facades\Markdown.php, will be merged into Models\Markdown.php

Removed

  • Removed Facades\Markdown.php, merged into Models\Markdown.php
  • Removed body() method from MarkdownDocumentContract interface and all its implementations. Use markdown()->body() (or cast to string) instead
  • Removed body property from Markdown pages. Use markdown()->body() (or cast to string) instead
  • Removed deprecated Helpers\Author (fully merged into Models\Author, simply swap namespace to upgrade)
  • Removed metadata constructor helpers from the MarkdownPost class as it is now handled in the new metadata class
  • Several internal single-use helper traits have been merged into their respective classes

Fixed

  • Fix Path property in Image model should be relative to media directory #359
  • Fix Add toString method to Image model to get the link #370
  • Fix Blog post OpenGraph images must be resolved relatively #374
  • Fix PageContract needs compile method #366

Upgrade guide and extra information

Rename slugs to identifiers

Previously internally called slug(s), are now called identifier(s). In all honestly, this has 90% to do with the fact that I hate the word "slug". I considered using basename as an alternative, but that does not fit with nested pages. Here instead is the definition of an identifier in the context of HydePHP:

An identifier is a string that is in essence everything in the filepath between the source directory and the file extension.

So, for example, a page source file stored as _pages/foo/bar.md would have the identifier foo/bar. Each page type can only have one identifier of the same name. But since you could have a file with the same identifier in the _posts directory, we internally always need to specify what source model we are using.

The identifier property is closely related to the page model's route key property, which consists of the site output directory followed by the identifier.

Heavily refactor constructors of Markdown-based page models

Adds a new interface to the Markdown page model constructors, that expects instantiated FrontMatter and MarkdownDocument objects. Normally you would use the SourceFileParser to create the object.

This means that the constructor for all Markdown-based pages is completely changed. To use a format matching the old behaviour, you can use the MarkdownPageModel::make method.

Title property has been removed from page model constructors

The following syntax has been removed: new MarkdownPage(title: 'Foo Bar') Instead, you can add it with front matter: MarkdownPage::make(matter: ['title' => 'Foo Bar'])

Markdown pages now have front matter in an object instead of array

This means that instead of the following $post->matter['title'], you would use $post->matter('title'), which allows you to add a fallback like so: $post->matter('title', 'Untitled')

Author helper has been merged into the model

The deprecated Helpers\Author has been fully merged into Models\Author. Simply swap namespaces to upgrade.

-use Hyde\Framework\Helpers\Author;
+use Hyde\Framework\Models\Author;

v0.57.0-beta - 2022-08-03

About

This update refactors the internal page source model parsing. This will likely not affect you directly, however, if you have written custom code that interacts with any class relating to the PageParser contract, you'll want to take a closer look at the changes.

Added

  • Added a new static shorthand to quickly parse Markdown files into MarkdownDocuments (MarkdownFileParser::parse())
  • Added toArray() method to MarkdownDocuments, which returns an array of all the body lines

Changed

  • All source model parsing is now handled by the new SourceFileParser action
  • Blog post front matter no longer includes merged slug
  • MarkdownDocument now implements the Arrayable interface
  • Markdown page models no longer includes the slug merged into the front matter
  • All Markdown page models now have the title property inferred when parsing
  • internal: The DocumentationPage slug now behaves like other pages, and the basename is produced at runtime, see below
  • internal: Refactor search index generator to use route system

Deprecated

  • Deprecated MarkdownDocument::parseFile(), will be renamed to MarkdownDocument::parse()

Removed

  • The PageParserContract interface, and all of its implementations have been removed
  • Removed $localPath property from DocumentationPage class, see above
  • Removed trait HasDynamicTitle

v0.56.0-beta - 2022-08-03

About

This update makes changes to the internal Markdown services. If you have written code or integrations that uses any of these services, you may want to take a closer look. Otherwise, this should not affect you much.

Many Markdown related classes have been moved to a new namespace, and the classes themselves have been restructured. Again, this only affects those who in the past have used these classes outside of what Hyde normally provides.

Due to the nature of this refactor, where so much have been changed, not everything is documented here. See the attached pull request for the full Markdown change diff: #318

Added

  • Added model FrontMatter.php
  • Create MarkdownConverter.php
  • Create MarkdownServiceProvider.php
  • internal: Added Benchmarking framework

Changed

  • Move Markdown::hasTableOfContents() to DocumentationPage::hasTableOfContents()
  • Move most Markdown related classes into Modules\Markdown namespace
  • Rename MarkdownConverterService to MarkdownService
  • Rename MarkdownFileService to MarkdownFileParser
  • Replace CommonMarkConverter with Hyde MarkdownConverter

Removed

  • Remove old MarkdownConverter action
  • Delete HasMarkdownFeatures.php

v0.55.0-beta - 2022-08-01

About

This update removes the deprecated LegacyPageRouter class from the Hyde Realtime Compiler (HydeRC). Along with this release, the HydeRC is now on version 2.5, and requires Hyde version 0.48.0-beta or higher.

Changed

  • hyde/hyde now requires HydeRC version 2.5 or higher.
  • hyde/realtime-compiler no longer supports Framework versions older than v0.48.0-beta.

Removed

  • Remove the deprecated LegacyPageRouter class from the HydeRC.

v0.54.0-beta - 2022-08-01

About

This release refactors and cleans up a large part of the internal code base. For most end users, this will not have any visible effect. If you have developed integrations that depend on methods you may want to take a closer look at the associated pull requests as it is not practical to list them all here.

Overview

Here is a short overview of the areas that are impacted. If you don't know what any of these mean, they don't affect you.

  • HydeKernel has been internally separated into foundation classes
  • DiscoveryService has been refactored
  • Page compiling logic are now handled within the page models

Added

  • internal: Adds methods to the HydeKernelContract interface
  • Added new filesystem helpers, Hyde::touch(), and Hyde::unlink()

Changed

  • internal: The HydeKernel has been refactored to move related logic to service classes. This does not change the end usage as the Hyde facade still works the same
  • DiscoveryService::getSourceFileListForModel() now throws an exception instead of returning false when given an invalid model class
  • DiscoveryService::getFilePathForModelClassFiles method was renamed to DiscoveryService::getModelSourceDirectory
  • DiscoveryService::getFileExtensionForModelFiles method was renamed to DiscoveryService::getModelFileExtension
  • The Hyde::copy() helper now always uses paths relative to the project
  • The Hyde::copy() helper will always overwrite existing files
  • Replaced SitemapService::canGenerateSitemap() with Features::sitemap()
  • Replaced RssFeedService::canGenerateFeed() with Features::rss()
  • RSS feed is now always present on all pages, see reasoning in a93e30020

Deprecated

  • Deprecated trait HasMarkdownFeatures.php

Removed

  • Removed deprecated Hyde::uriPath() helper
  • Removed deprecated CollectionService::findModelFromFilePath()

Upgrade tips

When refactoring the Hyde::copy() helper change, you have two options (that you can combine). If one or more of your inputs are already qualified Hyde paths, use the native copy helper. If you don't want to overwrite existing files, make that check first.

v0.53.0-beta - 2022-07-30

About

This release refactors some internal code. If you have published any Blade views or created any custom integrations, you may want to take a closer look at the changes. Otherwise, this should not affect most existing sites.

Added

  • Added Hyde::url() and Hyde::hasSiteUrl() helpers, replacing now deprecated Hyde::uriPath() helper

Changed

  • The HTML page titles are now generated in the page object, using the new htmlTitle() helper
  • Renamed helper Hyde::pageLink() to Hyde::formatHtmlPath()
  • internal: DiscoveryService.php is no longer deprecated
  • internal: CollectionService.php was merged into DiscoveryService
  • internal: Renamed trait GeneratesPageMetadata to HasArticleMetadata

Deprecated

  • Deprecated Hyde::uriPath(), use Hyde::url() or Hyde::hasSiteUrl() instead
  • Deprecated Helpers\Author.php, will be merged into Models\Author.php

Removed

  • internal: CollectionService.php has been removed, all its functionality has been moved to DiscoveryService
  • internal: The $currentPage parameter of a few methods has been removed, it is no longer necessary due to it being inferred from the view being rendered

v0.52.0-beta - 2022-07-29

About

This update internally refactors how documentation sidebars are handled. If you have published Blade views relating to these, or built framework integrations you may want to take a closer look at the changed files.

Added

  • Hyde now supports nested pages!

Changed

  • internal: Refactor how documentation sidebars are generated and handled
  • internal: (Sidebar) categories are now internally referred to as "groups"
  • internal: The sidebar related Blade views have been renamed
  • DocumentationPage::indexPath() was renamed to DocumentationPage::home() and now returns a Route instead of a URL. It no longer resolves to README files.

v0.51.0-beta - 2022-07-28

Added

  • Add Laravel Tinker as a development dependency for the Monorepo
  • Improved the hyde make:page command to add page type selection shorthands

Removed

  • Removed test files from the hyde/hyde sub repository

v0.50.0-beta - 2022-07-26

About

This update makes breaking changes to the configuration. You will need to update your configuration to continue using the new changes. Each one has been documented in this changelog entry, which at the end has an upgrade guide.

Overview of major changes

As there are a lot of changes, here is first a quick overview of the major ones. See the full list after this section.

  • Alpine.js is now used for interactions.
  • HydeFront has been rewritten and is now on version 2.x.
  • The hyde.css and hyde.js files have now for all intents and purposes been merge into app.css and refactored to Alpine.js, respectively.
  • The documentation pages are now styled using TailwindCSS instead of Lagrafo.
  • Moved some configuration options from hyde.php to site.php
  • Moved Composer dependencies, you will laravel-zero/framework added to your Hyde composer.json file.

Note that the goal with this release is to make the framework more stable and developer friendly, but without it affecting the end user experience. For example, the visual experience as well as the interactions of the refactored documentation pages are minimal and most users won't notice any change. However, for developers, the changes are significant and will reduce a lot of complexity in the future.

Added

  • Added Alpine.js to the default HydePHP layout
  • Added a new configuration file, config/site.php, see below
  • Added RSS feed configuration stubs to config/site.php
  • Added an Includes facade that can quickly import partials
  • Added an automatic option to load footer Markdown from partial
  • Added the hyde.load_app_styles_from_cdn option to load _media/app.css from the CDN

Changed

  • Move laravel-zero/framework Composer dependency to hyde/hyde package
  • Moved site specific configuration settings to config/site.php
    • Moved config option hyde.name to site.name
    • Moved config option hyde.site_url to site.url
    • Moved config option hyde.pretty_urls to site.pretty_urls
    • Moved config option hyde.generate_sitemap to site.generate_sitemap
    • Moved config option hyde.language to site.language
    • Moved config option hyde.output_directory to site.output_directory
  • The default site.url is now http://localhost instead of null
  • Merged configuration options for the footer, see below
  • Rebrand lagrafo documentation driver to HydeDocs
  • Hyde now requires a minimum version of HydeFront v2.x, see release notes below
  • internal: Refactor navigation menu components and improve link helpers
  • internal: The main Hyde facade class has been split to house the logic in the HydeKernel class, but all methods are still available through the new facade with the same namespace
  • internal: Move tests foundation to new testing package
  • internal: Renamed GeneratesTableOfContents.php to GeneratesSidebarTableOfContents.php

Removed

  • Removed \Hyde\Framework\Facades\Route. You can swap out usages with \Hyde\Framework\Models\Route without side effects.
  • Removed ConvertsFooterMarkdown.php
  • Removed internal $siteName config variable from config/hyde.php

Fixed

  • Fixed bug #260 where the command to publish a homepage did not display the selected value when it was supplied as a parameter
  • Fixed bug #272, only generate the table of contents when and where it is actually used
  • Fixed bug #41 where search window does not work reliably on Safari

Upgrade Guide

Here are some instructions for upgrading an existing project. You should also read the standard upgrade guide first for general advice, https://hydephp.com/docs/1.x/updating-hyde.

If you use Git, you may be able to automatically configure some of these by merging https://github.com/hydephp/hyde into your project. Alternatively, you can download the release and unzip it into your project directory, and using GitHub Desktop or VS Code (or whatever you use) to stage the new changes without affecting your project's configuration.

Core file changes

Here is an overview of the core files that have changed and that you will most likely need to update. Some of these have detailed instructions further down.

  • config/site.php (new)
  • config/hyde.php (changed)
  • config/app.php (changed)
  • app/bootstrap.php (changed)
  • composer.json (changed)
  • package.json (changed)
  • resources\assets\app.css (changed)
  • _pages\404.blade.php (changed)

A large number of Blade views have also changed. You may want to update pretty much all of them. See the diff for a list of files that have changed.

Updating Composer

When updating an existing project, you may need to add laravel-zero/framework to your Hyde composer.json file.

    "require": {
        "php": "^8.0",
        "hyde/framework": "^0.50",
        "laravel-zero/framework": "^9.1"
    },

Using the new site config

Site-specific config options have been moved from config/hyde.php to config/site.php. The Hyde config is now used to configure behaviour of the site, while the site config is used to customize the look and feel, the presentation, of the site.

The following configuration options have been moved. The actual usages remain the same, so you can upgrade by using copying over these options to the new file.

  • hyde.name
  • hyde.site_url (is now just site.url)
  • hyde.pretty_urls
  • hyde.generate_sitemap
  • hyde.language
  • hyde.output_directory

If you have published and Blade views or written custom code that uses the config options, you may need to update them. You can do this by republishing the Blade views, and/or using search and replace across your code. VSCode has a useful feature to make this a breeze: CMD/CTRL+Shift+F.

Using the new footer config

The footer configuration options have been merged. Prior to this update, the config option looked as follows:

// filepath: config/hyde.php
'footer' => [
  'enabled' => true,
  'markdown' => 'Markdown text...'
],

Now, the config option looks as follows:

// filepath: config/hyde.php

// To use Markdown text
'footer' => 'Markdown text...',

// To disable it completely
'footer' => false,

As you can see, the new config option is a string or the boolean false instead of an array. We use the same option for both the Markdown text and the footer disabled state.

Updating Blade Documentation Views

This release rewrites almost all of the documentation page components to use TailwindCSS. In most cases you won't need to do anything to update, however, if you have previously published the documentation views, you will need to update them.

Release Notes for HydeFront v2.x

HydeFront version 2.0 is a major release and has several breaking changes. It is not compatible with HydePHP versions lower than v0.50.0-beta. HydePHP versions equal to or later than v0.50.0-beta require HydeFront version 2.0 or higher.

Many files have been removed, as HydePHP now uses Alpine.js for interactions, and TailwindCSS for the documentation pages.

HydeFront v1.x will receive security fixes only.

v0.49.0-beta - 2022-07-15

Added

  • Added configuration option to quickly enable HTML tags in Markdown

Changed

  • The DataCollection module now no longers filters out files starting with an underscore
  • Moves the scripts that create the documentation page search window to HydeFront CDN
  • Updated autoloaded HydeFront version to 1.13.x

v0.48.0-beta - 2022-07-10 - Internal Pseudo-Router Service Refactoring

About

This release brings a massive refactor in the way the HydePHP auto-discovery process works. It does this by centralizing all discovery logic to the new pseudo-router module which discovers and maps all source files and output paths.

The update also refactors related code to use the router. Part of this is a major rewrite of the navigation menu generation. If you have set any custom navigation links you will need to update your configuration files as the syntax has changed to use the NavItem model instead of array keys.

You will also need to update navigation related Blade templates, if you have previously published them.

Added

  • Added a pseudo-router module which will internally be used to improve Hyde auto-discovery
  • Added a Route facade that allows you to quickly get a route instance from a route key or path
  • Added a new NavItem model to represent navigation menu items
  • Added a new configuration array for customizing the navigation menu, see the hyde.navigation array config

Changed

  • Changed how the navigation menu is generated, configuration files and published views must be updated
  • Changed bootstrap.php to Stt Hyde base path using dirname instead of getcwd
  • Reversed deprecation for StaticPageBuilder::$outputPath
  • internal refactor: Creates a new build service to handle the build process

Deprecated

  • Deprecated DiscoveryService::findModelFromFilePath() - Use the Router instead.
  • Deprecated DiscoveryService.php - Use the Router instead. (Some helpers may be moved to FluentPathHelpers.php)

Removed

  • The "no pages found, skipping" message has been removed as the build loop no longer recieves empty collections.
  • Removed the hyde.navigation_menu_links and hyde.navigation_menu_blacklist configuration options, see new addition above.

v0.47.0-beta - 2022-07-05

Added

  • Add macroable trait to Hyde facade

v0.46.0-beta - 2022-07-03

Added

  • Added DocumentationPage::indexPath(), replacing Hyde::docsIndexPath()

Changed

  • internal: Move service provider helper methods to the RegistersFileLocations trait
  • internal: Add helpers.php to reduce repeated code and boilerplate
  • internal: Change internal monorepo scripts for semi-automating the release process
  • Added DocumentationPage as a class alias, allowing you to use it directly in Blade views, without having to add full namespace.

Removed

  • Remove deprecated Hyde::getDocumentationOutputDirectory(), replaced with DocumentationPage::getOutputDirectory()
  • Remove deprecated Hyde::docsIndexPath(), replaced with DocumentationPage::indexPath()
  • Remove deprecated DocumentationPage::getDocumentationOutputPath(), use DocumentationPage::getOutputPath() instead

Fixed

  • Fix minor bug in Blade view registry where merged array was not unique

v0.45.0-beta - 2022-07-03

Added

  • Add dummy file to persist base Tailwind utilities #141
  • Add configuration feature for DataCollections to enable/disable automatic _data directory generation #142

Changed

  • DataCollections are now disabled by default
  • Rename internal trait RegistersDefaultDirectories to RegistersFileLocations

Removed

  • Removes the automatic check to see if the configuration file is up to date #143
  • Remove deprecated Hyde::titleFromSlug() helper, use Hyde::makeTitle() instead
  • Removed deprecated CollectionService::getBladePageList, is renamed to getBladePageFiles
  • Removed deprecated CollectionService::getMarkdownPageList, is renamed to getMarkdownPageFiles
  • Removed deprecated CollectionService::getMarkdownPostList, is renamed to getMarkdownPostFiles
  • Removed deprecated CollectionService::getDocumentationPageList, is renamed to getDocumentationPageFiles

Fixed

  • Fix bug causing files starting with underscores to add empty values to the file collection array #140

v0.44.0-beta - 2022-07-02 - Internal code restructuring

About

This release mainly makes internal changes to the Framework API. If you are an end user, most of the changes are not relevant. However, if you are a package developer, or if you have published Blade views or otherwise extended Hyde you may want to take a look as there are internal breaking changes.

Added

  • Added Hyde::makeTitle() helper, an improved version of Hyde::titleFromSlug()
  • Added new helper method render() to MarkdownDocuments to compile the Markdown to HTML, fixes #109
  • Added MarkdownPost as a class alias, allowing you to use it directly in Blade views, without having to add full namespace.

Changed

  • Update default HydeFront version to v1.12.x
  • Updates the codebase to use the new Hyde::makeTitle() helper
  • Several internal changes to how page models are structured, #122
  • Internal: Separate the MarkdownDocument into a dedicated abstract page class, #126
  • Moved Hyde\Framework\Models\BladePage to new namespace Hyde\Framework\Models\Pages\BladePage
  • Moved Hyde\Framework\Models\MarkdownPage to new namespace Hyde\Framework\Models\Pages\MarkdownPage
  • Moved Hyde\Framework\Models\MarkdownPost to new namespace Hyde\Framework\Models\Pages\MarkdownPost
  • Moved Hyde\Framework\Models\DocumentationPage to new namespace Hyde\Framework\Models\Pages\DocumentationPage
  • Improves how the site output directory is emptied, helping prevent accidental deletion of files #135
  • The emptying of the site output directory can now be disabled by setting the new config option hyde.empty_output_directory to false #136

Deprecated

  • Deprecated Hyde::titleFromSlug(), use Hyde::makeTitle() instead
  • Deprecate DocumentationPage::getDocumentationOutputPath()
  • Deprecate Hyde::docsIndexPath()
  • Deprecate Hyde::getDocumentationOutputDirectory()
  • Deprecate RegistersDefaultDirectories.php pending rename
  • Deprecated CollectionService::getBladePageList, is renamed to getBladePageFiles
  • Deprecated CollectionService::getMarkdownPageList, is renamed to getMarkdownPageFiles
  • Deprecated CollectionService::getMarkdownPostList, is renamed to getMarkdownPostFiles
  • Deprecated CollectionService::getDocumentationPageList, is renamed to getDocumentationPageFiles

Removed

  • Remove unused $withoutNavigation variable from the app layout
  • Removed deprecated 'hyde.site_output_path' config option (use hyde.output_directory instead)
  • Remove long deprecated hyde.version and framework.version service container bindings
  • Removed deprecated StarterFileService which was deprecated in v0.20.x

Fixed

  • Fix style bug #117, Hyde title helper should not capitalize non-principal words

v0.43.0-beta - 2022-06-25 - File-based Collections

Added

  • Added configuration option hyde.media_extensions to allow you to specify additional comma separated media file types. #39
  • Adds a safer config option hyde.output_directory for customizing the output directory
  • Adds a file-based way to create and interact with collections, https://hydephp.com/docs/1.x/collections

Removed

  • Removed the --pretty build command option which was deprecated in v0.25.x
  • Removed deprecated internal AssetManager trait which was replaced with the Asset facade

Fixed

  • HydeRC: Fixes a bug in the auxiliary exception handler leading to unintentional recursion causing out of memory errors in both the browser and the PHP server.

v0.42.0-beta - 2022-06-24

Added

  • Added a @section hook to the docs layout to allow yielding content
  • HydeRC: Add ping route to check if a HydeRC server is running hydephp/realtime-compiler#9
  • internal: Added an HtmlResponse object to the realtime compiler

Changed

  • Change the the Prettier integration to only modify HTML files #102
  • Change how the docs/search.html page is rendered, by handling page logic in the view, to decouple it from the build search command

Fixed

  • HydeRC: Rewrite request docs to docs/index to fix hydephp/realtime-compiler#10
  • Fix bug #93 where styles were missing on search.html when changing the output directory to root

v0.41.0-beta - 2022-06-24 - Add an Asset facade

About

This release refactors and improves the Asset Service, adding auto-configuration features and a new Asset facade.

Using the Asset facade in Blade views

Instead of the long syntax Hyde::assetManager() you can now use the Asset facade directly. See this example, which both do the exact same thing using the same underlying service:

Hyde::assetManager()->hasMediaFile('app.css')
Asset::hasMediaFile('app.css')

If you don't know what any of this means, good news! You don't have to worry about it. Hyde's got your back.

Added

  • Added feature to dynamically load hyde.css and hyde.js if they exist locally
  • Added the Asset facade to be used instead of Hyde::assetManager()
  • Added the Asset facade as a class alias to config/app.css

Changed

  • Changed scripts.blade.php and styles.blade.php to use the Asset facade

Deprecated

  • Deprecated AssetManager.php (Hyde::assetManager()). Use the Asset facade instead

v0.40.0-beta - 2022-06-22

Added

  • Added back the AppServiceProvider
  • Added system for defining easy to use post-build hooks #79
  • Added configuration option to exclude documentation pages from showing up in the JSON search index

Changed

  • Changelog files in the documentation source directory are now ignored by the JSON search index by default
  • Adds a fallback which removes the search modal popup and redirects to the search.html page when the dialogue element is not supported.

Deprecated

  • Deprecate the site_output_path option in the Hyde config file. Will be handled by the HydeServiceProvider.

Removed

  • Removed the deprecated bootstrap directory
  • Removed default .gitkeep from the _site directory

Security

  • Bump guzzlehttp/guzzle from 7.4.4 to 7.4.5

v0.39.0-beta - 2022-06-20

Added

  • Added a helper to all page models to get an array of all its source files #44
  • Added a helper to all page models to parse source files directly into an object #40
  • Adds the MarkdownDocumentContract interface to markdown based pages to keep a consistent and predictable state
  • Adds .gitkeep files to persist empty directories
  • internal: Add more tests
  • internal: Add packages/hyde/composer.json for persisted data instead of removed update script

Changed

  • Changed welcome page title #52
  • Add rel="nofollow" to the image author links #19
  • Changed the default position of the automatic navigation menu link to the right, also making it configurable
  • Renamed deprecated Hyde::docsDirectory() helper to suggested Hyde::getDocumentationOutputDirectory()
  • Makes the constructor arguments for Markdown page models optional #65
  • Added the Hyde/Framework composer.lock to .gitignore as we keep a master lock file in the monorepo
  • Changed namespace for Hyde/Framework tests from Hyde\Testing\Framework to Hyde\Framework\Testing
  • Directories are created when needed, instead of each time the service provider boots up
  • internal: Add back codecov.io to pull request tests #37
  • internal: Refactor test that interact with the filesystem to be more granular
  • internal: Update Monorepo structure to move persisted data for the Hyde package into the packages directory

Removed

  • Removed the Hyde::getLatestPosts() helper which was deprecated in v0.34.x and was replaced with MarkdownPost::getLatestPosts()
  • Removes the long deprecated CreatesDefaultDirectories class
  • internal: Removed composer update script

Fixed

v0.38.0-beta - 2022-06-18

About

This release refactors the test suite, compartmentalizing test code into the respective package directories. This does not affect the behavior of the library, but it does affect how package developers run the test suites.

Added

  • internal: Adds high level tests for the Hyde package.
  • internal: Add GitHub test workflows for Hyde/Hyde and Hyde/Framework

Changed

  • Formats code to the PSR-2 standard.

  • internal: Move Framework tests from the monorepo into the Framework package.

  • internal: Rename monorepo workflow build-test.yml to continuous-integration.yml.

  • internal: Change testing namespaces update phpunit.xml.dist correspondingly.

  • internal: Add static analysis tests to the continuous integration workflow.

  • internal: Add matrix test runners to the continuous integration workflow.

v0.37.2-beta - 2022-06-17

About

This release brings internal restructuring to the Hyde monorepo, adding a helper command to manage the new release cycle.

Added

  • Add internal monorepo:release command

Changed

  • Changed to keep only a single CHANGELOG.md file for Hyde/Hyde and Hyde/Framework

v0.37.1-beta - 2022-06-16 - Update validation test

About

If there are no documentation pages there is no need for an index page, and the test can safely be skipped.

What's Changed

  • v0.37.0-beta - Create custom validator test framework by @caendesilva in #45
  • Skip documentation index validation test if the _docs directory is empty by @caendesilva in #48

Full Changelog: https://github.com/hydephp/develop/compare/v0.36.0-beta...v0.37.1-beta

v0.37.0-beta - 2022-06-16 - Replace dependency with custom validator implementation

What's Changed

  • v0.37.0-beta - Create custom validator test framework by @caendesilva in #45

Full Changelog: https://github.com/hydephp/develop/compare/v0.36.0-beta...v0.37.0-beta.1

v0.36.0-beta - 2022-06-16 - Add package auto-discovery

What's Changed

  • Improve transformation of the hyde/hyde composer.json in the monorepo split job by @caendesilva in #33
  • v0.36.x - Add package auto-discovery by @caendesilva in #35

Full Changelog: https://github.com/hydephp/develop/compare/v0.35.0-beta.1...v0.36.0-beta

v0.35.0-beta - 2022-06-14 - Initial Monorepo Release

What's Changed

  • Restore master project by @caendesilva in #1
  • Merge Hyde/Framework into packages/framework by @caendesilva in #2
  • Refactor test suite, moving tests into Hyde root and updating some of them by @caendesilva in #3
  • Remove default AppServiceProvider.php, fix #5 by @caendesilva in #6
  • Fix #7: Remove unrelated configuration files from the framework package by @caendesilva in #8
  • Refactor bootstrapping process by @caendesilva in #9
  • Remove layover framework test files by @caendesilva in #10
  • Import hydefront package by @caendesilva in #11
  • Import hydephp/realtime-compiler to packages/ by @caendesilva in #16
  • Handle moving of the bootstrap file to provide backwards compatibility for the migration period by @caendesilva in #17
  • Import hydephp/docs by @caendesilva in #18
  • Create readonly mirrors by @caendesilva in #21
  • Add Rocket dashboard subrepository by @caendesilva in #25
  • Work in progress single-file dashboard for the HydeRC by @caendesilva in #26
  • Create dashboard template by @caendesilva in #27

Full Changelog: https://github.com/hydephp/develop/commits/v0.35.0-beta


Archive (pre v0.35.0)

In v0.35.0 the Hyde project source was moved into the HydePHP/Develop monorepo where the changelog is now handled. Releases in Hyde/Hyde and Hyde/Framework are synced one-to-one since this change.

Hyde/Hyde Archive (pre v0.35.0)

All notable changes to this project will be documented in this file. Dates are displayed in UTC.

Generated by auto-changelog.

11 June 2022

  • Bump guzzlehttp/guzzle from 7.4.3 to 7.4.4 #187

6 June 2022

4 June 2022

4 June 2022

  • Move back hyde/realtime-compiler to hyde/hyde #184
  • Update composer.lock b36937d

4 June 2022

  • Persist file cache data directory 347e393
  • Create cache .gitignore 14e57b6

4 June 2022

  • Update frontend and framework files #180
  • Update composer.lock 62b9b4e
  • Automatic build update 626983a

4 June 2022

  • Update composer.lock e26171a
  • Remove composer requirements handled by Framework b04754b
  • Update Hyde/Framework to v0.32.x 4cd1161

4 June 2022

  • Update frontend and framework files #177
  • Update to Framework 0.31.x 2da64b4
  • Automatic build update 9a59cb6

31 May 2022

  • Fix package.json version formatting error #175

31 May 2022

30 May 2022

  • Update frontend and framework files #172
  • Fix #169: remove white-space: pre from <code>, allowing it to wrap #170
  • Merge pull request #170 from hydephp/Update-tailwind-config-to-allow-code-tags-to-wrap #169
  • Fix #169: remove white-space: pre from <code> #169
  • Update lock file f037c4d
  • Update hyde/realtime-compiler to v1.3.0 91e822a
  • Update to Framework v0.29.0-beta 9a624de

29 May 2022

  • Bump guzzlehttp/guzzle from 7.4.2 to 7.4.3 #167

23 May 2022

21 May 2022

  • Upgrade hyde/framework v0.27.5-beta => v0.27.11-beta 809c700

19 May 2022

18 May 2022

  • Update to v0.26.x 123bdeb
  • Breaking: Update config to v0.26.x-dev-master 268b2a6
  • Update framework to dev-master ddc37cf

17 May 2022

  • Update frontend and framework files #161
  • Update frontend and framework files #159
  • Update to v0.25.x 497d540
  • Automatic build update 64c2bd6
  • Automatic build update 915cab8

11 May 2022

11 May 2022

  • Update dependencies for release 575338d

6 May 2022

  • Update frontend and framework files #152
  • Run cache after installing 25f8581
  • Update hyde/framework cc66395

4 May 2022

  • Update frontend and framework files #149
  • Fix #146 by adding _pages to Tailwind content #148
  • Add back _site to Tailwind content array #147
  • Update frontend and framework files #143
  • Merge pull request #148 from hydephp/caendesilva-patch-1 #146
  • Fix #146 by adding _pages to Tailwind content #146
  • Automatic build update 5f656d0
  • Remove reliance on deprecated service 71bb359

3 May 2022

3 May 2022

  • Update max-width for blog posts #139
  • Update config to v0.20.x 87c6748
  • Rename workflow and jobs c67f2c0

1 May 2022

  • Update frontend assets #136
  • Update frontend assets #134
  • Add Laravel Mix #124 #129
  • Fix #127 #127
  • Clone repo directly to fix #133 #133
  • Fix #131 #131
  • Add Laravel Mix dc62438
  • Remove laminas/laminas-text fa23c60
  • Add PostCSS db399c4

29 April 2022

28 April 2022

  • Remove compiled files and fix wrong homepage layout f92e4b7

28 April 2022

  • Remove GitHub test workflows from Hyde/Hyde, moving them into Hyde/Framework #116
  • Move Framework tests to the Hyde/Framework package #115
  • Resolve hydephp/framework#186 #186
  • Move tests to Framework eba459c
  • Remove deprecated trait 87f1659
  • Remove deprecated Setup directory f5a9be5

28 April 2022

  • Delete codeql as the JS has moved to HydeFront ef7e94e
  • Change test coverage to code reports b1fd3e9
  • Add more reporting outputs a4ac8e6

27 April 2022

27 April 2022

  • Remove files moved to CDN 521d790
  • Update tests for removed frontend assets fa68c37

21 April 2022

20 April 2022

  • Remove BrowserSync and other dependencies #93
  • Create the tests f30c375
  • Republish the config c290249
  • Update tests for 0.13.x f6de746

19 April 2022

17 April 2022

  • Add the realtime compiler extension 90989c1
  • Streamline Readme 5860c04

12 April 2022

7 April 2022

  • Change where and how stylesheets and scripts are stored and handled #63
  • Move the resource files fb3b660
  • Add the test 51d99b2
  • Publish the resources bf3b20d

3 April 2022

  • Clean up test code and fix mismatched test namespace #59
  • Update the navigation menu frontend #58
  • Add Changelog.md 9bff522
  • Create CODE_OF_CONDUCT.md ffde383
  • Create a test runner with a backup feature 605ed46

1 April 2022

  • Fix outdated welcome page links 323ea17

1 April 2022

1 April 2022

  • Add SASS as a dev dependency #55

1 April 2022

  • Remove _authors and _drafts directories #48 #53
  • Create the first two tests fdd197c
  • Create the test 6c43c41
  • Update author yml config path 67af952

30 March 2022

  • Move scripts into app.js #51
  • Update command class names #49
  • Update to latest Framework version 24d666d
  • Add the test 3554c33
  • 0.6.0 Add the test 0e99c56

25 March 2022

25 March 2022

  • Bump minimist from 1.2.5 to 1.2.6 #47
  • #37 Add more tests: HydeServiceProvider ae8673f
  • Inline the stream variable to fix missing file error bca234c
  • Update to Framework 0.5.1 449e051

24 March 2022

  • 0.4.0 Update which adds several new tests tying into framework v0.5.0 #46
  • Format tests to PSR2 e08aba6
  • Create test for publish homepage command 4e0f828
  • Update framework version to tie into new release e4944c8

23 March 2022

  • Unlock framework version to patch error in last release 4423513
  • Update config a480b0a

23 March 2022

  • Increase link contrast to fix accessibility issue #45
  • Add the Site URL setting 05211b9
  • Update config 8c0d331
  • Remove dev files from gitignore f52d471

23 March 2022

  • Replace the default empty blog listing index page with a new welcome screen #44
  • Replace the default page d747290
  • Add the links b8cd49c
  • Add info about the new build --clean option efca81f

22 March 2022

  • v0.3 - Hyde Core Separation - Contains breaking changes #36
  • Hyde Core Separation - Contains breaking changes #35
  • Allow the view source directory to be modified at runtime #34
  • Add a path helper to unify path referencing #33
  • Successfully moved Core into temporary package d5a8dc1
  • Move app font to vendor e43da1d
  • Remove legacy stubs and test 8740cc2

21 March 2022

  • Add a customizable footer #31
  • Adds a customizable footer 09813cf
  • Clarify comments in configuration file 09a7e64
  • Compile frontend assets fdb68d5

21 March 2022

  • Add responsive navigation to resolve #7 #30
  • Add support for images #29
  • Fix bug #22 where the feed was not sorting the posts by date #28
  • Overhaul the navigation menu to add configuration options #27
  • Improve the front matter parser to fix #21 #23
  • Check for the app env in the .env file #20
  • Add the Torchlight badge automatically #19
  • #14 Add publishable 404 pages #18
  • Create Validator command to help catch any issues in the setup #17
  • Merge pull request #30 from hydephp/7-feature-make-the-navigation-menu-responsive #7
  • Add a navigation menu blacklist, fixes #26 #26
  • Fix #25, automatically add link to docs #25
  • Merge pull request #23 from hydephp/21-bug-front-matter-parser-not-stripping-quotes #21
  • Improve the front matter parser to fix #21 #21
  • Fix #15, remove redundant values from created file #15
  • Add the stubs 5416fd2
  • Add tests 9284a5a
  • Implement #16, add custom navigation links 1007d0d

19 March 2022

  • Patches #12, Sev2 Bug: Compiler not using Markdown ad640de

19 March 2022

  • Merge 1.x #2
  • Fix #6, handle missing docs index #6
  • Update installation instructions 785a450
  • Add command for making arbitrary navigation links 3970d57
  • Create codeql-analysis.yml 5a6f7ad

v0.1.0-pre

18 March 2022

Hyde/Framework Archive (pre v0.35.0)

All notable changes to this project will be documented in this file. Dates are displayed in UTC.

Generated by auto-changelog.

6 June 2022

  • Deprecate Hyde::features(), use Hyde::hasFeature() instead #523
  • Create image link helper, fix #434 #522
  • Create a PageModel contract and helpers to get parsed model collections #521
  • Merge pull request #522 from hydephp/create-image-file-object #434
  • Add image path helper, fix #434 #434
  • Fix #516 Add Composer validation to the test suite #516
  • Move the static::all() helper to AbstractPage c726ad7
  • Create MarkdownPost::latest() e6d9e4a
  • Implement MarkdownPost::all() cda2010

4 June 2022

4 June 2022

  • Move back hyde/realtime-compiler to hyde/hyde #517
  • Update composer.lock 246da42
  • Update composer.lock 9e835b6

4 June 2022

  • Refactor to use Laravel cache helper instead of custom implementation #514
  • Improve metadata for featured post images #512
  • Skip generating auxiliary files in the main built loop when there is no underlying content #511
  • Fix: #506: Move ext-simplexml in composer.json to suggest as it is not a strict dependency #510
  • Rewrite Realtime Compiler #508
  • Fix #496: Missing image "contentUrl" metadata #496
  • Don't create search files when there are no pages #482
  • Update Hyde Realtime Compiler to v2.0 f917319
  • Delete RELEASE-NOTES-DRAFT.md 9853526
  • Remove pre-check as package is always included 076a1be

3 June 2022

2 June 2022

  • Fix #499: Make the search dialog positioning fixed #503
  • Make documentation pages smarter #501
  • Link to markdown source files #498
  • Fix #490 Make heading permalinks visible #493
  • Add Markdown Post/Preprocessors #488
  • Merge pull request #503 from hydephp/499-make-the-search-menu-dialog-position-fixed #499
  • Fix #499: Make the search dialog positioning fixed #499
  • Merge pull request #493 from hydephp/make-heading-permalinks-visible #490
  • Fix #490 Make heading permalinks visible #490
  • Merge unit tests into single feature test c455d1c
  • Use the same static transformation instead of DOM bdba273
  • Document the edit button feature dc0d9d7

31 May 2022

31 May 2022

  • Add inline Blade support to markdown #478
  • Create page and document Blade-supported Markdown 0d7ae0f
  • Add base tests ae4b0dc
  • Sketch out the service class 4b88214

31 May 2022

30 May 2022

  • Add color-scheme meta, fix #460 #460
  • Try to figure out why Codecov is not working 9d3371c
  • Revert codecov changes b253969

30 May 2022

  • Fix Bug #471: og:title and twitter:title should use the page title, and only use config one as fallback #473
  • Fix bug #471, make title metadata dynamic b9ac1c8
  • Make dynamic meta title use title property instead 6aaa612

30 May 2022

  • Add !important to style override 3e28b1d

30 May 2022

  • Use the config defined output path 927072e
  • Update Readme heading to "The Core Framework" 7a89486

30 May 2022

  • Load HydeFront v1.9.x needed for HydeSearch #468
  • Make the search feature configurable and toggleable #467
  • Add the HydeSearch frontend integration for documentation pages #465
  • Create the backend search index generation for documentation pages #459
  • Bump guzzlehttp/guzzle from 7.4.2 to 7.4.3 #456
  • Refactor inline styles to HydeFront Sass 86fff1d
  • Begin sketching out the class ed131bd
  • Extract search widget to component 420f662

25 May 2022

  • Fix #450: Add custom exceptions #454
  • Refactor author configuration system #449
  • Merge pull request #454 from hydephp/450-add-custom-exceptions #450
  • Remove AuthorService 9f9d64d
  • Clean up code f8452b9
  • Create FileConflictException 02d534c

22 May 2022

23 May 2022

  • Refactor author configuration system #449
  • Refactor configuration to use snake_case for all options, and extract documentation settings to own file #444
  • Remove AuthorService 9f9d64d
  • Extract documentation configuration options to docs.php 92b9ae5
  • Use the snake_case config format f578855

22 May 2022

  • Code cleanup without affecting functionality #440
  • Add missing return type declarations 684b792
  • Add PHPDoc comments with @throws tags ae44806

21 May 2022

  • Fix #429: Add page priorities to sitemap generation #437
  • Merge pull request #437 from hydephp/add-dynamic-page-priorities-for-sitemap #429
  • Add page priority support 0bfbbba

20 May 2022

  • Improve RSS image handling and feed and sitemap generation processes #435
  • Create HydeBuildRssFeedCommand.php ac4788f
  • Create build:sitemap command 82c73a3
  • Fetch information for local images a10c1c3

20 May 2022

  • Rename and restructure internal hooks 0562ae3
  • Update test code formatting 1a9dcaf
  • Add sitemap link test 9ba7b10

19 May 2022

19 May 2022

19 May 2022

  • Add deployment documentation 4b188f2
  • Merge sections to be more compact baadd48
  • Restructure document flow 40f4a3d

19 May 2022

  • Fix bug where categorized documentation sidebar items were not sorted #422
  • Fix #367: Add upcoming documentation files #367
  • Create building-your-site.md 6989bd5
  • Update documentation page orders b38c58b

19 May 2022

  • Fix #419: Add meta links to the RSS feed #419
  • Refactor internal helpers to be public static 283e5d2
  • Add page slug for compatibility, fixing bug where Blade pages did not get canonical link tags d3ac8e4

19 May 2022

  • Add unit test for fluent Markdown post helpers 2a3b90b
  • Add Author::getName() unit test 64616a6
  • Change RSS feed default filename to feed.xml d545b07

19 May 2022

  • Add RSS feed for Markdown blog posts #413
  • Add the RSSFeedService test a21596f
  • Add the initial channel items 9cb9b30
  • Update sitemap tests and add rss feed tests fe93f5b

18 May 2022

  • Fix #403: Remove @HydeConfigVersion annotation from config/hyde.php #408
  • Merge pull request #408 from hydephp/remove-hydeconfigversion-annotation-from-hyde-config #403
  • Remove HydeConfigVersion annotation 84b1602

18 May 2022

  • Add sitemap.xml generation #404
  • Add SitemapService tests ce5d8ed
  • Refactor shared code into new helper 46f41d6
  • Create basic sitemap generator 1f66928

18 May 2022

  • Fix #398: Remove the deprecated Metadata model #400
  • Fix #379: Extract menu logo to component #396
  • Update helper namespaces #395
  • Fix #385: Move page parsers into models/parsers namespace #394
  • Remove redundancy and merge Meta and Metadata models #384 #390
  • Unify the $page property and add a fluent metadata helper #388
  • Merge pull request #400 from hydephp/398-remove-legacy-metadata-model #398
  • Merge pull request #396 from hydephp/extract-navigation-menu-logo-to-component-to-make-it-easier-to-customize #379
  • Fix #379: Extract menu logo to component #379 #379
  • Merge pull request #394 from hydephp/385-move-page-parsers-into-a-namespace #385
  • Fix #385: Move page parsers into a namespace #385
  • Fix #382: Unify the $page property #382
  • Fix #375, Add config option to add og:properties #375
  • Extract metadata helpers to concern 72b1356
  • Add test for, and improve Meta helper 15ccd27
  • Refactor concern to not be dependent on Metadata model b247bb0

17 May 2022

  • Load asset service from the service container #373
  • Rename --pretty option to --run-prettier to distinguish it better in build command #368
  • Allow site output directory to be customized #362
  • Configuration and autodiscovery improvements #340
  • Add configurable "pretty URLs" #354
  • Add sidebar config offset, fix #307 #348
  • Change BuildService to DiscoveryService #347
  • Fix #361 Rename --pretty option to --run-prettier #361
  • Fix #350, Use the model path properties #350
  • Add option for pretty urls fix #330 #330
  • Rewrite index docs path to pretty url, fix #353 #353
  • Fix #330, Create helper to make pretty URLs if enabled #330
  • Merge pull request #348 from hydephp/add-sidebar-priority-offset-for-config-defined-values #307
  • Add sidebar config offset, fix #307 #307
  • Fix #343 #343
  • Restructure the tests 41bd056
  • Add helpers to make it easier to refactor source paths 10e145e
  • Utalize the $sourceDirectory property in build services 9d9cbff

11 May 2022

  • Add documentation sidebar category labels, fixes #309 #326
  • Merge pull request #326 from hydephp/309-add-documentation-sidebar-category-labels #309
  • Sketch out the files for the category integration d6c81bb
  • Implement category creation 70448b1
  • Set category of uncategorized items 9f0feb3

11 May 2022

  • Add back skip to content button to Lagrafo docs layout, fix #300 #322
  • Change max prose width of markdown pages to match blog posts, fix #303 #321
  • Fix #153, bug where config option uses app name instead of Hyde name. #320
  • Add option to mark site as installed, fix #289 #289
  • Merge pull request #322 from hydephp/300-add-back-skip-to-content-button-to-lagrafo-docs-layout #300
  • Add skip to content button docs layout, fix #300 #300
  • Merge pull request #321 from hydephp/303-change-max-width-of-markdown-pages-to-match-blog-posts #303
  • Change max width to match blog posts, fix #303 #303
  • Merge pull request #320 from hydephp/294-fix-bug-where-config-option-uses-app-name-instead-of-hyde-name #153
  • #153 Fix bug where config option uses app name instead of Hyde name. c90977c
  • Update install command for new site name syntax 0687351

11 May 2022

  • Refactor post excerpt component to be less reliant on directly using front matter and add view test #318
  • Formatting: Add newline after console output when running build without API calls, fix #313 #316
  • Fix #314, add background color fallback to documentation page body #315
  • Restructure and format component, fix #306 #306
  • Merge pull request #316 from hydephp/313-formatting-add-newline-after-disabling-external-api-calls-in-build-command #313
  • Formatting: Add newline after --no-api info, fix #313 #313
  • Merge pull request #315 from hydephp/314-add-dark-mode-background-to-body-in-documentation-pages-to-prevent-fouc #314
  • Fix #314, add background color fallback to docs body #314
  • Implement hidden: true front matter to hide documentation pages from sidebar, fix #310 #310
  • Create ArticleExcerptViewTest.php 4a3ecaa
  • Add tests for the fluent date-author string 30f7f67

10 May 2022

  • Fix #310, allow documentation pages to be hidden from sidebar using front matter #311
  • Merge pull request #311 from hydephp/310-implement-hidden-true-front-matter-to-hide-documentation-pages-from-sidebar #310
  • Fix #310, allow items to be hidden from sidebar with front matter #310

7 May 2022

  • Refactor documentation sidebar internals #299
  • Create feature test for the new sidebar service 0adf948
  • Remove deprecated action 063a85a
  • Create the sidebar models fbcae7c

6 May 2022

  • Add the test helper files 3cd5a56
  • Test description has warning for out of date config a90c0b1
  • Delete .run directory 8cd71fc

6 May 2022

  • Refactor docs layout to use Lagrafo instead of Laradocgen #292
  • Port lagrafo (wip) 6ca2309
  • Move all head tags into blade component 3093ebf
  • Use the Hyde layout e09e301

5 May 2022

  • Update HydeFront version to v1.5.x #287
  • Refactor script interactions #286
  • Hide the install command once it has been run, fix #280 #280
  • Hide the install command once it has been run, fix #280 #280
  • Replace onclick with element IDs e97d545
  • Move dark mode switch 9f6fdf8

4 May 2022

  • Create installer command, fix #149 #279
  • Merge pull request #279 from hydephp/149-create-installer-command #149
  • Create Install command that can publish a homepage b890eb7
  • Use installer to set the site name in config 3f0c843
  • Use installer to set the site URL in config d5f56ac

3 May 2022

  • Update the test to fix updated exception output and remove comments cd5a70d

3 May 2022

3 May 2022

  • Allow documentation pages to be scaffolded using the make:page command #273
  • Allow documentation pages to be scaffolded using the command 7bbe012

3 May 2022

  • Send a non-intrusive warning when the config file is out of date #270
  • Create crude action to check if a config file is up to date e31210f
  • Create FileCacheServiceTest d9141cc
  • Add the test ee4a64d

3 May 2022

  • Create filecache at runtime instead of relying on a JSON file that needs to be up to date #265
  • Create the filecache at runtime, resolves #243, #246 #243
  • Remove deprecated filecache store and generator 7a1eb32
  • Remove "Update Filecache" workflow 81564c0
  • Remove legacy try/catch 34733dd

3 May 2022

  • Always empty the _site directory when running the static site build command #262
  • Always purge output directory when running builder a86ad7d

2 May 2022

  • Update Filecache #258
  • Remove HydeFront from being bundled as a subrepo #257
  • Change the action used to create pull requests #255
  • Exclude files starting with an underscore from being compiled into pages, fix #220 #254
  • Create .gitattributes, fixes #223 #250
  • Deprecate filecache.json and related services #248
  • Allow documentation sidebar header name to be changed #245
  • Update Filecache #242
  • Fix bugs in article and excerpts not fluently constructing descriptions #241
  • Handle undefined array key title in article-excerpt.blade.php #238
  • Fix test matrix not fetching proper branch on PRs #235
  • Fix sidebar ordering bug by using null coalescing operator instead of elvis operator #234
  • Add unit test for hasDarkmode, fix #259 #259
  • Add the test, resolves #259 #259
  • Merge pull request #254 from hydephp/220-exclude-files-starting-with-an-_underscore-from-being-compiled-into-pages #220
  • Merge pull request #250 from hydephp/add-gitattributes #223
  • Create .gitattributes, fixes #223 #223
  • Make category nullable, fixes #230 #230
  • Fix #240 #240
  • Handle undefined array key, fixes #229 #229
  • Remove the HydeFront subrepo d406202
  • Add test to ensure that post front matter can be omitted 875c6d4
  • Exclude files starting with an _underscore from being discovered 0dcdcb6

1 May 2022

  • Update Filecache #226
  • Add config option to disable dark mode #225
  • Update Filecache #222
  • Refactor assets managing, allowing for Laravel Mix, removing CDN support for Tailwind #221
  • Fix #211 #211
  • Add test and clean up docs for HasMetadata 976cb6c
  • Revert "Update update-filecache.yml" abc21e7
  • Update update-filecache.yml c25196a

29 April 2022

  • Update Filecache #201
  • Update Filecache #199
  • Update Filecache #197
  • Change priority of stylesheets #195
  • Update Filecache #194
  • Switch jsDelivr source to NPM, fix #200 #200
  • Update dependencies b505726
  • Switch to using TypeScript 6fa9e6c
  • Create service class to help with #182 fb0033c

28 April 2022

  • Add the code reports workflow #191
  • Move test suite actions to framework #190
  • Merge with master #189
  • Add matrix tests #188
  • Move part one of the test suite #187
  • Move Framework tests from Hyde/Hyde to the Hyde/Framework package #185
  • Move tests from Hyde to Framework 22ca673
  • Format YAML e6da9ad
  • Add the workflow b20cbd6

28 April 2022

  • Manage asset logic in service class c72905f

27 April 2022

  • Refactor internal codebase by sorting traits into relevant namespaces #175
  • Refactor: Move Hyde facade methods to traits 9b5e4ca
  • Refactor: Update namespaces 96c73aa
  • Docs: Remove PHPDocs ef2f446

27 April 2022

  • Update Filecache #170
  • Merge HydeFront v1.3.1 727c8f3
  • Remove asset publishing commands 0f49d16
  • Rework internals, loading styles from CDN c5283c0

21 April 2022

20 April 2022

  • Update Filecache #141
  • Add table of contents to the documentation page sidebar #140
  • Add the table of contents to the frontend f728810
  • Add the table of contents generation 2c4c1b9
  • Allow table of contents to be disabled in config fc9cba1

19 April 2022

  • Update Filecache #135
  • Update Filecache #134
  • Allow author array data to be added in front matter #133
  • Strip front matter from documentation pages #130
  • Add trait to handle Authors in the data layer 62f3793
  • Update the views to move logic to data layer 2ebc62c
  • Parse the documentation pages using the fileservice 041bf98

17 April 2022

  • Add command for the new realtime compiler 9be80eb
  • Allow the host and port to be specified e54a394

12 April 2022

  • Update Filecache #124
  • Update Filecache #122
  • Update Filecache #120
  • Update Filecache #118
  • Update Filecache #117
  • Add darkmode support and refactor blade components #116
  • Add skip to content link #113
  • Update the welcome page to be more accessible #112
  • Remove the deprecated and unused service provider #108
  • Update Blade components, internal data handling, add a11y features #102
  • Refactor tests #98
  • Deprecate internal abstract class HydeBasePublishingCommand #97
  • Update and simplify the command and rename signature from publish:configs to update:configs, making overwriting files the default. #95
  • Change blade source directory to _pages #90
  • Fix line ending sequence issue in checksums #86
  • Refactor internal file handling logic to be more intelligent to provide a safer, more intuitive, user experience #84
  • Fix improper article ID usage - remember to re-publish styles #81
  • Fix #63, update component to show formatted dates #80
  • Update Spatie YAML Front Matter Package to fix #36 #79
  • Add base styles to documentation layout #77
  • Refactor code to extend base classes and remove shared code #74
  • Refactor the backend structure of the static page builder command process #72
  • Supply _media as the path argument in the hyde:rebuild command to copy all media files. #71
  • Add more relevant targets for the skip to content link, fix #123 #123
  • Add the image model, fix #100 #100
  • Merge pull request #80 from hydephp/63-fix-up-the-post-date-component-to-show-the-readable-name #63
  • Fix #63, update component to show formatted dates #63
  • Merge pull request #79 from hydephp/36-spatie-yaml-front-matter-package-not-properly-handling-markdown-documents-with-markdown-inside #36
  • Compress CSS, 5.48 KB to 3.37 KB (38.56%) d7f2054
  • Update dependencies f851978
  • Remove the deprecated and now unused base command 0f137c8

7 April 2022

  • Rework how frontend assets (stylesheets and main script) are handled #69
  • Move the resource files 7c70467
  • Add the update frontend resources command 551df0a
  • Add the action to publish the frontend resources e2c82fb

3 April 2022

  • Add --no-api option to disable Torchlight at runtime, fix #53 #53
  • Add Changelog.md fe2fdf8
  • Create CODE_OF_CONDUCT.md 9361d1d
  • Create CONTRIBUTING.md a581146

2 April 2022

  • Rewrite main navigation menu #60
  • Fix #59, unify sidebar elements #59
  • Unify the navigation menu f0e6cfc
  • Add the interaction c5b4f7e

2 April 2022

  • Fix broken meta url in schema prop b54cfe4
  • Fix broken meta url in schema prop 80b5523

1 April 2022

1 April 2022

1 April 2022

  • Create new command to scaffold pages #55
  • Create the action b788de2
  • Create the command eac5258
  • Clean up and format code dc5c5ee

1 April 2022

  • Add a favicon link automatically if the file exists #54
  • Create LICENSE.md 57d4a1b
  • Use getPrettyVersion for composer version 7569fb7
  • Change version to the (pretty) framework version 973cc74

1 April 2022

  • Fix bug #47 StaticPageBuilder not able to create nested documentation directories #51
  • Remove _authors and _drafts directories #48 #49
  • Delete phpdoc.dist.xml b28afb7
  • Remove _data directory a11ff92
  • Update author yml config path e0578bb

30 March 2022

  • Fix the documentation page header link #46
  • Use the indexpath basename for the doc header e188eb5

30 March 2022

  • Use relative path helper for links #45
  • Add support for nesting the documentation pages #42

30 March 2022

  • Fix the 404 route bug #41
  • #38 Add a rebuild command to the Hyde CLI to rebuild a specific file #39
  • Move scripts into app.js #35
  • #32 refactor command class names to be consistent #33
  • Add internal PHPDoc class descriptions #30
  • Require Torchlight #27
  • Restructure backend models #26
  • Rework how Markdown files are handled to improve maintainability and testing #25
  • 0.6.0 Remove support for Front Matter in Markdown Pages #24
  • Fix #21 by dynamically routing to the docs index #23
  • Merge pull request #23 from hydephp/21-bug-documentation-sidebar-header-should-link-to-readme-if-that-exists-but-an-index-does-not #21
  • Fix #21 by dynamically routing to the docs index #21
  • Add PHPUnit 0d59ea0
  • Create the HydeRebuildStaticSiteCommand 92b1d20
  • Refactor to use the MarkdownFileService 48a27a2

26 March 2022

  • Remove deprecated methods #19
  • Make the command extend the base command eaba9da
  • Remove deprecated class 24753c1
  • Format to PSR2 8307b65

25 March 2022

  • Remove the Hyde installer #18
  • 0.6.x Remove deprecated command #17
  • Improve Docgen Feature by allowing the output directory to be dynamically changed #16
  • Rework installer prompts and fix wrong directory c15a4ac
  • Allow the documentation output directory to be changed 6cf07a3
  • Allow the homepage argument to be set from cli ab8dedd

24 March 2022

  • Fix visual bug caused by setting max-width on body instead of article #15
  • Load commands in service provider instead of config/commands.php #13
  • Load commands in service provider instead of config 46397fd

24 March 2022

  • Merge 0.5.0 into Master - Adds a multitude of new tests, code refactors and quality of life features #12
  • Sync branch with Master #11
  • Merge 0.5.x progress #10
  • Add _data directory and Authors object as well as stubs to aid in testing #9
  • Add required depedency to framework e5f0ec5
  • Implement the Authors backend feature d7679f5
  • Add Commonmark as an explicit dependency bf915b1

23 March 2022

  • Add bindings for the package versions a9ce58d
  • Get version from facade 465bafc
  • Replace Git version with Hyde version bcb7357

23 March 2022

  • v0.4.2-alpha Adds new meta tags and more data rich HTML #8
  • Add new meta tag options 78a74c7
  • Add the Site URL feature, remember to update config! ee2f5c6
  • Add more rich HTML content 8eb6778

22 March 2022

  • Add the Hyde::getLatestPosts() shorthand to get the latest posts collection #4
  • Add new options to the build command to improve the user experience #3
  • Remove progress bar from empty collections 40d3203
  • Add option to remove old files before building 2650997
  • Add options to automatically build frontend assets f789c2f

22 March 2022

22 March 2022

  • Delete vendor directory 4f96627
  • 0.3.1 Move commands to framework 70dd8df
  • Add php 8 require, and suggest hyde/hyde a8ff6ad

v0.3.0-alpha

21 March 2022

  • Add the Core files (with temporary namespace) 816ad3a
  • Initial Commit fa00787
  • Successfully move namespace Core to Framework 0c9160f