Add SPA session validation and buglist, update migration docs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2025-12-03 21:28:08 +00:00
parent 9be3dfc14e
commit cff287e870
24169 changed files with 10223 additions and 7120 deletions

View File

@@ -49,11 +49,22 @@ class Jqhtml_Integration {
// ─────────────────────────────────────────────────────────────────────
// Tag Static Methods with Cache IDs
//
// jqhtml caches component output based on args. When a function is passed
// as an arg (e.g., DataGrid's data_source), we need a stable string key.
// jqhtml caches component renders based on a hash of their args.
// Problem: Functions can't be serialized, so passing one (e.g., a
// DataGrid's data_source callback) would defeat caching entirely.
//
// Without this: data_source: function() {...} → no cache (functions aren't serializable)
// With this: function._jqhtml_cache_id = "My_DataGrid.fetch_data" → cacheable
// Solution: Tag every static method with a stable string identifier.
// When jqhtml hashes component args, it uses _jqhtml_cache_id instead
// of the function reference, making the cache key deterministic.
//
// Example:
// <My_DataGrid $data_source=Controller.fetch />
//
// Without tagging: args hash includes [Function] → uncacheable
// With tagging: args hash includes "Controller.fetch" → cacheable
//
// This enables Ajax endpoints and other callbacks to be passed to
// components without breaking the automatic caching system.
// ─────────────────────────────────────────────────────────────────────
const all_classes = Manifest.get_all_classes();
let methods_tagged = 0;
@@ -106,20 +117,6 @@ class Jqhtml_Integration {
Rsx.trigger('jqhtml_ready');
});
}
// ═══════════════════════════════════════════════════════════════════════
// Utility Methods (pass-through to jqhtml runtime)
// ═══════════════════════════════════════════════════════════════════════
/** Get all registered component names. Useful for debugging/introspection. */
static get_component_names() {
return jqhtml.get_component_names();
}
/** Check if a component is registered by name. */
static has_component(name) {
return jqhtml.has_component(name);
}
}
// Class is automatically made global by RSX manifest - no window assignment needed