Show full imported asset catalog
Some checks failed
deploy / deploy (push) Failing after 39s

Proof: npm test passed 166/166; npm run operator-dashboard:build passed; focused dashboard static tests cover removing the 20-row asset registry cap and requesting 250 catalog rows.

Assumptions: Current 1Click import has 163 supported tokens, so a 250-row dashboard catalog cap exposes the full current catalog while keeping the bootstrap bounded.

Still fake: no live funds movement; imported assets remain catalog-visible only unless explicitly inventory/trading enabled.
This commit is contained in:
philipp 2026-05-12 22:52:50 +02:00
parent 95a8e239fd
commit 266d149b33
5 changed files with 13 additions and 3 deletions

View file

@ -521,7 +521,7 @@ async function loadBootstrapPayload({ auth, page, pageSize }) {
[],
sourceErrors,
),
safeSourceLoad('asset_catalog', () => loadAssetCatalogSummary(pool, { limit: 80 }), null, sourceErrors),
safeSourceLoad('asset_catalog', () => loadAssetCatalogSummary(pool, { limit: 250 }), null, sourceErrors),
safeSourceLoad('pair_config', () => loadPairConfigSummary(pool), null, sourceErrors),
loadServiceSnapshots(),
safeSourceLoad('near_intents_status', () => loadNearIntentsStatus(runtimeConfig), null, sourceErrors),

View file

@ -632,7 +632,7 @@ export function createTradingConfigStore({
};
}
export async function loadAssetCatalogSummary(pool, { limit = 50 } = {}) {
export async function loadAssetCatalogSummary(pool, { limit = 250 } = {}) {
await ensureTradingConfigSchema(pool);
const [snapshot, countResult] = await Promise.all([
loadTradingConfig(pool),

View file

@ -333,7 +333,7 @@ function AssetCatalogSection({ assetCatalog, onControl }) {
</tr>
</thead>
<tbody>
{items.length ? items.slice(0, 20).map((asset) => (
{items.length ? items.map((asset) => (
<tr key={asset.asset_id || asset.assetId}>
<td>
<div>{asset.label || asset.symbol}</div>

View file

@ -14,3 +14,8 @@ test('operator dashboard control proxy catches upstream failures before sending
assert.match(source, /buildDashboardControlErrorResponse/);
assert.match(source, /failure.statusCode/);
});
test('operator dashboard requests enough asset catalog rows for the current 1Click import', () => {
assert.match(source, /loadAssetCatalogSummary\(pool,\s*\{\s*limit:\s*250\s*\}\)/);
assert.doesNotMatch(source, /loadAssetCatalogSummary\(pool,\s*\{\s*limit:\s*80\s*\}\)/);
});

View file

@ -58,6 +58,11 @@ test('dashboard UI exposes official NEAR upstream status separately from local f
assert.match(serviceCardSource, /decisive_reason/);
});
test('asset registry table renders the loaded catalog without a hidden 20 row cap', () => {
assert.match(strategySource, /items\.map\(\(asset\)/);
assert.doesNotMatch(strategySource, /items\.slice\(0,\s*20\)\.map/);
});
test('system page exposes deduped environmental conditions history', () => {
assert.match(systemSource, /Environmental conditions/);