diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 2a82bf3..756c0a6 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -9,7 +9,8 @@
"build",
"${workspaceFolder}/EmoTracker.sln",
"/property:GenerateFullPaths=true",
- "/consoleloggerparameters:NoSummary"
+ "/consoleloggerparameters:NoSummary",
+ "/p:EmoTrackerRegularBuild=1"
],
"problemMatcher": "$msCompile",
"group": {
@@ -29,8 +30,10 @@
"--configuration",
"Debug",
"/property:GenerateFullPaths=true",
- "/consoleloggerparameters:NoSummary"
+ "/consoleloggerparameters:NoSummary",
+ "/p:EmoTrackerRegularBuild=1"
],
+
"problemMatcher": "$msCompile"
},
{
@@ -45,8 +48,10 @@
"--configuration",
"Release",
"/property:GenerateFullPaths=true",
- "/consoleloggerparameters:NoSummary"
+ "/consoleloggerparameters:NoSummary",
+ "/p:EmoTrackerRegularBuild=1"
],
+
"problemMatcher": "$msCompile"
},
{
@@ -59,8 +64,10 @@
"--configuration",
"Release",
"/property:GenerateFullPaths=true",
- "/consoleloggerparameters:NoSummary"
+ "/consoleloggerparameters:NoSummary",
+ "/p:EmoTrackerRegularBuild=1"
],
+
"problemMatcher": "$msCompile"
},
{
diff --git a/EmoTracker.SourceGenerators/EmoTracker.SourceGenerators.csproj b/EmoTracker.SourceGenerators/EmoTracker.SourceGenerators.csproj
index 6168791..b649810 100644
--- a/EmoTracker.SourceGenerators/EmoTracker.SourceGenerators.csproj
+++ b/EmoTracker.SourceGenerators/EmoTracker.SourceGenerators.csproj
@@ -23,6 +23,24 @@
$(NoWarn);RS2008
+
+
+ bin\$(Configuration)-build\$(TargetFramework)\
+
+
diff --git a/EmoTracker.UI/Converters/VisibilityConverters.cs b/EmoTracker.UI/Converters/VisibilityConverters.cs
index a2c5b4b..11d19a5 100644
--- a/EmoTracker.UI/Converters/VisibilityConverters.cs
+++ b/EmoTracker.UI/Converters/VisibilityConverters.cs
@@ -61,6 +61,22 @@ public object ConvertBack(object value, Type targetType, object parameter, Cultu
=> throw new NotSupportedException();
}
+ ///
+ /// Returns 0.0 (zero height) when the value is null or empty; otherwise returns
+ /// Double.PositiveInfinity (no maximum). Use for MaxHeight bindings on badge overlays
+ /// that should have zero layout footprint when there is no badge text, preventing the
+ /// invisible badge from inflating the parent container's measured height while keeping
+ /// data bindings active (avoiding the blank-text flash that IsVisible can cause).
+ ///
+ public class NonEmptyStringToMaxHeightConverter : Singleton, IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ => value is string s && s.Length > 0 ? double.PositiveInfinity : 0.0;
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ => throw new NotSupportedException();
+ }
+
///
/// Returns true when the integer/uint value is non-zero.
///
diff --git a/EmoTracker/UI/TrackableItemControl.axaml b/EmoTracker/UI/TrackableItemControl.axaml
index 355b732..e6d5c6f 100644
--- a/EmoTracker/UI/TrackableItemControl.axaml
+++ b/EmoTracker/UI/TrackableItemControl.axaml
@@ -63,6 +63,7 @@