TOC

Oasis May 2025 Engineering update

Wallet and CLI Updates

Wallet

The Wallet team merged 13 PRs this month:

Remove Oasis Monitor leftovers (#2178) ±6288 by lukaw3d @ 2025-05-21.

CHANGELOG:

Remove Oasis Monitor leftovers

Fix warnings and error overlays since parcel@2.14 (#2181) ±103 by lukaw3d @ 2025-05-22.

CHANGELOG:

Fix warnings and error overlays since parcel@2.14

Assemble changes for 2.3.0 release (#2176) ±90 by lukaw3d @ 2025-05-19.

Lets do a release before #2174 and #2173 in case something breaks

Update extension release notes (#2177) ±28 by lukaw3d @ 2025-05-23.

CHANGELOG:

Update extension release notes

Add instructions inside eth private key dropdown (#2171) ±23 by lukaw3d @ 2025-05-06.

image

CHANGELOG:

Add instructions inside eth private key dropdown

Migrate Cloudflare preview deploys to wrangler action (#2185) ±19 by buberdds @ 2025-05-30.

CHANGELOG:

Migrate Cloudflare preview deploys to wrangler action

Update parcel (#2174) ±14 by lukaw3d @ 2025-05-19.

CHANGELOG:

Update dependencies

Set CSS color-scheme to match grommet dark theme (#2170) ±11 by lukaw3d @ 2025-05-06.
Before After
before1 after1
before4 after4
before3 after3
before2 after2

CHANGELOG:

Set CSS color-scheme to match grommet dark theme

Remove react-app-polyfill from runtime (#2172) ±9 by lukaw3d @ 2025-05-06.

CHANGELOG:

Remove react-app-polyfill from runtime

Build APK only on master to speed up PR check (#2179) ±8 by lukaw3d @ 2025-05-23.

APK building takes 2.5 minutes out of 3.5 min ci-build. APK file wasn't even uploaded.

Related 07bf3e3.

CHANGELOG:

Build APK only on master to speed up PR check

Update @oasisprotocol/client (#2173) ±7 by lukaw3d @ 2025-05-19.

Related oasisprotocol/oasis-sdk#2217

CHANGELOG:

Update dependencies

Fix importing images in parcel@2.14 (#2182) ±5 by lukaw3d @ 2025-05-22.

Supersedes #2180
Broken since #2174

CHANGELOG:

Fix importing images in parcel@2.14

Fork @parcel/error-overlay to ignore console.error (for parcel@2.14) (#2184) ±2 by lukaw3d @ 2025-05-27.

Related to #2181

In dev mode since #2174 parcel showed annoying error overlays

Fork diff lukaw3d/parcel-error-overlay-ignore-console@b13a1e1

CHANGELOG:

Fork @parcel/error-overlay to ignore console.error (for parcel@2.14)

1 new releases of wallet were made this month: In total, 13 pull requests were merged in May.


Cli

The Cli team merged 23 PRs this month:

feat(cmd/rofl): Add historic enclave identity support (#448) ±151 by kostko @ 2025-05-06.
rofl deploy: Set default provider address, detect term and take the first offer (#447) ±97 by matevz @ 2025-05-06.

This PR simplifies flow for first-time developers building ROFL on Testnet:

Fixes #441

Use deterministic umask during build (#451) ±58 by kostko @ 2025-05-08.
cmd/network/add-local: Fix absolute path determination (#476) ±49 by abukosek @ 2025-05-26.

Closes #471.

cmd/rofl/deploy: Fix --provider behaviour (#455) ±41 by matevz @ 2025-05-10.

This PR:

cmd: Also remove the deployment from rofl.yaml when removing app (#472) ±38 by matevz @ 2025-05-21.

Fixes #461 by removing the corresponding deployment section from rofl.yaml when removing the ROFL app.

Also, a warning message is now shown:

$ oasis rofl remove
WARNING: Removing this ROFL app will DEREGISTER it, ERASE any on-chain secrets and local configuration!
WARNING: THIS ACTION IS IRREVERSIBLE!
? Remove ROFL app 'rofl1qpjsc3qplf2szw7w3rpzrpq5rqvzv4q5x5j23msu' deployed on network 'testnet' (y/N)
Clear any previously set errors for Docker env (#449) ±37 by kostko @ 2025-05-07.

This could previously cause an incorrect error to be propagated when the host did not have the given binary installed.

cmd/rofl/init: Init git repository if applicable (#475) ±37 by abukosek @ 2025-05-26.

Closes #392.

cmd&build: Push ORCs to Oasis-managed ROFL registry by default (#442) ±26 by anzoman @ 2025-05-06.

Previously, the CLI required configuring an OCI repository manually when using oasis rofl deploy. The changes here simplify this by introducing a default Oasis-managed OCI registry for pushing ROFL ORCs.

feat(build/rofl): Bump latest oasis-boot to v0.4.2 (#456) ±12 by kostko @ 2025-05-10.
feat(build/rofl): Bump latest oasis-boot to v0.5.0 (#477) ±12 by kostko @ 2025-05-27.
feat(build/rofl): Bump latest rofl-containers to v0.5.1 (#468) ±11 by kostko @ 2025-05-19.
fix(cmd/rofl): Add missing term flags to top-up command (#460) ±1 by kostko @ 2025-05-10.

Fixes #459

4 new releases of cli were made this month: In total, 23 pull requests were merged in May.


Network Updates

Mainnet highlights

[2025-05-08] ami.dev:

We've released Sapphire 0.10.3 and Cipher 3.3.3 for the MAINNET.

This release includes new ROFL features and various bug fixes.

For node operators running Oasis Core 25.x on Sapphire and Cipher nodes, your nodes will be automatically upgraded on Fri, 16 May 2025 at the following epochs:
➡️ Epoch 40997: Cipher 3.3.3 ➡️ Epoch 41000: Sapphire 0.10.3

No action is required on your part. However, we recommend monitoring your nodes during and after the upgrade to confirm everything functions correctly. For more information and links to releases see the updated MAINNET network parameters (https://docs.oasis.io/node/mainnet/). Thanks!

[2025-05-20] ami.dev:

We have released Oasis Core 25.2 for MAINNET.

Key features include: ➡️ Support for ROFL-managed bundles ➡️ Configurable CID pool for TDX VMs ➡️ Light client initialization bug fixes

Node operators note that SGX loader configuration has been moved from runtime.sgx_loader -> runtime.sgx.loader. The old option has been deprecated and support may be removed in a future release.

Visit the changelog (https://github.com/oasisprotocol/oasis-core/blob/v25.2/CHANGELOG.md) to view all changes. The upgrade is non-breaking and can be performed at any time by replacing the oasis-node binary and restarting your node. All node operators on MAINNET are encouraged to upgrade. For more information and links to releases see the updated MAINNET network parameters (https://docs.oasis.io/node/mainnet/). Thanks!

[2025-05-22] ami.dev:

We have released Oasis Core 25.3 for MAINNET.

Key highlights include: ➡️ Bug fixes regarding attestation problems ➡️ Other various bug fixes

Visit the changelog (https://github.com/oasisprotocol/oasis-core/blob/v25.3/CHANGELOG.md) to view all changes. The upgrade is non-breaking and can be performed at any time by replacing the oasis-node binary and restarting your node. All node operators on MAINNET are encouraged to upgrade. For more information and links to releases see the updated MAINNET network parameters (https://docs.oasis.io/node/mainnet/). Thanks!

[2025-05-23] ami.dev:

We have released Oasis Web3 Gateway 5.2.0 for MAINNET.

Key highlights include: ➡️ Added support for EIP-1559 transactions ➡️ Various bug fixes

If you're operating the Oasis Web3 Gateway, please upgrade to the latest version.

Visit the changelog (https://github.com/oasisprotocol/oasis-web3-gateway/releases/tag/v5.2.0) to view all changes. For more information and links to releases see the updated MAINNET network parameters (https://docs.oasis.io/node/mainnet/). Thanks!

The number of daily transactions on Sapphire Mainnet fluctuated between 9,749 and 122,750. The monthly average in May was 31,588 transactions per day and was 27% higher compared to the last month (24,842 transactions). The daily maximum was 122,750 transactions on 16 May (compared to 117,903 the last month on 24 April).

dateall
2025-05-0116,467
2025-05-0289,485
2025-05-0311,097
2025-05-0410,315
2025-05-0513,155
2025-05-0617,668
2025-05-0716,649
2025-05-0897,518
2025-05-0917,837
2025-05-1018,488
2025-05-1119,852
2025-05-1212,199
2025-05-1312,461
2025-05-1416,129
2025-05-1525,473
2025-05-16122,750
2025-05-1721,836
2025-05-1827,479
2025-05-1929,869
2025-05-2025,279
2025-05-2119,413
2025-05-2238,596
2025-05-23104,647
2025-05-2412,372
2025-05-2511,784
2025-05-269,749
2025-05-2712,447
2025-05-2812,706
2025-05-2924,996
2025-05-3098,837
2025-05-3111,683
2025-06-01932

The number of daily transactions on Emerald Mainnet fluctuated between 3,235 and 4,396. The monthly average in May was 3,730 transactions per day and was 8% higher compared to the last month (3,463 transactions). The daily maximum was 4,396 transactions on 12 May (compared to 3,899 the last month on 7 April).

dateall
2025-05-013,235
2025-05-023,543
2025-05-033,596
2025-05-043,507
2025-05-053,390
2025-05-063,486
2025-05-073,353
2025-05-083,708
2025-05-093,929
2025-05-104,119
2025-05-113,791
2025-05-124,396
2025-05-134,013
2025-05-143,720
2025-05-154,155
2025-05-163,570
2025-05-173,546
2025-05-183,976
2025-05-193,924
2025-05-203,653
2025-05-213,833
2025-05-223,766
2025-05-233,911
2025-05-243,573
2025-05-253,468
2025-05-263,817
2025-05-273,678
2025-05-283,791
2025-05-293,730
2025-05-303,718
2025-05-313,744
2025-06-01276

{{NODE_STATS mainnet}}

No major outages were reported for Oasis foundation-provided services in May. A few-minutes downtimes were encountered by the ... You can check out the details on the Mainnet status page.

Testnet highlights

[2025-05-21] ami.dev:

We have released Oasis Core 25.3 for TESTNET.

Key highlights include: ➡️ Various bug fixes

Visit the changelog (https://github.com/oasisprotocol/oasis-core/blob/v25.3/CHANGELOG.md) to view all changes. The upgrade is non-breaking and can be performed at any time by replacing the oasis-node binary and restarting your node. All node operators on TESTNET are encouraged to upgrade. For more information and links to releases see the updated TESTNET network parameters (https://docs.oasis.io/node/testnet/). Thanks!

[2025-05-23] ami.dev:

We have released Oasis Web3 Gateway 5.2.0 for TESTNET.

Key highlights include: ➡️ Added support for EIP-1559 transactions ➡️ Various bug fixes

If you're operating the Oasis Web3 Gateway, please upgrade to the latest version.

Visit the changelog (https://github.com/oasisprotocol/oasis-web3-gateway/releases/tag/v5.2.0) to view all changes. For more information and links to releases see the updated TESTNET network parameters (https://docs.oasis.io/node/testnet/). Thanks!

The number of daily transactions on Sapphire Testnet fluctuated between 8,211 and 46,427. The monthly average in May was 18,773 transactions per day and was 56% higher compared to the last month (12,041 transactions). The daily maximum was 46,427 transactions on 11 May (compared to 20,333 the last month on 29 April).

dateall
2025-05-018,211
2025-05-029,707
2025-05-039,126
2025-05-049,071
2025-05-0514,364
2025-05-0623,053
2025-05-0721,110
2025-05-0823,481
2025-05-0924,037
2025-05-1043,584
2025-05-1146,427
2025-05-1227,241
2025-05-1320,994
2025-05-1428,694
2025-05-1515,567
2025-05-168,797
2025-05-178,763
2025-05-188,759
2025-05-199,234
2025-05-209,333
2025-05-2114,904
2025-05-2214,272
2025-05-2329,218
2025-05-2427,121
2025-05-2516,870
2025-05-2616,481
2025-05-2717,585
2025-05-2820,580
2025-05-2920,024
2025-05-3018,571
2025-05-3116,799
2025-06-011,389

The number of daily transactions on Emerald Testnet fluctuated between 3,025 and 5,619. The monthly average in May was 3,390 transactions per day and was 1% higher compared to the last month (3,352 transactions). The daily maximum was 5,619 transactions on 25 May (compared to 3,715 the last month on 13 April).

dateall
2025-05-013,025
2025-05-023,302
2025-05-033,299
2025-05-043,298
2025-05-053,406
2025-05-063,458
2025-05-073,325
2025-05-083,341
2025-05-093,351
2025-05-103,341
2025-05-113,342
2025-05-123,369
2025-05-133,348
2025-05-143,317
2025-05-153,353
2025-05-163,318
2025-05-173,318
2025-05-183,329
2025-05-193,345
2025-05-203,246
2025-05-213,339
2025-05-223,324
2025-05-233,341
2025-05-243,307
2025-05-255,619
2025-05-263,301
2025-05-273,348
2025-05-283,294
2025-05-293,268
2025-05-303,264
2025-05-313,263
2025-06-01272

{{NODE_STATS testnet}}

No major outages were reported for Oasis foundation-provided services in May. A few-minutes downtimes were encountered by the ... You can check out the details on the Testnet status page.

Oasis Nexus and Explorer

Nexus

The Nexus team merged 29 PRs this month:

analyzer/roflmarket: Implement roflmarket analyzer (#987) ±197362 by ptrus @ 2025-05-16.

CHANGELOG:

analyzer/roflmarket: Implement roflmarket analyzer

analyzer/consensus: Ensure Node and Entity address preimages are inserted (#1001) ±1942 by ptrus @ 2025-05-20.

Fixes: #907

CHANGELOG:

analyzer/consensus: Ensure Node and Entity address preimages are stored

e2e: add db__address_preimages test case (#1002) ±484 by ptrus @ 2025-05-20.
api/{rofl_apps,evm_tokens}: Filter by multiple name fragments (#1026) ±481 by ptrus @ 2025-05-29.

Fixes: #1015

Change is backrwads compatible, providing a single name term works as before.

TODO:

api/rofl_apps: Optimize rofl apps query (#998) ±323 by ptrus @ 2025-05-19.

Fixes: #989

Some fixes/optimisation for the rofl apps query:

TODO:

CHANGELOG:

api/rofl_apps: Optimize rofl apps query
Additionally, the api/rofl_apps is now limited to returning at most 100 responses, down from 1000.

analyzer/runtime: Support runtime EIP-1559 transactions (#1023) ±270 by ptrus @ 2025-05-30.

Fixes #702

Also fixes potential invalid address preimages in the DB.

Tested with the transaction mentioned in the issue:

$ curl http://localhost:8008/v1/sapphire/transactions/bafdf0a3c4ba0d3cdb40ba6c7dacd9ec31ce70cfd4b9f8ce19b0cd6d79106784
{"is_total_count_clipped":false,"total_count":1,"transactions":[{"amount":"1000000000000000000","body":{"address":"Y89emBYgqOcO4iolV4sCR9iqMTo=","data":"M9QlxC2WuzOhf338nPcjev4zkLr+qkz43QXsGbuYTKTvKBM7","value":"DeC2s6dkAAA="},"charged_fee":"28913000000000000","eth_hash":"bafdf0a3c4ba0d3cdb40ba6c7dacd9ec31ce70cfd4b9f8ce19b0cd6d79106784","fee":"103462800000000000","fee_symbol":"TEST","gas_limit":1034628,"gas_used":289130,"hash":"ac23c97ca86f6eda77e41ac72736018818271983415a5b46ad7099b0fa81f34a","index":0,"is_likely_native_token_transfer":false,"method":"evm.Call","nonce_0":62,"round":6548281,"sender_0":"oasis1qqmykrt6zs7f8rd9w8vx9wzy2v78a9sfgqtjetvs","sender_0_eth":"0x4F781Cd8b96A94F63872e85583b2653E340c54E4","signers":[{"address":"oasis1qqmykrt6zs7f8rd9w8vx9wzy2v78a9sfgqtjetvs","address_eth":"0x4F781Cd8b96A94F63872e85583b2653E340c54E4","nonce":62}],"size":181,"success":true,"timestamp":"2024-06-01T16:44:49+02:00","to":"oasis1qr7lgx4e9szzd20r02hegha0x4cnrsufug9pr5tl","to_eth":"0x63Cf5E981620A8E70ee22A25578B0247D8Aa313a"}]}

"charged_fee":"28913000000000000"

Note that this won't fix past, already indexed transactions. But i think that's fine for now.

TODO:

api/runtime: Validate runtime parameter (#992) ±262 by ptrus @ 2025-05-06.

CHANGELOG:

api/runtime: Validate runtime parameter
In some API endpoints the runtime parameter was not validated.

analyzer/runtime: Detect contract candidates via log-emitting addresses (#1027) ±120 by ptrus @ 2025-05-29.

Fixes: #1025

CHANGELOG:

analyzer/runtime: Detect contract candidates via log-emitting addresses

Add periodic VACUUM ANALYZE for accounts_list materialized view (#1029) ±93 by ptrus @ 2025-05-30.

This reclaimed ~400GB of storage on the mainnet DB:

Screenshot 2025-05-30 at 09 14 38

CHANGELOG:

Add periodic VACUUM ANALYZE for accounts_list materialized view

Update go to 1.24.x (#1014) ±60 by ptrus @ 2025-05-26.
api/accounts: Mark accounts belonging to validators (#1003) ±58 by ptrus @ 2025-05-21.

Fixes: #1000

CHANGELOG:

api/accounts: Mark accounts belonging to validators
Two fields added to `/v1/consensus/accounts/{addr}` response:
- `validator_node_for`: The validator address, if this account is a validator node belonging to a validator.
- `validator_entity`: The validator address, if this account *is* a validator entity.

api/rofl_apps: Filter by name fragment (#1007) ±53 by ptrus @ 2025-05-21.

Fixes #996 (for real now)

CHANGELOG:

api/rofl_apps: Support filtering by metadata name fragment

Changelog 0.6.13 (#999) ±52 by ptrus @ 2025-05-19.
Add support for pprof server (#1021) ±49 by ptrus @ 2025-05-27.
Rename validator_node_for -> entity_node_for (#1006) ±42 by ptrus @ 2025-05-21.
Add icons and origins of some sapphire tokens to named-addresses (#988) ±40 by lukaw3d @ 2025-05-02.

Related to #985

CHANGELOG:

Add icons and origins of some sapphire tokens

api/rofl_apps: Support filtering by name (#997) ±40 by ptrus @ 2025-05-16.

Fixes: #996

CHANGELOG:

api/rofl_apps: Support filtering by name

analyzer/consensus: Remove preimage migration code (#1011) ±38 by ptrus @ 2025-05-23.
Changelog 0.6.15 (#1028) ±38 by ptrus @ 2025-05-29.
Changelog 0.6.14 (#1010) ±36 by ptrus @ 2025-05-22.
Add dApp URLs to named-addresses (#991) ±28 by lukaw3d @ 2025-05-06.

CHANGELOG:

Add dApp URLs to named-addresses

Bump pgx to 5.7.5 (#1019) ±15 by ptrus @ 2025-05-27.

CHANGELOG:

deps: Bump pgx to 5.7.5

api/transactions: Ensure ordering for txs filtered by related address (#1012) ±13 by ptrus @ 2025-05-22.

CHANGELOG:

api/transactions: Ensure ordering for txs filtered by related address

storage: add chain.evm_tokens token_name index (#466) ±12 by pro-wh @ 2025-05-29.

from #460

This speeds up searching tokens by name. For simplicity, we're not merging this for now (2024-06) until search proves problematically slow.

CHANGELOG:

storage: add chain.evm_tokens name and symbol indices

analyzer/roflmarket: Fix OfferID and InstanceID deserialization (#1009) ±9 by ptrus @ 2025-05-22.
analyzer/aggregate: Increase pg_statistic sample size for related txs (#994) ±7 by ptrus @ 2025-05-09.

…nsactionshttps://github.com/oasisprotocol/nexus/issues/993

CHANGELOG:

analyzer/aggregate: Increase pg_statistic sample size for related txs

Updated CODEOWNERS to reflect current activity levels (#1005) ±2 by ptrus @ 2025-05-21.
Bump oasis-sdk to latest version (#1016) ±2 by ptrus @ 2025-05-26.
changelog: Fix reference for pprof support (#1030) ±2 by ptrus @ 2025-05-29.
3 new releases of nexus were made this month: In total, 29 pull requests were merged in May.


Explorer

The Explorer team merged 40 PRs this month:

Make adaptive trimmer more resilient (#1963) ±810 by csillag @ 2025-05-21.

Up to now, the adaptive trimmer needed to be inserted in a DOM element
with a fixed width, and overflow-X set to hidden.
(This was required so that it can find the best size to fill it, detecting
overflow.)

This was fragile, because it relied on all parent components being configured
in a particular way.

This changes makes it so that we can detect overflow recursively
on any of the parent elements, which means that there are no
restrictions on parent configuration.

As a side effect, this fixes fixes #1943 and #1957, both regressions on the address
display, caused by changes in CSS configurations on parent nodes, which earlier
confused the adaptive display.

Before After
image image
image image

But besides fixing these regressions, the more important change is that
the adaptive trigger is a lot more resilient now, and no more relies on CSS settings
of parent nodes in the tree, the the probability of future regressions is greatly reduced.

CHANGELOG:

Make adaptive trimmer more resilient

Update API bindings (#1964) ±623 by github-actions[bot] @ 2025-05-21.

Created by https://github.com/oasisprotocol/explorer/blob/master/.github/workflows/generate-openapi.yml

If CI actions and checks don't run in this PR: close it and reopen.
https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs

CHANGELOG:

Update API bindings

Add Monaco Editor for contract source code syntax highlighting (#1979) ±533 by kaja-osojnik @ 2025-05-31.

Implement Monaco Editor for highlighting contract source code and bytecode display.

https://pr-1979.oasis-explorer.pages.dev/mainnet/sapphire/address/0x39d22B78A7651A76Ffbde2aaAB5FD92666Aca520/code#code

Before:
Screenshot 2025-05-27 at 16 12 49
Screenshot 2025-05-27 at 16 12 23
After:
Screenshot 2025-05-27 at 16 10 22
Screenshot 2025-05-27 at 16 11 11

CHANGELOG:

Add Monaco Editor for contract source code syntax highlighting

Show address of Node ID (#1962) ±313 by buberdds @ 2025-05-20.

Closes #1955

Node id/addr table
https://pr-1962.oasis-explorer.pages.dev/mainnet/sapphire/rofl/app/rofl1qpdzzm4h73gtes04xjn4whan84s3k33l5gx787l2/instances#instances

Replica details - Endorsing node address
https://pr-1962.oasis-explorer.pages.dev/mainnet/sapphire/rofl/app/rofl1qpdzzm4h73gtes04xjn4whan84s3k33l5gx787l2/instance/SbxH%2FftZHJ29t9xhiPfz6j3Fq%2Byw6E%2F1EqkWZac%2FH7U%3D

Validator details - Node address
https://pr-1962.oasis-explorer.pages.dev/mainnet/consensus/validators/oasis1qqtmpsavs44vz8868p008uwjulfq03pcjswslutz

CHANGELOG:

Show address of Node ID

ROFL app details page fixes (#1960) ±171 by csillag @ 2025-05-24.

Tweak 1: implement page title shortening in table and mobile mode

Before After Comment
image image No change in desktop size
image image Automatic shortening of title at tablet and mobile sizes

Tweak 2: Enable highlighting matching ROFL addresses on mouse hover

(Currently this is only enabled on desktop.)

image

Tweak 3:

Enable tool-tip on shortened app ids:

image

CHANGELOG:

Small tweaks on ROFL add detail pages

Rename ROFL App instances to replicas (#1938) ±121 by buberdds @ 2025-05-05.

Closes #1925

We discussed this offline and decided to call:
ROFL app instances replicas
provider instances machines

CHANGELOG:

Rename ROFL App instances to replicas

Fix a regression in adaptive trimming (#1970) ±115 by csillag @ 2025-05-23.

This is a follow-up to #1963.

(I found a corner case to break it after merging.)

This change add more resilience to the adaptive trimming process in situations when
React components are mounting and unmounting while the process is ongoing.

(Earlier, in some rare circumstances, the process could get stuck.)

Explanation

This is how the adaptive trimming method has evolved

The original method

In the original implementation of the adaptive trimmer, the idea was that we find out the largest fitting length of text by watching for overflow happening on the element directly containing the content to shorten. This requires all the elements further up in the DOM to have exactly the right CSS settings, otherwise the overflow won't happen, or won't happen at the right place. This was a bit fragile, because changing something in the DOM at a higher level could break the adaptive trimming of the contained adaptive trimmers. (Like it happened in #1943)

Relaxing the CSS requirements

To avoid this fragility, the behavior has been changed to look for overflow happening not only on the exact wrapping element, but at any level above this node, that is, on all parents up to the root. (Sometimes there is already overflow even without our text being too long, so first we do a baseline measurement with a very short text, record which is the first level where we find overflow, and then compare the new situation to this saved baseline when experimenting with longer texts.)

This approach makes it unnecessary to add specific CSS configuration to all wrapping levels, therefore makes the system more robust. But there is a problem:

Solving the interplay of multiple adaptive trimmers working at the same time

In the new approach, we let the components resize, and therefore change the layout of a larger sub-tree of the dom, until they hit an overflow. This works fine if there is only one adaptive trimmer doing this, but if multiple adaptive trimmers are doing this at the same time, then the results are unpredictable. (I.e. we won't know which adaptive trimmer has too long text, causing the overflow at an upper level.) The solution to this was adding a singleton controller object, which orchestrates the whole process:

This way, there will be no confusion with the test results, because at each point in time, there is exactly one adaptive trimmer that is attempting to adapt (to the available size). This has been implemented as part of #1963, and solved several issues. But there is one more problem which was not handled...

Solving the interplay of window resizing, component unmounting and ongoing adaptation

When the window is being resized, we get multiple resize events. Reacting to these events, we do a full round of adaptation. This is relatively fast, but not instantaneous. It's possible that we receive multiple events while still busy, but that is not a problem, we can handle that. The tricky situation is when as the result of enlarging the window size, we go over the limit to desktop territory, so we no longer want to do any trimming at all. This causes the adaptive trimmer to be removed from the DOM altogether. The problem happens if the component removed was the one that has the permission from the controller to do the resizing. This means that the resizing of that component never finishes (since it is removed from the DOM altogether), but the controller is still waiting it to finish, before giving the task to the next instance. This basically causes the adaptive process to freeze. This doesn't happen very often, but can triggered by resizing the window a lot. This is the bug that is currently present in the master branch. The solution to this issue is to make the code for selecting the current/next task more robust, and also add some reactive code to handle when the currently active adapting instance is removed. This PR does that.


At this point, no further problems have been detected, and the current mechanism (with this fix) seems to work reliably, but more testing is always welcome.

CHANGELOG:

Fix a regression in adaptive trimming

Merge config files (#1951) ±111 by lukaw3d @ 2025-05-06.

CHANGELOG:

Merge config files

Move dApp URLs into named-addresses (#1952) ±108 by lukaw3d @ 2025-05-06.

Part of #1769
Related oasisprotocol/nexus#991

CHANGELOG:

Move dApp URLs into named-addresses

Display contract Source Code and Contract Metadata fields (#1890) ±105 by kaja-osojnik @ 2025-05-05.

Add RawDataDisplay fields to display Source Code and Contract Metadata in 'Code' tab for verified contracts as displayed in Sourcify.
Fixes: #1881

Before:
Screenshot 2025-04-10 at 18 30 56

After:
Screenshot 2025-04-10 at 18 31 50
Screenshot 2025-04-10 at 18 32 08
Screenshot 2025-04-10 at 18 32 25
Screenshot 2025-04-10 at 18 32 54
Screenshot 2025-04-10 at 18 33 13

CHANGELOG:

Display contract Source Code and Contract Metadata fields

Show first 10 ERC-20 transfers on Transaction details page (#1939) ±105 by kaja-osojnik @ 2025-05-29.

Implementing: #1731

https://pr-1939.oasis-explorer.pages.dev/mainnet/sapphire/tx/0xc0c9511c5233447830d1769876d3fa16b4f6a64c89309e775ad1c3cb5e96992c

https://pr-1939.oasis-explorer.pages.dev/mainnet/sapphire/tx/0x9ce91f01d822bb4144de04ad4fce4711eb005c7d2824bfe38f670bf2916727ca

Before:
Screenshot 2025-05-05 at 13 02 17

After:
Screenshot 2025-05-05 at 13 01 30

CHANGELOG:

Show first 10 ERC-20 and ERC-721 transfers on transaction details page.

Fix RoundedBalance prop combinations (#1902) ±86 by lukaw3d @ 2025-05-19.

CHANGELOG:

Fix RoundedBalance prop combinations

Assemble changes for 1.21.0 release (#1968) ±80 by buberdds @ 2025-05-21.
Basic support for searching for ROFL apps by app name fragment (#1973) ±69 by csillag @ 2025-05-28.

This is built on top of #1960.

Suggested test URLs:

Closes #1969.

CHANGELOG:

Basic support for searching for ROFL apps by app name fragment

Inline copy button next to some account links using AdaptiveTrimmer (#1998) ±65 by lukaw3d @ 2025-05-30.

Improves #1943 (comment)

CHANGELOG:

Inline copy button next to some account links using AdaptiveTrimmer

Sanitize URL in metadata['net.oasis.rofl.repository'] (#1965) ±39 by lukaw3d @ 2025-05-19.

CHANGELOG:

Sanitize URL in metadata['net.oasis.rofl.repository']

Update API bindings (#1836) ±38 by github-actions[bot] @ 2025-05-16.

Created by https://github.com/oasisprotocol/explorer/blob/master/.github/workflows/generate-openapi.yml

If CI actions and checks don't run in this PR: close it and reopen.
https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs

CHANGELOG:

Follow Nexus API changes

Fix details view wrapping on mobile (#1974) ±37 by lukaw3d @ 2025-05-22.

Fixes #1907
image

CHANGELOG:

Fix details view wrapping on mobile

Adaptive trimmer: don't react to window height change (#2000) ±34 by csillag @ 2025-05-30.

Also, separate the event handler from the reactive logic.

This solves #1535, based on a suggestion by @lukaw3d.

CHANGELOG:

Avoid twitching on window height changes

Show contract entry file as the first file (#1944) ±28 by lukaw3d @ 2025-05-06.

Improvements to #1890

CHANGELOG:

Display contract Source Code and Contract Metadata fields

Make token icons larger (#1945) ±28 by lukaw3d @ 2025-05-06.

Part of #1769

image

CHANGELOG:

Make token icons larger

Prevent WithHighlighting from taking up more space than original (#1997) ±26 by lukaw3d @ 2025-05-30.

CHANGELOG:

Prevent WithHighlighting from taking up more space than original

Bump @oasisprotocol dependencies (#1958) ±24 by buberdds @ 2025-05-14.

Needed for #1955

CHANGELOG:

Update dependencies

Use parcel-transformer-env-variables-injection instead of plasmohq (#1947) ±23 by lukaw3d @ 2025-05-06.

CHANGELOG:

Use parcel-transformer-env-variables-injection instead of plasmohq

Speedup CI: use playwright container instead of installing system deps (#1956) ±21 by lukaw3d @ 2025-05-22.

Same as oasisprotocol/wallet@eb3bb1d

Before:
2m 21s
2m 31s
2m 34s
4m 0s
3m 19s

After:
2m 51s
2m 7s
3m 13s
2m 1s

CHANGELOG:

Speedup CI: use playwright container instead of installing system deps

Migrate Cloudflare preview deploys to wrangler action (#1990) ±19 by buberdds @ 2025-05-30.

https://github.com/cloudflare/pages-action was archived on Oct 21, 2024

CHANGELOG:

Migrate Cloudflare preview deploys to wrangler action

Deduplicate contracts that are also tokens in search results (#1948) ±16 by lukaw3d @ 2025-05-06.

Clearer multiple results:
https://explorer.dev.oasis.io/search?q=ocean%20token
Screenshot from 2025-05-06 02-53-03

Single result now auto-redirects:
https://explorer.dev.oasis.io/search?q=Midas%20US%20Treasury
Screenshot from 2025-05-06 02-52-06

CHANGELOG:

Deduplicate contracts that are also tokens in search results

Fix LinkableDiv getting covered by sticky header (#1953) ±10 by lukaw3d @ 2025-05-22.

Fixes #1950

CHANGELOG:

Fix LinkableDiv getting covered by sticky header

Fix upside down staking trends (#1946) ±8 by lukaw3d @ 2025-05-06.

It was using string values and alphabetically sorting to determine min-max axis.

Fixes #1940

CHANGELOG:

Fix upside down staking trends

Restrict hover-based address highlighting to desktop (#1961) ±8 by csillag @ 2025-05-21.

@donouwens has confirmed that the feature when we highlight all matching addresses on mouse hover should be restricted to desktop.

Currently this decision is not consistently applied.

This change makes sure that this feature is always deactivated on tablet or mobile.

Before After