Skip to content

Commit bfb1adb

Browse files
committed
more ui tweaks
1 parent 7c25cc5 commit bfb1adb

12 files changed

Lines changed: 479 additions & 259 deletions

File tree

.editorconfig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[*.{cs,vb}]
2+
3+
# IDE0009: Member access should be qualified.
4+
dotnet_diagnostic.IDE0009.severity = none

HomeSpeaker.Server2/HomeSpeaker.Server2.csproj

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,40 +19,40 @@
1919
<Protobuf Include="Protos\greet.proto" GrpcServices="Server" />
2020
</ItemGroup>
2121
<ItemGroup>
22-
<PackageReference Include="CliWrap" Version="3.8.2" />
22+
<PackageReference Include="CliWrap" Version="3.10.1" />
2323
<PackageReference Include="JsonExtensions" Version="1.2.0" />
24-
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="10.0.0" />
25-
<PackageReference Include="Grpc.AspNetCore" Version="2.67.0" />
26-
<PackageReference Include="Grpc.AspNetCore.Web" Version="2.67.0" />
24+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="10.0.5" />
25+
<PackageReference Include="Grpc.AspNetCore" Version="2.76.0" />
26+
<PackageReference Include="Grpc.AspNetCore.Web" Version="2.76.0" />
2727
<PackageReference Include="ID3" Version="0.6.0" />
28-
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.0">
28+
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.5">
2929
<PrivateAssets>all</PrivateAssets>
3030
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3131
</PackageReference>
32-
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0" />
33-
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="10.0.0" />
32+
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.5" />
33+
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="10.0.5" />
3434
<PackageReference Include="Microsoft.Fast.Components.FluentUI" Version="3.8.0" />
35-
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.21.2" />
36-
<PackageReference Include="OpenTelemetry.Api" Version="1.12.0" />
37-
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.12.0" />
38-
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.12.0" />
39-
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.12.0" />
40-
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.12.0" />
35+
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.23.0" />
36+
<PackageReference Include="OpenTelemetry.Api" Version="1.15.0" />
37+
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.15.0" />
38+
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.0" />
39+
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.15.0" />
40+
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.1" />
4141
<PackageReference Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.10.0-beta.1" />
4242
<PackageReference Include="OpenTelemetry.Instrumentation.GrpcNetClient" Version="1.10.0-beta.1" />
43-
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.12.0" />
43+
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.15.0" />
4444
<PackageReference Include="OpenTelemetry.Instrumentation.Process" Version="1.10.0-beta.1" />
45-
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.12.0" />
46-
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
45+
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.15.0" />
46+
<PackageReference Include="Serilog.AspNetCore" Version="10.0.0" />
4747
<PackageReference Include="Serilog.Exceptions" Version="8.4.0" />
4848
<PackageReference Include="Serilog.Sinks.Seq" Version="9.0.0" />
4949
<PackageReference Include="TagLibSharp" Version="2.3.0" />
50-
<PackageReference Include="Workleap.DotNet.CodingStandards" Version="1.1.23">
50+
<PackageReference Include="Workleap.DotNet.CodingStandards" Version="1.2.2">
5151
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
5252
<PrivateAssets>all</PrivateAssets>
5353
</PackageReference>
54-
<PackageReference Include="YoutubeExplode" Version="6.5.4" />
55-
<PackageReference Include="YoutubeExplode.Converter" Version="6.5.4" />
54+
<PackageReference Include="YoutubeExplode" Version="6.5.7" />
55+
<PackageReference Include="YoutubeExplode.Converter" Version="6.5.7" />
5656
</ItemGroup>
5757
<ItemGroup>
5858
<ProjectReference Include="..\HomeSpeaker.Shared\HomeSpeaker.Shared.csproj" />

HomeSpeaker.Server2/Services/YoutubeService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ public async Task CacheVideoAsync(string id, string title, IProgress<double> pro
6363
destinationPath = Path.Combine(destinationPath, fileName);
6464
var ffmpegLocation = _config[ConfigKeys.FFMpegLocation] ?? throw new Exception("Missing ffmeg path in config: " + ConfigKeys.FFMpegLocation);
6565

66-
_logger.LogInformation("Beginning to cache {title}", title);
66+
_logger.LogInformation("Beginning to cache {Title}", title);
6767

68-
await _client.Videos.DownloadAsync(VideoId.Parse(id), new ConversionRequest(ffmpegLocation, destinationPath, Container.Mp3, ConversionPreset.Medium), progress);
68+
await _client.Videos.DownloadAsync(VideoId.Parse(id), new ConversionRequest(ffmpegLocation, destinationPath, new ConversionFormat("mp3"), ConversionPreset.Medium), progress);
6969

7070
try
7171
{
@@ -79,7 +79,7 @@ public async Task CacheVideoAsync(string id, string title, IProgress<double> pro
7979
// Media tagging is not critical
8080
}
8181

82-
_logger.LogInformation("Finished caching {title}. Saved to {destination}", title, destinationPath);
82+
_logger.LogInformation("Finished caching {Title}. Saved to {Destination}", title, destinationPath);
8383
}
8484

8585
public void Dispose()

HomeSpeaker.Shared/HomeSpeaker.Shared.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
<NoWarn>$(NoWarn);CS0169;CS0414;CS8618;CS8604;CS8600;CS8602;CS8603;CS4014;CS1998;SYSLIB0051;IDE0009;IDE0044;IDE0005;IDE0161;IDE0130;IDE1006;IDE2001;IDE2000;IDE0055;IDE0040;IDE2003;IDE0007;IDE0011;IDE0004;IDE2002;IDE0059;SA1649;CA1003;CA1063;CA1065;CA1725;CA1805;CA1816;CA1823;CA1826;CA1836;CA1849;CA1852;CA1854;CA1861;CA1869;CA2012;CA2016;CA2052;CA2254;MA0134;RS0030</NoWarn>
1212
</PropertyGroup>
1313
<ItemGroup>
14-
<PackageReference Include="Google.Protobuf" Version="3.29.3" />
15-
<PackageReference Include="Grpc.Net.Client" Version="2.67.0" />
16-
<PackageReference Include="Grpc.Tools" Version="2.52.0">
14+
<PackageReference Include="Google.Protobuf" Version="3.34.1" />
15+
<PackageReference Include="Grpc.Net.Client" Version="2.76.0" />
16+
<PackageReference Include="Grpc.Tools" Version="2.78.0">
1717
<PrivateAssets>all</PrivateAssets>
1818
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1919
</PackageReference>
20-
<PackageReference Include="Workleap.DotNet.CodingStandards" Version="1.1.23">
20+
<PackageReference Include="Workleap.DotNet.CodingStandards" Version="1.2.2">
2121
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2222
<PrivateAssets>all</PrivateAssets>
2323
</PackageReference>

HomeSpeaker.WebAssembly/Components/Layout/MainLayout.razor

Lines changed: 59 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<div class="page-container">
88
<!-- Desktop: Traditional sidebar layout -->
9-
<div class="sidebar bg-secondary hs-sidebar">
9+
<div class="sidebar hs-sidebar">
1010
<NavMenu />
1111
</div>
1212

@@ -66,103 +66,128 @@
6666
min-height: 100vh;
6767
flex-direction: column;
6868
}
69-
69+
7070
.main-content {
7171
flex: 1;
7272
width: 100%;
73-
padding-bottom: 80px; /* Space for bottom nav on mobile */
73+
padding-bottom: 80px;
74+
background-color: var(--hs-bg-primary);
7475
}
75-
76-
/* Bottom Navigation Bar - Touch Optimized */
76+
77+
/* Bottom Navigation — frosted glass */
7778
.bottom-nav {
7879
position: fixed;
7980
bottom: 0;
8081
left: 0;
8182
right: 0;
8283
height: 70px;
83-
background-color: var(--hs-bg-secondary);
84-
border-top: 1px solid rgba(255, 255, 255, 0.1);
84+
background: rgba(8, 8, 16, 0.82);
85+
backdrop-filter: blur(28px) saturate(180%);
86+
-webkit-backdrop-filter: blur(28px) saturate(180%);
87+
border-top: 1px solid rgba(201, 152, 90, 0.1);
8588
justify-content: space-around;
8689
align-items: center;
8790
z-index: 1000;
88-
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.3);
91+
box-shadow: 0 -12px 40px rgba(0, 0, 0, 0.6);
8992
}
90-
93+
9194
.bottom-nav-item {
9295
display: flex;
9396
flex-direction: column;
9497
align-items: center;
9598
justify-content: center;
96-
gap: 4px;
99+
gap: 3px;
97100
min-width: 56px;
98101
min-height: 56px;
99102
padding: 8px;
100-
color: var(--hs-text-secondary);
103+
color: var(--hs-text-muted);
101104
text-decoration: none;
102-
font-size: 0.75rem;
103-
font-weight: 500;
105+
font-family: 'Syne', sans-serif;
106+
font-size: 0.6rem;
107+
font-weight: 600;
108+
letter-spacing: 0.1em;
109+
text-transform: uppercase;
104110
transition: all 0.2s ease;
105111
border-radius: var(--hs-radius-sm);
106112
background: none;
107113
border: none;
108114
cursor: pointer;
109115
}
110-
116+
111117
.bottom-nav-item i {
112-
font-size: 1.5rem;
118+
font-size: 1.25rem;
119+
transition: all 0.2s ease;
113120
}
114-
121+
115122
.bottom-nav-item:active {
116-
background-color: var(--hs-hover-bg);
117123
color: var(--hs-primary);
118-
transform: scale(0.95);
119124
}
120-
125+
126+
.bottom-nav-item:active i {
127+
transform: scale(1.2);
128+
}
129+
121130
.bottom-nav-item.active {
122131
color: var(--hs-primary);
123132
}
124-
133+
125134
/* Mobile Menu Overlay */
126135
.mobile-menu-overlay {
127136
position: fixed;
128137
top: 0;
129138
left: 0;
130139
right: 0;
131140
bottom: 0;
132-
background-color: rgba(0, 0, 0, 0.7);
141+
background-color: rgba(0, 0, 0, 0.75);
142+
backdrop-filter: blur(4px);
133143
z-index: 2000;
134144
display: flex;
135145
align-items: flex-end;
136146
}
137-
147+
138148
.mobile-menu {
139149
width: 100%;
140150
max-height: 80vh;
141-
background-color: var(--hs-bg-secondary);
142-
border-radius: var(--hs-radius-lg) var(--hs-radius-lg) 0 0;
151+
background: linear-gradient(180deg, #1C1C2E 0%, #13131F 100%);
152+
border-top: 1px solid rgba(201, 152, 90, 0.15);
153+
border-radius: 24px 24px 0 0;
143154
overflow-y: auto;
144155
-webkit-overflow-scrolling: touch;
156+
box-shadow: 0 -16px 60px rgba(0, 0, 0, 0.8);
145157
}
146-
158+
147159
.mobile-menu-header {
148160
display: flex;
149161
justify-content: space-between;
150162
align-items: center;
151163
padding: var(--hs-space-lg);
152-
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
164+
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
153165
position: sticky;
154166
top: 0;
155-
background-color: var(--hs-bg-secondary);
167+
background: linear-gradient(180deg, #1C1C2E 0%, rgba(28, 28, 46, 0.95) 100%);
168+
backdrop-filter: blur(12px);
156169
z-index: 1;
157170
}
158-
171+
172+
.mobile-menu-header h3 {
173+
font-family: 'Syne', sans-serif;
174+
font-size: 0.75rem;
175+
font-weight: 700;
176+
letter-spacing: 0.2em;
177+
text-transform: uppercase;
178+
color: var(--hs-text-muted);
179+
margin: 0;
180+
}
181+
159182
.mobile-menu-content {
160183
padding: var(--hs-space-md);
161184
}
162-
185+
163186
/* Sidebar: hidden on mobile, shown on desktop */
164187
.hs-sidebar {
165188
display: none;
189+
background: linear-gradient(180deg, var(--hs-bg-secondary) 0%, var(--hs-bg-primary) 100%);
190+
border-right: 1px solid rgba(255, 255, 255, 0.04);
166191
}
167192
168193
/* Bottom nav: shown on mobile, hidden on desktop */
@@ -179,17 +204,18 @@
179204
.hs-bottom-nav {
180205
display: none !important;
181206
}
207+
182208
.page-container {
183209
flex-direction: row;
184210
}
185-
211+
186212
.main-content {
187213
padding-bottom: 0;
188214
}
189-
215+
190216
.sidebar {
191-
min-width: 280px;
192-
max-width: 280px;
217+
min-width: 275px;
218+
max-width: 275px;
193219
}
194220
}
195221
</style>

0 commit comments

Comments
 (0)