You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+354-3Lines changed: 354 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,17 +5,368 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [Unreleased] - YYYY-MM-DD
8
9
9
-
## Upcoming changes
10
+
### About
11
+
12
+
Keep an Unreleased section at the top to track upcoming changes.
10
13
11
-
Please see the [RELEASE_NOTES.md](RELEASE_NOTES.md) for the changelog for the upcoming release.
14
+
This serves two purposes:
12
15
16
+
1. People can see what changes they might expect in upcoming releases
17
+
2. At release time, you can move the Unreleased section changes into a new release version section.
18
+
19
+
### Added
20
+
- for new features.
21
+
22
+
### Changed
23
+
- for changes in existing functionality.
24
+
25
+
### Deprecated
26
+
- for soon-to-be removed features.
27
+
28
+
### Removed
29
+
- for now removed features.
30
+
31
+
### Fixed
32
+
- for any bug fixes.
33
+
34
+
### Security
35
+
- in case of vulnerabilities.
13
36
14
37
## About the release cycle
15
38
16
39
HydePHP consists of two primary components, Hyde/Hyde and Hyde/Framework. Development is made in the [Hyde/Develop Monorepo](https://github.com/hydephp/develop). 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.
17
40
18
-
<!-- CHANGELOG_START -->
41
+
# HydePHP v2.0 Release Notes
42
+
43
+
## Overview
44
+
45
+
HydePHP v2.0 represents a major evolution of the framework, introducing significant improvements to the asset system, navigation API, and overall developer experience. This release modernizes the frontend tooling by replacing Laravel Mix with Vite, completely rewrites the navigation system for better flexibility, and introduces numerous performance optimizations throughout the framework.
46
+
47
+
This document will give you an overview of the changes. When you're ready to upgrade your site, take a look at the [Upgrade Guide](https://hydephp.com/docs/2.x/upgrade-guide).
48
+
49
+
## Major Features
50
+
51
+
### 🚀 Modern Frontend Tooling with Vite
52
+
53
+
We've replaced Laravel Mix with Vite for a faster, more modern development experience:
54
+
-**Instant Hot Module Replacement (HMR)** for real-time updates during development
55
+
-**Direct asset compilation** into the `_media` folder for cleaner builds
56
+
-**Updated build command**: Use `npm run build` instead of `npm run prod` (or `--vite` during the site build)
57
+
-**Vite facade** for seamless Blade template integration
58
+
-**Optimized asset serving** through the realtime compiler
59
+
-**Hyde Vite plugin** for enhanced integration
60
+
61
+
### 🎨 Enhanced Asset Management System
62
+
63
+
The new consolidated Asset API provides a more intuitive interface for handling media files:
64
+
-**MediaFile instances** with fluent methods like `getLink()`, `getLength()`, and `getMimeType()`
65
+
-**HydeFront facade** for CDN links and Tailwind configuration injection
66
+
-**Intelligent caching** with CRC32 hashing for improved performance
67
+
-**Automatic validation** to prevent missing assets from going unnoticed
68
+
-**Lazy-loaded metadata** for optimal resource usage
69
+
70
+
### 🧭 Redesigned Navigation API
71
+
72
+
The navigation system has been completely rewritten for maximum flexibility:
73
+
-**YAML configuration support** for defining navigation items
74
+
-**Extra attributes** for custom styling and behavior
75
+
-**Improved Routes facade** with Laravel-consistent naming conventions
76
+
-**Natural priority ordering** using numeric prefixes in filenames
77
+
-**Enhanced sidebar management** with better organization options
78
+
79
+
### 📝 Improved Documentation Features
80
+
81
+
Documentation pages now benefit from several enhancements:
82
+
-**Alpine.js-powered search** with customizable implementation
83
+
-**Blade-based table of contents** that's 40x faster than before
84
+
-**Custom heading renderer** with improved permalink handling
85
+
-**Colored blockquotes** now using Tailwind CSS classes
86
+
-**Smart natural language processing** for search headings
87
+
-**Dynamic source file links** in Markdown documents
88
+
89
+
### 🎯 Better Developer Experience
90
+
91
+
Numerous quality-of-life improvements for developers:
92
+
-**PHP 8.4 support** and Laravel 11 compatibility
93
+
-**ESM module support** for modern JavaScript development
94
+
-**Tailwind CSS v4** with automated upgrade tools
95
+
-**Enhanced data collections** with syntax validation
96
+
-**Improved error messages** with clearer exception handling
97
+
-**Interactive publish:views command** on Unix systems
98
+
-**Extension callbacks** with `booting()` and `booted()` methods
99
+
## Upgrading to v2.0
100
+
101
+
**📖 For complete step-by-step upgrade instructions, see the [Upgrade Guide](https://hydephp.com/docs/2.x/upgrade-guide).**
102
+
103
+
**Important:** PHP 8.2+ is now required. Laravel Mix has been replaced with Vite, and Tailwind CSS has been upgraded to v4.
104
+
105
+
---
106
+
107
+
## Breaking Changes
108
+
109
+
### High Impact Changes
110
+
111
+
#### 1. Tailwind CSS v4 Upgrade
112
+
113
+
We've upgraded from Tailwind CSS v3 to v4. Run the automated upgrade tool to migrate your custom classes:
114
+
115
+
```bash
116
+
npx @tailwindcss/upgrade
117
+
```
118
+
119
+
Review the [Tailwind v4 Upgrade Guide](https://tailwindcss.com/docs/upgrade-guide) for detailed breaking changes.
120
+
121
+
#### 2. ESM Module Migration
122
+
123
+
Frontend tooling now uses ESM modules instead of CommonJS. If you have custom JavaScript, update to ESM syntax:
124
+
125
+
**Before:**
126
+
```javascript
127
+
constmodule=require('module-name');
128
+
module.exports= { /* ... */ };
129
+
```
130
+
131
+
**After:**
132
+
```javascript
133
+
importmodulefrom'module-name';
134
+
exportdefault { /* ... */ };
135
+
```
136
+
137
+
#### 3. Navigation Configuration Format
138
+
139
+
Update your navigation configuration to use the new array-based format:
-`Author::create()` returns an array instead of a `PostAuthor` instance
207
+
-`Author::get()` returns `null` if not found (previously created new instance)
208
+
- Usernames are automatically normalized (lowercase, underscores for spaces)
209
+
- Authors support biographies, avatars, and social media links
210
+
- A new `Hyde::authors()` method provides access to all site authors
211
+
- Authors can be configured via YAML
212
+
213
+
The way this system now works is that you first define authors in the config, Hyde then loads this during the booting process, and you can then access them using the get method.
214
+
215
+
### Medium Impact Changes
216
+
217
+
#### Asset API Updates
218
+
219
+
All asset methods now return `MediaFile` instances instead of strings. This instance can be cast to a string which will automatically resolve to a relative link at that time. You can also call helper methods on it. When using Blade templates, thanks to the Stringable implementation no change will happen.
0 commit comments