# Dalamud API 15 / v15.0.0.5 to v15.0.1.1 Update Report

Checked: `2026-06-02`
Audience: Dalamud plugin developers already targeting API 15 who need the current runtime-tag delta since `15.0.0.5`.

## Sources

- Official v15 page: `https://dalamud.dev/versions/v15/`
- Official API reference: `https://dalamud.dev/api/`
- Dalamud releases page: `https://github.com/goatcorp/Dalamud/releases`
- Dalamud compare `15.0.0.5 -> 15.0.1.1`: `https://github.com/goatcorp/Dalamud/compare/15.0.0.5...15.0.1.1`
- Dalamud post-tag compare `15.0.1.1 -> master`: `https://github.com/goatcorp/Dalamud/compare/15.0.1.1...master`
- FFXIVClientStructs compare `a12e314 -> d892ad8`: `https://github.com/aers/FFXIVClientStructs/compare/a12e3143dfc126cf545e098e05455295940a35a3...d892ad8f45bbcabbdda7e0078424be129b67771d`
- NuGet `Dalamud.NET.Sdk`: `https://api.nuget.org/v3-flatcontainer/dalamud.net.sdk/index.json`
- NuGet `DalamudPackager`: `https://api.nuget.org/v3-flatcontainer/dalamudpackager/index.json`

## Important Version Note

`15.0.0.6`, `15.0.0.7`, `15.0.1.0`, and `15.0.1.1` are Dalamud runtime/source tags. They are not new public plugin SDK package versions.

Public plugin projects should still target:

```xml
<Project Sdk="Dalamud.NET.Sdk/15.0.0">
```

Public package heads checked for this report remain:

- `Dalamud.NET.Sdk/15.0.0`
- `DalamudPackager/15.0.0`

The formal GitHub releases page still shows `14.0.4.0` as the latest formal release entry, so the `15.0.0.5 -> 15.0.1.1` findings below come from tags, compare ranges, public package indexes, and source state.

## Executive Summary

The `15.0.0.5 -> 15.0.1.1` runtime range contains 85 Dalamud commits and 63 changed files.

The highest-impact plugin-developer changes are:

- Lumina moved from `7.4.0` to `7.5.0`.
- Dalamud's FFXIVClientStructs submodule moved from `a12e3143` to `d892ad8f`.
- The plugin manager and profile system gained temporary plugin-toggle commands and ephemeral profile overrides.
- Dev plugin handling gained nickname/location behavior.
- Plugin installer filtering/search/collapsible behavior changed.
- Window focus/tint/blur behavior and centralized error display changed.
- Texture wrapping and draw-list texture APIs changed.
- Hook verifier, boot logging, and crash diagnostics changed.
- The paired FFXIVClientStructs range contains 101 commits and 56 changed files.

The practical migration message is:

1. Keep the public SDK target at `Dalamud.NET.Sdk/15.0.0`.
2. Keep plugin manifests at `DalamudApiLevel` 15.
3. Rebuild and smoke-test any direct ClientStructs, native hook, texture, custom window, plugin-manager, or addon/agent lifecycle surface.

## Release Timeline

| Stage | Commit | Commit date | Main impact |
| --- | --- | --- | --- |
| Previous baseline | `15.0.0.5` / `38b8e5f` | `2026-05-07` UTC | May 7 runtime baseline. |
| Runtime tag | `15.0.0.6` / `d07a893` | `2026-05-10` UTC | Runtime build after UI, hook verifier, and ClientStructs movement. |
| Runtime tag | `15.0.0.7` / `986843e` | `2026-05-13` UTC | Runtime build after Lumina `7.5.0` and breaking ClientStructs update. |
| Runtime tag | `15.0.1.0` / `a0b4693` | `2026-05-22` UTC | Runtime build after profile, dev-plugin, installer, and ClientStructs updates. |
| Current runtime tag | `15.0.1.1` / `dfee0e8` | `2026-05-22` UTC | Runtime build after temp plugin-toggle command correction. |

## Dependency And Package Delta

| Area | `15.0.0.5` | `15.0.1.1` | Plugin action |
| --- | --- | --- | --- |
| `Dalamud.NET.Sdk` | `15.0.0` | `15.0.0` | No SDK bump beyond API 15. |
| `DalamudPackager` | `15.0.0` | `15.0.0` | No packager bump beyond API 15. |
| Runtime version | `15.0.0.5` | `15.0.1.1` | Retest against current runtime. |
| Lumina in Dalamud source | `7.4.0` | `7.5.0` | Retest sheet/data users. |
| FFXIVClientStructs submodule | `a12e3143` | `d892ad8f` | Rebuild and review direct native users. |

## Common Codebase Update Examples

These are public-safe examples of the old common API 14 or early API 15 patterns versus the updated API 15 patterns plugin authors should prefer while testing against `15.0.1.1`.

### 1. Do not invent a new SDK package version

Old or incorrect:

```xml
<Project Sdk="Dalamud.NET.Sdk/15.0.1.1">
```

Updated:

```xml
<Project Sdk="Dalamud.NET.Sdk/15.0.0">
```

Reason: `15.0.1.1` is a runtime/source tag. The public plugin SDK and packager package heads checked for this report remain `15.0.0`.

### 2. Chat callbacks now use message objects

Old:

```csharp
private void OnChatMessage(
    XivChatType type,
    int timestamp,
    ref SeString sender,
    ref SeString message,
    ref bool isHandled)
{
    if (ShouldSuppress(message))
        isHandled = true;
}
```

Updated:

```csharp
private void OnChatMessage(IHandleableChatMessage message)
{
    if (ShouldSuppress(message.Message))
        message.PreventOriginal();
}
```

Use `IChatMessage` for read-only handling and `IHandleableChatMessage` when the plugin needs to suppress the original message.

### 3. Local player and content id moved away from `IClientState`

Old:

```csharp
if (!clientState.IsLoggedIn || clientState.LocalPlayer == null)
    return;

var contentId = clientState.LocalContentId;
```

Updated:

```csharp
if (!clientState.IsLoggedIn || objectTable.LocalPlayer == null)
    return;

var contentId = playerState.ContentId;
```

Reason: common API 15 migrations use `IObjectTable.LocalPlayer` and `IPlayerState.ContentId` for these surfaces.

### 4. Territory ids should stay wide

Old:

```csharp
private void OnTerritoryChanged(ushort territoryId)
{
    currentTerritory = territoryId;
}
```

Updated:

```csharp
private void OnTerritoryChanged(uint territoryId)
{
    currentTerritory = territoryId;
}
```

Only narrow to `ushort` at a known data boundary with an explicit cast and a clear reason.

### 5. Object kind enum names changed

Old:

```csharp
if (obj.ObjectKind == ObjectKind.Player)
    TrackPlayer(obj);
```

Updated:

```csharp
if (obj.ObjectKind == ObjectKind.Pc)
    TrackPlayer(obj);
```

Also recheck mount filters. Common migrations changed `ObjectKind.MountType` to `ObjectKind.Mount`.

### 6. `AtkValueType` replaces old GUI value enum usage

Old:

```csharp
if (value.Type == ValueType.String)
    ReadString(value);
```

Updated:

```csharp
if (value.Type == AtkValueType.String)
    ReadString(value);
```

For callback buffers, clear stack-allocated values before setting fields:

```csharp
Span<AtkValue> values = stackalloc AtkValue[2];
values.Clear();
values[0].SetInt(0);
values[1].SetUInt(itemId);
```

### 7. Lumina row references should compare row ids explicitly

Old:

```csharp
var region = world.DataCenter.ValueNullable?.Region ?? 0;
if (region == targetRegion)
    AddWorld(world);
```

Updated:

```csharp
var regionId = world.DataCenter.ValueNullable?.Region.RowId ?? 0;
if (regionId == targetRegion)
    AddWorld(world);
```

For direct row reads, prefer `TryGetRow` when a missing row is normal runtime drift:

```csharp
if (!sheet.TryGetRow(rowId, out var row))
    return;
```

### 8. Native hooks should fail closed

Old:

```csharp
hook = interopProvider.HookFromSignature<NativeDelegate>(
    signature,
    Detour);
hook.Enable();
```

Updated:

```csharp
if (!sigScanner.TryScanText(signature, out var address) || address == nint.Zero)
{
    pluginLog.Warning("Native signature did not resolve.");
    return;
}

try
{
    hook = interopProvider.HookFromAddress<NativeDelegate>(address, Detour);
    hook.Enable();
}
catch (Exception ex)
{
    pluginLog.Warning(ex, "Native hook failed to install.");
    hook?.Dispose();
    hook = null;
}
```

Reason: the API 15 runtime line changed HookVerifier and crash diagnostics. A moved signature should disable one feature, not crash plugin load.

### 9. Prefer generated ClientStructs addresses when available

Old:

```csharp
var address = sigScanner.ScanText(returnSignature);
returnHook = interopProvider.HookFromAddress<ReturnDelegate>(address, ReturnDetour);
```

Updated:

```csharp
var address = (nint)AgentReturn.MemberFunctionPointers.Return;
if (address == nint.Zero)
    return;

returnHook = interopProvider.HookFromAddress<AgentReturn.Delegates.Return>(
    address,
    ReturnDetour);
```

Use current generated addresses and delegates where FFXIVClientStructs provides them. Keep raw signatures as a fallback only when there is no maintained generated path.

### 10. Addon lifecycle registration should be idempotent and fully cleaned up

Old:

```csharp
public void Enable()
{
    addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectYesno", OnSelectYesno);
}

public void Dispose()
{
}
```

Updated:

```csharp
private bool registered;

public void Enable()
{
    if (registered)
        return;

    addonLifecycle.RegisterListener(AddonEvent.PostSetup, "SelectYesno", OnSelectYesno);
    registered = true;
}

public void Dispose()
{
    if (!registered)
        return;

    addonLifecycle.UnregisterListener(OnSelectYesno);
    registered = false;
}
```

Post-tag `master` includes lifecycle registration locking, but plugins should still avoid duplicate registration and should unregister on dispose.

### 11. Texture and draw-list code should tolerate missing wraps

Old:

```csharp
var texture = textureProvider.GetFromGameIcon(iconId).GetWrapOrEmpty();
ImGui.Image(texture.Handle, size);
```

Updated:

```csharp
var texture = textureProvider.GetFromGameIcon(iconId).GetWrapOrEmpty();
if (texture.Handle != nint.Zero)
{
    ImGui.Image(texture.Handle, size);
}
else
{
    ImGui.Dummy(size);
}
```

For future readback work, note that `ITextureReadbackProvider.GetAllRawImagesAsync` is a post-`15.0.1.1` master watch item, not part of the current runtime tag.

## Dalamud Runtime Changes

### Plugin profiles and temporary toggles

The plugin management command path gained explicit temporary commands:

```text
/xlenableplugintemp
/xldisableplugintemp
/xltoggleplugintemp
```

Profile entries can now use ephemeral overrides. This separates temporary plugin state from persisted profile state.

Plugin authors and testers should verify any macros, testing docs, or tools that rely on plugin enable/disable/toggle commands.

### Dev plugin behavior

Dev plugin location settings now support a nickname path, making it easier to distinguish local plugin entries. Local development workflows should verify that the expected entry is loaded when multiple local plugins have similar names or internal names.

This does not change the public SDK target.

### Installer and window UI changes

The plugin installer changed filtering, search persistence, collapsible behavior, and disabled-plugin update settings. Window handling changed focus/tint/blur transitions, and error display logic was centralized.

Retest:

- plugin installer search/filter paths if a tool depends on them;
- custom plugin windows;
- custom title buttons;
- non-main viewport windows;
- clickthrough/topmost behavior;
- plugin UI draw-error handling.

### Texture and draw-list behavior

Texture wrapping and draw-list paths changed:

- `ConvertToKernelTexture` now uses additional runtime texture flags and throws when texture creation fails.
- `IDrawListTextureWrap` gained additional `ResizeAndDrawWindow` overloads.
- `BufferBackedImDrawData` marks draw data as valid.

Retest texture-heavy plugins, image tools, draw-list-backed window capture, and code that converts existing textures into game/kernel textures.

### Hook verifier and crash diagnostics

Hook verifier initialization changed, and crash diagnostics gained mixed-mode call-stack support. Boot/crash shared logging also changed.

Native hook plugins should be loaded in a normal test environment and checked for hook verifier or startup diagnostics before release.

## Paired FFXIVClientStructs Changes

The paired ClientStructs range `a12e3143 -> d892ad8f` contains 101 commits and 56 changed files.

High-signal areas for plugin authors:

- `RaptureShellModule.ChangeChatChannel` return type was fixed.
- `AtkComponentDragDrop.AttachTooltip` parameters were fixed.
- `ShellCommandModule.EvaluateTextCommand` was added.
- `RecipeNote.IsRecipeListReady` was added.
- `AgentCabinet` and `AddonCabinet` were added.
- `AgentContentsFinderInterface` was added.
- `AgentRetainer` and `AgentVVDFinder` were added.
- `AgentRaidFinder` size was fixed.
- Mirage prism and cabinet data fields moved toward stronger typed forms.
- Housing fixture and layout APIs changed.
- Try-on, CharaView, character model, render, and resource-handle structures moved.
- Inventory context and party-list array structures changed.
- Eureka, territory intended-use, WKS, HUD, and Gold Saucer structures moved.

Practical checks:

- rebuild direct ClientStructs users;
- stop using copied struct layouts if current generated structs exist;
- recheck native delegates where return types or parameters changed;
- retest agent/addon pointers before dereference;
- retest inventory, glamour/cabinet, housing, retainer, and contents-finder features.

## Post-Tag Master Watch

As of this report, the latest checked runtime tag is still `15.0.1.1`, but `master` has moved past it.

Post-tag `master` changes include:

- thread-safe addon/agent lifecycle registration and unregistration;
- `ITextureReadbackProvider.GetAllRawImagesAsync`;
- changed `IClientState.IsClientIdle()` semantics;
- `IUnlockState.IsClassJobUnlocked`;
- `IUnlockState.IsUnlockLinkUnlocked(uint, byte minimumQuestSequence)`;
- plugin update idempotency;
- plugin favorites/pinned sorting;
- an additional merged ClientStructs submodule update to `5deef083`.

Recent merged PR activity to keep in the next scan:

| Area | Public signal | Common codebase update check |
| --- | --- | --- |
| ClientStructs updates | Multiple merged `[master] Update ClientStructs` PRs, including the latest post-tag update. | Rebuild direct generated-struct users and recheck native delegates, member pointers, addon pointers, and agent pointers. |
| Excel schema updates | Merged schema update PRs after `15.0.1.1`. | Re-test sheet lookups, row references, and schema-sensitive data access. |
| Idle-state behavior | Merged changes loosened `IClientState.IsClientIdle()` and removed old `LocalPlayer` dependency assumptions. | Test idle-gated automation by observed runtime behavior instead of copied condition lists. |
| Lifecycle registration | Addon/agent lifecycle registration and unregistration became thread-safe on `master`. | Keep registrations idempotent and always unregister on dispose. |
| Texture readback | `ITextureReadbackProvider.GetAllRawImagesAsync` was added post-tag. | Review texture tools for all mipmap and array-slice readback requirements. |
| Plugin manager behavior | Update staging, favorites, pinned sorting, and filter/order behavior changed on `master`. | Re-test plugin replacement, update, reload, and installer-order assumptions. |
| Unlock helpers | New/fixed `IUnlockState` helpers landed post-tag. | Prefer maintained helper APIs once the target runtime includes them. |

Overall source links for repeat checks:

- `https://github.com/goatcorp/Dalamud/pulls`
- `https://github.com/goatcorp/Dalamud/pulls?q=is%3Apr+is%3Amerged+base%3Amaster`
- `https://github.com/goatcorp/Dalamud/compare/15.0.1.1...master`

Treat these as watch items until a new runtime tag or release consumes them. They are important enough to keep in mind for the next patch-day scan.

## Known Break And Retest List

| Risk | Who is affected | Action |
| --- | --- | --- |
| Looking for a nonexistent `15.0.1.1` SDK | Any plugin author updating project files | Keep `Dalamud.NET.Sdk/15.0.0`. |
| Direct ClientStructs usage | Native, addon, agent, inventory, housing, glamour, retainer, model, and resource plugins | Rebuild and compare against current generated structs. |
| Native hooks | Hook/detour plugins | Load and check hook verifier output. |
| Texture wrapping/readback | Texture/image/window-capture plugins | Retest draw-list and texture conversion paths. |
| Custom windows | UI-heavy plugins | Retest viewport, focus, tint, blur, clickthrough, and error windows. |
| Plugin manager automation | Tools/macros that toggle plugins | Verify permanent vs temporary commands. |
| Idle-gated automation | Automation or scheduler plugins | Recheck `IClientState.IsClientIdle()` assumptions, especially because post-tag `master` changed it again. |
| Addon/agent lifecycle | Plugins registering lifecycle callbacks | Explicitly unregister on dispose and watch the post-tag thread-safety change. |

## Recommended Migration And Retest Order

1. Keep the project SDK at `Dalamud.NET.Sdk/15.0.0`.
2. Keep manifest `DalamudApiLevel` at `15`.
3. Restore packages and rebuild.
4. Fix any ClientStructs compile errors before runtime testing.
5. Smoke plugin load/unload.
6. Smoke custom windows and config windows.
7. Smoke native hooks and signature paths.
8. Smoke addon/agent lifecycle listeners and unregister paths.
9. Smoke texture and draw-list features.
10. Smoke inventory, glamour/cabinet, housing, retainer, contents-finder, recipe, and shell-command features if the plugin uses those surfaces.
11. Verify release zip manifests before publishing.

## Changed Files Appendix

### Dalamud `15.0.0.5 -> 15.0.1.1`

The bounded runtime range changed 63 paths:

- `.github/workflows/rollup.yml`
- `Dalamud.Boot/Dalamud.Boot.vcxproj`
- `Dalamud.Boot/dllmain.cpp`
- `Dalamud.Boot/logging.h`
- `Dalamud.Boot/unicode.h`
- `Dalamud.Boot/veh.cpp`
- `Dalamud.Boot/veh.h`
- `Dalamud.CorePlugin/PluginImpl.cs`
- `Dalamud/Configuration/Internal/CharacterStyleAssignment.cs`
- `Dalamud/Configuration/Internal/DalamudConfiguration.cs`
- `Dalamud/Configuration/Internal/DevPluginLocationSettings.cs`
- `Dalamud/Configuration/Internal/DevPluginSettings.cs`
- `Dalamud/Dalamud.csproj`
- `Dalamud/EntryPoint.cs`
- `Dalamud/Game/Text/SeStringHandling/BitmapFontIcon.cs`
- `Dalamud/Hooking/Internal/Verification/HookVerifier.cs`
- `Dalamud/Interface/ImGuiSeStringRenderer/Internal/SeStringColorStackSet.cs`
- `Dalamud/Interface/Internal/Asserts/AssertHandler.cs`
- `Dalamud/Interface/Internal/DalamudInterface.cs`
- `Dalamud/Interface/Internal/DesignSystem/DalamudComponents.ErrorDisplay.cs`
- `Dalamud/Interface/Internal/DesignSystem/DalamudComponents.FloatingActionButtons.cs`
- `Dalamud/Interface/Internal/DesignSystem/DalamudComponents.PluginPicker.cs`
- `Dalamud/Interface/Internal/InterfaceManager.cs`
- `Dalamud/Interface/Internal/Windows/Data/Widgets/SeStringRendererTestWidget.cs`
- `Dalamud/Interface/Internal/Windows/Data/Widgets/TexWidget.cs`
- `Dalamud/Interface/Internal/Windows/PluginInstaller/PluginInstallerWindow.cs`
- `Dalamud/Interface/Internal/Windows/PluginInstaller/ProfileManagerWidget.cs`
- `Dalamud/Interface/Internal/Windows/Settings/SettingsWindow.cs`
- `Dalamud/Interface/Internal/Windows/Settings/Tabs/SettingsTabExperimental.cs`
- `Dalamud/Interface/Internal/Windows/Settings/Tabs/SettingsTabGeneral.cs`
- `Dalamud/Interface/Internal/Windows/Settings/Widgets/DevPluginsSettingsEntry.cs`
- `Dalamud/Interface/Internal/Windows/Settings/Widgets/LanguageChooserSettingsEntry.cs`
- `Dalamud/Interface/Internal/Windows/StyleEditor/StyleEditorWindow.cs`
- `Dalamud/Interface/Style/StyleModelV1.cs`
- `Dalamud/Interface/Textures/Internal/TextureManager.FromExistingTexture.cs`
- `Dalamud/Interface/Textures/TextureWraps/IDrawListTextureWrap.cs`
- `Dalamud/Interface/Textures/TextureWraps/Internal/DrawListTextureWrap/WindowPrinter.cs`
- `Dalamud/Interface/UiBuilder.cs`
- `Dalamud/Interface/Utility/BufferBackedImDrawData.cs`
- `Dalamud/Interface/Windowing/WindowHost.cs`
- `Dalamud/Interface/Windowing/WindowSystem.cs`
- `Dalamud/Localization.cs`
- `Dalamud/Plugin/Internal/PluginManager.cs`
- `Dalamud/Plugin/Internal/Profiles/PluginManagementCommandHandler.cs`
- `Dalamud/Plugin/Internal/Profiles/Profile.cs`
- `Dalamud/Plugin/Internal/Profiles/ProfileManager.cs`
- `Dalamud/Plugin/Internal/Types/LocalDevPlugin.cs`
- `Dalamud/Plugin/Internal/Types/PluginDef.cs`
- `DalamudCrashHandler/DalamudCrashHandler.cpp`
- `DalamudCrashHandler/DalamudCrashHandler.vcxproj`
- `DalamudCrashHandler/DalamudCrashHandler.vcxproj.filters`
- `DalamudCrashHandler/dac_interfaces.h`
- `Directory.Packages.props`
- `external/cimguizmo/cimguizmo.vcxproj`
- `external/cimplot/cimplot.vcxproj`
- `lib/FFXIVClientStructs`
- `lib/cimgui`
- `lib/cimguizmo`
- `lib/cimplot`
- `shared/logging.cpp`
- `shared/logging.h`
- `shared/unicode.cpp`
- `shared/unicode.h`

### FFXIVClientStructs `a12e314 -> d892ad8`

The paired native range changed 56 paths:

- `FFXIVClientStructs/FFXIV/Client/Enums/TerritoryIntendedUse.cs`
- `FFXIVClientStructs/FFXIV/Client/Game/Event/ShopEventHandler.cs`
- `FFXIVClientStructs/FFXIV/Client/Game/Housing/IndoorTerritory.cs`
- `FFXIVClientStructs/FFXIV/Client/Game/Housing/OutdoorTerritory.cs`
- `FFXIVClientStructs/FFXIV/Client/Game/HousingFurniture.cs`
- `FFXIVClientStructs/FFXIV/Client/Game/InstanceContent/InstanceContentDirector.cs`
- `FFXIVClientStructs/FFXIV/Client/Game/InstanceContent/PublicContentEureka.cs`
- `FFXIVClientStructs/FFXIV/Client/Game/InventoryManager.cs`
- `FFXIVClientStructs/FFXIV/Client/Game/UI/ContentRoulette.cs`
- `FFXIVClientStructs/FFXIV/Client/Game/UI/GuildOrderReward.cs`
- `FFXIVClientStructs/FFXIV/Client/Game/UI/RecipeNote.cs`
- `FFXIVClientStructs/FFXIV/Client/Game/WKS/WKSManager.cs`
- `FFXIVClientStructs/FFXIV/Client/Graphics/Physics/BonePhysicsModule.cs`
- `FFXIVClientStructs/FFXIV/Client/Graphics/Physics/BonePhysicsUpdater.cs`
- `FFXIVClientStructs/FFXIV/Client/Graphics/Physics/BoneSimulator.cs`
- `FFXIVClientStructs/FFXIV/Client/Graphics/Render/PartialSkeleton.cs`
- `FFXIVClientStructs/FFXIV/Client/Graphics/Scene/BgObject.cs`
- `FFXIVClientStructs/FFXIV/Client/Graphics/Scene/CharacterBase.cs`
- `FFXIVClientStructs/FFXIV/Client/LayoutEngine/ILayoutInstance.cs`
- `FFXIVClientStructs/FFXIV/Client/LayoutEngine/LayoutManager.cs`
- `FFXIVClientStructs/FFXIV/Client/LayoutEngine/LayoutWorld.cs`
- `FFXIVClientStructs/FFXIV/Client/System/Resource/Handle/ResourceHandle.cs`
- `FFXIVClientStructs/FFXIV/Client/System/Resource/Handle/SkeletonParameterResourceHandle.cs`
- `FFXIVClientStructs/FFXIV/Client/System/Resource/ResourceGraph.cs`
- `FFXIVClientStructs/FFXIV/Client/System/Resource/ResourceManager.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/AddonCabinet.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/AddonMiragePrismPrismBox.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentCabinet.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentContentsFinder.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentContentsFinderInterface.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentDawnStory.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentEmjVoiceCharacter.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentGoldSaucer.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentHUD.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentInventory.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentInventoryContext.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentMiragePrismPrismBox.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentMiragePrismPrismSetConvert.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentRaidFinder.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentRetainer.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentTryon.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentVVDFinder.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Arrays/PartyListNumberArray.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Misc/CharaView.cs`
- `FFXIVClientStructs/FFXIV/Client/UI/Shell/RaptureShellModule.cs`
- `FFXIVClientStructs/FFXIV/Common/Component/Excel/ExcelSheetWaiter.cs`
- `FFXIVClientStructs/FFXIV/Component/GUI/AtkComponentDragDrop.cs`
- `FFXIVClientStructs/FFXIV/Component/GUI/AtkTextInput.cs`
- `FFXIVClientStructs/FFXIV/Component/GUI/AtkUnitBase.cs`
- `FFXIVClientStructs/FFXIV/Component/Shell/ShellCommandModule.cs`
- `Ghidra/Getting Started.md`
- `ida/README.md`
- `ida/data.yml`
- `ida/ffxiv_idarename.py`
- `ida/ffxiv_structimporter.py`
- `ida/ffxiv_structs.yml`

## Bottom Line

For public plugin authors, this is a runtime and native-layout update, not a new SDK migration. Keep the API 15 SDK package at `15.0.0`, rebuild, and focus testing on direct ClientStructs usage, native hooks, custom windows, texture/draw-list behavior, plugin toggle/profile behavior, and addon/agent lifecycle cleanup.
