Website Rebuild & Patch Notes
Copyright Notice: This article is an original work licensed under the CC 4.0 BY-NC-ND license.
If you wish to repost this article, please include the original source link and this copyright notice.
Source link: https://v2know.com/article/1103
After months of planning and development, I'm excited to share the fully rebuilt version of my website. This update marks a major shift in both design and architecture — moving away from the legacy ASP.NET Core 2.1 MVC framework to a modern .NET 8 Blazor Web App, combining both Blazor Server and WebAssembly.
In this post, I’ll highlight the key changes, fixes, and improvements made in March 2025. Whether you're here to see what’s new or you're curious about the technical migration process, this summary should give you a clear overview of what’s been done — and why.
July 13, 2025
π¦ Release: MidβYear UX and Performance Update
π Unified Time Display in JST + Local Tooltip
– Standardized all <time>
elements across posts and feeds to show JST
– On hover, users see their local time via localizeTimeTitles()
in articlePageHelper.js
– Ensures consistent cross-timezone readability
πΌοΈ Image Enhancements for a Smoother Experience
– Click-to-zoom functionality for post images
– Smooth scaling animations and support for captions
– Implemented in articlePageHelper.js
initialization logic
π§Ή Frontend Cleanup and UI Simplification
– Removed background matrix animation and obsolete scripts
– Replaced site slogan with “Clarity over complexity.” in TopNav.razor
– Sidebar clock and metrics displays removed for clarity
π RSS & Sitemap Optimization
– Now fully cached for better performance
– Switched to AsNoTracking()
queries to reduce EF Core overhead
– Endpoints streamlined in Program.cs
π Removed Visitor Tracking and System Metrics
– Deleted unused metrics services and SystemMetricsService
hooks
– Resulted in ~1,500 LOC removed and faster page load times
π± Mobile Improvements
– Fixed sidebar overlay behavior and improved swipe handling
– Removed obstructive elements on mobile (e.g., floating clocks)
β Result: A cleaner, faster, and more intuitive browsing experience — reflecting a core philosophy of clarity over complexity.
April 25, 2025
Enhancement: Layout & SPA Navigation Polish
π§± Simplified MainLayout.razor – Removed redundant @inject
and @using
– Limited layout scope to essential blocks: BackGround
, TopNav
, Sidebar
, and @Body
π Enabled Smooth SPA Route Transitions – Captured pushState
& popstate
in app.razor
– Smooth-scrolled .spa-navigate
elements into view using scrollTo({ top: 0, behavior: 'smooth' })
– Trimmed boilerplate from app.css
, favicon
, and layout <head>
π§Ή Chore Cleanup: FrontendLayout – Removed stale IDbContextFactory
injection – Ensured clean separation of layout concerns
π¦ Refactored Pagination Scrolling Behavior – Moved scroll logic to CyberPagination.razor
via Js.InvokeVoidAsync("window.scrollTo")
– Isolated scroll behavior to PaginatedArticleList
’s OnPageChange
, ensuring only one scroll per navigation – Leaner CyberPagination
: focuses only on pageIndex
and event handling
β Result: Streamlined layout rendering, smoother client-side routing, and more maintainable pagination logic
April 20, 2025
Fix: Sidebar Resource Leak & Metrics Overhead
π Refactored SystemMetricsService
– Switched to Subscribe/Unsubscribe
model
– Timer runs only when active subscribers exist
π§Ή Cleaned up Sidebar.razor
lifecycle
– Implemented IDisposable
to unsubscribe from metrics
– Removed StateHasChanged()
from metrics callback
– Disposed DotNetObjectReference
and JS intervals on unmount
π§ Hardened sidebarInterop.js
– Made initialize()
idempotent
– Added dispose()
to release timers, handlers, and animations
β Result: No JS/SignalR accumulation, stable CPU usage across page views
April 18, 2025
π§ Fix: Blazor Server CPU Leak & Circuit Cleanup
π§ Added DisconnectedCircuitRetentionPeriod
to auto-release inactive circuits after 30s
π§Ή Implemented IDisposable
in .razor to unsubscribe from SystemMetricsService
π Disposed DotNetObjectReference
to prevent JSInterop handle leaks
π¬ Clarified that HubOptions
≠ CircuitOptions
π Prepared TrackingCircuitHandler
(optional) for circuit monitoring endpoint
April 7, 2025
βοΈ Refactor: Removed Ineffective HTTP 404 StatusCode Assignments
π« Removed HttpContext.Response.StatusCode = 404
from Article
, Category
, and Archive
pages
π§ Blazor Server doesn't support setting HTTP status codes via SignalR-rendered components
π 404 handling is now fully managed via IsNotFound
+ conditional rendering
β Prevents false assumptions and better aligns with Blazor Server architecture
April 4, 2025
Feat: Cyberpunk Blockquote & Inline Code Styling
π¦ Added blockquote style with neon cyan border, glow background, and flicker animation
π» Applied cyberpunk theme to inline code: neon blue text, black background, glow effect
π Unified inline code using code:not(pre code) for clarity
π§± Preserved pre > code block style (dark background + green border)
π‘οΈ Highlight.js and copy button styles remain unchanged
April 1, 2025
Fix: Increased client_max_body_size
to resolve upload failure
π§ Updated Nginx server block to include client_max_body_size 100M;
directive
π« Resolved 413 Request Entity Too Large
error during file upload
π Now supports uploading larger files via /upload/download
endpoint without server rejection
π§© Confirmed that the issue was caused by Nginx request size limit, unrelated to SignalR settings
March 31, 2025
Fix: Added @rendermode InteractiveServer for proper form data binding
- π§ Added @rendermode InteractiveServer directive to ensure the page runs in interactive mode
- π― Fixed the issue where [SupplyParameterFromForm] failed to bind user input in prerender mode, ensuring Category's Name and DisplayOrder are correctly updated
March 30, 2025
Fix: Adjusted .rainbow-glow
pin position to prevent horizontal scrollbar
-
π§ Changed
.rainbow-glow::after
right
value from-15px
to-12px
-
π― Preserved the floating visual effect while ensuring the pin no longer causes
.main-content
to overflow horizontally
March 27, 2025
-
Global Image Deletion: All blog posts now update any references to an image before it is deleted, ensuring no broken links remain.
-
Consistency with Rename: The deletion process now mirrors the rename operation by globally updating image references.
-
Enhanced Data Integrity: This update prevents missing images and improves overall content reliability.
March 25, 2025
Fixed horizontal overflow issues in tables by adding horizontal scrollbars and making them responsive.
March 24, 2025
Enhanced the stability of SignalR connections by configuring HubOptions
in Program.cs
.
These adjustments improved the app's resilience under heavy load by enforcing tighter connection timeouts and message size limits.
For context on this change and the surrounding issue, see the full write-up:
How I Used Linux Logs, Nginx Rate Limiting, and Blazor Config to Defend Against High-Frequency Attacks
March 21, 2025
-
Fixed a
DbContext
concurrency issue inArticlePage
by using isolated instances for data updates. -
Improved SignalR handling in Blazor to gracefully stop polling and avoid errors when the connection is lost.
March 20, 2025
-
Refactored
VisitorData
-related JavaScript by extracting logic intovisitorDataInterop.js
and resolving race conditions. -
Partially modularized JS interop, though some red dot issues remain unresolved.
-
Minor updates to Blazor WebAssembly components (
highlight.min.js
,BackGround.razor
). -
Updated CodeRain effect to use only binary digits (
0
and1
) for a cleaner Matrix-style look.
March 19, 2025
-
Fixed an issue where the
displayOrder
field in the backendcategory
table could not be updated. -
Fixed a frontend issue where the COPY button would copy itself.
-
Refactored the article display logic into a reusable component.
March 17, 2025
-
The redesigned version of the website was released.
-
The tech stack was upgraded from .NET Core 2.1 MVC to .NET 8 Blazor Web App (a hybrid of Blazor Server and Blazor WebAssembly).
This article was last edited at