Skip to content

Conversation

@SweeD
Copy link
Contributor

@SweeD SweeD commented Jan 15, 2026

I used the DetailsFramework and implemented a prototype version of a timeline.
You would open it with ´/ns timeline´, has the current loaded remidners active and a dropdown to select another imported reminder set.

image

@Reloe what do you think about the approach?
What would be needed for a first version?

@Reloe
Copy link
Owner

Reloe commented Jan 15, 2026

My initial idea wasn't that you select one of the saved reminders to display those but instead it takes the ones that have already been processed and thus verified to actually show to you in the upcoming pull. But I guess both options could exist at the same time.

Because right now this requires the user to actually have those reminders imported into the addon which would normally only be true for the raidleader.

I think that by default it should only show your own Reminders and it should probably also display when each boss ability happens as well to get a better idea of the encounter flow (can get data for that from viserio).
Not sure how to best display this though while still keeping player spells on the timeline like it is now.
You shouldn't need to iterate on any string to get the data either, it's all already stored in NSI.ProcessedReminder[encID]
Everything in there is reminders that will actually show to that player.

Scrollwheel is currently scrolling sideways, which felt awkward when importing a bigger reminder string I had but if it's only showing your own reminders that's probably better this way so not sure if it should be changed.

I do think there is value to showing ALL reminders as well though, but it shouldn't be the default

@SweeD
Copy link
Contributor Author

SweeD commented Jan 15, 2026

OK, that sounds good, thats why i was eager to get a little prototype going asp, so we can have a discussion on the actual timeline.

I also have the raw boss ability timers from warband.io - i check if i can implement them easyly, but then we need to somehow make the phase starts movable, since they are often depending on boss HP % or so.

@SweeD
Copy link
Contributor Author

SweeD commented Jan 15, 2026

Something like that?

Unbenanntes.Video.Mit.Clipchamp.erstellt.4.mp4

@Rgornitzka
Copy link

Rgornitzka commented Jan 15, 2026

I also have the raw boss ability timers from warband.io...

Be aware that you will need to use my boss data, not yours.
i can't be in a situation where the boss data from Wowutils differs from the addon.

But yes, the phase line needs to be adjustable, i think just having it be freely adjustable however you want is fine. we dont need a min/max on the addon, although i do have it on website.

And maybe the export of the CDs should include phase pushtimers, and then the timeline will default to that unless you move it?

Only the two birds, and likely the last bosses have variable phases.

//Viserio

@SweeD
Copy link
Contributor Author

SweeD commented Jan 15, 2026

I also have the raw boss ability timers from warband.io...

Be aware that you will need to use my boss data, not yours. i can't be in a situation where the boss data from Wowutils differs from the addon.

But yes, the phase line needs to be adjustable, i think just having it be freely adjustable however you want is fine. we dont need a min/max on the addon, although i do have it on website.

And maybe the export of the CDs should include phase pushtimers, and then the timeline will default to that unless you move it?

Only the two birds, and likely the last bosses have variable phases.

//Viserio

In the end we all want the same:
Data that will be correct for the raiders.

Dont know if our data will really differ (since they are from the same game 😅) but you can also give me the timers and I'll add them from your data source.

@Rgornitzka
Copy link

Rgornitzka commented Jan 15, 2026

"Dont know if our data will really differ..."

Its not as simple as just looking at boss cast.
I don't always just use "end of cast" for an event, i use whatever is most relevant to the user, and that involves manual overrides of the timers gotten from logs.
For a tank cast that might be start of cast, for a movement event it might be 5 seconds before the cast, for a spawn of some moving orbs, it might be when the orbs actually reach you.
So yea, there will be differences.

So if you explain what data you need, and in what format, i can give that.

i'm thinking you need:

bossid                                      To match with the bossid in the header of the imported CDs 
bossDifficulty                           I think Reloe and i agreed on "HC" or "M" as abbreviations @Reloe 
fightEnd: number                    To decide how far to render the timeline maybe?
phases [ ] {
  phaseTrigger: string                          E.g. "ph:1" 
  phaseTimer:                           Time in combat to start rendering the phase from, so the start of the red line.
  bossSpellID: number              Used for the spell icon
  duration: number,                 Duration of event, the highlight in your image
  bossSpellType: string             To do the coloring you are doing of the spell names
  castTimers: number [ ]           Times in phase of casts
}

You just show me a format you want it in, and i'll convert to that and give you an example boss

@SweeD
Copy link
Contributor Author

SweeD commented Jan 15, 2026

You just show me a format you want it in, and i'll convert to that and give you an example boss

I have now a format like this:

local _, NSI = ... -- Internal namespace

--------------------------------------------------------------------------------
-- VAELGOR & EZZORAK (3178)
-- Dual-boss fight, Shadowmark phase at ~2:13
--------------------------------------------------------------------------------
NSI.BossTimelines[3178] = {
    duration = 280,
    phases = {
        [1] = {name = "Phase 1: Dual Bosses", start = 0, color = {0.23, 0.51, 0.96}},
        [2] = {name = "Phase 2: Shadowmark", start = 133, color = {0.94, 0.27, 0.27}},
    },
    abilities = {
        -- Phase 1 - Dragon (Vaelgor)
        {name = "Vaelwing", spellID = 1265131, category = "movement", phase = 1, times = {6, 31, 83, 107}, duration = 3.0, important = false},
        {name = "Tail Lash", spellID = 1264467, category = "tank", phase = 1, times = {9, 34, 59, 90}, duration = 2.0, important = true},
        {name = "Dread Breath", spellID = 1244221, category = "damage", phase = 1, times = {12, 56, 101}, duration = 4.0, important = true},
        {name = "Nullbeam", spellID = 1262623, category = "tank", phase = 1, times = {18, 75}, duration = 3.0, important = true},
        {name = "Nullzone", spellID = 1244672, category = "movement", phase = 1, times = {22, 79}, duration = 30.0, important = false},
        -- Phase 1 - Hound (Ezzorak)
        {name = "Void Howl", spellID = 1244917, category = "damage", phase = 1, times = {28, 73, 119}, duration = 3.0, important = true},
        {name = "Rakfang", spellID = 1245645, category = "tank", phase = 1, times = {37, 62, 87, 112}, duration = 2.0, important = true},
        {name = "Gloom", spellID = 1245391, category = "damage", phase = 1, times = {41, 91}, duration = 3.0, important = true},
        {name = "Gloomfield", spellID = 1245420, category = "movement", phase = 1, times = {45, 95}, duration = 20.0, important = false},
        -- Phase 2
        {name = "Shadowmark", spellID = 1270497, category = "soak", phase = 2, times = {0, 6, 12, 18, 24, 30, 36, 42}, duration = 5.0, important = true},
        {name = "Vaelwing", spellID = 1265131, category = "movement", phase = 2, times = {46, 71, 96}, duration = 3.0, important = false},
        {name = "Nullbeam", spellID = 1262623, category = "tank", phase = 2, times = {7, 50}, duration = 3.0, important = true},
        {name = "Nullzone", spellID = 1244672, category = "movement", phase = 2, times = {11, 54}, duration = 30.0, important = false},
        {name = "Dread Breath", spellID = 1244221, category = "damage", phase = 2, times = {15, 21, 61}, duration = 4.0, important = true},
        {name = "Void Howl", spellID = 1244917, category = "damage", phase = 2, times = {3, 78}, duration = 3.0, important = true},
        {name = "Impale", spellID = 1265152, category = "tank", phase = 2, times = {32, 57, 85}, duration = 2.0, important = true},
        {name = "Rakfang", spellID = 1245645, category = "tank", phase = 2, times = {52, 80}, duration = 2.0, important = true},
        {name = "Gloom", spellID = 1245391, category = "damage", phase = 2, times = {56}, duration = 3.0, important = true},
        {name = "Gloomfield", spellID = 1245420, category = "movement", phase = 2, times = {60}, duration = 20.0, important = false},
    },
}

I created a class for every boss but you can also just give me the bosses in the format you got and I'll extract the data I need for the addon via scripts.

@Rgornitzka
Copy link

Rgornitzka commented Jan 15, 2026

i should make the script myself so i can update the data for Reloe during the raid tier. I can look at it after raid (in an hour or so)

@Rgornitzka
Copy link

@SweeD Made an example here,
i omitted phasename (most bosses dont even have defined phases, so its a bit odd when some bosses have a phasename for one thing, but not a lot of other things)
Also omitted Important flag and color.

I guess you cna just test with this, or your own example there, then when done i can push the rest of the timers.

Oh, and i added a Difficulty flag

NSI.BossTimelines[3182] = {
    difficulty = "Mythic",
    duration = 500,
    phases = {
        [1] = {start = 0},
        [2] = {start = 40},
        [3] = {start = 150},
        [4] = {start = 260},
        [5] = {start = 370},
        [6] = {start = 490},
    },
    abilities = {
        {name = "Voidlight Convergence", spellID = 1242515, category = "raid damage", phase = 1, times = {1}, duration = 6},
        {name = "Holy Burn", spellID = 1244348, category = "debuffs, healing absorb", phase = 1, times = {27}, duration = 0},
        {name = "Light Quill", spellID = 1241992, category = "debuffs", phase = 1, times = {21}, duration = 6},
        {name = "Voidlight Convergence", spellID = 1242515, category = "raid damage, debuffs", phase = 1, times = {1}, duration = 6},
        {name = "Light Dive", spellID = 1241291, category = "group soak", phase = 1, times = {20}, duration = 8},
        {name = "Light Edict", spellID = 1261217, category = "tankbuster, frontal", phase = 1, times = {26}, duration = 0},
        {name = "Void Edict", spellID = 1261218, category = "tankbuster, frontal", phase = 1, times = {21}, duration = 0},
        {name = "Voidlight Edict", spellID = 1241640, category = "tankbuster, frontal", phase = 1, times = {72, 102}, duration = 0},
        {name = "Voidlight Convergence", spellID = 1242515, category = "raid damage", phase = 2, times = {42}, duration = 6},
        {name = "Incubation of Flames", spellID = 1242792, category = "event", phase = 2, times = {7}, duration = 30},
        {name = "Holy Burn", spellID = 1244348, category = "debuffs, healing absorb", phase = 2, times = {68, 86, 108}, duration = 0},
        {name = "Light Quill", spellID = 1241992, category = "debuffs", phase = 2, times = {62, 72, 82, 102, 112}, duration = 6},
        {name = "Voidlight Convergence", spellID = 1242515, category = "raid damage, debuffs", phase = 2, times = {42}, duration = 6},
        {name = "Light Dive", spellID = 1241291, category = "group soak", phase = 2, times = {61}, duration = 8},
        {name = "Radiant Echoes", spellID = 1242981, category = "soak, movement", phase = 2, times = {72, 118}, duration = 30},
        {name = "Light Edict", spellID = 1261217, category = "tankbuster, frontal", phase = 2, times = {62, 92, 112}, duration = 0},
        {name = "Void Edict", spellID = 1261218, category = "tankbuster, frontal", phase = 2, times = {67, 97, 117}, duration = 0},
        {name = "Voidlight Edict", spellID = 1241640, category = "tankbuster, frontal", phase = 2, times = {72, 102}, duration = 0},
        {name = "Guardian's Edict", spellID = 1260826, category = "tankbuster, frontal", phase = 2, times = {88}, duration = 0},
        {name = "Death Drop", spellID = 1246709, category = "raid damage, knock, movement", phase = 2, times = {6}, duration = 0},
        {name = "Death Drop", spellID = 1246709, category = "movement", phase = 2, times = {0}, duration = 6},
        {name = "Voidlight Convergence", spellID = 1242515, category = "raid damage", phase = 3, times = {42}, duration = 6},
        {name = "Incubation of Flames", spellID = 1242792, category = "event", phase = 3, times = {7}, duration = 30},
        {name = "Holy Burn", spellID = 1244348, category = "debuffs, healing absorb", phase = 3, times = {68, 86, 108}, duration = 0},
        {name = "Light Quill", spellID = 1241992, category = "debuffs", phase = 3, times = {62, 72, 82, 102, 112}, duration = 6},
        {name = "Voidlight Convergence", spellID = 1242515, category = "raid damage, debuffs", phase = 3, times = {42}, duration = 6},
        {name = "Light Dive", spellID = 1241291, category = "group soak", phase = 3, times = {61}, duration = 8},
        {name = "Radiant Echoes", spellID = 1242981, category = "soak, movement", phase = 3, times = {72, 118}, duration = 30},
        {name = "Light Edict", spellID = 1261217, category = "tankbuster, frontal", phase = 3, times = {62, 92, 112}, duration = 0},
        {name = "Void Edict", spellID = 1261218, category = "tankbuster, frontal", phase = 3, times = {67, 97, 117}, duration = 0},
        {name = "Voidlight Edict", spellID = 1241640, category = "tankbuster, frontal", phase = 3, times = {72, 102}, duration = 0},
        {name = "Guardian's Edict", spellID = 1260826, category = "tankbuster, frontal", phase = 3, times = {87}, duration = 0},
        {name = "Death Drop", spellID = 1246709, category = "raid damage, knock, movement", phase = 3, times = {6}, duration = 0},
        {name = "Death Drop", spellID = 1246709, category = "movement", phase = 3, times = {0}, duration = 6},
        {name = "Voidlight Convergence", spellID = 1242515, category = "raid damage", phase = 4, times = {42}, duration = 6},
        {name = "Incubation of Flames", spellID = 1242792, category = "event", phase = 4, times = {7}, duration = 30},
        {name = "Holy Burn", spellID = 1244348, category = "debuffs, healing absorb", phase = 4, times = {68, 86, 108}, duration = 0},
        {name = "Light Quill", spellID = 1241992, category = "debuffs", phase = 4, times = {62, 72, 82, 102, 112}, duration = 6},
        {name = "Voidlight Convergence", spellID = 1242515, category = "raid damage, debuffs", phase = 4, times = {42}, duration = 6},
        {name = "Light Dive", spellID = 1241291, category = "group soak", phase = 4, times = {61}, duration = 8},
        {name = "Radiant Echoes", spellID = 1242981, category = "soak, movement", phase = 4, times = {72, 118}, duration = 30},
        {name = "Light Edict", spellID = 1261217, category = "tankbuster, frontal", phase = 4, times = {62, 92, 112}, duration = 0},
        {name = "Void Edict", spellID = 1261218, category = "tankbuster, frontal", phase = 4, times = {67, 97, 117}, duration = 0},
        {name = "Voidlight Edict", spellID = 1241640, category = "tankbuster, frontal", phase = 4, times = {72, 102}, duration = 0},
        {name = "Guardian's Edict", spellID = 1260826, category = "tankbuster, frontal", phase = 4, times = {87}, duration = 0},
        {name = "Death Drop", spellID = 1246709, category = "raid damage, knock, movement", phase = 4, times = {6}, duration = 0},
        {name = "Death Drop", spellID = 1246709, category = "movement", phase = 4, times = {0}, duration = 6},
        {name = "Voidlight Convergence", spellID = 1242515, category = "raid damage", phase = 5, times = {42}, duration = 6},
        {name = "Incubation of Flames", spellID = 1242792, category = "event", phase = 5, times = {7}, duration = 30},
        {name = "Holy Burn", spellID = 1244348, category = "debuffs, healing absorb", phase = 5, times = {68, 86, 108}, duration = 0},
        {name = "Light Quill", spellID = 1241992, category = "debuffs", phase = 5, times = {62, 72, 82, 102, 112}, duration = 6},
        {name = "Voidlight Convergence", spellID = 1242515, category = "raid damage, debuffs", phase = 5, times = {42}, duration = 6},
        {name = "Light Dive", spellID = 1241291, category = "group soak", phase = 5, times = {61}, duration = 8},
        {name = "Radiant Echoes", spellID = 1242981, category = "soak, movement", phase = 5, times = {72, 118}, duration = 30},
        {name = "Light Edict", spellID = 1261217, category = "tankbuster, frontal", phase = 5, times = {62, 92, 112}, duration = 0},
        {name = "Void Edict", spellID = 1261218, category = "", phase = 5, times = {67, 97, 117}, duration = 0},
        {name = "Guardian's Edict", spellID = 1260826, category = "tankbuster, frontal", phase = 5, times = {88}, duration = 0},
        {name = "Death Drop", spellID = 1246709, category = "raid damage, knock, movement", phase = 5, times = {6}, duration = 0},
        {name = "Death Drop", spellID = 1246709, category = "movement", phase = 5, times = {0}, duration = 6},
    },
}

@Rgornitzka
Copy link

Oh, and guess one thing to note is that some of them like the last 2 rows of abilities. Same name + id, but different type.
I think just put them in one row. on the website i have colored borders on the different casts.
The reason it is that way is because the death drop is a big circle you al run out of, and then big dmg. so 2 types.

@SweeD SweeD force-pushed the feature/add-ns-timeline branch from 29c7435 to 8f2f1bc Compare January 16, 2026 11:56
@SweeD
Copy link
Contributor Author

SweeD commented Jan 16, 2026

@Reloe @Rgornitzka i pushed my latest changes with some changes for the format changes from your example data

@Rgornitzka
Copy link

Played around with it and compiled some notes.

  • Should be accessible from the NS dashboard. Probably just as a 'Timeline' tab next to Reminder tab. '/ns timeline' is awkward and people wont realize it exists it if its not in the UI :D @Reloe

  • Should layer on top of the NS dashboard.

image
  • Add the difficulty and tell me how you want to differentiate between the two boss files for the two difficulty versions of the bosses.

  • Adjustable size of timeline window would be nice

  • Rename this to Shared and Personal reminders,, to align with the rest of NS's definitions

image
  • Show Boss Abilities checkbox in top right is inverted. True = boss spells are hidden.

  • Make boss phase lines red. They are easily missed when grey

  • Hide skipped boss spells.
    AEWqF13

  • Might be nice to consider the relevant class/spec/role assignments as part of the "Personal Reminders"? This might be a @Reloe question

These two i don't know if its worth dipping into the endless hole of trying to make it good UI/UX, or if its better to stick to a simple design.

  • Show absolute time of ability next to it? toggle for personal and boss ability.
  • Vertical line at mouse position is nice so its easier for people to see where spells are assigned in relation to a boss ability

I had removed the "important" tag in the data i gave earlier, but i see the point of it in this view where you might want to filter for important (as a default setting) to conserve vertical space. Should i add that to the boss data?

Overall, lovely! Will be a lot nicer than reading the mrt note.

@Reloe
Copy link
Owner

Reloe commented Jan 17, 2026

My Reminders / All Reminders should already be the correct wording imo.
The filtering is based on whether you want to show stuff that displays to you, or everything. Not based on whether or not it is loaded into shared/personal

@Reloe
Copy link
Owner

Reloe commented Jan 17, 2026

You probably wanna add smth at the end of the NSI:ProcessReminder() function to update the timeline display. Right now the timeline doesn't update when user selects/deselects some of the options regarding what will actually show to them. And that function is basically run on every settings change so should be consistent to get the timeline updated

@SweeD
Copy link
Contributor Author

SweeD commented Jan 18, 2026

@Reloe @Rgornitzka

Addressed

  • Should be accessible from the NS dashboard. Probably just as a 'Timeline' tab next to Reminder tab. '/ns timeline' is awkward and people wont realize it exists it if its not in the UI :D @Reloe
  • Should layer on top of the NS dashboard.
  • Make boss phase lines red. They are easily missed when grey
  • Hide skipped boss spells.
  • Add the difficulty and tell me how you want to differentiate between the two boss files for the two difficulty versions of the bosses - there is a ability hash per difficulty. Please check a BossTimeline/* file.

Not addressed (yet?)

  • Adjustable size of timeline window would be nice - since it is in the main view now, there is no own window to change sizes.
  • Rename this to Shared and Personal reminders,, to align with the rest of NS's definitions - According to @Reloe its correct the current way?
  • Show Boss Abilities checkbox in top right is inverted. True = boss spells are hidden. - It works as expected. SHow boss abilities is activated by default so the boss abilities are shown. By checking this off, they are hidden.

Open questions

  • How does an reminder import with encounter difficulty look like? Do we got an example of the format?

SweeD added 8 commits January 18, 2026 21:31
- add category keyword parsing for compound categories (e.g. "raid damage, debuffs")
- expand category colors for new keywords (tankbuster, group soak, etc.)
- add difficulty field support with display in window title
- add Belo'ren (3182) example timeline data
- remove phase name and color fields (now optional)
- remove important field from abilities
- use integer durations instead of floats
- remove duplicate Belo'ren data from BossTimelines.lua
- change default phase marker color from grey to red for visibility
- filter out boss abilities that occur after the next phase starts
- allows dragging phase markers to dynamically hide ended phase abilities
- add Timeline tab to main NSUI panel next to Encounter Alerts
- support nested difficulty structure (Mythic/Heroic/Normal) for boss timelines
- add GetBossTimeline() with auto-detection and fallback chain
- add embedded timeline refresh functions for the new tab
- update all boss timeline files to new difficulty format
- fix timeline positioning and layout in embedded view
@SweeD SweeD force-pushed the feature/add-ns-timeline branch from 2fd28cd to 7240321 Compare January 18, 2026 20:40
@SweeD
Copy link
Contributor Author

SweeD commented Jan 18, 2026

You probably wanna add smth at the end of the NSI:ProcessReminder() function to update the timeline display. Right now the timeline doesn't update when user selects/deselects some of the options regarding what will actually show to them. And that function is basically run on every settings change so should be consistent to get the timeline updated

Can you give me more context / example?
I'm not 100% certain to know what you mean

@Reloe
Copy link
Owner

Reloe commented Jan 19, 2026

https://i.imgur.com/urAa3OM.png - Phase seems to not work correctly, on Chimaerus at least. It's stacking 3 of these on top of each other (I have them assigned around the same time for phases 1, 2, 3)

You probably wanna add smth at the end of the NSI:ProcessReminder() function to update the timeline display. Right now the timeline doesn't update when user selects/deselects some of the options regarding what will actually show to them. And that function is basically run on every settings change so should be consistent to get the timeline updated

Can you give me more context / example? I'm not 100% certain to know what you mean

If timeline is in the main window as it is now, this would become irrelevant. Previoulsy the display was not getting updated when it should've been (because the user could be making changes in the main window while the timeline is open) but now the display is forced by swapping tabs.

Difficulty is just added on the first line, so for example:
EncounterID:3306;Difficulty:mythic;Name:Chimaerus the Undreamt God

I currently do not store this anywhere, I just name it based on this. So for the import example the reminder would end up being named "Chimaerus the Undreamt God - mythic" - think viserio already said he will be using the shortened bossnames though.

Zooming in can sometimes be a bit awkward because it reorientates itself whenever you zoom in so if you zoom in on the left side of the screen and scroll 4-5 times, you don't actually end up at the time that you started zooming in on.

It might be better if the timeline was just a button to access it somewhere else instead of being it's own tab. Same can be said about other things in the addon though tbh. Tabs are kinda getting bloated at this point and this adds a 3rd row

@SweeD
Copy link
Contributor Author

SweeD commented Jan 19, 2026

https://i.imgur.com/urAa3OM.png - Phase seems to not work correctly, on Chimaerus at least. It's stacking 3 of these on top of each other (I have them assigned around the same time for phases 1, 2, 3)

@Reloe can you give me the import string you used - makes it more easy for my to reproduce.

Difficulty is just added on the first line, so for example:
EncounterID:3306;Difficulty:mythic;Name:Chimaerus the Undreamt God

I'll add support for it then. What are the strings? mythic/heroic/normal ?

Zooming in can sometimes be a bit awkward because it reorientates itself whenever you zoom in so if you zoom in on the left side of the screen and scroll 4-5 times, you don't actually end up at the time that you started zooming in on.

How do we want the default behaviour here? Zooms in on the middle or zooms in on the mouse position?

It might be better if the timeline was just a button to access it somewhere else instead of being it's own tab. Same can be said about other things in the addon though tbh. Tabs are kinda getting bloated at this point and this adds a 3rd row

So are we going to take it out the main window again or let it in there for now? If we take it out, where do we put the button and dont we wanna keep /ns timeline as a shortcut?

@Reloe
Copy link
Owner

Reloe commented Jan 19, 2026

EncounterID:3306;Name:Chimaerus` the Undreamt God
ph:1;time:13;tag:Relowindi;spellid:101643;
ph:1;time:16;tag:Relowindi;spellid:132578;
ph:1;time:88;tag:Relowindi;text:Frontal;countdown:5;
ph:1;time:120;tag:Relowindi;spellid:116844;
ph:1;time:140;tag:Relowindi;spellid:115203;
ph:1;time:157;tag:Relowindi;spellid:116841;glowunit:relowindi;
ph:2;time:11;tag:Relowindi;spellid:101643;
ph:2;time:16;tag:Relowindi;spellid:132578;
ph:2;time:89;tag:Relowindi;text:Frontal;countdown:5;
ph:2;time:118;tag:Relowindi;spellid:116844;
ph:2;time:139;tag:Relowindi;spellid:115203;
ph:3;time:11;tag:Relowindi;spellid:101643;
ph:3;time:14;tag:Relowindi;spellid:132578;
ph:3;time:88;tag:Relowindi;text:Frontal;countdown:5;
ph:3;time:129;tag:Relowindi;spellid:116844;
ph:3;time:138;tag:Relowindi;spellid:115203;

I imagine the string will be Mythic/Heroic/Normal on the next update, but would have to ask viserio

I think you want it to zoom in on the mouse position but the "relative" position has to stay the same. So basically if I choose a time to zoom in on, the position of that time should stay the same so the mouse does not need to be moved between multiple zoom-events.

I don't really mind whether it is in the main-window or not. /ns timeline can be kept either way. There's advantages to both.
If it's not in the main-window then I think the bubtton should be in Reminders-Note because that tab is basically the "view where my reminders are assigned"-tab while the regular reminders tab is "change how/which reminders show"

@Rgornitzka
Copy link

  • example of difficulty in header. And its just Mythic and Heroic. There's no use case for this on normal lol.
    EncounterID:3134;Difficulty:mythic;Name:Dimensius
    and yes, i swapped to exporting shorthand names, but that shouldn't change anything.

  • You should accept the Reviews i made the other day for some coloring and spellcategories. you can see them when you scroll up.

  • Say when you want the rest of the boss data, didn't bother giving it until you are settled on format.

  • I think having it as a tab called "Timeline" is what would be most intuitive for people. Easily accessible, easy to navigate to other things. The only concern with having it as a tab in the NS dashboard is that maybe the size is a bit restricted. idk.
    If its a boss like dimensius, i genuenly think the page is not even big enough to show all boss spells lol.

For that reason, a popover with an adjustable window size, might be better?

  • Hovering over a player spel has info for "duration" that seems hardcoded to 8 seconds

  • I can drag a phase 3 to be earlier than phase 2. That might be a bit too free.

  • I think maintaining -/ns timeline, and add /ns t is good. as it lets people quickly open it. Its a tab some raiders will open before every pull, so it should be easily accessible.

@Rgornitzka
Copy link

The goal of seeing your spells assignment position, in relation to boss spells and combat timer, becomes impossible because of a few issues right now

  • hard to vertically align a cast with the boss spell.
    Suggsted solution: a vertical line at mouse posiiton, maybe with timestamp

  • time ruler at top of page dissapears when scrolling.
    It should either be sticky, or not part of the scroll area.

  • Boss spells scroll away when looking at other player spells out of view.
    Boss spells should almost maybe be a separate vertical scroll than player spells. Otherwise the only player that can be compared to boss spells is the top player of the list, or the top spells of the player list.

I can add an "important" tag to the spells and we can have that as a default toggle on, to condense the list of spells in the boss timeline as well.

I dont want to overkill it on the logic for the timeline, but i think these might all be necessary.

@SweeD
Copy link
Contributor Author

SweeD commented Jan 20, 2026

Following things got changed:

  • Load the difficulty, add it to the reminders name (smaller bossnames very appreciated 😆 ), allowed keys: mythíc/heroic case insensitive
  • Improve the zooming functionality
  • Made the ruler of the timeline sticky
  • Fixed the bug with the abilities overlapping for different phases
  • Removed timeline data supports "Normal"

Not implemented | ToDos:

  • Restrict moving phase marker 3 over the marker of phase 2 - skipping a whole phase will not really occur on any boss, right?
  • Add a mouse-marker line which shows the timeline position when hovering over the timeline.
  • Hovering over a player spel has info for "duration" that seems hardcoded to 8 seconds (need to check this)
  • Add a dropdown/select on the top of the bosses to do following:
    • Show all (as now)
    • Show only the important casts
    • Crunch all boss abilities into one column

Open things:

You should accept the Reviews i made the other day for some coloring and spellcategories. you can see them when you scroll up.

@Rgornitzka i cant find any review/pr or anything above. Maybe it was gone when i changed the Timeline format to also support difficulty? Please check the latest boss data to see how the difficulty should be used. Can you please change your data format and recreate review or PR into my feature branch?

I can add an "important" tag to the spells and we can have that as a default toggle on, to condense the list of spells in the boss timeline as well.

@Rgornitzka that might be nice, i could then add a dropdown to only show important casts or so. (see above in todos)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants