2025-05-04 14:59:30 +02:00
using AIStudio.Tools.PluginSystem ;
2024-12-03 21:02:37 +01:00
namespace AIStudio.Settings.DataModel ;
2025-02-15 15:41:12 +01:00
public static class PreviewFeaturesExtensions
2024-12-03 21:02:37 +01:00
{
2025-05-04 14:59:30 +02:00
private static string TB ( string fallbackEN ) => I18N . I . T ( fallbackEN , typeof ( PreviewFeaturesExtensions ). Namespace , nameof ( PreviewFeaturesExtensions ));
2024-12-03 21:02:37 +01:00
public static string GetPreviewDescription ( this PreviewFeatures feature ) => feature switch
{
2025-05-04 14:59:30 +02:00
PreviewFeatures . PRE_WRITER_MODE_2024 => TB ( "Writer Mode: Experiments about how to write long texts using AI" ),
PreviewFeatures . PRE_RAG_2024 => TB ( "RAG: Preview of our RAG implementation where you can refer your files or integrate enterprise data within your company" ),
2025-05-02 23:09:50 +02:00
2025-05-04 14:59:30 +02:00
PreviewFeatures . PRE_PLUGINS_2025 => TB ( "Plugins: Preview of our plugin system where you can extend the functionality of the app" ),
PreviewFeatures . PRE_READ_PDF_2025 => TB ( "Read PDF: Preview of our PDF reading system where you can read and extract text from PDF files" ),
2025-11-24 12:37:18 +01:00
PreviewFeatures . PRE_DOCUMENT_ANALYSIS_2025 => TB ( "Document Analysis: Preview of our document analysis system where you can analyze and extract information from documents" ),
2026-05-16 19:13:27 +02:00
PreviewFeatures . PRE_SPEECH_TO_TEXT_2026 => TB ( "Transcription: Convert recordings and audio files into text" ),
2026-07-05 17:48:00 +02:00
PreviewFeatures . PRE_META_ASSISTANT_V1 => TB ( "Assistant Builder: Generate and install assistant plugins" ),
2026-08-02 21:41:12 +02:00
PreviewFeatures . PRE_VISUAL_BRIEFING_ASSISTANT_2026 => TB ( "Visual Briefing Assistant: Turn source material into an interactive briefing" ),
2024-12-03 21:02:37 +01:00
2025-05-04 14:59:30 +02:00
_ => TB ( "Unknown preview feature" )
2024-12-03 21:02:37 +01:00
};
2025-05-18 13:50:53 +02:00
/// <summary>
/// Check if the preview feature is released or not.
/// </summary>
/// <remarks>
/// This metadata is necessary because we cannot remove the enum values from the list.
/// Otherwise, we could not deserialize old settings files that may contain these values.
/// </remarks>
/// <param name="feature">The preview feature to check.</param>
/// <returns>True when the preview feature is released, false otherwise.</returns>
public static bool IsReleased ( this PreviewFeatures feature ) => feature switch
{
PreviewFeatures . PRE_READ_PDF_2025 => true ,
2025-05-31 12:04:58 +02:00
PreviewFeatures . PRE_PLUGINS_2025 => true ,
2026-03-21 13:14:12 +01:00
PreviewFeatures . PRE_DOCUMENT_ANALYSIS_2025 => true ,
2026-05-16 19:13:27 +02:00
PreviewFeatures . PRE_SPEECH_TO_TEXT_2026 => true ,
2025-05-31 12:04:58 +02:00
2025-05-18 13:50:53 +02:00
_ => false
};
public static bool IsEnabled ( this PreviewFeatures feature , SettingsManager settingsManager )
{
if ( feature . IsReleased ())
return true ;
return settingsManager . ConfigurationData . App . EnabledPreviewFeatures . Contains ( feature );
}
2026-08-02 21:41:12 +02:00
}