-
Notifications
You must be signed in to change notification settings - Fork 0
Development
Runtime dependencies are WordPress, sodium, and the OpenStation App Framework. Composer/npm packages are development-only.
apps/ contains native manifests. The App presentation bridge, Core orchestration, content validation/fingerprints, repository, REST client, crypto, sync policy, and search index live in separate includes/ modules. assets/fleet-app.* supplies native layout and small effect/unsaved-change handling. tests/ holds unit/static/browser and disposable stress checks.
composer install
npm ci
composer validate --strict
composer quality
composer audit --locked
npm audit --audit-level=high
./bin/build.sh
./bin/verify-reproducible-build.shThe allowlisted runtime ZIP is dist/fleet-for-openstation.zip. Run Plugin Check against its extracted payload.
The full browser suite deliberately requires a disposable writable hub and target:
FLEET_E2E=1 FLEET_E2E_WRITES=1 \
FLEET_E2E_HUB_PATH=/absolute/hub \
FLEET_E2E_MANAGED_PATH=/absolute/disposable-managed-site \
FLEET_E2E_BROWSERS=chromium,firefox,webkit npm run test:e2eNever use production. Cookies stay in memory and traces are off; approval tests disable screenshots. The reliability files fail closed without the write opt-in, rather than silently pretending a skipped mutation suite passed.
The expanded suite includes unsaved navigation, timezone round trips, health fault injection, user isolation, and malformed dates in edge-cases.e2e.spec.js. The four reported regressions are now fixed. publishing.e2e.spec.js covers publishing review, signature binding, revision recovery, saved views, custom-type discovery, fixed-offset timezones, partial health recovery, post-review conflicts and two dirty windows. See Modern Core and publishing.
The 0.10 release adds reliability.e2e.spec.js and security-recovery.e2e.spec.js: actual recovery Heartbeats, publishing pickers, uploads, replies, bulk outcomes, shared-reader controls, live revocation, upload rejection and storage/lock isolation. CI is configured to run the installable ZIP in Chromium/Firefox/WebKit on a real two-target MySQL/MariaDB lab, plus a real 0.8.0 upgrade, clone-database restore, and saved multi-window identity regression. That mandatory job is separate from optional local wrappers.
The repository's tests/lab/README.md documents reproduction, 100-origin load tests, the 48/72-hour soak and cleanup. tests/lab/runtime/ is private, ignored test state; never commit it. See Reliability milestone for measured outcomes and remaining external gates.
Generate documentation captures only from an authenticated disposable fixture with at least two connected demo sites:
FLEET_SCREENSHOTS=1 \
FLEET_E2E_HUB_PATH=/absolute/path/to/disposable-hub \
node tests/e2e/screenshots.jsThe script uses real OpenStation windows, does not approve a connection or confirm a content write, and compares the served Fleet CSS/JavaScript with the working tree before succeeding. Inspect the ten images at native size and as a thumbnail contact sheet, then update Screenshots and the current taste review if the visual state changed. Never capture an Application Password screen or callback URL.
Verify the deployed version and actual CSS/JS response hashes. Repeatedly extracting a deterministic ZIP can leave OPcache serving earlier PHP because timestamps are fixed. Touch freshly deployed files or restart PHP on the disposable fixture, not unrelated sites. Do not weaken deterministic packaging.
Audit and test an exact OpenStation commit. Keep Fleet and OpenStation changes in separate repositories and reviews. When a framework defect blocks Fleet, document the tested commit and upstream issue or PR; never merge an OpenStation change without explicit approval. See Framework integration and Load testing.