-
Notifications
You must be signed in to change notification settings - Fork 3
[#123] feat(os): 부팅 화면 및 윈도우 시작음 기능 추가 #153
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
fc721f7 to
e3220e0
Compare
There was a problem hiding this 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.
| const { isLoggedIn } = useAuthUser(); | ||
|
|
Copilot
AI
Nov 20, 2025
There was a problem hiding this comment.
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 />;
}| const { isLoggedIn } = useAuthUser(); | |
| const { isLoggedIn, isLoading } = useAuthUser(); | |
| if (isLoading) { | |
| return <div>Loading...</div>; | |
| } |
| const { isLoggedIn } = useAuthUser(); | ||
|
|
Copilot
AI
Nov 20, 2025
There was a problem hiding this comment.
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 />;
}| const { isLoggedIn } = useAuthUser(); | |
| const { isLoggedIn, isLoading } = useAuthUser(); | |
| if (isLoading) { | |
| return <div>Loading...</div>; | |
| } |
|
|
||
| export default function App() { | ||
| const [isBooting, setIsBooting] = useState(false); | ||
| const USE_ENTER_MODE = true; |
Copilot
AI
Nov 20, 2025
There was a problem hiding this comment.
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:
- Add a descriptive comment explaining what "enter mode" means for the boot screen
- Move this to a configuration file or environment variable if it should be configurable
- If this is a feature flag, use a more descriptive name like
REQUIRE_MANUAL_BOOTorUSE_BIOS_MANUAL_MODE
| 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. |
|
|
||
| export default function App() { | ||
| const [isBooting, setIsBooting] = useState(false); | ||
| const USE_ENTER_MODE = true; |
Copilot
AI
Nov 20, 2025
There was a problem hiding this comment.
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:
isBootingisfalse→ BootScreen is shown- Meanwhile,
AuthInitializeris running asynchronously - 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.
e3220e0 to
5ca47da
Compare
5ca47da to
cf42778
Compare
|
발표를 위해 일부 구현한 상태로 올린 PR이며 코멘트에 대해 추후 수정 예정입니다. |
📖 개요
부팅 화면 및 윈도우 시작음 기능 추가
✅ 관련 이슈
🛠️ 상세 작업 내용
📸 스크린샷
N/A
N/A
👥 리뷰 확인 사항
N/A