TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
개인 실 사용 AI 어시스턴트. provider를 직접 골라 쓰고, 대화는 어디서든 이어갑니다. • 채팅 — /chat • 영어 학습 — /english • 운영 중 — https://261001-zeta.vercel.app (push 하면 자동 배포) 이전 프로젝트 C:\june\old는 컨셉만 참고했고 코드는 가져오지 않았습니다. 이 저장소에는 문서가 3개 있습니다. 위에서부터 읽으면 되고, 이게 전부입니다. 모델 목록은 문서가 아니라 lib/models.ts 한 곳에서만 봅니다. 모델을 추가·삭제할 때 손댈 곳은 저 파일 하나입니다. .env.local에 채울 값 (없으면 앱이 열리지 않습니다 — fail-closed): • .env가 아니라 .env.local입니다. 둘 다 커밋에서 제외됩니다. • SUPABASE_SERVICE_ROLE_KEY에 NEXT_PUBLIC_ 접두사를 절대 붙이지 마세요. 이 키는 DB 권한을 완전히 우회하고, 접두사가 붙는 순간 브라우저 번들에 평문으로 실립니다. 자세한 건 docs/RULE.md.README 전문 보기 ↗
개인 실 사용 AI 어시스턴트. provider를 직접 골라 쓰고, 대화는 어디서든 이어갑니다.
/chat/english이전 프로젝트
C:\june\old는 컨셉만 참고했고 코드는 가져오지 않았습니다.
이 저장소에는 문서가 3개 있습니다. 위에서부터 읽으면 되고, 이게 전부입니다.
| 파일 | 답해 주는 것 | |
|---|---|---|
| 1 | README.md (이 파일) | 이게 뭔가, 어떻게 도는지 |
| 2 | docs/RULE.md | 앞으로 뭘 지켜야 하나 — 코딩 전에 읽음 |
| 3 | docs/BACKLOG.md | 아직 안 된 것 |
모델 목록은 문서가 아니라 lib/models.ts 한 곳에서만 봅니다. 모델을 추가·삭제할 때 손댈 곳은 저 파일 하나입니다.
cd C:\june\first_app
Copy-Item .env.example .env.local
npm install
npm run dev
.env.local에 채울 값 (없으면 앱이 열리지 않습니다 — fail-closed):
OPENROUTER_API_KEY=...
GROQ_API_KEY=...
GEMINI_API_KEY=...
APP_PIN=본인이 정한 6자리 숫자
APP_TOKEN=임의의 긴 랜덤 문자열
SUPABASE_URL=https://xxx.supabase.co
SUPABASE_SERVICE_ROLE_KEY=...
.env가 아니라 .env.local입니다. 둘 다 커밋에서 제외됩니다.SUPABASE_SERVICE_ROLE_KEY에 NEXT_PUBLIC_ 접두사를 절대 붙이지 마세요.
이 키는 DB 권한을 완전히 우회하고, 접두사가 붙는 순간 브라우저 번들에 평문으로 실립니다.
자세한 건 docs/RULE.md.가장 흔한 함정입니다. SUPABASE_SERVICE_ROLE_KEY가 없으면 저장이 조용히 꺼집니다.
화면은 정상 작동하고 대화도 되기 때문에 눈에 띄는 실패가 없습니다.
SUPABASE_URL은 예전 이름(NEXT_PUBLIC_SUPABASE_URL)도 읽지만 SUPABASE_SERVICE_ROLE_KEY에는 대체 이름이 없습니다.스키마는 supabase/schema.sql → supabase/single-user.sql 이 순서로 실행해야 합니다.
순서가 반대면 정책이 참조하던 열이 사라져 실패합니다.
그다음 supabase/add-compaction.sql 을 실행하면 긴 대화의 압축이 켜집니다.
이것만 빠져 있으면 앱은 그대로 돌아가며 긴 대화를 예전처럼 잘라 버립니다.
Next.js 16 (App Router) · TypeScript strict · Tailwind v4 · React 19
LLM 호출은 OpenRouter·Groq가 raw fetch, Gemini만 @google/generative-ai SDK를 씁니다 (Vercel AI SDK 미사용).
대화 저장은 Supabase Postgres. 응답은 비스트리밍입니다 — 전체를 받고 나서 렌더링합니다.
읽어두면 좋은 것만 적었습니다. 자세한 건 docs/BACKLOG.md.
sessionStorage에 있어 개발자도구로 볼 수 있고 시도 제한이 없습니다.
"URL만 아는 사람"은 막지만 "집요한 사람"은 막지 못합니다. 의도적으로 이 수준입니다.lib/compaction.ts에 있습니다.
화면과 DB에는 전부 그대로 남습니다. 줄어드는 것은 모델에게 보이는 것뿐입니다.
요약은 provider를 새로 고르지 않고 이번 턴에 쓰신 provider로 만듭니다.
supabase/add-compaction.sql을 실행하지 않은 배포에서는 조용히 꺼져 있어
예전처럼 그냥 버립니다 — 이때만 "아까 그 얘기"가 풀리지 않습니다.