@@ -16,21 +16,43 @@ export function UpcomingFeatures() {
1616 return null ;
1717 }
1818
19- const filteredFeatures = ( FEATURES as FeatureInfoType [ ] ) . filter ( ( feature : FeatureInfoType ) => {
20- switch ( cluster ) {
21- case Cluster . MainnetBeta :
22- // Show features activated on devnet and testnet
23- return feature . devnetActivationEpoch !== null && feature . testnetActivationEpoch !== null ;
24- case Cluster . Devnet :
25- // Show features activated on testnet, mark if already activated on devnet
26- return feature . testnetActivationEpoch !== null ;
27- case Cluster . Testnet :
28- // Only show features not yet activated on testnet
29- return feature . testnetActivationEpoch === null ;
30- default :
31- return false ;
32- }
33- } ) ;
19+ const filteredFeatures = ( FEATURES as FeatureInfoType [ ] )
20+ . filter ( ( feature : FeatureInfoType ) => {
21+ switch ( cluster ) {
22+ case Cluster . MainnetBeta :
23+ // Show features activated on devnet and testnet
24+ return feature . devnetActivationEpoch !== null && feature . testnetActivationEpoch !== null ;
25+ case Cluster . Devnet :
26+ // Show features activated on testnet, mark if already activated on devnet
27+ return feature . testnetActivationEpoch !== null ;
28+ case Cluster . Testnet :
29+ // Only show features not yet activated on testnet
30+ return feature . testnetActivationEpoch === null ;
31+ default :
32+ return false ;
33+ }
34+ } )
35+ . sort ( ( a , b ) => {
36+ // Helper function to check if a feature is activated on current cluster
37+ const isActivated = ( feature : FeatureInfoType ) => {
38+ switch ( cluster ) {
39+ case Cluster . MainnetBeta :
40+ return feature . mainnetActivationEpoch !== null ;
41+ case Cluster . Devnet :
42+ return feature . devnetActivationEpoch !== null ;
43+ case Cluster . Testnet :
44+ return feature . testnetActivationEpoch !== null ;
45+ default :
46+ return false ;
47+ }
48+ } ;
49+
50+ // Sort activated features to end while preserving existing ordering
51+ const aActivated = isActivated ( a ) ;
52+ const bActivated = isActivated ( b ) ;
53+ if ( aActivated === bActivated ) return 0 ;
54+ return aActivated ? 1 : - 1 ;
55+ } ) ;
3456
3557 if ( filteredFeatures . length === 0 ) {
3658 return null ;
0 commit comments