Skip to content

Releases: medama-io/medama

v0.5.1

10 Sep 17:21
7f3ef9f
Compare
Choose a tag to compare

Release Notes

This update focuses on bringing many quality-of-life improvements and reduces memory usage of the binary.

Features

  • Improved coverage for detecting browsers and operating systems.
  • When redirected to the login page, successfully logging in will now return you back to your previous page.
  • A quick external link button has been added to the expanded view referrer table, which was previously only available on the home page.

Bug Fixes and Improvements

  • Implemented a basic spam threshold system to reduce bot traffic.
  • Lowered minimum runtime memory usage by around ~10-12MB, improving performance on low-end systems.
  • Upgraded DuckDB from v1.0.0 to v1.1.0, improving query speed for some pages.

  • The browser client will automatically force flush its cache when it detects the server binary has been updated.
  • Many minor styling adjustments and fixes for better visual consistency.
  • Reduced client bundle size by around ~50kb.

  • Fix cases of extremely large time spent on page values by optimistically firing the unload event when the page is first hidden.
  • Smaller tracker bundle size.

What's Changed

  • feat(dashboard): add login redirect from old link by @ayuhito in #134
  • feat: include x-api-commit header for client cache busting by @ayuhito in #135
  • ci: include version and commit in docker images by @ayuhito in #136
  • perf(core): reduce allocs for ping event and use a pool by @ayuhito in #137
  • fix(core): reduce spam using a threshold system by @ayuhito in #138
  • fix(tracker): send unload event on page hidden instead by @ayuhito in #139
  • ci(fly): use docker image instead of local dockerfile by @ayuhito in #140
  • feat(core): add performance profiler by @ayuhito in #141
  • perf(core): reduce heap memory usage for useragent parser by @ayuhito in #142
  • fix(dashboard): minor styling and accessibility improvements by @ayuhito in #143
  • fix(core): improve user agent coverage by @ayuhito in #144
  • feat(dashboard): add external link icon to table by @ayuhito in #145
  • chore: upgrade duckdb and go by @ayuhito in #146

Full Changelog: v0.5.0...v0.5.1

v0.5.0

02 Sep 14:07
Compare
Choose a tag to compare

Features

We’ve added support for Custom Properties, allowing users to include additional metadata on their web pages for more better data segmentation.

To start off, new trackers now support sending metadata on page load and mouse click events. This is opt-in and can be configured in the new "Tracker" settings page.

Once enabled, this functionality can be used by embedding the following HTML data attributes into your webpages:

<html>
    <body data-m:load="theme=dark;subscription=paid">
        <button data-m:load="logged_in=true" data-m:click="action=logout">Log out</button>
        <h1>Welcome to My Page</h1>
    </body>
</html>

The new data-m:load and data-m:click attributes allow you to send additional metadata from any element on your page. You can set these attributes statically or dynamically based on the user’s state or any other relevant information.

Learn more about this new feature here.

Bug Fixes and Improvements

  • New automated testing for our JavaScript trackers across multiple browsers. This allowed us to catch edge cases on certain browsers where events might fail to send which have been now fixed. This also ensures future updates will be more stable with fewer regressions.
  • The default tracker was optimised to be even smaller.
  • Improved caching logic of tracker events, leading to less network requests for visitors due to our unique cache-based methodology.
  • Various performance improvements and memory usage reductions for the API server.
  • The dashboard is now lighter and faster, with ongoing migration of components which may be completed in the next few minor updates.

What's Next

For our next major update, we will focus on Data Control and Migration, including the ability to import data from sources like Google Analytics, export data in various formats, and set data retention policies.

In the meantime, upcoming minor updates will target quality-of-life and performance improvements. These will include numerous bug fixes to add to the overall polish. After that, we plan to benchmark the project’s performance at scale, optimising it to handle workloads of hundreds of millions of page events. While the current project is known to handle tens of millions of events, we want to focus on a benchmarking framework to thoroughly test its limits and make it suitable for larger workloads.

What's Changed

  • feat(db): support custom properties metadata by @ayuhito in #108
  • perf(core): cache ping endpoint if user is returning visitor by @ayuhito in #110
  • test(tracker): add e2e playwright specs by @ayuhito in #109
  • perf(tracker): use terser for minification by @ayuhito in #111
  • feat: add tagged event tracking by @ayuhito in #112
  • feat(core): use a new settings struct to support multiple trackers by @ayuhito in #113
  • fix(core): get settings should return default values for null settings by @ayuhito in #116
  • feat(dashboard): select tracker variants by @ayuhito in #117
  • feat(core): dynamically update script.js based on user configuration by @ayuhito in #119
  • fix(tracker): simplify tagged event click logic by @ayuhito in #123
  • feat: add custom properties selection and filtering by @ayuhito in #120
  • chore(core): upgrade to go 1.23 by @ayuhito in #125
  • ci: pin docker language versions to mise toml by @ayuhito in #126
  • perf(core): preallocate stat responses and reduce branching by @ayuhito in #127
  • build(dashboard): remove postcss and only use lightningcss by @ayuhito in #128
  • build(dashboard): use vite plugin to inject custom media properties by @ayuhito in #129
  • feat: add percentages to custom event data by @ayuhito in #130
  • fix(dashboard): data visible from selector was not being passed by @ayuhito in #131
  • feat(tracker): support page view custom props by @ayuhito in #132

Full Changelog: v0.4.4...v0.5.0

v0.4.4

30 Jul 14:59
c928d78
Compare
Choose a tag to compare

Features

  • Added a basic date range picker for more granular analytics.

645shots_so

Community

Medama now has a new public roadmap to keep users informed about ongoing feature developments.

What's Changed

  • docs: add contributing by @ayuhito in #102
  • feat(dashboard): add date picker by @ayuhito in #103
  • fix(dashboard): invalid styles from datepicker by @ayuhito in #105
  • fix(dashboard): reset range state when navigating to different periods or websites by @ayuhito in #106

Full Changelog: v0.4.3...v0.4.4

v0.4.3

10 Jul 21:09
b7e98c9
Compare
Choose a tag to compare

Features

  • Added support for Docker ARM64 images.
  • New website quick switcher on the dashboard.

Bug Fixes and Improvements

  • Chart tooltips now clearly indicate the specific range of data they cover.
  • Fixed an issue where monthly interval queries were returning zero data.
  • Trackers on multi-page applications now properly send unload events.
  • Optimised the tracker bundle size in brotli compression scenarios.

Community

  • Join Our Discord: We now have a Discord server where we share ongoing progress and updates about this project. Feel free to join and connect with us at medama.io/discord.

What's Changed

  • ci: add arm docker images by @ayuhito in #90
  • ci: skip using qemu for building arm images by @ayuhito in #91
  • ci(docker): remove node and reduce layers by @ayuhito in #92
  • feat(dashboard): add website quick switch dropdown by @ayuhito in #93
  • fix: correct monthly interval querying and chart tooltips dates by @ayuhito in #94
  • fix(tracker): use event listener on window instead of document by @ayuhito in #95
  • perf(tracker): smaller size through direct function passing by @ayuhito in #96

Full Changelog: v0.4.2...v0.4.3

v0.4.2

07 Jul 23:09
888d327
Compare
Choose a tag to compare

Bug Fixes and Improvements

  • Corrected bounce rate calculations for accuracy, as they were previously much lower than expected.
  • Improved reliability of unload event tracking by using sendBeacon API.
  • Many minor dashboard enhancements related to formatting, styling, and accessibility.

What's Changed

  • refactor(core): use custom duckdb query builder by @ayuhito in #83
  • fix(core): use more accurate bounce rate query by @ayuhito in #84
  • fix(tracker): use sendbeacon for unload event by @ayuhito in #85
  • fix(core): improve bot detection via user agents by @ayuhito in #86
  • fix(dashboard): many quality of life bug fixes by @ayuhito in #87

Full Changelog: v0.4.1...v0.4.2

v0.4.1

06 Jul 23:20
7f1cbbb
Compare
Choose a tag to compare

Bug Fixes and Improvements

  • Resolve a regression from v0.4.0 that prevented unload data (time spent on page/bounce rate) from being processed.

What's Changed

  • fix(core): send event unload data successfully by @ayuhito in #82

Full Changelog: v0.4.0...v0.4.1

v0.4.0

06 Jul 17:19
8eb50da
Compare
Choose a tag to compare

Features

Data Grouping

  • Referrer Groups - Known referrer URLs are now conveniently grouped together for easier identification.
    • Selecting a referrer group allows you to expand and view the URLs within that specific group.

  • Language Groups - Languages are also now grouped and can be expanded to display specific browser locales.

System Resources

  • New Usage Dashboard - Useful for users with remote-hosted VMs, this dashboard gives insights into the application's resource usage. It also includes options to adjust database resource allocation.
    760shots_so

Bug Fixes and Improvements

  • Website Deletion: Users can now delete websites directly from the dashboard.
  • Improved Caching: Improved caching for dashboard assets and scripts to load the dashboard quicker.
  • Better Bot Detection: Upgraded user-agent parser for more accurate bot detection.
  • Dashboard Interaction: Fixed several bugs related to filter interactions on the dashboard.

What's Changed

  • feat: add system resources dashboard by @ayuhito in #72
  • perf(core): add etag caching for assets by @ayuhito in #73
  • feat(dashboard): add the ability to delete a website by @ayuhito in #74
  • fix(core): improve bot user agent coverage by @ayuhito in #75
  • feat: add language group locales by @ayuhito in #76
  • feat: add referrer groups by @ayuhito in #80

Full Changelog: v0.3.0...v0.4.0

v0.3.0

30 Jun 21:07
Compare
Choose a tag to compare

Features

Improved Dashboard Experience

  • Mobile-Friendly Design: The dashboard now adapts to smaller screens, improving usability on mobile devices and tablets.

  • Direct Referrer Access: Select referrer domains with a new button when selecting a referrer URL on the summary page.

  • Summary Percentages: Hover over data rows on the summaries page to see visitor or duration percentages relative to totals.

Developer-Friendly API Documentation

  • OpenAPI Release: Full API endpoint descriptions are now available here letting developers easily integrate their personal or professional dashboards to this project.
    906shots_so

Bug Fixes and Improvements

Simplified Filtering

  • Case-insensitive filters for more convenient data querying
  • Prevention of duplicate filter entries

Improved Queries:

  • More accurate time-on-page calculations, requiring 3+ data points per path
  • Referrer data now based on unique visitors instead of all page views

Tracker Optimisations

  • Prevent duplicate page views from being sent due to History API usage.
  • Reduced likelihood of load events failing to be sent due to third-party extensions.

Changed

  • fix(tracker): duplicate events on different query parameters by @ayuhito in #56
  • docs: add screenshot to readme by @ayuhito in #57
  • fix: update time queries to be more consistent by @ayuhito in #58
  • fix(tracker): use fetch on load event by @ayuhito in #59
  • fix(dashboard): remove timezone selector when adding website by @ayuhito in #60
  • fix(dashboard): prevent duplicate filters by @ayuhito in #61
  • fix(core): make filtering case-insensitive by @ayuhito in #62
  • fix(tracker): use fetch on unload as well by @ayuhito in #63
  • feat(dashboard): initial mobile responsiveness by @ayuhito in #64
  • fix(dashboard): make time period selector more responsive by @ayuhito in #66
  • fix(dashboard): use previous period instead of yesterday for tooltips by @ayuhito in #67
  • feat(dashboard): select referrer via external button by @ayuhito in #68
  • docs: clean up spec for autogenerated docs by @ayuhito in #65
  • fix(core): referrers should use unique visitors by @ayuhito in #69

Full Changelog: v0.2.0...v0.3.0

v0.2.0

27 Jun 22:24
25f3dda
Compare
Choose a tag to compare

Features

Improved Charts

  • New Area Chart: We've included a new area chart for better data visualisation. This is toggleable with the old bar chart.

home

  • Multiple Metrics: Charts with intervals now support multiple metrics:
    • Unique Visitors
    • Page Views
    • Time Spent
    • Bounce Rate

Flexible Filters

  • Interactive Data Rows: Previously, any data element was not selectable. Now, you can click on any data row to quickly apply filters on both the home page and expanded view page.

Detailed Tooltips

  • Exact Data: You can now hover over chart header statistics to view exact changes from the previous period.

975shots_so

Bug Fixes and Improvements

  • Consistent Analytics: Updated queries now use unique visitors instead of unique visitors per page for more relevant data.
  • Old Cookies: Resolved issues related to API server restarts and browser cookies glitching the UI with an error page.

Changed

  • fix(dashboard): undefined loader error in spa by @ayuhito in #43
  • feat(dashboard): allow users to select filters by clicking the stats table by @ayuhito in #44
  • fix(dashboard): use named accessors to return correct data for tables by @ayuhito in #45
  • feat(dashboard): make records selectable for filtering by @ayuhito in #47
  • fix(db): update queries to use unique user instead of unique page by @ayuhito in #48
  • fix(dashboard): support filtering on time records by @ayuhito in #49
  • fix(core): omit trailing slash from pathname by @ayuhito in #50
  • feat(dashboard): allow displaying charts with different metrics by @ayuhito in #52
  • feat(dashboard): add area chart by @ayuhito in #53
  • fix(dashboard): incorrect formatting to some tooltip values by @ayuhito in #54
  • perf(dashboard): remove unused css by @ayuhito in #55

Full Changelog: v0.1.1...v0.2.0

v0.1.1

24 Jun 14:37
1559610
Compare
Choose a tag to compare

Fixes

  • Added support for detecting Android Browser and Yandex Browser.
  • Improved bot/scraper detection via user-agent.
  • Improved detection for more Android devices.

Changed

  • fix(core): do not log completely unknown user agents by @ayuhito in #41
  • fix(ua): support more android and yandex user agents by @ayuhito in #42

Full Changelog: v0.1.0...v0.1.1