boolean (@NotNull BuildNumber current, boolean majorEap) { UpdateSettings settings = UpdateSettings.getInstance(); int lastShownFor = settings.getWhatsNewShownFor(); if (lastShownFor == 0) { // migration from `PropertiesComponent`; safe to drop around 2024.2 String fallbackProperty = "ide.updates.whats.new.shown.for"; PropertiesComponent properties = PropertiesComponent.getInstance(); lastShownFor = properties.getInt(fallbackProperty, 0); if (lastShownFor != 0) { properties.unsetValue(fallbackProperty); settings.setWhatsNewShownFor(lastShownFor); } } if (lastShownFor == 0) { // this ensures that the "what's new" page is shown _only_ for users who have updated from a previous version // (to detect updates, the method relies on imported settings; users starting from scratch are out of luck) settings.setWhatsNewShownFor(current.getBaselineVersion()); return false; } if (!majorEap && lastShownFor < current.getBaselineVersion()) { Product product = loadProductData(); if (product != null) { // checking whether the actual "what's new" page is relevant to the current release int lastRelease = product.getChannels().stream() .filter(channel -> channel.getLicensing() == UpdateChannel.Licensing.RELEASE && channel.getStatus() == ChannelStatus.RELEASE) .flatMap(channel -> channel.getBuilds().stream()) .mapToInt(build -> build.getNumber().getBaselineVersion()) .max().orElse(0); if (lastRelease == current.getBaselineVersion()) { settings.setWhatsNewShownFor(current.getBaselineVersion()); return true; } } } return false; }