Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ CodingTestKit was built to **replicate the real exam environment inside your IDE

- **Exam Mode**: Disable autocomplete & inspections, block external paste, detect focus loss — practice under real test conditions
- **Performance Metrics**: Show execution time (ms) and memory usage per test case
- **Timer**: Stopwatch, circular dial countdown timer, progress bar, digital clock
- **Timer**: Stopwatch, circular dial countdown timer, progress bar, digital clock — plus an always-visible mini bar in the Problems tab and the IDE status bar
- **All-in-One**: Fetch, code, test, and submit without leaving the IDE
- **Problem Translation**: One-click Korean ↔ English translation with caching and rate limit protection
- **GitHub Push**: Auto-push accepted solutions to GitHub
Expand Down Expand Up @@ -92,7 +92,7 @@ CodingTestKit was built to **replicate the real exam environment inside your IDE
| 7 | **My Solved** | List your solved problems on LeetCode & Codeforces |
| 8 | [**Code Editor**](#code-editor) | Auto-generated boilerplate code per platform & language |
| 9 | [**Code Templates**](docs/features/templates.md) | Save & reuse frequently used code snippets |
| 10 | [**Timer**](docs/features/timer.md) | Stopwatch with laps + countdown with circular dial, progress bar, digital clock |
| 10 | [**Timer**](docs/features/timer.md) | Stopwatch with laps + countdown with circular dial, progress bar, digital clock; mini bar in the Problems tab & status bar |
| 11 | [**Settings & Exam Mode**](docs/features/exam-mode.md) | One-click exam mode: block paste, disable autocomplete, focus alert |
| 12 | [**GitHub Integration**](docs/features/github.md) | Auto-push accepted solutions to GitHub |
| 13 | [**Internationalization**](#internationalization-i18n) | Full Korean / English UI support |
Expand Down Expand Up @@ -285,6 +285,8 @@ Provides a **Stopwatch** and a **Countdown Timer**.
- **Progress Bar**: Linear progress indicator
- Preset buttons for 30min, 1hr, 2hr, 3hr
- Notification when time's up
- **Problems tab bottom bar**: timer and stopwatch (start/pause/reset) with a thin remaining-time progress bar, always visible at the bottom of the Problems tab — check the clock while reading the problem
- **Status bar**: remaining time also appears next to `CTK: ...` in the IDE status bar, visible from any tab or layout

<p align="center">
<img src="docs/screenshots/timer.gif" width="700" alt="Timer"/>
Expand Down Expand Up @@ -351,7 +353,7 @@ Switch between **Korean / English** in settings. All UI text is displayed in the

## Quick Start

1. Open **CodingTestKit** from the right sidebar
1. Open **CodingTestKit** from the left sidebar (docked alongside the Project view — the two toggle; drag to another side if you prefer)
2. Select platform and language
3. Enter problem ID and click **Fetch**
4. Write code, click **Run All**
Expand All @@ -363,6 +365,8 @@ Switch between **Korean / English** in settings. All UI text is displayed in the
- JDK 17+ (for Java execution) — building the plugin from source requires JDK 21
- Language compilers (for respective language tests)

> **Windows + C++**: install MinGW-w64 (or MSYS2), add its `bin` folder to PATH, then **fully restart the IDE** — a running IDE does not pick up PATH changes (restart JetBrains Toolbox too if you use it).

## Build

```bash
Expand All @@ -389,7 +393,7 @@ CodingTestKit은 **실제 시험 환경을 IDE 안에서 그대로 재현**하

- **시험 모드**: 자동완성과 코드 검사를 끄고, 외부 붙여넣기 차단과 포커스 이탈 감지까지 실전과 동일한 환경에서 연습
- **실행 시간 & 메모리 측정**: 테스트 케이스별 실행 시간(ms)과 메모리 사용량(KB/MB)을 표시
- **타이머**: 스톱워치, 원형 다이얼 카운트다운 타이머, 프로그레스 바, 디지털 시계
- **타이머**: 스톱워치, 원형 다이얼 카운트다운 타이머, 프로그레스 바, 디지털 시계 — 문제 탭 하단 미니 바와 IDE 상태바에도 항상 표시
- **올인원**: 문제 읽기, 코드 작성, 테스트, 제출까지 IDE를 벗어나지 않고 전부 해결
- **문제 번역**: 한 클릭으로 한국어 ↔ 영어 번역 (캐싱 및 rate limit 보호 내장)
- **GitHub 연동**: 채점 통과 시 자동으로 GitHub에 푸시
Expand Down Expand Up @@ -435,7 +439,7 @@ CodingTestKit은 **실제 시험 환경을 IDE 안에서 그대로 재현**하
| 7 | **내 풀이** | LeetCode & Codeforces에서 내가 푼 문제 목록 확인 |
| 8 | [**코드 에디터**](#코드-에디터) | 플랫폼 & 언어별 보일러플레이트 코드 자동 생성 |
| 9 | [**코드 템플릿**](docs/features/templates.md) | 자주 쓰는 코드 스니펫 저장 & 재사용 |
| 10 | [**타이머**](docs/features/timer.md) | 스톱워치 + 원형 다이얼/프로그레스 바/디지털 시계 카운트다운 |
| 10 | [**타이머**](docs/features/timer.md) | 스톱워치 + 원형 다이얼/프로그레스 바/디지털 시계 카운트다운, 문제 탭 하단 미니 바 & 상태바 표시 |
| 11 | [**설정 & 시험 모드**](docs/features/exam-mode.md) | 원클릭 시험 모드: 붙여넣기 차단, 자동완성 끄기, 포커스 감지 |
| 12 | [**GitHub 연동**](docs/features/github.md) | 맞은 문제 자동 GitHub 푸시 |
| 13 | [**다국어 지원**](#다국어-지원-i18n) | 한국어 / English UI 완전 지원 |
Expand Down Expand Up @@ -628,6 +632,8 @@ FAIL인 케이스는 빨간색으로 표시되어 한눈에 확인할 수 있습
- **프로그레스 바**: 막대형 진행률 표시
- 30분, 1시간, 2시간, 3시간 프리셋 버튼
- 시간 종료 시 알림
- **문제 탭 하단 바**: 타이머와 스톱워치(시작/일시정지/초기화), 남은 시간 프로그레스 바가 문제 탭 하단에 항상 표시 — 문제를 읽으면서 시간 확인 가능
- **상태바 표시**: IDE 하단 상태바의 `CTK: ...` 옆에도 남은 시간이 표시되어 어떤 탭·레이아웃에서든 보임

<p align="center">
<img src="docs/screenshots/timer.gif" width="700" alt="타이머"/>
Expand Down Expand Up @@ -694,7 +700,7 @@ FAIL인 케이스는 빨간색으로 표시되어 한눈에 확인할 수 있습

## 빠른 시작

1. 우측 사이드바에서 **CodingTestKit** 열기
1. 좌측 사이드바에서 **CodingTestKit** 열기 (프로젝트 뷰와 같은 자리에서 토글되며, 원하면 드래그로 다른 쪽에 배치 가능)
2. 플랫폼과 언어 선택
3. 문제 번호 입력 후 **가져오기** 클릭
4. 코드 작성 후 **전체 실행** 클릭
Expand All @@ -706,6 +712,8 @@ FAIL인 케이스는 빨간색으로 표시되어 한눈에 확인할 수 있습
- JDK 17 이상 (Java 실행용) — 플러그인을 소스에서 직접 빌드하려면 JDK 21 필요
- 각 언어 컴파일러 (해당 언어 테스트 시)

> **Windows + C++**: MinGW-w64(또는 MSYS2)를 설치하고 `bin` 폴더를 PATH에 등록한 뒤 **IDE를 완전히 재시작**하세요 — 실행 중인 IDE에는 PATH 변경이 반영되지 않습니다 (JetBrains Toolbox 사용 시 Toolbox도 재시작).

## 빌드

```bash
Expand Down
6 changes: 4 additions & 2 deletions docs/README_en.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ Select the platform and language, enter a problem number, and the problem descri
- **LeetCode**: Enter number, slug, or URL (e.g., `1`, `two-sum`, full URL)
- **Codeforces**: contestId+letter (e.g., `1234A`) or URL

> Codeforces: if Cloudflare blocks the request, fetching automatically falls back to the built-in JCEF browser (may take ~5–20 seconds longer).
> Codeforces: if Cloudflare blocks the request, fetching automatically falls back to a built-in browser (invisible, no window appears). Only the first problem takes ~5–20 seconds longer — once the challenge is passed, its cookies are reused and subsequent fetches are fast.

<p align="center">
<img src="screenshots/main-panel.png" width="500" alt="Main Panel"/>
Expand Down Expand Up @@ -295,7 +295,7 @@ Setup: Settings > GitHub Integration > Click "GitHub Login" and select your repo
## Usage

### 1. Fetch a Problem
1. Open **CodingTestKit** from the right sidebar
1. Open **CodingTestKit** from the left sidebar (docked alongside the Project view — the two toggle)
2. Select platform and language
3. Enter problem ID and click **Fetch**
- Programmers: `12947`
Expand Down Expand Up @@ -330,6 +330,8 @@ Setup: Settings > GitHub Integration > Click "GitHub Login" and select your repo
- JDK 17+ (for Java execution) — building the plugin from source requires JDK 21
- Language compilers (for respective language tests)

> **Windows + C++**: install MinGW-w64 (or MSYS2), add its `bin` folder to PATH, then **fully restart the IDE** — a running IDE does not pick up PATH changes.

## Build

```bash
Expand Down
6 changes: 4 additions & 2 deletions docs/README_ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ CodingTestKit은 이런 **실제 시험 환경을 IDE 안에서 그대로 재현
- **LeetCode**: 문제 번호, slug, 또는 URL 입력 (예: `1`, `two-sum`, URL)
- **Codeforces**: 콘테스트번호+문제번호 (예: `1234A`) 또는 URL

> Codeforces: Cloudflare가 요청을 차단하면 내장 JCEF 브라우저로 자동 폴백합니다 (약 5~20초 더 걸릴 수 있음).
> Codeforces: Cloudflare가 요청을 차단하면 내장 브라우저(화면에 보이지 않음)로 자동 폴백합니다. 첫 문제만 약 5~20초 더 걸리고, 챌린지를 한 번 통과하면 쿠키를 재사용해 다음 문제부터는 빠르게 가져옵니다.

<p align="center">
<img src="screenshots/main-panel.png" width="500" alt="메인 패널"/>
Expand Down Expand Up @@ -297,7 +297,7 @@ FAIL인 케이스는 빨간색으로 표시되어 한눈에 확인할 수 있습
## 사용법

### 1. 문제 가져오기
1. 우측 사이드바에서 **CodingTestKit** 열기
1. 좌측 사이드바에서 **CodingTestKit** 열기 (프로젝트 뷰와 같은 자리에서 토글)
2. 플랫폼과 언어 선택
3. 문제 번호 입력 후 **가져오기** 클릭
- 프로그래머스: `12947` (URL의 `/lessons/` 뒤 숫자)
Expand Down Expand Up @@ -332,6 +332,8 @@ FAIL인 케이스는 빨간색으로 표시되어 한눈에 확인할 수 있습
- JDK 17 이상 (Java 실행용) — 플러그인을 소스에서 직접 빌드하려면 JDK 21 필요
- 각 언어 컴파일러 (해당 언어 테스트 시)

> **Windows + C++**: MinGW-w64(또는 MSYS2)를 설치하고 `bin` 폴더를 PATH에 등록한 뒤 **IDE를 완전히 재시작**하세요 — 실행 중인 IDE에는 PATH 변경이 반영되지 않습니다.

## 빌드

```bash
Expand Down
6 changes: 4 additions & 2 deletions docs/features/fetch.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ Select the platform and language, enter a problem number, and the problem descri
- Supports number (`1`), slug (`two-sum`), and full URL input

#### Codeforces
- Fetches via HTTP crawling first; if Cloudflare blocks the request (e.g., 403), automatically falls back to the built-in offscreen JCEF browser, which passes the challenge and extracts the page
- Fetches via HTTP crawling first; if Cloudflare blocks the request (e.g., 403), automatically falls back to the built-in offscreen JCEF browser (rendered off-screen — no window appears on any OS), which passes the challenge and extracts the page
- Once the challenge is passed, its cookies (`cf_clearance`) are reused so subsequent fetches take the fast HTTP path (~1s)
- When the fallback engages, fetching may take about 5–20 seconds longer
- Requires an IDE with JCEF support (all recent IntelliJ versions)

Expand Down Expand Up @@ -100,6 +101,7 @@ Select the platform and language, enter a problem number, and the problem descri
- 번호(`1`), slug(`two-sum`), 전체 URL 입력 지원

#### Codeforces
- HTTP 크롤링으로 먼저 가져오고, Cloudflare에 차단(403 등)되면 내장 오프스크린 JCEF 브라우저로 자동 폴백하여 챌린지를 통과한 뒤 페이지를 추출
- HTTP 크롤링으로 먼저 가져오고, Cloudflare에 차단(403 등)되면 내장 오프스크린 JCEF 브라우저로 자동 폴백하여 챌린지를 통과한 뒤 페이지를 추출 (오프스크린 렌더링이라 어떤 OS에서도 창이 나타나지 않음)
- 챌린지를 한 번 통과하면 그 쿠키(`cf_clearance`)를 재사용해 다음 문제부터는 빠른 HTTP 경로(~1초)로 가져옴
- 폴백이 동작하면 가져오기가 약 5~20초 더 걸릴 수 있음
- JCEF를 지원하는 IDE 필요 (최근 IntelliJ 버전은 모두 지원)
16 changes: 16 additions & 0 deletions docs/features/timer.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@ Provides a **Stopwatch** and a **Countdown Timer** to help you practice under ti
- Preset buttons: 30min, 1hr, 2hr, 3hr
- Notification alert when time's up

### Problems Tab Mini Bar & Status Bar

The timer is not locked inside the Timer tab:

- **Problems tab bottom bar**: countdown (left) and stopwatch (right), each with start/pause and reset buttons, plus a thin remaining-time progress bar on top — always visible while reading the problem
- **IDE status bar**: remaining time appears next to `CTK: ...`, visible from any tab or layout
- All three views (Timer tab, mini bar, status bar) share the same timer — controlling it from any one of them keeps the others in sync

<p align="center">
<img src="../screenshots/countdown-running.png" width="500" alt="Countdown Running"/>
</p>
Expand Down Expand Up @@ -61,3 +69,11 @@ Provides a **Stopwatch** and a **Countdown Timer** to help you practice under ti

- 프리셋 버튼: 30분, 1시간, 2시간, 3시간
- 시간 종료 시 알림

### 문제 탭 미니 바 & 상태바

타이머는 타이머 탭 안에만 있지 않습니다:

- **문제 탭 하단 바**: 왼쪽에 카운트다운, 오른쪽에 스톱워치 (각각 시작/일시정지·초기화 버튼), 상단에 남은 시간 프로그레스 바 — 문제를 읽는 동안 항상 표시
- **IDE 상태바**: `CTK: ...` 옆에 남은 시간 표시 — 어떤 탭·레이아웃에서든 보임
- 세 화면(타이머 탭·미니 바·상태바)은 같은 타이머를 공유하며, 어디서 조작해도 서로 동기화됩니다
Loading