Release Notes

Docs / sample consolidation — 2026-05-13

Two Luna-adjacent samples were absorbed into GameFull. No Luna runtime changes; the package version is unchanged. This entry documents the sample-side reshuffle that consumers see when they import GameFull.

Newtonsoft Save Demo absorbed into GameFull

The com.cupkekgames.newtonsoft@0.1.5 package no longer ships its own sample. The three load-bearing assets that GameFull actually depended on (Service Registry Newtonsoft, Serialization Manager Registrar, Serialization Types SO) plus the SerializationTypeProviderSO script all moved into Samples~/GameFull/:

Samples~/GameFull/ScriptableObjects/Serialization/ GameFull Service Registry Newtonsoft.asset GameFull Serialization Manager Registrar.asset GameFull Serialization Types SO.asset Samples~/GameFull/Scripts/SaveSystem/ GameFullSerializationTypesSO.cs

Asset GUIDs were preserved across the move so the existing Sequence Luna Demo Register Services.asset reference still resolves. The Newtonsoft package's runtime asmdefs (Newtonsoft, Data.Newtonsoft) are unchanged — only the sample folder is gone. Consumers no longer need to import a second sample to make GameFull's save loop work.

The GetKnownTypes() content was also fixed as a side-effect: the old DemoSerializationTypesSO registered the demo's parallel save types (NewtonsoftDemoSaveMetadata, NewtonsoftDemoSaveData), which GameFull never used. The new GameFullSerializationTypesSO registers GameFullSaveMetadata and GameFullSaveData — the types GameFull actually serializes.

Localization demo absorbed into GameFull

Showcase/Components/LocalizationDemo/ was removed in an earlier pass. Its load-bearing assets — the 14 locale assets, the string table that every LocalizedString binding across the sample suite resolves through, the Japanese SDF font, and the localized PanelSettings + TSS theme — all live under GameFull now:

Samples~/GameFull/Localization/ (locales + string tables) Samples~/GameFull/Fonts/ (Japanese SDF + OFL.txt) Samples~/GameFull/Setup/Localization/ (TSS theme + USS + PanelSettings)

The settings UXML + prefab that consumed those assets were also moved into GameFull and renamed:

  • SettingsWithLocalization.uxmlSamples~/GameFull/UXML/SettingsGameFull.uxml
  • SettingsWithLocalizationForGameFull.prefabSamples~/GameFull/PrefabsUI/SettingsGameFull.prefab

The LocalizationViewStyleSwitcher pattern that the deleted demo documented is reference-documented at UI Toolkit guide → Localization.

Sample count after consolidation

Luna ships three samples: Essentials, Showcase, GameFull. Sibling-package samples in the cupkek ecosystem: one — Ink Visual Novel Demo in com.cupkekgames.inkbridge. The "Newtonsoft Save Demo" and "Localization Demo" sidebar entries are gone.


[2.1.1] — 2026-05-11

Patch release. Editor-side polish that lands on top of 2.1.0 — better first-run, clearer dialogs, surfaced optional integrations, refreshed package README, and a queued task plan for the next Showcase pass. Drop-in upgrade from 2.1.0; no runtime, API, or dependency changes.

What's new

  • Package README rewritten for Asset Store first-time buyers. The Package Manager pane now leads with bundled-features bullets, the Tools > CupkekGames > LunaUI Panel auto-open callout, Discord support link, and a Third-Party Notices pointer. Was a 2-line placeholder.
  • One-shot Discord CTA dialog on first auto-open of the LunaUI Panel. Gated by a new LunaUI_DiscordToastSeen EditorPref so it fires exactly once over the open Panel. Two-button modal: Join Discord (opens the invite URL) / Maybe later. Either button marks the toast as seen.
  • Get Started panel gains an optional Localization status row alongside Input System. Shows Met/Missing for com.unity.localization so first-run users see that i18n is available without digging into the LocalizationDemo subfolder.
  • Showcase sample detail panel gains a new "Unity / External Dependencies" section, parallel to GameFull's, listing Input System + Localization with the demos each unlocks.
  • Clearer dialog when LunaShowcase.unity isn't found. The Get Started panel's "Open LunaShowcase Scene" button now pops an EditorUtility.DisplayDialog on failure (was a silent Debug.LogWarning), pointing the user at "re-import the Showcase sample or move it back under Assets/Samples/".
  • Locale toggle plan committed as Samples~/Showcase/LOCALE_TOGGLE_PLAN.md (next to LunaShowcase.unity) — captures the next-up task of adding an EN/JP locale toggle to the flagship demo to surface the existing JP-font hot-swap.
  • Documentation/ARCHITECTURE.md scrubbed of an internal HeroManager reference; replaced with neutral "consumer projects" wording.

Upgrade

Nothing required. Drop the new Luna over the old one; no path or API changes.


[2.1.0] — 2026-05-11

🛠 Editor-side polish release. First-run orientation in the LunaUI Panel, deep-links into the docs site from every editor surface, and a tidier Tools > CupkekGames menu. No runtime, API, or dependency changes — drop-in upgrade from 2.0.x.

LunaUI Panel: what's new

  • Get Started entry at the top of the left list — a live-derived orientation card. Shows Luna-installed / foundation-deps (9/9 with per-package foldout) / Input System status, three numbered next steps (Import Both Samples → Open LunaShowcase Scene → Read Quick Start · First View), and a GameFull pointer with one-click Install GameFull Packages. Auto-selects on first-run open so a fresh Asset Store install lands on orientation, not a "Not Imported" sample.
  • Header CTA row — Documentation + Discord + Asset Store (was just Documentation). Mirrors the home-page CTAs on docs.cupkek.games so editor and web converge on the same escape hatches.
  • Per-sample docs deep-links — Essentials / Showcase / GameFull each gain an inline "Open … docs" link straight to the matching page (/luna/theme-stack, /luna/samples/components, /luna/samples/gamefull).
  • GameFull troubleshooting — the text-only Input System tip is paired with a one-click Open Input Settings button (SettingsService.OpenProjectSettings).

Package Manager window: what's new

  • Per-row Docs button — each CupkekGames package row gains a "Docs" link button when a docs URL is known (most do). Slug matches the sidebar route on docs.cupkek.games. Hidden for rows without a docs page yet.
  • Subtitle "Learn more" link — inline → Architecture & Distribution pointer under the header paragraph for users who want the registry explainer.

Tools > CupkekGames menu reorganised

Five visually-separated groups, Luna leads:

LunaUI Panel Luna Effects ───────── Package Manager ───────── BehaviourTreeEditor ───────── Load Bootstrap Scene On Play Don't Load Bootstrap Scene On Play ───────── Service Locator Debug Open Persistent Data Path

Priorities renumbered across six CupkekGames packages to land in this order (Luna 0/1, packagemanager 100, behaviourtrees 200, editortools 300/301, services 400, newtonsoft 401).

Docs site refresh (parallel)

The web docs landed alongside this release. Front-door surface now has:

  • UI Toolkit Basics (/luna/uitk-basics) — primer for UITK newcomers: UXML / USS / TSS / VisualElement / events / flexbox / USS variables. Every concept Luna uses pervasively.
  • First View (/luna/firstview) — five-step walkthrough from "demo runs" to "my own view runs."
  • Theme Stack (/luna/theme-stack) — Panel Settings, @import inheritance chain, Palette Generator round-trip, "where to override what" table.
  • Colors (/luna/styling/colors) — the --color-{name}-{tone} token system + the three Palette-Generator export categories (base + utilities + component templates).
  • Quick Start restructured into 10 numbered steps with UI Toolkit Basics + First View nested under it in the sidebar.
  • Architecture & Distribution demoted to a reference page (was front-door); Release Notes follows.

Update guide (2.0.x → 2.1.0)

Nothing required — drop the new Luna package over the old one. No @import paths, asmdef refs, or API surface changed.

If you're new to 2.x: see Quick Start for the 10-step Asset Store → import → press Play path.


[2.0.0] — 2026-05-05

🚀 Major release. Luna UI is sharper, simpler, and purely UI-focused. Drop it in from the Asset Store, import Essentials, and you have a Unity-native UI Toolkit framework — dependencies bundled, no registries or manifest.json edits. Migration is light if you only use Luna for UI.

Need help? Discord (faster) or email.

Luna UI: what's new

Marquee features

  • UI Effects — composable shader-based visual effects on any VisualElement: Glow, Outline, Shadow, Gradient, Pattern, Shine. Single uber-shader, keyword-toggled, zero runtime cost when disabled. See UI Effects.
  • Responsive view switchingResponsiveViewStyleSwitcher SO applies a breakpoint USS class (.breakpoint-lg) to every UIView root from one call. Drives the FullScreenExamples shell's responsive layout. See Responsive.
  • Palette Generator tool — color palette builder with WCAG contrast, hue distribution, and CSS / SCSS / Tailwind / JSON / USS export. Try it.

Distribution & samples

  • One package, drop in and go. The Asset Store ships com.cupkekgames.luna with input + foundation primitives bundled. No scoped registry, no chained installs.
  • Sample split: Samples~/LunaUI/Essentials/ + Showcase/. Essentials is the reusable starter kit (theme, UXML, sprites, audio, prefabs); Showcase contains the demos. Library / Mobile / Components / Localization samples folded in.
  • FullUiDemo/FullScreenExamples/ (GameShellViewGameUiHub); ProgressBar variants consolidated under one tree.
  • Tools > CupkekGames > LunaUI Panel auto-opens on sample import — shows status, scene wiring, dep checks.

Refinements

  • Value Comparison utilities generalized: ItemStatChangeTypeValueDeltaType, ItemStatLineValueComparisonLine, ItemStatLineControllerValueComparisonLineController. See Value Comparison.
  • Default font changed to Nunito with full weight set; Rubik kept in Font.uss for easy revert.
  • KeyValueDatabaseDrawer replaces per-type KeyValueDatabaseMonoSOEditor subclasses.
  • Fixes: nested-Repeat depth overflow on TransitionSequenceAsset (now [SerializeReference]); LocalizationViewStyleSwitcher #if UNITY_LOCALIZATION-guarded.

GameFull sample (optional)

The optional GameFull sample is a full-game architecture demo that pulls in the wider CupkekGames ecosystem (combat, units, audio, character, save, …). Open Tools > CupkekGames > Package Manager and click Install GameFull Packages — it adds the scoped registry and resolves the whole dep graph in one shot. Plain Luna users can ignore this.

Update guide (Luna UI 2.0)

  1. Update Luna from the Asset Store. Dependencies come bundled.
  2. Delete Assets/Samples/LunaUI and re-import Essentials (and Showcase if you used the old Components/FullUiDemo samples).
  3. Rewrite UXML/USS path-based URLs that pointed at Samples~/Library/... or LunaUI/... to the new sample paths. The luna-uxml-path-fix skill does it automatically.
  4. Rename Value Comparison references per the bullet above.

Ecosystem changes (sibling packages)

The wider CupkekGames ecosystem shipped a coordinated v0.2.0 wave alongside Luna 2.0 — foundation split, kind-driven primitives, feature composition, catalog architecture, combat refactor. Only relevant if you use GameFull or pull sibling packages into your project.

Packages Changelog — v0.2.0 wave

[1.4.0]

New Features

UI Render System

Render 3D content (particles, models, VFX) directly onto UI elements using a pooled Camera → RenderTexture pipeline. Supports multiple content modes: prefab instantiation, borrowing scene objects, or observing in-place. Includes PlayOverlay for layering effects on existing UI.

See documentation: UI Render

Transition Animation System

Reusable UI animations via ScriptableObjects or code. Includes TransitionAnimator component, 52 preset animations, and UIView fade event integration.

IMPORTANT: You need to re-import the library sample to get the presets. See documentation: Transition Animation

ProgressBar & RadialProgressBar

  • Time Scale Support: Animations respect Time.timeScale
  • Animation Completion Events: OnSegmentAnimationComplete, OnIndicatorAnimationComplete
  • Multi-Pass Animation: PlayMultiPass() for multiple 0→100% cycles (e.g., XP leveling)

See documentation: Progress Bar | Radial Progress Bar

Other

  • FadeUIElement: Added IsFading, IsFadingIn, IsFadingOut state tracking
  • USS Library: Added size-* utility classes. See Size Utilities

[1.3.7]

⚠️ Breaking Changes

  • Removed CelledProgressBar: The CelledProgressBar component has been removed. Use ProgressBar with gap line overlays instead, which provides equivalent functionality with simpler implementation.

New Features

  • Tooltip: Added a disabled state. When disabled, any active tooltips are closed and new ones are prevented from opening. Usage: TooltipController.Tooltip.SetTooltipEnabled(bool)
  • Drag and Drop: Added AddTooltipReference(Tooltip) to DragAndDropManipulator. Registered tooltips are automatically disabled when a drag starts and re-enabled when the drag ends.
  • FadeableMono: Added FadeableAction enum and lifecycle action fields (OnAwake, OnEnable, OnDisable, OnDestroy). Each field accepts a FadeableAction value: None, FadeIn, FadeOut, SetFadedIn, or SetFadedOut. For example, set OnAwake to SetFadedOut and OnEnable to FadeIn to have a view start hidden and fade in each time it's enabled.
  • USS Library: Added predefined aspect-ratio utility classes (aspect-auto, aspect-square, aspect-video, aspect-1-1, aspect-2-1, aspect-3-2, aspect-4-3, aspect-16-9, etc.).
  • ProgressBar: Gap Line Overlays - Added gap line overlay system with major/minor gap support. Gap lines are VisualElements positioned on top of progress fills, replacing the need for CelledProgressBar in most use cases.
    • gap-line-count: Number of cells (gap lines = count - 1)
    • minor-cells-per-major: Number of minor cells per major segment
    • Minor: minor-gap-line-width, minor-gap-line-color, minor-gap-line-range
    • Major: major-gap-line-width, major-gap-line-color, major-gap-line-range
    • minor-gap-line-min-spacing: Auto-skips minor lines when cells get too narrow
  • ProgressBar: SetGapLineCountWithScaling() - Helper method that scales indicator and segment positions proportionally when gap count changes. Use for dynamic max value scenarios (e.g., health bars where max HP changes).

Updated Demos

  • ProgressBarLeagueOfLegends: New demo that uses ProgressBar with gap line overlays. Demonstrates dynamic gap calculation based on max HP.
  • ProgressBarOverwatch: Updated to use ProgressBar with gap line overlays. Demonstrates multi-segment health/shield/armor with proper scaling when totals change.

Fixes

  • Fixed an incorrect import in SpeechBubblePositionConfig that caused build errors.

[1.3.6]

New Features

Radial Progress Bar: Arc Configuration

  • Sweep Angle: Configure the total arc span (0-360°). Default is 360 (full circle). Set to smaller values like 240° for speedometer-style gauges.
  • Start Angle: Configure where the arc begins. Default is -90° (12 o'clock/top position). Adjust to create different orientations.

All progress segments, indicators, and cells scale proportionally within the configured arc.

New Demo

  • RadialProgressBarSweepAngleDemo: Showcases different arc configurations including full circles, 270° arcs, 240° speedometers, 180° semi-circles, and 90° quarter arcs—with and without cells.

[1.3.5]

⚠️ Breaking Changes

  • Removed UpdateProgressSegments(): Simply set Progress[index].TargetValue directly and call PlayProgress().

New Features

New Component: Celled Progress Bar

Linear progress bar with discrete cell segments for Overwatch-style health bars. Features cell-based rendering, multi-segment support, angled cells, and damage indicators.

See documentation: Celled Progress Bar

Radial Progress Bar: Multi-Segment Support

  • Progress array with CurrentValue, TargetValue, and Color per segment

Documentation

New structure: Linear, Radial, Celled, RPG Demo, Architecture

Fixes

  • Fixed RadialProgressBar and CelledProgressBar not reading progress attribute from UXML

[1.3.4]

New Features

  • Global UIView Registry: UIViews automatically register/unregister to a global registry, enabling system-wide operations on all views.
  • Global USS Class Management: Added AddClassToAllUIViews() and RemoveClassFromAllUIViews() to LunaUIManager. Classes are automatically applied to existing and future UIViews.
  • LocalizationViewStyleSwitcher: New component that applies locale-specific USS classes (e.g., locale-en, locale-ja) to all UIView roots at runtime. Works around Unity's limitation of not being able to change global USS variables at runtime.
  • UIView IDisposable: UIView now implements IDisposable for explicit cleanup.

Samples

  • Localization Demo:
    • Added AutoSizeText example demonstrating how auto-sizing text works with localization. The example shows how text automatically adjusts font size when changing locales, ensuring text remains readable across different languages.
    • LocalizationViewStyleSwitcher example implemented for Japanese locale only—switching to Japanese changes the font using locale-specific USS classes. You can extend this pattern to other locales as needed.

Fixes

  • SceneLoaderAddressable: Fixed Scene Loading Issues in Unity Editor. Scene loading could fail when stopping and restarting play mode in the Unity Editor due to stale Addressables handles. Added error handling and recovery logic in SceneLoaderAddressable. Scenes now load correctly when iterating in play mode. Editor warnings may still appear but are handled automatically.
  • Text Effects: Fixed OneTime animation parsing and behavior. The parser now correctly maps "onetime" to OneTime instead of PingPong. Movement effects now animate forward then return to neutral position and stay there. Refactored duplicate code with shared helper methods.

[1.3.3]

New Feature: Text Effects

https://www.docs.cupkek.games/luna/features/texteffects

Leveraging Unity 6.3's new TextElement.PostProcessTextVertices API to enable rich text animations directly on glyph vertices. This system supports 12 customizable text effects via rich text tags:

  • Motion Effects: Pendulum, Dangle, Bounce, Slide, Swing, Wave
  • Visual Effects: Fade, Rainbow, Rotate, Shake, Wiggle
  • Size Effects: Increase Size

All effects support customizable parameters (speed, amplitude, intensity, etc.) through rich text tag attributes.

Visual Novel Controller: Added new VertexReveal text animation mode for smooth character-by-character reveal using vertex manipulation. TextEffectComponent: New component to easily apply text effects without dialogue controller.

Demos

  • Components/TextEffects: New demo showcasing each text effect
  • Ink/TextEffects: New demo showcasing text effects in visual novel dialogues

Other New Features

  • List and Scroll Views: Added ghost styling with reduced scroller opacity for a more subtle, transparent appearance.
  • Speech Bubble: Added World Space positioning example in Ink Sample scenes.
  • ElementSelector: Serializable element selector

Fixes

  • Settings Menu Input Rebind: Fixed compatibility with updated InputDeviceManager API and improved user experience.

[1.3.2]

New Features

  • Button: Added "shade" style class. Similar to ghost but with a semi-transparent black background that is always visible, not just on hover.
  • Button: Added "outline" style class. Gives the button a border in the color of the button's color class.
  • ListViewWrapper: New utility class that provides keyboard navigation functionality for Unity's ListView component. Prevents individual list items from receiving focus and handles Up/Down/Next/Previous navigation between items, making keyboard navigation feel natural. See documentation: https://www.docs.cupkek.games/luna/utility/listviewwrapper

Fixes

  • Luna.TabView: Fix "No player input found" spamming in editor.
  • SceneLoaderAddressable: Cleanup OnDestroy so you don't get "Attempting to load AssetReference Scene that has already been loaded." error in editor.

[1.3.1]

New Features

  • PaginationController: Made VisualElements public so you can customize further.
  • KeyValueDatabase: Rewrote custom editor drawers to fix visual issues.

Samples

  • Library Editor: Added InventoryItemReferenceDrawer.txt, a sample PropertyDrawer for InventoryItemReference. It displays the int ItemType field as a custom ItemType enum dropdown in the Inspector. Provided as a .txt file to avoid conflicts if you add a custom drawer to your project.

[1.3.0] Major Update

World Space Support for 6.2

  • Tooltip: Position calculation now works correctly in world-space UI. A new demo scene has been added to the Components sample.
  • Drag & Drop: Position calculation now works correctly in world-space UI. A new demo scene has been added to the Components sample.

Shader Demos for Unity 6.3

  • RPGDemo: Added a new RPGDemo to the Components sample. This demo showcases diablo health and mana orb, skill slots with cooldown wipe and tooltip. A showcase video is available on the store page.
  • Shader Effects Demo: Demo scene showcasing shader effects. Shiny visual effect. More effects will be added over time.

New Features

  • ProgressBar: Visuals are now fully customizable. In the new RPGDemo, the progress bar uses shaders entirely instead of visual elements while still taking advantage of features such as indicator.
  • Default Tooltip: Added a new visual element slot named AbsoluteBackground. TooltipContainerSetup has new paramater for absoluteBackground. This is also used in RPGDemo for custom tooltip background.
  • Pie Chart: Calculates the center of each segment, allowing you to position custom elements such as labels. The Pie Chart demo in the Components sample has been updated.
  • UITKCoordinateUtility: new static class that has a bunch of utility functions.

[1.2.3]

New Features

  • New Sample "GameFull": This sample combines GameStandart with Localization and Newtonsoft samples. Adding localization and working save load system.
  • Improved Main Menu in Game Samples.
  • SpeechBubble Tail: Added optional tails that can be positioned on any corner.

New Documentation

Fixes

  • USS Cursor: fix uss cursor styling error.
  • AddressabeAssetManager: Also release the AssetReference's internal operation to prevent "already loaded" errors in DestroyAllThenRelease function.

[1.2.2]

New Features

New Demo Scene

  • New local multiplayer demo added to components sample in InputPrompt folder.

Refactors:

  • LunaUIManager.GetInputAction("Move") is now InputDeviceManager.PlayerInputs[0].actions["Move"];
  • InputDeviceManager.PlayerInput.actions["Move"]; is now ``InputDeviceManager.PlayerInputs[0].actions["Move"];`

Fixes

ProgressBar

  • Refactor: Remove redundant background color variable from ProgressBar color styles so applying a uss class (e.g. primary, red, blue, etc.) doesn't affect the background.

TabView

  • Fix: Tab label binding not working when using Luna.Tab.
  • Added: Rebuild function to use when binding is not enough or possible.

Library Sample

Scene Transitions With Input

  • Refactor: Input actions settings moved to LunaUIManager. Change input action map management strategy from "disable specific maps" to "enable only specified maps, disable all others".

[1.2.1]

New Features

ProgressBar

  • Added bool IndicatorAutoColor attribute. Useful when you don't want indicator color to update automatically, for example when using SetFilling function to show a change.

Fixes

  • Fix: InputIconControlScheme error when new input system is not installed.

Tooltip

  • Fix: Handle null TooltipContainerSetup values.

Samples

GameSaveManager

  • Change access modifiers of _enableAutosave and _autosaveSlots to protected from private.

[1.2.0] (New Mobile Sample, Inventory and GridView)

Warning

If you're using GridView or Inventory, refactor is required. See details below.

New Features

Mobile Sample:mobile_phone:

  • Configured for mobile devices. Responsive design, has features like SafeArea for UI Toolkit. More to come.
  • Includes a new Mobile Equipment scene. Has listview and pagination versions. Pagination version has drag & drop and InventoryWithSlots, which lets you move items between slots.

New Element: Aspect Ratio

  • USS still doesn’t support aspect-ratio or vw/vh units, so I implemented an AspectRatio element. It can take the full width or height of its parent while maintaining a consistent shape — like staying perfectly square.

GridView

  • Responsive: Automatically updates element count when container width changes, enabling responsive layouts.
  • Refactor: GridView has been renamed to GridViewPagination.
  • New: Introduced GridViewList as an alternative to pagination.
  • Added ability to define buttons for clearing filters.
  • Components Sample: Added a standalone example scene.
  • Components Sample: Added a responsive layout example.

Inventory and Equipment:

  • Refactor: Renamed InventoryView to InventoryViewPagination.
  • New: Introduced InventoryViewList as an alternative to pagination.
  • Refactor: Renamed EquipmentView to EquipmentViewPagination.
  • New: Introduced EquipmentViewList as an alternative to pagination.
  • Added a dedicated scenes featuring both InventoryViewPagination and InventoryViewList to Components sample.
  • Refactor: ItemDragAndDrop now requires two InventoryItemSlotController instances. One for the slot that will start the drag, and one for creating the visual element at drag start.

Drag & Drop:

  • Added ability to style drop slots on drag start.
  • Improved target detection on drop.

Fixes

Input Prompts

  • Fixed an issue that prevented builds on platforms where Unity’s Input System strips PlayStation controller classes, such as android.

AddressableAssetManager:

  • Removed redundant locks.
  • Improved internal logic.
  • Added test scripts and a sample scene.

[1.1.1]

New Features

Custom USS Property

If you’d like to see USS variables for other components or properties, let me know!

Samples

  • Save/Load UI: Added filters for auto and manual saves. Complete REDESIGN of UI to support both gamepad and keyboard.
  • Architecture: Replaced Singleton with ServiceLocator. The samples are meant to demonstrate architecture concepts—they're not mandatory patterns. I personally use ServiceLocator, so I’ve updated the samples to reflect that.
  • ASMDEF: Split the Systems assembly definition into smaller modules. If you're using these samples, make sure to update your ASMDEF references accordingly.

Fixes

Samples

  • Autosave: Fixed logic issues. Autosave settings are now stored in metadata.
  • ItemDatabase: Don’t enforce Singleton on ItemDatabase.

[1.1.0] [Major Update]

Warning: It's recommended to remove Luna and samples before updating. This update includes significant refactors to the Tooltip, Save/Load and Inventory systems. If you are using these features, you may need to update your implementation. Feel free to ask for support.

New Features

Tooltip System

  • Added UpdateDisplay function to TooltipManipulator for seamless tooltip updates without closing and reopening.
  • Added Close function to TooltipManipulator, ensuring only the currently active tooltip is closed.
  • Smart Position: If the tooltip is set to appear on top but doesn't fit, it will smartly adjust its position to the bottom, left, or right.
  • Introduced Nested Tooltips, requiring a major code refactor. If this affects your implementation, feel free to ask for support.
  • Tooltip Refactor:
  • DefaultTooltip has been renamed to TooltipController. Since this is a MonoBehaviour, you’ll need to update your GameObject. Select the GameObject that previously contained DefaultTooltip in your scene, remove the missing component, and add TooltipController manually.
  • DefaultTooltipContainerSetup has been renamed to TooltipContainerSetup.
  • DefaultTooltipManipulator has been renamed to TooltipManipulator.
  • Simplifies development by consolidating tooltip logic into a single, more versatile component.
  • Limits fully custom tooltip behavior but is designed to cover all standard needs.
  • Added new Tooltip demos to Components sample, showcasing seamless updates and nesting.

Save/Load System

  • Functional Save System: New sample that showcases a working save system using the Newtonsoft JSON library.
  • Optimized Save Data Loading:
  • Previously, the Save/Load UI loaded all save files in full, which was inefficient for large files.
  • Now, it can load only metadata and fetch full save data only when needed.

Other

  • GridView: Constructor now accepts optional TooltipController.
  • Inventory: Moved from Luna to Library Sample. The inventory system is not strictly a UI component but rather a gameplay feature, making it more appropriate for Library Sample rather than the UI library. It now has it's own assembly file called CupkekGames.InventorySystem.
  • Core.Pool: Added pooling classes that uses unity's pool internally. Used by new Tooltip internally but you can use them for any pooling. Implemented versions are plain classes, GameObjects, MonoBehaviours, ScriptableObjects.

Fixes

  • Game Demo – Save/Load: Fixed an issue where loading a save while already in the game scene caused errors.
  • Addressable Demo: Fixed broken configurations from previous updates.

[1.0.8] Added:

  • NotificationView: Optional sfx on push and dismiss
  • GridView(Mainly used in inventory, can be used to create custom grid views): Added uss classes to filter buttons, so you can customize their styles Fixes:
  • NotificationView: Fix showing dismissed notifications at initialization
  • ProgressBar: Editor code in runtime assembly causing error on build

[1.0.7] Added:

  • New Custom Element: CooldownWipe. Useful for showing cooldown of skills or duration of status effects/buffs. Fixes:
  • TabView: Add USS class names to header buttons and their selected states, useful for customizing style.

[1.0.6] Added:

  • TabView: Added a custom Tab component while keeping the support for built-in Tab component. Custom Tab component is more cumbersome to use but allows you to add custom content to the Tab-Button. Added a red-dot example to the component sample, similar to a notification indicator on a button. Fixes:
  • ProgressBar: Fixed alignment problems when using multiple bars with instant = false.

[1.0.5] Added:

  • new PauseMenuEscapeAction: Added a plain class version alongside the MonoBehaviour version. Example Usage: In a view like visual novel, you might want to prevent going back before the dialogue finishes. You can do this with InputEscapeManager.SetBlocked(true) but it will block all escape actions. With this new class, you can add the pause menu action to the end of the stack so that the pause menu remains accessible while blocking other back actions.
  • Fadeable: split duration into fadeInDuration and fadeOutDuration. Fixes:
  • ProgressBar: various fixes for changes made in 1.0.3.
  • Added null check for LunaUIManager in UIView for 'Disable Other Views On Fade-In' option. It will fail silently.
  • Added fading to the LoadingUI in CircleSceneTransition for a smoother transition from the black circle to the LoadingUI.
  • Fix compile error when InputSystem package is not installed.

[1.0.4] New:

  • New Custom Element: CircleHoleElement - I was using shaders and uGui for circle loading transition. CircleHoleElement uses UI Toolkit's Vector API to draw the shape to achieve the same effect.
  • Renamed PopupConfirmation to PopupChoice as it supports multiple choices now.
  • New Sample: Ink - A sample demonstrating how to integrate the Ink narrative scripting language with the VisualNovel component. With support for choices and branching.

[1.0.3] New:

  • ProgressBar: Added an overlay feature. The API has changed significantly, and the documentation has been updated with new examples. Includes a new Overwatch-style health bar sample!
  • PieChart: Made gap line strokes straight.
  • ProgressBar: Improved performance using the DynamicTransform UsageHint.
  • Notifications: Improved performance using the DynamicTransform UsageHint. Fixes:
  • Samples (Game): Added escape input action to dialogue player UIs.
  • Samples (Game): Improved inventory layout.
  • Samples (Components): Fixed NPEs caused by the new "Disable Other Views On Fade-In" option.

[1.0.2] New:

  • Added 'Add Default Escape Action' option to UIViewComponent which adds UIViewActionEscape that calls FadeOutAndDestroy. So you don't have to write script for simple escape with input.
  • Samples: Added input support and icons to all three dialogue players Fixes:
  • Sample game, save/load view: Fix issue where the save button is not disabled when you are in the main menu

[1.0.1] New:

  • Added 'Disable Other Views On Fade-In' option to UIView and UIViewComponent
  • Improved UI Element Manager API Fixes:
  • Game Sample: Fixed credits view
  • Game Sample: Add custom navigation to main menu to be able to target quit button
  • Game Sample: Fixed inventory item filter buttons
https://www.docs.cupkek.games/luna/releasenotes

Settings

Theme

Light

Contrast

Material

Dark

Dim

Material Dark

System

Sidebar(Light & Contrast only)

Light
Dark

Font Family

DM Sans

Wix

Inclusive Sans

AR One Sans

Direction

LTR
RTL