- Trim trailing blank lines from JSDoc descriptions to remove extra bottom space
- Add tooltip panning: drag M1 anywhere on tooltip panel body to reposition it freely
- drawTextBox: update scrollbar drag each frame via Mouse.isButtonDown(0),
release drag when button lifted (mirrors existing ScrollState pattern)
- mouseClicked: intercept LMB on tooltip scrollbar thumb before text interaction
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
- HoverState: add smooth-scroll lerp (updateSmoothScroll, targetScrollOffset),
scrollbar thumb bounds (setScrollbarThumb), click/drag/release state methods,
and fix broken scrollTooltip/getTooltipScrollOffset/resetTooltipScroll methods
that referenced the deleted int field
- TokenHoverRenderer: call updateSmoothScroll each frame; store thumb bounds
for drag+hover detection; highlight thumb on hover/drag; reduce empty
DocumentationLine height from lineHeight+LINE_SPACING to lineHeight/2
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
- Fixed clicking and adding hooks not properly resolving added types like INpcEvent.CollideEvent
- Imported wildcards of all available events in the given context.
i.e ScriptContext NPC has INpcEvent,IProjectileEvent,IAbilityEvent,etc.. as available wildcard imports
- Added nested types to autocomplete of outer classes so INpcEvent. shows InitEvent, UpdateEvent, InteractEvent,etc...
- Added wildcard imports to autocomplete
This change enables the script editor to display and validate generic type arguments
for method parameters that are erased to Object in Java's built-in collection interfaces.
MOTIVATION
----------
Java's Map, Collection, List, Deque, and concurrent variants use Object-typed parameters
(e.g., Map.get(Object), Collection.contains(Object)) for backward-compatibility reasons.
When the receiver is parameterized (e.g., HashMap<String, Integer>), the editor should
show get(String) instead of get(Object) to provide better hints and stricter validation.
IMPLEMENTATION
--------------
New GenericParameterAdapter utility (contract-level rules, NOT per-concrete-class):
- Covers 8 JDK collection contracts exhaustively (Map, ConcurrentMap, Collection, List,
Set, Deque, BlockingQueue, BlockingDeque)
- 35+ rules total mapping erased Object params to appropriate type arguments (K, V, or E)
- Integrated into MethodInfo.fromReflection() so all code paths (autocomplete, hover,
validation) use the same adapted parameter types
- Hover signature rendering now routes through MethodInfo for parameterized receivers,
ensuring consistency with autocomplete
Related-to: Generic type argument substitution framework (TypeSubstitutor, GenericContext)
which already applied V correctly; this extends that same mechanism to K/E for the
JDK's intentionally-erased-for-compatibility method parameters.