Commit Graph
8592 Commits
Author SHA1 Message Date
Dave Page a4bdcff7dc Add pgEdge Starfleet to the cloud deployment wizard. (#10499)
* Add a pgEdge Starfleet API client for cloud deployment.

* Add a pgacloud provider for pgEdge Starfleet.

* Add the pgEdge Starfleet cloud deployment blueprint.

* Return the generated pgEdge Starfleet password once on deployment and allow saving it.

* Add pgEdge Starfleet to the Deploy Cloud Instance wizard.

* Test the Starfleet password is fetched once and validate the save request body.

* Show the generated pgEdge Starfleet password once after deployment.

* Document pgEdge Starfleet cloud deployment.

* Show the Starfleet password dialog at most once per job and handle copy failures.

* Wait for the Starfleet instance schema before rendering its form.

The schema is built after an asynchronous client IP lookup, but SchemaView
takes its initial data from the first schema it receives, so mounting it
early left the deployment type unset and hid the managed-only fields.

* Keep the Starfleet token for each deployment job until it completes.

The wizard clears its cloud session as soon as the deployment starts, so
the token was gone by the time the job finished and the generated
password could never be fetched. Copy the token for the job when it is
started, read the password with that copy, and discard it on completion.

* Show the reason a cloud deployment failed.

pgacloud prints the provider's error as JSON before it exits, but the
failure path ignored it, so the user saw only a generic process failure
whilst the server quietly vanished from the tree. Pass the message
through update_server and show it once per job as a plain-text error.

* Keep the cloud deployment failure message until it is dismissed.

* Explain an empty Starfleet BYOC cluster list.

* Wait for Starfleet connection details before finishing a deployment.

* Handle malformed Starfleet responses without a server error.

* Clear the Starfleet PostgreSQL version when the deployment type changes.

* Show the Starfleet size label in the deployment summary.

* Stop logging the values of a background process's environment.

* Use the official pgEdge logo for the Starfleet provider.

* Only mount the selected provider's credentials form in the cloud wizard.

* Require HTTPS and handle malformed pgEdge Starfleet responses.

Addresses CodeRabbit review on #10499: the API client refuses a non-HTTPS
URL before sending credentials, a 2xx body that is not JSON or lacks an
access token raises StarfleetError, and the provider and credential check
report an unexpected response shape instead of failing with a traceback.

* Reject an empty or non-string pgEdge Starfleet access token.

* Note that the pgEdge Starfleet API URL must use HTTPS.

* Add screenshots to the pgEdge Starfleet deployment documentation.

* Update the cloud provider screenshot to include pgEdge Starfleet.

* Remove pgEdge Starfleet BYOC support from the cloud deployment wizard.

Only Managed databases are now offered, so the Deployment type selector,
the cluster list, the BYOC PostgreSQL version list and the BYOC capability
probe are gone, along with the --kind and --cluster-id options of
pgacloud's starfleet create-instance command.

* Regenerate the Starfleet instance and review screenshots without the deployment type.

* Retry transient pgEdge Starfleet polling errors and write job tokens through.

A network error, rate limit or server error whilst waiting for a new
database no longer ends the deployment, leaving the database running in
Starfleet but removed from pgAdmin; polling now retries until its
deadline, failing at once only on other client errors.

The job's copy of the access token is now written to the session store
immediately, so a status poll handled by another worker can still fetch
the generated password.

* Write the pgEdge Starfleet wizard token through, and warn that a failed deployment may leave the database behind.
2026-10-12 14:28:49 +01:00
dependabot[bot] d082e8db27 Javascript dependency: Bump postcss-selector-parser in /web (#10523)
Bumps [postcss-selector-parser](https://github.com/postcss/postcss-selector-parser) from 7.1.5 to 7.1.6.
- [Release notes](https://github.com/postcss/postcss-selector-parser/releases)
- [Changelog](https://github.com/postcss/postcss-selector-parser/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss-selector-parser/compare/7.1.5...7.1.6)

---
updated-dependencies:
- dependency-name: postcss-selector-parser
  dependency-version: 7.1.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-12 09:17:48 +01:00
dependabot[bot] a3ec78d30c Javascript dependency: Bump source-map-js from 1.2.1 to 1.2.2 in /web (#10522)
Bumps [source-map-js](https://github.com/7rulnik/source-map-js) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/7rulnik/source-map-js/releases)
- [Changelog](https://github.com/7rulnik/source-map-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/7rulnik/source-map-js/compare/v1.2.1...v1.2.2)

---
updated-dependencies:
- dependency-name: source-map-js
  dependency-version: 1.2.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-12 09:17:22 +01:00
dependabot[bot] 2b7a331896 Javascript dependency: Bump handlebars from 4.7.9 to 4.7.10 in /web (#10525)
Bumps [handlebars](https://github.com/handlebars-lang/handlebars.js) from 4.7.9 to 4.7.10.
- [Release notes](https://github.com/handlebars-lang/handlebars.js/releases)
- [Changelog](https://github.com/handlebars-lang/handlebars.js/blob/v4.7.10/release-notes.md)
- [Commits](https://github.com/handlebars-lang/handlebars.js/compare/v4.7.9...v4.7.10)

---
updated-dependencies:
- dependency-name: handlebars
  dependency-version: 4.7.10
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-12 09:16:57 +01:00
Dave Page 79d138867a Require Flask-Security-Too 5.8.3 or later for the open redirect fix. (#10524)
5.8.3 fixes an open redirect in Flask-Security's default configuration
(GHSA-ccgp-pv8r-95wm). The fix is also in 5.9.1, but 5.9 needs Python
3.11 or later and removes get_post_login_redirect(), which pgAdmin
imports, so raise the lower bound within the 5.8 series instead.
2026-10-09 21:43:55 -04:00
dependabot[bot] 9712467844 Javascript dependency: Bump @mui/x-date-pickers in /web (#10519)
Bumps [@mui/x-date-pickers](https://github.com/mui/mui-x/tree/HEAD/packages/x-date-pickers) from 8.29.3 to 9.15.0.
- [Release notes](https://github.com/mui/mui-x/releases)
- [Changelog](https://github.com/mui/mui-x/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mui/mui-x/commits/v9.15.0/packages/x-date-pickers)

---
updated-dependencies:
- dependency-name: "@mui/x-date-pickers"
  dependency-version: 9.15.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-09 19:23:16 -04:00
dependabot[bot] 347312d8f7 Python dependency: Bump the regression-python-minor-and-patch group (#10513)
Bumps the regression-python-minor-and-patch group in /web/regression with 3 updates: [azure-identity](https://github.com/Azure/azure-sdk-for-python), [google-auth-oauthlib](https://github.com/googleapis/google-cloud-python) and [selenium](https://github.com/SeleniumHQ/Selenium).


Updates `azure-identity` from 1.25.3 to 1.26.0
- [Release notes](https://github.com/Azure/azure-sdk-for-python/releases)
- [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.25.3...azure-identity_1.26.0)

Updates `google-auth-oauthlib` from 1.4.1 to 1.5.0
- [Release notes](https://github.com/googleapis/google-cloud-python/releases)
- [Changelog](https://github.com/googleapis/google-cloud-python/blob/main/packages/gcp-sphinx-docfx-yaml/CHANGELOG.md)
- [Commits](https://github.com/googleapis/google-cloud-python/compare/google-auth-oauthlib-v1.4.1...google-auth-oauthlib-v1.5.0)

Updates `selenium` from 4.49.0 to 4.50.0
- [Release notes](https://github.com/SeleniumHQ/Selenium/releases)
- [Commits](https://github.com/SeleniumHQ/Selenium/compare/selenium-4.49.0...selenium-4.50.0)

---
updated-dependencies:
- dependency-name: azure-identity
  dependency-version: 1.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: regression-python-minor-and-patch
- dependency-name: google-auth-oauthlib
  dependency-version: 1.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: regression-python-minor-and-patch
- dependency-name: selenium
  dependency-version: 4.50.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: regression-python-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-09 19:16:15 -04:00
dependabot[bot] 5065de5ac3 Javascript dependency: Bump the runtime-javascript-minor-and-patch group (#10512)
Bumps the runtime-javascript-minor-and-patch group in /runtime with 3 updates: [electron](https://github.com/electron/electron), [eslint](https://github.com/eslint/eslint) and [globals](https://github.com/sindresorhus/globals).


Updates `electron` from 44.4.5 to 44.5.1
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v44.4.5...v44.5.1)

Updates `eslint` from 10.11.0 to 10.12.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.11.0...v10.12.0)

Updates `globals` from 17.12.0 to 17.13.0
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.12.0...v17.13.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 44.5.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: runtime-javascript-minor-and-patch
- dependency-name: eslint
  dependency-version: 10.12.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: runtime-javascript-minor-and-patch
- dependency-name: globals
  dependency-version: 17.13.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: runtime-javascript-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-09 19:15:36 -04:00
Dave Page a5aa42843c Fix invalid SQL from Maintenance dialog REINDEX ... CONCURRENTLY. #10251 (#10314) 2026-10-09 18:51:04 -04:00
Dave Page ecb6446c31 Remove unused JavaScript and Python dependencies, and correct the dependency groups. (#10500) 2026-10-02 17:41:15 +01:00
dependabot[bot] ca21e94436 Javascript dependency: Bump webpack-cli from 6.0.1 to 7.2.3 in /web (#10495)
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 6.0.1 to 7.2.3.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@6.0.1...webpack-cli@7.2.3)

---
updated-dependencies:
- dependency-name: webpack-cli
  dependency-version: 7.2.3
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 16:20:48 +01:00
dependabot[bot] a3ffb577ae Javascript dependency: Bump react-dropzone from 15.0.0 to 20.1.2 in /web (#10494)
Bumps [react-dropzone](https://github.com/react-dropzone/react-dropzone) from 15.0.0 to 20.1.2.
- [Release notes](https://github.com/react-dropzone/react-dropzone/releases)
- [Commits](https://github.com/react-dropzone/react-dropzone/compare/v15.0.0...v20.1.2)

---
updated-dependencies:
- dependency-name: react-dropzone
  dependency-version: 20.1.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 16:20:08 +01:00
dependabot[bot] c711abe98e Javascript dependency: Bump the web-javascript-minor-and-patch group (#10493)
Bumps the web-javascript-minor-and-patch group in /web with 3 updates: [ip-address](https://github.com/beaugunderson/ip-address), [postcss](https://github.com/postcss/postcss) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).


Updates `ip-address` from 10.5.0 to 10.7.2
- [Release notes](https://github.com/beaugunderson/ip-address/releases)
- [Commits](https://github.com/beaugunderson/ip-address/compare/v10.5.0...v10.7.2)

Updates `postcss` from 8.5.26 to 8.5.28
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.26...8.5.28)

Updates `typescript-eslint` from 8.70.1 to 8.71.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.71.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: ip-address
  dependency-version: 10.7.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: web-javascript-minor-and-patch
- dependency-name: postcss
  dependency-version: 8.5.28
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: web-javascript-minor-and-patch
- dependency-name: typescript-eslint
  dependency-version: 8.71.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: web-javascript-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 16:19:17 +01:00
dependabot[bot] b8dcd80ae1 Python dependency: Update pycodestyle requirement in /web/regression (#10492)
Updates the requirements on [pycodestyle](https://github.com/PyCQA/pycodestyle) to permit the latest version.
- [Release notes](https://github.com/PyCQA/pycodestyle/releases)
- [Changelog](https://github.com/PyCQA/pycodestyle/blob/main/CHANGES.txt)
- [Commits](https://github.com/PyCQA/pycodestyle/compare/2.14.0...2.15.0)

---
updated-dependencies:
- dependency-name: pycodestyle
  dependency-version: 2.15.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 16:19:12 +01:00
dependabot[bot] 0360a223a4 Javascript dependency: Bump electron (#10489)
Bumps the runtime-javascript-minor-and-patch group in /runtime with 1 update: [electron](https://github.com/electron/electron).


Updates `electron` from 44.4.3 to 44.4.5
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v44.4.3...v44.4.5)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 44.4.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: runtime-javascript-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-02 16:19:06 +01:00
Dave Page 53ccc753e3 Align the cloud provider icons and labels in the deployment wizard. (#10498) 2026-10-02 16:03:13 +01:00
Murtuza ZabuawalaandDave Page 9f9bb553c4 Add a Statistics node for managing extended statistics. #2018 (#10310)
Adds browser support for PostgreSQL 14+ extended statistics objects
(CREATE STATISTICS), with the create/edit dialog, reverse engineered SQL,
the computed values ANALYZE collected where the role may see them, and
schema diff support. Completes Murtuza Zabuawala's #9748.

Co-authored-by: Dave Page <dpage@pgadmin.org>
2026-10-02 11:23:44 +01:00
Bea SteersandDave Page a807c99daf Allow an OAuth2 claim to restrict which shared servers a user can see. #9704 (#10234)
Adds OAUTH2_SERVER_GROUP_CLAIM and OAUTH2_SERVER_GROUP_CLAIM_MAPPING. When
the claim is configured for a provider, shared servers owned by other users
are only visible and accessible if their server group's name appears in the
(optionally mapped) claim values; if the claim is missing, none are. The
user's own servers, and users of other authentication methods, are
unaffected. The claim is resolved at login and only stored once the login
has been authorised.

Co-authored-by: Dave Page <dpage@pgadmin.org>
2026-10-02 09:26:27 +01:00
Rohit BhatiandDave Page 86f164d60c Fixed View/Edit Data not handling generated columns properly. #9672 (#9761)
Co-authored-by: Dave Page <dpage@pgadmin.org>
2026-10-02 09:06:51 +01:00
dependabot[bot] dee788c581 Javascript dependency: Bump devalue from 5.9.2 to 5.9.4 in /web (#10488) 2026-10-02 09:00:46 +01:00
dev-hari-prasadandDave Page 7d3a170b9e Fix Kerberos login failures returning a 500 JSON response, and first-time auto-created Kerberos logins being rejected. #10419 (#10455)
When SPNEGO negotiation failed, the exception object was passed to flash(), so the session could not be serialised and the login page was replaced by a 500 JSON response. A generic message is now flashed; the detail is already logged.

Also fix a redirect to a non-existent 'authenticate.kerberos_login' endpoint (it is 'kerberos.login'), which had caused every Kerberos mock test to skip unconditionally, and return the username from Kerberos auto-creation so a user's first login is not rejected with "Incorrect username or password".

Co-authored-by: Dave Page <dpage@pgadmin.org>
2026-10-01 17:01:38 +01:00
Kundan Sable 467a200ca4 Fix 'Cannot have two HTML5 backends at the same time' in DataGridView. #10485 (#10487)
Share one explicit react-dnd manager between DataGridView and PgTreeView. react-arborist bundles react-dnd 14, which stores its manager under the same global key as react-dnd 16 but keeps a separate reference count, so unmounting one provider could drop the manager while its HTML5 backend was still attached to window.
2026-10-01 16:53:57 +01:00
dependabot[bot] cf2c096c4f Update @tanstack/react-table to 9.2.4 and migrate to the v9 API. (#10338)
Moves table construction to useTable() with a shared tableFeatures() registry (filtering, sorting, selection, expanding, sizing/resizing, visibility, row models, sort and filter functions), renames sortingFn to sortFn, adapts to v9 state access, prototype-bound row/cell methods and getRowCanExpand, feeds the DataGridView search state through table state instead of setOptions(), and lets Jest transform the ESM-only @tanstack packages.
2026-10-01 16:42:32 +01:00
dependabot[bot] e64b766ca3 Javascript dependency: Bump brace-expansion from 5.0.9 to 5.0.12 in /runtime (#10480)
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 5.0.9 to 5.0.12.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v5.0.9...v5.0.12)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 5.0.12
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-01 14:37:47 +01:00
dependabot[bot] cd82c8e4ec Javascript dependency: Bump the web-javascript-minor-and-patch group across 1 directory with 30 updates (#10486)
Also points the react-checkbox-tree webpack alias at lib/index.js, the 2.1 ESM build, as lib/index.esm.js is a stale 2.0.2 build that leaves the app blank.
2026-10-01 14:33:42 +01:00
Dave Page 25aec55eb2 Parse react-frame-component as CommonJS so 5.3 bundles correctly (#10467)
* Parse react-frame-component as CommonJS so 5.3 bundles correctly

react-frame-component 5.3 added "type": "module" to its package.json
whilst mapping the "require" condition of its exports to a UMD build.
Babel compiles our imports to require(), so webpack resolves the UMD
file and, honouring the package type, parses it as an ES module. With no
exports object in scope, the UMD wrapper falls through to its browser
global branch and the module exports nothing, so <Frame> is undefined.
Opening the Query Tool then throws React error #130 and unmounts the
whole app, which is why every feature test timed out with the 5.3.2
bump in #10460. Node shows the same packaging fault: require() of the
package returns an empty object.

Tell webpack to parse the package as javascript/auto so the UMD takes
its CommonJS branch. Jest is unaffected, as it loads the UMD as CommonJS.

* Bump react-frame-component to 5.3.2.

Take the version the webpack rule exists for in the same change, so CI
exercises the rule against it.
2026-10-01 11:41:47 +01:00
Matt Van Horn c83e0750c4 Explain Docker Compose quoting for PGADMIN_CONFIG_* values in the container docs. #10364 (#10465)
YAML consumes the quotes around a Compose scalar, so a value such as
PGADMIN_CONFIG_MAIL_SERVER: "mail.example.com" reaches config_distro.py
as a bare name and fails with NameError at startup. Document the nested
quoting needed in map syntax and env_file, how the list form differs,
escaping $ as $$, when config_distro.py is regenerated, and add a Compose
example.
2026-10-01 10:10:03 +01:00
Regina Obe 19a41432ac Add support for pg_timetable chains and tasks. #10148 (#10152)
Adds a pgTimeTable Chains node under Servers when pg_timetable is
installed in the maintenance database, with Tasks beneath each chain.
Chains and tasks can be created, edited and deleted, a chain can be
triggered with Run Now, and both have statistics tabs. Includes
regression tests, CI installation of pg_timetable, and documentation.
2026-09-30 17:28:49 +01:00
Guiorgy 7314f5069b Rewrite the container entrypoint using bash features, and pass values to embedded Python safely (#9510)
Reformat pkg/docker/entrypoint.sh to use bash conditionals, arithmetic and
parameter expansion instead of the workarounds needed for BusyBox ash.

The email validation settings and PGADMIN_DEFAULT_EMAIL are now read from
the environment inside Python rather than interpolated into the Python
source, so an address containing an apostrophe works, and a Python error
during validation stops the container instead of passing silently.
2026-09-30 15:58:59 +01:00
耗子andClaude Opus 5.5 5f58828e49 Fix mistranslations in the Chinese (Simplified) translation (#10454)
Correct 162 entries in the zh_Hans_CN catalogue: strings that are wrong
rather than merely worded differently, plus terminology aligned with
the Chinese PostgreSQL documentation.

- Restore the order of positional %s placeholders in three strings.
  The JavaScript gettext fills %s strictly left to right, so the
  reordered translations garbled the update notice, the preference
  load error and the user password length error.
- Keep the half-width colons in ': error: ', which ProcessDetails.jsx
  matches with a regex to highlight error lines, and the SQL comment
  marker in '-- missing definition'.
- Fix strings whose meaning was wrong or reversed, e.g. the ERD drag
  and drop message, relhassubclass, RESTART IDENTITY, ENABLE REPLICA,
  COLLATABLE, CREATE TABLE ... LIKE, and the DBMS Scheduler
  "Schedule" object being called a task.
- Give distinct labels to adjacent fields that shared one, and remove
  leftovers such as "表(s)", "会话token" and an untranslated
  "date/time".
- Use the established Chinese terms where the translation picked the
  wrong sense, e.g. Dependents (previously given the word for
  dependencies), local variables and the package body.
- Follow the terminology of the Chinese PostgreSQL documentation:
  注释 (comment), 字符分类 (LC_CTYPE), 操作符 (operator), 聚簇
  (CLUSTER), 提供者 (provider), 流复制 (streaming replication),
  预备事务 (prepared transaction), 载荷 (NOTIFY payload) and 过滤
  (filter).
- Translate Tab as 标签页 throughout, and the month-day options
  1st-31st as 1 日-31 日.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:24:11 +01:00
Ian 9d63ea91e2 Preserve database errors from index metadata queries (#10476)
When an index metadata query failed, the Properties and SQL handlers
could replace the original database error with 'string indices must be
integers', or with an error about using a Response as index metadata.
get_column_details() read rset['rows'] before checking the query status,
and get_column_details(), get_include_details() and get_sql() returned
HTTP responses where their callers expect data.

Raise ExecuteError instead, as get_reverse_engineered_sql() already
does, so the original database error reaches the user. Adds regression
tests covering Properties, SQL, modified SQL and update.
2026-09-30 15:23:56 +01:00
dependabot[bot] a0723f9db8 Javascript dependency: Bump brace-expansion in /web (#10479)
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.18 to 1.1.21.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.18...v1.1.21)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 1.1.21
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-30 14:38:42 +01:00
dependabot[bot] 2a65e506a6 Javascript dependency: Bump moment from 2.30.1 to 2.31.0 in /web (#10478)
Bumps [moment](https://github.com/moment/moment) from 2.30.1 to 2.31.0.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.30.1...2.31.0)

---
updated-dependencies:
- dependency-name: moment
  dependency-version: 2.31.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-30 14:38:23 +01:00
dependabot[bot] a100b86ff2 Javascript dependency: Bump ip-address from 10.5.0 to 10.7.1 in /web (#10477)
Bumps [ip-address](https://github.com/beaugunderson/ip-address) from 10.5.0 to 10.7.1.
- [Release notes](https://github.com/beaugunderson/ip-address/releases)
- [Commits](https://github.com/beaugunderson/ip-address/compare/v10.5.0...v10.7.1)

---
updated-dependencies:
- dependency-name: ip-address
  dependency-version: 10.7.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-30 14:38:06 +01:00
Sanskar Kharya bdd3282c49 Honour the pgpass file in the Change Server Password dialog (#10451)
The dialog hardcoded the pgpass flag to false, so it always demanded the
current password even when the connection authenticates via a passfile.
Pass the flag from check_pgpass through to the schema instead.

check_pgpass and change_password also disagreed about when a passfile is
in use: the former treated a password entered at connect but not saved
as a passfile connection, which would now disable the Current Password
field whilst the endpoint still required it. Both now use a shared
is_using_passfile() helper.

Fixes #10449
2026-09-30 13:29:14 +01:00
dev-hari-prasad f6a2c1037e Resolve the packaged Electron version from runtime/yarn.lock (#10413)
The Windows, Linux and macOS builds now read the Electron version from
runtime/yarn.lock using 'yarn info electron --json' inside runtime/,
rather than querying the npm registry or using the lower bound of the
range in runtime/package.json. This needs no network access or
node_modules, and packages exactly the version that yarn install
resolves. The build stops with an error if the lockfile is missing or
does not yield a valid version.
2026-09-30 13:27:56 +01:00
dependabot[bot] 3515541320 Javascript dependency: Bump undici from 7.29.0 to 7.30.0 in /runtime (#10471)
Bumps [undici](https://github.com/nodejs/undici) from 7.29.0 to 7.30.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.29.0...v7.30.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.30.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-30 10:35:09 +01:00
dependabot[bot] 369c12c1b2 Javascript dependency: Bump fast-uri from 3.1.6 to 3.1.8 in /web (#10469)
Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.6 to 3.1.8.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.6...v3.1.8)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 09:24:45 +01:00
dependabot[bot] 88b599e98f Javascript dependency: Bump fast-uri from 3.1.6 to 3.1.8 in /runtime (#10468)
Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.6 to 3.1.8.
- [Release notes](https://github.com/fastify/fast-uri/releases)
- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.6...v3.1.8)

---
updated-dependencies:
- dependency-name: fast-uri
  dependency-version: 3.1.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-29 09:24:40 +01:00
dependabot[bot] 4671d2f221 Javascript dependency: Bump electron-context-menu in /runtime (#10457)
Bumps [electron-context-menu](https://github.com/sindresorhus/electron-context-menu) from 4.1.2 to 5.1.0.
- [Release notes](https://github.com/sindresorhus/electron-context-menu/releases)
- [Commits](https://github.com/sindresorhus/electron-context-menu/compare/v4.1.2...v5.1.0)

---
updated-dependencies:
- dependency-name: electron-context-menu
  dependency-version: 5.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 12:50:32 +01:00
dependabot[bot] 8f487ac666 Javascript dependency: Bump the runtime-javascript-minor-and-patch group (#10456)
Bumps the runtime-javascript-minor-and-patch group in /runtime with 2 updates: [electron](https://github.com/electron/electron) and [eslint](https://github.com/eslint/eslint).


Updates `electron` from 44.4.2 to 44.4.3
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](https://github.com/electron/electron/compare/v44.4.2...v44.4.3)

Updates `eslint` from 10.10.0 to 10.11.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.10.0...v10.11.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-version: 44.4.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: runtime-javascript-minor-and-patch
- dependency-name: eslint
  dependency-version: 10.11.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: runtime-javascript-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 12:25:05 +01:00
dependabot[bot] 6e22b29770 Python dependency: Bump psycopg (#10459)
Bumps the regression-python-minor-and-patch group in /web/regression with 1 update: [psycopg](https://github.com/psycopg/psycopg).


Updates `psycopg` from 3.3.5 to 3.3.6
- [Changelog](https://github.com/psycopg/psycopg/blob/master/docs/news.rst)
- [Commits](https://github.com/psycopg/psycopg/compare/3.3.5...3.3.6)

---
updated-dependencies:
- dependency-name: psycopg
  dependency-version: 3.3.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: regression-python-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 12:24:53 +01:00
dependabot[bot] ad3ba69ca5 Python dependency: Bump psycopg in the python-minor-and-patch group (#10458)
Bumps the python-minor-and-patch group with 1 update: [psycopg](https://github.com/psycopg/psycopg).


Updates `psycopg` from 3.3.5 to 3.3.6
- [Changelog](https://github.com/psycopg/psycopg/blob/master/docs/news.rst)
- [Commits](https://github.com/psycopg/psycopg/compare/3.3.5...3.3.6)

---
updated-dependencies:
- dependency-name: psycopg
  dependency-version: 3.3.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: python-minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-28 12:24:41 +01:00
Dave Page fd7b462f3d Run the scheduled snapshot only on pgadmin-org/pgadmin4 (#10452)
A fork with Actions enabled inherits the nightly schedule but none of the
signing secrets or self-hosted runners, so its snapshot fails at the macOS
certificate import and leaves the Windows job queued for a day. The
location job now skips a scheduled run anywhere else, and every build job
waits on it so that the whole run skips with it. A manual dispatch still
runs anywhere.
2026-09-24 08:04:59 +01:00
Dave Page efa8ac7948 Fix TestHeaderOnLiveLogoutRequest failing in desktop mode
The test asserted that no X-Remote-User header is sent on the request
after a logout, which only holds in server mode. In desktop mode the
before_request hook logs the desktop user straight back in, so the
header is reported again, and every run-python-tests-pg job (which runs
in desktop mode) has failed on it since #10410. Assert the mode-specific
behaviour instead.
2026-09-23 15:05:04 +01:00
Dave Page 0dc122cb2e Sign Windows builds with SHA-256 file digests
The one-step "signtool sign /fd sha256" fails on the build host with
0xc0000225 before the PIN is asked for, because crypt32 converts the
legacy CryptoAPI key handle to a CNG one for SHA-2 digests, and no CNG
provider is registered under the name of Certum's crypto3 CSP. Rebinding
to cryptoCertum3 KSP is not an option, as it cannot see the Common
profile's code-signing key.

signtool's split flow avoids the conversion, so pkg/win32/sign-files.bat
now does the signing in /dg, /ds, /di, timestamp and verify steps, with
one PIN prompt per call as before. Make.bat's :SIGN_FILES and Inno
Setup's SignTool both go through it, the latter via cmd /c.

Also default PGADMIN_SIGNTOOL_DIR to SDK 10.0.26100.0, the one installed
on the host, and match the PIN dialog on "Logowanie do profilu zwyk" so
that a Secure profile prompt is never answered with the Common PIN.
SIGNING.md gains the full setup procedure, the root cause and the split
signing flow.
2026-09-23 14:10:10 +01:00
Dave Page c8ae16d13f Document adding and retiring Linux build platforms
A new Debian, Ubuntu, Fedora or EL release is named in seven places across
the build matrices, the snapshot and release workflows, the acceptance tests
and the publishing wrapper, and missing the wrapper leaves the packages built
and uploaded but never indexed. pkg/linux/PLATFORMS.md lists them all, with
the steps for adding a platform, retiring one and the server-side follow-up.

The platform lists in the Debian and Red Hat READMEs had drifted (Ubuntu
25.04, Fedora 40 and 41, RHEL 8), so they now point at the build matrices
instead.
2026-09-23 10:53:09 +01:00
Dave Page dd0d8ac533 Revert Windows code signing to SHA-1 file digests
#10355 moved signtool to /fd sha256 on the assumption that the key
provider repair described in pkg/win32/SIGNING.md made SHA-256 possible.
It does not: that repair binds the certificate to the Certum card's
legacy CryptoAPI provider, crypto3 CSP, which fails a SHA-256 file digest
in SignerSign() with 0xc0000225 before the PIN is requested, whilst
/fd sha1 signs and verifies. SHA-1 is what every previous release has
shipped with, so go back to it for both the component and the installer
signatures, and document why.

The timestamp digest stays at SHA-256, which works. Rebinding the
certificate to Certum's CNG provider is the likely route to SHA-256 file
digests, but is untested and is left for later.
2026-09-23 10:26:37 +01:00
Dave Page d0315c58ec Fix the Windows environment check, which cmd could not parse
The messages that report a missing prerequisite were changed from !VAR!
to %VAR% in commit afa0c773a, since the file does not enable delayed
expansion and they printed the variable name rather than the path. That
made them correct and unparseable at the same time: cmd expands %VAR%
when it parses a parenthesised block rather than when it runs it, and
PGADMIN_INNOTOOL_DIR defaults to "C:\Program Files (x86)\Inno Setup 6",
whose closing parenthesis then ended the IF block early. Every Windows
build has failed at "Checking the environment..." since, with "\Inno was
unexpected at this time", whether or not Inno Setup was installed, which
took the nightly snapshot with it.

The four checks move into a :REQUIRE_DIR subroutine that takes the
directory and the hint, and echoes both outside any block, where a
parenthesis is just a character. Enabling delayed expansion would also
have worked, but only by making ! a metacharacter for the whole file.
The other uses of these two paths are all inside double quotes, which
the parser does respect, so they were never affected.
2026-09-23 09:01:54 +01:00
Dave Page 43d8b3fabf Rename the server 'Change Password' option to 'Change Server Password' (#10035)
The 'Change Password...' option on a server node was ambiguous, because it
changes the password of the PostgreSQL role that pgAdmin connects with, yet
read as though it might change the pgAdmin login password instead. The menu
option and its dialog are now called 'Change Server Password', with the
connected role name in the dialog title, and the equivalent option in the
user menu becomes 'Change pgAdmin Password', so that the two can no longer
be confused with one another.

The dialog's own 'User' field was always blank, since the userName prop that
showChangeServerPassword passes was never accepted by ChangePasswordContent;
it is now wired through, which also makes the existing documentation of that
field accurate. The documentation for both dialogs has been updated to match
the new names, along with a couple of button names that had drifted.

Fixes #9230.
2026-09-22 17:15:12 +01:00