Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
66832cd
feat: initial Graphile v5 migration - minimal baseline
pyramation Jan 28, 2026
f5b1816
chore: disable graphql/graphile tests in CI during v5 migration
pyramation Jan 28, 2026
b759f6a
chore: disable postgres/introspectron test in CI (imports graphql-test)
pyramation Jan 28, 2026
0184d50
chore: update @types/express to ^5.0.6 in graphile-cache
pyramation Jan 28, 2026
6a1de25
chore: add develop-v5 branch to CI workflow triggers
pyramation Jan 28, 2026
7103f09
chore: disable all tests in CI during v5 migration
pyramation Jan 28, 2026
b27eaaa
test: re-enable graphql/server test in CI
pyramation Jan 28, 2026
ebe0f6a
chore: remove old v4 test files from graphql/server
pyramation Jan 28, 2026
747c65f
Merge pull request #670 from constructive-io/devin/1769566301-test-se…
Zetazzz Jan 29, 2026
6653925
recover ci partially
Zetazzz Jan 31, 2026
fa320d9
disable graphile test
Zetazzz Jan 31, 2026
dee74cd
fixed graphql env tests
Zetazzz Feb 1, 2026
087f340
disable pkg/cli
Zetazzz Feb 1, 2026
6217fe0
node version fix
Zetazzz Feb 1, 2026
e3a1ee1
fixed graphql server test
Zetazzz Feb 1, 2026
9ccda21
options and fixing tests
Zetazzz Feb 2, 2026
47b1262
graphile cache and single flight
Zetazzz Feb 2, 2026
4c40ec5
error handler
Zetazzz Feb 2, 2026
cd5b4cb
add int tests to graphql server
Zetazzz Feb 2, 2026
2030994
fix tests
Zetazzz Feb 2, 2026
44ea3aa
use graphql query instead of sql
Zetazzz Feb 3, 2026
2554b8e
fixed graphql query
Zetazzz Feb 3, 2026
1b13c0d
lock file
Zetazzz Feb 3, 2026
4479cc9
fixed schema exposure
Zetazzz Feb 3, 2026
be6b218
fix graphql codegen test
Zetazzz Feb 3, 2026
5914638
upgraded simple inflector and fixed tests
Zetazzz Feb 4, 2026
1d872e5
migrate graphile settings
Zetazzz Feb 4, 2026
3976448
migrate graphile settings
Zetazzz Feb 4, 2026
a89e5c0
docs: update graphile v5 migration plan with codegen details
pyramation Feb 4, 2026
db26f11
feat: migrate codegen to PostGraphile v5 / GraphQL 16
pyramation Feb 4, 2026
0f7cacb
favicon
pyramation Feb 4, 2026
fb73bd7
feat: add favicon middleware with base64-encoded favicon
pyramation Feb 4, 2026
d9a4308
refactor: simplify api.ts with direct SQL queries
pyramation Feb 4, 2026
1b29bd7
fix: add graphiql route config and clean up api.ts debug logging
pyramation Feb 4, 2026
02fd137
refactor: clean up error-handler.ts - consolidate response logic, rem…
pyramation Feb 4, 2026
ab30b05
refactor: remove GraphQL error handling from error-handler (handled b…
pyramation Feb 4, 2026
b73e8e7
refactor: improve dev fallback error HTML with better Tailwind styling
pyramation Feb 4, 2026
b13f027
refactor: improve dev fallback with brand colors, port handling, comp…
pyramation Feb 4, 2026
bf427fe
feat: add custom maskError to show full errors in development mode
pyramation Feb 4, 2026
a5cd5f0
refactor: simplify maskError to always show full errors (no env switc…
pyramation Feb 4, 2026
574bc67
style: modernize dev fallback page with rounded cards, subtle shadows…
pyramation Feb 4, 2026
d9d5352
page updates
pyramation Feb 4, 2026
27aabd3
feat: add schema snapshot test to verify GraphQL SDL generation
pyramation Feb 4, 2026
7e70920
feat: simplify many-to-many field names with conflict detection
pyramation Feb 4, 2026
545b9cc
docs: update graphile-settings README with comprehensive feature docu…
pyramation Feb 4, 2026
1be574b
fix: register GraphQL type mapping for tsvector/tsquery codecs
pyramation Feb 4, 2026
f058dda
docs: update migration plan with testing infrastructure restoration plan
pyramation Feb 5, 2026
51d38bf
feat: restore @constructive-io/graphql-test package for PostGraphile v5
pyramation Feb 5, 2026
3a2241d
feat: enable graphql/test in CI and update plugin tests for v5
pyramation Feb 5, 2026
82c68fb
chore: remove old v4 snapshots for regeneration with v5
pyramation Feb 5, 2026
f15093a
fix: update graphql/test for v5 with TypeScript fixes and regenerated…
pyramation Feb 5, 2026
51eb179
fix: use OS-assigned port (0) to eliminate race condition in server-test
pyramation Feb 5, 2026
3355313
Merge pull request #680 from constructive-io/devin/1770234168-codegen…
pyramation Feb 5, 2026
4b26073
feat: upgrade graphile-query to PostGraphile v5 / GraphQL 16
pyramation Feb 5, 2026
d0c1d3d
feat: add graphile-authz and postgraphile-plugin-pgvector packages
pyramation Feb 5, 2026
ba0e7ee
chore: delete graphile-plugin-connection-filter and graphile-simple-i…
pyramation Feb 5, 2026
8a09a5c
fix: add jest.config.js and fix test imports for new plugins
pyramation Feb 5, 2026
f65800d
Merge pull request #682 from constructive-io/feat/graphile-query
pyramation Feb 5, 2026
1a2736a
chore: merge develop-v5 and resolve pnpm-lock.yaml conflict
pyramation Feb 5, 2026
bb9b814
feat(api): add RLS module support to API resolution
pyramation Feb 5, 2026
cfc1ce3
fix(graphile-cache): remove redundant serv.release() to prevent doubl…
pyramation Feb 5, 2026
77cc278
fix(graphile): use correct requestContext path for Express v4 in Post…
pyramation Feb 5, 2026
9c6fd7d
fix: convert pgvector plugin to use Grafast step-based API
pyramation Feb 5, 2026
2c11114
fix(graphile): use correct Partial<Grafast.RequestContext> type signa…
pyramation Feb 5, 2026
16e1456
Merge pull request #683 from constructive-io/devin/1770256347-graphil…
pyramation Feb 5, 2026
d655590
feat(auth): add comprehensive logging to trace authentication flow
pyramation Feb 5, 2026
7e28ce6
fix(api): query RLS module from correct schema metaschema_modules_public
pyramation Feb 5, 2026
cf0c375
refactor(api): remove silent error swallowing from query functions
pyramation Feb 5, 2026
f9885f1
Merge pull request #684 from constructive-io/devin/rls-module-authent…
pyramation Feb 5, 2026
68e2c3e
docs: update plugin migration status in v5 migration plan
pyramation Feb 5, 2026
611dec9
docs: update disposeEntry docstring to reflect removal of explicit se…
pyramation Feb 5, 2026
bc89a12
Merge pull request #685 from constructive-io/fix-graphile-cache-doubl…
pyramation Feb 5, 2026
dbd2a17
Merge pull request #687 from constructive-io/devin/1770265701-plugin-…
pyramation Feb 5, 2026
a96d948
feat: inline pg-type-mappings plugin into graphile-settings
pyramation Feb 5, 2026
a1055ac
refactor: remove single_select and multiple_select from pg-type-mappings
pyramation Feb 5, 2026
20fe6e7
refactor: update fixtures to remove single_select/multiple_select and…
pyramation Feb 5, 2026
1567f59
refactor: simplify domain type validation in fixtures
pyramation Feb 5, 2026
0bd2af7
feat: add lenient URL regex validation to url and origin domains
pyramation Feb 5, 2026
27d780f
Merge pull request #688 from constructive-io/feat/pg-type-mappings
pyramation Feb 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
180 changes: 98 additions & 82 deletions .github/workflows/run-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@ on:
branches:
- main
- v1
- develop-v5
pull_request:
branches:
- main
- v1
- develop-v5
workflow_dispatch:
workflow_call:

Expand All @@ -19,83 +21,85 @@ jobs:
constructive-tests:
runs-on: ubuntu-latest

# Tests being re-enabled as v5 migration progresses - remaining tests will be enabled when ready
strategy:
fail-fast: false
matrix:
include:
- package: uploads/mime-bytes
env: {}
# - package: uploads/mime-bytes
# env: {}
- package: pgpm/core
env: {}
- package: pgpm/env
env: {}
# - package: pgpm/env
# env: {}
- package: pgpm/cli
env: {}
- package: packages/cli
env: {}
- package: jobs/knative-job-service
env: {}
- package: packages/client
env:
TEST_DATABASE_URL: postgres://postgres:password@localhost:5432/postgres
# - package: packages/cli
# env: {}

# - package: jobs/knative-job-service
# env: {}
# - package: packages/client
# env:
# TEST_DATABASE_URL: postgres://postgres:password@localhost:5432/postgres
- package: postgres/pgsql-client
env: {}
- package: postgres/pgsql-test
env: {}
- package: packages/orm
env: {}
- package: packages/url-domains
env: {}
- package: uploads/uuid-hash
env: {}
- package: uploads/uuid-stream
env: {}
- package: postgres/introspectron
env: {}
- package: packages/query-builder
env: {}
# - package: packages/orm
# env: {}
# - package: packages/url-domains
# env: {}
# - package: uploads/uuid-hash
# env: {}
# - package: uploads/uuid-stream
# env: {}
# - package: postgres/introspectron
# env: {}
# - package: packages/query-builder
# env: {}
- package: graphql/query
env: {}
- package: graphql/codegen
env: {}
- package: postgres/pg-ast
env: {}
- package: postgres/pg-codegen
env: {}
- package: uploads/content-type-stream
env: {}
- package: uploads/s3-streamer
env:
BUCKET_NAME: test-bucket
- package: uploads/upload-names
env: {}
- package: graphile/graphile-test
env: {}
- package: graphile/graphile-search-plugin
env: {}
- package: graphile/graphile-plugin-fulltext-filter
env: {}
- package: graphile/graphile-simple-inflector
env: {}
- package: graphile/graphile-many-to-many
env: {}
- package: graphile/graphile-i18n
env: {}
- package: graphile/graphile-meta-schema
env: {}
- package: graphile/graphile-upload-plugin
env:
BUCKET_NAME: test-upload-bucket
- package: graphile/graphile-postgis
env: {}
- package: graphile/graphile-plugin-connection-filter
env: {}
- package: graphile/graphile-plugin-connection-filter-postgis
env: {}
- package: graphile/graphile-pg-type-mappings
env: {}
- package: graphile/graphile-sql-expression-validator
env: {}
# - package: postgres/pg-ast
# env: {}
# - package: postgres/pg-codegen
# env: {}
# - package: uploads/content-type-stream
# env: {}
# - package: uploads/s3-streamer
# env:
# BUCKET_NAME: test-bucket
# - package: uploads/upload-names
# env: {}
# - package: graphile/graphile-test
# env: {}
# - package: graphile/graphile-search-plugin
# env: {}
# - package: graphile/graphile-plugin-fulltext-filter
# env: {}
# - package: graphile/graphile-simple-inflector
# env: {}
# - package: graphile/graphile-many-to-many
# env: {}
# - package: graphile/graphile-i18n
# env: {}
# - package: graphile/graphile-meta-schema
# env: {}
# - package: graphile/graphile-upload-plugin
# env:
# BUCKET_NAME: test-upload-bucket
# - package: graphile/graphile-postgis
# env: {}
# - package: graphile/graphile-plugin-connection-filter
# env: {}
# - package: graphile/graphile-plugin-connection-filter-postgis
# env: {}
# - package: graphile/graphile-pg-type-mappings
# env: {}
# - package: graphile/graphile-sql-expression-validator
# env: {}
- package: graphql/server-test
env: {}
- package: graphql/env
Expand All @@ -104,29 +108,36 @@ jobs:
env: {}
- package: graphql/test
env: {}
- package: graphql/playwright-test
- package: graphile/graphile-authz
env: {}
- package: graphile/postgraphile-plugin-pgvector
env: {}
# - package: graphql/playwright-test
# env: {}
# - package: jobs/knative-job-worker
# env: {}
- package: packages/csv-to-pg
env: {}
- package: packages/smtppostmaster
env: {}
- package: postgres/drizzle-orm-test
env: {}
- package: uploads/etag-hash
env: {}
- package: uploads/etag-stream
env: {}
- package: uploads/stream-to-etag
env: {}
- package: packages/oauth
env: {}
- package: packages/csrf
env: {}
- package: packages/12factor-env
env: {}
- package: packages/postmaster
# - package: packages/csv-to-pg
# env: {}
# - package: packages/smtppostmaster
# env: {}
# - package: postgres/drizzle-orm-test
# env: {}
# - package: uploads/etag-hash
# env: {}
# - package: uploads/etag-stream
# env: {}
# - package: uploads/stream-to-etag
# env: {}
# - package: packages/oauth
# env: {}
# - package: packages/csrf
# env: {}
# - package: packages/12factor-env
# env: {}
# - package: packages/postmaster
# env: {}
# Placeholder to keep matrix valid (will be skipped)
- package: .
env: {}

env:
Expand Down Expand Up @@ -179,7 +190,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
node-version: '22'

- name: Setup pnpm
uses: pnpm/action-setup@v2
Expand All @@ -198,5 +209,10 @@ jobs:
pnpm --filter pgpm exec node dist/index.js admin-users add --test --yes

- name: Test ${{ matrix.package }}
if: matrix.package != '.'
run: cd ./${{ matrix.package }} && pnpm test
env: ${{ matrix.env }}

- name: Skip tests (v5 migration in progress)
if: matrix.package == '.'
run: echo "All tests disabled during v5 migration - will be re-enabled when ready to merge into main"
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
-- requires: schemas/public/schema

BEGIN;
CREATE DOMAIN attachment AS text CHECK (VALUE ~ '^(https?)://[^\s/$.?#].[^\s]*$');
COMMENT ON DOMAIN attachment IS E'@name pgpmInternalTypeAttachment';
CREATE DOMAIN attachment AS text;
COMMENT ON DOMAIN attachment IS E'@name constructiveInternalTypeAttachment';
COMMIT;
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
-- requires: schemas/public/schema

BEGIN;
CREATE DOMAIN email AS citext CHECK (value ~ '^[a-zA-Z0-9.!#$%&''*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$');
COMMENT ON DOMAIN email IS E'@name pgpmInternalTypeEmail';
CREATE DOMAIN email AS citext;
COMMENT ON DOMAIN email IS E'@name constructiveInternalTypeEmail';
COMMIT;

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
-- requires: schemas/public/schema

BEGIN;
CREATE DOMAIN hostname AS text CHECK (VALUE ~ '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$');
COMMENT ON DOMAIN hostname IS E'@name pgpmInternalTypeHostname';
CREATE DOMAIN hostname AS text;
COMMENT ON DOMAIN hostname IS E'@name constructiveInternalTypeHostname';
COMMIT;

Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@
-- requires: schemas/public/schema

BEGIN;
CREATE DOMAIN image AS jsonb CHECK (
value ?& ARRAY['url', 'mime']
AND
value->>'url' ~ '^(https?)://[^\s/$.?#].[^\s]*$'
);
COMMENT ON DOMAIN image IS E'@name pgpmInternalTypeImage';
CREATE DOMAIN image AS jsonb CHECK (value ? 'url');
COMMENT ON DOMAIN image IS E'@name constructiveInternalTypeImage';
COMMIT;

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
-- requires: schemas/public/schema

BEGIN;
CREATE DOMAIN origin AS text CHECK (VALUE = substring(VALUE from '^(https?://[^/]*)'));
COMMENT ON DOMAIN origin IS E'@name pgpmInternalTypeOrigin';
CREATE DOMAIN origin AS text CHECK (value ~ '^https?://[^\s]+$');
COMMENT ON DOMAIN origin IS E'@name constructiveInternalTypeOrigin';
COMMIT;

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,14 +1,7 @@
-- Deploy schemas/public/domains/upload to pg

-- requires: schemas/public/schema

BEGIN;

CREATE DOMAIN upload AS jsonb CHECK (
value ?& ARRAY['url', 'mime']
AND
value->>'url' ~ '^(https?)://[^\s/$.?#].[^\s]*$'
);
COMMENT ON DOMAIN upload IS E'@name pgpmInternalTypeUpload';

CREATE DOMAIN upload AS jsonb CHECK (value ? 'url' OR value ? 'id' OR value ? 'key');
COMMENT ON DOMAIN upload IS E'@name constructiveInternalTypeUpload';
COMMIT;
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
-- requires: schemas/public/schema

BEGIN;
CREATE DOMAIN url AS text CHECK (VALUE ~ '^(https?)://[^\s/$.?#].[^\s]*$');
COMMENT ON DOMAIN url IS E'@name pgpmInternalTypeUrl';
CREATE DOMAIN url AS text CHECK (value ~ '^https?://[^\s]+$');
COMMENT ON DOMAIN url IS E'@name constructiveInternalTypeUrl';
COMMIT;

Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ schemas/public/domains/attachment [schemas/public/schema] 2017-08-11T08:11:51Z s
schemas/public/domains/email [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/email
schemas/public/domains/hostname [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/hostname
schemas/public/domains/image [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/image
schemas/public/domains/multiple_select [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/multiple_select
schemas/public/domains/origin [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/origin
schemas/public/domains/single_select [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/single_select
schemas/public/domains/upload [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/upload
schemas/public/domains/url [schemas/public/schema] 2017-08-11T08:11:51Z skitch <skitch@5b0c196eeb62> # add schemas/public/domains/url

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading