promotional bannermobile promotional banner

Daseeki-Core

Core Addon to the Daseeki Suite of WoW Classic Era addons
Back to Files

v2.4.1-classic

File nameDaseeki-Core-v2.4.1-classic.zip
Uploader
poonyxpoonyx
Uploaded
Aug 19, 2026
Downloads
19
Size
334.1 KB
Flavors
Classic
File ID
8682404
Type
R
Release
Supported game versions
  • 1.15.9
  • 1.15.8
  • 1.15.7

What's new

# Changelog

## 2.4.1 (2026-08-18)

- Fixed: **a value you type into a settings box is saved when you click away.** Until now
  a text field only saved if you pressed Enter — literally that key, nothing else. Type a
  name and click the next row, a button, or anywhere at all, and every keystroke was
  thrown away in silence; the field quietly repainted itself with the old value the next
  time the page refreshed, so it looked as though nothing had been typed. This is why a
  chat channel nickname would not stick, and every text field in every Daseeki addon had
  it, hidden anywhere the same value could also be set some other way. Text fields now
  save when you leave them, exactly as they save on Enter — once, never twice — and
  Escape still puts back the stored value and saves nothing. A field you click into and
  straight back out of without typing is left alone, and a value the setting itself
  tidies up (trimming spaces, lowering case) is shown back to you as it was stored.

- Fixed: **captions on settings pages are no longer invisible.** A plain text caption
  beside a control — "Theme", "Font", "Buff", the name of a channel — was built with no
  width of its own, and a settings page hides anything with no width, so the caption was
  written, laid out and never drawn. Every Daseeki addon's settings page inherited this
  from Core. Captions are now measured from the text itself and re-measured whenever the
  text or the font changes, so they appear where they were always meant to, and the
  control beside them sits at its proper distance instead of sliding left into the gap.
  Pages that already set their own caption widths by hand are untouched.
- Fixed: **renaming a caption or a button in place now actually changes it.** Asking a
  caption to change its text did nothing at all (there was no way to ask), and asking a
  button to change its label quietly succeeded while painting nothing — which is why a
  button could sit there wearing the wrong word. Captions, hints, section titles, buttons
  and checkboxes all now answer to being renamed, and the new text is drawn.

## 2.4.0 — 2026-08-11

- Fixed: **changing a theme, font or text size can no longer send the interface into a
  loop.** When you pick a new look, Core tells every Daseeki addon to redraw itself, and
  each of those redraws runs to completion before the setting has finished applying. If
  any one of them reached back and changed the appearance again — a perfectly ordinary
  thing for an addon to do — the whole redraw started over from inside itself, and could
  keep doing so until the game ran out of room. Core now finishes the redraw it is on,
  applies whatever was asked for in the meantime, and runs one more pass so nothing is
  left half-changed. If something keeps asking without ever settling, Core stops and
  writes down what happened instead of freezing.
- Fixed: **switching pages in the settings window can no longer leave the sidebar and the
  page disagreeing.** Each addon builds its own settings page, and that build can ask
  Core to jump somewhere else while it is still running. The jump now happens after the
  page it interrupted has finished, so the highlighted entry in the sidebar, the page on
  screen and the page Core remembers for next time are always the same one — and a page
  that asks for itself over and over is stopped rather than allowed to recurse.

- Added: **a performance log for the suite.** Core now takes a quiet snapshot of the
  game's own addon profiler a few minutes after you log in, every fifteen minutes after
  that, and once more as you log out — recording how much CPU time each Daseeki addon is
  actually using, alongside the ten heaviest addons you have running overall so there is
  something to compare against. **`/daseeki perf`** prints the latest snapshot: every
  Daseeki addon with its recent average, session average and peak in milliseconds, the
  all-addons and game-itself totals for scale, and the top five overall.
  **`/daseeki perf clear`** empties it.

  The last 60 snapshots are kept in your saved variables — several days of play — so
  "the interface felt heavy in Naxx last night" can be answered from the log the next
  morning instead of guessed at. The sampler itself costs nothing between snapshots:
  no per-frame work, no combat hooks, just a handful of readings on a timer. If your
  client's addon profiler is switched off (or your client has none), the log records
  one line saying exactly that and stops for the session rather than filling up with
  blanks. Every snapshot is stamped with the Core version that took it, so a reading
  from an older build is never mistaken for a current one.

  Which addons get measured is decided by name at runtime, not from a list — a Daseeki
  addon released next month is picked up the day you install it.

- Added: **a permanent record of every play session.** The performance log above keeps
  the last 60 snapshots, which sounds like plenty until a ten-hour day fills the whole
  thing and pushes last Friday out of it — so "was the interface heavier tonight than it
  was with that other addon loaded last week?" became a question the log could no longer
  answer. Core now also keeps **one small summary per play session**, and those go back
  about six weeks (up to 120 sessions) rather than a few days.

  Each summary records when the session started and ended, how many snapshots went into
  it, and for every Daseeki addon — plus whatever else was heaviest that night — the
  average cost, the worst cost, and the worst spike. **`/daseeki perf sessions`** lists
  them, newest first, with the three heaviest addons of each; **`/daseeki perf session`**
  (optionally with a number from that list) prints one in full. **`/daseeki perf sessions
  clear`** empties the archive; the two logs are separate, and clearing one never touches
  the other.

  The summary is written a few minutes into a session and refreshed as it goes, so a game
  that crashes still leaves a record of the evening — one that says plainly that it is
  incomplete rather than quietly pretending otherwise. The final version is written as you
  log out, in the moment the game gives for it, and costs well under a millisecond.
- Fixed: **the minimap button finally wears the Daseeki mark.** It had been showing a
  generic Blizzard cog — the custom artwork was a `.jpg`, a format WoW cannot load, so
  the button silently fell back to a stock icon. The button now carries the suite maker's
  mark: the crimson brand diamond with its bronze keyline, the same hallmark the settings
  window and the Nexus dashboard wear in their title bars, drawn to read at minimap size.
- Changed: Daseeki Core is now licensed **All Rights Reserved** rather than MIT, matching the rest of the suite; the bundled Fira Sans Condensed font keeps its own SIL Open Font License 1.1 (`fonts/OFL.txt`) and is unaffected.

## 2.2.0 — 2026-08-03

### Added
- **A new look for the suite: Field Ledger.** The settings window is redressed as worn
  ink on parchment — warm dark grounds, a faint paper grain, aged edges and a thin bronze
  keyline, with the suite crimson kept for selection and urgency. Field Ledger is the
  theme a fresh install starts on. If you have already picked a theme, your choice is
  left exactly as it was; switch to it from Core > Appearance whenever you like.
- **New "Daseeki" theme** — the owner's original 1.x skin rebuilt from the real thing:
  near-black window grounds, blood-red accents and borders, warm gold titles. Pick it
  in Core > Appearance if you miss the old look.
- **Material dial** (Core > Appearance): **Subtle / Standard / Strong** sets how strongly
  the parchment grain, the aged edge and the bronze keyline read on your monitor.
  Standard is the default, and `/daseekiui debug material` cycles the three live so you
  can compare them side by side. Your choice is remembered.
- **Font picker** (Core > Appearance): choose the face the whole suite is drawn in.
  Daseeki Core now ships with **Fira Sans Condensed Medium** (SIL Open Font License 1.1)
  and uses it by default on a fresh install — this replaces the thin Arial Narrow that
  made labels and numerals hard to read. Alongside it you get the six built-in WoW faces
  (Friz Quadrata, Arial Narrow, Morpheus, Skurri, 2002, 2002 Bold) plus any font
  registered with LibSharedMedia by WeakAuras, Details or another addon, merged in at
  runtime. Picking a face re-skins every Daseeki window immediately. Ceremonial headers
  stay Morpheus by design and never follow the picker. If you already had a font chosen,
  it is not changed.
- **Text size slider** (85–130%, default 100%) scales all suite text at once. Both the
  face and the size are remembered.

### Changed
- Settings window sidebar: the **Core** group (Appearance) now sits above the **Suite**
  group, and the suite addons under it are listed alphabetically instead of in whatever
  order they happened to load. The order is settled when the sidebar is drawn, so an
  addon that loads late in the session still lands in its alphabetical place rather than
  at the bottom — the list reads the same every session.
- Settings window title bar: the **Daseeki Suite** wordmark is painted in your active
  theme's accent colour (the suite crimson on the shipped themes) instead of a fixed
  cream, matching the Nexus wordmark and the Raid Prep title. It re-tints live when you
  switch theme, so a theme with a different accent gets its own. The version number
  beside it stays muted — it is metadata, not part of the lockup.

### Fixed
- **A font your client cannot read no longer blanks the UI.** WoW can only load font
  files that were already on disk when the game *started* — a font installed or shipped
  mid-session resolves to a valid path but loads as nothing, so every piece of text on
  that face draws invisible. A /reload does not fix it; only a full game restart does.
  This is what made the Channel input look untypable and the Copy-bundle dialog look
  blank on the day the bundled Fira Sans Condensed became the default face. Core now
  proves a face actually renders before committing to it — at login, on every apply, and
  when you pick a face from the picker. A face that fails puts the whole session back on
  Friz Quadrata with one plain chat line explaining that a full game restart is needed,
  and every Daseeki window re-skins to the fallback together. Your saved font choice is
  **not** changed, so the next proper restart silently gives you the font you picked.
- The Field Ledger material now reads correctly at real in-game gamma. The grain is a
  parchment-white substrate, so turning the material up lightens the gutters between
  panels toward paper instead of muddying them dark, and the aged edge and bronze
  keyline make a step you can actually see.

### For addon authors
- `DaseekiSuite.CORE_VERSION` (this Core's version string, read from the .toc once at
  load) and `DaseekiSuite.RequireCore(minVersion[, caller])` — the cross-addon version
  guard. Call it before touching an API a given Core introduced; against an older Core
  you get `false` plus one plain chat line ("… needs Daseeki Core v2.2.0, v2.0.0
  installed — update Daseeki-Core") instead of a Lua error, and the feature simply stays
  off. `DaseekiSuite.CompareVersions(a, b)` is exposed alongside it. Guard the ledger-kit
  APIs on 2.2.0.
- `DaseekiSuite:GetSuiteOrder()` (registered addon ids in sidebar order) and
  `DaseekiSuite:GetNavPlan([activeAddonId])` (the sidebar's ordered entry list as plain
  data). The nav order now lives in core.lua and hub.lua only renders it; the hub's
  default selection uses the same order, so "first addon" means the first one shown.
- Font API: `UI.SetFont` / `GetFont` / `FontNames` / `SetFontScale` / `GetFontScale` /
  `FontFile` / `OnFontChanged` / `RegisterFont`, plus `UI.IsFaceFallback()` (is this
  session on the fallback face, and which face failed) and `UI.FontFileRaw()` (the picked
  path, unverified — for diagnostics). `UI.FontFile()` is unchanged for callers but now
  returns only a face that has been proven to render. Choices persist in
  `DaseekiCoreDB.fontChoice` / `fontScale`.
- Material API: `UI.SetMaterialPreset` / `GetMaterialPreset` / `GetMaterialPresetNames`
  (`subtle` | `standard` | `strong`); persists in `DaseekiCoreDB.materialPreset`.

### Internal
- New headless self-test harness (`harness/run-selftests.cmd`, real Lua 5.1, mirroring
  the Daseeki-Nexus pattern): parse-gates every .lua the .toc lists, covers the font load
  guard and the cross-addon version guard, and firewalls the globals core.lua and
  theme.lua are allowed to publish. Not shipped in the packaged addon.

## 2.0.0
- Complete settings-window overhaul: new DaseekiUI framework replaces the old fixed hub.
- Sidebar navigation (suite addons + Core pages) with breadcrumb title bar.
- Resizable window (minimum 1140x560, size remembered per character).
- Theme system with an end-user picker (Core > Appearance): six themes ship in 2.0.0 —
  Ashenvale Gold, Neutral Slate, Orgrimmar Ember, Stormwind Regalia, Felwood, and
  Winterspring Frost; themes re-skin live with no /reload.
- Every settings pane now scrolls and clips — settings can no longer render outside the
  window or overlap.
- New widget toolkit (checkboxes, sliders, dropdowns, segmented toggles, lists, editor
  cards) with consistent spacing and mouse-wheel scrolling everywhere.
- /daseekiui debug toggles a layout-outline overlay for troubleshooting.
- Older Daseeki addon versions still render via a built-in compatibility path.

## 1.0.0
- Initial CurseForge release.

This mod has no additional files