TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
Eyebrow는 Mac의 노치를 실시간 제어 센터로 전환합니다
Eyebrow turns the notch on your Mac into a live control centre — now playing, HUDs, a drag-and-drop shelf, clipboard history, screenshots, call controls and widgets. No account, no tracking. Free, wit
생산성TypeScript · CSSGitHub @bilal-ajnaz온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Dynamic Mac Notch
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Marketing and support site for Eyebrow, the macOS notch app. Next.js App Router, no CSS framework, no runtime dependencies beyond React.
npm install
npm run dev # http://localhost:3000
npm run build # production build
The site lives in the website/ subdirectory of the app repo, so:
website.The pricing section shows Free beside Eyebrow Pro, the one-time in-app
purchase. The Pro card's figure comes from site.pro.price in
lib/site.ts, currently $4.99, which should match the IAP price in App
Store Connect. To change it without a code change, set
NEXT_PUBLIC_PRO_PRICE in Vercel → Settings → Environment Variables and
redeploy. If the string is ever emptied, the card reads "One-time".
The free clipboard cap (500) and Pro cap (5,000) are also constants there,
and the feature copy, plan lists and FAQ in lib/features.ts quote them.
If the app's limits change, change both places.
Everything on the site points at one constant, appStoreUrl in
lib/site.ts, which is set to the live listing:
https://apps.apple.com/us/app/eyebrow-dynamic-notch/id6808540516
To point the site somewhere else without a code change, set
NEXT_PUBLIC_APP_STORE_URL in Vercel → Settings → Environment Variables
and redeploy. If the constant were ever emptied, every download button
would fall back to a non-clickable "coming shortly" state.
The favicon, Apple touch icon and the brand mark in the nav and footer are
all rendered from the Icon Composer bundle at ../Eyebrow.icon (Apple only
ships the bare glyph in the App Store artwork; the gradient and glass are
drawn on-device). To regenerate after changing the .icon file:
python3 scripts/render-icon.py ../Eyebrow.icon .
It needs Pillow (pip3 install pillow) and writes app/icon.png,
app/apple-icon.png, public/icon-256.png and public/icon-1024.png.
The support form posts to /api/support, which sends to
[email protected] (set in lib/site.ts).
Without any configuration the form still works: the server validates the message, then hands it back to the visitor's own mail client as a pre-filled email. Nothing is lost, but the visitor has to press send.
For real server-side delivery, add a Resend key (free tier, no card):
RESEND_API_KEY=re_xxxxxxxx
[email protected] # must be a verified domain
Use [email protected] as the from address while testing. Replies go
to the visitor's address automatically. If Resend ever errors, the route
falls back to the mail-client handoff rather than dropping the message.
The route also carries a honeypot field and a per-IP throttle (5 messages per 10 minutes, best-effort within a warm instance).
app/
layout.tsx shell, metadata, nav + footer
icon.png favicon (Next picks it up automatically)
apple-icon.png iOS home-screen icon, full-bleed
page.tsx home, plus SoftwareApplication + FAQPage JSON-LD
globals.css the entire design system — tokens, then components
support/page.tsx support page
api/support/route.ts
components/
NotchStage.tsx the scroll-driven notch (the centrepiece)
NotchWidgets.tsx the open notch and its widget tiles, as the app draws them
Sections.tsx features, tabs, widgets, privacy, price, FAQ
SupportForm.tsx client form + mailto fallback
Nav / Footer / Hero / Reveal / Icon / DownloadButton
lib/
site.ts name, URL, email, App Store link
public/
icon-1024.png the app icon, rendered from Eyebrow.icon
icon-256.png the same, used as the brand mark in nav + footer
features.ts the feature catalogue — edit copy here
lib/features.ts. All plain data.acts array at the top of
components/NotchStage.tsx. Each act sets its own notch width/height
and its caption; add or remove one and the ticks and numbering follow.OpenNotch in components/NotchWidgets.tsx is the
last act: the app's header row and one page of its widget grid. The tiles
are ported from WidgetRenderer.swift at the app's point sizes (an 80pt
cell, 8pt gutter, 640 × 230 open), and the stylesheet scales the whole bar
to fit the display, so change sizes there only if the app changes them.app/globals.css. Components only ever reference semantic tokens.prefers-reduced-motion is respected throughout: the notch still
morphs between states, it just doesn't animate there.[data-js="on"], so the page is
fully readable if JavaScript never runs./#act-1 … /#act-8.