Skip to content

Update batch #2 - #19

Merged
korpseluv merged 8 commits into
mainfrom
cutting-edge
Jan 2, 2026
Merged

Update batch #2#19
korpseluv merged 8 commits into
mainfrom
cutting-edge

Conversation

@korpseluv

Copy link
Copy Markdown
Owner

Summary

Why

Why is this change needed?

Testing

  • npm run build
  • Manual check (screenshots optional)

Security / privacy

  • No secrets added
  • No new replay parsing/network behavior without opt-in
  • No new endpoints exposed in production unintentionally

Notes

Im also considering adding ability to copy a replay link

Copilot AI review requested due to automatic review settings January 2, 2026 13:25
@korpseluv korpseluv self-assigned this Jan 2, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses multiple UI and UX improvements including fixing the favicon configuration, adding URL fragment navigation for tabs, improving the timeline dot positioning, updating rank badge styling, and enhancing the SVG graph hover interaction accuracy.

  • Fixed favicon configuration to use favicon.ico instead of icon.png
  • Added URL fragment support for tab navigation with hash change listeners and two-way sync
  • Enhanced graph hover coordinate mapping using SVG transformation matrices for better accuracy
  • Updated rank badge styling with refined visual emphasis and improved timeline dot positioning

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

File Description
nuxt.config.ts Updates favicon link references from icon.png to favicon.ico with corresponding MIME type change
app/app.vue Adds URL fragment navigation, improves SVG graph coordinate mapping, refines rank badge styling, repositions timeline dots, and adds keyboard interaction support for deep stats cards

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread nuxt.config.ts
link: [
{ rel: 'icon', type: 'image/png', href: '/icon.png' },
{ rel: 'apple-touch-icon', href: '/icon.png' }
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },

Copilot AI Jan 2, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The MIME type 'image/x-icon' is outdated. Modern browsers and standards recommend using 'image/png' for PNG favicons or leaving the type attribute unspecified for .ico files, as browsers will automatically detect the correct type. The .ico extension suggests this is an ICO file, so the type attribute should either be removed or changed to the non-standard but commonly used 'image/vnd.microsoft.icon'.

Suggested change
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },
{ rel: 'icon', href: '/favicon.ico' },

Copilot uses AI. Check for mistakes.
Comment thread app/app.vue
try {
history.replaceState(null, '', `#${frag}`)
} catch (e) {
if (typeof window !== 'undefined') window.location.hash = `#${frag}`

Copilot AI Jan 2, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the catch block fallback, setting window.location.hash directly will trigger the hashchange event listener, which could cause the setTabFromHash function to run again. While this likely won't cause an infinite loop due to the guard condition in setTabFromHash, it creates an unnecessary re-execution. Consider adding a flag to temporarily disable the hashchange listener during programmatic updates, or simply remove the fallback since history.replaceState has broad browser support.

Suggested change
if (typeof window !== 'undefined') window.location.hash = `#${frag}`
// Swallow errors from history.replaceState; avoid hash fallback to
// prevent triggering the hashchange listener unnecessarily.

Copilot uses AI. Check for mistakes.
Comment thread app/app.vue

<div class="flex flex-row flex-wrap gap-2">
<div
<div

Copilot AI Jan 2, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent indentation: this line has extra indentation (14 spaces) compared to the surrounding code. The opening div tag should align with the other elements in the flex container.

Copilot uses AI. Check for mistakes.
Comment thread app/app.vue
badge.tone === 'badge-a' ? 'border border-white/50 text-white' : '',
badge.tone === 'badge-s' ? '' : '',
badge.tone === 'badge-ss' ? '' : '',
:class="[

Copilot AI Jan 2, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inconsistent indentation: this line has extra indentation (14 spaces) compared to the parent element. The :class attribute should align with the class attribute above it.

Copilot uses AI. Check for mistakes.
@korpseluv
korpseluv merged commit 3ce9bd0 into main Jan 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants