Skip to content

Conversation

@sageherb
Copy link
Collaborator

📖 개요

부팅 화면 및 윈도우 시작음 기능 추가

✅ 관련 이슈

🛠️ 상세 작업 내용

  • 이미지 및 사운드 에셋 추가
  • 바이오스 수동 부팅 및 윈도우 시작음 구현
  • 바이오스 자동 모드 구현

📸 스크린샷

N/A

⚠️ 주의 사항

N/A

👥 리뷰 확인 사항

N/A

@sageherb sageherb requested a review from Copilot November 20, 2025 00:28
@vercel
Copy link

vercel bot commented Nov 20, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
backspace Ready Ready Preview Comment Nov 20, 2025 0:40am

Copy link

Copilot AI left a comment

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 adds a boot screen feature with BIOS and Windows 95 startup sound functionality to enhance the application's OS-themed experience. The implementation includes both manual (enter mode) and automatic boot modes.

Key Changes:

  • Added boot screen with BIOS image and Windows 95 startup sound assets
  • Integrated boot screen workflow into the app initialization flow
  • Removed loading state checks from route guards (PublicRoute and ProtectedRoute)

Reviewed Changes

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

Show a summary per file
File Description
src/App.tsx Integrated boot screen with state management and conditional routing based on boot completion
src/router/ProtectedRoute.tsx Removed authentication loading state check before redirecting unauthenticated users
src/router/PublicRoute.tsx Removed authentication loading state check before redirecting authenticated users
src/assets/os/bios.png Added BIOS boot screen image asset
src/assets/sounds/windows95-startup-sound.mp3 Added Windows 95 startup sound audio file

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

Comment on lines +6 to 7
const { isLoggedIn } = useAuthUser();

Copy link

Copilot AI Nov 20, 2025

Choose a reason for hiding this comment

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

Removing the isLoading check will cause incorrect redirects during app initialization.

The authentication state starts with isLoading: true and is set to false only after hydrateFromAuth() completes. Without checking isLoading, the route will evaluate isLoggedIn (which is !isLoading && !!user) before authentication is initialized, causing immediate navigation to "/signin" even for authenticated users.

Recommendation: Keep the loading state check to prevent premature redirects:

const { isLoggedIn, isLoading } = useAuthUser();

if (isLoading) {
  return <div>Loading...</div>; // Or a proper loading component
}

if (!isLoggedIn) {
  return <Navigate to="/signin" replace />;
}
Suggested change
const { isLoggedIn } = useAuthUser();
const { isLoggedIn, isLoading } = useAuthUser();
if (isLoading) {
return <div>Loading...</div>;
}

Copilot uses AI. Check for mistakes.
Comment on lines +6 to 7
const { isLoggedIn } = useAuthUser();

Copy link

Copilot AI Nov 20, 2025

Choose a reason for hiding this comment

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

Removing the isLoading check will cause incorrect redirects during app initialization.

The authentication state starts with isLoading: true and is set to false only after hydrateFromAuth() completes. Without checking isLoading, the route will evaluate isLoggedIn (which is !isLoading && !!user) before authentication is initialized, causing immediate navigation to "/" even when the user should be on the signin/signup pages.

Recommendation: Keep the loading state check to prevent premature redirects:

const { isLoggedIn, isLoading } = useAuthUser();

if (isLoading) {
  return <div>Loading...</div>; // Or a proper loading component
}

if (isLoggedIn) {
  return <Navigate to="/" replace />;
}
Suggested change
const { isLoggedIn } = useAuthUser();
const { isLoggedIn, isLoading } = useAuthUser();
if (isLoading) {
return <div>Loading...</div>;
}

Copilot uses AI. Check for mistakes.

export default function App() {
const [isBooting, setIsBooting] = useState(false);
const USE_ENTER_MODE = true;
Copy link

Copilot AI Nov 20, 2025

Choose a reason for hiding this comment

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

The USE_ENTER_MODE constant is hard-coded as true without clear documentation of what it controls or why this value was chosen.

Recommendation: Consider one of the following:

  1. Add a descriptive comment explaining what "enter mode" means for the boot screen
  2. Move this to a configuration file or environment variable if it should be configurable
  3. If this is a feature flag, use a more descriptive name like REQUIRE_MANUAL_BOOT or USE_BIOS_MANUAL_MODE
Suggested change
const USE_ENTER_MODE = true;
const [isBooting, setIsBooting] = useState(false);
// If true, the BootScreen will require the user to press "Enter" to continue booting.
// Set to false to allow automatic boot without user interaction.
// This acts as a feature flag for manual boot mode.

Copilot uses AI. Check for mistakes.

export default function App() {
const [isBooting, setIsBooting] = useState(false);
const USE_ENTER_MODE = true;
Copy link

Copilot AI Nov 20, 2025

Choose a reason for hiding this comment

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

The boot screen state is initialized as false, meaning the boot screen will be shown on every app load. However, this doesn't account for the authentication loading state.

When the app first loads:

  1. isBooting is false → BootScreen is shown
  2. Meanwhile, AuthInitializer is running asynchronously
  3. If the user completes the boot screen before auth initializes, they'll see the routes but may experience flashing/redirects as auth state resolves

Recommendation: Consider coordinating the boot screen with authentication initialization, or ensure the boot screen duration is long enough to complete auth hydration. Alternatively, you could show the boot screen only after auth has initialized to prevent redirect flashing.

Copilot uses AI. Check for mistakes.
@sageherb sageherb merged commit f3dac58 into dev Nov 20, 2025
2 checks passed
@sageherb sageherb deleted the feature/boot branch November 20, 2025 00:40
@sageherb
Copy link
Collaborator Author

발표를 위해 일부 구현한 상태로 올린 PR이며 코멘트에 대해 추후 수정 예정입니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature 새로운 기능 추가

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] 바이오스 부팅 화면 및 윈도우 시작음 구현

2 participants