4.0 KiB
Delta 0.3.8-pre.008 — RAW Accounts DataTables server-side + détail
Base requise
Base directe attendue : 0.3.8-pre.007-fix.003 (workspace.package.version = 0.3.8-pre.7.fix.3).
Objet
Brancher la vue RAW Accounts de ksp-app-store-desk sur les capabilities backend-neutrales RawAccountStateInspectionRead et RawAccountStateRead, sans modifier Store API, Store façade, PostgreSQL ou les queries keyset machine.
Backend applicatif
Store Desk ajoute cinq DTO app-owned et deux commands Tauri :
store_query_accounts
store_get_account_detail
store_query_accounts reçoit uniquement :
offset decimal
limit = 25 | 50 | 100
pubkey exacte optionnelle
slot_min optionnel
slot_max optionnel
direction = ascending | descending
Le network n'est jamais fourni par le frontend : il est dérivé du ksp-store-lib::Store déjà ouvert. Le runtime construit RawInspectionPageRequest + RawAccountStateInspectionQuery puis appelle RawAccountStateInspectionRead.
La réponse app-owned contient :
rows data-free
records_total_decimal
records_filtered_decimal
Tous les u64 susceptibles de dépasser le domaine JS-safe restent encodés en texte décimal.
Table Accounts
La table passe à :
serverSide: true
searching: false
ordering: false
pageLength: 25
lengthMenu: [25, 50, 100]
ajax: fonction custom -> invoke Tauri
Le mapping visible est :
DataTables start -> offset
DataTables length -> limit
Store total -> recordsTotal
Store filtered -> recordsFiltered
Store summaries -> data
DataTables draw -> frontend uniquement
Les filtres Store explicites sont pubkey exacte, slot min, slot max et direction. Tout changement de filtre redessine depuis la première page. Aucun pager Store ou cursor n'est rendu.
Rows et détail
Les rows exposent uniquement pubkey, slot, state hash, owner, lamports, executable, rent epoch et data length. Aucun byte Account n'est présent dans la table.
Le bouton Détail recharge l'identité exacte (pubkey, slot, state_hash) via RawAccountStateRead. Le modal expose :
- pubkey, slot, state hash, owner, lamports, executable et rent epoch ;
- data length exacte ;
- preview hex des 512 premiers bytes maximum ;
- flag explicite de troncature ;
- bouton de copie du preview affiché uniquement, sans charger le reste des bytes.
Pubkey, owner et state hash réutilisent le helper générique de troncature centrale + tooltip valeur complète + copie stabilisé par les fixes pre.007.
Sécurité / instrumentation
- rejet Rust de
length=-1et de toute taille autre que 25/50/100 ; - offset/slots/pubkey/state hash parsés sans écho de valeur dans les erreurs ;
- counts décimaux convertis côté TypeScript seulement après contrôle
Number.MAX_SAFE_INTEGER; - aucune search/order DataTables arbitraire dans le contrat IPC ;
- aucune URI, credential, SQL, handle PostgreSQL ou byte Account dans les logs ;
- tracing query/page/page-length/redraw/refresh/détail/copie sans valeurs de filtres ni identité ;
- nouveaux items
pub(crate)réexportés parlib.rset consommés viacrate::Itemconformément aux règles KSP.
Hors scope
Aucune observation Store n'est ajoutée à l'UI ; cette extension reste réservée à pre.009/pre.010. Aucun changement de Store API, Store façade, PostgreSQL, migration, index, capability ou Config composite.
Version
delivery = 0.3.8-pre.008
workspace.package.version = 0.3.8-pre.8
commit = v0.3.8-pre.008
tag = aucun
Gate requis
cargo fmt --all
python3 scripts/audit_rust_workspace_rules.py
python3 scripts/audit_markdown_tables.py README.md RULES.md ROADMAP.md CHANGELOG.md docs prompts crates deltas
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test -p ksp-app-store-desk
cargo test -p ksp-store-lib
cargo check -p ksp-store-lib --no-default-features
Smoke runtime recommandé :
(cd crates/ksp-app-store-desk && cargo tauri dev)