Skip to content

feat: Add strict typing to a lot of packages#720

Merged
Quenty merged 108 commits into
mainfrom
users/quenty/strict-typing
Jul 14, 2026
Merged

feat: Add strict typing to a lot of packages#720
Quenty merged 108 commits into
mainfrom
users/quenty/strict-typing

Conversation

@Quenty

@Quenty Quenty commented Jun 26, 2026

Copy link
Copy Markdown
Owner

No description provided.

Quenty added 30 commits June 26, 2026 00:12
Add explicit type annotations and `: ()` return types and resolve all strict errors. Inline the EnabledMixin surface since the old solver cannot intersect it, and fix a latent ActiveAction.Value comparison that prevented deactivation cleanup.
Add explicit type annotations and `: ()` return types to MarketplaceServiceCache and resolve all strict errors.
Add explicit type annotations and `: ()` return types to OverriddenProperty and resolve all strict errors.
Add explicit type annotations and `: ()` return types and resolve all strict errors. Add the @quenty/rx dependency required for Observable typing.
Add explicit type annotations and `: ()` return types to RadialImage and resolve all strict errors.
Add explicit type annotations and `: ()` return types across the snackbar service, story, and option utils, and resolve all strict errors.
Add explicit type annotations and `: ()` return types to the Time library and resolve all strict errors.
Record the explicit `: ()` no-return annotation convention, the EnabledMixin/invariant-generic old-solver workarounds, and a warning that omitting --defs=globalTypes.d.lua produces false unknown-global errors on tick/time.
…fixes, selene _self/shadowing) + add selene dimension to eval scorer
…uau-lsp V1 symlink-nominal flake, unreproducible locally)
Quenty added 2 commits July 14, 2026 18:35
…operty

RogueProperty defines a custom __index/__newindex that errors on unknown keys, so
its fields must be assigned before the metatable is applied and its internal reads
must use rawget to bypass the metamethod. The --!strict conversion hoisted
setmetatable above the constructor's field assignments and rewrote three
rawget(self, "_x") reads as self._x, both of which broke it at runtime: every field
assignment threw "Bad index", crashing construction of every RogueProperty and
RoguePropertyTable. Build the plain table first and apply the metatable last, and
restore the rawget reads (keeping the strict-mode casts).
…egressions

Add a SKILL.md section and conventions note telling the converter never to rewrite
rawget/rawset as self._x or hoist setmetatable in classes with a custom
__index/__newindex that errors on unknown keys, and add an eval scorer dimension
(raw vs raw_gold) that fails any conversion which drops a raw access. Exercised by
the settings-property gold case and validated against the RogueProperty regression.
The eval harness's restore() checked out `main` per package to undo place/convert.
On `main` that's correct, but on a feature branch it reverted the branch's own work
in the case package. Restore to HEAD (the current branch's committed state) instead
— identical on main, non-destructive on a branch.
Quenty added 3 commits July 14, 2026 12:43
Scalar array elements are serialized either as attributes on the array container or as child ValueBase instances, depending on how a game wrote them. createDefinitionsFromContainer only enumerated child instances, so attribute-serialized scalar arrays (including freshly initialized defaults) read back empty, and shrinking such an array left stale attribute entries behind. Discover attribute-backed elements during read and clear excess attributes on shrink, preserving both serialization forms.
Add unit and integration specs: RogueProperty/RoguePropertyTable usage (including Color3 and boolean values), the individual modifier implementations (RogueMultiplier/RogueAdditive/RogueSetter surface + math, and RogueModifierBase), modifier ordering/enable/reactiveness, RoguePropertyArrayUtils, and both scalar-array serialization forms. Each integration test builds and tears down its own ServiceBag via setup()/controller:destroy().
Alias the lune type definitions so the nevermore-cli and studio-bridge build-scripts type-check against them.
@Quenty Quenty merged commit 4a13868 into main Jul 14, 2026
11 checks passed
@Quenty

Quenty commented Jul 14, 2026

Copy link
Copy Markdown
Owner Author

🚀 PR was released in @quenty/actionmanager@13.34.0, @quenty/adorneeboundingbox@8.39.0, @quenty/adorneevalue@10.38.0, @quenty/aggregator@1.16.0, @quenty/animationgroup@10.14.0, @quenty/animationprovider@11.39.0, @quenty/animations@8.33.0, @quenty/animationtrackutils@2.4.0, @quenty/assetserviceutils@5.34.0, @quenty/avatareditorutils@7.40.0, @quenty/binder@14.37.0, @quenty/bindtocloseservice@8.33.0, @quenty/blend@12.37.0, @quenty/bodycolorsutils@7.37.0, @quenty/boundlinkutils@14.38.0, @quenty/brine@1.6.0, @quenty/buttonhighlightmodel@14.37.0, @quenty/camera@14.43.0, @quenty/camerastoryutils@10.22.0, @quenty/characterparticleplayer@2.4.0, @quenty/chatproviderservice@9.54.0, @quenty/clienttranslator@14.38.0, @quenty/clipcharacters@12.41.0, @quenty/cmdrservice@13.46.0, @quenty/color3utils@11.37.0, @quenty/colorpalette@10.40.0, @quenty/colorpicker@10.38.0, @quenty/conditions@10.41.0, @quenty/contentproviderutils@12.32.0, @quenty/cooldown@11.39.0, @quenty/cubicspline@10.13.0, @quenty/datastore@13.40.0, @quenty/deathreport@10.46.0, @quenty/depthoffield@11.39.0, @quenty/ellipticcurvecryptography@1.13.0, @quenty/elo@7.38.0, @quenty/enabledmixin@11.27.0, @quenty/equippedtracker@13.34.0, @quenty/fakeskybox@11.19.0, @quenty/firstpersoncharactertransparency@14.35.0, @quenty/flipbook@9.33.0, @quenty/funnels@1.25.0, @quenty/gameconfig@12.50.0, @quenty/gameproductservice@14.53.0, @quenty/gamescalingutils@13.37.0, @quenty/generatewithmixin@11.12.0, @quenty/genericscreenguiprovider@13.40.0, @quenty/hide@11.39.0, @quenty/highlight@10.41.0, @quenty/hintscoringutils@14.44.0, @quenty/humanoidspeed@12.50.0, @quenty/idleservice@13.53.0, @quenty/ik@15.54.0, @quenty/inputkeymaputils@14.44.0, @quenty/inputmode@13.35.0, @quenty/isamixin@2.4.0, @quenty/linearsystemssolver@2.4.0, @quenty/linkutils@13.31.0, @quenty/lipsum@14.37.0, @quenty/localizedtextutils@12.31.0, @quenty/lrucache@1.10.0, @quenty/markdownrender@2.5.0, @quenty/marketplaceutils@11.21.0, @quenty/memoize@1.10.0, @quenty/modeltransparencyeffect@11.18.0, @quenty/motor6d@7.43.0, @quenty/mouseovermixin@10.14.0, @quenty/mouseshiftlockservice@11.19.0, @quenty/networkownerservice@5.9.0, @quenty/nevermore-cli@4.35.0, @quenty/observablecollection@12.39.0, @quenty/overriddenproperty@10.15.0, @quenty/particleengine@13.34.0, @quenty/parttouchingcalculator@14.41.0, @quenty/permissionprovider@14.39.0, @quenty/pillbacking@10.14.0, @quenty/playerbinder@14.37.0, @quenty/playerhumanoidbinder@14.38.0, @quenty/playerinputmode@9.39.0, @quenty/promptqueue@1.38.0, @quenty/qframe@10.23.0, @quenty/qgui@2.5.0, @quenty/quaternion@2.7.0, @quenty/racketingropeconstraint@12.44.0, @quenty/radial-image@9.38.0, @quenty/ragdoll@15.53.0, @quenty/rigbuilderutils@10.35.0, @quenty/rodux-actions@9.14.0, @quenty/rodux-undo@8.14.0, @quenty/rogue-humanoid@10.50.0, @quenty/rogue-properties@11.47.0, @quenty/roundedbackingbuilder@2.4.0, @quenty/rxbinderutils@14.37.0, @quenty/saveslot@1.3.0, @quenty/scoredactionservice@16.45.0, @quenty/screenshothudservice@7.35.0, @quenty/scrollingframe@12.19.0, @quenty/secrets@7.51.0, @quenty/settings-inputkeymap@10.57.0, @quenty/settings@11.54.0, @quenty/snackbar@11.43.0, @quenty/softshutdown@9.49.0, @quenty/soundgroup@1.42.0, @quenty/soundplayer@7.42.0, @quenty/spawning@10.48.0, @quenty/sprites@13.30.0, @quenty/studio-bridge@0.17.0, @quenty/sunpositionutils@2.8.0, @quenty/templateprovider@11.39.0, @quenty/textserviceutils@13.37.0, @quenty/tie@10.41.0, @quenty/time@2.5.0, @quenty/timedtween@7.37.0, @quenty/transitionmodel@7.39.0, @quenty/tuple@1.9.0, @quenty/userserviceutils@9.32.0, @quenty/viewport@11.44.0 🚀

@Quenty Quenty added the released This issue/pull request has been released. label Jul 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

released This issue/pull request has been released.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant