Commit Graph
6469 Commits
Author SHA1 Message Date
Francis Cao 67f7ecf2a6 combine heatmap prisma migration 2026-05-07 15:47:42 -07:00
Mike Cao 6c2155d496 Merge branch 'dev' of https://github.com/umami-software/umami into dev 2026-05-07 14:54:25 -07:00
Mike Cao 9b18511af0 Merge branch 'heatmaps' into dev
# Conflicts:
#	db/clickhouse/schema.sql
2026-05-07 14:49:21 -07:00
Mike Cao eef10dd897 Use unknown icon for generic browser 2026-05-07 14:34:10 -07:00
Mike Cao 6672ea04f0 Label generic browser as unknown 2026-05-07 14:30:43 -07:00
Mike Cao 3d9e116424 Guard recorder custom events until ready 2026-05-07 14:28:14 -07:00
Francis Cao 17e7a4a63a exclude performance events from non-performance metrics/lists 2026-05-07 14:17:03 -07:00
Mike Cao 6be5b61442 Wait for heatmap snapshot before overlay 2026-05-07 14:06:49 -07:00
Mike Cao abac89b57f Fix heatmap snapshot timestamp query 2026-05-07 14:01:45 -07:00
Mike Cao 923b94ae8e Render heatmaps from replay snapshots 2026-05-07 13:59:30 -07:00
Francis CaoandGitHub 88ccf5348e Merge pull request #4243 from anvme/fix/delete-cascade
fix: clean up link, pixel, board rows on user/team deletion
2026-05-07 13:59:08 -07:00
Francis CaoandGitHub b7084bb90a Merge branch 'dev' into fix/delete-cascade 2026-05-07 13:58:29 -07:00
Mike Cao 9c31e7b601 Fix heatmap iframe sizing 2026-05-07 13:52:41 -07:00
Francis Cao b0799fe5da Merge branch 'dev' of https://github.com/umami-software/umami into analytics 2026-05-07 13:31:01 -07:00
Francis Cao 9b099408c2 add share page options enable filtering and enforce theme 2026-05-07 13:24:45 -07:00
Yan 74e8b12e39 declare prop-types and react-aria-components as direct dependencies
Both packages are required at runtime but were not declared in package.json:

- react-simple-maps imports prop-types but does not list it as a peer or
  direct dependency, so prop-types must be provided by the host project.
- @umami/react-zen lists react-aria-components in peerDependencies, so
  the host project must provide it.

These are auto-installed by pnpm 8+ when auto-install-peers is true (the
project default), which masks the issue. They are not auto-installed by
npm or by pnpm with auto-install-peers disabled, causing build failures
on a fresh checkout.
2026-05-07 15:22:17 -04:00
Francis Cao 4b6cfe8a91 Merge branch 'dev' of https://github.com/umami-software/umami into analytics 2026-05-07 10:50:17 -07:00
Francis Cao 5ccfb6d0a5 implement datatable sorting on non-analytics tables. (website/board/link/pixel/team/admin) 2026-05-07 10:46:03 -07:00
Stanislaw dcf1b8b8b5 fix(tracker): track clicks on annotated containers and gracefully handle invalid pushState URLs
Three bugs in src/tracker/index.js, all empirically reproduced.

1. handleClicks() missed clicks on container elements: closest('a,button')
   could not find a non-anchor ancestor with data-umami-event, so a click on
   any descendant of <div data-umami-event=...> went untracked. Reworked to
   closest([data-umami-event]) so any annotated ancestor matches.

2. handlePush() called new URL(url, location.href) outside normalize()'s
   try/catch, so a host page calling history.pushState({}, '', invalidUrl)
   would have umami's wrapper throw a TypeError into the host's router.
   normalize(url) already handles base resolution and catches parse errors.

3. The history hook ran the umami callback BEFORE native pushState, so a
   failed native call (SecurityError on invalid URL, etc.) would still mutate
   currentUrl/currentRef and schedule a phantom pageview. Run native first;
   if it throws, the callback never fires and tracker state stays consistent.

Bug 2 verified: 4/10 representative click scenarios missed before
(span inside div, deep span inside div, a with no href, button inside a),
all 10/10 tracked after.

Bug 1+3 verified: pushState({}, '', invalidUrl) now leaves tracker state
unchanged (currentUrl unchanged, no phantom pageview).
2026-05-07 16:04:16 +02:00
Stanislaw 3f9de35907 perf(tracker): defer INP percentile computation to flush time
The INP observer sorted Object.values(interactions) on every event entry,
even though metrics.inp is only read when sendPerformance() flushes.
Defer the sort + p98 computation to flush, and drain queued observer
entries via observer.takeRecords() to capture the most recent
interactions on pagehide/visibilitychange.

Output is identical (same INP value computed). Savings are largest on
interaction-heavy pages and low-end devices where the per-event sort
compounds.
2026-05-07 15:31:49 +02:00
Stanislaw 71ee000f21 fix: avoid restamping deletedAt + skip Redis DEL for already-soft-deleted slugs
Address Greptile review feedback on #4243.

- Cloud-mode link.updateMany / pixel.updateMany now filter where: { ..., deletedAt: null } so a previously soft-deleted row keeps its original deletion timestamp instead of being restamped with the current time.
- Pre-transaction findMany now selects deletedAt; the Redis invalidation list filters to only live slugs, avoiding harmless but wasted DEL calls for already-soft-deleted entries.

Note: the share.deleteMany cleanup still uses the broad entityId list (not filtered by deletedAt) so that orphan share rows of already-soft-deleted links/pixels are still cleaned up. Filtering the prefetch itself, as Greptile's exact suggestion proposed, would skip those shares while link.deleteMany still hard-deletes the rows, leaving orphan share rows behind. Verified empirically with a 3-scenario reproduction.
2026-05-07 04:14:38 +02:00
Stanislaw a57abbe039 fix: clean up link, pixel, board rows on user/team deletion
deleteUser and deleteTeam left link/pixel/board rows (and their share rows)
in the database after the owner was removed. /q/<slug> and /p/<slug>
also kept serving deleted entries because the routes did not filter
deletedAt and Redis cached lookups for 24h.

- deleteUser: clean up link/pixel/board + shares for the deleted user.
  Cloud mode: soft-delete link/pixel, hard-delete board, only userId-owned.
  Non-cloud: hard-delete everything matching userId or owned teamIds.
- deleteTeam: same cleanup, scoped to teamId.
- /q and /p route handlers: filter deletedAt: null at the call sites
  (not in findLink/findPixel helpers, which would null-deref the
  permission checks at src/permissions/link.ts and pixel.ts).
- Post-transaction Redis invalidation mirrors deleteWebsite.
2026-05-07 03:37:22 +02:00
Francis CaoandGitHub b5c4dbfa56 Merge pull request #4207 from c0ball/fix/i18n-missing-saved-labels
🌐 fix(i18n): add missing 'saved' labels for german and swiss locales
2026-05-06 09:57:03 -07:00
Francis CaoandGitHub af68bcc12c Merge branch 'dev' into fix/i18n-missing-saved-labels 2026-05-06 09:56:18 -07:00
Francis Cao 71893e4f89 fix maxheight on DialogButton 2026-05-06 09:51:28 -07:00
dependabot[bot]andGitHub 2e9aaf3ae7 Bump uuid from 13.0.0 to 14.0.0
Bumps [uuid](https://github.com/uuidjs/uuid) from 13.0.0 to 14.0.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-version: 14.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 00:44:55 +00:00
0xSYN.dev 5e6b7d1d21 fix: normalize autofill styles across browsers 2026-05-06 00:39:26 +05:30
Francis Cao da5654a9ef rename propertyName parameter 2026-05-05 10:49:13 -07:00
Francis Cao f463a4ce3f rename propertyName parameter 2026-05-05 10:48:56 -07:00
Mike Cao 1b69ce6e90 Add scroll heatmaps. 2026-05-05 10:43:39 -07:00
Mike Cao c7f71e5758 Make heatmaps report always available. 2026-05-05 10:43:39 -07:00
Mike CaoandGitHub b062484798 Merge pull request #4192 from tairosonloa/patch-1
fix: fixes #4186
2026-05-04 19:42:54 -04:00
Mike CaoandGitHub a9508e7aae Merge pull request #4200 from yhyasyrian/syrian-flag
The Syrian flag has changed
2026-05-04 19:40:36 -04:00
Mike CaoandGitHub 76bef132e6 Merge pull request #4231 from umami-software/dependabot/npm_and_yarn/uuid-14.0.0
Bump uuid from 13.0.0 to 14.0.0
2026-05-04 19:40:02 -04:00
Mike CaoandGitHub 75e6b2461b Merge branch 'dev' into dependabot/npm_and_yarn/uuid-14.0.0 2026-05-04 19:39:55 -04:00
Mike CaoandGitHub 2ffa655097 Merge pull request #4224 from JLUpengjiaji/V2.0
Flatten JSON data
2026-05-04 19:38:47 -04:00
Mike CaoandGitHub 0e586dc2f9 Merge pull request #4223 from JLUpengjiaji/V1.0
Remove redundant search logic
2026-05-04 19:37:17 -04:00
Francis Cao 7e9d934697 Merge branch 'dev' of https://github.com/umami-software/umami into analytics 2026-05-04 15:46:12 -07:00
Francis Cao fbac7518fc Add MAX_PAGING_RESULTS on hooks for performance improvements. 2026-05-04 15:43:05 -07:00
Francis Cao b8062ded81 Merge branch 'dev' of https://github.com/umami-software/umami into analytics 2026-05-04 14:28:58 -07:00
Francis Cao a8c1f26775 remove duration from session property stats 2026-05-04 14:26:27 -07:00
Francis Cao ee655da851 Merge branch 'dev' of https://github.com/umami-software/umami into analytics 2026-05-04 14:18:40 -07:00
Francis Cao 21eb6d21ec remove unused session_data_pivot table 2026-05-04 14:12:08 -07:00
Mike Cao 12c10c48cd Gate heatmaps report on UMAMI_SELF_RECORD. 2026-05-04 13:29:53 -07:00
Francis Cao e349a040e5 add deduplicate_merge_projection_mode settings 2026-05-04 12:48:44 -07:00
Francis Cao a113f5be79 query optimizations on session property filters 2026-05-04 12:42:25 -07:00
Francis Cao 5fc02b6aef fix formatting and css for session property screen 2026-05-04 10:54:58 -07:00
dependabot[bot]andGitHub 55f515aa4d Bump uuid from 13.0.0 to 14.0.0
Bumps [uuid](https://github.com/uuidjs/uuid) from 13.0.0 to 14.0.0.
- [Release notes](https://github.com/uuidjs/uuid/releases)
- [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-version: 14.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 08:42:48 +00:00
Mike CaoandGitHub 3136660588 Merge pull request #4197 from umami-software/dependabot/npm_and_yarn/uuid-14.0.0
Bump uuid from 13.0.0 to 14.0.0
2026-05-02 03:12:18 -04:00
Mike CaoandGitHub e5e8a7ccc2 Merge branch 'dev' into dependabot/npm_and_yarn/uuid-14.0.0 2026-05-02 03:12:04 -04:00