Commit Graph

8085 Commits

Author SHA1 Message Date
Andy Miller
2c5bf9f3bf use BUILD_SCRIPT_URL_20 for 2.0 release builds 2026-04-16 14:08:07 +01:00
Andy Miller
d05a25af40 Grav 2.0 additions
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-04-15 17:21:47 +01:00
Andy Miller
d067fa7fee fixed changelog
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-04-15 15:40:19 +01:00
Andy Miller
0e138ec28e update workflow
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-04-15 14:22:48 +01:00
Andy Miller
d5caf45792 prepare for beta release
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-04-15 14:03:26 +01:00
Andy Miller
f47feee98d remove safe-upgrade/snapshots/recover
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-04-15 14:03:10 +01:00
Andy Miller
1f8f2e15ff chore: remove GPM family-gate dev/test utilities from 1.8
These were development-only tooling for iterating on the family-aware
upgrade gate and the next_major migration hint:

- bin/gpm-cache-inject     — synthetic GPM response injection
- bin/gpm-e2e-test         — family-gate E2E runner
- bin/gpm-test-server.php  — local fake grav.json server

Not referenced from production code or CI. Preserved in git stash
alongside bin/gpm-migration-probe and bin/gpm-migration-e2e for future
hint-flow testing.
2026-04-13 23:25:38 +01:00
Andy Miller
8426e91cac feat: surface remote next_major hint in Upgrader for cross-major migration notices
Reads the new `next_major` block from grav.json (sent by a family-aware
resources server when a 1.x client is served a 1.x release alongside a 2.x
hint) and exposes it via Upgrader::isNextMajorAvailable(),
getNextMajorVersion(), getMigrationUrl(). The admin plugin uses these to
show a dashboard migration banner without implying an automatic upgrade.

isNextMajorAvailable() no longer compares raw remote vs local majors —
under family-aware serving, the remote version is already the client's
family, so the old logic would silently stop firing. It now requires
the server hint and verifies it truly points to a newer major.

Tests updated to inject the hint via an extended TestableUpgrader.
2026-04-13 22:41:39 +01:00
Andy Miller
e83b12d8c4 fix(tests): remove snapshot test and fix CompatibilityTest GRAV_ROOT issue
- Delete InstallSnapshotManifestTest: references isSnapshotManifest()
  which no longer exists after safe-upgrade removal
- Fix InstallCompatibilityTest: GRAV_ROOT is a PHP constant that cannot
  be redefined per-test; add optional $root param to detectIncompatiblePackages,
  isPluginEnabled, and isThemeEnabled so tests can pass a tmpDir directly
2026-04-13 19:23:56 +01:00
Andy Miller
dff21f8445 fix(tests): PHP 7.3 compatibility in UpgraderFamilyTest
Replace typed class properties with PHPDoc annotations so the test
file passes CI on PHP 7.3 (typed properties require 7.4+).
2026-04-13 19:16:48 +01:00
Andy Miller
54be9bcc9d Add E2E test server and runner for GPM family-gate testing 2026-04-13 18:57:39 +01:00
Andy Miller
98af1cb4e3 Remove SafeUpgradeService, add family-aware GPM upgrade gate
- Remove SafeUpgradeService, RollbackCommand, SafeUpgradeRunCommand, and bin/restore
- Simplify Install.php: remove all snapshot logic; keep forceSafeUpgrade() as no-op stub
  for backward compat with pre-2.0 upgrade scripts that call it in finally blocks
- Simplify SelfupgradeCommand: remove --safe/--legacy flags, safe-upgrade window tracking,
  and manifest block; keep RecoveryManager plugin-disable calls
- Simplify PreflightCommand: use Install::instance()->generatePreflightReport() directly
- Simplify recovery.php: remove auth, rollback, and quarantine sections; keep
  clear-flag and disable-recovery actions
- Upgrader::isUpgradable() now returns false when remote is a different major.minor family
  (e.g. 1.8.x will not auto-upgrade to 2.0.x)
- Add Upgrader::isNextMajorAvailable() for future informational notices
- Add bin/gpm-cache-inject helper for local E2E testing without a live server
- Add UpgraderFamilyTest covering all cross-family and same-family scenarios (10/10)
2026-04-13 18:45:41 +01:00
Andy Miller
6324cca502 Recognize '2.0' in compatibility inference and CLI badges
Extends the 1.7/1.8 compatibility machinery to treat a grav >= 2.0
dependency as ['2.0']. SelfupgradeCommand's preflight already keys off
the target package's major.minor, so upgrading 1.8 → 2.0 now correctly
flags plugins that only declare 1.7 or 1.8 as blocking.

- GPM/Local/Package::inferCompatibility(): grav >= 2.0 → ['2.0']
- Installer/Install::inferCompatibleVersions(): grav >= 2.0 → ['2.0']
- IndexCommand / InfoCommand / UpdateCommand: magenta '2.0' badge

Ships as part of the final 1.8 beta so the installed base has a clean
upgrade gate when users run `bin/gpm selfupgrade` against a Grav 2.0
release. The actual migration wizard is a 2.0-only deliverable and is
NOT backported here.
2026-04-13 17:04:10 +01:00
Andy Miller
3752a34407 Merge branch '1.8' into 1.8-compatibility 2026-04-13 10:39:51 +01:00
Andy Miller
9aa82d9b0a fix default order
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-04-13 10:35:31 +01:00
Andy Miller
2c517b012e Add compatibility: blueprint support for major version upgrade gating
Adds a new `compatibility:` field to plugin/theme blueprints.yaml that allows
authors to declare which Grav versions they've tested on:

  compatibility:
    grav: ['1.7', '1.8']
    api: ['1.0']

When absent, compatibility is inferred from dependencies (grav >=1.8 means
1.8-only, otherwise assumes 1.7). This gates major upgrades (1.7→1.8) by
blocking if enabled plugins aren't marked as 1.8-compatible.

Core changes:
- Install.php: detectIncompatiblePackages() in preflight checks
- SafeUpgradeService: same detection for admin pre-download checks
- SelfupgradeCommand: interactive handling (disable/continue/abort)
- GPM Local/Package: computed compatibility property from blueprints
- CLI badges: IndexCommand, InfoCommand, UpdateCommand show 1.7/1.8 badges

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 10:22:56 -06:00
Andy Miller
b7ae93bfc1 Add fast static asset serving for plugin-bundled SPA apps
Reads user/config/plugin-asset-map.php to map URL prefixes to physical
directories. Matching requests are served with readfile() and exit
before Grav boots, avoiding the full framework overhead for static
JS, CSS, fonts, and images.
2026-04-01 17:33:25 -06:00
Andy Miller
00017266df Add media:// stream for site-level media directory
Registers a new media:// stream pointing to user://media, providing
a dedicated writable stream for site-wide media files not tied to
specific pages. Supports all file types (not just images like the
existing image:// stream).
2026-04-01 15:24:29 -06:00
Andy Miller
e3ff054db2 Move media config blueprint and translations from admin plugin to core
- Replace empty media.yaml blueprint stub with full form fields
- Add PLUGIN_ADMIN media translation keys (MEDIA, MEDIA_TYPES, FILE_EXTENSION,
  TYPE, THUMB, MIME_TYPE, IMAGE_OPTIONS) to all 44 core language files
- Enables media configuration without the admin plugin being enabled

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 16:41:27 -06:00
Andy Miller
cbb936d840 remove this lang-uri fix.. put in custom code for now
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-03-30 06:27:57 -06:00
Andy Miller
c11d2bd867 fix: respect schedule flag in backup profiles
The `schedule` field in backup profile configuration was never checked
when registering backup jobs with the scheduler. This meant backups
would always run on schedule even when `schedule: false` was set.

Fixes #4039
2026-03-17 15:14:04 -06:00
Andy Miller
a1cd8adb96 composer updates
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-03-17 15:05:55 -06:00
Andy Miller
2fe9a94430 use lang query to change to default lang
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-03-12 15:35:53 -06:00
Andy Miller
dec789fcbf fix for trying to load default lang w/session store
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-03-12 14:46:56 -06:00
Andy Miller
5802a28e5f added new onFlexDirectoryConfigBeforeSave event
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-03-11 10:18:52 -06:00
Andy Miller
8d0b049993 safe upgrade hardening
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-02-25 13:28:09 -07:00
Andy Miller
c4e73d3827 Merge release/1.8.0 fixes: YamlUpdater undefine, upgrade resilience, PHP 8.3 guard, standalone upgrade script
- Fix YamlUpdater.undefine() to actually remove lines from YAML files
- Add maintenance mode (503) during core upgrades via .upgrading flag
- Add opcache_reset in sophisticatedInstall() for reliable file operations
- Add early PHP 8.3 version check in bin/grav
- Add PHP CLI vs web version mismatch hint in Install error messages
- Update 1.7 bridge version references from 1.7.50 to 1.7.51
- Disable recovery_mode by default until stability confirmed
- Add standalone upgrade.php script (CLI + web)
- Update markdowndocs to ^3.0
2026-02-24 21:54:07 -07:00
Andy Miller
7818f601ea support version ie, typhoon:2.4.8
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-02-24 14:03:57 -07:00
Andy Miller
44d26ef7e8 fixes for modern scheduler
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-02-22 23:25:36 -05:00
Xoriander
420a99f6f8 Fix for undefined array key path triggered through url encoded characters (#4012) 2026-02-10 15:18:49 -07:00
Xoriander
5404c3d2a5 More readability for the LogViewerCommand time output (#4009) 2026-02-10 15:18:49 -07:00
Xoriander
619dfa26a4 Fix for wrong LogViewer date output (#4007) 2026-02-10 15:18:49 -07:00
Andy Miller
c191b0b47e impoved yaml linter to be more use built-in grav for more detail
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-02-05 12:16:42 -07:00
Andy Miller
dfdd3786cb update vendor libs
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-02-04 12:34:26 -07:00
Andy Miller
db852f3a47 trigger docker workflow on release
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-02-04 12:34:17 -07:00
Andy Miller
13a2093726 Merge branch '1.8' of github.com:getgrav/grav into 1.8 2026-02-04 12:34:03 -07:00
Andy Miller
b85e87ae3f Added -v for YamlLinter
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-02-04 12:33:32 -07:00
Andy Miller
e0f5db7c8c Add claude GitHub actions 1770170196497 (#4028)
* checkout correct version

Signed-off-by: Andy Miller <rhuk@mac.com>

* cache-cleanup command

Signed-off-by: Andy Miller <rhuk@mac.com>

* remove standlone binary

Signed-off-by: Andy Miller <rhuk@mac.com>

* "Claude PR Assistant workflow"

* "Claude Code Review workflow"

---------

Signed-off-by: Andy Miller <rhuk@mac.com>
2026-02-03 18:58:34 -07:00
Andy Miller
4a76ba18b6 remove standlone binary
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-01-30 09:54:58 -07:00
Andy Miller
607ef2797c cache-cleanup command
Signed-off-by: Andy Miller <rhuk@mac.com>
2026-01-30 09:48:38 -07:00
Andy Miller
07de0cb4e6 prepare for beta release
Signed-off-by: Andy Miller <rhuk@mac.com>
1.8.0-beta.29
2025-12-27 19:52:39 -07:00
Andy Miller
007b168ad9 don’t do internal gzip, rely on webserver
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-12-25 21:41:20 -07:00
Andy Miller
952830b529 fix gzip encoding issue with newer PHP 8 versions
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-12-25 21:17:22 -07:00
Andy Miller
dbd80799fe update vendor libs
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-12-25 20:49:22 -07:00
Andy Miller
853ccb6464 fix for broken symlinks
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-12-25 16:32:20 -07:00
Andy Miller
4774622d26 minor tweak for api script
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-12-23 21:54:28 -07:00
Andy Miller
0e4f37eca7 fix of setEscaper move in Twig 3.9+
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-12-22 21:43:10 -07:00
Andy Miller
6b54b32140 fix for user editing causing hashed_password to be removed
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-12-17 14:36:53 -07:00
Andy Miller
368982cb46 fix for nested config changes
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-12-17 12:06:59 -07:00
Andy Miller
b086561160 fix for unusual format SVGs
Signed-off-by: Andy Miller <rhuk@mac.com>
2025-12-15 15:08:15 -07:00