Commit Graph

631 Commits

Author SHA1 Message Date
Nicolas Pastorello
b4fd27b181 fix(docker): build on node 20 to match CI and engines
The image was on node:22-alpine while CI pins node-version: 20 and
package.json declares engines.node >=20.0.0. Align all three stages
so the container builds and runs on the same major the project is
tested against.
2026-07-29 13:54:30 -03:00
Nicolas Pastorello
870cfb98f7 fix(docker): use HOST_PORT for the published port
Setting PORT in .env.local moved the port the server listens on
*inside* the container (env_file injects it), while the mapping and
the healthcheck stayed on 3000 — so the container came up
unreachable.

The published port is now HOST_PORT, and PORT is pinned to 3000 via
`environment` (which takes precedence over env_file) so a leftover
PORT in .env.local can no longer desync the app from the mapping.
Documented both, including for the plain-docker path.
2026-07-29 13:54:30 -03:00
Nicolas Pastorello
e912ef2c1b feat: add optional Docker / Docker Compose support
Give forkers who self-host on their own infra a first-class container
path instead of hand-rolling a Dockerfile and guessing the Next.js
standalone wiring.

- Multi-stage Dockerfile (deps -> build -> runtime) using Next.js
  output: "standalone"; runs as a non-root user.
- Single-service docker-compose.yml — Supabase stays external, so no
  database container is included.
- .dockerignore and docs/docker.md documenting the setup, including the
  build-time (NEXT_PUBLIC_*, inlined into the client bundle) vs runtime
  (server secrets via env_file) split.
- Set output: "standalone" in next.config.ts. This is a no-op for
  next start and the Hostinger path; only the Docker build consumes it.

Purely additive: no dependency or stack changes, existing deploy paths
are unaffected. Database migrations remain out of scope for the
container (applied via the Supabase CLI, matching the external-Supabase
model).
2026-07-29 13:54:30 -03:00
Arnas Donauskas
4887cad57e
Merge pull request #446 from ArnasDon/chore/mcp-server-audit-fix
chore(mcp-server): audit-fix the lockfile to clear 2 open advisories
2026-07-29 10:10:43 +03:00
Arnas Donauskas
0181169a92
Merge pull request #419 from opastorello/fix/i18n-ko-parity
fix(i18n): sync ko.json with en.json and add a locale key parity test
2026-07-29 10:07:13 +03:00
Arnas Donauskas
ff2fb06181
Merge pull request #417 from Andeveling/fix/i18n-settings-overview-roles
fix(i18n): settings-overview role namespace, scopesHint rich-tag, and role SelectValue from #375
2026-07-29 10:06:42 +03:00
Arnas Donauskas
28c05b3700 chore(mcp-server): audit-fix the lockfile to clear 2 open advisories
`mcp-server/` is a separate npm project with its own lockfile, so the
root-level audit pass in #442 never touched it. Both of its open
Dependabot alerts are runtime-scope transitives of the MCP SDK:

- fast-uri 3.1.3 → 3.1.4 — host confusion via a literal backslash
  authority delimiter (high)
- @hono/node-server 1.19.14 → 2.0.12 — serve-static path traversal on
  Windows via an encoded backslash (moderate)

Reaching those required @modelcontextprotocol/sdk 1.29.0 → 1.30.0, which
`^1.18.0` already allows, so package.json is unchanged. Lockfile only.

`npm audit` in mcp-server/ now reports 0 vulnerabilities.

Verified: `npm ci`, `npm run typecheck`, `npm run build`, and a stdio
smoke test — initialize succeeds and tools/list still returns all 7
tools on the bumped SDK. Note CI does not cover this directory, so this
was checked by hand.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 09:44:10 +03:00
Arnas Donauskas
27abb92c45
Merge pull request #443 from ArnasDon/fix/420-delete-pipeline-button-contrast
fix(pipelines): make the Delete Pipeline button text visible
2026-07-29 09:34:34 +03:00
Arnas Donauskas
6e1d729312
Merge pull request #435 from ArnasDon/dependabot/npm_and_yarn/next-intl-4.13.4
chore(deps): bump next-intl from 4.13.2 to 4.13.4
2026-07-29 09:34:13 +03:00
Arnas Donauskas
71c40954e1
Merge pull request #436 from ArnasDon/dependabot/npm_and_yarn/lucide-react-1.27.0
chore(deps): bump lucide-react from 1.22.0 to 1.27.0
2026-07-29 09:34:07 +03:00
Arnas Donauskas
1e238e870e
Merge pull request #437 from ArnasDon/dependabot/npm_and_yarn/xyflow/react-12.11.2
chore(deps): bump @xyflow/react from 12.11.0 to 12.11.2
2026-07-29 09:34:00 +03:00
Arnas Donauskas
fc1f19b72a
Merge pull request #444 from ArnasDon/fix/409-automation-dispatch-reliability
fix(automations): stop inbound runs being dropped and mislogged
2026-07-29 09:33:49 +03:00
Arnas Donauskas
6739808fdb
Merge pull request #434 from ArnasDon/dependabot/npm_and_yarn/dev-dependencies-cfca897456
chore(deps-dev): bump the dev-dependencies group with 3 updates
2026-07-29 09:33:28 +03:00
Arnas Donauskas
77d37fb023 Merge main into dev-dependencies bump, resolving the conflicts
`main` moved next 16.2.6 → 16.2.12 (#441) and applied transitive audit
fixes (#442) since this branch was cut, so both manifests conflicted.

Resolved by taking main's manifests and re-applying the group's bumps on
top: prettier ^3.9.6 and prettier-plugin-tailwindcss ^0.8.1 in
package.json, plus tailwindcss and @tailwindcss/postcss 4.3.2 → 4.3.3,
which are lockfile-only here because both are specced as `^4`. Lockfile
regenerated with npm 10 — the version CI's Node 20 ships, so the nested
optional-peer @swc/helpers entry `npm ci` needs is preserved.

Verified next 16.2.12 and #442's transitive versions all hold, and
`npm ci` succeeds.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 09:29:22 +03:00
Arnas Donauskas
220fcaf846 Merge main into lucide-react bump, resolving the dependency conflicts
`main` moved next 16.2.6 → 16.2.12 (#441) and applied transitive audit
fixes (#442) since this branch was cut, so both manifests conflicted.

Resolved by taking main's manifests and re-applying only this branch's
`lucide-react` bump, then regenerating package-lock.json with npm 10 —
the version CI's Node 20 ships, so the nested optional-peer @swc/helpers
entry `npm ci` needs is preserved. Verified next 16.2.12, lucide-react
1.27.0, and #442's transitive versions all hold, and `npm ci` succeeds.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 09:27:33 +03:00
Arnas Donauskas
2c0a7b602e Merge main into next-intl bump, resolving the dependency conflicts
`main` moved next 16.2.6 → 16.2.12 (#441) and applied transitive audit
fixes (#442) since this branch was cut, so both manifests conflicted.

Resolved by keeping main's `next` and this branch's `next-intl`, then
regenerating package-lock.json from the merged package.json with npm 10 —
the version CI's Node 20 ships, so the nested optional-peer @swc/helpers
entry `npm ci` needs is preserved. Verified next 16.2.12, next-intl
4.13.4, and every audit-fixed transitive version from #442 survive, and
`npm ci` succeeds.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 09:25:22 +03:00
Arnas Donauskas
e406761aae
Merge pull request #442 from ArnasDon/chore/audit-fix-transitive-deps
chore(deps): audit-fix transitive deps to clear 7 open advisories
2026-07-29 09:19:06 +03:00
Arnas Donauskas
64f7611bc5
Merge pull request #441 from ArnasDon/chore/next-16.2.12-security
chore(deps): bump next to 16.2.12 to clear 8 open security advisories
2026-07-29 09:18:56 +03:00
Arnas Donauskas
840089f8cc
Merge pull request #440 from ArnasDon/fix/ghsa-6fr5-template-header-ssrf
fix(whatsapp): guard the template image-header fetch against SSRF
2026-07-28 16:31:25 +03:00
Arnas Donauskas
59dbf27f43 fix(automations): stop inbound runs being dropped and mislogged
Two defects that together produce the reported symptom — automation logs
that read `status: 'success'` with `steps_executed: []`.

1. The dispatch loop in the inbound webhook was fire-and-forget inside the
   route's `after()` block. `after()` only keeps the function alive for
   promises it can see, so the run could be frozen after the log row was
   inserted but before any step executed. This is the same failure mode as
   issue #301, recurring one level down — the comments on the AI auto-reply
   and `message.received` dispatches immediately below already spell out
   the invariant this violated. Now awaited; the per-iteration `.catch` is
   kept so one trigger type can't skip the rest of the loop.

2. `executeAutomation` seeded the log row with `status: 'success'` before
   running anything. A run that died mid-flight therefore left a permanent
   success with no steps, indistinguishable from an automation that
   genuinely had nothing to do. Seeded as `'failed'` instead, so the status
   only becomes success if execution actually reaches a terminal path. No
   migration needed — 'failed' is already in the column's CHECK constraint,
   and every terminal path overwrites it.

Two more points from the issue are deliberately not addressed here, as
both change existing behaviour and want a maintainer decision: switching
`contains` keyword matching to word boundaries (would alter which
automations fire for current users) and re-opening a closed conversation
on an inbound reply.

Refs #409.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 15:21:28 +03:00
Arnas Donauskas
7b7c5b1d96 fix(pipelines): make the Delete Pipeline button text visible
The button combined `variant="destructive"` — which is the soft treatment,
`bg-destructive/10 text-destructive` — with a `bg-red-600` override. The
override replaced the tinted background but not the red text, leaving red
on red and no readable label.

Drop the variant and add `text-white`, which is how every other solid-red
button in the app is written, including the delete-confirm button 100
lines up in this same dialog.

Closes #420.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 15:19:16 +03:00
Arnas Donauskas
6fdd2736e5 chore: regenerate package-lock.json with npm 10
CI installs with Node 20 (npm 10), which keeps next-intl's nested
optional-peer @swc/helpers entry; Dependabot generates the lockfile with
npm 11, which drops it, so `npm ci` fails as out-of-sync before any of
lint/typecheck/test/build runs. Regenerated with npm 10 — the only diff
is re-adding that nested entry.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 14:03:19 +03:00
Arnas Donauskas
f6e05b398e chore: regenerate package-lock.json with npm 10
CI installs with Node 20 (npm 10), which keeps next-intl's nested
optional-peer @swc/helpers entry; Dependabot generates the lockfile with
npm 11, which drops it, so `npm ci` fails as out-of-sync before any of
lint/typecheck/test/build runs. Regenerated with npm 10 — the only diff
is re-adding that nested entry.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 14:03:03 +03:00
Arnas Donauskas
c27e47a671 chore: regenerate package-lock.json with npm 10
CI installs with Node 20 (npm 10), which keeps next-intl's nested
optional-peer @swc/helpers entry; Dependabot generates the lockfile with
npm 11, which drops it, so `npm ci` fails as out-of-sync before any of
lint/typecheck/test/build runs. Regenerated with npm 10 — the only diff
is re-adding that nested entry.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 14:02:48 +03:00
Arnas Donauskas
ce33757362 chore: regenerate package-lock.json with npm 10
CI installs with Node 20 (npm 10), which keeps next-intl's nested
optional-peer @swc/helpers entry; Dependabot generates the lockfile with
npm 11, which drops it, so `npm ci` fails as out-of-sync before any of
lint/typecheck/test/build runs. Regenerated with npm 10 — the only diff
is re-adding that nested entry.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 14:02:33 +03:00
Arnas Donauskas
b751581bf4 chore(deps): audit-fix transitive deps to clear 7 open advisories
Lockfile-only bumps of indirect dependencies flagged by Dependabot;
no direct dependency or `package.json` entry changes.

- fast-uri 3.1.3 → 3.1.4 (two host-confusion advisories, high)
- js-yaml → 4.3.0 (quadratic CPU via YAML merge-key chains, high)
- hono → 4.12.32 and @hono/node-server → 2.0.12 (cross-request context
  disclosure in hono/jsx, serve-static path traversal on Windows)
- body-parser → 2.3.0 (size enforcement silently disabled on an invalid
  limit value)
- postcss → 8.5.24

Regenerated with npm 10 to match CI's Node 20, so the nested
`@swc/helpers` optional-peer entry `npm ci` needs is preserved.

Verified: `npm ci`, lint (39 warnings, unchanged from main), typecheck,
645 tests, and `next build` all pass.

Still open after this, and deliberately left alone: `next` (needs a
direct bump — separate branch), `sharp` (major, `--force` only), and
`brace-expansion` nested under the dev-only `@ts-morph/common`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 13:12:55 +03:00
Arnas Donauskas
6b4ddf6d6e chore(deps): bump next to 16.2.12 to clear 8 open security advisories
16.2.6 is in the vulnerable range for eight advisories, all patched in
16.2.11: SSRF in rewrites via an attacker-controlled destination
hostname, SSRF in Server Actions on custom servers, middleware/proxy
bypass in App Router, DoS in App Router Server Actions, DoS in the image
optimizer via SVG, unauthenticated disclosure of internal Server
Function endpoints, and two response-body cache-confusion issues.

`eslint-config-next` moves with it to keep the pair on one version.
Lockfile regenerated with npm 10 to match CI's Node 20 — the default
npm 11 drops next-intl's nested optional-peer `@swc/helpers` entry and
breaks `npm ci`.

Verified: lint (39 warnings, unchanged from main), typecheck, 645 tests,
and `next build` all pass on 16.2.12.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 13:11:24 +03:00
Arnas Donauskas
44183bc750 fix(whatsapp): guard the template image-header fetch against SSRF
`ensureImageHeaderHandle` fetched the caller-supplied `header_media_url`
server-side with no validation, so a template submit — an action any
authenticated member can perform — could reach loopback, RFC1918 and
cloud-metadata addresses, with the response status and content-type
echoed back through the thrown error.

Wire in the project's existing `isDeliverableUrl` guard, which the two
other outbound-fetch call sites (webhook delivery, automation
`send_webhook`) already use, and reuse their `redirect: 'manual'` +
timeout so a public URL can't 3xx-bounce to an internal one. The
rejection reuses the unreachable-host message verbatim so the failure
doesn't distinguish "blocked" from "down".

Addresses GHSA-6fr5-pxw7-r3xw.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 13:07:09 +03:00
dependabot[bot]
e6fb8d4751
chore(deps): bump @xyflow/react from 12.11.0 to 12.11.2
Bumps [@xyflow/react](https://github.com/xyflow/xyflow/tree/HEAD/packages/react) from 12.11.0 to 12.11.2.
- [Release notes](https://github.com/xyflow/xyflow/releases)
- [Changelog](https://github.com/xyflow/xyflow/blob/main/packages/react/CHANGELOG.md)
- [Commits](https://github.com/xyflow/xyflow/commits/@xyflow/react@12.11.2/packages/react)

---
updated-dependencies:
- dependency-name: "@xyflow/react"
  dependency-version: 12.11.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-27 10:35:48 +00:00
dependabot[bot]
dd843f7849
chore(deps): bump lucide-react from 1.22.0 to 1.27.0
Bumps [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react) from 1.22.0 to 1.27.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/1.27.0/packages/lucide-react)

---
updated-dependencies:
- dependency-name: lucide-react
  dependency-version: 1.27.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-27 10:35:41 +00:00
dependabot[bot]
f9c1d91024
chore(deps): bump next-intl from 4.13.2 to 4.13.4
Bumps [next-intl](https://github.com/amannn/next-intl) from 4.13.2 to 4.13.4.
- [Release notes](https://github.com/amannn/next-intl/releases)
- [Changelog](https://github.com/amannn/next-intl/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amannn/next-intl/compare/v4.13.2...v4.13.4)

---
updated-dependencies:
- dependency-name: next-intl
  dependency-version: 4.13.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-27 10:35:34 +00:00
dependabot[bot]
12cfff5688
chore(deps-dev): bump the dev-dependencies group with 3 updates
Bumps the dev-dependencies group with 3 updates: [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss), [prettier](https://github.com/prettier/prettier) and [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss).


Updates `@tailwindcss/postcss` from 4.3.2 to 4.3.3
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/@tailwindcss-postcss)

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

Updates `prettier-plugin-tailwindcss` from 0.8.0 to 0.8.1
- [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.8.0...v0.8.1)

---
updated-dependencies:
- dependency-name: "@tailwindcss/postcss"
  dependency-version: 4.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: prettier
  dependency-version: 3.9.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
- dependency-name: prettier-plugin-tailwindcss
  dependency-version: 0.8.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-27 10:35:25 +00:00
Arnas Donauskas
3180f06da6
Merge pull request #411 from ArnasDon/dependabot/github_actions/actions/setup-node-7
chore(deps): bump actions/setup-node from 6 to 7
2026-07-21 14:40:10 +03:00
Nicolas Pastorello
bc3d0ccdcd test(i18n): guard message catalogue key parity across locales 2026-07-20 12:58:41 -03:00
Nicolas Pastorello
ca78b82118 fix(i18n): add missing Korean labels for quick-replies nav and contact tags tab 2026-07-20 12:58:40 -03:00
Fabian Andres Parra Sanchez
999a080a29 fix(i18n): render translated label inside role SelectValue
Base UI's <SelectValue> with no children does not reliably extract
text from the selected <SelectItem> when the item's children is a
function call (e.g. tRoles(r.value)) — the trigger falls back to
displaying the raw enum string ('admin', 'agent', 'viewer').

Render the translated label explicitly as children of <SelectValue>
so the trigger always shows the human-readable role name.

Scope: only the two role selectors in Settings (matches this PR's
theme). The same pattern affects ~5 other sites (template-manager
header format, button type; ai-config provider and handoff target;
flows/broadcasts) — those are left as follow-up and tracked in #375.

Part of #375
2026-07-20 07:33:59 -05:00
Fabian Andres Parra Sanchez
4f02b4cf58 fix(i18n): strip className from scopesHint <code> rich tag
next-intl rich tags must be attribute-less. The className on the
<code> wrapping 'GET /api/v1/me' was being silently dropped, so the
'text-[11px]' Tailwind utility was a phantom — the code rendered at
the surrounding text size anyway.

This strips the className from both en.json and ko.json so the rich
tag is parsed correctly. The <code> element still renders at default
size; the smaller styling can be restored globally via CSS
('code { font-size: ... }') if desired.

Part of #375
2026-07-20 07:33:54 -05:00
Fabian Andres Parra Sanchez
18b1b2943b fix(i18n): use Settings.roles namespace in settings-overview
The identity card at the top of the Settings overview was calling
useTranslations('roles') (root-level) instead of useTranslations
('Settings.roles'). The root 'roles' namespace only exists in the
es-CO translation as a workaround added to mask this bug — in English
the chip rendered the raw keypath (e.g. 'roles.admin').

Aligns with invite-member-dialog.tsx:78 and members-tab.tsx:129,
which already use the 'Settings.roles' namespace.

Part of #375
2026-07-20 07:33:50 -05:00
dependabot[bot]
b14637c1c3
chore(deps): bump actions/setup-node from 6 to 7
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-20 10:35:02 +00:00
Arnas Donauskas
b24aa794b5
Merge pull request #399 from ArnasDon/fix/settings-nav-suspense
fix(settings): wrap useSearchParams pages in Suspense so navigation works in prod
2026-07-17 15:10:50 +03:00
Arnas Donauskas
8bbbe0a471
fix(settings): wrap useSearchParams pages in Suspense so nav works in prod
The settings page derived its active panel from `useSearchParams()` but
wasn't wrapped in a Suspense boundary. In Next 16 that fails the
production build ("missing Suspense with CSR bailout") and forces the
page to bail to full client-side rendering — shipping a settings screen
whose rail click handlers never wire up. Because the account-menu
Settings link targets `?tab=whatsapp`, users land on the WhatsApp panel
and can't navigate to any other section ("locked on WhatsApp").

Wrap the `useSearchParams` consumer in `<Suspense>` on the three
affected dashboard pages — settings, inbox, automations/new — mirroring
the split login/signup already use. Also add the missing
`Settings.sections.quick-replies` label, which was rendering as a raw
translation key in the settings rail.

Verified: production build now succeeds (previously errored out during
static generation); every settings rail section navigates correctly in a
production build.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 15:08:25 +03:00
Arnas Donauskas
8bbda771ce
Merge pull request #386 from Andeveling/contrib/feat-colombian-peso-currency
feat: add Colombian Peso (COP) currency option
2026-07-17 13:47:55 +03:00
Arnas Donauskas
27b0acf0d5
Merge pull request #366 from moduvoice/i18n/add-korean
feat(i18n): add Korean (ko) translation
2026-07-17 13:37:18 +03:00
Arnas Donauskas
b18b5fa8e0
Merge pull request #380 from ArnasDon/dependabot/npm_and_yarn/dev-dependencies-b44e82a8cb
chore(deps-dev): bump the dev-dependencies group with 4 updates
2026-07-17 13:36:02 +03:00
Arnas Donauskas
3e4ed3714d
Merge pull request #382 from ArnasDon/dependabot/npm_and_yarn/recharts-3.9.2
chore(deps): bump recharts from 3.8.1 to 3.9.2
2026-07-17 13:35:49 +03:00
Arnas Donauskas
3ca3ff512a
Merge pull request #383 from ArnasDon/dependabot/npm_and_yarn/next-intl-4.13.2
chore(deps): bump next-intl from 4.13.1 to 4.13.2
2026-07-17 13:35:40 +03:00
Arnas Donauskas
8725865198
fix(deps): restore nested @swc/helpers entry in lockfile
Dependabot's lockfile regeneration drops the nested
node_modules/next-intl/node_modules/@swc/helpers@0.5.23 optional-peer
entry that CI's `npm ci` (Node 20 / npm 10) requires, so the job failed
at install before lint/typecheck/test/build ran. Regenerated
package-lock.json with npm 10 to restore it; no dependency versions change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 13:31:54 +03:00
Arnas Donauskas
75a082cfe4
fix(deps): restore nested @swc/helpers entry in lockfile
Dependabot's lockfile regeneration drops the nested
node_modules/next-intl/node_modules/@swc/helpers@0.5.23 optional-peer
entry that CI's `npm ci` (Node 20 / npm 10) requires, so the job failed
at install before lint/typecheck/test/build ran. Regenerated
package-lock.json with npm 10 to restore it; no dependency versions change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 13:31:49 +03:00
Arnas Donauskas
356e198f93
fix(deps): restore nested @swc/helpers entry in lockfile
Dependabot's lockfile regeneration drops the nested
node_modules/next-intl/node_modules/@swc/helpers@0.5.23 optional-peer
entry that CI's `npm ci` (Node 20 / npm 10) requires, so the job failed
at install before lint/typecheck/test/build ran. Regenerated
package-lock.json with npm 10 to restore it; no dependency versions change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 13:31:44 +03:00
Arnas Donauskas
17cd16a52a
Merge pull request #391 from mooouuu/fix/missing-tags-translation
fix(i18n): add missing contact tags tab label
2026-07-17 12:48:26 +03:00