PRCXI9300Deck now accepts model="9300"|"9320" to auto-select 6-slot or
16-slot layout. DefaultLayout gains default_layout for 9300 with T6 as
trash. PRCXI9300Handler auto-derives is_9320 from deck.model when not
explicitly passed. Includes 9300 slim experiment JSON and test fixes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Added PRCXI9300ModuleSite and PRCXI9300FunctionalModule to the PLR
class registration in plr_additional_res_reg.py so find_subclass can
locate them during deserialization of cached cloud data. Also added
"module" and "carrier" to replace_plr_type and TYPE_MAP in
resource_tracker.py to suppress unknown type warnings.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Upstream rewrite of PRCXI9300Deck lost the Y-axis flip logic from the
original `(3-row)*96+13` formula. T1-T4 were rendered at the bottom
instead of the top. Reversed _DEFAULT_SITE_POSITIONS Y coordinates and
updated prcxi_9320_slim.json accordingly. Also added "plateadapter" and
"module" to slim JSON content_type entries.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PRCXI9300PlateAdapterSite was already removed by upstream/prcix9320.
Its functionality is now provided by PRCXI9300ModuleSite which serves
as the base class for functional modules (heating/cooling/shaking/magnetic).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>