Help
PQ Companion reference.
Every feature, every prerequisite, and the gotchas worth knowing. New here? Start with the Quick Start and come back when you want detail.
Getting started
PQ Companion is a single Windows app that runs alongside Project Quarm. It does two things: reads your combat log file in real time, and reads JSON exports from Zeal. Everything else — the database, the overlays, the trigger engine — is built on top of those two inputs.
The minimum viable setup is three steps: install the app,
point it at your Project Quarm folder in Settings, and turn
on the in-game combat log with
/log on. That's enough for the database, DPS meter, spell timers,
NPC info overlay, and trigger engine to work. For the
spellbook, AAs, and inventory features, install Zeal too.
For step-by-step install, see the Quick Start.
Settings & data sources
Open Settings from the sidebar. You'll set up two paths and a name:
- Project Quarm folder — the directory containing
eqgame.exe. The app finds your combat log and.inifiles from here. - Character name
— used to pick the right log file
(
eqlog_<Character>_quarm.txt) and to tag Zeal exports per character. - Zeal folder (optional) — only needed if Zeal writes its exports somewhere other than the default. The app will detect this automatically in most cases.
The character switcher in the top-right lets you flip between any character with a Zeal export. The whole app — progression, inventory, spell checklist, to-dos — follows the active character.
Master Volume
Settings has a master volume slider that scales every trigger sound, TTS utterance, event alert, and timer alert on top of each action's per-trigger volume — dampen everything together without losing the relative balance between individual triggers.
EQ client version
A status panel under Settings shows the
eqgame.exe version detected at your configured Project Quarm path.
Useful for confirming you patched after a server-side
update; the panel uses the file's FileVersion as the
primary signal so patch-day MD5 churn doesn't flip the
status to "unknown".
Zeal version & ExportOnCamp
When Zeal is installed, the app detects its version via
the crash-handler anchor and shows a soft warning if
you're below the minimum supported version — features
that depend on newer pipe events may not work until you
update. A separate warning fires if Zeal's
ExportOnCamp setting is disabled, since Spell Checklist, Inventory,
and AAs won't refresh after camping until that's turned
back on.
Navigation
A Settings → Navigation tab lets you hide and reorder the sidebar tabs, so you can trim the app down to just the features you use and put them in the order that suits how you play.
Log Backfill
Log Backfill lives in the Logs tab and walks your existing combat logs to populate history — combat, chat, loot, and the rest — for events that happened before you installed the app. It runs in the background with a progress bar along the bottom so you can keep using the app while it catches up, and a 30-day log trim keeps the log directory from growing without bound. The Logs tab also surfaces log and Zeal status toggles, wizard diagnostics, and notices when an expected log file is missing.
Overlay Dashboard
The Overlays page is your one-stop view of the run. DPS meter, spell timers, NPC info, and trigger alerts all live in a single snap-grid dashboard so you can scan everything at once instead of hopping between tabs.
Drag any panel to move it, drag a corner to resize. The layout persists across sessions. Hit the lock toggle when you're happy with the arrangement so you don't bump it mid-fight.
Pop-out windows
Any panel can pop out as its own transparent, click-through, always-on-top window above the game — same data as the dashboard, just floating over the game. Each pop-out remembers its own size and position. Use the dashboard view at the desk and pop the panels you actually need on top of the game when you alt-tab in.
The dashboard toolbar has a Pop Out All button that opens every standalone overlay window in one click; once any pop-outs exist it flips to Close All Popouts.
Multiple monitors
PQ Companion is multi-monitor aware. The trigger alert overlay can span every monitor so an alert shows wherever you're looking, and pop-out windows drag freely from one screen to another — handy if you keep the game on one monitor and your overlays on a second. Each pop-out remembers which monitor it was on along with its size and position.
Click-through & lock
Pop-outs default to click-through so the game keeps the focus while you read them. Locking an overlay from its title bar makes it click-through; hovering anywhere over a locked overlay temporarily disables passthrough so you can scroll the timer list, click a per-row dismiss button, or drag the header — moving the cursor away restores click-through automatically.
Tips
- Lock the dashboard before raids so a stray drag doesn't rearrange your layout.
- Use Pop Out All before a raid pull, then Close All Popouts when you're back at the desk.
Database Explorer
A searchable database of every item, spell, NPC, and zone in Project Quarm. Item and spell icons render inline; cross- references between scrolls and the spells they teach, NPC drops and source mobs, and zones and their NPC rosters are all click-through.
Global search
Press Ctrl + K from anywhere in the app for global search. Results group by type (items, spells, NPCs, zones) so you can jump straight to what you want.
Filters
- Items: race, class, level, slot, type, and stat thresholds (HP, mana, AC, resists, etc.).
- Spells: by class and level range. NPC-only spells are hidden by default.
- Zones: tabs for connected zones, drops, ground spawns, and forage.
DPS Meter & Combat Log
Prerequisite: /log on in-game. The meter parses your combat log live.
Tracks per-fight and session-wide damage for you and your group. Each NPC is its own fight: a multi-mob pull archives one entry per mob with its own combatant list and DPS numbers, instead of pooling everything into one row. Pet and charm damage rolls up under the owner so a chanter's charmed pet doesn't show as a separate combatant; if a former charmed pet starts attacking you, the binding is dropped automatically.
All three damage sources Project Quarm exposes in the log are captured: melee, direct spell damage, and damage-over- time ticks. DoT ticks were added in v0.6 — necros, druids, and shamans now show their actual damage instead of just their nukes. Critical hits are tracked per combatant (visible on row hover and in clipboard exports) using Quarm's standalone "Scores a critical hit!" log line.
Three DPS modes
The DPS panel header has a rate-mode toggle that cycles through the three metrics that actually matter when you're ranking damage. The current mode shows in the toggle button and the column header so you always know which you're reading; the choice persists across sessions and syncs to the pop-out window.
- Personal (default) — total damage divided by your first-to-last span. Fair to the individual: a wizard who joined the fight late or a necro who ran OOM early isn't punished for time they weren't engaged. Matches EQLogParser's headline column. Best for judging a single player's class performance.
- Raid — total damage divided by the raid's first-to-last span (the same denominator for every combatant in the fight). Best for ranking players against each other in one fight: it charges late joiners and OOM casters for the time they weren't contributing, so "who actually killed this boss" is the answer.
- Encounter — total damage divided by the fight's wall-clock duration. Useful for comparing whole fights to each other ("did we kill this boss faster than last week?"). The metric the meter has always emitted.
Worked example
A 3-minute boss fight with three damage dealers. The Tank swings the whole time, the Wizard arrives 30 seconds late, the Necro runs OOM at the 2-minute mark.
| Player | Damage | Personal | Raid | Encounter |
|---|---|---|---|---|
| Tank | 100,000 | 555 | 555 | 555 |
| Wizard | 200,000 | 1,333 | 1,111 | 1,111 |
| Necro | 150,000 | 1,250 | 833 | 833 |
The Tank engaged for the full 180 s so all three numbers agree. The Wizard's Personal DPS divides by their 150 s window (200,000 ÷ 150) instead of the 180 s wall-clock — the late entry isn't held against them. Raid mode uses the 180 s raid span for everyone, so the Wizard's number matches the Encounter number here. The Necro stops casting at 120 s, so their Personal DPS is the highest of the three (150,000 ÷ 120) but their Raid contribution is third (150,000 ÷ 180).
Session breaks
The Combat Log and Combat History pages insert a "Session break" divider between fights separated by 120 seconds or more of inactivity. Long medding pauses, between-pull breaks, and "back from dinner" gaps become legible at a glance instead of running together. The divider is visual only — DPS calculations, fight ordering, and the data behind everything are unaffected.
Per-class bar colors
Combatant bars on the DPS panel (and rows on the Combat
History page) are colored by class — Cleric blue, Warrior
red, Necro purple, and so on. Class is resolved server-side
from your /who history, with the active character's stored class used for
You, so pets
automatically inherit their owner's color and unfamiliar
combatants fall back to an Unknown swatch. The palette
lives under Settings → DPS Class Colors — hex inputs plus native color pickers per class, with
per-row and global reset to defaults if you want to start
over.
Sharing fights
One-click copy of any fight or session summary to the
clipboard, formatted for /gu and /tell. The current DPS mode is included in the header so
recipients know which metric they're reading. Click any
combatant row to expand their breakdown (hit count, max
hit, crits) before copying.
Combat Log vs Combat History
The Combat Log page is the live, in-memory view of the current session — the last 20 fights, updated in real time. The Combat History page is the persistent archive of every fight you've recorded, with date-range and per-character filters. See the next section for full detail.
Combat History
Prerequisite: /log on. Fights are saved automatically as you encounter them —
no manual export step.
Every archived fight is written to a local SQLite database
(~/.pq-companion/user.db) so the in-memory last-20 ring buffer is no longer the
only record. Re-open a fight from last week to grab a
parse for a guild post, browse a raid night by zone, or
dig up the parse from that one Naggy attempt that mattered
— the data sticks around.
Filtering
The header has dropdowns and inputs for the four most common filters:
- NPC name (substring, case-insensitive) — find every fight against "Naggy", every Frenzied Ghoul, etc.
- Character dropdown — populated from the characters that actually appear in your saved fights, so there's no guessing at spelling.
- Zone dropdown — same: only zones with saved fights show up.
- Date range with one-click presets: Last 24h, Last 7d (default), Last 30d, All, or Custom with date pickers. Preset clicks apply immediately; the other filters apply on Enter or the Apply button.
Click any row to expand the full combatant and healer breakdown for that fight. Per-row delete and a clear-all button live in the header — both pop a themed confirmation before destroying anything.
Retention
Saved fights are pruned after 30 days by default — enough
to cover a typical week of raiding without the database
growing without bound. The retention window is configurable
in config.yaml under
combat.retention_days: set a higher number to keep fights longer, or
-1 to disable pruning entirely. Pruning runs once at startup
and once per hour while the app is open.
Storage size
A fight is typically 1–10 KB. A heavy week of raiding produces a few thousand fights at most — single-digit megabytes total. SQLite's WAL journal keeps writes non-blocking even when the rest of the app is touching the same database for triggers, character data, and backups.
Spell Timers
Prerequisite: /log on.
Tick-accurate countdown bars for every buff, debuff, mez, stun, and DoT. Driven directly from the combat log and keyed per spell-and-target, so casting Visions of Grandeur on three different group members produces three separate timers. Durations are extended automatically by the focus items and AAs your character actually has equipped — pulled from your latest Zeal export.
Buffs vs detrimentals
Buffs and detrimentals get their own overlay windows so you can put the bar you actually need to react to in your line of sight. Each row shows the target name (when it isn't you) and has a small dismiss × to clear that single timer when you know it's gone; the header eraser still bulk-clears the lot. Timers auto-cancel on resist, fade, zone, or death.
The buff overlay header has a sort-mode toggle: remaining (default) puts the soonest-to-expire on top, while recent pins newly-cast buffs to the top and freezes their order so the list stops jumping around as time ticks down. The choice syncs between the dashboard panel and the standalone pop-out window.
Tracking mode
Auto (default) creates a timer for every recognised spell landing — the full firehose. Triggers only shows just the spells you've curated through trigger packs or custom triggers, for a focused overlay instead of full auto-coverage.
Tracking scope
- Self only — buffs landing on you, nothing else.
- Cast by me (default) — also includes anything you cast on others, without the noise of other players buffing each other.
- Anyone — every recognised land, useful for seeing another chanter's debuff on the raid mob.
The optional Filter buffs to my class toggle drops buffs your class can't cast (paladin Spiritual Purity, shaman Talisman, bard songs) so an enchanter's overlay isn't cluttered with raid buffs from other classes.
Display thresholds
Hide overlay rows whose remaining time exceeds a configured
threshold (per-category for buffs and detrimentals, with
per-trigger overrides). Set to 0 to always show — useful for keeping long-duration raid
buffs out of view until they're close to expiring.
Audio alerts
Configurable audio and TTS alerts fire when a timer's remaining time crosses thresholds you set (e.g. 30 s left, 10 s left). Triggers can also carry their own per-trigger "fading soon" alerts — handy for one-off cooldowns or specific mez/charm timers.
NPC Info Overlay
Prerequisite: /log on.
The moment you consider a mob, the overlay shows its level, class, HP (and max mana when it has any), resists, body type, faction, and special abilities — Summon, Unmezzable, Uncharmable, See Invis, Enrage, Flurry, and so on. Pulled straight from the database via your combat log, so it works for any mob the database knows about.
The overlay also auto-detects your target from melee and
spell events, so it stays useful even if you don't
explicitly /con. If you target a corpse, the overlay resolves back to the
underlying NPC so the panel stays useful for loot calls
after the kill.
Resists and special abilities
Resists are shown in EQ convention order — MR / CR / FR / DR / PR — and colour-coded so high resists stand out at a glance. Special abilities render as labelled badges (Summon, Mez Immune, Enrage with HP threshold, Flurry, etc.) rather than raw numeric codes. Multi-field entries like Rampage range arguments parse correctly.
Loot table
The overlay's on-demand loot table shows every item the NPC can drop with the database drop rate. Zone-wide drops — the shared Vex Thal pool, for example — surface on every NPC in the zone, labelled with the pool name so you know it isn't mob-specific.
With Zeal
Zeal adds a live HP bar driven by pipe events (so you see the bar move as the mob takes damage), and a pet-owner badge that names the player a charmed or summoned pet belongs to.
Same-name disambiguation
When several mobs in a zone share a name, the overlay uses
the zone and your in-game position (via Zeal) to work out
which one you're actually looking at. If the target is
still ambiguous, the panel surfaces the full variant set so
you can see every same-name NPC and its stats instead of
guessing. The popped-out window handles the
#-prefixed same-name rows and their special abilities too.
NPC Respawn Timers
Prerequisite: /log on.
A transparent overlay that watches NPC deaths in your combat log and counts down to respawn, so you know exactly when a named or a contested camp is due back up. The countdown starts from the kill line the moment a mob dies — no manual timers to start or stop.
Quarm respawn rates
Project Quarm uses accelerated respawn rates compared with classic EverQuest, and the overlay applies that reduction automatically. The countdown reflects the timer on the server you're actually playing on, so you're not mentally subtracting from a classic respawn window.
Where it lives
The respawn overlay sits alongside the rest of the Overlay Dashboard and pops out as its own click-through transparent window, so you can float it over the game next to the DPS meter and spell timers.
CH Chain & Metronome
Prerequisite: /log on, plus your cleric chain calling its heals out loud in a
channel the log captures (raid, group, or the heal callout
channel your raid uses).
A pair of overlays for running and following a Complete Heal chain. The app watches for CH callouts in your log and tracks the rotation in real time — who's healing, who's up next, and whether the chain is keeping pace — so a cleric in the chain (or the person calling it) can see the whole rotation at a glance instead of counting in their head.
How it tracks the chain
CH-chain tracking is callout-driven: it reads the heal announcements your clerics post, not the spell mechanics themselves, so it works off the same log line everyone in the raid already sees. Each cast draws a cast-to-land bar so you can watch the heal travel from cast to landing, and the overlay measures the live cadence between casts and flags a stall when the next healer is late — the early warning that a chain is about to break. The default callout pattern is broad enough to catch the common raid conventions; tune it with a custom trigger if your raid uses an unusual format.
Personal CH metronome
The metronome overlay is the cleric's-eye view: a standalone window that paces your slot in the rotation, so you know exactly when to start casting to keep the cadence steady. Pop it out over the game like any other overlay.
Where it lives
Both the CH Chain panel and the CH Metronome are first-class dashboard panels with their own toggles in the Overlays view — switch them on only on the characters and fights where you need them, and pop either out as its own click-through window.
Character Progression
Prerequisite: Zeal installed and at least one export run on this character.
A full per-character workspace driven by Zeal exports. Switch characters with the global character switcher — every progression sub-tab follows the active character.
- Stats — base HP/Mana, stat caps, worn effects, and softcap AC.
- Gear — paper-doll view with bag and bank cards. Click any item for the full database entry.
- AAs — split into trained and available, with descriptions and cost-aware planning.
- Spell Modifiers — every focus and worn effect that's modifying your spells, in one tab.
- Live Buffs — the Stats page's buffs panel is now driven by the spell timer engine. Swap between raid-buff presets per character, confirm-on-edit, and remove individual buffs to keep the panel honest if you suspect a buff fell off off-screen.
- To-dos — per-character checklist with subtasks for goals (epic pieces, key quests, AA targets).
Spell Checklist
Prerequisite: Zeal spellbook export.
Cross-references every spell your class can learn against your Zeal-exported spellbook so you always know exactly which spells you still need to scribe. Filter by class and level range, narrow the list with the spell-name search box, and click any spell to jump to its full database entry. NPC-only and unobtainable spells are hidden by default, and a "Where to get it" button on each spell surfaces where it can be obtained.
Shopping-route planner
Tick the spells you want to pick up and hit Plan shopping route: the app works out an efficient vendor run that covers every selected spell with the fewest stops. It's a greedy set-cover over the merchants that sell each spell, made distance-aware so nearby vendors are preferred, with Druid and Wizard ports modelled as a Nexus hub. Route controls let you exclude specific spells, filter towns (handy for alignment-restricted characters), toggle a Plane of Knowledge stop, and set the start zone so the route begins where you actually are.
Spellsets
Prerequisite:
Zeal-exported _spellsets.ini.
Reads Zeal's _spellsets.ini and surfaces every saved spellset as a card with the
eight gems laid out vertically for quick scanning. Rename
sets inline, add and remove sets from inside the app, or
import another character's spellsets from their
.ini.
Imports are filtered: spells that are off-class for the active character or above the character's level are flagged and blocked at import, so you never end up with a set you can't actually load in-game.
Inventory Tracker
Prerequisite: Zeal inventory export.
All inventory across every character in one searchable view, with item icons everywhere — equipped, bags, bank, shared bank. Paper-doll layout with collapsible bag and bank cards. Click any item to open its full database entry in a modal without leaving the page.
Hide empty bags
A toggle in the toolbar collapses bag and bank cards that don't contain any items — handy on cluttered characters where you only care about the slots that hold something.
Rechargeable items
A dedicated Rechargeable Items section gathers the limited-charge clickies across your inventory into one place, and every limited-charge item shows its remaining charge count — so you can see at a glance which clickies are running low and need a recharge before the next raid.
Keys & Keyring
Prerequisite:
Zeal — the Keyring tab needs /keys or inventory exports; the Key Tracker tab needs an
inventory export.
Two complementary tabs sit side-by-side on the Keys page, with Keyring as the default since it's the one you'll check before pulling a key-gated zone.
Keyring (live /keys snapshot)
The Keyring tab mirrors the in-game keyring for each
character. The data refreshes the moment a new /keys export lands. For keys that aren't in the keyring yet
(Plane of Time fragments, Vex Thal Shroud, and similar
one-off items), inventory is used as a fallback. Upgraded
key stages — e.g. a finished Vex Thal Shroud — are
automatically inferred as owning all the prerequisite
pieces, so you don't see ghost "missing" entries after a
combine.
Key Tracker (component quests)
The Key Tracker walks the component quest for every major raid key and ticks off the pieces you already own. Each key is modelled from the canonical quest path: Howling Stones uses the full Key to Charasis quest (with Hand of Glory as a separate internal-doors key), Arx Seru uses the 4-shard Praesertum quest, Veeshan's Peak uses the full Key of Veeshan quest, and Sleeper's Tomb accepts any one of the four Velious talismans. Sebilis is tracked from the Trakanon Idol quest. Vex Thal sub-shards use the correct Lucid Shard zone mappings so you know which zone to camp for the missing piece.
Intermediate combines are detected as you progress, so the list updates without manual ticking. Each held component shows the bag or bank slot it's sitting in, so you don't have to dig through inventory to find it.
Lockouts
Prerequisite: /log on, then run /sll in-game.
The Lockouts page turns your /sll output into live countdowns, so you always know when an
instance or flagged encounter is available to you again
instead of walking up to a locked zone. Both loot lockouts
and legacy lockouts are parsed and shown with the time
remaining.
Per character
Lockouts are stored per character, so each alt keeps its
own set of timers. Switch characters with the global
switcher and the list follows. Run /sll whenever you want to refresh — the countdowns update the
moment the new output lands in the log.
Loot Tracker
Prerequisite: /log on.
A dedicated page that logs drops as they happen, building a running record of what came off which mob over a session. Instead of scrolling back through the combat log to remember what dropped, you get a clean, browsable list on its own page.
Click through to the source
Every logged drop is clickable in two directions: click the item to open its full database entry in a detail popup, or click the zone to jump straight to that zone in the Database Explorer. Handy for checking an unfamiliar drop's stats or seeing what else the zone holds, without leaving the page.
Wishlist
A per-character upgrade list. Star any item from the Database Explorer (or its detail modal) to add it; click the filled star again — and confirm — to remove it. Any wishlisted item is highlighted in the NPC overlay's loot table, so you spot an upgrade drop the moment you con the mob that carries it.
Sections view
The default view groups entries into one card per slot. Each card collapses with its + / − toggle or by clicking the header, and the drag-grip on the left of the header reorders the section list. The toolbar has Expand all / Collapse all buttons for quickly checking what's still on the list after a kill. Card order and collapse state persist per character.
All Items view
Toggle the toolbar to All Items for a flat list of every wishlisted item across slots, with free-form cross-slot drag for prioritising upgrades against each other. The same global ordering backs both views, so a reorder in either view is reflected in the other.
Players Database
Prerequisite: /log on — every /who and /guildstat you run gets captured automatically.
A searchable, sortable database of every player you've
seen via /who and /guildstat — name, class, race, guild, last-seen zone, last-seen
level, plus a per-character level history. Captures
/who, /who all, /who guild, and /guildstat output. Filter by class, guild, or zone; click any row
for the full level progression.
Anonymous-aware
Anonymous and roleplay sightings don't overwrite class and level data you already had from a non-anonymous sighting — the row just gets a new last-seen timestamp, so going /anon doesn't erase a known player from your database.
Class title aliases
EQ titles like "Lord", "Necromancer Lord", or "Crusader" collapse into the right base class automatically, so a 50+ player isn't filed under a different class from their under-50 self.
Chat History
Prerequisite: /log on.
A searchable archive of your conversations, parsed straight from the log. It started as a Tell Tracker for direct player-to-player tells and grew into a full multi-channel chat log, so the back-and-forth you'd otherwise lose to the log scroll-back stays readable and organised.
Threads and channels
Tells render as conversation threads in a chat-style feed — each person you've talked to is their own thread, laid out like a messaging app rather than a flat log dump, so you can scroll back through who said what. Multiple channels are tracked, not just tells.
Per-character tabs
Conversations are kept per character with tabs across the top, so each alt's tells stay separate. A live backfill progress meter fills in history from your existing logs when you first open the page.
Custom Triggers & Alerts
Prerequisite: /log on.
A regex trigger engine for any log line. Each trigger fires one or more actions:
- On-screen text with draggable position and configurable font size.
- Local sound files via the native file picker, with per-action volume.
- Text-to-speech for hands-busy alerts.
Exclude patterns
Each trigger can carry a list of exclude patterns (one
regex per line). When any exclude matches the same log
line as the primary pattern, firing is suppressed —
perfect for "fire on player tells, but not on pet
Master. responses or merchant/banker/trainer canned phrases."
The Group Awareness pack's Incoming Tell trigger ships
with sensible defaults; add bazaar trader names you
recognise to silence those too.
Triggers that drive spell timers
A trigger can do more than fire an alert — it can also start a countdown on the buff or detrimental overlay. Set a timer duration, optionally a worn-off pattern that clears the row before its natural expiry, and per-trigger "fading soon" audio cues at any thresholds you want. Each trigger can carry a per-trigger display threshold that overrides the global category default.
Pipe-source triggers (with Zeal)
When Zeal is connected, triggers can fire off the live
pipe stream instead of log text. Pipe sources include
target name change, target HP crossing a threshold
percentage, a named buff landing or fading on you, and
your own in-game /pipe <text> commands. Pipe triggers don't depend on the log file,
so they're immune to log latency and to emote-only
events the log doesn't capture.
Pack-grouped UI
Built-in and imported packs render as collapsible groups
on the Triggers page, with a pack filter and sort in the
header. Always-on event alerts (deaths, zoning, resists,
interrupts) live under the General Triggers group rather
than as a separate page. Triggers that are shared across
packs — the same Mez Break alert appearing in Enchanter
and Bard packs, for example — carry a shared badge and use a dedup_key so a single log line fires the alert once, not once
per pack.
Per-character scoping
Triggers can be scoped to specific characters — handy for class-specific packs that should only fire when you're on that character. Leave the character list empty to fire for any active character.
Built-in packs
Class packs ship for all 14 classes (Bard, Beastlord, Cleric, Druid, Enchanter, Magician, Monk, Necromancer, Paladin, Ranger, Rogue, Shadowknight, Shaman, Warrior, Wizard) plus a Group Awareness pack (incoming tells, death events, zoning). Each pack bundles the relevant CC-break and cast-failure alerts plus spell timers for the class's core buffs, debuffs, roots, mezzes, charms, and pacify lines. Always-on event alerts for deaths, zoning, resists, and interrupts are independent of the trigger system.
GINA imports
Import GINA shares directly as
.xml or
.gtp. The app converts the regex patterns and action set so
existing community packs work without rewriting them.
Tips
- Use the live test button beside each trigger to fire it without waiting for the log line — handy for tuning position, font size, and volume.
- Drag the on-screen alert to where you want it; the position persists across sessions.
Roll Tracker
Prerequisite: /log on.
Watches the combat log for
/random results and buckets them into per-range sessions. EQ logs
each roll as two consecutive lines —
**A Magic Die is rolled by <Name>. followed by
**It could have been any number from 0 to N, but this
time it turned up a M. — and the tracker pairs them, then groups by the upper
bound. So when a raid calls Cowl 333, Shard 444, and Heart
666 in overlapping bidding windows, you end up with three
independent leaderboards instead of one tangled list.
Sessions and rolls
Each session is keyed by its dice range (the "333" in
0 to 333). Rolls list the leader at the top under the current
winner rule, with a trophy on the winning name. Re-rolls
(a player rolling more than once in the same session) are
kept in the list but struck through and tagged
reroll — they're
ignored for winner calculation, since most guilds treat
the first roll as binding.
Winner rule: Highest vs. Lowest
A header toggle picks the global rule. Flipping it instantly re-ranks every session — useful for guilds that use lowest-roll-wins for split loot. Ties on the winning value are all shown as co-winners; resolve them however you normally do.
Manual mode vs. Timer mode
Manual mode is the default: sessions stay Live until you hit Stop, the user manually removes them, or no new rolls arrive for five minutes (after which a fresh drop with the same dice range opens a new session instead of merging).
Timer mode auto- stops every new session a configurable number of seconds after the first roll — useful when an officer calls a fixed bidding window like "you have 30 seconds to roll." The window is set in the header (5 – 600 s, default 45 s) and each Live session shows a countdown badge that turns amber under 5 s. Manually stopping a session before its timer expires cancels the pending auto-stop.
Per-session and global controls
- Stop freezes a session immediately — late rolls won't merge in.
- Remove deletes a single session card without touching the others.
- Clear (header) wipes every session at once.
Overlay
The Roll Tracker is available both as a dashboard panel (toggle it on from the Overlays toolbar) and as a frameless always-on-top pop-out window with the full set of header controls — mode toggle, duration input, winner rule, clear, and lock — so an officer can drive a roll call without leaving the overlay or alt-tabbing back to the dashboard.
Backup & Restore
Settings → Backups groups two independent backup systems —
one for PQ Companion itself, one for your Project Quarm
.ini files.
App Backup & Restore
Exports your entire PQ Companion state — settings, triggers,
character data, EQ config snapshots — into a single
.pqcb bundle. Drop the bundle on another machine, import, and
you're exactly where you left off. The panel is always
visible under Settings → Backups so it's there when you need
to move to a new PC.
The bundle carries a manifest with a version and schema check; a forward-incompatible bundle is refused at import instead of silently corrupting the destination. On import, the existing data is renamed in place rather than deleted — if anything goes wrong you have a clean rollback path.
EQ Config Backups
One-click backup and restore for every Project Quarm
.ini file — UI, hotkeys, socials, the lot. Snapshot before a
risky UI overhaul, roll back instantly if something breaks.
Auto-backups
Configure auto-backups on a custom schedule (e.g. once a day) or on file change (every time the game writes the file). Browse, label, and restore previous backups from a single list. The Backup Manager header has an Open folder button that jumps straight to the on-disk backup directory — useful if you want to copy a snapshot somewhere else or archive it manually.
Backup files live under your home directory (e.g.
~/.pq-companion/eq-config-backups/) so they're independent of the install location. Older
installs that wrote backups beside the app are migrated
to this directory automatically on first launch.
Developer mode
A hidden Settings tab unlocked with Ctrl + Shift + D. Aimed at contributors and curious power users — not required for any normal feature.
Once unlocked, the Developer tab exposes a read-only SQL sandbox over the Project Quarm database (the same database the explorer reads from) with ten curated starter queries, an interactive schema graph showing how the tables relate, and a Mermaid ER diagrams panel for the most-asked-about subsystems (items, NPCs, loot, spells). Queries run through a guarded backend endpoint that enforces read-only access — no write or schema statements are accepted.
You can save queries you reuse, give them names, and export a set as a query pack to share or re-import on another machine. Each tab keeps its own query history, and wide result sets scroll horizontally so big SELECTs stay readable.
Troubleshooting
The DPS meter / spell timers / NPC info aren't doing anything
All three read from your combat log. Check that you ran
/log on in-game (it's per-character and per-session), and that
Settings points to the right Project Quarm folder. The log
file lives in your Project Quarm folder as
eqlog_<Character>_quarm.txt.
The Spell Checklist / Inventory / AAs are empty
Those features need Zeal exports. Run Zeal at least once on the character to populate the JSON, then switch to that character in PQ Companion.
I changed a config and the game broke
Open Backups and restore the most recent snapshot. If you had auto-backups enabled (recommended), there's almost always a clean copy from before the change.
Still stuck?
Open an issue on GitHub with what you tried and any console errors.
Privacy & safety
PQ Companion runs entirely locally. It reads two things off
disk: your combat log file and your Zeal JSON exports.
Triggers, character notes, and combat history are persisted
to a local SQLite database at
~/.pq-companion/user.db (combat history defaults to a 30-day retention window;
everything else is yours until you delete it). Nothing is
uploaded anywhere; there's no account, no telemetry beyond
auto-update checks against the GitHub releases API.
The app never modifies the game client or game data. It is a read-only tool — no memory injection, no packet modification, no automation that interacts with the game client. If you're worried about server rules, the rule of thumb is: anything PQ Companion does, you could do by hand with a text editor and the in-game UI; it's just a lot faster.