86 Commits
Author SHA1 Message Date
Ruslan KonviserandClaude Opus 5.5 a85bcea69e fix: what the AI review of the upgrade found
- Seed cleanup (Greptile): rimraf 3 took the failure callback for its options
  argument and called the success one either way, so a failed cleanup of
  generated files never stopped a seed. With rimraf 6's promise, the seed
  service's `.finally()` left the rejection unhandled (Node ends the process on
  that) and cleanAssets / the feature and report cleaners rejected. All four
  log the failure and go on; seed-cleanup.spec.ts fails on the old code.
- Tray icons: jimp 1's brightness() multiplies each channel by its argument,
  so 0.22's brightness(-0.1) made every *_gray tray icon black. 0.9 is the
  same 90%.
- CI static checks: the jest-config type check installed TypeScript 5.9.3,
  which refuses ignoreDeprecations "6.0" (TS5103); it now uses 6.0.3. Under
  6.0.3 the check found the 75 Node jest configs restating
  `require(jest.patterns).nodeTransformIgnorePatterns` (typed unknown by the
  check's shim). jest.preset.js already picks that variant, so they inherit it
  again, as core's config says they should.
- engines: the 114 workspace manifests still said node >=22; now >=26, as the
  root does.
- The desktop Dockerfiles (no workflow uses them): the Windows ones copy
  vendor/ before the install, the Linux ones build on node:26-trixie-slim
  (libayatana-appindicator3-1 replaces libappindicator3-1, gone after bullseye).
- jest-angular-projects.js declares the arrays it pushes to with `let`
  (repository convention, Greptile).
- jest.patterns.js: `yarn ng test <node project>` runs without the ES-module
  flag (the ng script already sets NODE_OPTIONS, and Nx never overrides a set
  variable with a .env value); documented, with `yarn nx test` as the way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:01:39 +02:00
Ruslan KonviserandClaude Opus 5.5 9e756d9a7b fix: adapt the code to the new majors (hand-written)
What each upgrade needed, by area. Public behaviour is unchanged unless a line says otherwise.

API / Nest 12:
- MikroOrmBaseEntityRepository: the entity-name argument is no longer injected by token. Nest 12 keeps a
  base class's @Inject for a subclass with its own constructor but reads @Optional() from the subclass
  only, so the token became a required dependency of those repositories and the API did not start.
- ClassSerializerInterceptor.intercept resolves to the stream in Nest 12: ours is async to match.
- posthog/sentry interceptors import the ArgumentsHost types from their new subpath.
- mjml 5 compiles asynchronously: compileMjml and its callers (email templates, accounting templates,
  previews, seeds) await it.
- node-redis 5/6 (sessions, health check, auth code cache): keepAlive is a switch plus
  keepAliveInitialDelay; replies are typed string | Buffer. connect-redis exports RedisStore by name.
- OpenTelemetry 2: resourceFromAttributes / ATTR_SERVICE_NAME. unleash-client 6: EnhancedFeatureInterface.
- jimp 1 (named exports, resize({ w })), sharp 0.35 (default export under types), rimraf 6 (named),
  pdfmake 0.3 (singleton API; URL and local-file access refused except the bundled fonts, CVE-2026-26801,
  with tests), Apollo Client 4 in the Gauzy AI client (errorPolicy also covers network errors, so the
  wrapper rethrows those as before), smee-client 5, express-session 1.19 types, Knex binding types.
- yargs 18 has no global parser: the migration CLI and the .scripts build helpers parse hideBin(argv).
  envalid 8: .scripts/env.ts loads .env itself and keeps envalid 6's num/bool parsing. simple-git 4: named.

Desktop / Electron 44:
- electron-store 11 / conf 15 types (IStore = ElectronStoreOf<StoreSchema>), electron-log 5 onError
  options, screen.on per event (Electron types one overload per event), node-fetch 3 json(): unknown,
  pdfjs-dist 6 loadingTask.destroy(), hash-it named export, ngx-draggable-dom 22 directive.

Web / Angular 22, ngx-translate 18:
- ComponentFactoryResolver is gone: createComponent(type). ChangeDetectorRef.checkNoChanges is gone.
- ngx-translate: provideTranslateService + TranslatePipe in I18nModule, currentLang is a Signal
  (getCurrentLang()), onDefaultLangChange -> onFallbackLangChange; the removed `extend` is accepted and
  ignored (deprecated in our options).
- Jest: the Node projects' configs take nodeTransformIgnorePatterns (ES modules load natively under
  --experimental-vm-modules), the Angular defaults provide the translate service; a few specs follow the
  APIs above.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:40:23 +02:00
Ruslan KonviserandClaude Opus 5.5 247ede1c98 build(deps): every package to its latest working version, Node 26, and the config the new majors need
Dependencies (root + 132 workspace package.json files, lockfile regenerated and deduplicated):
Node 24 -> 26 (.nvmrc, every Dockerfile stage, CI node-version, engines, @types/node), TypeScript 6.0.3,
Angular/CDK/Material 22.2.2, Nx 23.3.0, NestJS 12.1.3, Electron 44.7.0, Jest 30.5.2, and the rest to latest.

- Nebular has no npm release for Angular 22: vendor/nebular holds 18.0.0 built from the open upstream port
  (akveo/nebular#3319, commit 9f3a1f9; sha256 in the README), referenced as file: dependencies and pinned in
  resolutions. Remove it when Nebular publishes.
- resolutions: one copy each of @nestjs/* 12 (including under the plane-api integration, which still
  declares Nest 11), moment, graphql 16, ioredis 6 and @jridgewell/sourcemap-codec (the Angular schematics
  need encodeRangeMappings).
- TypeScript 6 changed defaults the code was written against; tsconfig.base.json and the Electron configs
  pin strict, esModuleInterop and noUncheckedSideEffectImports to false, and the Electron configs keep
  rootDir ./src (output layout). types: the configs that relied on the automatic @types sweep list theirs.
- Angular migrations rewrote the tsconfigs (strictTemplates off where it was implicit; extendedDiagnostics
  only where strictTemplates is on, NG4003).
- Jest: NestJS 12 is ES modules, so the Node projects run with --experimental-vm-modules and load ES
  modules natively (transforming one to CommonJS breaks it under the flag: uuid 14 and jose 6 threw
  "exports is not defined"); the Angular projects must run without the flag. jest.preset.js picks the
  transform rule from the mode the process runs in; the workspace .env.test sets the flag and each Angular
  project's .env.test clears it; test-unit.yml runs the two groups separately, with the list from
  .github/scripts/jest-angular-projects.js (which also fails when an Angular project lacks its .env.test).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 01:36:29 +02:00
Ruslan KonviserandClaude Opus 5.5 2ea69c9f00 Merge origin/feat/platform-extensions (0f28100f15) into chore/update-packages-v2 (#10520)
Conflicts resolved (develop since 10-10 vs feat):
- packages/core/src/lib/tasks/task.service.ts: import both ForbiddenException (develop #10509
  deleteTask) and NotFoundException (feat softDeleteTask/recoverTask/taskByNumber).
- packages/core/src/lib/request-approval/request-approval.service.spec.ts: develop #10497 rewrote
  this file into its MySQL join spec and dropped feat's six GHSA-gwpq-mmw7-vx85 tenant-scope tests.
  Keep both: develop's spec stays here, feat's suite moves to request-approval.service.approvers.spec.ts
  (the two need different @gauzy/config module mocks).
- .gitignore: keep both additions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:26:16 +02:00
Ruslan KonviserandClaude Opus 5.5 e51900435c Merge origin/develop (541650bfc8) into chore/update-packages-v2 (#10519)
Conflicts resolved:
- package.json: keep this branch's Nx 23.1.1 / webpack 5.108.4 / verdaccio 6.8.0 pins,
  take develop's new typescript-eslint and its removal of @nx/eslint-plugin-nx.
- apps/gauzy/project.json: develop's jest.config.ts (the file that exists).
- ai-provider-* project.json: develop's type:plugin tags.
- yarn.lock: develop's for now; regenerated after the feat/platform-extensions merge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:19:32 +02:00
evereqandClaude Opus 5 bc0aae862f Merge branch 'develop' into feat/platform-extensions
The branch was 121 commits behind and the pull request was unmergeable. Nine files
conflicted; every one is resolved as a union, so nothing either side added is lost:

- `core/project.json` — takes develop's `tags: ["type:core"]`.
- `core/src/index.ts` — keeps the kernel exports and adds develop's `auth/purpose-token`.
- `bootstrap/index.ts` — CORS now allows both header sets (`X-APP-ID`, `X-API-KEY`,
  `X-Channel-Id`, `Idempotency-Key`, `If-Match`, `If-None-Match` and `X-Correlation-Id`)
  and keeps develop's `exposedHeaders`.
- `crud.service.ts` — keeps this branch's `findOneByOptions(): Promise<T>` (a miss raises,
  which is what the route contract wants) and adds develop's `assertRelationsPermitted`
  guard, which is a security check and must run on this path too.
- `column-numeric-transformer.pipe.ts` — keeps develop's `roundToScale` half-away-from-zero
  rounding and its refusal of a non-finite value, and keeps this branch's `undefined`
  pass-through so a column's own `DEFAULT` still applies when the caller omits the field.
  `to()` now distinguishes `undefined` (omit from the statement) from `null` (clear it).
- `shared/pipes/index.ts`, `role.module.ts`, `time-log.module.ts`, `time-slot.module.ts` —
  both sides' providers, exports and re-exports.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 00:31:24 +02:00
Trapa-EurekaandClaude Opus 5 d810c81cf3 feat(core): persistence invariants, config/boundary validation, migration smoke test and correlation IDs (#10198)
Adds test harnesses for tenant isolation, TypeORM/MikroORM parity, persistence invariants and idempotency; startup validation for DB config; Nx plugin/core boundary rules; a fresh-database migration smoke test; and a correlation id carried from HTTP requests into docs queue jobs and logs.

Testing (packages/core/src/lib/core/testing):
- tenant-isolation: an in-memory tenant-aware repository, fixtures and strict assertions (a non-empty page, every row in the caller's tenant). Applied to EmployeeService and OrganizationProjectService.
- orm-conformance and persistence-invariants: suites that run the same checks under TypeORM and MikroORM (run-both-orms.sh uses yarn nx).
- idempotency: assertion helpers and specs for token cleanup (positive control), employee notifications and the Zapier timer webhook.
- database/migration-smoke.spec.ts: runs the full migration chain on a fresh better-sqlite3 database. It is excluded from the default core jest run; run it with `nx run core:test-migration-smoke`.

Idempotency:
- EmployeeNotificationService.create() takes an opt-in `absorbRedelivery`. With it set, an identical unread, unarchived notification under 60 s old (same receiver, entity, type, sender, title and message) is returned instead of inserted, and a missing key or a failed lookup inserts as usual. The event handler does not enable it (the in-process EventBus never redelivers), so every caller inserts one row per event as before.
- ZapierWebhookService skips resending a webhook that already succeeded for the same subscription, action and time log within 5 minutes. The key is reserved while in flight, failed deliveries stay retryable, pruning stops at the first unexpired entry, and the cache is capped at 10,000 entries.

Config (packages/config):
- An unknown DB_TYPE fails fast with the list of supported values; an empty DB_TYPE still means better-sqlite3; mongodb throws an Error.
- Pool and timeout variables are parsed with Number.parseInt semantics, only for postgres and mysql. They throw only where tarn already refused to start and warn otherwise. SQLite ignores them and still prints the startup values.

Observability:
- RequestContextMiddleware accepts an inbound x-correlation-id of 1-128 visible ASCII characters (otherwise it generates a UUIDv4) and echoes it on the response. CORS allows and exposes X-Correlation-Id. RequestContext.currentCorrelationId() is added.
- The docs queue carries the correlation id through job payloads (including bulk reindex) into pipeline outcome, error, dead-letter and enqueue-failure logs.

Boundaries and build:
- Every project gets a type tag. The ESLint depConstraints stop type:core depending on plugins, and plugins may depend only on core, shared libs and the known extension points (ai-chat, job-proposal, integration-ai, job-*-ui).
- core declares @gauzy/scheduler (package.json and implicitDependencies); the webapp Dockerfile copies scheduler's package.json.
- The integration-zapier jest config can import @gauzy/core (transformIgnorePatterns, allowJs, isolatedModules).
- Fixes the stale @nrwl/nx eslint-disable id in the e2e roles-permissions steps and the broken @gauzy/core mock in the docs document-scope spec.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 23:35:52 +02:00
Ruslan Konviser c1ffe16dd6 fix(plugin,plugins): the entity cycles and the boot faults that only a real start could show
The build was green and the server would not start. Everything here was found by starting it, and
none of it was visible to a type-checker.

**`dependsOn` was enforced for one of its two spellings.** The resolver indexes a plugin under its
class name and its package name, but a plugin that imports its prerequisite declares the *class* —
which is legal, and was unresolvable, so the boot was refused with a message naming a prerequisite
that was sitting in the list. Both spellings are now indexed. Fifteen of the sixteen packages booted
in exactly the order their declarations imply once this was right.

**A bidirectional relation made two entity files import each other, and one of them read the other
before it existed.** The compiled decorator metadata reads the property's *type*, and `typeof X` does
not cover a class that exists but is not yet initialised — that guard is for a name that does not
exist. Whether it throws depends only on which file the loader reaches first, so this is a landmine
rather than a style question: the same code that boots today can fail after an unrelated reordering.
The warehouse package's seven relation properties are now typed by their contract interface, which is
what the platform's own entities do and what erases at compile time. Seventy-one more properties
across nine packages have the same shape and are recorded as a known hazard by a check script; they
did not trip, and converting them needs an interface each that does not exist yet.

**`promotion` declared its entity list beside its own plugin class.** The module registers those
entities and the plugin declares them, so the module imports the array and the plugin imports the
module — a cycle in which the array is undefined when the module reads it, and the boot fails with a
message about `entities` that names no entity. The list lives in its own module now, which both of
them import.

**The promotion migration declared a primary key twice in its SQLite branch**: the inherited columns
already carry one, and each table also named a `CONSTRAINT ... PRIMARY KEY`. SQLite refuses that
outright. The PostgreSQL and MySQL branches need the named constraint — their inherited columns do
not declare one — so the fix is in the SQLite statement builder alone.

**The fresh-install feature catalogue** is committed separately; this is the rest of what a real boot
demanded.

Verified: the API builds (65 tasks, webpack clean, 65 packages copied into `dist`) and starts with all
sixteen commerce plugins registered, in dependency order, against a database the migrations took to
399 tables and 337 applied migrations. The permission and feature seeds are applied (SUPER_ADMIN 381
enabled grants, ADMIN 349, 90 catalogue rows, 66 toggles) and a real commerce write now answers 201
over REST where it answered 403 before. One defect remains open and is not hidden by that: the
GraphQL collection query passes its guards and then throws inside the resolver, so the field fails a
non-null check; and the REST surface requires the caller to state its tenant in the `tenant-id`
header, which the end-to-end script now does.
2026-09-17 16:52:33 +02:00
Ruslan Konviser 107fc5ad10 feat(kernel): the schema extensions, the permission and feature seeds, and the wiring that makes dependsOn real
Everything here is foundation work the commerce packages sit on. It is one commit because the parts
are load-bearing for each other: the columns the plugins reference, the grants that let anyone call
them, and the plugin list that mounts them in a defined order.

**The additive columns the specification requires.** `AlterCoreTablesForExtensions1791000000095` adds
126 columns and 54 indexes across thirteen platform tables — product identity and publication,
variant measures and units, warehouse type and cut-off, currency precision and rounding, the contact
party fields, tenant-scoped settings, the payment row's authorization and settlement amounts, vendor
terms, and the invoice's payment-term and vendor pointers. Every addition is guarded, so the
migration is a no-op when a column is already there, and every index is created only after asking the
dialect's own catalogue whether the name is taken. SQLite carries no table rebuild: each statement is
an `ADD COLUMN` or a `CREATE INDEX`, verified by executing the real migration against a real
in-memory database, twice, and then reversing it. The two mistyped search columns are corrected at
creation — `jsonb` on PostgreSQL, `json` on MySQL, `text` on SQLite, which is what each entity's
decorator produces — and the PostgreSQL generated search vector casts through `::text`, because a
`jsonb` column has no implicit cast and the old expression would have failed `CREATE TABLE` outright.

**Commerce permissions never reached a role.** The platform grants what `DEFAULT_ROLE_PERMISSIONS`
lists, and none of this programme's permissions were in it, so every commerce endpoint answered 403
to every user including the owner. `PermissionsEnum` gains 117 members, the defaults gain 174 grants
for SUPER_ADMIN and 143 for ADMIN, and `PermissionGroups` gains all 174 so the role editor can show
and grant them. Three data-only migrations follow: `CoreRolePermissionsReload1791000000500`,
`SeedCoreFeatures1791000000510` and `SeedCoreDefaults1791000000520`. The reload delegates to the
platform's own insert-only helper, and additionally enables rows that already exist disabled — 51 of
the 174 had been created disabled by an earlier seed, which the helper would never revisit — limited
to the resource prefixes this programme introduces, so a tenant's own decision elsewhere is
untouched. The defaults seed runs nine steps, each guarded by both the schema and the row, and
reports each step it skips because its table or column does not exist yet rather than failing the
boot; on today's schema it seeds the default tax category, a price preference and the seven document
numbering series.

**The feature flag cache served one tenant's answer to every other tenant.** `FeatureFlagGuard` asked
`FeatureService` a question whose answer is tenant-scoped and cached it under a key that was not:
the first tenant to resolve a flag stored its own answer where every other tenant read it. The key
now carries the tenant and the organization, the entry has a bounded lifetime, and a context with no
request resolves a stable key instead of throwing. This is a data-exposure bug, not a performance
one, and it becomes reachable the moment tenants hold different flag sets — which the seed above
makes true for the first time.

**`dependsOn` was a declaration nothing read.** `resolvePluginLoadOrder` existed, was documented, and
was never called, so a plugin could be mounted before the package whose tables it references; the
order was whatever the list happened to say. It is now applied where the plugin list is installed, so
a declared prerequisite loads first and a prerequisite that is missing is refused at boot with the
plugin and the dependency named, rather than surfacing later as a missing provider. The resolver also
answers to the bare stem a dependency is written with — `dependsOn: ['pricing']` — because a
declaration that resolves only under one spelling turns a correct declaration into a boot failure.

**The HTTP error filters crashed on every GraphQL failure.** Both global filters render an HTTP reply,
and both were consulted for GraphQL contexts, where the host's response object has no `status`
method: a resolver that threw reported `response.status is not a function` and the caller's real
error was lost behind it. Each filter now recognises a context that has no HTTP response and steps
aside, and the documented GraphQL error contract is wired to the driver's `formatError` — the same
stable code, the status the REST route would have answered, the structured detail and the trace id —
so a client switching on `extensions.code` no longer needs a second table for the GraphQL surface.

**The outbox retry ladder was unreachable, and its ordering promise did not hold.** A failed dispatch
wrote `FAILED` with a backoff while the claim query selected `PENDING` only, so an event that failed
once was never retried and never dead-lettered; and because the head-of-line rule was computed over
the rows the query could see, the next event of the same aggregate overtook it. The claim now reads
every non-terminal row, takes each partition's *first* row as its head, and holds a partition back
while its head is inside its backoff — so a retry happens, the attempt budget still ends in
`DEAD`, and no partition is ever dispatched out of order.

Smaller corrections in the same pass: `tax-line` refuses one owner that mixes an inclusive and an
exclusive line of one rate, under the documented `TAX_INCLUSIVE_MISMATCH` code; `sequence.allocate`
takes an idempotency key so a retry does not burn a number, and `ensure` keeps the scope its caller
stated instead of overwriting it with an absent request context; `packages/contracts` re-exports the
fulfilment model its barrel had never reached, which is why that package could not build.

Not everything is wired yet: the build is red on twenty-nine `TS2416` errors where three packages'
controllers override the CRUD base with a DTO-typed parameter, and that is being fixed separately.
The permission reload, the feature seed and the defaults seed have been executed against a copy of
the local database (SUPER_ADMIN 234 → 381 grants, idempotent, reversible) but the application has not
been booted with them yet.
2026-09-17 14:59:31 +02:00
Ever Gauzy Agent f7cee7f6fd fix(build,plugin): unblock the core build and let a prerequisite be declared by package
Three fixes, all found by agents reading the real toolchain instead of guessing.

**The core build.** nx's tsc executor sets rootDir to the project root, and rewrites the path
mappings of a project's declared dependencies to their built output. core imports scheduler, but
scheduler was the one sibling missing from core's implicitDependencies, so it alone was never
remapped and resolved to source - outside rootDir. The same bare compile without the remapping
reports 383 of these across eight packages, so scheduler was never special; it was simply the one
nx had not been told about. One name added to a list that exists for exactly this, and the count
is zero.

**BaseEvent was unreachable.** The event-bus barrel exported four modules and omitted the one
defining BaseEvent, so every domain publishing an event off it failed to compile against
@gauzy/core - nineteen errors across two packages from one missing line.

**A prerequisite may now be declared by package name, in the type as well as at runtime.** The
loader was taught to resolve a package name last round, but the declaration still said classes
only, so three packages cast their way around the type. The declaration and the accessor now both
say what the runtime accepts, the cast inside the loader is gone, and a plugin can declare what it
must load after without importing it - which is the only way to express a prerequisite on a
package that is not independently importable.
2026-09-17 04:22:34 +02:00
Ever Gauzy Agent d275b8b4a3 fix(plugin): resolve a declared prerequisite named by package, not only by class
A plugin may declare what it must load after either as the plugin class or as the
package name. The class form is the one the compiler checks; the package form is
not a mistake, because it is the only way to declare a prerequisite on a package
the declaring plugin must not import at build time.

The resolver could not express that. It built a Set of the configured plugin
classes and tested membership against it, so a package name could never be a
member and every plugin declaring one threw. The message made it worse: it
reported `dependency.name`, and a string has no `name`, so an operator was told
the plugin required "an unnamed plugin" with nothing to search for.

Configured plugins are now indexed under both spellings they answer to - the
class name, and the package name derived from it - and a missing prerequisite is
reported as it was written. What is looked up is the plugin identity, and what is
visited and emitted is the entry as configured, so a dynamic module is still
loaded as itself.

Three packages here declare prerequisites by package name, so this is the
difference between the dependency metadata being usable and being a trap: wired
up as it stood, it would have failed the boot of the first plugin it reached.

Also corrects a comment in the API plugin list that claimed the platform resolves
the declared load order. It does not yet: the migrations are ordered by the
platform, the plugin list is not, and the list is kept topologically sorted by
hand until every declared prerequisite is itself registered.
2026-09-17 03:50:11 +02:00
Ever Gauzy Agent b2b67ca5c2 feat(core): one query grammar for both API surfaces
A list route has always accepted filters, a sort, a page, a sparse fieldset and a
relation expansion, and each route grew its own reading of them. The two surfaces
then had to agree about what a query means, which is not something two
hand-written readers reliably do.

So the grammar is now one set of pure functions. REST spells it as a query
string, GraphQL as generated input types, and both hand the result to the same
parser, which is why they cannot disagree: there is one implementation and it
takes values rather than a request. That is also what makes the grammar testable
at all — a query language whose behaviour can only be observed through an HTTP
request is one nobody regression-tests.

What the layer decides:

- Every filter field and every sort field is checked against what the resource
  declares, so a caller cannot filter on a column it was never offered, and a
  refusal carries the allow-list it was measured against rather than just saying
  no.
- A value is coerced to the field's declared kind, and a coercion that would
  change meaning is refused instead of performed. Money is the sharp edge: a
  fractional JSON number has already lost the caller's precision by the time it
  arrives, so it is rejected in favour of a decimal string. `isNull` carries a
  boolean rather than a bare null, so the translator can only ever emit an
  explicit null test — the historical null-semantics trap stays closed.
- The grammar is statically bounded rather than dependent on how deep a caller is
  willing to nest brackets: a filter path is at most two segments, a boolean group
  nests at most two levels, and the group, list, key, sort, field, expand and byte
  caps all live in one table, so a limit cannot be raised on one surface and
  forgotten on the other.
- A cursor names a position in one specific order, so it carries a fingerprint of
  the sort it was minted under and is refused if presented against a different
  one. An offset request and a cursor request are alternatives; asking for both is
  refused rather than resolved.
- The legacy single-JSON parameter keeps working, and stays as forgiving as its
  callers need: a field it may no longer sort by is dropped rather than refused,
  because those callers have been sending the same order objects for years and
  must not start receiving errors for them.

A plugin declares its resources the same way a built-in one does. The platform
unions the declarations, so a plugin's list endpoint is served by the generated
GraphQL inputs on exactly the same terms as a core resource, and no plugin has to
reimplement the grammar to be reachable over both protocols.
2026-09-17 02:39:37 +02:00
Ruslan Konviser 62c12f5ee3 fix(graphql): make the resolver graph work and let a key caller preflight
Four defects that together made a plugin-contributed GraphQL resolver
impossible and blocked browser clients that authenticate with a key pair:

- The tenant guard asked the execution context for an HTTP request
  unconditionally, so the tenant guard chain threw on every GraphQL operation.
  Authenticated guards already branch on the operation type; the tenant guard
  now does too, and checks the stated tenant only when the caller states one.
- A plugin could declare resolvers but nothing read them. The resolver host is
  now a dynamic module that imports every plugin module, so a contributed
  resolver can inject the services of the plugin that contributed it.
- The allowed header list omitted the key pair, the channel header and the
  retry-safe write headers on all three CORS configurations, so a browser
  client could not preflight.
- Resolver and scalar readers are exported from the plugin package.
2026-09-17 01:36:32 +02:00
Ruslan Konviser df818abc90 feat(plugin): plugin-owned migrations and plugin contributions registry
Adds four additive metadata keys to the plugin decorator so a package can ship
what it owns instead of editing platform files:

- migrations: the migration classes for the tables a package owns are merged
  into the connection's migration list before the connection is created, and
  ordered by each migration's own timestamp. A missing or duplicated timestamp
  is refused at boot rather than applied in file-system order.
- permissions and features: a package declares the permission values and feature
  flags it needs; the platform unions them with the built-in catalogue at boot.
- settings: a package declares the settings it reads, with types, defaults,
  scope and secret marking, so the value always comes from the settings store.
- dependsOn: prerequisites are ordered deterministically and a missing or
  circular dependency is refused at boot.

The contribution registries are global because contributions are consulted from
the role guard, the feature guard, the catalogue endpoints and any service that
reads a declared setting.
2026-09-17 01:22:28 +02:00
Ruslan KonviserandClaude Opus 5 52ae8427fe Fix: make ESLint runnable again across the workspace (#10117)
No lint invocation in this repo could reach a single file. `nx run-many -t lint --all` failed for
93 of 93 projects, and no CI workflow runs lint, so nothing ever noticed. Two independent bugs,
either of which alone was fatal.

1. The root `eslint.config.js` was `module.exports = new FlatESLint({ overrides: [] })`, importing
   a `FlatESLint` class from `@nx/eslint-plugin-nx`. That could never have worked: a flat config
   must export an array, and no Nx package has ever exported such a class. `@nx/eslint-plugin-nx`
   is the beta-only predecessor NAME of `@nx/eslint-plugin` — the repo declared both, the real one
   at ^22.5.2 and this one pinned at 16.0.0-beta.1. The v16 beta drags a nested `@nx/devkit@16`
   that expects an `nx` internal path nx@22 no longer ships, so every `eslint` invocation died
   with `Cannot find module 'nx/src/utils/typescript'`.

2. All 41 project configs did `[...require('../../.eslintrc.json')]`. That file is a JSON object,
   so the spread threw `TypeError: baseConfig is not iterable` — a different failure, on the path
   `nx lint <project>` actually takes. `packages/mcp-server` also had the wrong depth.

Changes: remove `@nx/eslint-plugin-nx`, add `typescript-eslint@^8.40.0` (the only genuinely
missing package — `@nx/eslint-plugin`'s flat configs require it unconditionally); rewrite the root
config as a real flat array shaped like Nx 22's own generator output, with real `ignores`
replacing the legacy `"ignorePatterns": ["**/*"]` that disabled linting workspace-wide; repoint
all 41 project configs at the root flat config, dropping the FlatCompat bridge the 12 `.cjs` ones
used; disable the deprecated `@typescript-eslint/no-empty-interface`, which Nx's presets still
enable alongside its v8 replacement `no-empty-object-type` and so double-reported every
occurrence; and re-enable `no-dupe-keys`, `no-dupe-class-members`, `no-dupe-args` and
`no-unreachable`, which typescript-eslint's `eslint-recommended` overlay turns off on the grounds
that `tsc` reports them — no CI job here runs `tsc --noEmit`, and a duplicate key in
`packages/core/jest.config.ts` has already silently changed behaviour once.

The legacy `.eslintrc.json` files are deliberately KEPT: `.codacy/codacy.yaml` pins eslint@8.57.0,
which does read them.

The guardrail is proven, not assumed — against the real historical bug:

    packages/core/jest.config.ts
      29:2  error  Duplicate key 'transformIgnorePatterns'  no-dupe-keys

Findings are REPORTED, NOT FIXED (a separate job): 8,887 files linted, 2,290 with problems,
2,649 errors / 6,110 warnings, zero parse errors. Lint should not become a required check until
that backlog is triaged.

Verified: packages/core 56/56 suites and 612/612 tests; build-monorepo-root, build-api, build-libs
and build-web all green; all 42 configs load; `nx lint <project>` now runs and reports instead of
crashing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-05 13:07:25 +02:00
rahul-rocketandClaude Opus 5 ff85b183fb chore: revert TypeScript 6.0.3 back to 5.9.3
Pin typescript to ^5.9.3 across the root package.json and all app/package
manifests, and drop the TypeScript 6 only compiler options that came with
the upgrade:

- Remove "ignoreDeprecations": "6.0" from every tsconfig.
- Remove the strict/noUncheckedSideEffectImports/types/esModuleInterop
  overrides added to tsconfig.base.json for the TS 6 trial.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 13:30:40 +05:30
rahul-rocket 98c92e2f13 chore: align dependency versions across all sub-packages
Align package versions to ensure consistency across the monorepo:

- typescript: ^5.9.3 -> ~6.0.3 (43 sub-packages)
- @nestjs/common: ^11.1.14 -> ^11.1.26 (6 AI plugin peerDeps)
- @nestjs/core: ^11.1.14 -> ^11.1.26 (6 AI plugin peerDeps)
- @nestjs/swagger: ^11.2.6 -> ^11.4.4 (ai-chat)
- @types/express: ^5.0.1 -> ^5.0.3 (7 plugin packages)
- tslib: ^2.3.0 -> ^2.6.2 (integration-plane, scheduler)
- mysql2: ^3.16.3 -> ^3.17.3 (core, agent, desktop-timer)
- ts-jest: 29.4.6 -> 29.4.9 (core)
- jest: 30.0.0 -> 30.3.0 (core)
- zod: ^4.1.13 -> ^4.3.6 (ai-chat)
2026-08-08 12:39:41 +05:30
rahul-rocket f2da543ecc chore: upgrade TypeScript from 5.x to 6.0.3
- Add ignoreDeprecations: '6.0' to tsconfig.base.json and all sub-package tsconfig.json
- Add TS6 compat flags to tsconfig.base.json: strict: false, noUncheckedSideEffectImports: false, types: ['*']
- Reformat electron tsconfig files to use tabs consistently
- Fix path formatting in root tsconfig.json
2026-08-08 12:39:41 +05:30
Ruslan KonviserandClaude Opus 4.8 5cb11b5a9e chore(deps): consolidate dependency bumps across the monorepo
Max every dependency within its current major, applied consistently across all
package.json files (root, apps, packages, plugins, bundled */src). Supersedes the
open Dependabot PRs #9628/#9633/#9638/#9646/#9656/#9657/#9666/#9677/#9685/#9688/
#9703/#9704/#9708/#9712/#9713.

Backend: @nestjs/* -> 11.1.26 (+ satellites to latest in-major), @mikro-orm/* ->
6.6.14 (fixes CVE-2026-34220, supersedes #9704), typeorm -> 0.3.30, pg -> 8.21.0,
pg-query-stream -> 4.15.0, axios -> 1.18.0, ws -> 8.21.0, joi -> 17.13.4,
nodemailer -> 8.0.11, uuid -> 14.0.0, follow-redirects pinned ^1.16.0 via resolutions.
Frontend/build: lodash-es -> 4.18.1, dompurify -> 3.4.10, simple-git -> 3.36.0,
esbuild -> 0.28.1.

Deferred to dedicated migration PRs (breaking majors): typeorm 1.0, @mikro-orm 7,
the @opentelemetry 0.57->0.21x constellation (#9692/#9693 can't merge piecemeal),
electron 39 (desktop, version-coupled in build scripts), joi 18.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 22:46:35 +02:00
b161467904 chore: update Angular to v21 (#9390)
* @rahul-rocket chore(deps): chore(deps): bump @angular/core from ^20.2.4 to 21.1.2

* fix(ui): update missing jest.preset.js

* fix(nx-migrations): migrate nx from 21.5.1 to 22.4.4

* chore(deps): bump jest-preset-angular to 16.0.0

* chore(deps): bump @nebular/* packages to 17.0.0 for Angular 21 compatibility

* chore(deps): upgrade all packages to Angular 21 and compatible dependencies

* chore(deps): upgrade all packages to Angular 21 and compatible dependencies

* fix(nx-migrations): migrate nx from 21.5.1 to 22.4.4

* Update yarn.lock

* Update yarn.lock

* fix(nx-migrations): migrate nx from 21.5.1 to 22.4.4

* fix(nx-migrations): migrate nx from 21.5.1 to 22.4.4

Replace 'jest-preset-angular/setup-jest' imports with the new 'setupZoneTestEnv' function.

* @nx/jest: replace-removed-matcher-aliases-v22-3

Replace removed matcher aliases in Jest v30 with their corresponding matcher

* chore(deps): @angular/common and @angular/core peerDependencies to ^21.1.0

* Update package.json

* fix(nx-migrations): migrate nx from 21.5.1 to 22.4.4

* chore(deps): bump @nebular/theme from ^16.0.0 to ^17.0.0

* chore(deps): upgrade all packages to Angular 21

* chore(deps): upgrade all packages to Angular 21

* fix(build): update helmet import to support 8.x default export

* fix(build): resolve TypeScript errors and improve code quality

- Fix TemplateRef type conflicts caused by duplicate @angular/core packages (ngx-permissions)
- Change moment imports from namespace to default imports for ESM compatibility
- Convert constructor injection to inject() function in multiple components
- Add OnPush change detection strategy to WindowLayoutComponent
- Make CountdownConfirmationComponent standalone
- Update LayoutWithDraggableObject to use any[] for draggableObject type

* fix(build): fix moment & timezone namespace packages

* fix(build): add jest config for missing packages

* chore(deps): bump swiper from 8.3.1 to 12.1.0

* fix(build): update swiper module and syntax

* Update time-tracking.component.ts

* chore(deps): downgrade `node-polyfill-webpack-plugin` from 4.1.0 to 1.1.4

* fix(deps): resolve browserslist "Unknown version 143 of and_chr" error

Add caniuse-lite and browserslist to yarn resolutions to force all

* fix(nx-migrations): migrate nx from 21.5.1 to 22.4.4

* fix(deps): standardize Angular 21.0.0 versions across all packages and fix compatibility issues

- Fix @angular/* packages to use exact version 21.0.0 (remove caret ^) across all apps, packages, and plugins
- Add @angular/cdk resolution to 21.0.0 to force consistent version

* fix(build): `ui-config` replace env files module issue

* fix(build): `ui-config` replace env files module issue

* fix(build): replace all TemplateRef<HTMLElement> with TemplateRef<any>

* Update package.json

* Update apps\agent\tsconfig.json

* chore(deps): upgrade packages to latest version

* Update yarn.lock

* Update yarn.lock

* fix(build): apply AI suggestion by bot agent reviewers

* fix(build): apply AI suggestion by bot agent reviewers

* fix(nx-migrations): migrate nx from 21.5.1 to 22.4.4

* chore(deps): bump @nestjs/common and @nestjs/core to 11.1.14

* fix(build): replace all TemplateRef<HTMLElement> with TemplateRef<any>

* fix(plugins): apply AI suggestion by bot agent reviewers

* Update yarn.lock

* chore(deps): bump packages

* Update yarn.lock

* chore(deps): bump packages

* chore(deps): bump packages

* fix(plugins): replace 'jest-preset-angular/setup-jest' imports with the new 'setupZoneTestEnv'

* fix(plugins): apply AI suggestion by bot agent reviewers

* fix(cspell): typo spelling :-)

* fix(plugins): apply AI suggestion by bot agent reviewers

* fix: fontawesome icon change version to FA 7

* refactor(ui-core): migrate dashboard directives to standalone

* refactor(ui-core): migrate pipes/directives to standalone

* fix(plugins): apply AI suggestion by bot agent reviewers

* fix(plugins): apply AI suggestion by bot agent reviewers

* chore(deps): bump packages

* refactor(ui-core): migrate directives to standalone

* fix(plugins): apply AI suggestion by bot agent reviewers

---------

Co-authored-by: Ruslan Konviser <evereq@gmail.com>
Co-authored-by: syns2191 <sutralian@gmail.com>
2026-02-20 09:52:34 +01:00
Rahul R. b4f182c07c fix(plugins): apply AI suggestion by bot agent reviewers 2026-02-18 16:21:18 +05:30
Ruslan Konviser 9804ca0754 fix: builds 2026-02-01 15:24:22 +01:00
Rahul R. 8a4a8edd52 chore(deps): upgrade packages (#9387)
* chore(deps): bump typescript from ^5.8.0 to ^5.9.3

* chore(deps): bump tslib from ^2.3.0 to ^2.6.2

* Update yarn.lock

* Update apps\desktop-timer\src\package.json
2026-01-31 13:10:37 +01:00
Rahul R. ab6c4d549f chore(deps): downgrade tslib from 2.6.2 to 2.3.0
fix(ui): downgrade tslib to resolve Angular build warnings
fix(build): downgrade tslib to 2.3.0 for Angular compatibility
2026-01-31 14:36:10 +05:30
Rahul R. 947bf55f8d chore(deps): bump @ng-select/ng-select from ^14.9.0 to ^20.7.0 2026-01-31 11:30:36 +05:30
Rahul R. 20e0bc6f3d chore(deps): upgrade to Node 24 LTS compatible versions
- ngx-countdown: ^19.0.0 → ^20.0.0
- ngx-draggable-dom: ^19.0.7 → ^20.0.0
- @types/node: ^20.14.9 → ^24.10.0
2026-01-24 12:30:52 +05:30
Rahul R. 2b2b43df88 Reapply "fix: trying to faster build for packages"
This reverts commit dcbea3ba59.
2026-01-24 11:03:37 +05:30
Rahul R. dcbea3ba59 Revert "fix: trying to faster build for packages"
This reverts commit c3c0cc29e2.
2026-01-23 19:11:35 +05:30
Rahul R. c3c0cc29e2 fix: trying to faster build for packages 2026-01-23 13:27:01 +05:30
Rahul R.anddependabot[bot] 514dbc258b chore(deps): packages updates (#9340)
* chore(deps): bump nx from 21.1.0 to 21.2.0

* chore(deps): chore(deps): bump @angular/core from ^19.2.17 to ^20.0.7

- Update @angular/common and @angular/core peerDependencies from ^19.2.17 to ^20.0.7 across all UI packages
- Upgrade @nebular packages (auth, eva-icons, security, theme) from ^15.0.0 to ^16.0.0
- Update @nebular/bootstrap from ^9.1.0-rc.6 to ^9.1.0-rc.8

* chore(deps): upgrade all packages to Angular 20 and compatible dependencies

Angular packages updated to ^20.0.7 (cdk/material to ^20.0.6):
- @angular/animations, common, compiler, core, forms, language-service
- @angular/platform-browser, platform-browser-dynamic, router, service-worker
- @angular/cdk, @angular/material

* chore(deps): bump @swimlane/ngx-charts from ^22.0.0-alpha.1 to ^23.0.0

* fix(deps): upgrade Angular 20 compatible third-party packages

- @angular-slider/ngx-slider: ^19.0.0 → ^20.0.0
- @bluehalo/ngx-leaflet: ^19.0.0 → ^20.0.0
- @swimlane/ngx-charts: ^22.0.0-alpha.1 → ^23.0.0

* chore(peer-deps): downgrade @angular/core to ^20.0.0

* chore(deps): bump nx from 21.1.0 to 21.2.0

* fix: resolve Angular control flow migration errors

* chore(deps): bump nx from 21.1.0 to 21.2.0

* chore(deps): bump tar from 7.4.3 to 7.5.3

Bumps [tar](https://github.com/isaacs/node-tar) from 7.4.3 to 7.5.3.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.4.3...v7.5.3)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump nx from 21.1.0 to 21.2.0

* chore(deps): bump nx from 21.1.0 to 21.2.0

* Update dashboard-skeleton.component.html

* fix: build issue

* refactor(package): simplify `build:package:common` command

* refactor(package): simplify `build:package:core` command

* refactor(package): simplify `build:package:ui-auth` command

* refactor(package): simplify `build📦*` commands

* refactor(package): simplify `build📦*` commands

* chore(deps): upgrade typeorm to 0.3.28 across all packages

* chore(deps): upgrade uuid to 13.0.0

* chore(deps): upgrade moment-timezone to 0.6.0

* chore(deps): upgrade typescript to 5.9.3

* chore(deps): upgrade angular2-smart-table to 4.1.1

* Revert "chore(deps): upgrade angular2-smart-table to 4.1.1"

This reverts commit 42045044ab.

* chore(deps): upgrade typescript to 5.9.3

* chore(build): add CommonJS dependencies to allowed list for `desktop-ui-lib`

* Update menu-item.component.html

* Update menu-item.component.ts

* fix: seeder command

* fix: tasks sprint settings view

* chore(deps): downgrade @ng-select/ng-select from 15.0.0 to 14.9.0

* chore(deps): upgrade terser-webpack-plugin to 5.3.16 and camelcase to 9.0.0

- Update terser-webpack-plugin across all apps
- Upgrade camelcase and fix imports for v9 default export
- Remove unused camelcase from apps/gauzy and root package.json

* chore: upgrade @nestjs/* packages to latest versions

- Upgrade core NestJS packages from 11.1.10 to 11.1.12:
  * @nestjs/common
  * @nestjs/core
  * @nestjs/platform-express
  * @nestjs/testing
  * @nestjs/microservices
  * @nestjs/platform-socket.io
  * @nestjs/websockets

- Upgrade GraphQL packages:
  * @nestjs/apollo: 13.1.0 → 13.2.3
  * @nestjs/graphql: 13.1.0 → 13.2.3
  * Add @as-integrations/express5: ^1.1.2 (required for GraphQLModule)

- Upgrade other NestJS packages:
  * @nestjs/jwt: 11.0.0 → 11.0.2
  * @nestjs/serve-static: 5.0.3 → 5.0.4
  * @nestjs/swagger: 11.1.5 → 11.2.5
  * @nestjs/throttler: 6.4.0 → 6.5.0

- Add camelcase resolution (^9.0.0) to root package.json

Updated across all apps and packages in the monorepo.

* chore(deps): bump dotenv from ^16.0.3 to ^17.2.3

* Update public layout component html

* chore(deps): bump angular2-smart-table from ^3.7.0 to ^4.1.1

* chore(deps): bump dotenv from ^16.0.3 to ^17.2.3

* Update package.json

* chore(deps): upgrade @mikro-orm/* packages to 6.6.4

Upgrade all @mikro-orm packages from 6.4.13 to 6.6.4 across core, config,  plugins, and desktop-api packages.

* perf: optimize API startup (reduce DB retries/timeouts)

* Update selector.abstract.ts

* fix(config): use Number.parseInt and simplify db timeout logic

* Update yarn.lock

* chore(deps): upgrade packages to latest versions

* Update package.json

* chore(deps): upgrade packages to latest versions

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-21 17:08:25 +01:00
Rahul R. 9fac5b43cc fix: update x migration using migrations.json 2026-01-06 16:52:17 +05:30
syns 6a832fa62f Chore/update nestjs 11.1.10 (#9297)
* chore: update yarn.lock baseline

* chore: upgrade @nestjs and related packages from v11.1.0 to v11.1.10
2025-12-24 16:57:22 +01:00
Ruslan Konviser a9ede6e0cb chore: update Node requirements 2025-12-22 23:24:15 +01:00
Ruslan Konviser d1b70b94b1 chore: update NodeJs 2025-06-21 21:15:02 +02:00
Rahul R. 555b300c6b [Chore] Support Nest V11 (#8935)
* chore(deps): bump @nestjs/* from 10.4.15 to 11.1.1

* feat(auth): implement Passport strategies for Microsoft and Keycloak authentication

* chore(deps): bump typeorm from 0.3.20 to 0.3.22

* chore(deps): bump @mikro-orm/* packages to ^6.4.13

* fix(core): correct type handling for applyMikroOrmIndex to resolve strict IndexOptions errors

* Update yarn.lock

* fix: passport different auth strategies

* chore(env): more sample env variables

* refactor(modules): remove unnecessary forwardRef from `TypeOrmModule` & `MikroOrmModule` import

* refactor(modules): remove unnecessary forwardRef

* chore(deps): bump @nestjs/* to latest v11 versions

* chore(deps): bump class-validator from 0.14.0 to 0.14.2

* chore(deps): bump terser-webpack-plugin from 5.3.10 to 5.3.14

* chore(deps): downgrade @aws-sdk/client-s3 from 3.802.0 to 3.717.0

* fix(styles): replace deprecated global unquote() with string.unquote()

* Update pages.component.ts
2025-05-10 08:46:49 +02:00
Rahul R. e6b86f4c9d [Chore] Support Angular v19 (Nx v20.8.0) (#8610)
* chore(nx): migrate @nx/workspace to version 20.3.0

* chore(material): run migration-v19 for Angular Material update

* chore(packages): run explicit-standalone-flag migration for Angular v19

* chore(deps): downgrade TypeScript to 5.5.4 for Angular compatibility

* chore(deps): bump Angular ESLint dependencies to version 19

* chore(deps): bump @ng-select/ng-select to version 14.1.0

* chore(deps): bump @commitlint packages to latest versions

* fix(cspell): typo spelling :-)

* chore(packages): migrate initializers to new provider functions

* chore(deps): update the @angular/cli package version to ~19.0.0

* chore(deps): update packages to support Angular v19

* chore(packages): migrate initializers to new provider functions

* fix: correct Sentry.TraceService injection in AppInitializer

* Update yarn.lock

* Update yarn.lock

* fix: update yarn.lock

* fix(cspell): typo spelling :-)

* fix: update yarn.lock

* chore(deps): bump @angular/common to version 19.0.0

* chore(nx): migrate @nx/workspace to version 20.4.2

* chore(deps): update yarn.lock

* chore(nx): migrate @nx/workspace to version 20.4.4

* chore(deps): bump @angular/core from 19.1.5 to 19.1.6

* chore(deps): upgrade @nebular/auth and @nebular/theme to v15

- Upgrade @nebular/auth from ^14.0.2 to ^15.0.0
- Upgrade @nebular/theme from ^14.0.2 to ^15.0.0

* chore(deps): bump @angular-slider/ngx-slider from ^18.0.0 to ^19.0.0

* chore(deps): bump ngx-page-scroll and ngx-page-scroll-core to v14

- Bump ngx-page-scroll from ^13.0.0 to ^14.0.0
- Bump ngx-page-scroll-core from ^13.0.0 to ^14.0.0

* chore(deps): bump ngx-permissions from ^17.1.0 to ^19.0.0

* chore(deps): bump @ng-select/ng-select from ^14.1.0 to ^14.2.2

* chore(deps): bump @fortawesome/angular-fontawesome from 0.15.0 to 1.0.0

* fix: desktop build (make component standalone disabled)

* chore(deps): bump @angular/core from 18.2.12 to 19.1.6

* chore(nx): migrate @nx/workspace to version 20.8.0

* chore(deps): bump ng2-file-upload to version ^8.0.0

* chore(deps): bump @angular/core from 19.1.6 to 19.2.7

* chore(deps): bump @fullcalendar/core from ^6.1.15 to ^6.1.17

* chore(deps): bump @angular-eslint packages to v19.3.0

* fix: add `standalone: false` to angular components

* chore(deps): downgrade @angular-builders/custom-webpack from v19.0.1 to v18.0.0

* chore(deps): bump angular2-smart-table from ^3.5.0 to ^3.6.1

* refactor(styles): replace @import with @use for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* chore(deps): bump @angular/core from 19.0.0 to 19.2.0

* chore(deps): updated dependencies for `@fullcalendar/angular`

* fix(cspell): typo spelling :-)

* Revert "chore(deps): updated dependencies for `@fullcalendar/angular`"

This reverts commit 4b34d72071.

* chore(deps): switch @angular/* to ^19.2.7

* fix: revert nx migrations.json

* Revert "chore(deps): switch @angular/* to ^19.2.7"

This reverts commit edd9105c51.

* fix: align @angular/cdk version with @angular/core version

* chore(deps): bump @angular-builders/custom-webpack from 18.0.0 to 19.0.1

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* refactor(styles): replace `@import` with `@use` for SCSS module

* chore(deps): bump typescript from 5.5.4 to ^5.8.3

* fix(server-dashboard): remove redundant nullish coalescing from autoStart check

* fix: add suggestions from greptile-apps bot review

* fix: add suggestions from greptile-apps bot review
2025-04-26 15:47:55 +05:30
Rahul R. 712e05c355 fix: added few constants and utils 2025-01-24 12:47:45 +05:30
Rahul R. ececdd5578 refactor: updated @gauzy/utils package 2025-01-22 18:15:14 +05:30
Rahul R. fc291e9b09 fix: update directory paths for packages inside modules folder
This PR updates the `repository.directory` field in the `package.json` files for packages located within the `packages` folder.
2025-01-11 11:58:43 +05:30
Rahul R. 7fa9f09e26 chore: bump @nestjs/* packages to latest versions 2025-01-03 15:28:11 +05:30
Rahul R. 1fd2c13546 fix:imports for CommonJS modules to align with esModuleInterop=false 2025-01-01 18:31:18 +05:30
Rahul R. 9cdaecd5b1 [Fix] Desktop App Build (#8650)
* fix(desktop): full desktop app build

* fix(desktop): full desktop app build

* fix: added missing `packageJson` to `project.json` for desktop libs

* fix(desktop): add missing workspace packages

* fix: dynamically get api base URL

* chore: regenerate contracts library using updated NX generator

* refactor(tsconfig): simplify ui-core sub-package paths with wildcard pattern

* chore: regenerate @gauzy/auth library using updated NX generator

* chore: regenerate @gauzy/common library using updated NX generator

* chore: regenerate @gauzy/config library using updated NX generator

* chore: regenerate @gauzy/plugin library using updated NX generator

* chore: regenerate @gauzy/desktop-lib library using updated NX generator

* chore: regenerate @gauzy/desktop-window library using updated NX generator
2024-12-30 15:49:03 +01:00
b65962343a Merge (#8598)
* chore: regenerate @gauzy/plugin library using updated Nx generator

* chore: regenerate @gauzy/common library using updated Nx generator

* chore: regenerate @gauzy/config library using updated Nx generator

* chore: regenerate @gauzy/auth library using updated Nx generator

* chore: regenerate @gauzy/common-angular library using updated Nx generator

* chore: regenerate @gauzy/plugin-changelog library using updated Nx generator

* chore: regenerate @gauzy/plugin-integration-ai-ui library by Nx generator

* chore: regenerate integration-github library using updated Nx generator

* chore: regenerate @gauzy/core library using updated Nx generator

* chore(deps): bump chalk version from 4.1.2 to ^5.3.0

* chore(deps): downgrade chalk version from ^5.3.0 to ^4.1.0

* fix: nx build core

* chore: regenerate @gauzy/plugin-sentry library using updated Nx generator

* chore: regenerate @gauzy/plugin-product-reviews by NX generator

* chore: regenerate @gauzy/plugin-knowledge-base by NX generator

* chore(deps): removed tslint & rimraf unused packages

* chore: regenerate @gauzy/plugin-job-search by NX generator

* chore: regenerate @gauzy/plugin-job-proposal by NX generator

* chore: regenerate @gauzy/plugin-jitsu-analytics by NX generator

* fix(moment): resolve ESM/CJS import conflict by adjusting moment import syntax

* chore: regenerate @gauzy/plugin-integration-hubstaff by NX generator

* chore: regenerate @gauzy/plugin-integration-jira by NX generator

* refactor: regenerate @gauzy/plugin-integration-upwork by NX generator

* refactor: regenerate @gauzy/plugin-integration-wakatime by NX generator

* fix(moment): adjust import syntax to resolve compatibility issues

* refactor: regenerate @gauzy/ui-config by NX generator

* refactor: regenerate @gauzy/ui-core by NX generator

* refactor: regenerate @gauzy/plugin-integration-* by NX generator

* refactor: regenerate @gauzy/plugin-integration-* by NX generator

* refactor: regenerate @gauzy/plugin-integration-* by NX generator

* refactor: regenerate @gauzy/plugin-integration-* by NX generator

* fix(scripts): update build script for libs to use Nx build command

* fix(deepscan): removed unused imports

* fix(deepscan): removed unused imports

* fix(deepscan): removed unused imports

* chore(libraries): Add public-api files for all libraries

* fix(moment-import): resolve conflicting import statements for moment

* chore(paths): Add path mapping for @gauzy/plugin-integration-ai in tsconfig

* refactor: regenerate @gauzy/desktop-libs by NX generator

* refactor: regenerate @gauzy/desktop-window by NX generator

* fix: resolve conflicting import styles for moment.js

* chore: bump image-size version from 1.0.2 to 1.1.1

* fix: resolve import conflict for 'csv-parser' with consistent import style

* feat: add dynamic watch script for NX projects

* fix(api): update project.json assets path

* refactor: regenerate @gauzy/desktop-ui-lib by NX generator

* chore(dependencies): Move tslib from peerDependencies to dependencies

* refactor(package): Rename package from desktop-libs to desktop-lib

* chore: move desktop-api from packages to apps folder

* chore(desktop): add missing jest.config.ts file for desktop application

* chore(package): added "engines" field for Node.js and Yarn version

* chore(deps): bump @angular-builders/custom-webpack from ^16.0.1 to ^17.0.0

* refactor(config): replace deprecated 'browserTarget' with 'buildTarget' for gauzy application

* chore(deps): bump rxjs from 7.4.0 to 7.8.0

* chore(deps): bump typescript from 5.1.6 to 5.4.5

* refactor: regenerate @gauzy/core by NX generator

* Update packages/core/package.json

* fix: dynamically resolve migrations directory for both src and dist environments

* fix(api): resolve issues with NX API server configuration

* fix(api): resolve issues with NX API server configuration

* fix(api): correct asset public path

* fix(api): correct asset public path for seeds

* fix(api): correct asset public path for seeds

* fix(deepscan): removed unused imports

* fix(deepscan): removed unused imports

* fix: migration configuration settings for dist/src

* fix(deepscan): removed unused imports

* chore(nx): migrate @nx/workspace to version 19.8.10

* chore(nx): migrate @nx/workspace to version 20.1.3

* chore(deps): update packages to support Angular v18

* chore: regenerate @gauzy/desktop app using Nx generator

* chore: regenerate @gauzy/api app using Nx generator

* chore(deps): update packages to support Angular v18

* chore(deps): update packages to support Angular v18

* refactor: regenerate @gauzy/plugin-integration-* by NX generator

* chore(deps): update packages to support Angular v18

* fix(package.json): correct main entry points to ./src/index.js

* fix(package.json): correct main entry points to ./src/index.js

* refactor: regenerate packages libs using NX generator

* wip: building desktop application for windows

* wip: building desktop application for windows

* fix: building desktop apps for windows

* fix: standardize moment.js imports to avoid conflicts

* fix: standardize moment.js imports to avoid conflicts

* chore(deps): bump electron-util from 0.17.2 to 0.18.1

* chore(deps): bump electron-util from 0.17.2 to 0.18.1

* chore(tsconfig): enable `esModuleInterop` in tsconfig.lib.json

* chore(tsconfig): enable `esModuleInterop` in tsconfig.lib.json

* feat: add nx-electron package for Electron app integration

* refactor: regenerate @gauzy/desktop-timer by NX generator

* refactor: regenerate @gauzy/gauzy-server by NX generator

* fix(apps): add missing polyfills.ts

* chore(deps): bump electron from 30.0.1 to 33.2.1

* chore(deps): bump @types/electro from 1.6.10 to 1.6.12

* fix: server build

* feat: update better sqlite and elctron builder

* chore(deps): bump better-sqlite3 from 9.5.0 to 11.6.0

* chore(tsconfig): enable `esModuleInterop` in tsconfig.lib.json

* update build:gauzy-server script in package.json

* chore(build): update ui-core build scripts to include ui-config build dependency

* hore(nx): update implicitDependencies configuration for better build order tracking

* chore(deps): downgrade electron, electron-builder and better-sqlite3

* update better-sqlite3 version from 11.6.0 to 9.6.0 in yarn.lock

* fix: circular dependecies

* fix: project.json: modify build and test targets, add config target

* fix: ng-package.json: changed styleIncludePaths

* fix: circular dependecies: moved social links from auth module to constants, refactored auth module imports and providers, and updated social links component to import from constants.

* fix: project.json: modify index, main, and polyfills settings, and remove aot, vendorChunk, and buildOptimizer options.

* fix: tsconfig files, relaxed TypeScript strict mode, and refactored app constants to use injector.get(GAUZY_ENV) instead of environment

* swap 'index' and 'browser' properties in project.json

* fix ng-package.json and tsconfig.json files in integration-ai-ui package.

* remove implicit dependencies and update output formats in integration-ai-ui project.json

* fix: file paths in index.ts and package.json to include 'browser' directory

* rename "gauzy-server-api" to "gauzy-api-server" in project.json.

* fix: electron-builder version from 33.2.1 to 30.0.1 in various build scripts

* fix(apps): desktop-timer for windows

* chore(deps): pin better-sqlite3 to version 9.6.0

* fix(apps): desktop-timer for windows

* fix(apps): desktop-timer for windows

* refactor(desktop-ui-lib): updated include style paths

* fix(apps): desktop-timer for windows

* fix(apps): api build issue

* fix(apps): desktop-timer for windows

* fix(apps): desktop for windows

* fix: package.json, nx.json, and project.json files with various changes to scripts, configurations, and dependencies.

* feat: add node modules to files

* fix: ignore html

* feat: add new entries points

* fix: static file ui dir path

* fix: package json build

* fix: base href in build option

* fix: blank window

* fix(contracts): resolve merge conflicts and ensure consistency in package

* fix: merged changes from conflicting branches.

* fix: merged changes from conflicting branches.

* fix(deepscan): removed unused imports

* fix(cspell): typo spelling :-)

* fix(apps): full desktop for windows

* fix(apps): full desktop for windows

* feat: create screening task entity and repositories

* feat: create Postgres migration

* feat: add MySQL migration

* wip(apps): desktop server for windows

* feat: generate SQLite migration

* fix(apps): desktop server for windows

* feat: create screening task service

* fix: improve task statuses added cancelled status

* feat: update screening issue method

* feat: task finders, include isScreening filter

* feat: screening task commands

* feat: screening task controller

* refactor(apps): API custom webpack configuration

* refactor(apps): Desktop API custom webpack configuration

* fix(apps): server API for windows

* fix: merged changes from conflicting branches.

* chore: update allowedCommonJsDependencies in build configuration

* chore(deps): bump tsconfig-paths from 3.9.0 to 4.2.0

* chore: add resolve alias generation for Nx libraries

* fix: create screening task add prefix and task number

* fix: resolve migration `yarn run migration:generate` command

* fix: resolve seeder `yarn run seed:all` command

* chore: update `tsconfig-paths-webpack-plugin` to version ^4.2.0 across the workspace

* fix: ui-config dist package resolve path

* refactor: updated custom webpack config

* [Bug] Issue in Opening Appointment bug

* Fix:Issue in Opening Appointment bug

* Fix: Unable to Pick a Date and Time for Appointment

* Remove console log

* chore: add CHANGELOG.md for packages

* fix: update outputPath configuration for packages

* fix: resolve duplicate and inconsistent package references in dependencies

* Fix: Users Can Add Duplicate Employment Types

* Fix: Users Can Add Duplicate Employment Types

* chore: remove "exports" field from package.json

* Fix: Users Can Add Duplicate Departments

* fix: update outputPath configuration for desktop packages

* fix(apps): full desktop for windows

* fix(deps): add missing dependencies

* chore(nx): migrate @nx/workspace to version 20.1.4

* fix(nx): resolve mixed path separators causing project graph conflict

* chore(nx): disable cache for pacages executor

* Fix: Duplicate departments

* chore: remove unused common-angular package

- Deleted the `common-angular` package as it is no longer required.

* chore: remove unused common-angular package

* fix: desktop server issues

* chore(nx): enable cache for packages executor

* chore(nx): enable cache for packages executor

* fix(database): correct migration directory path resolution

* chore: add workspace package references and update dependencies

* chore: update start:api:core script to use NX run command

* chore: add workspace package references and update dependencies

* Fix: Name duplication

* chore: improve logging and structure for start and stop methods

* chore: remove @gauzy/ui-config dependency

* chore(deps): resolve conflicting @types/google.maps versions

* chore(deps): resolve duplicate @types/jest versions

* chore: add 'google.maps' and 'node' types to tsconfig

* Fix: Unable to remove selection when user use “Select All” Option in “Invite Employee” Popup Window

* Fix: Work End Date Can Be Set Before Work Start Date

* Remove console log

* chore(deps): bump copy-webpack-plugin from 9.0.1 to 12.0.2

* feat(build): integrate copy-webpack-plugin for package copying

* fix(build): ensure cross-platform compatibility for packageRoot paths

* fix(build): recursively collect and copy nested packages

* refactor(migrations): simplify migration path resolution

* fix(workspace): update package paths to use built distributions

* refactor: prioritize .env over .env.local

* refactor: move 'serve' configuration under 'options' for project.json

* fix(deepscan): removed unused imports

* fix(workspace): update package paths to use built distributions

* [Feat] Improve Employee Setting (#8585)

* feat: improve employee setting entity and migration

* fix(deepscan): unused import

* feat: add employee setting subscriber

* feat: employee setting create and update services

* feat: employee setting commands

* feat: employee setting API

* fix: employee setting creation

* fix: include tenant in base entity enum

* fix: postgres migration for employee setting

* fix: SQLite employee setting migration

* fix: SQLite and MySQL employee setting migration

* fix: employee setting migration

* fix: setting type storing int values

* fix: env vars

* fix: .env.local

* chore(nx): add defaultCollection configuration for @nstudio/xplat

* Fix: Filters Not Working on “Time Off” Screen

* Format code

* fix(cspell): typo spelling :-)

---------

Co-authored-by: Rahul R. <rahulrathore576@gmail.com>
Co-authored-by: Kifungo A <45813955+adkif@users.noreply.github.com>
Co-authored-by: GloireMutaliko21 <mufunyig@gmail.com>
Co-authored-by: Rahul R. <41804588+rahul-rocket@users.noreply.github.com>
Co-authored-by: samuelmbabhazi <samuelmbabhazi42@gmail.com>
Co-authored-by: syns2191 <sutralian@gmail.com>
Co-authored-by: Gloire Mutaliko (Salva) <86450367+GloireMutaliko21@users.noreply.github.com>
2024-12-20 08:30:49 +01:00
Rahul R. 2d3e9eee04 fix: missing deps packages 2024-07-20 17:29:38 +05:30
Ruslan Konviser 1c4173dc24 fix: build in prod mode 2024-07-13 14:21:33 +02:00
Rahul R. 23bb741dbe fix: github integration missing classes from @gauzy/core package 2024-07-03 21:02:43 +05:30
Ruslan Konviser 15476b6cde chore: update @types/node 2024-06-29 18:40:20 +02:00
Rahul R 1c948a0363 [Feat] Job Proposal Plugin (#7750)
* feat(plugin): job proposal template plugin basic structure

* feat(wip): job proposals plugins structure

* fix: duplicate identifier 'ApiProperty'

* feat: proposal update command handler

* fix: proposal module moved on plugin folder

* Revert "fix: proposal module moved on plugin folder"

This reverts commit ccdd9ffe95.

* fix: missing proposal update command handler

* feat: custom fields proposals for tag entity

* feat: job proposals build command

* fix: cannot find module '@core/entities/internal'

* feat(wip): job proposal plugins structure

* fix: missing proposal seeder service & module for plugin

* feat(migration): alter custom fields for tag [table]

* fix: proposal module moved on plugin folder

* fix: removed console

* feat: job proposal plugin include in API

* fix: proposal template module moved on proposal plugin folder

* fix: job proposal plugin seedable

* fix(deepscan): removed unused import
2024-04-17 13:15:24 +05:30
Ruslan Konviser 7be4e93e80 chore: packages updates 2024-03-31 15:26:18 +02:00
Ruslan Konviser ea47481cc2 chore: update TypeORM / NestJs to latest 2024-03-07 15:22:31 +01:00