From 20230684a9e85f37067f56be385a996d92ff88a8 Mon Sep 17 00:00:00 2001 From: flemming-it Date: Tue, 5 May 2026 22:51:19 +0200 Subject: [PATCH] =?UTF-8?q?fix(ui):=20visible=20=E2=88=86=20pulse=20+=20dr?= =?UTF-8?q?op=20internal=20codename=20from=20version=20line?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two issues from live feedback: 1. The version label said "v0.7.1 · warm-minimalism". The suffix is an internal design-direction codename, not user-facing. Drop it — the line now just reads "v0.7.2". 2. The ∆ pulse in live mode used only alpha + blur, which is too subtle to register at first glance. Replace with a real scale-pulse: the whole mark grows from 0.85x → 1.15x → 0.85x over 1.6s. Glow halo blur range expanded (8→22) and alpha range widened. The triangle also gets a soft fill on the up-beat. Easy to spot from across the room. Bumps fai_studio 0.7.1 -> 0.7.2. Signed-off-by: flemming-it --- lib/main.dart | 4 ++-- lib/widgets/fai_delta_mark.dart | 28 ++++++++++++++++++++-------- pubspec.yaml | 2 +- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 7d0a9bb..161f544 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -19,7 +19,7 @@ import 'widgets/widgets.dart'; /// Studio's own build version. Bump on every UI commit so the /// running app self-identifies — visible in the sidebar header /// and quick-glance proof that you're seeing the current build. -const String kStudioVersion = '0.7.1'; +const String kStudioVersion = '0.7.2'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -225,7 +225,7 @@ class _Sidebar extends StatelessWidget { ), const SizedBox(height: 2), Text( - 'v$kStudioVersion · warm-minimalism', + 'v$kStudioVersion', style: FaiTheme.mono( size: 10, color: theme.colorScheme.primary, diff --git a/lib/widgets/fai_delta_mark.dart b/lib/widgets/fai_delta_mark.dart index 7c66387..604488e 100644 --- a/lib/widgets/fai_delta_mark.dart +++ b/lib/widgets/fai_delta_mark.dart @@ -112,7 +112,11 @@ class _DeltaPainter extends CustomPainter { void paint(Canvas canvas, Size size) { final cx = size.width / 2; final cy = size.height / 2; - final r = size.width * 0.42; + + // In live mode: scale the whole mark between 0.85 and 1.15 + // so the pulse is visible without staring. Idle stays at 1.0. + final scale = mode == FaiDeltaMode.live ? 0.85 + 0.30 * t : 1.0; + final r = size.width * 0.36 * scale; canvas.save(); canvas.translate(cx, cy); @@ -127,31 +131,39 @@ class _DeltaPainter extends CustomPainter { ..lineTo(-r * cos(pi / 6), r * sin(pi / 6)) ..close(); - // Glow halo for live / busy mode. + // Glow halo. In live mode the glow ring grows with the pulse + // and the alpha breathes harder. if (mode != FaiDeltaMode.idle) { final pulseStrength = mode == FaiDeltaMode.live ? t : 1.0; final glow = Paint() - ..color = color.withValues(alpha: 0.25 + 0.25 * pulseStrength) + ..color = color.withValues(alpha: 0.30 + 0.40 * pulseStrength) ..maskFilter = - MaskFilter.blur(BlurStyle.normal, 6 + 6 * pulseStrength) + MaskFilter.blur(BlurStyle.normal, 8 + 14 * pulseStrength) ..style = PaintingStyle.fill; canvas.drawPath(path, glow); } + // Filled triangle, brighter on the up-beat for live mode. + final fillAlpha = mode == FaiDeltaMode.live ? 0.15 + 0.20 * t : 0.18; + final fill = Paint() + ..color = color.withValues(alpha: fillAlpha) + ..style = PaintingStyle.fill; + canvas.drawPath(path, fill); + // Outline stroke. final stroke = Paint() ..color = color - ..strokeWidth = 2 + ..strokeWidth = 2.2 ..style = PaintingStyle.stroke ..strokeJoin = StrokeJoin.round; canvas.drawPath(path, stroke); - // Inner accent dot — pulses opacity in live mode. - final dotAlpha = mode == FaiDeltaMode.live ? 0.4 + 0.6 * t : 1.0; + // Inner accent dot. + final dotAlpha = mode == FaiDeltaMode.live ? 0.55 + 0.45 * t : 1.0; final dot = Paint() ..color = color.withValues(alpha: dotAlpha) ..style = PaintingStyle.fill; - canvas.drawCircle(Offset(0, r * 0.15), r * 0.14, dot); + canvas.drawCircle(Offset(0, r * 0.18), r * 0.16, dot); canvas.restore(); } diff --git a/pubspec.yaml b/pubspec.yaml index 5cf6026..c74ed6d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: fai_studio description: "F∆I Studio — desktop GUI for the F∆I hub" publish_to: 'none' -version: 0.7.1 +version: 0.7.2 environment: sdk: ^3.11.0-200.1.beta