@jumpgroup/laravel-tools 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/.claude/settings.local.json +59 -0
  2. package/README.md +378 -0
  3. package/bin/groups/cache.js +52 -0
  4. package/bin/groups/database.js +105 -0
  5. package/bin/groups/forge.js +272 -0
  6. package/bin/groups/local.js +78 -0
  7. package/bin/groups/media.js +110 -0
  8. package/bin/tools.js +23 -0
  9. package/docs/Changelog.md +267 -0
  10. package/docs/TODO.md +167 -0
  11. package/docs/releases/release_0.0.1.md +116 -0
  12. package/docs/releases/release_0.0.2.md +88 -0
  13. package/docs/releases/release_0.0.3.md +58 -0
  14. package/docs/releases/release_0.0.4.md +128 -0
  15. package/docs/releases/release_0.0.5.md +77 -0
  16. package/docs/releases/release_0.0.6.md +80 -0
  17. package/docs/releases/release_1.0.0.md +61 -0
  18. package/docs/releases/release_1.0.1.md +18 -0
  19. package/docs/releases/release_1.0.2.md +18 -0
  20. package/docs/releases/release_1.0.3.md +19 -0
  21. package/docs/releases/release_1.1.0.md +18 -0
  22. package/docs/releases/release_1.1.1.md +17 -0
  23. package/docs/releases/release_1.1.2.md +18 -0
  24. package/docs/releases/release_1.1.3.md +21 -0
  25. package/docs/releases/release_1.1.4.md +18 -0
  26. package/docs/releases/release_1.1.5.md +18 -0
  27. package/docs/releases/release_1.1.6.md +21 -0
  28. package/docs/releases/release_1.1.7.md +17 -0
  29. package/docs/releases/release_2.0.0.md +192 -0
  30. package/docs/releases/release_2.0.1.md +53 -0
  31. package/docs/releases/release_2.0.2.md +55 -0
  32. package/docs/releases/release_2.0.3.md +69 -0
  33. package/docs/releases/release_2.1.0.md +59 -0
  34. package/docs/releases/release_2.2.0.md +83 -0
  35. package/docs/releases/release_2.2.1.md +36 -0
  36. package/docs/releases/release_2.2.2.md +57 -0
  37. package/docs/releases/release_2.2.3.md +39 -0
  38. package/docs/releases/release_2.2.4.md +75 -0
  39. package/docs/releases/release_2.2.5.md +69 -0
  40. package/docs/releases/release_3.0.0.md +87 -0
  41. package/docs/releases/release_3.0.1.md +65 -0
  42. package/docs/releases/release_3.1.0.md +90 -0
  43. package/docs/releases/release_3.2.0.md +74 -0
  44. package/docs/releases/release_3.3.0.md +72 -0
  45. package/package.json +35 -0
  46. package/src/aws/bucket.js +287 -0
  47. package/src/aws/cloudfront.js +433 -0
  48. package/src/aws/config.js +39 -0
  49. package/src/aws/iam.js +189 -0
  50. package/src/cache.js +49 -0
  51. package/src/database.js +315 -0
  52. package/src/forge/client.js +43 -0
  53. package/src/forge/config.js +33 -0
  54. package/src/forge/provisioning.js +191 -0
  55. package/src/forge/servers.js +27 -0
  56. package/src/forge/sites.js +93 -0
  57. package/src/google/groupMembers.js +35 -0
  58. package/src/google/utilities.js +39 -0
  59. package/src/local/doctor.js +214 -0
  60. package/src/local/setup.js +398 -0
  61. package/src/media.js +143 -0
  62. package/src/stub/docker/mysql/my.cnf +6 -0
  63. package/src/stub/docker/php/local.ini +4 -0
  64. package/src/stub/docker/traefik/dynamic_conf.yml +4 -0
  65. package/src/stub/docker/traefik/traefik.yml +24 -0
  66. package/src/stub/docker-compose/php8.0/docker-compose.yml +78 -0
  67. package/src/stub/docker-compose/php8.1/docker-compose.yml +78 -0
  68. package/src/stub/docker-compose/php8.2/docker-compose.yml +78 -0
  69. package/src/stub/docker-compose/php8.3/docker-compose.yml +78 -0
  70. package/src/stub/docker-compose/php8.4/docker-compose.yml +78 -0
  71. package/src/stub/docker-compose.yml +78 -0
  72. package/src/utilities/command.js +137 -0
  73. package/src/utilities/dateUtils.js +7 -0
  74. package/src/utilities/fileUtils.js +36 -0
  75. package/src/utilities/google-drive.js +69 -0
  76. package/src/utilities/pathUtils.js +15 -0
  77. package/src/utilities/userInput.js +28 -0
  78. package/src/utilities/utilities.js +57 -0
@@ -0,0 +1,58 @@
1
+ # Release 0.0.3 — Cache command group
2
+
3
+ **Date:** 2026-03-18
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Implements the `cache` command group. Small and self-contained — no new design
10
+ decisions required, fully reuses the utilities from 0.0.1.
11
+
12
+ In trellis-tools, cache flushing meant clearing WordPress's object cache
13
+ (Memcached/Redis via WP-CLI). For Laravel there is no single "object cache"
14
+ command — instead, Laravel has four independent cache layers that each need to
15
+ be cleared separately.
16
+
17
+ ---
18
+
19
+ ## Commands added
20
+
21
+ | Command | What it does |
22
+ |---------|-------------|
23
+ | `cache flush-local` | Clears all Laravel caches in the local Docker app container |
24
+ | `cache flush-remote` | Clears all Laravel caches on a remote server via SSH |
25
+ | `cache flush-all` | Runs flush-local then flush-remote |
26
+
27
+ ---
28
+
29
+ ## Files added
30
+
31
+ ### `src/cache.js`
32
+ Defines the four artisan commands to run on every flush:
33
+ ```
34
+ php artisan cache:clear — application cache (Redis / file)
35
+ php artisan config:clear — cached config files
36
+ php artisan route:clear — cached route list
37
+ php artisan view:clear — compiled Blade templates
38
+ ```
39
+
40
+ - `flushLocal()` — iterates the four commands via `docker exec {APP_NAME}-app php artisan {cmd}`
41
+ - `flushRemote(options)` — joins them with `&&` and runs them in a single SSH call
42
+ - `flushAll(options)` — calls both in sequence
43
+
44
+ ### `bin/groups/cache.js`
45
+ CLI layer only. Three Commander subcommands wired to `src/cache.js`.
46
+
47
+ ---
48
+
49
+ ## Design decisions
50
+
51
+ - **Four commands instead of one** — unlike `wp cache flush`, there is no single
52
+ Laravel artisan command that clears everything. All four layers are always
53
+ cleared together to avoid partial state.
54
+ - **Single SSH call for remote** — the four artisan commands are joined with `&&`
55
+ into one SSH invocation rather than four separate connections, for speed.
56
+ - **No Q1 dependency** — local flush uses the already-decided container name
57
+ (`{APP_NAME}-app`); remote flush uses SSH via `laravel-tools.yml`, same as
58
+ the database commands. The deploy tool is not involved.
@@ -0,0 +1,128 @@
1
+ # Release 0.0.4 — Local setup scripts + container name fixes
2
+
3
+ **Date:** 2026-03-18
4
+
5
+ ---
6
+
7
+ ## Historical note
8
+
9
+ This release note is kept for historical traceability only.
10
+
11
+ It does **not** describe the current local workflow baseline anymore.
12
+ The current source of truth is the `1.0.0` local workflow:
13
+
14
+ 1. `npx laravel-tools local setup-project`
15
+ 2. `yarn repo-setup`
16
+ 3. `yarn start`
17
+ 4. `yarn setup-laravel`
18
+
19
+ Read the root `README.md` and `docs/Changelog.md` for the active workflow.
20
+
21
+ ## Overview
22
+
23
+ Implements the `local` command group — the commands developers run to spin up a
24
+ new Laravel project locally. Also fixes container naming across the codebase
25
+ after analysing the real Laravel project structure.
26
+
27
+ At the time of 0.0.4 the local workflow was:
28
+
29
+ ```
30
+ 1. laravel-tools local setup-project (not built yet at the time)
31
+ 2. laravel-tools local setup-repo ← built here
32
+ yarn repo-setup in boilerplate package.json calls this
33
+ 3. docker compose up -d
34
+ yarn start in boilerplate package.json calls this
35
+ 4. laravel-tools local setup-laravel ← built here
36
+ ```
37
+
38
+ ---
39
+
40
+ ## Bug fixes
41
+
42
+ ### Wrong container names in `src/cache.js` and `src/database.js`
43
+ The initial implementation assumed container names of `{APP_NAME}-app` and
44
+ `{APP_NAME}-db`. After analysing the real Laravel project docker-compose.yml,
45
+ the correct names are:
46
+
47
+ | Wrong | Correct |
48
+ |-------|---------|
49
+ | `{APP_NAME}-app` | `{APP_NAME}-api` |
50
+ | `{APP_NAME}-db` | `{APP_NAME}-mysql` |
51
+
52
+ All references in `src/cache.js` and `src/database.js` updated.
53
+
54
+ ---
55
+
56
+ ## Stub files added (`src/stub/`)
57
+
58
+ Template files that `setup-repo` copies into the project root, substituting
59
+ `${VAR}` tokens with values from `.env`.
60
+
61
+ ### `src/stub/docker-compose.yml`
62
+ Based on the real project docker-compose.yml, with:
63
+ - Hardcoded names (`supporticket.test`) replaced with `${APP_NAME}.test`
64
+ - Inconsistent volume mount path for mysql fixed (`./mysql/` → `./docker/mysql/`)
65
+ - Services: `traefik`, `api` (`jumpgroupit/laravel-image:0.1.0`), `db` (MySQL 8.0)
66
+
67
+ ### `src/stub/docker/traefik/traefik.yml`
68
+ Fixed leftover wrong network name: `ecommerce-network` → `api-network`.
69
+
70
+ ### `src/stub/docker/traefik/dynamic_conf.yml`
71
+ Cert paths changed from hardcoded project-specific names to generic:
72
+ - `site.test.pem` / `site.key`
73
+ These are the names `setup-repo` renames the mkcert output to, so this file
74
+ never needs to change between projects.
75
+
76
+ ### `src/stub/docker/php/local.ini`
77
+ PHP configuration copied from the real project: upload limits, execution time,
78
+ memory limit.
79
+
80
+ ### `src/stub/docker/mysql/my.cnf`
81
+ Minimal MySQL config enabling the general query log.
82
+
83
+ ---
84
+
85
+ ## Commands added
86
+
87
+ ### `local setup-repo`
88
+ Equivalent of trellis-tools `local setup-repo` (`setupLocal` in src/index.js).
89
+
90
+ Flow:
91
+ 1. Assert `.env.example` and `.secret-fetcher` exist
92
+ 2. Inject secrets via `@jumpgroup/secret-fetcher::replaceSecrets()` → `.env`
93
+ 3. Copy all stub files to project root with variable substitution
94
+ (`@jumpgroup/secret-fetcher::replaceFiles()`)
95
+ 4. Create `docker/certs/` directory
96
+ 5. Run `mkcert {APP_NAME}.test` inside `docker/certs/`
97
+ 6. Rename certs to generic names (`site.test.pem`, `site.key`) so
98
+ `dynamic_conf.yml` works for any project without modification
99
+ 7. Add `{APP_NAME}.test` to `/etc/hosts` via `sudo hostile set`
100
+
101
+ ### `local setup-laravel`
102
+ Equivalent of trellis-tools `local setup-wordpress` (`setupWordpress`).
103
+
104
+ Flow:
105
+ 1. Assert `.env` exists (setup-repo must have run first)
106
+ 2. Check `{APP_NAME}-api` container is running
107
+ 3. If `APP_KEY` already present in `.env` (injected by secret-fetcher in
108
+ step 2), skip `key:generate` — avoids overwriting the vault key
109
+ 4. If `APP_KEY` missing, run `php artisan key:generate`
110
+ 5. Run `php artisan migrate`
111
+ 6. Optionally run `php artisan db:seed` (interactive confirm)
112
+
113
+ ---
114
+
115
+ ## Dependencies added to `package.json`
116
+
117
+ | Package | Purpose |
118
+ |---------|---------|
119
+ | `@jumpgroup/secret-fetcher` | Secret injection and stub file deployment |
120
+ | `glob` | File pattern matching (used by secret-fetcher stub copy) |
121
+ | `hostile` | `/etc/hosts` editing via `sudo hostile set` |
122
+
123
+ ---
124
+
125
+ ## Other changes
126
+
127
+ - `bin/tools.js`: registered `local` command group, removed unused `readFileSync`
128
+ import.
@@ -0,0 +1,77 @@
1
+ # Release 0.0.5 — PHP version stubs + Docker image updates
2
+
3
+ **Date:** 2026-03-20
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Updates the Docker service versions in the stub to the latest stable versions
10
+ compatible with macOS 15.2, and introduces PHP version variants for the
11
+ docker-compose stub — mirroring the trellis-tools pattern. The `setup-repo`
12
+ command now accepts a `--phpversion` flag to select which image to use.
13
+
14
+ ---
15
+
16
+ ## Docker image version updates (`src/stub/docker-compose.yml`)
17
+
18
+ | Service | Before | After | Reason |
19
+ |---------|--------|-------|--------|
20
+ | `traefik` | `v2.4.7` | `v2.11` | Latest stable v2, macOS 15.2 compatible. Stayed on v2 (not v3) for consistency with existing projects |
21
+ | `mysql` | `8.0` | `8.4` | Latest LTS release |
22
+ | `jumpgroupit/laravel-image` | `0.1.0` | `0.2.5` | Latest release (PHP 8.4) |
23
+
24
+ > Traefik v3 was evaluated and rejected — it has breaking config changes and
25
+ > the team already runs v2.11 across all other projects.
26
+
27
+ ---
28
+
29
+ ## PHP version stub variants added
30
+
31
+ New structure under `src/stub/docker-compose/`:
32
+
33
+ ```
34
+ src/stub/
35
+ docker-compose.yml ← default (PHP 8.4)
36
+ docker-compose/
37
+ php8.0/docker-compose.yml ← jumpgroupit/laravel-image:0.2.2
38
+ php8.1/docker-compose.yml ← jumpgroupit/laravel-image:0.2.3
39
+ php8.2/docker-compose.yml ← jumpgroupit/laravel-image:0.1.0
40
+ php8.3/docker-compose.yml ← jumpgroupit/laravel-image:0.2.4
41
+ php8.4/docker-compose.yml ← jumpgroupit/laravel-image:0.2.5
42
+ ```
43
+
44
+ PHP 8.0 and 8.1 are end-of-life but included for legacy project support.
45
+
46
+ Image tag mapping (confirmed with team):
47
+
48
+ | PHP version | Image tag |
49
+ |-------------|-----------|
50
+ | 8.0 | `jumpgroupit/laravel-image:0.2.2` |
51
+ | 8.1 | `jumpgroupit/laravel-image:0.2.3` |
52
+ | 8.2 | `jumpgroupit/laravel-image:0.1.0` |
53
+ | 8.3 | `jumpgroupit/laravel-image:0.2.4` |
54
+ | 8.4 | `jumpgroupit/laravel-image:0.2.5` |
55
+
56
+ ---
57
+
58
+ ## `--phpversion` flag added to `local setup-repo`
59
+
60
+ ```bash
61
+ laravel-tools local setup-repo # default: php8.4
62
+ laravel-tools local setup-repo --phpversion php8.2
63
+ laravel-tools local setup-repo --phpversion php8.0
64
+ ```
65
+
66
+ ### How it works (`src/local/setup.js`)
67
+
68
+ 1. `replaceFiles` copies all stubs including the `docker-compose/` version subfolders
69
+ 2. If a non-default version is requested, `docker-compose.yml` is overwritten
70
+ with the version-specific file (with `${VAR}` tokens substituted from `.env`)
71
+ 3. The `docker-compose/` subfolder is removed from the project root — it is
72
+ internal to laravel-tools and not needed in the project
73
+
74
+ ### Files changed
75
+
76
+ - `src/local/setup.js` — added `phpversion` option, version selection logic, cleanup
77
+ - `bin/groups/local.js` — added `--phpversion` option with `.choices()` validation
@@ -0,0 +1,80 @@
1
+ # Release 0.0.6 — Mailpit local mail service
2
+
3
+ **Date:** 2026-03-20
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Adds Mailpit as the local email testing service across all Docker Compose stubs.
10
+ Mailpit replaces the originally requested Mailhog, which has not been maintained
11
+ since 2021. Mailpit is a drop-in replacement with the same ports, actively
12
+ maintained, and has a significantly better web UI.
13
+
14
+ ---
15
+
16
+ ## Why Mailpit over Mailhog
17
+
18
+ | | Mailhog | Mailpit |
19
+ |---|---|---|
20
+ | Last release | 2021 | Active |
21
+ | SMTP port | 1025 | 1025 |
22
+ | Web UI port | 8025 | 8025 |
23
+ | Web UI quality | Basic | Modern |
24
+ | ARM64 support | Unofficial | Official |
25
+
26
+ Both work identically from Laravel's perspective — only the image name changes.
27
+
28
+ ---
29
+
30
+ ## Changes to all Docker Compose stubs
31
+
32
+ Files updated:
33
+ - `src/stub/docker-compose.yml` (default, PHP 8.4)
34
+ - `src/stub/docker-compose/php8.0/docker-compose.yml`
35
+ - `src/stub/docker-compose/php8.1/docker-compose.yml`
36
+ - `src/stub/docker-compose/php8.2/docker-compose.yml`
37
+ - `src/stub/docker-compose/php8.3/docker-compose.yml`
38
+ - `src/stub/docker-compose/php8.4/docker-compose.yml`
39
+
40
+ ### Service added: `mailpit`
41
+
42
+ ```yaml
43
+ mailpit:
44
+ image: axllent/mailpit:latest
45
+ container_name: ${APP_NAME}-mailpit
46
+ restart: unless-stopped
47
+ ports:
48
+ - "1025:1025" # SMTP — Laravel MAIL_HOST points here
49
+ - "8025:8025" # Web UI — direct access
50
+ networks:
51
+ - api-network
52
+ labels:
53
+ - "traefik.enable=true"
54
+ - "traefik.http.routers.mailpit.rule=Host(`mail.${APP_NAME}.test`)"
55
+ - "traefik.http.routers.mailpit.tls=true"
56
+ - "traefik.http.services.mailpit.loadbalancer.server.port=8025"
57
+ ```
58
+
59
+ ### `api` service: `depends_on` updated
60
+
61
+ ```yaml
62
+ depends_on:
63
+ - db
64
+ - mailpit ← added
65
+ ```
66
+
67
+ ---
68
+
69
+ ## Laravel `.env` configuration
70
+
71
+ Any Laravel project using these stubs should have:
72
+
73
+ ```
74
+ MAIL_MAILER=smtp
75
+ MAIL_HOST=${APP_NAME}-mailpit
76
+ MAIL_PORT=1025
77
+ ```
78
+
79
+ The web UI is accessible at `https://mail.{APP_NAME}.test` after `setup-repo`
80
+ adds the domain to `/etc/hosts` and Traefik routes it via the labels above.
@@ -0,0 +1,61 @@
1
+ # Release 1.0.0 — Local workflow baseline
2
+
3
+ **Date:** 2026-04-02
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ First baseline release where the Laravel local workflow is treated as the core product.
10
+ This version establishes the 4-step setup model:
11
+
12
+ ```bash
13
+ 1. laravel-tools local setup-project
14
+ 2. yarn repo-setup
15
+ 3. yarn start
16
+ 4. yarn setup-laravel
17
+ ```
18
+
19
+ The release also aligns the local setup model with the Trellis-style split between:
20
+ - project identity definition
21
+ - local repo preparation
22
+ - runtime startup
23
+ - application initialization
24
+
25
+ ## Added
26
+
27
+ - New `local setup-project` command
28
+ - Multi-repo workflow documentation for working across:
29
+ - `laravel-tools`
30
+ - Laravel boilerplate
31
+ - real Laravel reference project
32
+
33
+ ## Changed
34
+
35
+ - `local setup-project` now prompts for the project name and updates:
36
+ - `APP_NAME`
37
+ - `APP_URL`
38
+ - `ASSETS_URL`
39
+ in `.env.example`
40
+ - `local setup-repo` now focuses on local environment preparation only
41
+ - Local setup now adds both:
42
+ - `${APP_NAME}.test`
43
+ - `mail.${APP_NAME}.test`
44
+ to `/etc/hosts`
45
+ - Certificate generation now supports both local hosts
46
+ - Docker stub templating now prefers `DB_DATABASE` while preserving `DB_NAME` compatibility
47
+ - Database import cleanup now clears all four Laravel cache layers
48
+ - Local Traefik/MySQL defaults were updated to the current baseline:
49
+ - Traefik `v3.6.11`
50
+ - MySQL `max_allowed_packet = 256M`
51
+ - query log disabled by default
52
+
53
+ ## Fixed
54
+
55
+ - Missing `.secret-fetcher` during `local setup-project` now fails with the standard team-specific message:
56
+ `Secret fetcher non è inizializzato, contattare Giada o Andrea`
57
+
58
+ ## Notes
59
+
60
+ - This is the first version intended as a serious baseline for testing the Laravel local workflow end-to-end.
61
+ - Earlier `0.x` releases remain the pre-baseline build-up history.
@@ -0,0 +1,18 @@
1
+ # Release 1.0.1 — Stub copy target fix
2
+
3
+ **Date:** 2026-04-02
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Hotfix for a critical `local setup-repo` issue discovered during real project testing.
10
+
11
+ ## Fixed
12
+
13
+ - Corrected the destination passed to `replaceFiles(...)` so the project root is treated as a directory, not as a file path
14
+ - Prevented `EISDIR: illegal operation on a directory` failures while copying generated Docker/Traefik stubs into the target repo
15
+
16
+ ## Impact
17
+
18
+ - `local setup-repo` can now complete the stub copy phase on real Laravel projects
@@ -0,0 +1,18 @@
1
+ # Release 1.0.2 — Session migration bootstrap
2
+
3
+ **Date:** 2026-04-02
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Fixes local Laravel initialization for projects that rely on a sessions table but do not already ship the migration.
10
+
11
+ ## Fixed
12
+
13
+ - `local setup-laravel` now attempts to generate the session-table migration before running migrations
14
+ - Reduced first-run failures caused by missing `create_sessions_table` migrations
15
+
16
+ ## Impact
17
+
18
+ - More reliable bootstrap on fresh Laravel projects during step 4 of the local workflow
@@ -0,0 +1,19 @@
1
+ # Release 1.0.3 — Target `.gitignore` safety
2
+
3
+ **Date:** 2026-04-02
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Improves generated-project hygiene during local repo preparation.
10
+
11
+ ## Added
12
+
13
+ - `local setup-repo` now appends missing local-only entries to the target project's `.gitignore`:
14
+ - `mysql/`
15
+ - `docker/certs/`
16
+
17
+ ## Impact
18
+
19
+ - Generated local artifacts are less likely to show up as noisy untracked files in consumer projects
@@ -0,0 +1,18 @@
1
+ # Release 1.1.0 — Optional Filament install
2
+
3
+ **Date:** 2026-04-02
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Extends Laravel bootstrap with an optional Filament installation flow.
10
+
11
+ ## Added
12
+
13
+ - `local setup-laravel` now asks whether Filament should be installed during setup
14
+ - If confirmed, the setup flow starts the Composer require + Filament installation sequence inside the running app container
15
+
16
+ ## Impact
17
+
18
+ - New Laravel projects can bootstrap Filament directly from the standard local setup flow
@@ -0,0 +1,17 @@
1
+ # Release 1.1.1 — Composer constraint fix for Filament
2
+
3
+ **Date:** 2026-04-02
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Quick fix for the initial Filament installation command added in `1.1.0`.
10
+
11
+ ## Fixed
12
+
13
+ - Corrected the `composer require` syntax used for `filament/filament:^3.2`
14
+
15
+ ## Impact
16
+
17
+ - Filament installation no longer fails because of an invalid Composer package constraint
@@ -0,0 +1,18 @@
1
+ # Release 1.1.2 — Filament user command
2
+
3
+ **Date:** 2026-04-02
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Adds a dedicated helper command for creating a Filament user in the local environment.
10
+
11
+ ## Added
12
+
13
+ - New `local user add` command
14
+ - The command runs `php artisan make:filament-user` inside the running `${APP_NAME}-api` container
15
+
16
+ ## Impact
17
+
18
+ - Filament-enabled projects can create admin users without leaving the tool flow
@@ -0,0 +1,21 @@
1
+ # Release 1.1.3 — Composer/install output cleanup
2
+
3
+ **Date:** 2026-04-02
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Improves the visibility and ordering of setup output while hardening session migration handling.
10
+
11
+ ## Added
12
+
13
+ - `local setup-repo` now runs `composer install` explicitly as part of the repo preparation phase
14
+
15
+ ## Changed
16
+
17
+ - Composer installation output now appears in the expected place during setup instead of surfacing later from asynchronous container startup
18
+
19
+ ## Fixed
20
+
21
+ - Session migration checks were tightened before running Laravel migrations
@@ -0,0 +1,18 @@
1
+ # Release 1.1.4 — Session migration detection via `readdirSync`
2
+
3
+ **Date:** 2026-04-02
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Refines the session-table detection introduced in the previous releases.
10
+
11
+ ## Fixed
12
+
13
+ - Replaced `glob`-based session migration detection with `readdirSync` on `database/migrations`
14
+ - Reduced false negatives / false positives when checking whether `create_sessions_table` already exists
15
+
16
+ ## Impact
17
+
18
+ - `local setup-laravel` is more deterministic when deciding whether to generate the session migration
@@ -0,0 +1,18 @@
1
+ # Release 1.1.5 — Non-interactive Filament install
2
+
3
+ **Date:** 2026-04-02
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Removes interactive noise from the Filament setup phase.
10
+
11
+ ## Fixed
12
+
13
+ - `php artisan filament:install` now runs with `--no-interaction`
14
+ - Removed self-spam / TTY-related friction during automated local setup
15
+
16
+ ## Impact
17
+
18
+ - Filament installation is smoother and better behaved inside scripted setup flows
@@ -0,0 +1,21 @@
1
+ # Release 1.1.6 — Graceful migrations
2
+
3
+ **Date:** 2026-04-02
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Stabilizes the final migration phase of local Laravel initialization.
10
+
11
+ ## Changed
12
+
13
+ - `local setup-laravel` now runs `php artisan migrate --graceful`
14
+
15
+ ## Fixed
16
+
17
+ - Session-table detection naming/flow was cleaned up before the final migration step
18
+
19
+ ## Impact
20
+
21
+ - Migration execution is more tolerant during repeated setup runs
@@ -0,0 +1,17 @@
1
+ # Release 1.1.7 — Filament assets in setup flow
2
+
3
+ **Date:** 2026-04-02
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Completes the Filament bootstrap sequence by publishing its assets during setup.
10
+
11
+ ## Added
12
+
13
+ - `local setup-laravel` now runs `php artisan filament:assets` after Filament installation
14
+
15
+ ## Impact
16
+
17
+ - Filament panels are more likely to be usable immediately after the setup flow completes