Skip to content

[RELEASE] v0.0.3#260

Merged
kimminna merged 96 commits into
mainfrom
release/0.0.3
Jul 16, 2026
Merged

[RELEASE] v0.0.3#260
kimminna merged 96 commits into
mainfrom
release/0.0.3

Conversation

@kimminna

Copy link
Copy Markdown
Member

What's Changed

Full Changelog: v0.0.2.1...v0.0.3

ehye1 and others added 30 commits July 14, 2026 18:02
- 캘린더 연동/해제/인증 관련 엔드포인트 및 모델을 추가했습니다
- 기존 엔드포인트 파일들을 최신 스펙으로 재생성했습니다
- 캘린더 OAuth 콜백 페이지를 추가했습니다
- 콜백에서 code/state로 캘린더 연동 API를 호출하고 프로필 쿼리를 갱신했습니다
- 온보딩 캘린더 연동 버튼에 authorize API 호출 및 리다이렉트 로직을 연결했습니다
- 설정 페이지 캘린더 연동 버튼에 authorize API 호출 및 리다이렉트 로직을 연결했습니다
- localStorage의 calendarConnectOrigin 값으로 OAuth 완료 후 이동 경로를 구분했습니다
…to feat/web/187-google-calendar-api-integration
- pnpm gen:api 재생성 반영
- CalendarEventsResponse 로컬 zod 스키마 및 타입 추가 (schemas/calendar)
- useCalendarEventsQuery 훅 추가 (DAY/WEEK/TWO_WEEK 필터 지원)
- HomeTodoContainer: 홈 뷰 필터에 따라 WEEK/TWO_WEEK로 캘린더 이벤트 조회 후 일별 렌더링
- TodayTodoListContainer: DAY 필터로 오늘 캘린더 이벤트 조회 후 렌더링
- CalendarEventItem 컴포넌트 추가
- 구글 캘린더 연동 해제 확인 모달(SettingsCalendarDisconnectModalContainer) 적용
- 캘린더 연동/해제 실패 토스트 처리 추가
- focus 엔드포인트 응답 구조 변경 반영 (BaseResponse 래퍼 제거)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- OverlayModal에 Modal 컴포넌트와 동일한 스택 기반 z-index 로직을 적용했습니다
- 정적인 z-40/z-50 클래스를 acquireModalStackIndex 기반 동적 z-index로 교체했습니다
- HomeCalendarEventCard, TodayCalendarEventCard 컴포넌트를 추가했습니다
- CalendarEventItem 컴포넌트를 삭제했습니다
- 캘린더 이벤트 체크박스 상태를 컨테이너로 리프팅했습니다
- completedCount와 totalCount 계산에 캘린더 이벤트를 포함했습니다
- 캘린더 연결 해제 시 이벤트 쿼리 캐시를 제거했습니다
- 캘린더 이벤트 key와 체크 상태를 index 대신 title 기반으로 변경했습니다
- SettingsCalendarDisconnectModal을 _components로 이동하고 Container suffix를 제거했습니다
- isCalendarErrorToastOpen을 isCalendarDisconnectErrorToastOpen으로 이름을 변경했습니다
- CalendarConnectStepContainer의 불필요한 useState를 상수로 변경했습니다
- TodayCalendarEventCard의 hover 상태를 Tailwind CSS group-hover로 변경했습니다
- 제목·서브태스크·메모의 줄바꿈을 wrap-break-word에서 wrap-anywhere로 교체해, 공백 없는 긴 텍스트가 flex 아이템의 자동 최소 너비를 부풀려 카드가 타이머 패널 뒤로 사라지는 문제를 해결했습니다
- 메모 영역에 max-h-[40vh]와 세로 스크롤을 추가해 긴 메모가 페이지 전체 높이를 늘리지 않도록 했습니다
- 온보딩 박스 크기를 w-108, h-153.5로 고정했습니다
- 로그인 페이지 약관 문구의 줄바꿈을 수정했습니다
- Home/Today 탭과 사이드바 타이머에서 재생·일시정지·재개·완료·정지 시 집중 페이지 쿼리를 함께 invalidate하도록 했습니다
- 집중 페이지에서 완료·서브태스크 변경 시 Today 탭과 할 일 수정 모달 쿼리를 함께 invalidate하도록 했습니다
- 할 일 수정 모달에서 수정·삭제 시 집중 페이지 쿼리를 함께 invalidate하도록 했습니다
- 투두 카드 날짜 형식을 M/D에서 YY.MM.DD로 변경했습니다
- 투두 카드 툴바에서 휴지통 아이콘을 제거했습니다
- PillButton에 gray-dark variant를 추가했습니다
- Integrate 상태에서는 blue, Disconnect 상태에서는 gray-dark로 변경했습니다
- 4개 파일에 중복 정의돼 있던 invalidateTodayView/invalidateFocusTodo를 useTimerQueryInvalidation 훅으로 통합했습니다
- 이벤트 식별자를 title 단독에서 title-index composite key로 변경했습니다
- 동일 제목 일정이 여러 개일 때 각각 독립적으로 체크 상태를 관리합니다
- React 중복 key 경고를 해소했습니다
- new Date(todo.date)는 UTC 기준으로 해석되어 KST에서 하루 밀리는 버그가 있었습니다
- parseDateKey를 사용해 로컬 시간 기준으로 파싱하도록 수정했습니다
- overflow-x-auto 컨테이너의 pb 클립 이슈로 인해 상위 section에 pb-3 적용
- 스크롤 컨테이너 내부의 pb-2 제거
- 설정 약관 페이지 하단에 pb-12.5 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 태그/시간/우선순위/반복 드롭다운이 항목 클릭 즉시 닫히지 않고, 실제로 닫힐 때만 선택이 반영되도록 draft 상태와 closeOnSelect={false}를 적용했습니다
- 반복 셀렉터 화살표(chevron) 회전 방향이 반대로 되어 있던 것을 수정했습니다
- 시간 드롭다운이 열려 있는 상태에서 AI 추천 응답이 도착해도 draft 상태가 갱신되지 않아 선택 표시가 안 되던 것을 수정했습니다
- RepeatSelector의 onWeekdayToggle(id) prop이 onWeekdaysChange(weekdayIds[])로 바뀜에 따라 소비 측 핸들러를 갱신했습니다
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 날짜 변경 PATCH 성공 후에도 예전 날짜로 상세를 재조회해 404가 발생하던 것을, 성공 시점에 조회 기준 날짜를 함께 갱신하도록 수정했습니다
- 날짜 변경으로 쿼리 키가 바뀌는 동안 데이터가 잠깐 사라져 모달이 깜빡이던 것을 keepPreviousData로 방지했습니다
- 타이틀 입력을 textarea에서 input으로 바꿔 줄바꿈 없이 가로로만 입력되게 하고, Enter 입력 시 첫 하위 태스크로 포커스가 이동하도록 했습니다
- 태그 추가 모달에서 새 태그를 만들면 PATCH 성공 후 로컬 상태에 반영되도록 연동했습니다
- 하위 태스크 완료 토글을 기존의 전체 하위 태스크 배열 PATCH 방식 대신 전용 상태 변경 API로 호출하도록 변경했습니다
- 하위 태스크 입력의 값(value) 타입을 훅이 아닌 프레젠테이션 컴포넌트(DetailTodoTaskFields)가 소유하도록 옮겼습니다
- 타이틀 입력을 textarea에서 input으로 바꿔 줄바꿈 없이 가로로만 입력되게 했습니다
- Enter 입력 시 개행 대신 첫 번째 하위 태스크 입력창으로 포커스가 이동하도록 했습니다
yumin-kim2 and others added 15 commits July 16, 2026 15:22
[FEAT] robots.txt·sitemap.xml SEO 라우트 설정
- 타이머 시작 API에 추가된 date 쿼리 파라미터를 반영하도록 orval 코드를 재생성했습니다
- Home/Today/Focus에서 타이머를 시작할 때 재생한 카드의 날짜를 함께 전송하도록 수정해, 반복 투두를 오늘이 아닌 날짜에서 재생해도 해당 날짜에 정확히 귀속되도록 했습니다
- Today 카드에서 서브태스크를 완료 토글한 직후 상세 모달을 열면, 모달의 첫 조회가 완료 처리 요청보다 먼저 끝나 옛 데이터로 폼이 초기화되는 문제가 있었습니다
- useDetailSubtaskField의 subtaskInputs가 마운트 시 한 번만 초기화되고 이후 재동기화되지 않아, 서버 데이터가 나중에 갱신되어도 체크박스가 계속 옛 값에 머물렀습니다
- 서버에서 받아온 subtasks가 바뀔 때 완료 여부만 로컬 폼 상태에 재동기화하는 effect를 추가했습니다
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[FIX] 영어 환경 태그 생성 제한 오류 수정
- 체크박스가 checked 상태일 때만 렌더링되는 체크마크 아이콘이 SVGElement라서 HTMLElement의 인스턴스가 아니었습니다
- isInteractiveElement가 target instanceof HTMLElement로 검사해, 체크 해제를 위해 체크마크를 직접 클릭하면 인터랙티브 요소로 인식하지 못하고 카드 클릭(상세 모달 오픈)으로 새어나갔습니다
- instanceof Element로 변경해 HTML/SVG 요소 모두 정상적으로 감지하도록 했습니다
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…pi-integration

[FEAT] 구글 캘린더 연동 구현
[FIX] Today 카드 서브태스크 완료가 상세 모달에 재동기화되지 않는 문제 수정
…date-attribution

[FIX] 반복 투두를 오늘이 아닌 날짜에서 재생해도 해당 날짜에 귀속되도록 수정
- 완료 모달에 전달되는 계획 시간에서 연장 시간을 제외했습니다
- Focus/사이드바는 타이머 서클 라벨(연장 포함 유지)과 완료 모달(계획만) 값을 분리했습니다
- 실제 응답은 여전히 BaseResponse로 감싸져 있는데 이전 재생성에서 래퍼 없는 타입으로 잘못 바뀌어 있던 것을 실제 동작 기준으로 복원했습니다
…nned-seconds

[FIX] 포커스 스키마 업데이트 반영 및 모달 완료 계획 시간 수정
@vercel

vercel Bot commented Jul 16, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
timo Ready Ready Preview, Comment Jul 16, 2026 8:32am

Request Review

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 83 files, which is 33 over the limit of 50.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: dd95b207-004c-42e8-a900-b7233705ef1e

📥 Commits

Reviewing files that changed from the base of the PR and between 106f543 and 086c83d.

⛔ Files ignored due to path filters (34)
  • apps/timo-web/api/generated/endpoints/auth/auth.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/endpoints/auth/auth.zod.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/endpoints/calendar/calendar.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/endpoints/calendar/calendar.zod.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/endpoints/focus/focus.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/endpoints/focus/focus.zod.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/endpoints/home/home.zod.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/endpoints/timer/timer.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/endpoints/timer/timer.zod.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/endpoints/todo/todo.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/endpoints/todo/todo.zod.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/baseResponseCalendarAuthorizeResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/baseResponseCalendarConnectResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/baseResponseCalendarDisconnectResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/baseResponseCalendarEventsResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/calendarAuthorizeResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/calendarConnectRequest.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/calendarConnectResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/calendarDayResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/calendarDisconnectResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/calendarEventResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/calendarEventsResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/errorDto.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/focusTodoDetailResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/getCalendarEventsParams.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/index.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/startTimerParams.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/timerActiveResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/timerStartResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/todayTodoResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/todoCreateRequestIcon.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/todoResponse.ts is excluded by !**/generated/**
  • apps/timo-web/api/generated/models/todoUpdateRequestIcon.ts is excluded by !**/generated/**
  • apps/timo-web/public/og.png is excluded by !**/*.png
📒 Files selected for processing (83)
  • apps/timo-web/app/[locale]/(main)/(with-time-sidebar)/home/_components/todo-card/HomeTodoCard.tsx
  • apps/timo-web/app/[locale]/(main)/(with-time-sidebar)/home/_containers/HomeTodoContainer.tsx
  • apps/timo-web/app/[locale]/(main)/(with-time-sidebar)/home/_containers/toast/TagLimitToastContainer.tsx
  • apps/timo-web/app/[locale]/(main)/(with-time-sidebar)/home/_hooks/use-home-todos-by-date.ts
  • apps/timo-web/app/[locale]/(main)/(with-time-sidebar)/home/_mocks/todo-mock.ts
  • apps/timo-web/app/[locale]/(main)/(with-time-sidebar)/home/page.tsx
  • apps/timo-web/app/[locale]/(main)/(with-time-sidebar)/today/_components/TodayTodoCard.tsx
  • apps/timo-web/app/[locale]/(main)/(with-time-sidebar)/today/_containers/TodayTodoListContainer.tsx
  • apps/timo-web/app/[locale]/(main)/(with-time-sidebar)/today/_hooks/useTodayTodoList.ts
  • apps/timo-web/app/[locale]/(main)/(with-time-sidebar)/today/_mocks/today-todo-mock.ts
  • apps/timo-web/app/[locale]/(main)/focus/_components/FocusTaskItem.tsx
  • apps/timo-web/app/[locale]/(main)/focus/_containers/FocusSessionContainer.tsx
  • apps/timo-web/app/[locale]/(main)/focus/_hooks/use-focus-session.ts
  • apps/timo-web/app/[locale]/(main)/settings/_components/account/SettingsCalendarDisconnectModal.tsx
  • apps/timo-web/app/[locale]/(main)/settings/_components/account/SettingsProfileView.tsx
  • apps/timo-web/app/[locale]/(main)/settings/_containers/account/SettingsProfileContainer.tsx
  • apps/timo-web/app/[locale]/(main)/settings/_containers/terms/SettingsTermsContainer.tsx
  • apps/timo-web/app/[locale]/(main)/settings/_hooks/account/use-settings-profile-labels.ts
  • apps/timo-web/app/[locale]/(main)/settings/_hooks/account/use-settings-profile.ts
  • apps/timo-web/app/[locale]/(main)/settings/_types/account/profile-type.ts
  • apps/timo-web/app/[locale]/(main)/statistics/_components/StatisticsCalendar.tsx
  • apps/timo-web/app/[locale]/(main)/statistics/_components/StatisticsSidePanel.tsx
  • apps/timo-web/app/[locale]/(main)/statistics/_containers/StatisticsCalendarContainer.tsx
  • apps/timo-web/app/[locale]/(main)/statistics/_containers/StatisticsContainer.tsx
  • apps/timo-web/app/[locale]/layout.tsx
  • apps/timo-web/app/[locale]/oauth/calendar/callback/_containers/CalendarCallbackContainer.tsx
  • apps/timo-web/app/[locale]/oauth/calendar/callback/page.tsx
  • apps/timo-web/app/[locale]/onboarding/_components/OnboardingButton.tsx
  • apps/timo-web/app/[locale]/onboarding/_components/OnboardingStepButton.tsx
  • apps/timo-web/app/[locale]/onboarding/_containers/CalendarConnectStepContainer.tsx
  • apps/timo-web/app/[locale]/onboarding/_containers/LifePatternStepContainer.tsx
  • apps/timo-web/app/[locale]/onboarding/_containers/OnboardingFunnelContainer.tsx
  • apps/timo-web/app/robots.ts
  • apps/timo-web/app/sitemap.ts
  • apps/timo-web/components/calendar/HomeCalendarEventCard.tsx
  • apps/timo-web/components/calendar/TodayCalendarEventCard.tsx
  • apps/timo-web/components/layout/sidebar/time/TimeSidebar.tsx
  • apps/timo-web/components/layout/sidebar/time/TimeboxPanel.tsx
  • apps/timo-web/components/layout/sidebar/time/TimerPanel.tsx
  • apps/timo-web/components/lottie/LottiePlayer.tsx
  • apps/timo-web/components/modal/OverlayModal.tsx
  • apps/timo-web/components/todo-modal/common/TodoIconField.tsx
  • apps/timo-web/components/todo-modal/create/CreateTodoModalContent.tsx
  • apps/timo-web/components/todo-modal/create/CreateTodoTaskFields.tsx
  • apps/timo-web/components/todo-modal/detail/DetailTodoModalContent.tsx
  • apps/timo-web/components/todo-modal/detail/DetailTodoTaskFields.tsx
  • apps/timo-web/constants/site.ts
  • apps/timo-web/containers/todo-modal/detail/DetailTodoModalContainer.tsx
  • apps/timo-web/hooks/statistics/use-statistics-query-invalidation.ts
  • apps/timo-web/hooks/timer/use-timer-query-invalidation.ts
  • apps/timo-web/hooks/todo-modal/common/use-tag-field.tsx
  • apps/timo-web/hooks/todo-modal/create/use-create-todo-submit.ts
  • apps/timo-web/hooks/todo-modal/create/use-icon-field.ts
  • apps/timo-web/hooks/todo-modal/create/use-repeat-field.ts
  • apps/timo-web/hooks/todo-modal/create/use-subtask-field.ts
  • apps/timo-web/hooks/todo-modal/create/use-time-field.ts
  • apps/timo-web/hooks/todo-modal/detail/use-delete-todo-submit.ts
  • apps/timo-web/hooks/todo-modal/detail/use-detail-subtask-field.ts
  • apps/timo-web/hooks/todo-modal/detail/use-detail-todo-form.ts
  • apps/timo-web/hooks/todo-modal/detail/use-detail-todo-icon-submit.ts
  • apps/timo-web/hooks/todo-modal/detail/use-detail-todo-patch-handlers.ts
  • apps/timo-web/hooks/todo-modal/detail/use-detail-todo-text-auto-save.ts
  • apps/timo-web/hooks/todo-modal/detail/use-toggle-subtask-submit.ts
  • apps/timo-web/hooks/todo-modal/detail/use-update-todo-submit.ts
  • apps/timo-web/messages/en.json
  • apps/timo-web/messages/ko.json
  • apps/timo-web/queries/calendar/use-calendar-events-query.ts
  • apps/timo-web/schemas/calendar/calendar-events-schema.ts
  • apps/timo-web/schemas/tag/tag-schema.ts
  • apps/timo-web/schemas/timer/timer-schema.ts
  • apps/timo-web/schemas/todo/todo-schema.ts
  • apps/timo-web/utils/todo/detail-todo-update-request.ts
  • apps/timo-web/utils/todo/tag-label.ts
  • packages/timo-design-system/src/components/button/pill-button/PillButton.tsx
  • packages/timo-design-system/src/components/calendar/date-selector/DateSelector.tsx
  • packages/timo-design-system/src/components/dropdown-view/DropdownView.tsx
  • packages/timo-design-system/src/components/layout/dropdown/Dropdown.tsx
  • packages/timo-design-system/src/components/priority/priority-selector/PrioritySelector.tsx
  • packages/timo-design-system/src/components/repeat/repeat-selector/RepeatSelector.stories.tsx
  • packages/timo-design-system/src/components/repeat/repeat-selector/RepeatSelector.tsx
  • packages/timo-design-system/src/components/tag/tag-selector/TagSelector.tsx
  • packages/timo-design-system/src/components/time/time-selector/TimeSelector.tsx
  • packages/timo-design-system/src/components/todo/todo-toolbar/TodoToolbar.tsx

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Review on demand using usage pricing
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/0.0.3

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added ⏰ Timo-web Timo 웹 서비스 ⌚ Timo-Design-system Timo 디자인 시스템 labels Jul 16, 2026
@github-actions github-actions Bot added the ♦️ 민아 민아상 label Jul 16, 2026
@kimminna kimminna added the 🎉 Deploy 배포 작업 label Jul 16, 2026
@kimminna
kimminna merged commit e756624 into main Jul 16, 2026
16 checks passed
@kimminna
kimminna deleted the release/0.0.3 branch July 16, 2026 08:32
@github-actions

Copy link
Copy Markdown

Timo Performance Report

Bundle Size — timo-web
라우트 크기 First Load JS
/[locale]/home 214.14 kB 🔴 420.03 kB
/[locale]/today 198.29 kB 🔴 404.17 kB
/[locale]/focus 161.97 kB 🔴 367.86 kB
/[locale]/settings 168.81 kB 🔴 374.70 kB
/[locale]/statistics 155.72 kB 🔴 361.61 kB
/[locale]/[...rest] 0 B 🟡 205.89 kB
/[locale]/login 213.80 kB 🔴 419.69 kB
/[locale]/oauth/calendar/callback 120.82 kB 🟡 326.71 kB
/[locale]/oauth/callback 120.49 kB 🟡 326.38 kB
/[locale]/onboarding 234.55 kB 🔴 440.44 kB
/[locale] 119.80 kB 🟡 325.69 kB
/[locale]/policy 125.93 kB 🟡 331.82 kB
/robots.txt/route 0 B 🟡 205.89 kB
/sitemap.xml/route 0 B 🟡 205.89 kB

공유 번들: 205.89 kB
🟢 < 200kB  |  🟡 < 350kB  |  🔴 ≥ 350kB (First Load JS · gzip)

Lighthouse — timo-web
URL Perf A11y LCP CLS TBT
/en/home 🔴 64 🟢 95 🔴 15.8s 🟢 0.000 🟡 435ms
/en/today 🔴 62 🟢 95 🔴 15.7s 🟢 0.000 🟡 491ms
/en/focus 🔴 59 🟢 95 🔴 15.3s 🟢 0.000 🔴 607ms
/en/statistics 🔴 60 🟢 95 🔴 15.2s 🟢 0.000 🟡 562ms

Perf ≥ 70 / A11y ≥ 85 목표
LCP 🟢 < 2.5s 🟡 < 4s 🔴 ≥ 4s  |  CLS 🟢 < 0.1 🟡 < 0.25 🔴 ≥ 0.25  |  TBT 🟢 < 200ms 🟡 < 600ms 🔴 ≥ 600ms

Image Optimization — timo-web
파일 크기 포맷 상태
favicon.png 27.84 kB PNG ⚠️ 🟢
images/google-calendar.png 36.20 kB PNG ⚠️ 🟢
images/google-logo.png 26.79 kB PNG ⚠️ 🟢
og.png 437.44 kB PNG ⚠️ 🟡

총 4개 · 528.28 kB  |  🟢 < 200KB  |  🟡 < 500KB  |  🔴 ≥ 500KB
⚠️ 4개 파일 WebP/AVIF 변환 권장

측정 커밋: a47837a

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

Labels

⌚ Timo-Design-system Timo 디자인 시스템 ⏰ Timo-web Timo 웹 서비스 ♦️ 민아 민아상 🎉 Deploy 배포 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants