Built in the open

We don't just use open source — we maintain it.

Every public pull request our engineers have opened across the projects we build on — merged and in-flight. Evidence, not a claim: it's pulled straight from GitHub and can't be faked.

By the numbers

91
repositories
220
merged PRs
321
total PRs
9
engineers
425 open-source contributions in the last year
AugSepOctNovDecJanFebMarAprMayJunJulAug
MonWedFri
LessMore

Pull requests

open-mercato/open-mercato106 merged · 129 total
perf(sales): index sales_notes and sales_document_addresses by document context#5555 @maxidragonfix(sales): accept exchangeRate and the status entry ids on document update#5573 @maxidragonfix(audit_logs): stack the changed-fields diff instead of scrolling it off-screen on narrow viewports#5451 @frshyfeat(query): cap list COUNT at OM_LIST_COUNT_CAP via rebuilt count queries (#4552 Phase 2)#5228 @kamwrofeat(sales): render channel names and filter by several channels#5351 @maxidragon
Show 124 moreShow lessfix(data_sync): make Cancel stop a sync run during a batch, not after it#5403 @maxidragondocs(sales): spec the line discount_amount contract (#5019)#5200 @maxidragonfix(auth): log ACL changes to the action log#5365 @frshyfix(scheduler): manual trigger and execution history 404 on every system-scoped schedule#5381 @frshyfix(queue): report jobs the queue abandons before the handler runs#5368 @maxidragonperf(query_index): stop rewriting search tokens that have not changed#5402 @maxidragonfix(query): keep plaintext base columns on exact ILIKE, not approximate tokens#5379 @kamwrofix(auth): emit the declared logout and password lifecycle events#5352 @frshyfeat(telemetry): add root/links span options and trace data_sync batchesvia #5375#5196 @jtomaszewskifeat(data_sync): generic, adapter-declared run parametersvia #5374#5199 @maxidragonfix(auth): return null from loadSidebarPreference when no row exists#5305 @frshyfix(sales): accept comments and internalNotes on document update#5335 @kamwrofeat(sales): resolve sales channel names on the documents list#5350 @maxidragondocs(specs): SMTP transport for transactional email#5303 @bartek5412feat(data_sync): let adapters opt out of the shared cursor row per entity type#5250 @maxidragonfix(sales): let channel viewers read the channels list#5241 @maxidragonfix(ui,customers): terminate "load more" on a short page, not on a reported total#5274 @kamwrofix(progress,data_sync): keep long-running sync progress cards truthful#5189 @jtomaszewskifeat: devices registry + end-to-end mobile push notifications (FCM/APNs/Expo via communication_channels)via #5366#4326 @frshyfix(sales): stop dropping address-snapshot keys the editor cannot show#5240 @kamwrofix(repo): ignore a symlink named node_modules, not just a directory#5300 @kamwrofix(sales): honour bulkImport.skipNotifications in sales.payments.create#5220 @kamwrodocs(specs): address-level contact details and tax identifiers#5197 @kamwrofix(notifications,auth): fail closed when a request has no resolved tenant#5122 @frshyfix(openapi): let route-declared responses win over inferred defaults#5216 @frshyperf(sales): index tag assignments by document_id and stop rewriting unchanged tag sets#5145 @maxidragonfeat(sales): filter the documents list by several sales channels#5198 @maxidragonfix(events/worker): dispatch queued events through the DI event bus#5071 @patrykbojczukfix(sales): show line-level discounts in the document items table#5006 @maxidragonfix(sales): order document lines by line_number, not a random uuid#4996 @maxidragonfix(crud): terminate fetch-all pagination loops on short pages, fail closed at the page ceiling (#4552 Phase 1)#4942 @jtomaszewskifix(sales): render line description in the admin items table#4994 @maxidragondocs(github): add Full Stack House to the certified partner registry#5005 @jtomaszewskifix(api): return 503 on DB connection exhaustion instead of 401/500#4954 @patrykbojczukfix(sales): persist customFields supplied on order and quote create#4951 @jtomaszewskidocs(specs): capped list count — rebuild the CRUD list COUNT so a bound actually binds#4552 @jtomaszewskidocs(specs): DataTable column aggregations (totals footer) specvia #4806#4455 @jtomaszewskifix(cache): reap orphaned tag members when a Redis value key has expiredvia #4797#4570 @jtomaszewskifix(auth): key the nav sidebar cache on the module surface and give it a TTLvia #4797#4546 @jtomaszewskifix(sales): reject order payment totals on create instead of discarding themvia #4796#4768 @jtomaszewskidocs(specs): propose `mercato upgrade` — lock-guarded reconcile for existing deployments#4547 @jtomaszewskifeat(feature_toggles): let frontend toggle hooks declare a defaultValue#4553 @jtomaszewskiperf(query_index): make the search_tokens availability probe cheap and single-sourcedvia #4790#4767 @jtomaszewskifix(data-sync): resume stalled backfills without letting two workers share a runvia #4793#4192 @jtomaszewskifix(query_index): list every indexed entity and stop reporting false out-of-sync#4592 @jtomaszewskiperf(query_index): only probe search_tokens when the query actually searches#4723 @jtomaszewskidocs(architecture): add configuration decision guidevia #4741#4549 @jtomaszewskifix(query_index): stop reindex batches from silently dropping recordsvia #4598#4593 @jtomaszewskifix(docs): index docs served at the site root so Cmd+K search worksvia #4560#4550 @jtomaszewskidocs: correct fabricated and stale query layer documentationvia #4558#4555 @jtomaszewskifix(progress): make job state transitions race-safe for horizontal scalingvia #4539#4537 @jtomaszewskiperf(sales): cache dictionary-entry value lookups on order createvia #4504#3948 @KamilGrocholskidocs(search): clarify three-store architecture, fix stale naming, add evolution spec#4492 @jtomaszewskifix(sales): hide compose-message action on order/quote pages when messages module is disabled#4352 @jtomaszewskifix(core): handle "All organizations" scope across audited org-scoped endpoints#4367 @jtomaszewskifeat(telemetry): vendor-neutral OTLP observability (@open-mercato/telemetry)via #4475#3733 @KubaBirrefactor(attachments): rename "Storage" nav group to "Media"#3731 @jtomaszewskifeat: disable ACL features system-wide via module overridesvia #4462#4447 @jtomaszewskifeat(auth): add demo autologin via env vars#3799 @jtomaszewskifeat(sales): allow disabling sales channels via feature toggle#3935 @jtomaszewskifix(directory): fail loud on stale org selection instead of orphaning writes#3936 @jtomaszewskifeat(commands): first-class bulk-import side-effect suppression#4014 @KamilGrocholskifix(ai): route vendor-prefixed model ids to OpenAI-compatible gateways (OpenRouter)via #4029#4009 @jtomaszewskifix(data_sync): back adapter registry with globalThis to survive bundler duplicationvia #4025#3999 @KamilGrocholskidocs(create-app): close template-sync gap that let PR #3799 ship unsynced#3802 @jtomaszewskifix(query_index): batch search token rebuild silently loses all tokens on large batches#3791 @KamilGrocholskifeat(catalog): allow disabling EU unit price presentation per tenant#3753 @jtomaszewskifeat(currencies): move currency management into Settings#3730 @jtomaszewskifeat(ui): allow hiding backend footer status barvia #3767#3745 @jtomaszewskifeat(i18n): allow forcing a locale via OM_FORCE_LOCALE#3724 @jtomaszewskifix(auth): validate password policy on reset page before submit#3725 @jtomaszewskifeat(app): route home through /start with dismissible start page#3734 @jtomaszewskifix(catalog): order Products before Categories in sidebar#3732 @jtomaszewskifeat(data_sync): paginate run-detail error logs#3637 @KamilGrocholskifeat(workflows): WAIT activity + WAIT_FOR_TIMER step (supersedes #1472)#1991 @KubaBirfeat(workflows): implement WAIT activity typevia #2193#1472 @jtomaszewskifeat(workflows): code-based workflow definitions with customize/reset (carry-forward of #1738, supersedes #1796)via #1959#1935 @KubaBirfeat(workflows): code-based workflow definitions with customize/resetvia #1959#1738 @jtomaszewskidocs(spec): telemetry package with pluggable OTEL backend#1747 @jtomaszewskidocs(spec): push notifications and devices modules#1746 @jtomaszewskifix(ratelimit): disable rate limiting under OM_INTEGRATION_TEST#1673 @jtomaszewskifeat(ui): make AppShell and PortalShell logo configurable#1725 @jtomaszewskifeat(shared): accept { cause } option in CrudHttpError constructorvia #1694#1691 @jtomaszewskifeat(workflows): UI-driven e2e tests + trigger cache invalidation#1689 @jtomaszewskifix(auth): hide UI and gate APIs when backing module is disabledvia #1641#1636 @jtomaszewskifix(ui): hide messages topbar icon when backing module is disabled#1567 @jtomaszewskifix(workflows): prevent column truncation on definitions list#1623 @jtomaszewskifix(auth): use forwarded headers for redirect URLs behind reverse proxiesvia #1521#1515 @jtomaszewskifix(cli): auto-copy .env.example when .env is missing in dev#1517 @jtomaszewskifix(auth): honor redirect query param on login page#1490 @jtomaszewskifix(workflows): use filterIds for org scoping in all GET handlersvia #1487#1482 @jtomaszewskifix(workflows): halt workflow on activity failure by default#1445 @jtomaszewskifeat(workflows): link workflow instance ID in list table#1276 @jtomaszewskifix(search): hide navbar search when search module is disabled#1297 @jtomaszewskifix: gitignore test-results and playwright-report globally#1298 @jtomaszewskifix(dev): splash stuck on "preparing" when warmup login returns 401#1203 @jtomaszewskifeat(db): Support custom PostgreSQL schema via DATABASE_URL (Vibe Kanban)#753 @jtomaszewskifeat(auth): add header-based token refresh for mobile/API clients#729 @jtomaszewskifeat(cli): auto-detect Docker socket from active context#727 @jtomaszewskifix(queue): parse Redis URL before passing to BullMQ#737 @jtomaszewskifeat(ci): add GitHub Actions annotations for test and lint errors#718 @jtomaszewskifix(shared): warn on duplicate entity class names across modules#5448 @frshydocs(specs): background-work reliability series — problems, requirements, solution options (parts 1–4)#5450 @jtomaszewskifix(scheduler): audit every manual schedule trigger and run it as the triggering user#5554 @frshyfix(currencies): fetch exchange rates for every currency, not just active ones#5553 @frshyfix(sales): let a system of record correct an order after it shipped#5572 @kamwrofix(ui): stop probing AI assistant API when the module is disabled#5567 @frshyfix(ui): portal the combobox dropdown so a dialog's overflow stops clipping it#5443 @frshyfeat(telemetry): add opt-in browser RUM with a same-origin OTLP proxy#5195 @jtomaszewskidocs(specs): list views at scale — filter/search/count/pagination architecture at 1M+ rows (RFC)#4618 @jtomaszewskifeat(shared/email): SMTP transport behind the sendEmail facade#5426 @bartek5412feat(ui): native DataTable column footers via tfoot#3972 @KamilGrocholskifeat(ui): native inline row-expand in DataTable (rowDetail)#4149 @KamilGrocholskifeat(devices): per-tenant user device registry module#2595 @frshysecurity(auth): enforce nulled ACL feature overrides as a runtime deny-list#4354 @jtomaszewskifix(ui): remove stray 'ded' token breaking AdvancedFilterPanel build#3975 @KamilGrocholskifix(ui): remove stray 'ded' token breaking AdvancedFilterPanel type check#3973 @KamilGrocholskitest(ratelimit): failing repro for per-route rate-limit leakage under OM_INTEGRATION_TEST#1696 @jtomaszewskidocs(spec): social_auth module — better-auth-backed multi-provider SSO#1745 @jtomaszewskifix(auth): honor redirect query param on login page#1411 @jtomaszewskifix(auth): prevent repeated /api/auth/profile fetches#1429 @jtomaszewskifix: Fix yarn lint and add lint step to CI (Vibe Kanban)#717 @jtomaszewskifeat(db): add DB_SCHEMA environment variable support#685 @jtomaszewskifeat(auth): add header-based token refresh for mobile/API clients#684 @jtomaszewski
mikro-orm/mikro-orm14 merged · 17 total
fix(core): ensure correct runtime value of `decimal` and `float` properties#6807 @patrykbojczukdocs: fix typo in transactions.md#6766 @jtomaszewskifix(core): respect Collection property `orderBy` when dataloader is enabled#6467 @jtomaszewskifeat(entity-generator): pass through `orderBy` option to the output#6466 @jtomaszewskifeat(seeder): pass params to `.definition()` function as argument#6396 @jtomaszewski
Show 12 moreShow lessfeat(seeder): make `.each()` function receive `index: number` argument#6393 @jtomaszewskifeat(seeder): make `Factory.em` protected#6340 @jtomaszewskifix(entity-generator): skip bidirectional relation if target metadata doesn't exist#6328 @patrykbojczukperf(schema): filter tables before fetching table details#6138 @patrykbojczukfeat(mssql): add support for smalldatetime type#6128 @patrykbojczukrefactor: group tables by schema to load information schema#5980 @patrykbojczukfix(core): allow `em.transactional` handler to be synchronous#5696 @jtomaszewskifix(mssql): account for quotes in table names#5637 @patrykbojczukfeat(entity-generator): extend filtering options for EntityGenerator#5473 @patrykbojczukRemoved items still appear in the reloaded collection (if prior to that they've been removed in a clean transaction)#6764 @jtomaszewskitest: add test for entity removal in parallel forks#6762 @jtomaszewskifeat(mssql): add support for raw query fragments with TVPs#6489 @patrykbojczuk

Public PRs to upstream open source only — our own org and personal repos excluded. via #N marks work a maintainer merged in their own follow-up PR because they couldn't merge our branch; the successor credits the original there.

Let them build.

Engineers who maintain the tools they ship on. Start with a free audit.

30 min  ·  Google Calendar  ·  no sales deck

Prefer to write? Send us a message →