Skip to content

7.14.8 - #16

Merged
jwaisner merged 6 commits into
mainfrom
7.14.8
Aug 29, 2026
Merged

7.14.8#16
jwaisner merged 6 commits into
mainfrom
7.14.8

Conversation

@N6REJ

@N6REJ N6REJ commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

No description provided.

N6REJ added 3 commits June 2, 2026 22:40
- Add configuration file for phpPgAdmin 7.14.8 with PostgreSQL connection settings
- Add bearsampp.conf for version 7.14.8 module configuration
- Update bundle release version from 2024.4.14 to 2026.8.28
- Fix documentation typo: phpPgAdmin.properties → phppgadmin.properties
@N6REJ
N6REJ requested a review from jwaisner August 28, 2026 10:35
@N6REJ N6REJ added the enhancement ✨ Improve program label Aug 28, 2026
Auto-generated from release 2026.8.28
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Add phpPgAdmin 7.14.8 bundle and Gradle release pipeline

✨ Enhancement ⚙️ Configuration changes 📝 Documentation 🕐 20-40 Minutes

Grey Divider

AI Description

• Add phpPgAdmin 7.14.8 module metadata and PostgreSQL connection defaults.
• Automate source resolution, packaging, checksums, validation, and multi-version releases with
 Gradle.
• Set release 2026.8.28 and correct the remote properties filename documentation.
Diagram

graph TD
  R["Release Task"] --> V["Version Discovery"] --> U["URL Resolver"] --> D["Download Extract"] --> C["Version Config"] --> P["7-Zip Package"]
  M["Remote Properties"] --> U
  G["GitHub Releases"] --> U
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Typed Gradle task classes
  • ➕ Improves task inputs, outputs, and incremental build behavior
  • ➕ Makes release stages independently testable and reusable
  • ➖ Adds buildSrc or plugin structure for a single-module repository
  • ➖ Requires a larger migration than the self-contained script
2. Use download and checksum plugins
  • ➕ Replaces custom networking and hashing code with maintained implementations
  • ➕ Can provide stronger caching and task integration
  • ➖ Introduces external build dependencies
  • ➖ May conflict with the repository's pure, self-contained Gradle approach

Recommendation: Keep the self-contained Gradle approach for this module release, since it avoids new dependencies and matches the repository's documented build model. As the pipeline grows, extract download, staging, archive, and checksum stages into typed tasks and centralize semantic version comparison to improve testability and consistency.

Files changed (5) +1110 / -2

Enhancement (1) +922 / -0
build.gradleImplement the Gradle release and packaging workflow +922/-0

Implement the Gradle release and packaging workflow

• Adds source URL resolution with remote and local fallbacks, archive download and extraction, version discovery and listing, interactive and bulk release tasks, 7-Zip packaging, checksum generation, cleanup, and environment validation. Remote module versions are displayed using component-aware semantic ordering.

build.gradle

Documentation (1) +1 / -1
README.mdCorrect the modules-untouched properties filename +1/-1

Correct the modules-untouched properties filename

• Changes the documented remote registry name from 'phpPgAdmin.properties' to the actual lowercase 'phppgadmin.properties' path used by the build.

.gradle-docs/README.md

Other (3) +187 / -1
bearsampp.confRegister phpPgAdmin 7.14.8 bundle metadata +4/-0

Register phpPgAdmin 7.14.8 bundle metadata

• Adds the module version, configuration path, and release-token metadata required to package phpPgAdmin 7.14.8.

bin/phppgadmin7.14.8/bearsampp.conf

config.inc.phpAdd phpPgAdmin 7.14.8 PostgreSQL configuration +182/-0

Add phpPgAdmin 7.14.8 PostgreSQL configuration

• Adds the runtime configuration for a local PostgreSQL server on port 5432, including dump paths, authentication behavior, interface defaults, and plugin settings.

bin/phppgadmin7.14.8/conf/config.inc.php

build.propertiesAdvance the bundle release date +1/-1

Advance the bundle release date

• Updates the package release identifier from '2024.4.14' to '2026.8.28', controlling output paths and archive names.

build.properties

@qodo-code-review

qodo-code-review Bot commented Aug 28, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Action required

1. Fallback mislabels source version ✓ Resolved 🐞 Bug ≡ Correctness
Description
When neither properties source contains the requested version, resolveDownloadUrl discards that
version and returns the current latest release or master. The build then packages those unverified
contents under the requested version, so a missing mapping or transient API failure can silently
produce a mislabeled release.
Code

build.gradle[R118-119]

+    // Fallback to phpPgAdmin GitHub latest release source archive
+    return resolveGitHubSourceUrl()
Evidence
The local fallback file has no 7.14.8 entry even though 7.14.8 is a selectable bundle. After both
lookups miss, the resolver uses moving latest/master URLs, and extraction performs no version check
before packaging with the requested bundle version.

releases.properties[1-3]
bin/phppgadmin7.14.8/bearsampp.conf[1-1]
build.gradle[101-139]
build.gradle[190-206]
build.gradle[418-420]
build.gradle[454-456]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The final fallback ignores the requested version and can package latest/master source under a different version label.

## Issue Context
Every successful resolution must identify an archive for the requested version. If no exact mapping or exact version tag exists, fail the build rather than substituting moving source.

## Fix Focus Areas
- build.gradle[101-139]
- build.gradle[142-147]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. releaseAll ignores loop version ✓ Resolved 🐞 Bug ≡ Correctness
Description
release captures bundleVersion during configuration, but releaseAll sets
project.ext.bundleVersion only during execution and then invokes the already-captured action. Each
iteration therefore enters the interactive prompt instead of building its loop version, causing
noninteractive runs to fail or interactive runs to build manually selected versions.
Code

build.gradle[R653-654]

+                project.ext.bundleVersion = version
+                tasks.getByName('release').actions.each { action ->
Evidence
The release task stores findProperty('bundleVersion') at configuration time and initializes
versionToBuild from that fixed value. The later assignment in releaseAll cannot change it; a
null value enters stdin prompting and fails when no input is available.

build.gradle[295-303]
build.gradle[333-353]
build.gradle[646-656]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`releaseAll` mutates a project property after `release` has already captured it, so the release action never receives the loop version.

## Issue Context
Extract the per-version build implementation into a method or worker task that accepts the version explicitly. Have both `release` and `releaseAll` call that implementation rather than manually executing another task's actions.

## Fix Focus Areas
- build.gradle[295-299]
- build.gradle[646-656]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

3. Partial downloads poison cache ✓ Resolved 🐞 Bug ☼ Reliability
Description
The downloader writes directly to the final cache file, while subsequent builds treat file existence
alone as proof of a complete download. If the network read fails after creating the file, later
builds permanently reuse the truncated archive and fail extraction until the cache is manually
removed.
Code

build.gradle[R158-160]

+        downloadFile.withOutputStream { out ->
+            connection.inputStream.withCloseable { input ->
+                out << input
Evidence
The final cache path is opened for output before the network stream is fully consumed, with no
cleanup on exceptions. The only reuse condition is downloadFile.exists(), after which the cached
file is sent directly to 7-Zip.

build.gradle[146-165]
build.gradle[181-187]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
An interrupted transfer leaves a partial file at the final cache path, and later builds reuse it based only on existence.

## Issue Context
Download to a temporary file, validate successful completion, and atomically rename it to the cache path. Delete the temporary file on all failures; optionally validate cached files before reuse.

## Fix Focus Areas
- build.gradle[146-165]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context sources
Review mode: ⚖️ Balanced

Grey Divider

Tip of the day
💡 Did you know, you can group findings by type and pick your Finding display, from Minimal to Full

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread build.gradle Outdated
Comment thread build.gradle Outdated
Comment thread build.gradle Outdated
@jwaisner
jwaisner merged commit f2371eb into main Aug 29, 2026
5 checks passed
@jwaisner
jwaisner deleted the 7.14.8 branch August 29, 2026 02:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement ✨ Improve program

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants