Skip to content

Releases: tot-ra/graphql-schema-registry

6.0.0 Core store upgrades. Mysql -> Postgres, Kafka -> Redis, Node 25, UI update, Subscriptions, Analytics

Choose a tag to compare

@tot-ra tot-ra released this 10 Mar 21:47
938957a

What's Changed

  • update mysql2 lib version for security by @tot-ra in #196
  • update jest by @tot-ra in #199
  • Disable post-install hooks for security (ex. shai-hulud worm protection) by @tot-ra in #201
  • fix(dev): remove USER nobody from dev Dockerfile and add auto database creation by @tot-ra in #202
  • refactor: Migrate frontend build from Webpack 5 to Vite by @tot-ra in #203
  • chore: migrate from eslint/prettier to biome and oxlint by @tot-ra in #204
  • feat: migrate schema registry from MySQL to Postgres by @tot-ra in #205
  • release: 6.0.0-rc (Node 25 + pnpm migration) by @tot-ra in #206
  • Add Schema supergraph explorer with interactive entity graph by @tot-ra in #207
  • Simplify schema registry messaging: Redis pub/sub instead of Kafka by @tot-ra in #208
  • feat: expand analytics views and add hourly usage tracking by @tot-ra in #209
  • Add subscription registry API, UI, and docs by @tot-ra in #210
  • Add subscription metrics analytics pipeline and UI tab by @tot-ra in #211

Full Changelog: 5.5.4...6.0.0

6.0.0-rc - Node 25, Postgres, PNPM, Vite

Choose a tag to compare

@tot-ra tot-ra released this 09 Mar 21:54
32aea55

Changed

  • Upgraded runtime and build environment to Node.js 25
    • Updated .nvmrc to 25
    • Updated Docker images from node:22-alpine to node:25-alpine
  • Migrated package management workflow from npm to pnpm
    • Added packageManager: pnpm@10.29.2
    • Replaced npm commands with pnpm in justfile, Dockerfiles, and docker-compose startup commands
    • Added pnpm-lock.yaml and removed package-lock.json
  • Updated docker-compose development services to run non-interactive pnpm installs in containers
    • Added CI=true pnpm install --force in container startup commands
    • Added /app/node_modules volume mounts for container-local dependencies
  • Updated Postgres volume mounts to use /var/lib/postgresql for compatibility with Postgres 18 images
    • Fixed startup failures caused by legacy data directory mount layout

Fixed

  • Resolved npm dependency resolution errors during install (ERESOLVE with Material UI / React type peer constraints) by switching service install/build flow to pnpm

Changed

  • Migrated frontend build from Webpack 5 to Vite for faster development startup and build times
    • Replaced webpack, babel-loader, and related plugins with Vite and @vitejs/plugin-react
    • Added vite.config.ts with UMD library build configuration
    • Added tsconfig.client.json for frontend TypeScript configuration
    • Updated build-frontend script to use vite build
    • Added develop-frontend script for Vite dev server
    • Updated setupDev.ts to use Vite middleware instead of webpack-dev-middleware
    • Fixed circular reference in CodeDiff.jsx
    • Renamed usePrism.js to usePrism.jsx for proper JSX handling
    • Updated @types/node to v20 for Vite compatibility
    • Removed 14 webpack-related dev dependencies

Fixed

  • Remove USER nobody from dev.Dockerfile to fix webpack permission errors in development

Added

  • Auto-create database if it doesn't exist during startup

Mysql -> Postgres migration

Summary

  • migrate DB runtime and migrations from MySQL to Postgres
  • add MySQL -> Postgres data migration script and documentation
  • update Docker/compose configs so local startup works with Postgres
  • preserve API compatibility for existing clients/UI, including ID normalization
  • add startup health smoke test and Postgres-related test updates

Key fixes included

  • install/use pg and Postgres knex wiring
  • Postgres-safe SQL and migration updates (including explicit table IDs)
  • type-safe handling for raw results and bigint/boolean behavior differences
  • fix GraphQL service/schema loading mismatch that caused UI message "No service passed"
  • fix functional test DB reset for FK constraints

Validation

  • npm run build-backend
  • npm run test:functional
  • npm run test:integration
  • manual GraphQL/API checks for register + latest + compose + service details

Migration docs

  • docs/POSTGRES_MIGRATION.md
  • scripts/migrate-mysql-to-postgres.ts

5.5.4 Apollo v2 federation support

Choose a tag to compare

@tot-ra tot-ra released this 10 May 22:06
6ec6300
Add supergraph endpoint (#189) (#197)

* Add supergraph endpoint (#189)

* Add route to return supergraphSdl

* Cache supegraph in memory

* Fix schema composition error message

* Move invalidation post graph mutation

* Add integration tests and fix invalidation

* Add example setup with Apollo Router

* Add supegraph rollback integration test

* add wundergraph link

* update App to open list of services by default

* remove "connecting to DB mysql:3306" log

* Fix diff view (#192)

* Fix diff view

* lint fix

* fix workflows

* Update @apollo/client and @apollo/composition dependencies (#194)

This enables registering schemas using the latest versions of the GraphQL Federation specification.

* Update node version 16 -> 22 (#195)

* update node version 16 -> 22

* bump github workflow versions

* update changelog with v5.5.3

* update package-lock

* update package-lock

* update README

* fix lint

---------

Co-authored-by: Alexandru Gologan <alexandru.gologan@gmail.com>
Co-authored-by: Andrew Garcia <95447089+agarcia-narvar@users.noreply.github.com>

5.5.3 Update node version to 22, apollo dependencies, fix UI bug in diff view

Choose a tag to compare

@tot-ra tot-ra released this 10 May 18:27
  • Update node version to 22 #195
  • Upgrade apollo/client and apollo/composition dependencies #194
  • fix UI bug in diff view #192

5.5.1 Redis is optional + knex bump

Choose a tag to compare

@tot-ra tot-ra released this 03 Feb 17:10
f768147

NB! repository moved from pipedrive namespace. Make sure to use new docker image namespace

Changes:

  • knex dependency update
  • redis changes from @ehardy PR #172 :
  • Passing the Redis password to the RedisTransport constructor in src/logger.ts.
  • Initializing Redis in the init() function in src/index.ts. With this change the warnings in the logs disappear.
  • In order to cover the Redis/password cases, the docker-compose.base.yml now makes sure to launch Redis with password protection.
  • Adding an environment variable called LOG_STREAMING_ENABLED to further control if log streaming over Redis should be enabled or not.

v5.4.0 Schema UUID added, uniqueness check improved

Choose a tag to compare

@tot-ra tot-ra released this 27 Oct 13:50
75ed3c0
  • Add schema normalization (re-formatting) - this should get rid of extra tabbing & spacing when services register their schemas inconsistently
  • Fix knex migration generation from commandline (npm run new-db-migration my-new-migration)
  • Improve migration scripts to support JS migrations. Possibly somewhat breaking change for organizations that relied only on .sql files
  • Migrate schemas to now include UUID (js migration). If your organization didn't expect/run js migrations, you will have empty UUIDs, but follow-up schema registrations should have it in new schemas, so not a big deal, just may be a bit confusing in the UI
  • We do not delete duplicate schemas her, as its a bit dangerous. You may have had duplicate schemas before, if you need to clean them up, here is a script:
UPDATE `container_schema` t3
  INNER JOIN `schema` t1
  INNER JOIN `schema` t2
  SET t3.schema_id = t1.id
  WHERE t1.UUID IS NOT null
    AND t1.id < t2.id
    AND t1.UUID = t2.UUID
    AND t3.schema_id = t2.id;

DELETE t2
  FROM `schema` t1
  INNER JOIN `schema` t2
  WHERE
    t2.UUID IS NOT null AND
    t1.id < t2.id AND
    t1.UUID = t2.UUID;

Use with caution

v5.3.0 Global search

Choose a tag to compare

@tot-ra tot-ra released this 10 Oct 23:31
64a7a84
  • added global search input in menu
  • removed per-service search as redundant

Screenshot 2022-10-10 at 01 41 22

v5.2.0 logs tab added

Choose a tag to compare

@tot-ra tot-ra released this 08 Oct 13:42
72447af

Problem

Sometimes when schema registration fails, its hard to trace why.
You need to either check schema-registry logs, or you need to debug endpoint response output on client side
This adds Logs UI which shows all logs that schema-registry does via regular logger.error() functions, just uses redis as a temporary storage

Changes

  • add logs tab (reads from redis)
  • add info component
  • add winston-redis-stream for temporary storage for logs

Screenshot 2022-10-08 at 02 22 57

v5.1.1 fix re-opening navigation on refresh

Choose a tag to compare

@tot-ra tot-ra released this 07 Oct 20:05
2cc8285
Oct-07-2022.12-03-45.mp4

v5.1.0 clients list UI

Choose a tag to compare

@tot-ra tot-ra released this 06 Oct 07:30
30859e5
  • added "clients" menu in UI part to display clients, versions and related persisted queries
    (clients are added by query analyzer)

Screenshot 2022-10-04 at 01 02 51