Skip to content

Releases: ollidiemaus/qol

0.0.8

Choose a tag to compare

@ollidiemaus ollidiemaus released this 14 Oct 13:06
2465035

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

Choose a tag to compare

@ollidiemaus ollidiemaus released this 12 Oct 19:53
7583784

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

Choose a tag to compare

@ollidiemaus ollidiemaus released this 12 Oct 18:16
d88ce49

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

Choose a tag to compare

@ollidiemaus ollidiemaus released this 11 Oct 14:45
9ab4273

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

Choose a tag to compare

@ollidiemaus ollidiemaus released this 11 Oct 10:23
113eed8

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.
  • 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...
Read more

0.0.3

Choose a tag to compare

@ollidiemaus ollidiemaus released this 10 Oct 17:55
6d7de7b

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.
  • 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.
  • 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.

0.0.2

Choose a tag to compare

@ollidiemaus ollidiemaus released this 09 Oct 13:17
a5d186d

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

Choose a tag to compare

@ollidiemaus ollidiemaus released this 09 Oct 10:54

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.