HN
Hacker News • 36일 전
오크(Oak): AI 에이전트를 위한 깃(Git) 대체 도구
IMP 6/10
핵심 요약
해커뉴스에 AI 에이전트의 작업 방식에 최적화된 새로운 버전 관리 시스템인 '오크(Oak)'가 공개되었습니다. 이는 기존의 깃(Git)을 대체하기 위해 개발된 도구로, AI 코딩 에이전트가 더 효율적으로 코드를 읽고 수정할 수 있도록 돕는 것이 핵심입니다.
번역된 본문
제공된 본문은 웹사이트의 디자인과 레이아웃을 구성하기 위한 CSS(Cascading Style Sheets) 코드입니다. 여기에는 폰트 설정, 버튼 스타일, 반응형 레이아웃을 위한 그리드 시스템 등 마케팅 페이지의 시각적인 요소를 제어하는 내용이 포함되어 있습니다. 실제 서비스의 기능이나 작동 원리에 대한 글은 포함되어 있지 않습니다.
원문 보기 (영어)
` (or any container with this class). Inter base type for marketing body copy; `.hp-term`, `.hp-code`, and inline `code` opt back into monospace for the terminal/code visuals. */ .oak-marketing { font-family: var(--oak-mono); font-size: 14.5px; line-height: 1.55; color: var(--hp-ink); } .oak-marketing a { text-decoration: none; } main.oak-marketing { flex: 1; } /* ── layout ─────────────────────────────────────────────────────── */ .hp-wrap { max-width: 1200px; margin: 0 auto; padding: 0 28px; } .hp-wrap-narrow { max-width: 860px; margin: 0 auto; padding: 0 28px; } @media (max-width: 640px) { .hp-wrap, .hp-wrap-narrow { padding: 0 16px; } } /* ── content sections ────────────────────────────────────────────── */ .hp-s { padding: 72px 0 64px; border-bottom: 1px solid var(--hp-line); } .hp-s:last-child { border-bottom: 0; } .hp-s-tight { padding: 48px 0; } .hp-eyebrow { display: inline-flex; align-items: center; gap: 10px; color: var(--hp-ink-mute); font-size: 11.5px; text-transform: lowercase; letter-spacing: 0.04em; margin-bottom: 14px; } .hp-eyebrow::before { content: ''; display: inline-block; width: 22px; height: 1px; background: var(--hp-line-strong); } .hp-marker { color: var(--hp-moss); font-weight: 600; } .hp-eyebrow-cy .hp-marker { color: var(--hp-cyan-2); } .hp-eyebrow-mg .hp-marker { color: var(--hp-magenta-2); } .hp-eyebrow-am .hp-marker { color: var(--hp-amber-2); } /* ── typography (marketing) ─────────────────────────────────────── */ .hp-h1 { font-family: var(--oak-mono); font-size: clamp(32px, 4.2vw, 50px); line-height: 1.08; font-weight: 600; letter-spacing: -0.025em; color: var(--hp-ink); margin: 0 0 18px; } .hp-h2 { font-family: var(--oak-mono); font-size: clamp(24px, 3vw, 34px); line-height: 1.14; font-weight: 600; letter-spacing: -0.02em; margin: 0 0 14px; color: var(--hp-ink); } .hp-h3 { font-family: var(--oak-mono); font-size: 17px; font-weight: 600; letter-spacing: -0.01em; color: var(--hp-ink); margin: 0 0 8px; } .hp-a-moss { color: var(--hp-moss); } .hp-a-cy { color: var(--hp-cyan-2); } .hp-a-mg { color: var(--hp-magenta-2); } .hp-a-am { color: var(--hp-amber-2); } .hp-a-vm { color: var(--hp-vermilion); } .hp-lede { color: var(--hp-ink-soft); font-size: 15.5px; line-height: 1.7; max-width: 60ch; margin: 0 0 28px; } .hp-sub { color: var(--hp-ink-soft); max-width: 64ch; font-size: 14.5px; line-height: 1.7; margin: 0 0 32px; } .oak-marketing code, .hp-sub code, .hp-lede code, .hp-prose code { background: var(--hp-paper-2); padding: 1px 6px; border-radius: 0; font-size: 0.92em; font-family: 'JetBrains Mono', monospace; color: var(--hp-ink); } .hp-prose { color: var(--hp-ink-soft); font-size: 14px; line-height: 1.7; max-width: 70ch; } .hp-prose > * + * { margin-top: 14px; } .hp-prose strong, .hp-prose b { color: var(--hp-ink); font-weight: 600; } .hp-prose a { color: var(--hp-moss); border-bottom: 1px solid color-mix(in oklch, var(--hp-moss) 40%, transparent); } .hp-prose a:hover { border-bottom-color: var(--hp-moss); } .hp-prose ul, .hp-prose ol { padding-left: 22px; } .hp-prose ul li, .hp-prose ol li { margin-top: 4px; } .hp-prose ul { list-style: none; padding-left: 0; } .hp-prose ul > li { position: relative; padding-left: 18px; } .hp-prose ul > li::before { content: '›'; position: absolute; left: 4px; top: 0; color: var(--hp-moss); font-weight: 600; } .hp-prose h2 { font-family: var(--oak-mono); font-size: 18px; font-weight: 600; color: var(--hp-ink); margin-top: 28px; margin-bottom: 6px; letter-spacing: -0.01em; } .hp-prose h3 { font-family: var(--oak-mono); font-size: 14.5px; font-weight: 600; color: var(--hp-ink); margin-top: 20px; margin-bottom: 4px; } /* ── CTA / buttons (marketing) ──────────────────────────────────── */ .hp-cta-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; } .hp-btn { display: inline-flex; align-items: center; gap: 8px; padding: 9px 16px; border-radius: var(--hp-radius); font-size: 13px; font-weight: 500; border: 1px solid transparent; transition: transform 0.06s, background 0.12s, border-color 0.12s, color 0.12s; cursor: pointer; text-decoration: none; } .hp-btn:active { transform: translateY(1px); } .hp-btn-arrow { width: 14px; height: 14px; transition: transform 0.12s; } .hp-btn:hover .hp-btn-arrow { transform: translateX(2px); } .hp-btn-primary { background: var(--hp-ink); color: var(--hp-paper); font-weight: 600; border-color: var(--hp-ink); } .hp-btn-primary:hover { background: color-mix(in oklch, var(--hp-ink) 86%, var(--hp-paper)); color: var(--hp-paper); } .hp-btn-ink { background: var(--hp-ink); color: var(--hp-paper); border-color: var(--hp-ink); } .hp-btn-ink:hover { background: color-mix(in oklch, var(--hp-ink) 86%, var(--hp-paper)); } .hp-btn-outline { background: transparent; color: var(--hp-ink); border-color: var(--hp-line-strong); } .hp-btn-outline:hover { background: var(--hp-paper-2); } .hp-btn-ghost { background: transparent; color: var(--hp-ink-soft); border-color: transparent; } .hp-btn-ghost:hover { color: var(--hp-ink); background: var(--hp-paper-2); } .hp-kbd { display: inline-block; padding: 1px 6px; background: var(--hp-paper-2); border: 1px solid var(--hp-line-strong); border-radius: 0; color: var(--hp-ink); font-family: 'JetBrains Mono', monospace; font-size: 11.5px; } .hp-tag { display: inline-block; padding: 2px 8px; border-radius: 0; background: var(--hp-paper-2); color: var(--hp-ink-soft); font-size: 11px; border: 1px solid var(--hp-line); } .hp-tag-moss { color: var(--hp-moss); border-color: color-mix(in oklch, var(--hp-moss) 30%, var(--hp-line)); background: color-mix(in oklch, var(--hp-moss) 6%, var(--hp-paper)); } .hp-tag-cy { color: var(--hp-cyan-2); border-color: color-mix(in oklch, var(--hp-cyan) 30%, var(--hp-line)); background: color-mix(in oklch, var(--hp-cyan) 6%, var(--hp-paper)); } .hp-tag-mg { color: var(--hp-magenta-2); border-color: color-mix(in oklch, var(--hp-magenta) 30%, var(--hp-line)); background: color-mix(in oklch, var(--hp-magenta) 6%, var(--hp-paper)); } .hp-tag-am { color: var(--hp-amber-2); border-color: color-mix(in oklch, var(--hp-amber) 30%, var(--hp-line)); background: color-mix(in oklch, var(--hp-amber) 8%, var(--hp-paper)); } /* ── feature cards ───────────────────────────────────────────────── */ .hp-triptych { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; } @media (max-width: 880px) { .hp-triptych { grid-template-columns: 1fr; } } .hp-pair { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; } @media (max-width: 720px) { .hp-pair { grid-template-columns: 1fr; } } .hp-card { border: 1px solid var(--hp-line); background: var(--hp-paper); border-radius: var(--hp-radius); overflow: hidden; transition: transform 0.18s, box-shadow 0.18s, border-color 0.18s; } .hp-card:hover { transform: translateY(-2px); box-shadow: var(--hp-shadow); border-color: var(--hp-line-strong); } .hp-card-static:hover { transform: none; box-shadow: none; border-color: var(--hp-line); } .hp-card-hd { display: flex; align-items: center; justify-content: space-between; padding: 11px 16px; border-bottom: 1px solid var(--hp-line); background: var(--hp-paper-2); font-size: 11.5px; color: var(--hp-ink-mute); } .hp-card-lft { display: flex; align-items: center; gap: 8px; } .hp-sigil { font-weight: 600; } .hp-c-moss .hp-sigil, .hp-c-moss .hp-pk { color: var(--hp-moss); } .hp-c-cyan .hp-sigil, .hp-c-cyan .hp-pk { color: var(--hp-cyan-2); } .hp-c-magenta .hp-sigil, .hp-c-magenta .hp-pk { color: var(--hp-magenta-2); } .hp-c-amber .hp-sigil, .hp-c-amber .hp-pk { color: var(--hp-amber-2); } .hp-badge { font-size: 10px; padding: 1px 6px; border-radius: 0; background: var(--hp-paper-3); color: var(--hp-ink-soft); } .hp-card-bd { padding: 18px 18px 20px; } .hp-card-bd h3 { margin: 0 0 8px; font-family: var(--oak-mono); font-size: 16px; font-weight: 600; letter-spacing: -0.01em; color: var(--hp-ink); } .hp-card-bd p { margin: 0 0 12px; color: var(--hp-ink-soft); font-size: 13.5px; line-height: 1.65; } .hp-card-bd p:last-ch