fix(store): keep bundle item fields when switching product types
- addItemPanelWithIndex: always fill hidden price/chance/sound inputs
regardless of active product mode, so values persist when admin
toggles between set/switch/roulette in the edit form
- insert handler: merge submitted items with existing serialized items
by id, preserving fields not present in the current form (cmd/give/lang,
prices, chance, sound)
refactor(template): merge public+admin into single app\lib\Template with $isAdmin flag and Smarty composition
refactor(template): replace extends Smarty with private Smarty, add setRequest() and proxy methods (assign, fetch, display, registerPlugin, addExtension, getTemplateVars, setTemplateDir, setConfigDir, setCompileDir, setCacheDir)
refactor(template): merge helpers from both classes, dedupe array_merge, add formatfilesize and seconds_to_duration modifiers
refactor(template): unify render via renderPublic/renderAdmin, renderToString via renderToStringPublic/renderToStringAdmin, content via variadic args, and modal/canonical/pagination/auth_form/message_btn/createModal
refactor(template): unify static Theme, getAvatar, restContent; add JSON_THROW_ON_ERROR and JsonException try/catch; error field only when IN_ADM
fix(template): Theme returns relative path for public and absolute URL for admin; correct THEME via http_site+substr in assignInit and self::Theme in admin constructor
fix(template): template_variants as string in admin constructor and exploded in renderAdmin; add global $m; add default rss array; fetch accepts array $data as 2nd arg
refactor(cron): CronTemplate uses composition instead of inheritance, parent:: replaced with $this->template->, modal created via new Template(...)
chore(admin): delete admin Template class, add class_alias in Kernel for BC
fix(services): pass isAdmin=true to admin Template registration
fix(errorlog): wrap json_decode in try/catch JsonException
chore(smarty): clear templates_a and templates_c caches
feat(demodata): tier case generation with bias, EV pricing, currency auto-detection, max-price cap, schema-aware insert, placeholder resolver, seeder with localization
feat(cases): case translation keys and generated flag, regenerate tooltip, catalog report, installer import with home propagation, split filter by tier segments
fix(cases): noty overflow, online clamp
test(demodata): structural and integration tests