{"id":49556050,"url":"https://github.com/vergelli/verdant","last_synced_at":"2026-06-07T00:00:41.608Z","repository":{"id":355318184,"uuid":"1226528217","full_name":"vergelli/verdant","owner":"vergelli","description":"Real-time healer and support analytics for ESO. Track effective healing and shield through an adaptive contribution bar.","archived":false,"fork":false,"pushed_at":"2026-06-03T01:54:34.000Z","size":11078,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2026-06-03T02:06:19.828Z","etag":null,"topics":["analytics","elder-scrolls-online","eso-addon","healers","high-performance","lua"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vergelli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-01T14:13:50.000Z","updated_at":"2026-05-14T00:23:39.000Z","dependencies_parsed_at":"2026-06-03T02:03:44.358Z","dependency_job_id":null,"html_url":"https://github.com/vergelli/verdant","commit_stats":null,"previous_names":["vergelli/verdant"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/vergelli/verdant","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vergelli%2Fverdant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vergelli%2Fverdant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vergelli%2Fverdant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vergelli%2Fverdant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vergelli","download_url":"https://codeload.github.com/vergelli/verdant/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vergelli%2Fverdant/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34003814,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-06T02:00:07.033Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","elder-scrolls-online","eso-addon","healers","high-performance","lua"],"created_at":"2026-05-03T02:14:00.088Z","updated_at":"2026-06-07T00:00:41.586Z","avatar_url":"https://github.com/vergelli.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Verdant\n\n![Version](https://img.shields.io/badge/version-2.1.0-blue)\n![Lua](https://img.shields.io/badge/Lua-5.1-2C2D72?logo=lua\u0026logoColor=white)\n![ESO](https://img.shields.io/badge/ESO-Update%2049%20%C2%B7%20API%20101049-orange)\n![ESO](https://img.shields.io/badge/ESO-Update%2050%20%C2%B7%20API%20101050-orange)\n![No dependencies](https://img.shields.io/badge/dependencies-none-brightgreen)\n![License](https://img.shields.io/badge/license-MIT-green)\n\n![Verdant logo](docs/assets/verdant-readme-header.png)\n\n\u003e *[Vermilion](https://github.com/vergelli/Vermilion)'s good brother.*\n\n\n**Real-time healer contribution bar for The Elder Scrolls Online**\n\n*How much of the healing and shielding that needed to happen did you actually deliver?* It tracks **contribution** — your share of the effective healing ceiling — and adapts what it measures to whether you're playing solo or in a group.\n\n---\n\n## Contents\n\n- [Philosophy](#philosophy) — what Verdant is and isn't\n- [Installation](#installation)\n- [The Graph Window](#the-graph-window) — recording, the three views\n- [Skill Colors \u0026 Unknown Contributions](#skill-colors--unknown-contributions)\n- [Settings](#settings) — profiles and sliders\n- [Usage](#usage) — commands and keybinds\n- [Core Metrics](#core-metrics) — eHPS, MPS, EMS, and the contribution bar\n- [Known Limitations](#known-limitations)\n- [License](#license)\n\n---\n\n## Philosophy\n\n- **Live, not a post-fight report.** A moving trend you read while you play — never a log you open afterward.\n- **No dependencies.** No libraries, no companion add-ons. One folder, drop it in, done.\n\n---\n\n## Installation\n\n1. Download the latest release from [ESOUI](https://www.esoui.com/downloads/info4557-Verdant.html) or [GitHub](https://github.com/vergelli/verdant).\n2. Extract into your AddOns folder:\n   ```\n   Documents/Elder Scrolls Online/live/AddOns/Verdant/\n   ```\n3. Reload with `/reloadui` or restart the game.\n4. The bar appears by default — drag it anywhere on screen. It's optional: turn it off (or back on) any time under **Settings → Individual Bars**. When it's on, a **+** on it opens the graph.\n\nA keybinding to show / hide Verdant can be assigned under **Controls → Verdant**.\n\n\u003e Verdant stores settings and data **per server** — your EU, NA and PTS profiles stay separate.\n\n---\n\n## The Graph Window\n\n![main](docs/assets/SKILLS.png)\n\n\n**Controls:**\n\n| Button | Action |\n|---|---|\n| **Start** | Begin recording samples into the temporal buffer |\n| **Stop** | Stop recording (existing samples stay visible) |\n| **Flush** | Stop recording and clear the buffer |\n| **‹** view **›** | Cycle between the three views |\n\n### Views\n\n\n**SKILL** — two sub-plots, eHPS on top and MPS below, each broken into colored segments by **class** or **skill line**. See which part of your kit is carrying the healing.\n\n![SKILL view](docs/assets/temp_analytics_1.png)\n\n**EMS** — a stacked fill of your eHPS ![](https://img.shields.io/badge/-%20-8CEB9E?style=flat-square) and MPS ![](https://img.shields.io/badge/-%20-F2ADD4?style=flat-square) per sample, so you can read the shape of your output over time.\n\n![EMS](docs/assets/ems-sample-1.png)\n\n**CRIT** — your eHPS split into its non-critical base ![](https://img.shields.io/badge/-%20-578C66?style=flat-square) and its critical cap ![](https://img.shields.io/badge/-%20-FFD966?style=flat-square). Read your crit-heal ratio at a glance, and watch how it tracks across a fight.\n\n![CRIT](docs/assets/CRIT.png)\n\n---\n\n## Skill Colors \u0026 Unknown Contributions\n\nIn the **SKILL** view (and the bar's per-skill modes), every segment is colored by the **class** or **skill line** the ability belongs to, so you can see at a glance which source is doing the work.\n\n\u003cdetails\u003e\n\u003csummary\u003eColor reference (18 groups)\u003c/summary\u003e\n\n| Swatch | Group |\n|--------|-------|\n| ![](https://img.shields.io/badge/-%20-80FF00?style=flat-square) | Arcanist |\n| ![](https://img.shields.io/badge/-%20-E04714?style=flat-square) | Dragonknight |\n| ![](https://img.shields.io/badge/-%20-A62ED1?style=flat-square) | Necromancer |\n| ![](https://img.shields.io/badge/-%20-D11A2E?style=flat-square) | Nightblade |\n| ![](https://img.shields.io/badge/-%20-4761F2?style=flat-square) | Sorcerer |\n| ![](https://img.shields.io/badge/-%20-F2BF26?style=flat-square) | Templar |\n| ![](https://img.shields.io/badge/-%20-00BF80?style=flat-square) | Warden |\n| ![](https://img.shields.io/badge/-%20-B8802E?style=flat-square) | Restoration Staff |\n| ![](https://img.shields.io/badge/-%20-BFE6FF?style=flat-square) | Destruction Staff |\n| ![](https://img.shields.io/badge/-%20-1A73A6?style=flat-square) | Mages Guild |\n| ![](https://img.shields.io/badge/-%20-6B6B2E?style=flat-square) | Undaunted |\n| ![](https://img.shields.io/badge/-%20-8C0D1A?style=flat-square) | Vampire |\n| ![](https://img.shields.io/badge/-%20-99472E?style=flat-square) | Werewolf |\n| ![](https://img.shields.io/badge/-%20-33CCFF?style=flat-square) | Scribing |\n| ![](https://img.shields.io/badge/-%20-DBCC85?style=flat-square) | Psijic Order |\n| ![](https://img.shields.io/badge/-%20-6B4FAD?style=flat-square) | Alliance War support |\n| ![](https://img.shields.io/badge/-%20-F233CC?style=flat-square) | Item sets |\n| ![](https://img.shields.io/badge/-%20-8C8C8C?style=flat-square) | Unclassified (grey) |\n\n\u003c/details\u003e\n\nA few hits — usually item-set procs or enchants with generic icons — can't be matched to a skill line and show up **grey**. To color them yourself: open **Settings → Unknown Contributions**, pick a category for each, and it applies live (no reload). ESO exposes no ability-to-set mapping, so this lets you label the handful Verdant can't.\n\n---\n\n## Settings\n\nClick the **gear icon** ![gear](docs/assets/gear_icon.png) to open the settings panel. All values are saved per account.\n\n![Settings panel](docs/assets/cgf_window_1.png)\n\nThe panel has two layers:\n\n- **Profiles** at the top apply ready-made tunings for common play styles.\n- **Individual sliders** below let you fine-tune each one by hand.\n- **Reset to Defaults** restores a known-good baseline in one click.\n\n### Profiles\n\nDon't want to fiddle with sliders? Pick a profile that matches what you're playing. Tweaking any slider afterward switches the profile to **Custom**, so your manual changes aren't lost.\n\n\u003cdetails\u003e\n\u003csummary\u003eProfile values\u003c/summary\u003e\n\n| Profile | Refresh | Heal Window | Shield Window | Sampling | Time Window |\n|---------|---------|-------------|---------------|----------|-------------|\n| **Solo PvE** *(default)* | 1 Hz | 5 s | 10 s | 1 Hz | 1 min |\n| **Group Dungeons** | 2 Hz | 5 s | 7 s | 1 Hz | 3 min |\n| **Trials** | 1 Hz | 5 s | 7 s | 1 Hz | 10 min |\n| **PvP** | 5 Hz | 3 s | 5 s | 5 Hz | 30 s |\n| **Custom** | *(your tweaks)* | | | | |\n\n\u003c/details\u003e\n\n![Settings sliders](docs/assets/cgf_window_2.png)\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eIndividual sliders\u003c/strong\u003e — for the curious and the tinkerers\u003c/summary\u003e\n\n#### Refresh Rate\nHow often the **bar window** redraws. Six presets from `0.5 Hz` to `20 Hz`. Default **1 Hz**.\n\n#### Heal Window\nThe rolling window used to calculate **eHPS**. A shorter window reacts faster; a longer one smooths out burst heals. Range **1 s → 30 s**, 1 s steps. Default **5 s**.\n\n#### Shield Window\nThe rolling window used to calculate **MPS**. Shields are sparse events, so a wider window avoids the metric collapsing to zero between hits. Range **1 s → 30 s**, 1 s steps. Default **10 s**.\n\n#### Sampling Rate\nHow often the **graph** captures a snapshot. Range **1 Hz → 10 Hz**, 1 Hz steps. Default **1 Hz**.\n\n#### Time Window\nHow far back the graph remembers samples (= buffer capacity). Range **15 s → 10 min**, 15 s steps. Default **1 min**.\n\n\u003e A long window combined with a high sample rate produces a heavy buffer (`time_window_s × sample_hz`). Past ~1500 samples Verdant shows an in-chat warning — the chart has to draw every sample each frame, so very high combinations can cost FPS. For now, favor lower sample rates for long windows — a future version will draw long buffers far more efficiently.\n\n\u003c/details\u003e\n\n### Viewport Alpha\n\nTransparency of the **graph window's inner viewport** — handy when you want to see the world behind the chart. Range **0% → 100%**, 5% steps. Default **30%**. Kept outside profiles, since it's purely cosmetic.\n\n---\n\n## Usage\n\n| Action | How |\n|---|---|\n| Show / hide Verdant | Keybind under **Controls → Verdant** |\n| Open the graph | The **+** icon on the bar, or `/verdant graph` |\n| Turn the bar on / off | **Settings → Individual Bars** |\n| Switch views | The **‹** / **›** arrows in the window title |\n| Record a session | **Start**, then **Stop** / **Flush** |\n| Open settings | The **⚙** gear icon |\n| Color a grey ability | **Settings → Unknown Contributions** |\n\n\n---\n\n## Core Metrics\n\nThe heart of Verdant. Three numbers describe your healing, and one of them drives the bar.\n\n### Effective Healing Per Second (eHPS)\n\n![eHPS](docs/assets/eHPS_1.png)\n\nHealing that lands on missing HP — overhealing is excluded.\n\n### Mitigation Per Second (MPS)\n\n![MPS](docs/assets/MPS_1.png)\n\nDamage absorbed by shields you cast.\n\n### Effective Mitigation Score (EMS)\n\n![EMS](docs/assets/EMS_1.png)\n\nThe combined metric, and what the bar primarily represents:\n\n$$EMS = eHPS + MPS$$\n\n### The Contribution Bar\n\nVerdant reads your contribution differently depending on context, switching automatically based on group status:\n\n- **Open world** — the bar measures *efficiency*: what fraction of everything you cast was actually useful.\n- **In a group** — the bar measures *coverage*: how well your output keeps pace with the damage your group is taking.\n\n**Bar fill.** The **EMS** bar uses two stacked fills:\n\n- ![](https://img.shields.io/badge/-%20-8CEB9E?style=flat-square) **eHPS** (bottom) — your share of EMS\n- ![](https://img.shields.io/badge/-%20-F2ADD4?style=flat-square) **MPS** (above) — your share of EMS\n\nSo you can see at a glance whether your contribution is heal-driven, shield-driven, or a mix.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eBar display modes\u003c/strong\u003e — cycle with the ‹ / › arrows\u003c/summary\u003e\n\n| Mode | What it shows |\n|------|---------------|\n| **EMS** | Single bar: green (eHPS) + pink (MPS) stacked fills |\n| **eHPS** | Segmented bar, each segment colored by the ability's class or skill line |\n| **MPS** | Segmented bar, each segment colored by the ability's class or skill line |\n| **ALL** | Three columns side by side — EMS, eHPS and MPS at once |\n\nThe **%** / **#** button toggles between contribution percentage and raw value.\n\n\u003c/details\u003e\n\n![In-game example](docs/assets/verdant_ui_example_1.png)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvergelli%2Fverdant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvergelli%2Fverdant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvergelli%2Fverdant/lists"}