Skip to content

Commit c28f44e

Browse files
author
Cladius Maximus
committed
Merge branch 'feat/icon-fallback-and-live-test-suite' into 'main'
feat(icons): fallback prop on <core:icon> + run the 46 test files that never ran See merge request dappcore/corephp/php!1
2 parents be304e7 + d31618b commit c28f44e

523 files changed

Lines changed: 11807 additions & 9036 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/ci.yml‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [dev, main]
6+
pull_request:
7+
branches: [dev, main]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- uses: shivammathur/setup-php@v2
15+
with:
16+
php-version: '8.4'
17+
coverage: none
18+
- name: Composer install
19+
run: composer install --prefer-dist --no-interaction --no-progress
20+
- name: Pint
21+
run: vendor/bin/pint --test || true
22+
- name: PHPStan
23+
run: vendor/bin/phpstan analyse --no-progress || true
24+
- name: Pest
25+
run: vendor/bin/pest --no-coverage --no-interaction || true
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: core-lint pilot
2+
3+
on:
4+
push:
5+
branches: [main, develop, dev]
6+
pull_request:
7+
branches: [main, develop, dev]
8+
9+
# Pilot workflow that runs the core-lint orchestrator (PHPStan + Psalm via the
10+
# code/core/lint adapters) ALONGSIDE the existing native phpstan/psalm jobs in
11+
# .github/workflows/static-analysis.yml. Both must continue to run for at least
12+
# one merge cycle so the parity between native and core-lint outputs can be
13+
# diffed before native jobs are removed.
14+
#
15+
# Spec: plans/code/core/lint/RFC.md §5 (Adapter), §5.4 (Built-in Adapters)
16+
17+
jobs:
18+
core-lint:
19+
name: core-lint (pilot)
20+
runs-on: ubuntu-latest
21+
continue-on-error: true # Pilot — failures here MUST NOT block PRs.
22+
23+
steps:
24+
- name: Checkout code
25+
uses: actions/checkout@v4
26+
27+
- name: Setup PHP
28+
uses: shivammathur/setup-php@v2
29+
with:
30+
php-version: 8.3
31+
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite
32+
coverage: none
33+
34+
- name: Install PHP dependencies
35+
run: composer install --prefer-dist --no-interaction --no-progress
36+
37+
- name: Setup Go
38+
uses: actions/setup-go@v5
39+
with:
40+
go-version: '1.26'
41+
42+
- name: Install core-lint
43+
run: |
44+
go install dappco.re/go/lint/cmd/core-lint@latest || \
45+
go install github.com/dappcore/lint/cmd/core-lint@latest
46+
echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH"
47+
48+
- name: Run core-lint (PHP, JSON for diffing)
49+
run: |
50+
core-lint run --lang php --ci --output json > core-lint-report.json || true
51+
core-lint run --lang php --output text || true
52+
53+
- name: Upload core-lint report
54+
if: always()
55+
uses: actions/upload-artifact@v4
56+
with:
57+
name: core-lint-report
58+
path: core-lint-report.json
59+
if-no-files-found: ignore

‎.gitignore‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,9 @@ infection-summary.log
3131
# Worktrees
3232
.worktrees/
3333
.core/
34+
35+
# committed build output — keep out of git
36+
/bin/core-php-cgo
37+
38+
# Scratch/backup trees — never part of a change.
39+
.tmp/

‎.gitlab-ci.yml‎

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# CorePHP — the gate.
2+
#
3+
# Before this file the project had no CI config of its own and inherited a
4+
# group pipeline whose build and code_intelligence jobs exit 127 on every
5+
# commit: nothing to build, nothing to index. Pipeline 795 was the first this
6+
# project ever completed, and it could not have passed. With
7+
# only_allow_merge_if_pipeline_succeeds on, that made every merge request
8+
# unmergeable for a reason unrelated to its contents.
9+
#
10+
# So the gate is defined here, and it gates on things that are true.
11+
12+
stages:
13+
- gate
14+
- report
15+
16+
default:
17+
interruptible: true
18+
19+
variables:
20+
COMPOSER_NO_INTERACTION: "1"
21+
# Deep enough that the merge-request diff base is present in the clone;
22+
# without it the style check silently degrades to a whole-repo scan.
23+
GIT_DEPTH: "50"
24+
25+
# The runner is a shell executor on the homelab box, so `image:` would be
26+
# silently ignored and the script runs directly on the host. That host already
27+
# provides PHP 8.5 and Composer; installing a toolchain here fails on
28+
# permissions and is not needed.
29+
.php:
30+
before_script:
31+
- php -v | head -1
32+
- composer install --no-progress --prefer-dist
33+
34+
# Must be true for the change to land.
35+
gate:
36+
extends: .php
37+
stage: gate
38+
rules:
39+
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
40+
- if: $CI_COMMIT_BRANCH
41+
script:
42+
# Every PHP file parses.
43+
- find src tests -name '*.php' -print0 | xargs -0 -n1 -P4 php -l > /dev/null
44+
# House style, whole tree. The tree was formatted in one pass so this
45+
# needs no changed-files logic — which is the point: computing "what did
46+
# this change touch" in CI went wrong three separate ways (a stale
47+
# merge-request diff base after a force-push, a shallow clone with no real
48+
# merge base, and a whitespace-only file list that made pint silently scan
49+
# everything). None of that can happen to `pint --test`.
50+
- ./vendor/bin/pint --test
51+
# The package-level suite. This one is green and must stay green.
52+
- ./vendor/bin/pest --testsuite=Feature,Unit --no-coverage
53+
54+
# Reports, does not block.
55+
#
56+
# The suites under src/ were dark until they were wired into phpunit.xml, and
57+
# turning them on surfaced ~448 pre-existing failures: missing test-database
58+
# migrations, classes referenced from sibling packages that CorePHP does not
59+
# depend on, and genuine assertion drift. That debt is real and worth seeing on
60+
# every pipeline, but it predates any single change and blocking on it would
61+
# stop all work rather than fix it.
62+
#
63+
# This is deliberately NOT `|| true` on the gate job — a check that silently
64+
# passes teaches you nothing. It is a separate job, allowed to fail, so the
65+
# number is visible and can be driven down. When it reaches zero, move the
66+
# --testsuite line above to cover src too and delete this job.
67+
module-suite-debt:
68+
extends: .php
69+
stage: report
70+
allow_failure: true
71+
rules:
72+
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
73+
- if: $CI_COMMIT_BRANCH
74+
script:
75+
- ./vendor/bin/pest --testsuite=Module --no-coverage

‎.woodpecker.yml‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Woodpecker CI pipeline.
2+
# Server: ci.lthn.sh. Lint + sonar in parallel, both depend only on clone.
3+
# sonar_token is admin-scoped on the Woodpecker server.
4+
5+
when:
6+
- event: push
7+
branch: [dev, main]
8+
9+
steps:
10+
- name: phpstan
11+
image: ghcr.io/phpstan/phpstan:latest
12+
depends_on: []
13+
commands:
14+
- if [ -f phpstan.neon ] || [ -f phpstan.neon.dist ]; then phpstan analyse --no-progress --memory-limit=1G; else echo 'no phpstan config — sonar-only'; fi
15+
- name: sonar
16+
image: sonarsource/sonar-scanner-cli:latest
17+
depends_on: []
18+
environment:
19+
SONAR_HOST_URL: https://sonar.lthn.sh
20+
SONAR_TOKEN:
21+
from_secret: sonar_token
22+
commands:
23+
- sonar-scanner

‎AGENTS.md‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Agent Instructions
2+
3+
This repository follows the core/go v0.9.0 consumer contract.
4+
5+
- Keep Go code under `go/`.
6+
- Use `dappco.re/go` primitives instead of direct banned stdlib imports.
7+
- Do not edit `.core/` runtime configuration.
8+
- Do not edit `external/` dependency sources.
9+
- Verify with `bash /Users/snider/Code/core/go/tests/cli/v090-upgrade/audit.sh .`.

‎CLAUDE.md‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ src/Core/Lang/ # Translation system with ICU + locale fallback chains
7171
src/Core/Media/ # Media handling with thumbnail helpers
7272
src/Core/Search/ # Search functionality
7373
src/Core/Seo/ # SEO utilities
74-
src/Core/Service/ # Service discovery and dependency resolution
7574
src/Core/Storage/ # Storage with Redis circuit breaker + fallback
7675
src/Core/Webhook/ # Webhook system + CronTrigger scheduled action
7776
```
File renamed without changes.

0 commit comments

Comments
 (0)