Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
66de3df
refactor: remove mvp wording from unsupported subset messaging
vitormattos May 27, 2026
1550ee1
fix: align quality and release checks for ci
vitormattos May 27, 2026
4f0cbd2
ci: remove node dependency from commit validation
vitormattos May 27, 2026
815b0e7
ci: derive php version from composer requirement
vitormattos May 27, 2026
6ce2dba
ci: ignore merge commits in commit check
vitormattos May 27, 2026
49bc629
ci: fix remaining workflow blockers
vitormattos May 27, 2026
632d38d
ci: fix qa dependency and mutation phpunit path
vitormattos May 27, 2026
d5ce0da
fix: preserve constructor backward compatibility
vitormattos May 27, 2026
525318f
chore: skip new-in-initializer rector rule
vitormattos May 27, 2026
9647262
chore: fix rector skip rule namespace
vitormattos May 27, 2026
db30536
chore: exempt BC-sensitive constructors from rector
vitormattos May 27, 2026
f61c9a7
chore: skip BC-sensitive files in rector
vitormattos May 27, 2026
8b3a7f0
chore: add SPDX headers to workflows
vitormattos May 27, 2026
b06040d
docs: add SPDX headers to markdown files
vitormattos May 27, 2026
168959b
docs: add full AGPL license text
vitormattos May 27, 2026
ae17023
refactor: split html parser responsibilities
vitormattos May 27, 2026
77c5f49
refactor: extract template document builder
vitormattos May 27, 2026
215a7e7
docs: remove redundant docker quick use section
vitormattos May 27, 2026
594e89d
test: harden compiler regressions and ci metadata checks
vitormattos May 27, 2026
34fd128
ci: fix qa config parsing and style gates
vitormattos May 27, 2026
c4b0f23
test: remove remote phpunit schema dependency
vitormattos May 27, 2026
c628e31
test: raise mutation coverage for parser and layout flows
vitormattos May 27, 2026
b03d6c2
test: add css inline style parser tests
vitormattos May 28, 2026
7f49598
test: add html subset parser tests
vitormattos May 28, 2026
2396def
test: add integration adapter unit tests
vitormattos May 28, 2026
f0476d3
test: add layout engine unit tests
vitormattos May 28, 2026
c2ba95d
test: add pdf color parser tests
vitormattos May 28, 2026
b93c7ac
test: add pdf escaper tests
vitormattos May 28, 2026
6503df4
test: add template builder tests
vitormattos May 28, 2026
2506bb6
test: update compiler unit tests
vitormattos May 28, 2026
4252cd1
test: remove legacy color parser test path
vitormattos May 28, 2026
8c53fa2
test: remove legacy inline style parser test path
vitormattos May 28, 2026
e08fec4
test: remove legacy layout engine test path
vitormattos May 28, 2026
fcb9a85
test: remove combined pdf escaper color test
vitormattos May 28, 2026
6f9c4b8
test: remove legacy pdf escaper test path
vitormattos May 28, 2026
65fa0a4
test: remove legacy adapter test path
vitormattos May 28, 2026
f18fc39
test: remove legacy advanced html parser test
vitormattos May 28, 2026
fbd202a
test: remove legacy subset html parser test path
vitormattos May 28, 2026
20df91e
test: remove legacy builder compatibility test
vitormattos May 28, 2026
db3bda2
test: remove legacy template builder test path
vitormattos May 28, 2026
4d48b38
docs: document docker compose environment overrides
vitormattos May 28, 2026
77361eb
docs: remove docker section from readme
vitormattos May 28, 2026
44af83e
docs: document env overrides in compose file
vitormattos May 28, 2026
2994a08
chore: default composer cache to home directory
vitormattos May 28, 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
7 changes: 0 additions & 7 deletions .env.example

This file was deleted.

3 changes: 3 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

github: libresign
3 changes: 3 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: Bug report
description: Report a reproducible defect
labels: [bug]
Expand Down
3 changes: 3 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

blank_issues_enabled: false
contact_links:
- name: Security disclosure
Expand Down
3 changes: 3 additions & 0 deletions .github/ISSUE_TEMPLATE/discussion.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: Discussion
description: Start a technical/product discussion
labels: [discussion]
Expand Down
3 changes: 3 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: Feature request
description: Propose a feature for roadmap review
labels: [enhancement]
Expand Down
3 changes: 3 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
<!-- SPDX-FileCopyrightText: 2026 LibreSign -->
<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->

## Scope

- [ ] Change scope and impact are clearly described
Expand Down
24 changes: 24 additions & 0 deletions .github/actions/shell-quality/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: shell-quality
description: Install shell tooling and run shell safety checks.

runs:
using: composite
steps:
- name: Install shell tools
shell: bash
run: sudo apt-get update && sudo apt-get install -y shellcheck shfmt devscripts

- name: shellcheck
shell: bash
run: shellcheck scripts/*.sh

- name: shfmt check
shell: bash
run: shfmt -d scripts

- name: checkbashisms
shell: bash
run: checkbashisms -f scripts/*.sh
3 changes: 3 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
<!-- SPDX-FileCopyrightText: 2026 LibreSign -->
<!-- SPDX-License-Identifier: AGPL-3.0-or-later -->

# Copilot Instructions

## Mandatory quality flow
Expand Down
3 changes: 3 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

version: 2
updates:
- package-ecosystem: composer
Expand Down
11 changes: 11 additions & 0 deletions .github/release-drafter.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name-template: 'v$RESOLVED_VERSION'
tag-template: 'v$RESOLVED_VERSION'
template: |
## Changes

$CHANGES

## Contributors

$CONTRIBUTORS
change-template: '- $TITLE (#$NUMBER)'
categories:
- title: 'Features'
Expand Down
13 changes: 11 additions & 2 deletions .github/workflows/bc-check.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: bc-check

on:
Expand All @@ -7,12 +10,18 @@ jobs:
bc-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Detect minimum PHP from composer.json
id: php_min
run: |
php_version=$(grep -Po '"php"\s*:\s*"\K[^"]+' composer.json | grep -Eo '[0-9]+\.[0-9]+' | head -n1)
[[ -n "$php_version" ]] || { echo "Could not determine minimum PHP version"; exit 1; }
echo "version=$php_version" >> "$GITHUB_OUTPUT"
- uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
php-version: ${{ steps.php_min.outputs.version }}
- run: composer install --no-interaction --prefer-dist
- run: composer bin qa install --no-interaction --prefer-dist
- run: composer run bc:check
7 changes: 5 additions & 2 deletions .github/workflows/changelog.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: changelog

on:
Expand All @@ -7,12 +10,12 @@ jobs:
changelog:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Check if CHANGELOG.md changed
id: changed_files
uses: tj-actions/changed-files@v46
uses: tj-actions/changed-files@v47
with:
files: |
CHANGELOG.md
Expand Down
31 changes: 25 additions & 6 deletions .github/workflows/commitlint.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: commitlint

on:
Expand All @@ -7,11 +10,27 @@ jobs:
commitlint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npx commitlint --from=${{ github.event.pull_request.base.sha }} --to=${{ github.sha }}
- name: Validate Conventional Commits
run: |
set -euo pipefail
RANGE="${{ github.event.pull_request.base.sha }}..${{ github.sha }}"

invalid=0
while IFS= read -r message; do
[[ -z "$message" ]] && continue
[[ "$message" =~ ^Merge\ ]] && continue

if [[ "$message" =~ ^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([a-z0-9._/-]+\))?!?:\ .+ ]]; then
continue
fi

echo "Invalid conventional commit message: $message"
invalid=1
done < <(git log --format=%s "$RANGE")

if [[ $invalid -ne 0 ]]; then
exit 1
fi
14 changes: 11 additions & 3 deletions .github/workflows/compatibility-matrix.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: compatibility-matrix

on:
Expand All @@ -9,13 +12,18 @@ jobs:
strategy:
fail-fast: false
matrix:
php: ['8.2', '8.3']
deps: [lowest, highest]
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Detect minimum PHP from composer.json
id: php_min
run: |
php_version=$(grep -Po '"php"\s*:\s*"\K[^"]+' composer.json | grep -Eo '[0-9]+\.[0-9]+' | head -n1)
[[ -n "$php_version" ]] || { echo "Could not determine minimum PHP version"; exit 1; }
echo "version=$php_version" >> "$GITHUB_OUTPUT"
- uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
php-version: ${{ steps.php_min.outputs.version }}
- run: |
if [ "${{ matrix.deps }}" = "lowest" ]; then
composer update --prefer-lowest --prefer-dist --no-interaction
Expand Down
13 changes: 11 additions & 2 deletions .github/workflows/composer-validate.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: composer-validate

on:
Expand All @@ -9,8 +12,14 @@ jobs:
composer-validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Detect minimum PHP from composer.json
id: php_min
run: |
php_version=$(grep -Po '"php"\s*:\s*"\K[^"]+' composer.json | grep -Eo '[0-9]+\.[0-9]+' | head -n1)
[[ -n "$php_version" ]] || { echo "Could not determine minimum PHP version"; exit 1; }
echo "version=$php_version" >> "$GITHUB_OUTPUT"
- uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
php-version: ${{ steps.php_min.outputs.version }}
- run: composer validate --strict
13 changes: 11 additions & 2 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: coverage

on:
Expand All @@ -7,10 +10,16 @@ jobs:
coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Detect minimum PHP from composer.json
id: php_min
run: |
php_version=$(grep -Po '"php"\s*:\s*"\K[^"]+' composer.json | grep -Eo '[0-9]+\.[0-9]+' | head -n1)
[[ -n "$php_version" ]] || { echo "Could not determine minimum PHP version"; exit 1; }
echo "version=$php_version" >> "$GITHUB_OUTPUT"
- uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
php-version: ${{ steps.php_min.outputs.version }}
coverage: xdebug
- run: composer install --no-interaction --prefer-dist
- run: composer bin phpunit install --no-interaction --prefer-dist
Expand Down
31 changes: 28 additions & 3 deletions .github/workflows/dco.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: dco

on:
Expand All @@ -7,7 +10,29 @@ jobs:
dco:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: tim-actions/dco@v1
- uses: actions/checkout@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
- name: Validate DCO sign-off in commits
run: |
set -euo pipefail
RANGE="${{ github.event.pull_request.base.sha }}..${{ github.sha }}"

invalid=0
while IFS= read -r sha; do
[[ -z "$sha" ]] && continue

parent_count=$(git rev-list --parents -n1 "$sha" | wc -w)
if [[ "$parent_count" -gt 2 ]]; then
continue
fi

if ! git log -1 --format=%B "$sha" | grep -qi '^Signed-off-by:'; then
echo "Missing Signed-off-by in commit $sha"
invalid=1
fi
done < <(git rev-list "$RANGE")

if [[ $invalid -ne 0 ]]; then
exit 1
fi
5 changes: 4 additions & 1 deletion .github/workflows/dependabot-auto-triage.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: dependabot-auto-triage

on:
Expand All @@ -9,7 +12,7 @@ jobs:
if: github.actor == 'dependabot[bot]'
runs-on: ubuntu-latest
steps:
- uses: dependabot/fetch-metadata@v2
- uses: dependabot/fetch-metadata@v3
id: metadata
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
Expand Down
7 changes: 5 additions & 2 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: docker

on:
Expand All @@ -7,8 +10,8 @@ jobs:
docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Lint Dockerfile
run: docker run --rm -i hadolint/hadolint < .docker/Dockerfile
run: docker run --rm -i hadolint/hadolint hadolint --failure-threshold error - < .docker/Dockerfile
- name: Validate compose
run: docker compose config > /dev/null
13 changes: 11 additions & 2 deletions .github/workflows/duplication.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: duplication

on:
Expand All @@ -10,10 +13,16 @@ jobs:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Detect minimum PHP from composer.json
id: php_min
run: |
php_version=$(grep -Po '"php"\s*:\s*"\K[^"]+' composer.json | grep -Eo '[0-9]+\.[0-9]+' | head -n1)
[[ -n "$php_version" ]] || { echo "Could not determine minimum PHP version"; exit 1; }
echo "version=$php_version" >> "$GITHUB_OUTPUT"
- uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
php-version: ${{ steps.php_min.outputs.version }}
- run: composer install --no-interaction --prefer-dist
- run: composer bin phpcpd install --no-interaction --prefer-dist
- run: composer run duplication:check
7 changes: 5 additions & 2 deletions .github/workflows/github-meta.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# SPDX-FileCopyrightText: 2026 LibreSign
# SPDX-License-Identifier: AGPL-3.0-or-later

name: github-meta

on:
Expand All @@ -7,8 +10,8 @@ jobs:
github-meta:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: rhysd/actionlint@v1.7.1
- uses: actions/checkout@v6
- uses: rhysd/actionlint@v1.7.12
- name: Validate issue templates exist
run: |
test -f .github/ISSUE_TEMPLATE/bug_report.yml
Expand Down
Loading