Skip to content

chore(deps): update phpstan/phpstan requirement from ^1.10 to ^1.10 || ^2.0 - #2

Closed
dependabot[bot] wants to merge 33 commits into
mainfrom
dependabot/composer/phpstan/phpstan-tw-1.10or-tw-2.0
Closed

chore(deps): update phpstan/phpstan requirement from ^1.10 to ^1.10 || ^2.0#2
dependabot[bot] wants to merge 33 commits into
mainfrom
dependabot/composer/phpstan/phpstan-tw-1.10or-tw-2.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Mar 31, 2026

Copy link
Copy Markdown

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

geekmuse added 30 commits March 29, 2026 01:19
Covers prerequisites, getting started, dev workflow (branch, change,
test, lint, commit, push), project structure, testing strategy,
code quality tools, git hooks setup, CI recommendations, release
checklist, and common troubleshooting.
Defines front-matter schema, directory purposes, numbered filename
convention, writing style guide by audience, document type templates
(spec, ADR, task, research), and a creation checklist.
Human-facing overview covering features, installation (plugin
directory naming caveat), usage walkthrough, documentation index,
development quickstart, contributing guide, and versioning notes.
Covers repository structure, conventional commit types and project-
specific scopes, branching strategy, code style, documentation rules,
versioning, task decomposition guidance, key pitfalls (SQL injection,
plugin dir naming, hardcoded timezone), and current work items.
PHP/PSR-12 style rules, import conventions, PHPUnit testing patterns,
conventional commit examples for this project, file creation
conventions, patterns to follow (extend Base, use lifecycle methods),
anti-patterns to avoid (raw SQL interpolation, bypassing conditions),
and common task recipes.
Keep a Changelog format with v0.1.0 initial entry (Plugin.php and
action implementation) and [Unreleased] scaffold for bootstrap
artifacts.
Configures ralphi check commands (lint, phpcs, phpstan, test via
docker-*.sh scripts), coding rules derived from the gap analysis,
and a standing rule to override the kanboard/kanboard Docker image
entrypoint — the default starts Apache and runs forever.
Adds scripts/docker-{lint,phpcs,phpstan,test}.sh. Each mounts the
plugin directory into kanboard/kanboard with --entrypoint /bin/sh to
run one-off commands without starting the web server. Require
vendor/ (composer install) except docker-lint.sh.
16 gaps identified across critical/high/medium/low severity:

Critical (GAP-01..03): SQL injection via raw string interpolation,
weekend due dates silently writing null color_id, and complete i18n
failure in non-English installations due to translated param keys
stored in DB but English day names used in lookup.

High (GAP-04..05): bypasses Kanboard's getParam() API by re-querying
action_has_params directly (returns all instances, not current one);
no day-of-week guard in hasRequiredCondition() allowing doAction()
to run against unconfigured days.

Medium (GAP-06..11): hardcoded America/New_York timezone, no Sat/Sun
support, mixed tabs/spaces, no PHPDoc, phantom ColorModel import,
loose == comparison.

Low (GAP-12..16): date_due semantics undocumented, no tests, no CI,
no LICENSE file, homepage points to personal site.

15 concrete tasks (T-01..T-15) with dependency graph and acceptance
criteria. Verified against Kanboard source via kanboard/kanboard
Docker image (entrypoint overridden: --entrypoint /bin/sh).
Converts docs/tasks/001-gap-analysis.md into 11 user stories for the
ralph autonomous loop (branch: ralph/gap-analysis-remediation).

Critical path: US-001 (getParam API) → US-002 (i18n keys) → US-003
(weekend guard) → US-004/005 (Sat/Sun + timezone). Quality pass
US-006..008 sequenced after core fixes stabilise. Infrastructure
US-009..011 (LICENSE, tests, CI) close out the backlog.
- hasRequiredCondition() now resolves the day of week from date_due
  timestamp and returns false when getParam($day) is null or empty
- Weekends (Saturday/Sunday) have no configured parameter so getParam()
  returns null — condition returns false, doAction() is never called,
  task color is left unchanged
- doAction() is now fully unconditional: it trusts the condition guards
  every failure path (closes GAP-02, GAP-05)
- Updated CHANGELOG.md under [Unreleased]
…son fixes

- Remove phantom 'use Kanboard\Model\ColorModel' import (GAP-10):
  colorModel is resolved via DI container __get, not this use statement;
  add @Property \Kanboard\Model\ColorModel $colorModel annotation to
  class PHPDoc for static-analysis visibility instead
- Add class-level PHPDoc block to AssignColorsByDayOfWeek
- Change loose == to strict === in hasRequiredCondition() color_id check (GAP-11)
- All PHP files confirmed tab-free and PSR-12 compliant (GAP-08)
- cytopia/phpcs: 0 violations; lint: clean
- AGENTS.md: mark all US-001..US-011 work items complete
- docs/002-development-guide.md: update project structure tree (tests/,
  scripts/, .gitea/, composer.json, phpunit.xml.dist, phpstan.neon,
  LICENSE, .gitignore); update tool table and lint/test commands to
  reference docker-*.sh scripts; remove 'if composer.json is added'
  caveat from getting started; switch PHPUnit version to 11
- docs/tasks/001-gap-analysis.md: status deprecated → all 15 tasks
  delivered in v0.2.0; add deprecation notice at top of file
Full gap-analysis remediation: SQL injection fixes, i18n key strategy
(breaking), weekend crash fix, Sat/Sun support, configurable timezone,
PSR-12 cleanup, PHPDoc, tests (6/8), CI pipeline, LICENSE.
Add two GitHub Actions workflows as corollaries to the existing
.gitea/workflows/ci.yml pipeline:

- .github/workflows/ci.yml: direct port of the Gitea CI — same 5-stage
  pipeline (lint, composer install, phpcs, phpstan, phpunit) using the
  same docker-based scripts. Triggers on push/PR to main.

- .github/workflows/release.yml: creates a GitHub Release when a semver
  tag (v*.*.* ) is pushed. Builds a distributable plugin ZIP with the
  required root directory name AssignColorsByDayOfWeek (Kanboard plugin
  installer convention). vendor/ is intentionally excluded — this plugin
  has no production Composer dependencies. Uses gh CLI with
  --generate-notes for auto-generated release notes.
geekmuse and others added 3 commits March 30, 2026 21:42
Extend the release trigger to match tags with a prerelease suffix
(e.g. v0.2.1-rc.1). Detect the prerelease flag at runtime and pass
--prerelease to gh release create so GitHub marks the release correctly.
Supply-chain (H3):
- Pin actions/checkout to SHA 34e11487 (v4.3.1) in all three workflows
- Pin github/codeql-action/init and /analyze to SHA 5c8a8a64 (v3.35.1)

Dependency scanning (H2):
- Add .github/dependabot.yml — weekly updates for github-actions and
  composer ecosystems; will open PRs to bump pinned SHAs automatically

CodeQL SAST (M4):
- Add .github/workflows/codeql.yml — PHP analysis with security-extended
  query suite on push/PR to main and weekly schedule

Release gate (M1):
- Add 'release' environment to release.yml job; environment configured
  with required reviewer (geekmuse) via GitHub API so every tag-triggered
  release requires manual approval before the job runs

Security policy (M3):
- Add SECURITY.md with supported versions, private disclosure email,
  and response SLA
---
updated-dependencies:
- dependency-name: phpstan/phpstan
  dependency-version: 2.1.45
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file php Pull requests that update php code labels Mar 31, 2026
@geekmuse

geekmuse commented Apr 2, 2026

Copy link
Copy Markdown
Owner

Resolved in commit c47b251 on main — phpstan/phpstan requirement widened to ^1.10 || ^2.0.

@geekmuse geekmuse closed this Apr 2, 2026
@dependabot @github

dependabot Bot commented on behalf of github Apr 2, 2026

Copy link
Copy Markdown
Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot
dependabot Bot deleted the dependabot/composer/phpstan/phpstan-tw-1.10or-tw-2.0 branch April 2, 2026 03:22
geekmuse added a commit that referenced this pull request Apr 2, 2026
Allow PHPStan 2.x alongside 1.x to stay current with upstream releases.

Closes #2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file php Pull requests that update php code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant