Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
bcd6194
First implement standalone CLI prototype
iMattPro Jun 29, 2026
69c9493
Ignore agent skills
iMattPro Jun 29, 2026
924783c
Add board seeding / populating
iMattPro Jun 29, 2026
11e387f
Improve seeding and fix bugs
iMattPro Jun 29, 2026
c689267
Expand source/version selection around supported phpBB branches only
iMattPro Jun 29, 2026
0c6f2f7
Implemented board:seed --reset and --replace
iMattPro Jun 29, 2026
a4b18ce
Fix user post counts
iMattPro Jun 29, 2026
d1453f8
Get phpBB4 working
iMattPro Jun 30, 2026
ee21da1
Add extension support by binding to docker container
iMattPro Jun 30, 2026
3ab5400
Fixes for older phpBB 3.2 boards
iMattPro Jun 30, 2026
db3c4a3
Add styles support by binding to docker container
iMattPro Jun 30, 2026
225a39e
Harden CLI and add better CLI output errors
iMattPro Jun 30, 2026
7341b09
Update docs
iMattPro Jun 30, 2026
17ce172
render board:list as a fixed-width table and other cli output updates
iMattPro Jun 30, 2026
81c6866
Fix seeding issues
iMattPro Jun 30, 2026
540cbc2
Remove docker image of board on destroy
iMattPro Jun 30, 2026
a4bfa6a
Docs cleanup
iMattPro Jul 1, 2026
2284e77
Security hardening
iMattPro Jul 1, 2026
273ddb3
Implemented source maintenance
iMattPro Jul 1, 2026
cb543ba
Rename from modern to sandbox
iMattPro Jul 1, 2026
9be0e75
Use bundled composer.phar if composer not found in PATH
iMattPro Jul 1, 2026
03a961d
Update composer.phar
iMattPro Jul 1, 2026
4a84170
Remove unused cache folder
iMattPro Jul 1, 2026
7baf36d
Add some seeded users to NRU and Mod groups
iMattPro Jul 1, 2026
dac3fe4
Update docs
iMattPro Jul 1, 2026
537508c
Update docs a bit
iMattPro Jul 2, 2026
41c11b8
recursive mounting of styles and extensions folder contents
iMattPro Jul 2, 2026
3717c52
Clean up docs and vastly improve help command
iMattPro Jul 2, 2026
1bad68b
Add header blocks and use statements
iMattPro Jul 2, 2026
111f897
Reduce code duplication
iMattPro Jul 2, 2026
fa2bfb5
Remove dead code
iMattPro Jul 2, 2026
dc2796c
Additional code improvements
iMattPro Jul 2, 2026
57b95fd
Enforce PHP 8 minimum for the CLI
iMattPro Jul 2, 2026
8e3511d
Add some additional CLI messages during processes
iMattPro Jul 2, 2026
5996293
Fix Copilot Code Review findings
iMattPro Jul 3, 2026
de468cf
Merge branch 'master' into modernize
iMattPro Jul 3, 2026
1466c98
Add notice to legacy web UI about new CLI
iMattPro Jul 3, 2026
ad17082
Normalize naming of the new CLI
iMattPro Jul 3, 2026
f100324
Use tables in the cli docs where appropriate
iMattPro Jul 3, 2026
fd8c44d
Add full documentation support for CLI into QI
iMattPro Jul 3, 2026
f9bf30c
Fine tune CLI docks some more
iMattPro Jul 3, 2026
ab86847
Improve CLI notice alert too
iMattPro Jul 3, 2026
41d6340
Use a single drop zone for customisations
iMattPro Jul 3, 2026
1b75958
Improve qi init output messaging
iMattPro Jul 3, 2026
3095305
Make code blocks copy-able
iMattPro Jul 4, 2026
404cc9c
Improve source docs
iMattPro Jul 4, 2026
1a610f8
Ensure PHP build has the extensions phpBB expects
iMattPro Jul 4, 2026
7e8a887
Floating board selectors should resolve to exact source versions
iMattPro Jul 4, 2026
44ccd36
All table outputs should be formatted, not raw tabbed
iMattPro Jul 5, 2026
9177e82
Infer which php version to use from phpbb composer requirement
iMattPro Jul 5, 2026
fb390fb
Combine source add into source fetch
iMattPro Jul 5, 2026
c93b12d
Fix adding source from git (find composer better)
iMattPro Jul 5, 2026
8ce3408
Add a debug option fro debug mode
iMattPro Jul 5, 2026
3a175f6
Add tests
iMattPro Jul 5, 2026
82f99aa
Ensure we don’t emit unquoted strings into yaml files
iMattPro Jul 5, 2026
4c74a54
Minor fixes
iMattPro Jul 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,18 @@ $ php composer.phar install
> - Edit the `scss/qi_bootstrap.scss` file to customise Bootstrap variables.
> - Run `$ npm run all` to compile and deploy new Bootstrap CSS/JS files to QuickInstall.

### CLI tests

The new CLI test suite uses an isolated Composer config so it can require PHPUnit without changing QuickInstall's legacy runtime dependency constraints.

```
$ cd tests
$ COMPOSER=composer.cli-tests.json composer install
$ cd ..
$ tests/vendor/bin/phpunit -c phpunit.xml.dist
```

The CLI test dependencies install into `tests/vendor/`, leaving the main application `vendor/` directory unchanged.

## :computer: Make something great

Expand Down Expand Up @@ -66,4 +78,3 @@ Be prepared for:
- Constructive criticism of your code changes.
- phpBB team members, or the community at large may request changes to your code (repeat [step 2 from here](#computer-make-something-great)).
- That feeling when your Pull Request is accepted and merged. :sunglasses:

39 changes: 39 additions & 0 deletions .github/workflows/cli-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: CLI tests

on:
push:
pull_request:

jobs:
phpunit:
name: PHPUnit PHP ${{ matrix.php }}
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
php: ['8.1', '8.2', '8.3', '8.4']

steps:
- name: Checkout
uses: actions/checkout@v6

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
coverage: none

- name: Validate test Composer config
working-directory: tests
run: COMPOSER=composer.cli-tests.json composer validate --no-check-publish --strict

- name: Install test dependencies
working-directory: tests
run: COMPOSER=composer.cli-tests.json composer install --no-interaction --prefer-dist

- name: Run PHPUnit
run: tests/vendor/bin/phpunit -c phpunit.xml.dist

- name: Lint CLI entrypoint
run: php -l bin/qi
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,13 @@ settings/*
cache/*
sources/*
vendor/*
tests/vendor/*
build/*
.qi/*
customisations/*
*~
.idea
node_modules
/.agents
/agent
/skills-lock.json
33 changes: 32 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,12 @@ QuickInstall is a tool we built to support the community of phpBB extension deve
## 🛠 Upgrading
1. Get the latest version of [QuickInstall](https://www.phpbb.com/customise/db/official_tool/phpbb3_quickinstall/) and extract it.

2. Copy everything into your existing QuickInstall directory **except for the 📁`boards/`, 📁`sources/` and 📁`settings/` directories**.
2. Copy everything into your existing QuickInstall directory **except for:**
- 📁`.qi/` (may be hidden by your operating system)
- 📁`boards/`
- 📁`customisations/`
- 📁`sources/`
- 📁`settings/`

> If you are upgrading from QuickInstall 1.1.8 (or older) you MUST review and re-save your old Profile settings.

Expand All @@ -50,6 +55,32 @@ phpBB boards require a web server running PHP and one of the following database
| 3.1.x | 5.4.7 - 5.6.x | 3.23+ | 5.1+ | 8.3+ | SQLite 2 or 3 | Server 2000+ |
| 3.0.x | 5.4.7 - 5.6.x | 3.23+ | - | 7.x | SQLite 2 | Server 2000 |

## QuickInstall CLI

QuickInstall now includes a Docker-based CLI for creating local phpBB test boards. It writes generated state to `.qi/` and leaves the legacy web UI unchanged. The QuickInstall CLI requires PHP 8.0 or newer for the `php bin/qi` command.

```bash
php bin/qi init
php bin/qi board:create test --phpbb 3.3 --db mariadb --port 8081 --populate extension-dev
php bin/qi board:start test
```

The QuickInstall CLI targets phpBB 3.2+ installer-based boards. phpBB 3.0/3.1 remain legacy-web-app territory and are not planned for the QuickInstall CLI.

Downloaded extensions can be unzipped into `customisations/` and mounted into boards:

```bash
php bin/qi ext:mount test customisations/vendor/extname
```

Downloaded styles can be unzipped into `customisations/` and mounted into boards:

```bash
php bin/qi style:mount test customisations/stylename
```

See the complete [QuickInstall CLI docs](index.php?page=cli).

## 🐞 Support
You can receive support at the [phpBB3 QuickInstall Discussion/Support](https://www.phpbb.com/customise/db/official_tool/phpbb3_quickinstall/support) forum.

Expand Down
26 changes: 26 additions & 0 deletions bin/qi
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/usr/bin/env php
<?php

if (PHP_VERSION_ID < 80000)
{
fwrite(STDERR, "QuickInstall CLI requires PHP 8.0 or newer. You are running PHP " . PHP_VERSION . ".\n");
fwrite(STDERR, "Run bin/qi with a PHP 8+ CLI binary, or use the legacy web UI with your older PHP runtime.\n");
exit(1);
}

require __DIR__ . '/../src/QuickInstall/Sandbox/Application.php';
require __DIR__ . '/../src/QuickInstall/Sandbox/CommandLine.php';
require __DIR__ . '/../src/QuickInstall/Sandbox/Project.php';
require __DIR__ . '/../src/QuickInstall/Sandbox/VersionMatrix.php';
require __DIR__ . '/../src/QuickInstall/Sandbox/SourceProvider.php';
require __DIR__ . '/../src/QuickInstall/Sandbox/SourceService.php';
require __DIR__ . '/../src/QuickInstall/Sandbox/BoardService.php';
require __DIR__ . '/../src/QuickInstall/Sandbox/DockerComposeWriter.php';
require __DIR__ . '/../src/QuickInstall/Sandbox/BoardRunner.php';
require __DIR__ . '/../src/QuickInstall/Sandbox/SeederWriter.php';
require __DIR__ . '/../src/QuickInstall/Sandbox/ExtensionManager.php';
require __DIR__ . '/../src/QuickInstall/Sandbox/StyleManager.php';

use QuickInstall\Sandbox\Application;

exit((new Application(dirname(__DIR__)))->run($argv));
3 changes: 3 additions & 0 deletions build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,10 @@
Remove some unnecessary files/directories
-->
<delete dir="${dir}/.github" />
<delete dir="${dir}/.qi" />
<delete dir="${dir}/node_modules" />
<delete dir="${dir}/scss" />
<delete dir="${dir}/tests" />
<delete dir="${dir}/vendor/twig/twig/doc" />
<delete dir="${dir}/vendor/twig/twig/ext" />
<delete dir="${dir}/vendor/twig/twig/test" />
Expand All @@ -33,6 +35,7 @@
<delete file="${dir}/composer.phar" />
<delete file="${dir}/package.json" />
<delete file="${dir}/package-lock.json" />
<delete file="${dir}/phpunit.xml.dist" />
</target>

<!--
Expand Down
Binary file modified composer.phar
Binary file not shown.
Loading