Address Greptile P1 review on PR #4259. The hiddenLabels loop only wrote ds.hidden = true and never reset to false when a label was removed from the set. Toggle-off worked today only because the focusLabel block above ran first and unconditionally cleared all ds.hidden when focusLabel was falsy. That block is guarded by chartData.focusLabel !== null, so any caller passing focusLabel={null} would skip the reset and leave a stale true on reused dataset objects across effect re-runs, making un-hide silently fail. Add an else-if branch to the hiddenLabels loop that resets ds.hidden to false when the label is not in the set and no focusLabel is active. Behavior is unchanged for EventsChart (which never passes a null focusLabel) and the contract of the new props is now independent of execution order.
Umami
Umami is a simple, fast, privacy-focused alternative to Google Analytics.
🚀 Getting Started
A detailed getting started guide can be found at umami.is/docs.
🛠 Installing from Source
Requirements
- A server with Node.js version 18.18+.
- A PostgreSQL database version v12.14+.
Get the source code and install packages
git clone https://github.com/umami-software/umami.git
cd umami
pnpm install
Configure Umami
Create an .env file with the following:
DATABASE_URL=connection-url
The connection URL format:
postgresql://username:mypassword@localhost:5432/mydb
Build the Application
pnpm run build
The build step will create tables in your database if you are installing for the first time. It will also create a login user with username admin and password umami.
Start the Application
pnpm run start
By default, this will launch the application on http://localhost:3000. You will need to either proxy requests from your web server or change the port to serve the application directly.
🐳 Installing with Docker
Umami provides Docker images as well as a Docker compose file for easy deployment.
Docker image:
docker pull docker.umami.is/umami-software/umami:latest
Docker compose (Runs Umami with a PostgreSQL database):
docker compose up -d
🔄 Getting Updates
To get the latest features, simply do a pull, install any new dependencies, and rebuild:
git pull
pnpm install
pnpm build
To update the Docker image, simply pull the new images and rebuild:
docker compose pull
docker compose up --force-recreate -d
