A World of Warcraft addon that automatically collapses the quest log when entering dungeons, raids, or combat situations. Optionally can filter quests to current zone (triggered by user actions to avoid taint). Please Note: This addon does not work with client versions < 10.0
- Automatic Quest Log Management: Automatically collapses quest log sections when entering instances and expands them when leaving
- Combat Collapse Support: Collapses quest trackers during combat outside of instances (with smart queue system)
- Instance Type Configuration: Different settings for dungeons, raids, scenarios, battlegrounds, arenas, and combat
- Individual Section Control: Fine-grained control over which objective tracker sections to collapse (quests, achievements, bonus objectives, etc.)
- Character-Specific Profiles: Settings saved per character with support for multiple profiles
- GUI Configuration: Easy-to-use configuration panel accessible via
/qlc config - Combat Queue System: Smart handling of operations during combat to prevent taint issues
- Nameplate Integration: Optional nameplate management for different instance types
- Debug Mode: Optional debug messages to track addon behavior
- Manual Control: Commands to manually collapse/expand configured sections
- Error-Safe Operation: Protected against addon taint with comprehensive error handling
- Lightweight: Minimal performance impact with efficient event handling
- Download or clone this repository
- Copy the
QuestLogCollapsefolder to your World of Warcraft addons directory:- Windows:
World of Warcraft\_retail_\Interface\AddOns\ - macOS:
Applications/World of Warcraft/_retail_/Interface/AddOns/
- Windows:
- Restart World of Warcraft or reload your UI (
/reload) - The addon will automatically load and display a confirmation message
The addon provides several slash commands for basic control:
/qlcor/questlogcollapse- Show help menu with combat behavior information/qlc config- Open the configuration panel (recommended)/qlc toggle- Enable/disable the addon/qlc debug- Toggle debug messages on/off/qlc status- Show current addon status, combat queue, and section states/qlc collapse- Manually collapse configured sections (queued during combat)/qlc expand- Manually expand configured sections (cancels combat queue)/qlc filterzone- Manually filter quests by current zone (if enabled in settings)/qlc test- Test objective tracker detection and combat queue status/qlc testcombat- Test combat settings and tracker availability/qlc help- Show all available commands
- Immediate Collapse on Combat Start: Quest trackers collapse during
PLAYER_REGEN_DISABLED, gated by the runtimeTAINT_BLACKLISTso blacklisted trackers are not poked from addon Lua - Automatic Expansion: Quest trackers automatically expand when combat ends (only if they were collapsed during combat)
- Queue System: If immediate collapse fails due to taint protection, operations are queued for when combat ends
- Smart Overrides: Use
/qlc expandduring combat to cancel any queued collapse operations - Instance Priority: Combat settings are ignored when in dungeons/instances
The addon features a comprehensive configuration panel accessible via /qlc config. The panel allows you to:
Enable QuestLogCollapse(default: true) - Whether the addon is activeFilter Quests by Current Zone(default: false) - Track/Untrack quests in your current zone when you open the map, move, use an ability, mount/dismount, or use/qlc filterzoneDebug Mode(default: false) - Whether to show debug messages
- Create multiple profiles for different characters or situations
- Switch between profiles easily
- Each character can have their own profile settings
Configure different behaviors for each type of instance:
- Combat: Outside instances during combat situations
- Dungeons: 5-player group content
- Raids: Large group content
- Scenarios: Solo/small group story content
- Battlegrounds: PvP battleground content
- Arenas: PvP arena content
- Garrison: Inside your Garrison
- Class Hall: Inside your Legion Class Hall
- Quest/Map Tables: When near/using a map/quest/campaign table
- Neighbourhood: In your neighbourhood
- House: In the interior of your house
For each instance type, you can control which objective tracker sections get collapsed:
- Quests: Regular quest objectives
- Achievements: Achievement progress tracking
- Bonus Objectives: World quest and bonus objectives
- Scenarios: Scenario-specific objectives
- Campaigns: Campaign quest lines
- World Quests: World quest objectives
- Professions: Profession recipe tracking
- Monthly Activities: Monthly event tracking
- UI Widgets: Special UI widget objectives
- Adventure Maps: Adventure map objectives
- Nameplate Control: Enable/disable enemy nameplates for each instance type
- Profile Management: Create, switch, and manage multiple configuration profiles
The addon uses the World of Warcraft API to:
- Detect Zone Changes: Listens to the
ZONE_CHANGED_NEW_AREAevent - Monitor Combat State: Tracks
PLAYER_REGEN_DISABLEDandPLAYER_REGEN_ENABLEDevents - Check Instance Type: Uses
IsInInstance()to determine if you're in a dungeon, raid, scenario, battleground, or arena - Apply Instance-Specific Settings: Uses different configurations based on the type of instance you're in
- Smart Combat Handling: Queues operations during combat and applies them safely when combat ends
- Manage Individual Sections: Controls specific ObjectiveTracker modules rather than the entire frame
QuestObjectiveTracker- Regular questsAchievementObjectiveTracker- AchievementsBonusObjectiveTracker- World quests and bonus objectivesScenarioObjectiveTracker- Scenario objectivesCampaignQuestObjectiveTracker- Campaign questsWorldQuestObjectiveTracker- World quest objectivesProfessionsRecipeTracker- Profession recipesMonthlyActivitiesObjectiveTracker- Monthly activitiesUIWidgetObjectiveTracker- UI widget objectivesAdventureMapQuestObjectiveTracker- Adventure map objectives
- Single Trigger: Uses
PLAYER_REGEN_DISABLEDto attempt the collapse synchronously - Blacklist Gating: Trackers in the runtime
TAINT_BLACKLISTare skipped on both collapse and expand to avoid known UIWidget pool taint - Smart Expansion: Tracks which trackers were collapsed during combat and only expands those on combat end
- State Preservation: Maintains quest log state when combat collapse is disabled or no trackers were affected
- Taint Prevention: If both immediate attempts fail, operations are safely queued to prevent addon taint
- Operation Queuing: Queues collapse/expand operations when combat is detected
- Automatic Application: Applies queued operations safely when combat ends
- Manual Overrides: Allows manual cancellation of queued operations
- Instance Priority: Combat operations are ignored when in instances to avoid conflicts
QuestLogCollapse/
├── QuestLogCollapse.toc # Addon metadata and file loading
├── QuestLogCollapse.lua # Main addon logic and event handling
└── QuestLogCollapse_Config.lua # Configuration panel and profile management
ADDON_LOADED- Initialize settings when addon loadsPLAYER_ENTERING_WORLD- Mark addon as fully loaded and readyZONE_CHANGED_NEW_AREA- Detect when player changes zones/instances (sets flag for zone filtering)PLAYER_STARTED_MOVING- Triggers pending zone filter when player moves (hardware-initiated)UNIT_SPELLCAST_SUCCEEDED- Triggers pending zone filter when player casts spells/abilities (hardware-initiated)PLAYER_MOUNT_DISPLAY_CHANGED- Triggers pending zone filter when mounting/dismounting (hardware-initiated)PLAYER_REGEN_DISABLED- Handle entering combat (immediate collapse, gated byTAINT_BLACKLIST)PLAYER_REGEN_ENABLED- Handle leaving combat (expand, apply queued operations)
To avoid taint issues with protected quest tracking functions, zone filtering is triggered by user-initiated actions:
- Quest Tracker Interaction - Triggers when you interact with the objective tracker
- Player Movement - Triggers when you start moving after a zone change
- Spell/Ability Use - Triggers when you cast any spell or ability (including dynamic flight abilities)
- Mounting/Dismounting - Triggers when your mount state changes
- Manual Command - Use
/qlc filterzoneto trigger anytime
QuestLogCollapseDB- Global settings and profilesQuestLogCollapseCharDB- Character-specific settings (current profile)
- WoW Version: Compatible with retail World of Warcraft (Interface 110002+)
- Dependencies: None - this is a standalone addon
- Conflicts: Should not conflict with other quest log or UI addons
- Check if the addon is enabled:
/qlc status - Open the configuration panel:
/qlc config - Verify that the current instance type is enabled in your active profile
- Check that the specific sections you want collapsed are enabled for that instance type
- Enable debug mode to see what's happening:
/qlc debug - Try manually toggling:
/qlc collapseor/qlc expand
- Check if combat instance type is enabled:
/qlc config - Verify you're outside of instances (combat settings ignored in dungeons/raids)
- Check combat queue status:
/qlc status - Enable debug mode to see combat queue operations:
/qlc debug - Try manual commands to test:
/qlc collapseduring combat
- The addon uses a combat queue system to prevent taint from collapse operations
- Zone filtering uses a hybrid trigger system (user actions) to avoid taint from protected quest tracking functions
- If you see "ADDON_ACTION_BLOCKED" errors with zone filtering:
- The filter requires a user action after zone changes (open map, move, or use
/qlc filterzone) - This is by design to comply with WoW's taint protection system
- The filter requires a user action after zone changes (open map, move, or use
- Use
/qlc expandduring combat to cancel problematic queued operations
- Ensure files are in the correct directory
- Check that
QuestLogCollapse.tochas the correct interface version - Make sure all files are present and properly named (
QuestLogCollapse.lua,QuestLogCollapse_Config.lua) - Try
/reloadto refresh addons
- Make sure both lua files are loaded properly
- Check for any lua errors using an error display addon
- Try
/qlc helpto see if basic commands work
- Check that you have write permissions in your WoW directory
- Verify that
SavedVariablesandSavedVariablesPerCharacterare working - Settings are saved when you log out or
/reload
Enable debug mode with /qlc debug to see detailed information about:
- Zone changes and dungeon detection
- Combat state changes and queue operations
- Quest log state changes
- Addon initialization
- Error handling and protected function calls
- Gaspode - Original author and maintainer
- Artherion77 - UI configuration panel revamp and usability improvements
Feel free to submit issues, feature requests, or pull requests to improve this addon. ***Please note: If you submit a PR, please tag me (@ChadAPSheridan) for a review, otherwise I may miss it.
This project is open source. Feel free to modify and distribute as needed.
- Significant code refactor and optimization for better performance and maintainability
- Significant UI Revamp: Updated configuration panel with improved layout and usability (courtesy of Artherion77)
- Updated documentation to reflect new zone filtering system and UI changes
- Updated compatible version
- Update compatible version
- Zone Filtering Taint Fix: Completely redesigned zone filtering to use hybrid trigger system
- Zone changes set a flag instead of immediately calling protected functions
- Filter automatically triggers on user actions (opening map, moving, using abilities, mount/unmount, quest tracker interaction)
- Added
/qlc filterzonecommand for manual triggering - Eliminates
ADDON_ACTION_BLOCKEDerrors from quest tracking operations - Now fully compatible with WoW's taint protection system
- Enhanced Documentation: Updated README with clear explanation of zone filtering triggers
- Taint Issues Resolved!!!: Implemented namespacing throughout entire addon to resolve secret variable taint issues.
- If this completely resolves taint issues, will remove previous mitigation strategies (disabling collapsing of certain trackers, setting delays etc.) in the next update, but wanted to get this into user's hands asap.
- Zone Filtering Added: You can now enable the option to have quests tracked and untracked based on your current zone.
- Error Handling Updates: Added more error handling in a further attempt to catch those pesky taint errors before they escape.
- Documentation Updates & Fixes: Configuration is now all listed in one area.
- New Instance Types Supported: QLC now has configurable support for Garrisons, Class Halls, Quest Tables, Neighbourhoods, and House Interiors!
- Passive Garbage Collection: In some rare situations (ie. repeated entering and exiting combat in a non-instance with other, non-contained combat/location tracking addons installed) the state tracking was balooning in memory footprint. Added non-intrusive GC to address.
- Automatic Quest Log Expansion: Quest trackers now automatically expand when combat ends (only if they were collapsed during combat)
- Smart State Tracking: Added tracking to determine which trackers were collapsed during combat for intelligent restoration
- Enhanced Combat Flow: Complete combat cycle - collapse on enter, expand on exit (outside instances)
- Improved State Management: Better handling of combat state when collapse is disabled or no trackers are affected
- Enhanced Debug Information: Added tracker collapse state to status and test commands
- Early Combat Detection: Added
PLAYER_ENTER_COMBATevent for earliest possible quest tracker collapse - Dual-Layer Combat System: Early detection + fallback system for maximum reliability
- Improved Success Rate: Better chance of collapsing trackers before taint protection activates
- Enhanced Debug Logging: Better tracking of early vs. fallback combat detection
- Reduced Taint Risk: Earlier event handling reduces reliance on protected functions during combat
- Enhanced Combat Collapse: Quest trackers now attempt immediate collapse when entering combat
- Improved Combat Handling: Added fallback queuing system when immediate collapse fails due to taint protection
- New Test Command: Added
/qlc testcombatto test combat settings and tracker availability - Better User Feedback: Enhanced debug messages for immediate vs. queued combat operations
- World Quest Support: Added world quest tracker support to immediate combat collapse
- Initial release with comprehensive functionality
- Automatic quest log collapse/expand based on instance entry/exit
- Combat collapse support with smart queue system
- Multiple instance type support (combat, dungeons, raids, scenarios, battlegrounds, arenas)
- Individual objective tracker section control
- Character-specific profile system
- GUI configuration panel with scrollable interface
- Nameplate integration for instance types
- Combat queue system to prevent addon taint
- Protected function error handling
- Comprehensive slash command interface
- Debug mode with detailed logging
- Manual override capabilities
- Settings migration and profile management