Skip to content

Releases: hydephp/develop

v1.0.0 - 2023-03-14

14 Mar 19:20
bf6fe27
Compare
Choose a tag to compare

Release Announcement

We're thrilled to announce HydePHP v1.0.0, the first general availability release of the Laravel-based static site generator you've been waiting for! HydePHP allows you to build lightning-fast static websites with ease, using the familiar syntax and functionality of the Laravel framework.

What is HydePHP?

HydePHP is a powerful static site generator that is built on top of Laravel, one of the most popular PHP frameworks out there. HydePHP's architecture and design principles allow for a flexible and intuitive development experience, making it a great choice for developers looking to create static websites quickly and efficiently.

What's New in v1.0.0?

This release marks the first stable version of HydePHP, with many exciting new features and improvements. Here are some of the highlights:

  • Upgraded to Laravel 10 and requires PHP 8.1
  • Made several services and sub-namespaces modular and configurable
  • Major improvements to several key features and code APIs, including the new Extensions API
  • See the Changelog for a full list of changes, either on GitHub or on the HydePHP website

How to Install

To get started with HydePHP, you can install it using Composer with the following command:

composer create-project hyde/hyde

Thank You!

We want to extend a huge thank you to everyone who contributed to this release, whether through code contributions, bug reports, or feature requests. We couldn't have done it without your help!

More Information

You can also visit our website at HydePHP.com for more information, or follow us on Twitter at @HydeFramework for updates and news.

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

13 Mar 22:06
0511c6d
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.0.0-RC.4...v1.0.0-RC.5

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

12 Mar 21:18
0cd5a5e
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.0.0-RC.3...v1.0.0-RC.4

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

11 Mar 21:40
c6b6ab4
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.0.0-RC.2...v1.0.0-RC.3

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

10 Mar 14:09
303925d
Compare
Choose a tag to compare

What's Changed

  • 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
  • Remove RouteKey normalization for dot notation support by @caendesilva in #1241
  • Breaking: Rename global properties by @caendesilva in #1243
  • HydePHP v1.0.0 - Release Candidate Two by @caendesilva in #1244

Full Changelog: v1.0.0-RC.1...v1.0.0-RC.2

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

07 Mar 22:14
Compare
Choose a tag to compare

What's Changed

Read more

v0.64.0-beta - 2022-10-18

18 Oct 18:00
Compare
Choose a tag to compare

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.

This release will likely be the last HydePHP beta release. Next up: HydePHP v1.0!

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/p...

Read more

v0.63.0-beta - 2022-09-01

01 Sep 14:55
Compare
Choose a tag to compare

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

What's Changed

Full Changelog: v0.62.0-beta...v0.63.0-beta

v0.62.0-beta - 2022-08-27

27 Aug 09:18
Compare
Choose a tag to compare

About

This update deprecates two interfaces (contracts) and inlines them into their implementations.

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 update 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. 68d2974. 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

What's Changed

Full Changelog: v0.61.0-beta...v0.62.0-beta

v0.61.0-beta - 2022-08-17

17 Aug 09:04
Compare
Choose a tag to compare

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;

What's Changed

Full Changelog: v0.60.0-beta...v0.61.0-beta