Repository navigation
Releases: ollidiemaus/qol
Releases · ollidiemaus/qol
Release list
0.0.8
Quality of Life
0.0.8 (2026-10-14)
Full Changelog Previous Releases
- Merge pull request #26 from ollidiemaus/mail-bookmarks
Add mail bookmarks on the Send Mail window - Know Forever's characters by name and surname, explain the bookmarks
On WoW Forever every character has a surname and first names repeat (an
account had Scoopz Scoopz and Scoopz Scoopzi). UnitName gives the
surname as its second value, where retail gives the realm, so QoL kept
both characters as "scoopz" and a bookmark for Scoopz Scoopzi never got
its class icon. With RegionalUniqueNamesEnabled() the player is now kept
by first name and surname with a space between, as the game's NameUtil
writes it and as To takes it (both confirmed in game). Names compare
with their spaces trimmed and runs of them made one.
The Mail page starts with a few lines on what the bookmarks are, and the
bookmark's tooltip says how to write a name. The page builder gets
Page:Text, a paragraph wrapped to its column; its height is measured at
the column's width while the page is built. The stubs give UnitName a
surname, RegionalUniqueNamesEnabled and a font string's wrapped height. - Add mail bookmarks on the Send Mail window
Players who mail the same characters again and again (a bank character,
an alt for herbs) can now name up to six of them on a new Mail page in
the settings. Each shows as a side tab on the right of the Send Mail
window, like the side tabs of Forever's Collections and Group Finder
(LargeSideTabButtonTemplate), with the name on hover. A click puts the
name in To and moves on to Subject, as the game's Reply does.
A tab shows the character's class icon (the classicon atlas) once that
character has logged in with QoL; each login keeps its class in
QoLDB.characters, account-wide. Others get the mail frame's portrait.
Names match without regard to case, as Name or Name-Realm. Blank and
repeated entries and the character playing get no tab.
The tabs are our own frames, made without a parent and then parented to
SendMailFrame (for SmartNavigation's CreateFrame hook), so they show only
on the Send Mail tab. On Blizzard's frames only SetText and SetFocus,
through ns.Later; the name box isn't protected, so it works in combat.
The settings page builder gets a text box row (InputBoxTemplate): saved
trimmed on Enter or when it loses focus, Escape puts the saved name back,
Tab moves between the boxes, and a refresh leaves a box being typed in
alone. The stubs get edit box focus, the side tab template, UnitName, the
realm and the mail frame's boxes. - Merge pull request #25 from ollidiemaus/bag-sort-button
Keep the combined bag's sort button in sight after a sort - Keep the combined bag's sort button in sight after a sort
The option moved Blizzard's BagItemAutoSortButton left of the search box,
but the bag's UpdateSearchBox anchors it at the top right again on every
bag update (after a BAG_UPDATE, so after each sort and loot, and on new
items and quest changes), without ClearAllPoints. On Forever that spot is
under GamepadBagBar's bag icon. The BAG_UPDATE_DELAYED wake-up raced the
bag updater's OnUpdate and missed the other updates, so the button
vanished after a click.
Now the option shows a button of our own instead, with Blizzard's art,
tooltip strings and sound, calling C_Container.SortBags(). Blizzard's
code never touches it, so only the option wakes the feature up, and
Blizzard's button is left alone. It's made without a parent and parented
afterwards, for SmartNavigation's CreateFrame hook.
The stubs get button atlases, a highlight texture, SortBags and the
cleanup strings; the spec replays Blizzard's re-layout after a click.
0.0.7
Quality of Life
0.0.7 (2026-10-12)
Full Changelog Previous Releases
- Merge pull request #24 from ollidiemaus/edit-mode-screen-edge
Let Edit Mode frames go a little past the screen edge - Let Edit Mode frames go a little past the screen edge
Edit Mode clamps every frame's selection box to the screen, and that box
takes in the empty space around the art, so a bar or frame can never sit
right on the edge. A new option on the Interface page (Edit Mode, off by
default) gives each Edit Mode frame Blizzard's clamp insets moved 30
further in on every side (in the frame's own units), with
SetClampRectInsets. Edit Mode saves a dragged frame's anchor as it is, so
the place is kept in the layout.
Blizzard sets its insets again whenever it lays a frame out: a layout
loaded or switched (AutoSetup's switch on a resolution change fires
EDIT_MODE_LAYOUTS_UPDATED too), leaving Edit Mode, a spec change, and in
Edit Mode a highlight or a setting change without an event. So those are
wake-ups, and while Edit Mode is open the frames are compared every drawn
frame. A frame whose insets we changed is anchored again at the same
points with the widget's own ClearAllPoints and SetPoint (Edit Mode's
replacements write to the frame), because new insets alone left frames
pulled in on screen after Edit Mode closed. A dragged frame is left alone.
The stubs get Edit Mode frames with a selection box, the override over
SetPoint, and a layout that only happens after anchors change. - Merge pull request #23 from ollidiemaus/druid-mana-bar
Show the druid's mana in bear and cat form, in a third bar - Show the druid's mana in bear and cat form, in a third bar
Forever's player frame has a third bar only for astral power, so a druid
in bear or cat form sees no mana at all. A new option on the Interface
page (Player frame, off by default) shows it under rage or energy, while
the player's power isn't mana and the character has some: the rule of
Blizzard's Wrath to Mists clients.
It's drawn the way PlayerFrame_ToPlayerArt draws a third bar: the frame
art with room for it, the mana bar texture at the third bar's place and
size, and the threat glow that fits that art. The bar and the art are
ours; on Blizzard's frame the usual art only gets alpha 0 and the glow
another atlas, both put back when the bar hides. It runs in combat, stands
aside in a vehicle and for a third bar or class bar of Blizzard's, and its
text follows the game's Status Text setting.
The stubs get unit power, status bars and a player frame that errors on
any field the addon writes.
0.0.6
Quality of Life
0.0.6 (2026-10-12)
Full Changelog Previous Releases
- Merge pull request #22 from ollidiemaus/settings-spacing
Give the settings pages' sections room and line up their headers - Give the settings pages' sections room and line up their headers
A section that follows another one in its column now gets 16 more above
its header. Before, a header sat as far from the row above it as from
its own first row, so the sections ran into each other.
The Minimap page's sections now go side by side in pairs (Shape and
Clock, Zone text and FPS and ping, Coordinates and Buttons) with
Page:Align between them, so their headers line up across the columns
instead of sitting at different heights. The page is no taller for it:
about 454 of the 600 a page has. - Merge pull request #21 from ollidiemaus/minimap-performance
Show FPS and ping in a row above or below the minimap - Bring the game's font back when a minimap font size is set to Default
Setting the zone text's, the clock's or FPS and ping's font size back to
Default left the larger font until a /reload. The revert only called
SetFontObject with the saved font object, but after SetFont the text
still has that object, and the client ignores a SetFontObject with the
object a text already has. The revert now sets the game's font file,
size and flags with SetFont first, then the font object.
The stubs' SetFontObject now ignores the object a text already has, like
the client, and the specs check the font size after Default, not just
the font object's name. - Let FPS and ping take another font size, like the clock
A Font size dropdown in the FPS and ping section, greyed out while it's
hidden, with the clock's sizes (9 to 24, or Default for the clock's own).
It goes through the clock's font size code: the frame grows both ways with
a larger font so the row makes room, and Default gives the text the
clock's font object back. The sizes are applied before the positions, so
the frame is made there when it gets a row and is sized before it's
first placed.
The stubs' CreateFontString now applies the font object it's given, so a
font string of ours has a font to read back. - Show FPS and ping in a row above or below the minimap
A new section on the Minimap page puts the frame rate and the latency
in the same rows as the clock: above or below the minimap, left, center
or right, side by side with whatever else is in that spot. It's off
(Hidden) by default and has no "Default" position, since the game has
no place of its own for it. It can show in class color like the clock.
The text is a frame of ours, made the first time it has a row and
updated once a second by a C_Timer chain that ends when it's hidden, so
nothing runs every frame. The ping is the higher of home and world
latency, as the game's own latency meter goes by. The frame keeps the
width of a three-digit reading, so its row doesn't move as the numbers
change, and the text keeps to the side of its spot. - Merge pull request #20 from ollidiemaus/ring-page
Make the rings' editor the settings' Ring page - Make the rings' editor the settings' Ring page
The Ring page held only the switch and a button that opened the editor in
a window of its own, nearly as big as the settings window. Now the editor
is the page: the switch sits in the title bar where the other pages have
their Defaults button (none here, it would only turn the rings off), and
below it the editor's spell book page fills the rest, parchment, ink and
page buttons as before. /qol ring opens the settings on that page, and
from another page goes there instead of closing.
The page has 665×547 where the window had 860×640: the ring is drawn at
0.66, "Ring 1 of 3" and its arrows stand above it (the list's tabs now
reach over that part of the bar), the list shows 2×9 rows of 175, and the
keys' names wrap left of narrower boxes.
As the settings open in combat, so does the page: it shows the rings with
its buttons and key boxes off and says why, and catches up once combat
ends, instead of closing. - Merge pull request #19 from ollidiemaus/settings-window
Move the settings into a bronze window of their own - Move the settings into a bronze window of their own
The pages (Automation to Controller) leave the game's options and open in a
window of QoL's own: /qol opens and closes it, the page list on the left and
the page on the right, laid out like the game's options. It is the game's
flat portrait frame with the options' inner frame, list header and
highlights, which Forever draws in bronze. Escape or the X closes it; in
combat it still opens, and every key goes on to the game there.
The information page stays under Options > AddOns and gets an "Open
settings (/qol)" button. With keyboard and mouse the window opens over the
game's options; with the controller interface on, it waits until they
close, which a note next to the button says.
Key bindings on the Ring and Controller pages are saved as soon as they're
set or cleared, since the game's options no longer save them on close. The
ring editor shares the window code (Core/Window.lua).
0.0.5
Quality of Life
0.0.5 (2026-10-11)
Full Changelog Previous Releases
- Merge pull request #18 from ollidiemaus/settings-categories
Sort the settings into pages and open QoL on an information page - Sort the settings into pages and open QoL on an information page
The main page held eight sections in two columns. They are now pages of
their own below Quality of Life: Automation (merchant, quests), Interface
(the bars to hide, combined bags, tooltips, health bars in class color),
Chat (the chat window, /rl) and World map (only on Forever's maps), next to
Action Bars, Minimap, Viewport, Ring and Controller. One list in
UI/Settings.lua registers them in the list's order and leaves out a page with
nothing to change on the client. Labels that repeated their new header are
shorter ("System bar" under "Hide").
Quality of Life itself is now an information page, as AutoPotion's is: a
short introduction, the chat commands and the author's other addons with
their icon, an Installed label while one is loaded and a link to copy. It has
no options and, unlike AutoPotion's, fits without scrolling. - Merge pull request #17 from ollidiemaus/combined-bag-top-left
Start the combined bag at the top left with keyboard and mouse - Start the combined bag at the top left with keyboard and mouse
With keyboard and mouse, Forever lays the combined bag out from the bottom
right of its money frame, leftwards and upwards, so the backpack's first slot,
where a sort puts the hearthstone, is the bottom right corner. The controller
interface starts at the top left. The new option "Start combined bags at the
top left" moves each item button to the cell as far from the top left as
Blizzard's is from the bottom right, still anchored to the money frame: same
order, size and spacing, only the starting corner changes.
It runs again whenever Blizzard lays the bag out (OnShow and OnSizeChanged
hooks, BAG_CONTAINER_UPDATE, BAG_UPDATE_DELAYED, interface changes) and sets
a button only when its anchor differs. The buttons aren't protected, so it
runs in combat too. Reversing the sort itself (SetSortBagsRightToLeft) is no
way around it: Forever keeps that setting, but its sort ignores it. - Merge pull request #16 from ollidiemaus/ring-editor-window
Give the ring editor a bronze window with a list to add from - Draw the ring editor's keys, buttons and hint on the page
The page is a child of the window, so it covered the window's own text (the
keys' names, the hint) and drew its parchment among the layers of the
window's buttons at its frame level, leaving them only their text. They are
the page's now. Rename the German window to Ring-Editor, and drop "Escape
closes it" from the hint. - Give the ring editor a bronze window with a list to add from
The editor is now a window in the game's portrait frame (bronze on Forever)
with a spell book page inside, moved by its title bar. The ring stays on the
left at full size; on the right a list built like Forever's spell book shows
what this character has: tabs for spells, items, toys, mounts and macros, a
search box, and two columns of entries a page at a time. A click puts an entry
on the ring or takes it off again (check mark), a drag picks it up for a slot.
RingEntries learns what a character has of each kind (spell book with flyouts,
items with a use in the bags or worn, toys through the Toy Box's filter,
collected mounts, macros). - Merge pull request #15 from ollidiemaus/many-rings
Keep the ring editor open for the spell book, and open it from the Ring page - Keep the ring editor open for the spell book, and open it from the Ring page
Pressing P with the editor open closed it: the spell book opens as a
"center" panel when nothing else is open, and showing one makes the game
hide every frame in UISpecialFrames, where the editor was for Escape. The
editor now takes the keyboard itself: Escape closes it, every other key
goes on to the game (SetPropagateKeyboardInput), so the spell book and
moving work while it's open. While the settings or the game menu are
shown, Escape is theirs first.
The Ring page gets a "Ring editor" row with an Open button (a new
Page:Button row). It opens the editor over the settings without closing
them, since hiding SettingsPanel from addon code taints its Commit;
Escape then closes the settings and leaves the editor open. /qol rings
opens the editor too.
The test stubs now hand a typed key to the keyboard-enabled frames by
strata, stopping at one that keeps it, so the specs can tell the key
listener, the editor and the game's bindings apart. - Merge pull request #14 from ollidiemaus/many-rings
Make as many rings as you like, each growing with what's on it - Make as many rings as you like, each growing with what's on it
The ring was eight slots of an action bar, with its two keys under Key
Bindings. Rings are now the player's own, saved for the account in
QoLDB.rings: any number of them, each a list of spells, items, toys, mounts
and macros with a mouse key and a stick key. A character's ring shows the
entries it has, up to 12, and has as many slots as that, spread evenly with
spokes between them; the rest stay saved for the characters that have them.
One secure button, QoLRingButton, now opens every ring: each key is an
override binding that clicks it with a button named after the ring and the
aim ("2mouse"), and the wrapped snippet returns the aimed slot ("2s3"),
whose *type-2s3 and *spell-2s3 (or item, toy, macro) attributes are that
entry's action. A ring with nothing this character has gets no keys.
/qol ring opens an editor: drag actions on, between and off the ring, make,
switch and delete rings, and set each ring's keys (a key or a controller
button). The Ring settings page keeps the switch and points to the editor;
the bar dropdown, the key rows and the Key Bindings entries are gone.
The art gets one spoke texture and a lit wedge for each ring size, remapped
from Forever's radial menu; the wheel's own spokes are painted out. The
stubs' Show and Hide now run the frame's OnShow and OnHide, as the game
does. README and the developer notes describe the rings.
0.0.4
Quality of Life
0.0.4 (2026-10-11)
Full Changelog Previous Releases
- Merge pull request #13 from ollidiemaus/ring-settings-page
Give the ring a settings page of its own, with its keys - Bind the ring's keys on the Ring page
The Ring page now lists the ring's two keys under Keys, as the Controller
page does for the back buttons: Ring (aim with the mouse) and Ring (aim with
the right stick), the same CLICK QoLRingMouse/QoLRingStick bindings as under
Key Bindings > AddOns, with the same two key boxes and the hint below them.
They are greyed out while the ring is off.
The "Keys" header string is shared now (SECTION_KEYS), and the ring's tip
points to the keys below. - Give the ring a settings page of its own
The ring's options were the last section of the Action Bars page. They now
have a Ring page, listed after Action Bars: the ring's checkbox and, indented
below it, the bar whose slots it uses. With only two options, they run in
rows across the page, as on the Viewport page, and the page's title is the
section's header.
SECTION_RING becomes CATEGORY_RING, and the ring's strings get a block of
their own in both locales. README and the developer notes point to the new
page. - Merge pull request #12 from ollidiemaus/hide-buff-tooltips
Hide new buff tooltips; controller features only in the controller interface - Act on controller features only while the controller interface is on
The back buttons ran with keyboard and mouse too: their override bindings
stayed and a key bound to them under Key Bindings still clicked them. Now they
hide, lose their type attribute (so any key bound to them presses nothing) and
drop their overrides while the controller interface is off, and come back when
it's turned on. The buff tooltips' alpha is left alone with keyboard and
mouse.
The game switches interfaces without a reload and fires
INPUT_DEVICE_INTERFACE_TRANSITION, so ns.OnControllerUIChange runs the
features' updates on it. The bar paging overrides, which already stood aside
in the controller interface, now also go and come back with a switch instead
of waiting for the next bindings change. - Drop the hold on every change while the settings are open
Toggling the buff tooltips' checkbox off and on and closing the settings froze
the game with nothing of QoL's changed, and toggling the game's own Invert X
Axis checkbox froze it the same way. So the freeze is most likely Forever's
own, on closing the settings after any change in the controller interface,
and holding ns.Later while the settings or the game menu are open doesn't
prevent it; it only took away live changes there. ns.Later and
ns.ControllerWindowOpen are back as on main; the back buttons and the ring
still wait for the controller windows through ns.LaterOutsideWindows.
The README tells players about the freeze and to change settings with the
controller interface off; the developer notes record what was tried. - Hide the new buff tooltips by making them transparent
With BuffFrameTooltip parented to the hidden holder, the Steam Deck showed no
tooltip when pointing at a buff either, and after the game menu closed the
cursor went to the middle but stayed in sight. Nothing in the UI code explains
it, but the holder left the tooltip shown and never visible, a state the game
never gets into.
The option is now a feature of its own (Features/BuffTooltips.lua): it makes
BuffFrameTooltip transparent with SetAlpha(0), again from an OnShow hook each
time it shows, the way the game's controller action bar editor hides its own
tooltip. The tooltip shows and hides as the game wants, only unseen. Turned
off, its alpha goes back to 1; a tooltip we never faded is left alone. - Hide the controller interface's new buff tooltips; wait for the settings to close
In Forever's controller interface the buff frame shows the tooltip of every
buff or debuff the player gains or refreshes for a few seconds
(BuffFrameMixin:ShowNextAuraForTooltip, in BuffFrameTooltip). The Controller
page gets a Buffs section with "Hide new buff tooltips", which parents
BuffFrameTooltip to the hidden holder like the other HideFrames targets. Only
those pop-ups use that frame; a buff the player selects or points at still
shows its tooltip in GameTooltip. The GamepadShowAutoAuraTooltip CVar is left
alone: CVarCallbackRegistry would cache a value set from addon code.
Turning it on and closing the settings froze the game again, like the back
buttons' bar did before ns.LaterOutsideWindows: a single SetParent of
BuffFrameTooltip made while the settings were open was enough. So the rule is
now general: in the controller interface, ns.Later holds every request while
SettingsPanel or GameMenuFrame is shown (ns.ControllerSettingsOpen), whatever
it touches, and the half-second check lets it go once two checks in a row found
them closed. Other controller windows (map, bags) don't hold regular requests,
and LaterOutsideWindows still waits for every controller window. Without the
controller interface nothing changes. - Merge pull request #11 from ollidiemaus/controller-settings-freeze
Bind the back buttons' keys on the Controller settings page - Bind the back buttons' keys on the Controller settings page
The Controller page gets a Keys section across the page: one row per back
button with two key boxes, like a row of the game's Key Bindings. Each row is
named by its slot on the bar picked under Slots (L4: Action Bar 8, button 9),
so the names follow the dropdown. Click a box, then press the back button (or
the key); Escape or another click cancels, a right-click clears a key. The
rows set the same CLICK QoLBackButtonN bindings as Key Bindings > AddOns.
The rows are our own code (Page:Binding in UI/SettingsPage.lua) on the game's
KeyBindingFrameBindingButtonTemplate: a frame of ours takes the keyboard while
a box waits, and the key is set the way the game's KeybindListener sets it, in
the action's binding context, taking it from whatever had it. Gamepad buttons
stay with the controller cursor. Nothing but SetBinding happens while the
settings are open, as on the game's own Key Bindings page: the panel saves the
bindings on close, and the back buttons' override bindings follow from
UPDATE_BINDINGS through ns.LaterOutsideWindows. - Merge pull request #10 from ollidiemaus/controller-settings-freeze
Fix the freeze on closing the settings in Forever's controller interface - Fix the freeze on closing the settings in Forever's controller interface
With the controller interface on, changing the back buttons' bar on the
Controller page and closing the settings could freeze the game (no Lua error,
just "not responding"). Two changes stop it:- Our dropdowns no longer open the game's menu in the controller interface.
The menu brings its own controller wiring (a prompted binding footer, and the
settings' focus suspended and never given back), and opening it was the step
that turned closing into a freeze. Page:Dropdown replaces OpenMenu with a
step to the next choice, for the controller cursor, the mouse and the touch
screen alike. With keyboard and mouse the menu opens as usual. - The back buttons and the ring change nothing while a window of the game has
the controller (GamepadMode.FrameControlsManager's active frame, if shown:
the settings, the game menu, bags). ns.LaterOutsideWindows holds their
attributes, override bindings and frame creation, and a check every half
second lets them go once two checks in a row found no window, so they run
at least half a second after the window closed, also the update on the
UPDATE_BINDINGS that closing the settings fires. Without the controller
interface they run on the next frame as before.
The README and the developer notes no longer name other addons.
- Our dropdowns no longer open the game's menu in the controller interface.
- Merge pull request #9 from ollidiemaus/action-ring
Add a ring of eight actions for mouse and controller - Add a ring of eight actions for mouse and controller
A new Ring section on the Action Bars page turns on a ring of eight actions,
like OPie's rings or Easy Controller's wheels, drawn from Forever's own art
(the radial menu's wheel and lit wedge, the minimap's bronze ring and day and
night rim). Hold its key, aim at an action and let go to use it; let go in the
middle and nothing happens. It works in combat.
Two keys under Key Bindings > AddOns > Quality of Life open the same ring: one
at the mouse cursor, aiming with the mouse, the other in the middle of the
screen, aiming with the controller's right stick. The actions are buttons 1-8
of Action Bar 8 (or 6 or 7); /qol ring opens an editor to drag them on and off.
The choice is made in secure code: each key clicks a secure action button of
ours whose OnClick is wrapped by a secure header. Key down shows the header,
key up hides it and returns the aimed slot's button ("s1".."s8"), read from
the header's GetMousePosition or GetGamePadState. Our own code only draws:
the art under the header lights the aimed slot with the same sums, and a frame
of ours keeps the camera stick wh...
0.0.3
Quality of Life
0.0.3 (2026-10-10)
Full Changelog Previous Releases
- Merge pull request #6 from ollidiemaus/quality-of-life
Rename to Quality of Life, add borderless action buttons, a tram icon and clock/zone text font sizes - Rename to Quality of Life (/qol), and add borderless action buttons, a tram icon and font sizes for the clock and zone text
- The addon is now Quality of Life: folder and TOC QoL, /qol (or /qualityoflife), saved
variables QoLDB, API table QoLAPI. The CurseForge project stays the same (now /qol). - Hide button borders (Action Bars page, off by default): the buttons of action bars 1-8, the
stance and the pet bar lose their frame and get square icons, the classic square highlight,
checked, pushed, flash and equipped textures, cooldown swipes over the whole icon and no
casting animation. Only widget methods on the buttons' textures and child frames; everything
is put back when turned off, and the pushed frame is squared again after Edit Mode. - The Deeprun Tram pins get an icon of their own in the style of the boat and the zeppelin.
- Font size for the zone text and the clock (Minimap page, game's size by default); their
buttons grow with a larger font, so the rows around the minimap make room.
- The addon is now Quality of Life: folder and TOC QoL, /qol (or /qualityoflife), saved
- Merge pull request #5 from ollidiemaus/qol-chat-quests-maps-minimap
Add chat, quest, minimap and world map options - Add two-column settings pages, inside-minimap positions, class-colored clock and coordinates, and an option to stop bar paging
- The main, Action Bars and Minimap settings pages are now our own two-column canvases built from
the game's templates, so they fit without scrolling; every option name uses the same font. - The tracking button and the day and night icon can sit inside the minimap: in a corner or in the
middle of the top or bottom edge, clear of the round frame or the square border. - The clock and the coordinates can show in class color.
- Shift+1-6 can be kept from switching the action bar page: they act like the plain number keys,
through override bindings of our own.
- The main, Action Bars and Minimap settings pages are now our own two-column canvases built from
- Add minimap button positions, a bronze square border and a zeppelin icon
The square minimap can now be framed in Forever's bronze: its round
frame (ui-hud-minimap-frame-c60-2x) unwrapped onto a square in
Media/MinimapSquareBorder.tga. The thin black line stays as a choice.
The clock, the addon compartment, the tracking button and Forever's day
and night icon can each move to a row above or below the minimap (left,
center or right) or be hidden, and the calendar button can be hidden.
Things in the same spot sit side by side, the zone text gets the room
left in the middle, and the coordinates move under a row below. The
day and night icon is placed again after Forever's skin resets it on
Minimap.OnScaleUpdated; the clock once Blizzard_TimeManager loads.
The minimap options move to a page of their own under Forever QoL.
Zeppelin pins get Media/Zeppelin.tga, drawn in the style of the boat
atlas, since the client has no zeppelin icon. - Offer the world map pins only where there are maps for them
The pins are on Forever's maps (UiMap IDs 1411 and up), which retail
doesn't have. MapPins.IsAvailable() asks C_Map for them: without them the
settings page leaves the World map section out and the feature never
adds anything to the world map. - Add chat, quest, minimap and world map options
Eight new options, all off by default:- Chat: hide the combat log, show names in class color, hide the other
chat buttons (menu, channels, voice, text to speech). The combat log
window goes to the hidden holder and its tab is scaled down to nothing,
since the dock's own functions would taint the chat. Class colors use
the game's chatClassColorOverride setting. - Quests: accept quests and turn them in (only with at most one reward
and no gold to pay). Shift while talking to an NPC skips both. - Minimap: a square minimap with a thin border, and the zone text above
or below the minimap, optionally in class color. - World map: dungeon and raid entrances, and boats, zeppelins, portals
and the Deeprun Tram, whose click opens the destination's map. The
places come from Forever's own tables (build 1.60.1.70291), including
Forever's new routes; Data/MapPins.lua says how.
The social button and minimap coordinates options move into the new
Chat and Minimap sections of the settings page.
- Chat: hide the combat log, show names in class color, hide the other
0.0.2
Forever QoL
0.0.2 (2026-10-09)
Full Changelog Previous Releases
- Merge pull request #4 from ollidiemaus/class-color-health-bars
Add class-colored health bars for the unit frames - Add class-colored health bars for the unit frames
Five options, all off by default, put the health bar of the player, target,
target of target, focus and focus target frames in the class color of the
unit they show. The default green texture is desaturated and tinted, so the
bar keeps its shading. Players and NPCs the game shows like players get a
class color (the rule Blizzard's raid frames use); every other unit, a
vehicle on the player frame and a class the game keeps secret keep the
default bar.
Colors are allowed in combat, so ns.Later gets an inCombat flag: a new
target is recolored right away instead of after combat. - Merge pull request #3 from ollidiemaus/addon-icon
Give Forever QoL its own icon - Give Forever QoL its own icon
A steel wrench with a few gold sparkles on a green background, drawn in
the same style as Wayscribe's icon. Media/Icon.tga is the texture
(128x128, 32-bit) and the TOC's IconTexture; Media/Icon.svg is its
source and is left out of the package. - Merge pull request #2 from ollidiemaus/public-feature-api
Add a public API for switching features from other addons - Add a public API for switching features from other addons
ForeverQoLAPI exposes IsFeatureEnabled, SetFeatureEnabled and GetFeatureNames
(viewport for now). Changes go through Options:Set, so the feature reacts live
exactly as with the settings page. AutoSetup uses it to toggle the viewport per
resolution. - Merge pull request #1 from ollidiemaus/combined-bag-sort-button
Add option to show the sort button on combined bags - Put the combined bag sort button left of the search box
- Add option to show the sort button on combined bags
Forever's combined bag has no sort button. The new Interface setting moves the
default BagItemAutoSortButton onto the combined bag, next to the search box,
while it is open. Off by default.
0.0.1
Forever QoL
0.0.1 (2026-10-09)
Full Changelog Previous Releases
- added curse id
- category locales
- fixed addon category
- Allow the same German and English name for Viewport
- fixed locales
- Add Forever QoL
Quality of life features for WoW Forever (also runs on retail 12.x), set up
under Options > AddOns or with /fqol:- Merchant: sell junk, repair, use guild funds for repairs
- Tooltips: IDs, vendor price including whole stacks
- Interface: hide the system bar, bag bar, minimap coordinates and the
social button above the chat - Viewport: shrink the 3D world with colored margins; steps aside during
cutscenes - Action bars: reverse vertical and horizontal growth per bar
- /rl as a short form of /reload when nothing else uses it
Specs run in plain Lua 5.1 against WoW API stubs; CI runs them and luacheck.