diff --git a/.kilocode/skills/export-session/SKILL.md b/.kilocode/skills/export-session/SKILL.md new file mode 100644 index 0000000..b776d0d --- /dev/null +++ b/.kilocode/skills/export-session/SKILL.md @@ -0,0 +1,49 @@ +--- +name: export-session +description: Export session artifacts (markdown files, notes, research) to a documentation folder for review or archival. Use this when you need to save session work, create research documentation, or export artifacts from a development session. +--- + +# Export Session Skill + +Exports session artifacts to a documentation/research folder for later review. + +## Instructions + +1. **When to use**: After completing a significant coding session, bug fix, or feature implementation +2. **Required parameters**: + - `project`: Project name (e.g., "Questie-X") + - `session`: Descriptive session name (e.g., "Keybind-Fix", "1.5.2-Release") + - `source`: Source directory containing artifacts (typically the brain/artifact directory) + - `target`: Target base directory for exports + +## Usage + +Run the export script from `.kilocode/skills/export-session/scripts/export_session.py`: + +```bash +python .kilocode/skills/export-session/scripts/export_session.py "" --source --target [--extensions .md .lua] [--clean] +``` + +### Examples + +Export markdown files from a session: +```bash +python .kilocode/skills/export-session/scripts/export_session.py Questie-X "Keybind-Fix" --source C:\Brain\session123 --target C:\Research --extensions .md +``` + +Export all files from current directory: +```bash +python .kilocode/skills/export-session/scripts/export_session.py MyProject "BugFix-123" --source . --target ~/research +``` + +## Output + +Creates a folder at: `///` containing: +- All copied artifacts from source +- A summary markdown file with session details + +## Notes + +- Use `--clean` to overwrite existing sessions +- Use `--extensions` to filter file types (default: all files) +- Use `--no-summary` to skip summary file creation diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fece63..8ea6471 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,8 @@ Addressed micro-stutters and FPS drops (190 → sub-100) reported during high-fr - **Compression level**: `LibDeflate:CompressDeflate` level reduced from 9 (slowest/max) to 1 (fastest). For small addon message payloads the size difference is negligible but the CPU cost is substantially lower. - **Dedup counter**: `IsDuplicateMessage` now uses an O(1) integer counter (`messageCacheCount`) to track cache size instead of an O(n) `for _ in pairs(messageCache)` scan on every incoming message. +- **[Fix — Profiler UI]** Resolved an issue where the `QuestieProfiler` UI text was overlapping horizontally when function names were too long, rendering the time and call counts illegible. Lines are now appropriately spaced and function names are clamped and left-aligned. + ## v1.5.4 (2026-03-29) ### Ascension Custom Zone Support diff --git a/Modules/QuestieProfiler.lua b/Modules/QuestieProfiler.lua index f4b8828..23b114b 100644 --- a/Modules/QuestieProfiler.lua +++ b/Modules/QuestieProfiler.lua @@ -212,20 +212,20 @@ function QuestieProfiler:CreateUI() base.scrollContainer.CreateLineFrame = function() local label = base.scrollContainer:CreateFontString(nil, "ARTWORK", "GameFontNormal") label:SetText("") - label:SetPoint("TOPLEFT", base.scrollContainer, 0, -lineCounter * 10) - - label:SetWidth(base.scrollFrame:GetWidth() - 270) - label:SetJustifyH("RIGHT") + label:SetPoint("TOPLEFT", base.scrollContainer, 10, -lineCounter * 16) + label:SetWidth(base.scrollFrame:GetWidth() - 280) + label:SetJustifyH("LEFT") + label:SetWordWrap(false) local label2 = base.scrollContainer:CreateFontString(nil, "ARTWORK", "GameFontNormal") label2:SetText("") - label2:SetPoint("TOPLEFT", base.scrollContainer, base.scrollFrame:GetWidth() - 260, -lineCounter * 10) + label2:SetPoint("TOPLEFT", base.scrollContainer, base.scrollFrame:GetWidth() - 260, -lineCounter * 16) local label3 = base.scrollContainer:CreateFontString(nil, "ARTWORK", "GameFontNormal") label3:SetText("") - label3:SetPoint("TOPLEFT", base.scrollContainer, base.scrollFrame:GetWidth() - 150, -lineCounter * 10) + label3:SetPoint("TOPLEFT", base.scrollContainer, base.scrollFrame:GetWidth() - 130, -lineCounter * 16) - base.scrollContainer:SetSize(base.scrollFrame:GetWidth(), lineCounter * 10) + base.scrollContainer:SetSize(base.scrollFrame:GetWidth(), lineCounter * 16) return { label, label2, label3 } end diff --git a/Questie-X-Classic.toc b/Questie-X-Classic.toc index a67baff..65577e9 100644 --- a/Questie-X-Classic.toc +++ b/Questie-X-Classic.toc @@ -1,11 +1,11 @@ ## Interface: 30300 -## Title: |cFF5EBAF3Questie|r|cFFDAFAFD-X|r-Classic|cFF00FF00 v1.5.4|r +## Title: |cFF5EBAF3Questie|r|cFFDAFAFD-X|r-Classic|cFF00FF00 v1.5.5|r ## Notes: A standalone Classic QuestHelper ## Notes-esMX: Ayundante de misiones ## Notes-esES: Ayundante de misiones ## Notes-ptBR: Ajudante de misiones ## Notes-frFR: Assistant de quêtes -## Version: 1.5.3 +## Version: 1.5.5 ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## SavedVariables: QuestieConfig, QuestieLearnerDB, QuestieCacheDB ## SavedVariablesPerCharacter: QuestieConfigCharacter diff --git a/Questie-X-TBC.toc b/Questie-X-TBC.toc index 2e8a5c4..e1cc6db 100644 --- a/Questie-X-TBC.toc +++ b/Questie-X-TBC.toc @@ -1,11 +1,11 @@ ## Interface: 30300 -## Title: |cFF5EBAF3Questie|r|cFFDAFAFD-X|r-TBC|cFF00FF00 v1.5.4|r +## Title: |cFF5EBAF3Questie|r|cFFDAFAFD-X|r-TBC|cFF00FF00 v1.5.5|r ## Notes: A standalone Classic QuestHelper ## Notes-esMX: Ayundante de misiones ## Notes-esES: Ayundante de misiones ## Notes-ptBR: Ajudante de misiones ## Notes-frFR: Assistant de quêtes -## Version: 1.5.3 +## Version: 1.5.5 ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu ## SavedVariables: QuestieConfig, QuestieLearnerDB, QuestieCacheDB ## SavedVariablesPerCharacter: QuestieConfigCharacter diff --git a/Questie-X-Turtle.toc b/Questie-X-Turtle.toc index 820d167..8d1de96 100644 --- a/Questie-X-Turtle.toc +++ b/Questie-X-Turtle.toc @@ -1,11 +1,11 @@ ## Interface: 11200 -## Title: |cFF5EBAF3Questie|r|cFFDAFAFD-X|r-Turtle|cFF00FF00 v1.5.4|r +## Title: |cFF5EBAF3Questie|r|cFFDAFAFD-X|r-Turtle|cFF00FF00 v1.5.5|r ## Notes: A standalone Classic QuestHelper ## Notes-esMX: Ayundante de misiones ## Notes-esES: Ayundante de misiones ## Notes-ptBR: Ajudante de misiones ## Notes-frFR: Assistant de quêtes -## Version: 1.5.3 +## Version: 1.5.5 ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu, Questie-X-TurtleDB ## SavedVariables: QuestieConfig, QuestieLearnerDB, QuestieCacheDB ## SavedVariablesPerCharacter: QuestieConfigCharacter diff --git a/Questie-X.toc b/Questie-X.toc index 19e9c50..76e5ad4 100644 --- a/Questie-X.toc +++ b/Questie-X.toc @@ -11,7 +11,7 @@ ## Notes-esES: Ayundante de misión ## Notes-ptBR: Ajudante de missão ## Notes-frFR: Assistant de quête -## Version: 1.5.4 +## Version: 1.5.5 ## OptionalDeps: Ace3, CallbackHandler-1.0, HereBeDragons, LibDataBroker-1.1, LibDBIcon-1.0, LibSharedMedia-3.0, LibStub, LibUIDropDownMenu, Questie-X-WotLKDB, Questie-X-ClassicDB, Questie-X-TBCDB, Questie-X-TurtleDB, Questie-X-AscensionDB, Questie-X-EbonholdDB ## SavedVariables: QuestieConfig, QuestieLearnerDB, QuestieCacheDB, QuestieJourneyDB ## SavedVariablesPerCharacter: QuestieConfigCharacter diff --git a/README.md b/README.md index 20a1967..324c1d8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Questie-X Logo -![Version](https://img.shields.io/badge/Questie--X-v1.5.4-blue.svg?style=for-the-badge) +![Version](https://img.shields.io/badge/Questie--X-v1.5.5-blue.svg?style=for-the-badge) [![Downloads](https://img.shields.io/github/downloads/Xurkon/Questie-X/total?style=for-the-badge&color=e67e22)](https://github.com/Xurkon/Questie-X/releases) [![Documentation](https://img.shields.io/badge/Documentation-View%20Docs-58a6ff?style=for-the-badge)](https://xurkon.github.io/Questie-X/) [![Patreon](https://img.shields.io/badge/Patreon-F96854?style=for-the-badge&logo=patreon&logoColor=white)](https://www.patreon.com/Xurkon) diff --git a/docs/changelog.html b/docs/changelog.html index 7ca2047..1c1cd73 100644 --- a/docs/changelog.html +++ b/docs/changelog.html @@ -169,13 +169,25 @@

Questie-X Documentation

Complete history of changes, fixes, and additions.

- Version: v1.5.4 + Version: v1.5.5 ← Back to Documentation
+

v1.5.5 — Performance & Stability

+
    +
  • [Performance — Position Caching] Implemented a 50ms cache for GetPlayerWorldPosition and GetPlayerZonePosition in Compat/HBD.lua. This drastically reduces C API overhead which was the #1 hotspot, with automatic cache invalidation on zone transitions.
  • +
  • [Performance — Arrow DB Optimization] Overhauled ZoneDB:GetAreaIdByUiMapId to use an O(1) reverse-mapping cache instead of an O(n) linear scan, eliminating a significant CPU bottleneck triggered hundreds of times per minute by the directional arrow.
  • +
  • [Performance — Tooltip Throttling] Throttled the GameTooltip OnUpdate hook to run at 10Hz (100ms) and added a text-change cache, preventing redundant and expensive tooltip recalculations every single frame.
  • +
  • [Performance — Network Refactor] Refactored QuestieLearnerComms: reduced compression overhead (negligible size difference but massive CPU savings), slowed processing ticker to match output rate limits, and optimized duplicate detection to O(1).
  • +
  • [Performance — Arrow Closures] Hoisted heavy inner closures out of the hot QuestieArrow:UpdateNearestTargets loop to module-level functions, eliminating persistent memory allocation spikes and Garbage Collection (GC) pressure.
  • +
  • [Fix — Profiler Display] Fixed textual overlap and vertical spacing issues in the QuestieProfiler UI. Function names are now properly left-aligned, and horizontal spacing ensures metrics remain legible regardless of function name length.
  • +
+ +
+

v1.5.4 — Dedicated Keybinds Tab

  • [Feature — Dedicated Keybinds Tab] Added a new Keybinds options tab with configurable keybinds for: diff --git a/docs/index.html b/docs/index.html index 572855d..98efea4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -210,7 +210,7 @@ Questie-X Logo

    A universal WoW quest-helper with a plugin architecture for any private server.

    - Version: v1.5.4 + Version: v1.5.5 View Changelog