Skip to content

[pull] main from rmyndharis:main#2

Merged
pull[bot] merged 6 commits into
m7fz7:mainfrom
rmyndharis:main
Jul 6, 2026
Merged

[pull] main from rmyndharis:main#2
pull[bot] merged 6 commits into
m7fz7:mainfrom
rmyndharis:main

Conversation

@pull

@pull pull Bot commented Jul 6, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

…ning (#644)

Route SIGTERM/SIGINT through the bounded readiness drain (flip 503 -> grace ->
teardown), not just the admin restart endpoint, so rolling deploys and `docker
stop` stop routing before teardown. Make shutdown() idempotent, default the grace
to 0 outside production (fast dev reload/Ctrl+C), and stop whatsapp-web.js's
Puppeteer from installing its own signal handlers (which killed Chromium at
signal time / exited before the drain could run). Suppress a mid-shutdown
reconnect that would race the teardown. Bundled compose gains stop_grace_period.

Validate QUEUE_ENABLED / MCP_ENABLED / SERVE_DASHBOARD at boot: a typo or a stray
trailing space/CR silently (dis)abled the feature; boot now fails fast on the raw
value naming the offending key.

Log a fatal uncaught exception through the structured logger (observe-only via
uncaughtExceptionMonitor; the crash-and-restart posture is unchanged).

Scope import-data's table-clearing catch to a genuinely-missing table so a real
I/O/lock error surfaces and rolls the restore back instead of committing a merged
(not replaced) dataset on SQLite.
#645)

Pin the Docker Compose stack's docker-socket-proxy and minio images to explicit
tags (both were on :latest) and add a Dependabot docker ecosystem so base + stack
images keep receiving update PRs. Declare a Node >=22 engines floor + .nvmrc and
disable the transitive install-time Scarf telemetry.

Remove the unused uuid / @types/uuid dependency. Document PORT vs the compose-only
API_PORT in .env.example and add the QUEUE_ENABLED/CACHE_ENABLED toggles. Refresh
SECURITY.md's supported-versions table and the Java SDK install snippets to the
current releases. Correct stale "not yet wired" comments on the plugin
ingress-manifest validation, which the loader has called since it shipped.
Add VALIDATION_ERROR_DETAIL to expose field-level validation messages on 400
responses (hidden by default in production, so a bad request doesn't reflect the
DTO shape back; set true to debug an SDK/integration against a prod instance
without flipping NODE_ENV). Mirrors isSwaggerEnabled's exact-string,
production-default-off contract.

Declare every controller tag in the OpenAPI document (ten were used but
undeclared), add @apitags to the three Integration Fabric controllers, and
normalise tag casing so /api/docs groups every endpoint under a described tag.
#647)

The webhook dispatch path looks up a session's active webhooks by sessionId on
every emitted event (WebhookService.findBySession), so without an index each
dispatch scanned the entire webhooks table. The FK column had no index — the
@ManyToOne/@joincolumn does not create one. Add a cross-dialect, idempotent
index migration plus the matching entity @Index.
…ation CI (#648)

conversation_mappings and integration_delivery_failures declare
@PrimaryGeneratedColumn('uuid') but AddIntegrationFabric created their id columns
without a Postgres DEFAULT gen_random_uuid(), so on PostgreSQL every first insert
failed with a NOT NULL violation on id — breaking the plugin conversation-mapping
upsert (Chatwoot handover) and the ingress dead-letter write. SQLite mints the
uuid client-side, which hid it. Add a forward-only Postgres-only migration that
sets the default (no-op on SQLite).

Add a CI job that applies the full data-migration chain to a real postgres:16 and
asserts every generated-uuid PK has a DB default (an information_schema scan that
auto-covers current and future tables) — the dialect gap no SQLite-only test can
see. Validated locally: the smoke passes with the fix and fails without it.
…rs) (#649)

The global jest coverageThreshold sat at 30-33% against ~65-73% measured, so a
regression deleting a large share of the tests would still pass CI green (the
gate had no teeth). Raise the global floors to ~7-8 points below measured
(statements 65, branches 58, functions 58, lines 66), add per-directory floors
for engine/adapters and modules/integration, and raise modules/auth (was 45)
toward its ~80% measured. The common/security 85-90 floor is unchanged. Verified
the full suite still clears the thresholds with headroom.
@pull pull Bot locked and limited conversation to collaborators Jul 6, 2026
@pull pull Bot added the ⤵️ pull label Jul 6, 2026
@pull pull Bot merged commit a3c7184 into m7fz7:main Jul 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant