체인지로그
릴리스마다 만든 사람이 직접 씁니다. 이슈 키를 누르면 공개 백로그의 그 이슈로 갑니다.
저장소의 CHANGELOG.ko.md를 그대로 보여 줍니다. 영문 CHANGELOG.md를 한국어로 옮긴 것입니다. GitHub에서 보기
v0.24.1 — 2026-10-01
앱이 여는 셸이 당신의 도구를 볼 수 있습니다. Finder나 Dock에서 띄운 serve는
launchd의 환경을 물려받습니다 — Gadak.app 0.24.0에서 실측한 값은
PATH=/usr/bin:/bin:/usr/sbin:/sbin에 로캘은 아예 없음이었습니다. 그런데 pane의
셸은 로그인 셸이 아니라서, 그 둘을 고쳐 줄 파일 두 개를 읽을 일이 없었습니다.
하필 cask로 gadak을 받은 설치에서, pane이 약속하는 맨 gadak을 찾을 수 없었고
brew로 깐 도구가 전부 없었으며 zsh의 라인 에디터가 한글 입력을 보지 못했습니다.
이제 로그인 셸에게 환경을 한 번 물어보고 넘어오는 것은 둘뿐입니다. PATH는 원래
있던 항목을 그대로 두고 로그인 셸만 알던 것을 덧붙이고, 로캘은 아무것도 없을 때만
채웁니다. 셸이 느리거나 찾을 수 없으면 환경을 건드리지 않고 pane은 그대로 열리며,
둘 중 무엇이었는지는 gadak doctor가 말해 줍니다 (GDK-2032).
맞춰 둔 칸은 맞춰 둔 자리에 있습니다. 이슈 목록의 폭을 고정하면 — 오른쪽
모서리를 끌거나 gadak config set ui.tokens.layout.list로 — 옆의 상세 패널이
남는 공간을 받지 못했습니다. 목록을 좁히면 창 오른쪽 끝에 아무것도 아닌 띠가
열렸고, 넓히면 이음매는 움직이지 않는데 폭은 저장돼서, 그다음 앱 안의 브라우저가
자기 칸에서 그 숫자를 빼 썼습니다. 이제 고정된 목록 옆의 칸이 목록이 내놓은 만큼을
받고, 드래그는 포인터가 요구한 폭이 아니라 실제로 그려진 폭을 저장합니다
(GDK-2047). 같은 화면에서 벌크 선택을 키보드로 시작하고 늘릴 수 있습니다 —
Enter와 Shift+Enter가 상세를 열어 버리고 있었습니다 — 그리고 origin이 되돌려 줄 수
없는 두 동작, 페어링 파기와 기록 비우기는 더 조용한 이웃들이 이미 그랬던 것처럼
두 번 묻습니다 (GDK-2005, GDK-2006).
폰이 회고를 읽고, 카탈로그가 에이전트에게 곧이곧대로 답합니다. 지난 한 주가
어땠는지가 폰 화면이 됐습니다. 데스크가 먼저 꺼내는 문장, 요약의 네 숫자, 아직
붙잡을 수 있는 멈춘 일, 그리고 닫힌 것 — 주 단위 열 표를 눌러 담은 것이 아니라
데스크의 계산 그대로입니다 (GDK-1827). gadak이 본 적 없는 카테고리의 상태는
데스크에서도 폰에서도 Go에서도 같은 쪽으로 접힙니다. 그래야 그 값에 기대는 기능이
어떤 계정에서는 돌고 어떤 계정에서는 안 도는 일이 없습니다 (GDK-2004,
GDK-2042). 에이전트는 바이너리가 이미 받고 있었지만 카탈로그가 말하지 않던 넷을
받습니다 — gadak sql --layout, issue --link, gadak_search의 labels,
sync --source (GDK-2017). no such column 힌트는 접미어가 붙은 철자도 넘겨
짚고 (GDK-2029), 아이폰에서 앱이 걸지 않을 주소는 네트워크 오류가 아니라 걸지
않는다고 말합니다 (GDK-2009).
v0.24.0 — 2026-09-18
폰에서 터미널을 제대로 쓸 수 있습니다. 폰 앱에서 열든 tailscale serve를 거쳐
폰 브라우저에서 열든, 터미널은 주어진 화면을 가득 채우고 입력하는 동안 키보드가
내려가지 않습니다 (GDK-1987, GDK-1986). 화면 아래쪽에는 폰 키보드에 없는 키를
모은 줄이 붙습니다. Esc, Tab, Ctrl, Alt와 방향키가 들어 있고, 수정자를 눌러 둔 상태는
폰 앱이 쓰던 세 가지와 같습니다. 브라우저로 접속한 셸도 읽기만 하는 것이 아니라 명령을
입력해 조작할 수 있습니다 (GDK-1995). 폰 앱에서는 한글이 자모 단위가 아니라 단어
단위로 전달되고, 조합 중인 글자는 키 줄 위에 표시됩니다 (GDK-1988).
폰의 목록이 데스크톱의 목록과 같아졌습니다. 내장 뷰는 저마다 정해진 순서대로 읽힙니다. 맡긴 이슈는 가장 조용한 항목부터 보여 주고, 재오픈은 작업이 되돌아온 횟수를 기준으로 정렬합니다. 묶는 기준도 뷰가 정하며, 스프린트는 데스크톱과 같은 방식으로 나뉩니다 (GDK-1992, GDK-1993). 헤더는 어디를 눌러야 하는지 분명해졌습니다. 제목 아래에 구분선이 들어가고, 오른쪽 끝의 컨트롤 셋이 한 벌로 묶였으며, 수동 동기화가 쓰던 자리에 검색이 돌아왔습니다. 지금 동기화는 설정 화면에 있습니다 (GDK-1989, GDK-1990).
이제 두 컨트롤은 서로 다른 화면을 엽니다. 돋보기는 팔레트를 열어서 캐시 전체에서 이슈 하나를 찾게 해 주고, 다른 화면으로 넘어가는 행은 그 사실을 표시합니다 (GDK-1949, GDK-1997). 뷰 이름을 누르면 지금 보고 있는 목록을 다루는 화면이 열립니다. 그 목록이 속한 뷰가 맨 위에 나오고, 아래에는 목록을 좁히는 토글이 놓입니다. 이 기능은 이번에 새로 들어갔습니다. 그동안 폰에서는 보고 있는 목록을 좁힐 수 없어서 데스크톱으로 돌아가 뷰를 저장해야 했습니다. 토글은 목록 자체에서 찾아내기 때문에 아무것도 바꾸지 못할 항목은 제시하지 않고, 좁힌 결과는 저장하지 않습니다. 다른 뷰를 고르면 원래 목록으로 돌아옵니다 (GDK-1994).
한국어와 일본어가 온전하게 읽힙니다. 일본어 검색이 문서에 들어 있는 낱말을
찾아냅니다. 일본어 문장에는 띄어쓰기가 없어서 앞에 구분자가 없는 낱말은 색인에 낱말로
들어가지 못했습니다. 함께 배포하는 캐시에서만 일본어는 605개 항목 가운데 334개에서
625개 낱말을 잃었고, 영어는 하나도 잃지 않았습니다 (GDK-1978). 회고 화면의 한국어
집계는 나머지를 병합으로 세지 않습니다 (GDK-1946). 일본어 스프린트 목표는 전각
34자를 담을 두 번째 줄을 얻었습니다 (GDK-1977). 한국어와 일본어 데모 데이터는 같은
화면의 다른 요소와 마찬가지로 라벨까지 번역됩니다 (GDK-1976).
v0.23.1 — 2026-09-17
앱이 보여준 상태를 서버가 거절하던 문제. 빌트인 트래커에서 마이그레이션을 거친 워크플로는 같은 이름의 상태를 둘 들고 있고, 그때 발급되는 전이 id가 상태 id와 겹칩니다. 그래서 웹과 폰이 보여준 Done을 누르면 매번 “숫자만으로는 모호하다”는 답이 돌아왔고, Done은 어떤 버튼으로도 적용할 수 없는 유일한 전이였습니다. 이제 클라이언트가 전이 목록에서 고른 id는 그대로 일치시키고, 상태 id나 이름이나 카테고리로 다시 읽지 않습니다. 목록이 낡았으면 그 id를 이름으로 거절하면서 그 이슈가 실제로 내주는 id를 알려 줍니다. CLI에서 상태 이름을 치는 것은 그대로입니다 (GDK-1982). 서버가 거절한 쓰기는 이제 로그에 남습니다 — 그 400이 아무 흔적도 남기지 않던 유일한 갈래였습니다.
폰 목록의 문이 하나가 되고, 그 문이 검색이라고 말합니다. 헤더에는 같은 팔레트를 여는 컨트롤이 둘 있었고 — 제목과 새 이슈 버튼 옆의 돋보기 — 둘 다 다시 눌러도 닫히지 않았습니다. 이제 문은 제목 하나이고 팔레트가 쓰는 그 돋보기를 답니다. 화면은 여전히 검색이라고 말하는데 컨트롤은 하나 줄었고, 한 번 더 누르면 닫히면서 목록이 보던 자리로 돌아옵니다 (GDK-1985, GDK-1984). 그렇게 되찾은 44px은 뷰 이름이 가져갑니다. 영어와 일본어에서 가장 긴 기본 뷰가 개수를 감추지 않게 됐고, 세 개는 글자 크기를 줄이지 않게 됐습니다.
v0.23.0 — 2026-09-17
폰에서 앱 전체를 쓸 수 있습니다. 아래쪽 탭 바를 없앴습니다. 목록 제목을 누르면 그 자리에 팔레트가 열리고, 최근에 본 이슈와 내장 뷰, 저장한 뷰, Jira 필터, 위키 스페이스, 그리고 페어링한 터미널이 한자리에 나옵니다. 여기에 입력하면 이슈와 페이지를 함께 검색하므로 검색은 더 이상 별도 화면이 아니고, 설정은 제목 옆 톱니바퀴로 들어갑니다 (GDK-901, GDK-902). 진행 중인 스프린트는 제목 아래 한 줄로 나오고, 그 줄을 누르면 목록이 그 스프린트로 좁혀집니다. 캐시가 들고 있는 모든 스프린트는 기간과 진행률, 목표와 함께 팔레트의 행으로 나옵니다 (GDK-1867, GDK-1827). 상세 화면은 캐시가 가진 것을 모두 그립니다. 라벨과 컴포넌트, 수정 버전, 상위 이슈, 에픽에 더해 사이트가 직접 정의한 커스텀 필드까지 나오고, 첨부는 한 줄에 셋씩 놓입니다 (GDK-1870, GDK-1882). 쓰기도 됩니다. 에픽에서 **+**를 누르면 하위 이슈를 만들고, 라벨 행에서 워크스페이스의 라벨을 켜고 끌 수 있으며, 마감일은 폰의 날짜 선택기로 고릅니다. 이슈와 위키 페이지 어느 쪽이든 댓글에 사진을 붙일 수 있습니다 (GDK-1871, GDK-1872, GDK-1873, GDK-1879). 쓰기가 반영되면 짧은 한 줄로 알려 주고, 쓰다 만 댓글이나 제목은 앱을 다시 켜도 남아 있으며, 데스크톱에서만 되는 작업은 찾아볼 만한 자리에서 그 사실을 알려 줍니다 (GDK-1969, GDK-1863, GDK-1874).
테일넷 안의 폰은 아예 설치가 필요 없습니다. Tailscale 주소에 묶인 serve가 자기
MagicDNS 이름에 응답하고 /m/에서 폰 번들을 내주기 때문에, Safari에서
https://<노드>.<테일넷>.ts.net/m/를 열면 그것이 앱 전체입니다. 스토어 빌드도 페어링도
필요 없습니다. 그 주소에 닿을 수 있다는 것 자체가 관리 콘솔이 이미 그 기기에 내준
자격이기 때문입니다. tailscale serve 뒤에서는 요청마다 그 사람의 Tailscale 로그인이
함께 실려서 쓰기가 그 사람 이름으로 기록되고, 직접 접속하면 serve는 원래대로 단일 사용자
화면으로 남습니다. 데스크톱의 Devices 탭이 그 주소를 QR로 보여 줍니다 (GDK-1966).
브라우저에서 연 이슈는 주소에 키가 들어간 실제 방문 기록이므로, 뒤로 넘기면 페이지를
벗어나지 않고 목록으로 돌아오고, 이슈 주소를 동료에게 그대로 붙여 넣을 수 있습니다.
홈 화면에 추가하면 브라우저 장식 없는 전체 화면 앱이 됩니다 (GDK-1970). 셸도 같은
규칙을 따릅니다. tailscale serve 뒤에서는 그 기계를 소유한 계정이 페어링 없이 셸을
엽니다 (GDK-1972). 내장 트래커에서는 자기 이름을 지정할 수 있습니다. CLI에서는
gadak me set "이름"으로, 웹과 폰에서는 설정의 이름 항목으로 지정하고, 모든 화면의
쓰기가 그 이름으로 기록됩니다 (GDK-1973).
캐시가 들고 있는 것은 origin을 따릅니다. origin에서 지운 위키 페이지가 그동안은 스페이스가 남아 있는 한 로컬 캐시에 그대로 있었습니다. 이제 전체 위키 동기화가 스페이스 목록과 캐시를 대조하고, 한 시간마다 도는 조정도 페이지 id로 같은 일을 합니다 (GDK-1884; #104, 제보해 주신 @wafe 님 감사합니다). 동기화된 두 스페이스 사이에서 옮긴 페이지는 그 조정에서 따라옵니다 (GDK-1886). 페이지 본문을 고치지 않고 첨부나 댓글만 추가해도 캐시에 들어옵니다 (GDK-1888). Linear도 같은 규칙을 따라서, origin에서 지운 이슈는 다음에 다시 읽을 때 캐시에서 빠집니다 (GDK-1889). 회고 화면도 같은 규칙을 따릅니다. 스프린트 열에서는 그 기간에 무엇이 움직였는지를 말하는 행 옆에, 스프린트 안에 무엇이 들어 있는지를 말하는 행이 두 개 더 붙습니다 (GDK-1846). 불일치 행은 한국어의 평범한 일정 표현을 일이 끝났다는 주장으로 읽지 않습니다 (GDK-1943).
에이전트가 쓴 페이지가 이슈 위에서 렌더됩니다. 이슈에 HTML 파일을 첨부하면 상세
화면이 그것을 아티팩트로 그립니다. 그 페이지는 네트워크도 gadak 자신의 origin 접근도
없는 샌드박스 프레임에서 돌아가고, 해당 이슈를 데이터로 받습니다. 대시보드가 이미 쓰던
것과 같은 계약이라서, 대시보드를 쓸 수 있는 에이전트는 이슈 하나를 위한 페이지도 쓸 수
있고, 주소를 붙여 넣어 연 대시보드도 같은 방식으로 다뤄집니다 (GDK-1897, GDK-1898).
트래커에는 일반 첨부 파일로 저장됩니다. 그리고 gadak demo --writable은 함께 배포하는
스냅샷을 자격 증명 없는 캐시가 아니라 그 자체로 하나의 트래커로 제공합니다. 사이트와 세
README에 실린 녹화가 폰이 쓰기를 하는 장면을 보여 줄 수 있는 것이 이 덕분입니다
(GDK-1959, GDK-1932).
v0.22.1 — 2026-09-14
Claude Desktop에는 파일 하나로 설치합니다. 이제 릴리스마다
gadak-<버전>.mcpb가 함께 올라갑니다. 그 릴리스의 실행 파일을 담은 Claude
Desktop 확장이고, macOS는 한 파일로 두 칩을 다 덮고 Windows는 x64 exe입니다.
claude_desktop_config.json을 열지 않아도 도구가 붙고, 확장이 묻는 것은 어느
워크스페이스를 읽을지 하나뿐입니다. 공식 MCP Registry에도
io.github.midagedev/gadak으로 올라가 있고, 태그를 달면 릴리스가 게시한
아카이브로 확장을 만들고, 그 파일을 가리키는 Registry 항목까지 게시합니다 (GDK-1822).
gadak이 제 이름과 제 주소를 남의 자리에서 거둡니다. 옛 이름에 더는
반응하지 않습니다. SCRY_* 환경 변수를 읽지 않고, ~/.scry 홈과 scry.db를
처음 실행할 때 옮겨 주던 것, 옛 실행 파일 이름 안내, scry: localStorage 이전이
모두 사라졌습니다. gadak doctor는 남아 있는 ~/.scry 디렉터리를 여전히 알려
줍니다. 그건 지금도 사실이니까요 (GDK-1143). 상세 헤더의 링크 복사도 한 표면
옆에서 같은 일을 합니다. Jira·Linear 워크스페이스에서는 그 이슈의 원본 주소만
클립보드에 올립니다. 그 아래에 gadak:// 딥링크를, serve 워크스페이스면 http
주소까지 한 줄 더 붙이던 것을 뗐습니다. 채팅에 붙일 때마다 보낸 사람 컴퓨터에서만
열리는 주소가 따라갔고, 토스트는 Jira 링크를 복사했다고 말하고 있었습니다
(GDK-1858). 내장 트래커 워크스페이스에는 원본 페이지가 없으니 앱 주소를 그대로
복사합니다. 거기서는 그게 주소입니다. 리스트의 링크 복사도 같은 규칙이
성립하는 자리에서 같게 굽니다. 필터가 전부 JQL로 옮겨진 뷰는 네비게이터 주소만
복사하고, 옮겨지지 못한 절이 있으면 앱 주소가 따라붙으면서 토스트가 그 절을
말합니다. 복사한 http 주소는 이제 복사된 마운트를 달고 갑니다. 호스티드 데모에서는
앱이 아니라 사이트 루트를 가리키고 있었습니다 (GDK-1860).
읽는 사람이 보는 것이 사실입니다. 한국어와 일본어가 그 언어로 쓴 것처럼
읽힙니다. 회고 화면의 한국어에는 주어가
그 동사를 할 수 없는 문장이 하나 있었고, 영문에는 없는 후행·선행 지표 프레이밍이
하나 들어가 있었고, 한 숫자를 두 이름으로 부르고 있었습니다. 일본어 쪽은 한 줄이
같은 술어로 두 번 끝났습니다 (GDK-1848). 이어서 사이트의 일본어가 일본어를 쓰지
않는 사람이 띄어쓰기와 글자를 고른 것처럼 읽힌다는 제보를 받았고, 양쪽 다 수치로
나왔습니다. /ja/ 한 페이지에만 일본어 글자에 붙은 ASCII 공백이 162개였습니다.
라틴과 가나가 만나는 자리뿐 아니라 숫자와 조수사 사이에도 있었습니다. 그리고
font-probe가 lang=ja 페이지의 라틴을 Hiragino Sans로 읽었습니다 — gadak, Jira,
SQL, 그리고 페이지의 모든 숫자가 일본어 서체의 라틴으로 그려지고 있었습니다
(GDK-1853, GDK-1854). 문장은 영문이 말하는 것에 맞춰 전부 다시 썼고, 공백은
사라졌고 게이트가 생겼습니다(tools/ja-spacing.py, doc-checks #60). 일본어 사이의
소스 줄바꿈이 /ja/changelog/에서 공백으로 렌더되던 것도 끝났습니다. 시스템 라틴
서체는 이제 일본어 서체 앞에 섭니다 — 제품 스타일시트가 이미 쓰던 순서입니다.
회고의 밀도 스트립은 물어본 주를 그려 왔습니다. 그 주의 첫날만 빼고요. 아직 도는 버킷은 시작한 지 몇 시간 뒤에 끝나는데, 스트립이 그 끝을 날짜로 잘라내 칼럼 수가 0이 됐습니다. 서버가 그 주에 대해 할 말이 가장 적은 아침에 섹션이 통째로 사라졌습니다. 사람이 회고를 여는 것도 바로 그 아침입니다 (GDK-1859).
v0.22.0 — 2026-09-13
셀프호스트 Jira를 원본으로 씁니다.
gadak init --site <베이스 URL> --server로 워크스페이스를 만듭니다. 이메일 없이
Personal Access Token 하나면 됩니다. Server가 Cloud와 다르게 보내면 다르게
읽습니다. ADF 자리에 오는 wiki markup은 원문 그대로 주고받습니다 (GDK-1637).
docs/SUPPORT_MATRIX.md에는 Cloud·Linear·내장 옆에 Jira Server 열이 붙었습니다.
모든 칸을 Jira Software 11.3.11 랩에서 직접 돌렸고, 안 되는 둘도 안 된다고
적었습니다 (GDK-1635, GDK-1634).
스프린트가 객체가 되고, 회고가 화면이 됐습니다. 전에는 스프린트가 이슈에
붙은 컬럼 세 개였습니다. 그래서 빈 스프린트는 존재하지 않았고 목표도 기간도
어디에도 없었습니다. gadak sprint에 list·add·remove·create·start·close가
생겼고, 원본에 쓴 뒤 다시 읽습니다 (GDK-1653). 내장 트래커도 스프린트를
서빙하니 Atlassian 계정이 없어도 됩니다 (GDK-1666). 보드는 활성
스프린트·백로그·전체 중에서 범위를 고릅니다 (GDK-1656). 활성 스프린트는 목표와
기간, 남은 날, 진행 바를 담은 줄을 따로 갖습니다 (GDK-1709). 팔레트의 주간
회고는 보고서처럼 읽히는 표를 엽니다. 한 주가 한 열, 한 지표가 한 행이고 정의가
그 아래 붙습니다. 행마다 스파크라인과 델타가 있고, 이슈가 든 칸은 그 목록으로
가는 문입니다 (GDK-1660, GDK-1712). ISO 주 대신 스프린트로 끊을 수도
있습니다 (GDK-1693). reopen_count는 팀이 실제로 내는 재오픈을 셉니다. 해결
상태가 진행 중 범주에 앉아 있는 계정에서 done→new만 세던 옛 규칙이 실제 재오픈의
59%를 0으로 읽고 있었습니다 (GDK-1753).
gadak은 밖에 묻지 않고, 자기 얘기를 더 합니다. 새 릴리스가 있는지 하루 한 번
GitHub에 묻던 동작을 없앴습니다. 백그라운드 요청도, updateCheck 설정도, 배너도
없습니다. 나가는 목적지는 여섯에서 다섯이 됐습니다 (GDK-1626).
gadak doctor는 binary 줄을 찍습니다. 심볼릭 링크를 푼 실제 실행 파일 경로와
그 위의 서명입니다. 릴리스는 developer-id, 로컬 빌드는 adhoc. “릴리스가
깨졌다”와 “릴리스를 안 돌리고 있다”를 가르는 짝입니다 (GDK-1798).
gadak comment edit과 gadak comment rm이 세 원본 전부에서 됩니다
(GDK-1647). gadak mcp install claude-desktop은 Claude Desktop에 바로
등록합니다. 전에는 모든 현관이 Desktop 사용자에게 Claude Code의
claude mcp add를 가르쳤습니다 (GDK-1633). 내장 트래커의 첨부 상한은
gadak config set attachmentMaxMB <n>이고 기본값은 1 GiB입니다. 32 MiB가 코드에
박혀 있던 자리입니다 (GDK-1617). 터미널 도크는 1420픽셀 아래에서 상세 패널이
열리면 시트가 됩니다. 몰아야 할 목록을 덮지 않습니다 (GDK-1833). 한국어와
일본어 클립을 프레임 단위로 돌려 보니 카피 리뷰가 놓친 자리가 나왔습니다. 진행
중 한 줄 위에 Backlog와 Selected for Development가 영어로 서 있었고, 같은
단어가 한 화면에서는 内蔵, 다음 화면에서는 組み込み였고, 제품 나머지가
未割り当て라고 하는 자리에 未担当이 있었습니다 (GDK-1837, GDK-1839).
v0.21.0 — 2026-09-08
자리를 비운 사이 무슨 일이 있었는지 미러가 말해 줍니다. 상태 변경·코멘트·
열어본 기록은 이미 미러에 있으니, 0.21은 돌아와서 묻는 질문에 그 데이터로
답합니다. 뭐가 바뀌었나, 이건 얼마나 묵었나, 이번 주는 빨라졌나. 숫자 옆에
정의가 붙고, 판단하는 문장은 없습니다. 전부 미러를 읽기만 하며, 새로 밖으로
나가는 것은 없습니다. gadak retro는 주간 회고를 냅니다. 세션 수, 복귀까지
걸린 시간, 진행 중인 일이 얼마나 오래됐는지, 무엇이 닫히고 얼마나 걸렸는지,
그리고 불일치(마지막 코멘트는 끝났다는데 상태는 아닌 이슈). 모든 행에 정의가
같이 찍히고, --open은 그 칸 뒤의 이슈들을 앱에 띄웁니다. 리스트는 흐린 한
줄로 열립니다. 바뀐 이슈 7 · 그중 내 것 2. 상세 패널은 그 이슈를 마지막으로
연 뒤 무엇이 움직였는지 말합니다. 기준은 내 이전 세션이고, 그 줄은 조용한
아침에도 사라지지 않습니다 (GDK-1537). 정체 표시의 기준은 워크스페이스의
최근 90일 사이클 타임에서 배웁니다. list·ready·next에 age_days가 붙고,
기간 칩에 마우스를 올리면 팀의 p85가 보이며, 열린 상태 아래 끝났다는 코멘트가
있으면 완료로 이동을 조용히 제안합니다. 사이드바는 내장 뷰 다섯
개(GDK-1493)가 차지합니다. 내 이슈, 맡긴 이슈, 전체 미해결, 미할당 신규,
재오픈 이슈. Aging·Epics·Stale 등은 거기서 빠졌고, 뷰로 저장 한 번이면
돌아옵니다.
에이전트가 쓴 것은 그렇다고 적고, 스킬은 일곱 호스트에 설치됩니다.
CLI에서 Jira Cloud·Linear에 쓴 코멘트·전환·이슈 끝에 — via gadak · 이름이
붙어, 사람의 자격증명을 빌린 에이전트의 쓰기를 팀이 구분할 수 있습니다.
actor.trailer=false로 끕니다. 그리고 gadak skill install --client codex|agents|cursor|gemini|opencode|grok, 기존 claude와 함께입니다
(GDK-1508).
일본어, 폰, 그리고 수정 한 차례. 사이트가 /ja/에서 읽히고, 앱은
:lang(ja)에서 일본어 글꼴을 고르며, 라이브 Claude 히어로를 포함한 랜딩 클립
전부가 그 언어의 미러 위에서 en·ko·ja로 찍혔습니다 (GDK-1500, GDK-1501).
폰(TestFlight)에서는 설명·코멘트·위키가 데스크와 같게 렌더되고, 담당자와
우선순위와 제목과 설명을 헤더에서 편집하며, 페어링 스캔 한 번에 토큰 둘이
들어옵니다 (GDK-1497, GDK-1498).
serve 호스트의 미러가 --full 전까지 origin과 어긋날 수 있었습니다. 이제
양방향으로 맞추고 doctor가 짧은 미러를 알립니다 (GDK-1400).
gadak transition KEY inprogress가 표시 이름이 같은 두 목적지를 거절하지
않습니다 (GDK-1356). 터미널을 클릭해 포커스만 줘도 포인터 아래 키가 열리던 일이
없습니다 (GDK-1186). gadak migrate가 우선순위 id 없는 미러에서도
우선순위를 지킵니다 (GDK-1491). Esc 한 번은 패널이 아니라 피커만 닫습니다
(GDK-1401).
v0.20.2 — 2026-09-06
Windows 앱이 Microsoft Store에 올라갔습니다. Windows 데스크톱 앱이
Microsoft Store에 있습니다.
Store가 서명해 주므로 SmartScreen도 Smart App Control도 막지 않고, 설치 안내는
어디서나 Store를 먼저 가리킵니다 (GDK-1380). gadak-desktop.exe는 드디어
GUI 서브시스템 이미지입니다. 앱 옆에 뜨던 빈 콘솔 창(0.16 이후 모든 zip과 첫
Store 패키지에 있었습니다)이 사라졌고, 팩 스크립트가 다시는 그런 파일을 내지
않도록 막습니다. Store 패키지는 실행 별칭을 선언해 Store 설치에서도 gadak이
PATH에 오르고, 세 번째 언어로 ja-JP를 선언합니다.
Linear의 관계가 들어오고, 한 필드는 한 이름을 씁니다. Linear의
관계(blocks·duplicate·related)가 links로 미러되어, Linear 워크스페이스에서
연결 이슈 패널과 블로커 레시피가 동작합니다 (GDK-1299). 같은 필드는 같은
이름입니다. 브레이크다운 축이 필터·컬럼과 같은 라벨을 읽고 (GDK-1399), 링크
타입 카탈로그를 워크스페이스당 한 번만 받아 연결 이슈의 방향 문구가 열 때마다
타입 이름으로 깜빡이던 것이 없어졌습니다 (GDK-1297). wiki, wiki.enabled,
wiki.spaces는 confluence.* 설정 경로의 별칭이고, config get/set이 값이
어디에 저장되는지 알려 줍니다 (GDK-1289). 터미널에서는 포인터가 쉬고 있는
행에 찍힌 이슈 키가 마우스를 움직이기 전에도 바로 클릭됩니다 (GDK-1172).
수정, 그리고 창이 세 언어를 말합니다. Confluence 페이지 버전 쓰기가 실패해도 위키 패스를 죽이지 않고 미러만 조금 덜 채웁니다 (GDK-1307). transition id와 status id가 겹치는 숫자를 거절할 때, 겹치지 않는 두 형태를 이름과 카테고리로 함께 알려 줍니다 (GDK-1305). CI 플레이크 둘, 페어링 mint 테스트와 생성 대화상자 e2e가 사라졌습니다 (GDK-1306, GDK-1295). 그리고 화면이 영어·한국어·일본어로 뜬다는 사실을 README와 설치 페이지에 적었습니다.
v0.20.1 — 2026-09-03
본문은 마크다운이고, 서식 있는 본문도 왕복해서 그대로 돌아옵니다.
마크다운으로 쓰고 ADF로 저장합니다. create -m, edit -m, comment, page
동사, 웹 편집기가 마크다운(제목, 목록, 코드, 표, 링크)을 받아 Jira나 Built-in
트래커의 형식으로 저장합니다
(결정 0012,
GDK-1384, GDK-1383). 상세 패널이 모든 본문을 마크다운으로 렌더하므로,
컷오버 이후 회색 덩어리로 보이던 이슈들이 다시 블록으로 읽히고, 편집기에
Write / Preview가 생겼습니다 (GDK-1385). Linear에도 같은 서식이 그대로
갑니다 (GDK-1386).
서식 있는 본문은 잃는 것 없이 편집됩니다. gadak issue가 마크다운을 찍고
(GDK-1394) 마크다운이 표현하지 못하는 노드(패널, 멘션, 이미지, 색 런)마다
자리표시자를 세우며, edit -m -은 각 노드를 마커 자리에 되돌려 놓습니다.
마커를 지우면 그 노드가 삭제되고, 쓰기가 무엇을 지웠는지 알려 줍니다. 낡은
마커는 거절합니다 (GDK-1396). edit --adf-file과 comment --adf-file은 ADF
문서를 그대로 보냅니다 (GDK-1395). migrate --from은 본문을 평문이 아니라
ADF로 옮깁니다 (GDK-1382).
목록 메뉴는 하나가 되고, 셸은 진짜 이름을 씁니다. 목록 툴바에서 레이아웃, 정렬, 컬럼, “뷰로 저장”이 보기 설정 메뉴 하나로 들어갔습니다. 보드 버튼과 컬럼 버튼이 같은 글리프를 달고 있었기 때문입니다 (GDK-1391). 상태 브레이크다운 축은 어느 origin에서나 “상태”라고 부르고, 순서는 두 번째입니다 (GDK-1390). 터미널에서는 셸 이름이 16진수 여덟 자리가 아니라 “셸 3”이고, F2나 더블클릭으로 바꿀 수 있으며, 이슈 헤더에서 그 이슈의 셸을 열거나 포커스합니다 (GDK-1387, GDK-1195, GDK-1388).
Windows의 Store 패키지, 그리고 수정. Windows에서는
build-windows.ps1 --msix가 Microsoft Store 패키지를 만들고, zip은 그대로
남습니다 (GDK-1380). 새 Built-in 워크스페이스에서 close --resolution이 됩니다
(GDK-1347). edit --batch가 label, component, fix_version을 받습니다
(GDK-1259). 아바타 이니셜이 구두점을 건너뜁니다 (GDK-1351). 코드 안에
인용한 자리표시자 마커는 텍스트로 남습니다 (GDK-1398). 커널이 받지 않은
터미널 리사이즈는 잡힐 때까지 다시 보냅니다. CI 플레이크의 원인이었습니다
(GDK-1192).
v0.20.0 — 2026-09-03
셸이 창 안에 있고, 그 셸은 이슈의 셸입니다. 터미널 도크가 이제 창
전체를 가로지르는 띠입니다. 사이드바, 리스트, 도킹된 상세 아래에 수평 이음매
하나로 놓이고, 기본 높이는 창의 4분의 1, 너비는 모든 열에 걸칩니다(GDK-1352).
세션 roster는 그 왼쪽 열이고 위 사이드바와 같은 폭이라, 창은 여전히 왼쪽이
내비게이션, 오른쪽이 내용으로 읽힙니다(GDK-1355). 도크는 자기 외양도
가집니다. 앱 테마가 무엇이든 dark인데, xterm의 16색은 어두운 바탕용 팔레트라
종이 위에서는 9색이 3.0:1 아래로 떨어졌기 때문입니다. 앱 색을 따르고 싶으면
follow를 고르면 되고, 그 설정과 글꼴, 스크롤백, 커서를 위한 Settings →
Terminal 탭이 생겼습니다(GDK-1357). 라이트 팔레트는 자기 16색을 따로
선언합니다. 벽돌, 이끼, 황토, 쪽빛, 자두, 청록에 두 white는 읽히는 회색이고,
다른 토큰과 똑같이 ui.tokens.colors로 덮어쓸 수 있습니다(GDK-1358). 블록
커서는 채움이 아니라 바탕 위의 잉크이고(GDK-1359), 터미널은 마지막 행
아래까지 자기 바탕을 칠합니다(GDK-1354).
그 터미널에 친 gadak claim은 셸을 이슈에 묶고, roster 탭 이름이 이슈 키가
됩니다. README와 랜딩이 이제 바로 그 장면을 gadak 자체 터미널로 보여 줍니다.
종이 위에 합성했던 터미널 장면은 은퇴했습니다(GDK-1353).
표면을 한 번 훑었고, 뒤로가기가 어디서나 됩니다. 사이드바는 목차가 아니라
돌아가는 길입니다. 맨 위에 워크스페이스 행, 조용한 섹션, 한 줄 푸터가
있습니다(GDK-1335). 리스트 툴바는 뷰를 좁히기 전까지 한 줄이고, 행은 36px,
오래된 이슈의 나이는 상자 대신 숫자로 보이며, 팔레트로 들어가는 문은
하나입니다(GDK-1336). 문서, 스페이스, 방문 기록, 대시보드, 피드 같은 모든 열
화면이 헤더 띠 하나를 공유합니다(GDK-1339). 상세는 바뀌는 것만 남긴 칩 행
아래의 속성 목록 하나이고(GDK-1337), 본문에는 타입 스케일과 넓게 읽기 토글이
생겼고(GDK-1311), 보드의 최근 행위자는 얼굴로 보입니다(GDK-1338). 모든
컨트롤이 반응하고 160ms를 넘는 것은 없으며, hover는 바탕 위의 잉크
워시입니다(GDK-1341). “이 뷰 링크 복사”는 이슈 상세의 링크 복사가 이미
하던 대로 Jira 내비게이터 URL을 먼저, 앱 링크를 뒤에 붙여 넣습니다(GDK-1343).
연 이슈의 키는 조용해지고 그 뒤에 바뀐 이슈에는 점이 붙으며(GDK-1344),
breakdown 범례는 라벨을 조각으로 찌그러뜨리는 대신 +N more로
접히고(GDK-1348), 워크스페이스로 전환은 팔레트 액션이 됐습니다(GDK-1340).
첫 실행은 “이슈가 어디에 있나요?”로 열리고 아무것도 미리 고르지 않으며,
무엇을 묻기 전에 gadak이 무엇인지 먼저 말합니다. 내장 트래커에서는 빈
리스트가 동기화를 약속하는 대신 첫 이슈를 청합니다(GDK-1342, GDK-1345,
GDK-1286, GDK-1287).
첫 인바운드 라운드도 전부 담았습니다. @woojing 님이 다섯 건을 제보해
주셨고(디스커션 #80, 이슈 #85), 모두 이 릴리스에 들어갔습니다. 감사합니다.
링크된 이슈, 사람, 뷰, 검색어 등 모든 장소 이동이 history를 거치므로
브라우저의 뒤로 버튼이 말 그대로 동작합니다(GDK-1296). 상세의 링크 복사는
origin 페이지를 먼저 붙이고(GDK-1290), 설정 대화상자는 탭을 바꿔도 한 폭을
지키고(GDK-1291), 전체화면 창은 Dock을 클릭해도 전체화면에
머물고(GDK-1294), 이 컴퓨터에 없는 워크스페이스를 가리키는 gadak:// 링크는
앱을 404 페이지로 바꾸는 대신 대화상자로 거절됩니다(GDK-1309). 그 과정에서
이슈 링크는 자기 origin에서 열리게 됐습니다. 트래커별 분기 하나뿐이고, 서로
넘나드는 폴백은 없습니다(GDK-1149, GDK-1308).
떠나기와 지키기, 그리고 고친 것. migrate --to linear가 미러를 Linear
팀으로, 멱등하게 보냅니다(GDK-1265). gadak backup이 serve가 도는 채로 내장
트래커의 기록을 복사합니다(GDK-1277). 페어링된 워크스페이스가 홈 origin의
위키를 미러링하고(GDK-1276), pairing mint는 결코 바인딩될 수 없는
loopback 제안을 거절합니다(GDK-1266). Confluence 동기화는 개인 스페이스만
제외하므로 팀 스페이스 유형이 남습니다(GDK-1302). docs/SUPPORT_MATRIX.md
가 Jira·Linear·내장 트래커의 유일한 표이고 셀마다 인용이 있으며(GDK-1300),
내장 트래커는 CLI와 문서 어디서나 한 이름입니다(GDK-1285, GDK-1288).
edit -m -가 빈 stdin을 받으면 설명을 지우는 대신 거절합니다(GDK-1360).
내장 트래커로의 migrate가 status_catalog가 채워진 적 없는 미러에서 상태
이름은 다 옮기고 상태 카테고리는 다 잃었습니다. Done과 In Progress가 열린
이슈로 도착했고, claim이 착지할 진행 중 상태가 없었습니다(GDK-1361). 이름
붙은 워크스페이스의 터미널에 친 쓰기가 더는
warning: workspace: … (from GADAK_WORKSPACE)로 시작하지 않습니다. 그 변수는 serve가 창의 워크스페이스를
알리려고 넣은 것이기 때문입니다(GDK-1362). 신선도 칩이 Jira가 아니라
origin의 트래커를 말하고(GDK-1325), 폰의 페어링 탭이 Built-in이라
말합니다(GDK-1321). 태그 전 감사가 찾은 결함 셋이 들어갔습니다:
init --replace-standalone이 다시 받아들여지고, origin 페이지 없는 이슈가
“Open in Built-in”을 더는 광고하지 않으며, migrate --to linear가 done 상태가
canceled 하나뿐인 팀도 매핑합니다(GDK-1312, GDK-1313, GDK-1314).
v0.19.3 — 2026-09-02
질문 둘에 단어 둘. 워크스페이스는 “너는 어떤 종류냐”에 한 단어로
답했는데, 그 단어가 사실 두 가지를 한꺼번에 담고 있었습니다. origin이 어느
트래커인지, 그리고 그 origin이 여기서 도는지입니다. 페어링된 워크스페이스가
그 이음매를 드러냈습니다. connected라고 보고하는데(남의 트래커라고 읽히는
말입니다) 정작 origin은 한 대 건너에 있는 gadak 자신의 트래커였고, 그것을 알
방법은 별도 pairing 객체뿐이었습니다. 그래서 이제 필드가 둘입니다.
origin_type은 jira·linear·gadak, transport는 local(이 프로세스 안)
또는 remote(serve API 너머)입니다. 새 단어는 하나도 만들지 않았습니다.
sources가 이미 그 트래커 이름들로 키하고 있었기 때문입니다 (GDK-1278,
GDK-1279, GDK-1280).
gadak status --json, doctor --json, workspaces --json, 서빙되는
config, MCP status 툴이 전부 둘을 함께 냅니다. kind도 그대로 나가고 뜻도
그대로입니다. 스킬, 폰, 데스크톱 셸이 전부 그 필드를 읽고 있기 때문입니다.
다만 이제는 더 거친 필드일 뿐입니다.
그런 워크스페이스를 만드는 플래그도 따라갑니다. **gadak init --local**입니다.
--standalone은 계속 동작합니다. 이미 누군가의 스크립트에 들어간 플래그는
계약이기 때문입니다. 다만 별칭으로 등록하는 대신 새 플래그로 번역해서,
도움말은 두 이름이 아니라 하나만 가르칩니다 (GDK-1281). 그 단어는 앱 문구,
문서, 에이전트가 읽는 스킬, 그리고 소스 자체(식별자, 파일명, 테스트명)에서
사라졌습니다 (GDK-1283, GDK-1282). 옛 표기가 의도적으로 남은 자리는 넷이고
전부 wire 계약입니다. 저장된 kind 값, standalone_data_present 에러 코드,
replace_standalone 요청 필드, onboarding/standalone/ 라우트입니다.
수정한 것. migrate는 소스의 첨부 바이트를 못 읽을 때 경고만 하고 그대로
진행했고, 그 아래 모든 것이 성공이라고 보고했습니다. count 표까지 그랬습니다.
attachments 26 26이라고 찍히는데, 그 행은 행 수를 세는 것이고 사라진 것은
바이트였기 때문입니다. 트래커를 떠나는 절차가 소스를 동결한 뒤
마이그레이션이라, 이것은 엣지 케이스가 아니라 평범한 경로였습니다. 이제
export 전에 거절하고, 앞으로 갈 수 있는 길 둘을 다 적어 줍니다 (GDK-1275).
현지화된 사이트에서 옮겨온 워크스페이스에는 “Epic”으로 보이는 이슈 유형이 둘,
“In Progress”인 상태가 둘 있었습니다. 심어 둔 기본값이 마이그레이션된 카탈로그
옆에 나란히 서 있었고, 표시 오버레이가 두 id를 같은 단어로 매핑했기 때문에
--type Epic에는 답이 아예 없었습니다 (GDK-1284).
v0.19.2 — 2026-09-01
트래커를 떠날 때 데이터를 들고 나옵니다. gadak --workspace <새> migrate --from <기존>은 동기화된 워크스페이스의 미러를 새 standalone 워크스페이스로
내보냅니다. 이슈, 코멘트, 전체 이력, 링크, 첨부 바이트, 위키 페이지가 옮겨지고,
끝에 원본과 이전본의 대조표가 나옵니다. 대조표에는 파생 컬럼도 들어갑니다.
reopen 횟수와 epic 키는 이전된 이력에서 다시 계산돼야 하므로, 그 두 줄이 같다는
것이 진짜 증거입니다. 손실은 침묵하지 않고 보고됩니다. 본문은 평문으로 옮겨지고
코드 블록, 미디어, 표가 몇 개 평탄화됐는지 적히며, 이전 대상 밖을 가리키는
링크와 부모는 누락으로 집계됩니다. 이 프로젝트 자신의 백로그로 실측했습니다.
이슈 1,268건, 이력 3,811행, 첨부 26/26, 전 행 일치 (GDK-1264).
그 첫 전량 export가 어렵게 배운 것 둘을 남겼습니다. 시드 문서는 JSON으로 나갑니다. YAML emitter가 실제 트래커 본문에서 자기 파서도 거부하는 블록 스칼라를 쓰기 때문입니다(개행으로 시작하는 값이 충분히 깊게 중첩되면 되읽히지 않습니다, GDK-1269). 내장 트래커는 이제 스냅샷을 내보내기 전에 직접 파싱해 증명합니다. 그리고 문서 끝의 keep 블록은 꼬리 개행을 값의 일부로 저장하므로, 로더는 파싱할 바이트를 더 이상 트리밍하지 않습니다.
이슈가 다른 워크스페이스의 이슈를 가리킬 수 있습니다. gadak ref STD-1 work/NMA-9는 포인터를 기록합니다. 내 origin에 Jira remote issue link로
저장되며, 가리킨 워크스페이스에는 아무것도 쓰지 않습니다. 팀 티켓에 관한 개인
메모가 개인의 것으로 남는 이유입니다. 값어치는 반대쪽에 있습니다. gadak ref STD-1 --list와 앱의 참조 섹션이 대상의 현재 상태, 담당자, 요약을
보여주는데, 이 컴퓨터에 있는 그 워크스페이스의 미러에서 읽습니다. 네트워크
호출도, 탭 전환도 없습니다. 이 컴퓨터가 미러하지 않는 대상도 목록에 남고,
미러가 없다고 말해 줄 뿐입니다 (GDK-1032).
앱이 드디어 워크스페이스를 만들 수 있다고 말합니다. 워크스페이스 생성·페어링·삭제는 0.19부터 설정 → Workspaces에 있었지만, 사이드바의 워크스페이스 섹션이 이미 둘 이상일 때만 나타나서 본 표면은 그 기능의 존재를 말한 적이 없었습니다. 이제 하나일 때도 나타나고, 그 패널로 들어가는 “새 워크스페이스” 줄을 답니다 (GDK-1270).
v0.19.1 — 2026-09-01
직관대로 쓴 쿼리가 곧 맞는 쿼리가 되는 패치입니다. 0.19.0을 내보낸 다음 날 썼습니다.
SELECT key, summary, status FROM issues가 이제 그냥 동작합니다. 미러에서
에이전트가 가장 자주 헛짚던 자리는 구조 문제였습니다. 직관적인 이름은 좁은
내부 테이블이 차지하고 있었고, 정답은 issues_full에 있었습니다. 이제 이름이
의도와 일치합니다. issues가 제목과 본문까지 담은 풀 뷰가 되고,
issues_full은 호환용 별칭으로 남으며, 물리 테이블은 내부 이름으로
물러납니다 (GDK-1258). 그래서 issues에 대한 SELECT *는 이전보다 컬럼이
둘 늘어납니다. 그리고 쿼리가 다른 테이블에 있는 컬럼을 짚으면 에러가 그
자리를 말해줍니다. 예전에는 침묵해서 세 번을 헛짚게 만들던 자리에서, 이제
column "summary" exists on issues — query issues라고 답합니다 (GDK-974).
gadak claim이 in-progress 상태가 둘인 보드에서도 살아남습니다. 진행
카테고리로 들어가는 전환이 두 개인 워크플로에서는, 맨몸의 claim이 후보 둘을
나열만 하고 항상 거절했습니다. 고를 수단이 없었기 때문입니다. 이제
--transition <id|name>으로 갈래를 고를 수 있습니다. 원자 경로와 Cloud
폴백이 같은 해석을 쓰고, 진행 카테고리 밖으로 나가는 목적지는 거절합니다.
claim은 범용 전환이 아니기 때문입니다 (GDK-1174). claim의 나머지 절반도
빨라졌습니다. 터미널 스트립이 자기만의 2초 폴을 기다리는 대신, 쓰기가 떨어진
바로 그 틱에 세션 이름을 바꿉니다 (GDK-1182).
한 standalone 워크스페이스에 붙은 에이전트 둘이 더는 같은 id를 채번하지 않습니다. 코멘트·이력·첨부의 id가 열 때 한 번 시드되는 프로세스별 카운터에서 나와서, 동시 작성자 셋이 서로 다른 이슈에 같은 id를 붙이곤 했습니다. 이제 카운터가 작업 사본 안에 살고, id 하나마다 원자적으로 할당되며, persist 형식은 바뀌지 않습니다 (GDK-1180).
그 밖에, AUR 검증 스크립트의 작업 디렉터리가 레포 안으로 들어왔습니다. Docker
Desktop이 실제로 마운트할 수 있는 자리입니다. 컨테이너 검증은 초록인데
호스트에 .SRCINFO가 남지 않던 경로는 이제 소리 내어 실패합니다
(GDK-1256).
v0.19.0 — 2026-09-01
이슈 목록이 보드로 일어서고, 터미널이 Beta 딱지를 떼는 릴리스입니다.
보드. 늘 필터하던 그 리스트가 이제 보드이기도 합니다. 토글 하나로 같은
이슈들이 컬럼으로 펼쳐지고, 필터와 13개 그룹 축과 검색은 리스트와 그대로
공유합니다. 카드를 끌면 실제 상태 전환이 일어나고(대상 상태가 여럿이면
메뉴가 물어봅니다), 다른 창이나 에이전트의 gadak transition처럼 이 화면
밖에서 일어난 이동은 착지 링과 함께 보드를 가로질러 날아옵니다. 이
화면에서는 그 움직임이 이동이 일어났다는 유일한 증거이기 때문입니다. 상태
축의 컬럼 세 개는 항상 세 개입니다. “Done이 비어 있다”는 사라진 컬럼이
아니라 그 자체로 하나의 대답입니다 (GDK-1175, GDK-1176, GDK-1190).
그리고 뷰는 자신이 보드라는 사실을 기억합니다. 보드 레이아웃으로 저장한
뷰는 앱에서도 CLI(gadak views save "Sprint board" --jql '…' --layout board)에서도 보드로 다시 열리고, 딥링크에도 레이아웃이 실립니다
(GDK-1248).
터미널은 Beta 딱지를 뗍니다 (GDK-1024). 그리고 세션은 이슈의 것이
됩니다. 패널의 셸에서 gadak claim을 실행하면 그 세션이 이슈에 묶이고,
탭이 이슈 키를 달게 됩니다 (GDK-1158). 이슈 본문에 적힌 명령에는 ▶가
붙어서 그 이슈의 셸 프롬프트에 명령을 놓아 주고, 보드 카드와 ⌘K 팔레트
어느 쪽에서도 이슈의 세션을 바로 열 수 있습니다 (GDK-1196, GDK-1197).
패널은 행 전체 아래에 독으로 눕고, 크롬은 한 줄로 줄었으며, 세션은 탭에서
끝낼 수 있습니다 (GDK-1194, GDK-1199, GDK-1200). 포커스된 터미널이
더는 키보드를 가두지 않습니다. Ctrl+Shift+[와 ]로 세션 사이를 오가고,
Ctrl+Shift+`는 아무것도 닫지 않은 채 빠져나오며, Ctrl+Shift+O는
그 세션이 묶인 이슈를 엽니다 (GDK-1250, GDK-1251).
폰이 여러 집을 오가고, CLI는 세션들이 실제로 입력하는 동사를 배웠습니다. 호스트마다 캐시를 따로 가진 로스터로 페어링된 머신들 사이를 오가고, 워크스페이스는 웹과 CLI에서 만들고 지울 수 있습니다. 페어링 없이도 모든 화면을 볼 수 있는 내장 데모 워크스페이스가 실렸고, “자리를 비운 사이 무엇이 움직였나”라는 질문에는 글랜스 스트립이 답하며, 터미널은 손가락으로 스크롤됩니다 (GDK-1097, GDK-1096, GDK-1098, GDK-1051, GDK-871, GDK-899).
CLI에서는 gadak list, next, show, done, recent, pick이 사전 지식
없이 시작한 세션들이 실제로 시도한 명령을 실측해서 고른 동사들입니다. 여기에
에이전트 노트용 memory add/memory search, 잘못 분류된 이슈를 옮기는
edit --type, link에 늘 없던 역방향 동사 unlink, 그리고 workspaces rm이
더해졌습니다. 쓰기는 결과를 스스로 확인해 주고, edit -m은 서식 있는 본문을
소리 없이 평문으로 뭉개는 대신 거부합니다 (GDK-992, GDK-1030, GDK-1205,
GDK-1098, GDK-1001).
거절은 또렷해지고, 쓰기는 안전해지고, 동기화는 빨라졌습니다. 미러의
부분집합이 표현할 수 없는 JQL 절은 결과 목록을 조용히 넓히는 대신 소리 내어
거절됩니다 (GDK-1234). 설정과 자격증명 저장은 하나의 원자적
stage-then-rename 경로를 거치므로, 동시에 일어난 두 저장이 서로를 덮어쓸 수
없습니다 (GDK-1233, GDK-1244). 창이 뜨기 전에 실패한 데스크톱 부팅은
조용히 종료하는 대신 대화상자로 이유를 말하고 (GDK-1243), Linear 담당자
수정은 UI가 안내하는 것과 같은 쓰기 표면을 지나갑니다 (GDK-1235). 그리고
gadak link가 거는 링크의 방향이 Jira가 표시하는 축과 일치하게 됐습니다.
outward와 inward 끝점이 뒤바뀌어 있었고, CLI와 REST 양쪽을 함께 고쳤습니다
(GDK-1204; #79, @wafe 감사합니다). 조용한 미러에서는 동기화도 빨라졌습니다.
Jira 증분 동기화는 겹침 창에서 이미 받아 둔 이슈를 다시 받아오는 대신 미러에서
답하고, Confluence 증분 동기화는 틱마다 CQL 질의 한 쌍만 보내며, 코멘트만
움직인 페이지의 본문을 다시 읽지 않습니다 (GDK-1075, GDK-1074).
그 밖에도 페어링 제안이 스캔할 수 있는 QR 코드로 그려지고 데스크톱에 기기 탭이 생겼습니다 (GDK-1047); 업데이트 대화상자는 마크다운 원문을 쏟아붓는 대신 새 버전을 알리고 릴리스 페이지로 안내합니다 (GDK-1246); 스탠드얼론 워크스페이스는 도움이 될 수 없는 Jira 자격증명 대화상자를 내밀지 않습니다 (GDK-1122); 설치된 에이전트 스킬은 하루에 한 번 바이너리 버전을 따라갑니다 (GDK-996).
이 태그 전에 전체 코드베이스 감사를 한 차례 돌았습니다. 부모 이슈는 GDK-1128입니다.
v0.18.1 — 2026-08-26
터미널을 닫으면 그 안에서 시작한 것까지 전부 닫힙니다. 0.18.0이 내놓은
터미널은 같은 날 뒷정리를 배웠습니다. 셸은 백그라운드 작업을 자기만의
프로세스 그룹에 두기 때문에, 세션을 닫아도 sleep 999 & 같은 작업이나 잊고
둔 에이전트는 영원히 남았습니다. 이제 닫기는 그 세션의 터미널 위에 있는 모든
프로세스를, 훑기를 신뢰할 수 있는 동안 딱 한 번 훑습니다. 두 번째 훑기가
다른 세션의 셸을 찾아낸 리눅스 실측 실패가 “한 번”의 이유입니다
(GDK-950). 패널이 아예 못 열릴 때는 이유를 문장으로, 재시도와 함께
말합니다: Windows에 PTY가 없다, 토큰에 terminal 스코프가 없다, 네트워크가
끊겼다. 웹과 폰이 같은 원본에서 같은 문장을 냅니다 (GDK-944).
gadak views open이 열려 있는 모든 창에 닿습니다. 예전에는 먼저 폴링한
창이 포커스를 소모해 버려서, 정작 보고 있던 창은 그대로였습니다. 같은 초에
실행한 두 번의 views open도 이제 두 번째를 잃지 않습니다. 중복 판정이 쓰인
시각만이 아니라 내용까지 보기 때문입니다 (GDK-960, GDK-981). 낡은 “open”
마커를 남기던 CLI 종료 경로는 그 마커를 지웁니다 (GDK-971).
gadak이 로그 파일을 남기고, doctor가 그 파일을 건네줍니다. Finder에서
실행한 앱은 진단을 한 줄도 남기지 않고 버렸습니다. 이제 gadak doctor가 파일
위치를 알려 주고 최근 에러를 인용합니다. 로그 한 줄이 쓰이기 전에 자격증명은
지워집니다 (GDK-967). 에이전트 스킬은 부딪힌 벽을 스스로 진단하고, 마찰을
조용히 우회하는 대신 보고하도록 에이전트를 가르칩니다 (GDK-968). 호스티드
데모의 미러는 내려받아 자기 gadak에서 열 수 있는 파일로 공개했습니다
(GDK-975). 벤치마크 표는 조용한 머신에서, 데모가 실제로 싣는 코퍼스로 다시
측정했고, 태그 전에 이 델타의 릴리스 감사를 돌렸습니다. 부모 이슈는
GDK-980입니다.
v0.18.0 — 2026-08-26
gadak 안에 터미널이 생겼습니다. ⌘K에서 터미널을 고르거나 `Ctrl+“를 누르면 열립니다. 이슈와 같은 창에 있는 진짜 셸이라, 거기서 코딩 에이전트를 띄우고 그 옆에서 보드가 움직이는 것을 볼 수 있습니다. 웹 탭, macOS 앱, 페어링한 폰 모두 같은 터미널입니다. 한글 조합은 커서 자리에 붙습니다. 캔버스 위에서는 저절로 되는 일이 아닙니다. Beta로 나갑니다. 쓸 만하고, 거친 구석은 이름을 붙여 적어 뒀습니다 (GDK-862, GDK-864, GDK-865, GDK-892, GDK-895, GDK-956).
셸만 열고 그 외에는 아무것도 열지 않는 토큰이 있습니다. gadak pairing mint --scope terminal만 셸을 엽니다. serve나 origin 토큰은 셸을 열지
못합니다. 대신 serve 토큰은 이제 13개 경로 화이트리스트가 아니라 미러 REST
전체에 닿습니다. 터미널 토큰을 폐기하면 그 토큰이 연 셸들이 몇 초 안에
닫히고, 왜 닫혔는지 듣습니다. 루프백은 여전히 토큰이 필요 없습니다
(GDK-863, GDK-883).
폰 앱이 쓸 수 있는 물건이 됐습니다. 내가 저장한 뷰 그대로의 이슈, 그 옆의 위키 문서, 페이지 히트까지 보여주는 검색, 스레드에 바로 착지하는 이슈 상세, 그리고 담당·멘션·리오픈처럼 진짜 내 것에만 오는 알림이 들어왔습니다. 두 번째 토큰으로 터미널에도 닿고, 페어링을 풀면 그 셸도 함께 잊습니다. 내부 TestFlight 배포는 명령 한 줄입니다 (GDK-805, GDK-867, GDK-870, GDK-879, GDK-884, GDK-885, GDK-886, GDK-887, GDK-888, GDK-905, GDK-906, GDK-907, GDK-908, GDK-910).
설치하기 전에 위키를 얼마나 받을지 적혀 있습니다. 위키는 원래도 켜야
켜지고 스페이스 단위였습니다(gadak init --spaces ENG,PROD, 또는 설정 →
소스). 그런데 그 말이 설치하고 sync를 돌린 뒤에야 나왔습니다. 전체
Confluence를 받기엔 양이 너무 많아 보여서 시도를 못 했다는 분이 계셨는데,
애초에 그럴 필요가 없었습니다 (GDK-964). 지금 읽고 계신 이 체인지로그는
사이트에도 있습니다. 두 언어 모두, 복사본이 아니라 저장소에서 렌더한
것입니다. 이 사이트에 없던 검색엔진 기본기도 함께 들어갔습니다: canonical
링크, 사이트맵, 릴리스 구조화 데이터. gadak dev --help가 가진 동사를 전부
적고, gadak pairing은 다른 list 명령들처럼 목록을 냅니다 (GDK-946,
GDK-947). 에이전트 스킬은 설치되지도 않는 파일을 가리키는 대신 동작하는
대시보드 예제를 직접 싣습니다 (GDK-963).
한국어 Jira에서도 gadak create --type Bug가 됩니다. 예전에는 현지화된
사이트마다 한 번씩 죽어서 타입 id를 찾아봐야 했습니다. 이제 이름, id,
epic/subtask, 그리고 실측한 작은 로케일 표가 모두 해석되고, 둘 이상
걸리면 추측하는 대신 충돌을 밝히는 에러를 냅니다 (GDK-741). 대시보드에서
이슈를 여는 링크가 벽을 잃지 않습니다 (GDK-880). gadak open이 실행 중인
serve를 찾으려고 포트를 훑지 않습니다 (GDK-859). WebSocket 업그레이드의
origin을 검사합니다 (GDK-860). 낡은 캐시 행 하나가 UI 전체를 날리지
못합니다 (GDK-835).
v0.17.3 — 2026-08-25
폰이 뼈대에서 벗어났습니다. 페어링한 아이폰이 자기 몫의 serve 페어링
스코프로 미러를 읽습니다. 그 스코프는 한쪽으로만 열린 문이라, 그 토큰은
origin 패스스루를 타지 못하고 origin 토큰은 미러를 통째로 못 가져갑니다.
connected 워크스페이스에서도 pairing mint가 됩니다. 폰 쪽에서는 진짜 상태
이름을 그대로 쓰는 조용한 큐가 첫 화면이고, 페어링은 자기가 주장하는 연결을
실제로 증명하며 실패마다 다음 수를 알려줍니다. 검색은 치기 전에 이미 답을
내놓고(최근 검색과 내 저장된 뷰가 칩으로 나옵니다), 이슈 상세의 코멘트 초안은
전송이 실패해도 살아남고, 알림은 담당·멘션·리오픈만 옵니다. 앱을 보고 있는
동안은 조용합니다 (GDK-796, GDK-797, GDK-798, GDK-799, GDK-800,
GDK-801, GDK-802, GDK-837).
색뿐 아니라 간격·레이아웃·타이포도 내 것입니다. ui.tokens에 축 세 개가
더 붙었고, 하나를 설정하는 것이 나머지를 위태롭게 하지 않습니다. 각각이 키
단위 병합이라, 거절된 쓰기는 설정을 건드리지 않습니다. 토큰 하나는 그 자체로
경로라서 gadak config set ui.tokens.type.terminal 15px처럼 JSON도 따옴표도 없이 씁니다. 모르는 이름은 오타로 저장되는 대신
거절됩니다. gadak config get ui.tokens.dim-catalog가 이름마다
기본값·범위·함께 움직여야 하는 것을 적어 줍니다 (GDK-842, GDK-849,
GDK-850, GDK-852, GDK-853).
검증은 거절하는 대신 경고하고 저장합니다. 대비, 색차, 색각 이상, 토큰 간 관계 검사는 전부 그대로 돌면서 어떤 결과가 될지 말해 주고, 기계가 정말로 이행할 수 없는 것만 거절됩니다. 경고는 진단만이 아니라 다음 수를 함께 줍니다: 대비 줄은 어느 팔레트가 걸리는지와 어디서 고치는지를 짚고, 타입 줄은 함께 움직여야 하는 글자 크기 단계 전체를 찍습니다. 어떤 테마에서든 빠져나오는 길은 언제나 CLI 한 줄입니다 (GDK-856, GDK-857, GDK-858).
대시보드의 링크가 이슈를 열 수 있습니다. 대시보드에서 이슈, 저장된 뷰, 필터된 목록, 검색 등 앱의 어느 경로로든 이동할 수 있고, 외부 링크는 대시보드를 대체하는 대신 새 탭으로 열립니다 (GDK-854).
v0.17.2 — 2026-08-25
에이전트가 대시보드를 만들어 줄 수 있습니다. HTML 문서 하나에 이름 붙인 쿼리들을 더한 형태로, 뷰처럼 저장되고 웹 UI에서 탭 전체로 렌더됩니다. SQL(또는 JQL)은 호스트가 돌려 행만 넘겨주고, 페이지 자신은 네트워크에 닿지 않습니다. 저장하면 열린 탭이 1초쯤 만에 다시 그려지고, 새 미러 데이터는 알아서 밀려 들어옵니다. 차트는 오프라인에서 됩니다. uPlot이 gadak 안에 들어 있어서 CDN도 정책 완화도 필요 없습니다 (GDK-781, GDK-782, GDK-792, GDK-793). 대시보드가 이슈 목록을 덮어 칠하지 못하고 (GDK-815, GDK-821), 다른 것들처럼 Esc에 답합니다 (GDK-827).
원하는 차트 라이브러리는 한 번 받아서 씁니다. gadak dashboards lib add <url>이 받아서 해시를 고정하고 로컬에서 서빙합니다. 요청마다 다시
해시하므로, 나중에 변조된 파일은 실행되는 대신 닫힙니다. 대시보드는 자기가
쓰는 라이브러리를 이름으로 적고, 안 쓰는 쪽은 영향이 없습니다. three.js는
바이너리에서 빠져 문서화된 예제가 됐고, 그만큼(750KB) 모든 다운로드가
가벼워졌습니다 (GDK-808).
색은 내 것입니다. ui.tokens, ui.tokensByTheme, ui.dataColors로 창을
다시 칠하고, 이름은 ui.tokens.catalog로 찾습니다. 쓰기는 기본 팔레트가
통과해야 했던 것과 같은 대비 규칙으로 검사하고, 열린 탭은 새로고침 없이 다시
칠해지며, 부팅 캐시 덕에 커스텀한 설치본이 기본 팔레트를 먼저 번쩍이지
않습니다 (GDK-785, GDK-786, GDK-787, GDK-791).
어느 소스에서 온 답인지 밝힙니다. gadak sql이 낡은 사본으로 답하는
일이 없어졌습니다. 접두사 없는 테이블 이름은 마이그레이션 시점에 얼어붙은
스냅샷이 아니라 살아 있는 local.db로 떨어집니다. 그전까지는 조용히, 틀리게
답하고 있었습니다 (GDK-824). 오래됨 경고도 어느 소스가 낡았는지 말합니다.
mirror last synced 154h ago는 모든 소스를 통틀어 가장 오래된 행에서 나온 값이라, 조용한
Confluence 스페이스 하나가 미러 전체를 6일 된 것처럼 보이게 했습니다. 그동안
status는 10분 전 워터마크를 보여주고 있었습니다. 화면 둘이 반대 이야기를
하는데 어느 쪽을 믿을지 알 길이 없었습니다. 이제 소스 이름을 대고 status와
같은 시각을 찍습니다 (GDK-810). 읽어서 얻은 페이지 id로는 쓸 수 있습니다.
검색이 그 id를 찍고, JSON 도움말이 페이지의 존재를 인정하며, 에이전트
레시피가 origin이 실제로 받는 id를 냅니다 (GDK-816).
CLI가 삼키던 오타 둘도 닫혔습니다. gadak create GDK "…"는 제목이 프로젝트
키로 시작하는 이슈를 만들어 버렸습니다. 이제 --project 철자를 알려주며
거절하고, 첫 단어가 정말로 이 워크스페이스가 아는 키일 때만 그렇게 합니다.
config set projects는 아무 문자열이나 받았습니다. 이제 모양을 검사하고,
사이트에 존재 여부를 물으며, 어긋난 스코프는 status와 sync가 양쪽을 다
짚어 줍니다 (GDK-594, GDK-809). 접어 둔 문서 트리는 sync 후에도 접힌
채입니다 (GDK-817). 피드는 컬럼을 덮는 대신 차지하므로, 피드에서 Esc를
누르면 목록에 착지합니다. 세 언어에 걸친 에러 메시지 14개가 문제만이 아니라
다음 수를 말합니다 (GDK-828, GDK-829, GDK-831). 목록이 보여주는 발췌와
텍스트 검색이 색인하는 것이 한 곳에서 나오므로 서로 어긋날 수 없습니다
(GDK-814).
v0.17.1 — 2026-08-24
gadak 프로세스 둘이 미러 하나를 나눠 씁니다. 2만 개짜리 미러로 하루를 써
보니 둘이 파일 하나를 두고 기다리게 되는 경로가 전부 드러났습니다. standalone
워크스페이스는 이제 원본을 SQLite에 둡니다. 내장 트래커가 타이머마다 YAML
파일을 통째로 다시 쓰는 대신 origin/issuetap.db에 쓰기마다 한 트랜잭션으로
씁니다. 기존 YAML은 한 번 씨앗이 된 뒤 롤백용으로 그대로 남고, export는
여전히 YAML입니다. 백업 대상은 그 파일입니다. 앱을 끄고 복사하거나, 켠 채로
sqlite3 .backup을 쓰세요 (GDK-202).
“Database is busy”가 누가 잡고 있는지 말합니다. Jira에 도달한 쓰기가 로컬
재조회 충돌 때문에 실패하지 않고, 진짜 거절일 때는 에러 코드 대신 이웃 이름을
댑니다: 다른 앱인지, serve인지, CLI인지. gadak doctor가 목록을 냅니다.
방문 기록이 자기 연결을 따로 가져가서 읽기가 sync 뒤에 줄서지 않고,
에이전트의 읽기는 즉시 실패하는 대신 점잖게 기다립니다 (GDK-740,
GDK-753, GDK-754, GDK-757, GDK-755). 가장 느리던 곳도 빨라졌습니다. 2만
이슈에서 실측했습니다. gadak issue KEY가 미러를 통째로 읽는 대신 그 키만 읽습니다. search --jql은 사람 절을 좁게 해석합니다(CLI·서버 양쪽).
doctor는 모든 문서를 훑는 대신 표본을 봅니다 (GDK-747, GDK-748,
GDK-749, GDK-756).
제외가 모든 필터에서 됩니다. 어느 피커의 어느 값에든 ⊘를 붙일 수
있고(Alt-클릭도 됩니다), 일부 메뉴에만 있던 모달 토글을 대체합니다. Copy
JQL은 JQL이 말할 수 있는 곳에 not in을 쓰고 못 담은 축을 알려주며,
search --jql도 같은 부정을 이해합니다 (GDK-771). 좁은 창에서 잘리지도 않습니다.
1100px 아래의 모든 이음매를 감사해 셋을 닫았습니다: 숨지 않던 칩, 글자
중간에서 잘리던 행 컬럼, 그리고 자기가 설명해야 할 레이아웃과 어긋나 있던
최소 너비. CI 검사가 셋을 닫힌 채로 유지합니다 (GDK-758, GDK-766).
gadak.dev에서는 한국어 브라우저에 한국어 페이지를 권합니다. 리다이렉트가
아니라 제안이고, 답을 기억합니다 (GDK-770). 사이트를 읽는 에이전트를 위한
llms.txt, 그리고 전체화면 영상 대신 읽을 수 있는 크기로 제품을 보여주는
랜딩 미디어도 들어갔습니다 (GDK-751, GDK-752).
v0.17.0 — 2026-08-23
이슈가 자기 PR을 압니다. PR·커밋·배포·빌드와 거기 붙은 사람들이,
connected 사이트에서는 미러로 오고 standalone에서는 쓰기까지 됩니다. gadak dev scan이
저장소의 PR을 한 번에 이슈로 쓸어 담고, gadak dev link가 하나를
쓰며, 웹은 GitHub 링크를 앱 안에서 엽니다. 그 링크들은 다음 sync에도
살아남습니다. 패널이 비어 있으면 왜 비었는지 말합니다 (GDK-495, GDK-496,
GDK-497, GDK-527, GDK-531, GDK-536, GDK-537, GDK-538, GDK-539,
GDK-540, GDK-541, GDK-555, GDK-562, GDK-589, GDK-592). 이슈 링크
때문에 앱을 나갈 일도 없어졌습니다. gadak link A B --type blocks를 쓰거나
상세 패널에서 바로 겁니다 (GDK-19, GDK-85).
프로젝트가 요구하는 것을 실제로 해내는 쓰기 동사들. create와 edit가
필수 커스텀 필드용 --field alias=value를 받고, 생성 대화상자는 이
프로젝트와 이 이슈 유형이 실제로 무엇을 요구하는지 배웁니다. transition은
--resolution·--field·코멘트를 함께 나릅니다. edit는 fix version과
컴포넌트를 이름으로 씁니다. assign은 이메일뿐 아니라 이름이나 account id도
받습니다. 타입이 틀린 필드는 빈 문자열로 써지는 대신 거절됩니다. 거절된
parent는 고를 수 있었던 에픽 목록을 알려줍니다 (GDK-254, GDK-330,
GDK-509, GDK-513, GDK-514, GDK-515, GDK-516, GDK-517, GDK-635,
GDK-643). Jira에 도달한 쓰기는 직후의 로컬 재조회가 실패했더라도
성공입니다 (GDK-740). 벌크 읽기는 여러 키나 --keys -를 받고, 조용히 버려지는 것이 없습니다 (GDK-328, GDK-425). gadak claim KEY가 이슈를 한 수에 가져오고, gadak issue는 일이 얼마나 묵었는지
보여줍니다: wait 3d · progress 5h (GDK-591).
쓰기에는 누가 했는지도 붙습니다. GADAK_ACTOR가 에이전트의 이름을 대고, 웹은
봇의 작업에 배지를 붙입니다. 기계의 편집이 내 편집과 구분되지 않는 일이
없도록 하기 위해서입니다. standalone 워크스페이스가 내 언어를 쓰고, 제한된
이슈는 공개 이슈와 다르게 보입니다 (GDK-519, GDK-586, GDK-588,
GDK-590, GDK-593, GDK-597). 에이전트에게는 더 있습니다. gadak pick이
할 일을 고릅니다. gadak recents가 CLI가 읽은 것을 되짚습니다. gadak sync --if-stale 15m은 에이전트가 눈감고 부를 수 있는 세션 오프너입니다. 배치
쓰기는 키마다 정직하게 답합니다. 이슈를 닫는 것은 재시도해도 안전한 왕복
한 번입니다 (GDK-500, GDK-501, GDK-502, GDK-503, GDK-598,
GDK-599).
워크스페이스가 고른 채로 있고, 창은 어디서나 똑같이 굽니다. gadak workspace use <name>이 기본값을 저장합니다. 페어링은 무엇인지·무엇이
실패했는지 사실대로 말하고, 묶인 워크스페이스가 조용히 다른 사이트로 향할 수
없으며, origin을 교체하면 거기서 파생된 행들도 함께 갑니다 (GDK-418,
GDK-433, GDK-449, GDK-452, GDK-453, GDK-490, GDK-561, GDK-677,
GDK-678). rm gadak.db는 더 이상 아무것도 앗아가지 않습니다. 저장된
뷰·방문·검색 기록이 미러 밖으로 나왔습니다. 미러는 버려도 되는 쪽이기
때문입니다 (GDK-105). 한국어 검색이 복합어 안의 단어를 찾고, fix version이
id를 간직하고 프로젝트의 릴리스 카탈로그가 미러에 오며, sprint는 쿼리할 수
있는 컬럼이고, JQL parent = / parent IN이 로컬에서 걸립니다 (GDK-259,
GDK-444, GDK-518, GDK-521, GDK-532, GDK-329).
Esc는 겨눈 것을 닫고 다른 것은 닫지 않습니다. 타입 크기는 넷이고 그 사이는
없습니다. 비어 있음은 공백이 아니라 말이 있는 상태입니다. 스크린이 필요한
전이는 인라인으로 묻고, 컴포넌트와 parent는 제자리에서 고쳐지며, 스토리는
자식을 보여줍니다. 저장된 뷰는 한 종류입니다. 빨리 끝난 읽기는 스켈레톤을
아예 그리지 않습니다. 그리고 일본어 카탈로그 전체가 들어갔습니다 (GDK-83,
GDK-86, GDK-121, GDK-129, GDK-130, GDK-316, GDK-437, GDK-604,
GDK-613, GDK-617, GDK-626, GDK-737, GDK-738, GDK-739).
데스크톱에서는 두 번째 실행이 경쟁자를 띄우는 대신 이미 있는 창을 올립니다.
Windows에서는 gadak:// 링크가 동작하고, install-cli가 Windows 말을 하며,
알리지 않았으면서 알렸다고 하지 않습니다 (GDK-349, GDK-350, GDK-351,
GDK-353, GDK-658, GDK-700).
네트워크도 감사했습니다. 빈 호스트는 루프백이 아닌 바인드로 셉니다. 그래서
serve가 다른 노출과 똑같이 --allow-remote를 요구합니다 (GDK-542).
Linear의 rate limit은 죽음이 아니라 재시도이고, Linear만 있는 워크스페이스도
설정된 워크스페이스입니다 (GDK-263, GDK-654). Web Push 클라이언트는
사라졌습니다: 서버가 404로 답하는 엔드포인트를 부르고 있었고, 벤더 푸시
서비스는 이 프로젝트가 하지 않는 아웃바운드입니다 (GDK-711). gadak 자신의
백로그가 gadak.dev에, 앞문과 데모를 곁에 두고 공개됐습니다. Windows 경고를
설명하는 페이지도 함께 올라갔습니다 (GDK-211, GDK-389, GDK-676).
v0.16.1 — 2026-08-20
Linear가 세 번째 트래커가 됐고, gadak이 거기에 씁니다. 0.16이 시작한 것을
끝내는 릴리스입니다. 워크스페이스 설정의 "linear" 블록과 gadak sync --source linear가 이슈·코멘트·라벨·첨부를 미러링합니다. 쓰기는 그 행을
소유한 origin으로 라우팅되고, Linear가 아직 못 하는 것은 반쯤 적용하는 대신
정직하게 거절합니다. Jira·standalone·Linear가 모두 같은 쓰기 동사에 답합니다
(GDK-263, GDK-359, GDK-360, GDK-361). 같은 릴리스에서 위키도 읽기
전용이기를 그만뒀습니다. 페이지 생성, 제목·본문 편집, 코멘트가 전부 origin을
통과합니다. CLI에서도 REST API에서도 같습니다 (GDK-344, GDK-380,
GDK-381, GDK-382).
gadak 프로세스 둘이 standalone 워크스페이스를 두고 다투지 않습니다.
데스크톱 앱이 serve처럼 자기 origin을 알리므로, 앱과 CLI가 원본 파일을 함께
붙들 수 없습니다. 승인된 쓰기는 답을 받기 전에 디스크에 있고, 영속시키지 못한
쓰기는 그런 척하는 대신 실패합니다. standalone의 실패가 자신을 “자격증명 없음”
으로 보고하지 않고, 워크스페이스를 변환할 때 내 로컬 전용 이슈들에 무슨 일이
일어나는지 말해 줍니다 (GDK-241, GDK-333, GDK-340, GDK-342,
GDK-343, GDK-345, GDK-346, GDK-347, GDK-348).
에이전트와 문서가 standalone의 존재를 배웁니다. 내장 스킬이 그 단어를
알고, CLI가 어느 origin을 말하는지 밝히며, transition이 대상마다
status_id를 대고, 읽기 경로가 방금 건네준 그 값을 받습니다. 에이전트가 계속
실패하던 고리가 바로 거기였습니다. issues_full에 description_text가
생겼고, standalone init이 미러를 채워 아무것도 빈 채로 시작하지 않습니다
(GDK-239, GDK-312, GDK-313, GDK-363, GDK-364, GDK-365,
GDK-366, GDK-367, GDK-368, GDK-371, GDK-376). 설치 페이지가
standalone의 존재를 인정하고, FAQ가 rm -rf ~/.gadak을 권하기를 그만두며,
네트워크가 자기 페이지를 갖고, export/import에 드디어 문단이 생겼습니다
(GDK-271, GDK-372, GDK-373, GDK-374, GDK-375, GDK-601).
v0.16.0 — 2026-08-19
Atlassian 계정 없는 워크스페이스. standalone에서는 origin이 gadak 안에서 돌면서 gadak과 함께 다니는 미니멀 트래커입니다. 미러는 여전히 버려도 되는 캐시고 모든 쓰기는 여전히 origin을 통과합니다. 바뀐 것은 origin이 누구인가뿐입니다. 워크스페이스는 origin 하나에 묶이므로, 자격증명을 연결한다고 해서 조용히 다른 곳을 가리키게 되지 않습니다. standalone 위키도 같은 경로로 씁니다 (GDK-183, GDK-237, GDK-238, GDK-247, GDK-267). 읽기 전용 Linear 클라이언트는 기초 공사로 들어왔습니다. 워크스페이스에는 일부러 아직 연결하지 않았고, 연결은 0.16.1의 몫입니다 (GDK-258, GDK-261, GDK-263, GDK-274).
Windows와 Linux. gadak이 돌기 위해 Mac을 필요로 하지 않게 됐습니다.
Windows에는 포터블 팩, 설치 경로, 동작하는 install-cli, Scoop 매니페스트,
그리고 첫 실행에도 살아남는 gadak:// 링크가 생겼습니다. Linux에는 brew 옆의
tarball 설치와 AUR 패키징 킷이 생겼습니다. Omarchy에는 내 미러에서 무엇이
바뀌었는지 보여주는 바 위젯이 생겼습니다 (GDK-115, GDK-116, GDK-208,
GDK-209, GDK-225, GDK-229, GDK-246, GDK-293). gadak은 새 릴리스를
알아채고, 내 플랫폼에 맞는 말을 하고, 릴리스 노트를 앱 안에서 렌더합니다.
자기를 스스로 업데이트하지는 않습니다 (GDK-213, GDK-214, GDK-215,
GDK-216). 차가운 첫 실행이 모두를 자기 뒤에 줄 세우지 않고, 경합하는 쓰기는
즉사 대신 기다리며, 백그라운드 sync가 자기를 시작한 서버보다 오래 살지
않습니다 (GDK-270, GDK-282, GDK-305). 호스티드 데모가 제품 화면으로
열리고, 피드백 채널이 설정과 macOS 도움말 메뉴에 있습니다 (GDK-335,
GDK-336).
읽는 자리에서 이슈를 고칩니다. 마감일을 상세 패널에서 설정하고 지우며,
Jira의 거절은 읽을 수 있는 문장으로 보여줍니다. 설명은 평문으로 편집하되
서식이 파괴되기 전에 막습니다. s/a/l이 되는 곳이면 p가 우선순위
메뉴를 엽니다. 무엇이 편집 가능한지는 고정 목록이 아니라 그 이슈 자신의
메타데이터에서 나오므로, 내 사이트의 커스텀 필드도 포함됩니다 (GDK-82,
GDK-223, GDK-249, GDK-250, GDK-251, GDK-322, GDK-323,
GDK-331, GDK-332). 팔레트에서는 방금 친 내용으로 이슈를 만들 수 있고
(GDK-217, GDK-218), 답이 뻔한 필수 필드는 질문이기를 그만두며, 코멘트를
달면 드디어 도착했다고 말해 줍니다 (GDK-300, GDK-301, GDK-302).
영어가 아닌 Jira가 조용히 빈손으로 돌아오지 않습니다. 상태·우선순위·이슈
유형이 표시 이름 대신 id와 카테고리로 걸립니다. status = 'In Progress'는 한국어 계정에서 0행이었고, 그 부류의 조용히 틀린 답이 닫혔습니다 (GDK-161,
GDK-248, GDK-272, GDK-275). 한국어 복합어 중간 검색도 됩니다
(GDK-259).
v0.15.2 — 2026-08-17
설정 대화상자가 고치는 모든 필드가 CLI 동사이기도 합니다. gadak config list | get | set과 설정 API가 한 테이블을 통과하므로 서로 어긋날 수
없습니다. 즉 에이전트가 워크스페이스를 처음부터 끝까지 세팅할 수 있습니다.
테마는 워크스페이스 설정 파일에 있어서, UI에서 고르는 것과 터미널에서
설정하는 것이 같은 행위입니다 (GDK-190, GDK-193).
다크 셋, 그중 하나가 내 것. dark는 중성-차가운 차콜, ink는 새로 만든
푸른 검정, ember는 이전의 따뜻한 다크를 그대로 지킵니다 (GDK-190).
검색과 메뉴가 놀라게 하지 않습니다. 모든 검색 표면에서, 숫자만 쳐도 어느 프로젝트에서든 그 이슈를 찾습니다 (GDK-186). 설정 대화상자가 탭마다 미러 블록을 되풀이하지 않습니다 (GDK-188). 메뉴가 등 뒤에서 무엇을 설치하지 않습니다. 설치는 설정 → 통합이 하고, 이미 설치된 것을 말해 줍니다 (GDK-189, GDK-191).
v0.15.1 — 2026-08-17
체크아웃 없이 들어오는 길이 셋 생겼습니다. gadak raycast install이 Raycast 확장을
바이너리 안에 담고 다니므로, brew나 앱으로 설치했다면 체크아웃이 필요
없습니다 (GDK-182). ⌘K 팔레트는 비지 않습니다. 빈 질의에 최근 본 것 아래로
최근 갱신된 이슈와 내 저장된 뷰가 나옵니다 (GDK-184). 설정 →
통합(데스크톱)은 gadak이 설치하는 에이전트 표면들을 나열하고, 이미 있는 것을
정직하게 감지하며, 실시간 로그를 보여줍니다 (GDK-185).
v0.15.0 — 2026-08-17
gadak의 한 조각이 링크로 이동합니다. gadak:// 딥링크로 앱의 모든 자리에
주소가 붙었고, gadak은 자기가 소비하는 링크를 만들기도 합니다. UI의 링크 복사
액션과 CLI의 gadak issue KEY --link입니다 (GDK-119, GDK-124, GDK-163,
GDK-164). 검색은 남의 앱 UI를 굴릴 만큼 빨라졌습니다. 이슈 키를 치면 그
이슈가 나오고, 2만 개짜리 미러에서 최악의 경우가 1.6초에서 110ms로
줄었습니다. 런처 확장이 로컬 앱처럼 느껴지는 것은 그 덕분입니다 (GDK-117,
GDK-166, GDK-170).
제대로 만든 다크 테마. 따뜻한 바탕, 먹빛 전경, 라이트와 같은 종이 은유를 갖췄고, 첫 페인트에 번쩍임이 없습니다. 두 팔레트 모두 같은 실측 하한을 통과합니다. 상태 색은 정상 시각과 색각 이상에서 모두 구분되고, 성공과 실패를 색만으로 말하지 않습니다 (GDK-154, GDK-156, GDK-157, GDK-158, GDK-159, GDK-162, GDK-171).
목록이 목록처럼 굽니다. 행의 오른쪽은 훑을 수 있는 컬럼이고, 마지막 행이
반으로 잘리지 않으며, Esc는 보고 있는 것을 닫고, 목록을 덮는 패널은 덮는다고
말합니다 (GDK-128, GDK-131, GDK-132, GDK-133). 한국어 입력은
검색창과 싸우기를 그만뒀습니다. 조합 중인 음절은 질의가 아니고, 초성 매칭은
제품 전체에서 사라졌습니다. 의도하지 않은 것을 물어오고 있었기 때문입니다
(GDK-168, GDK-169). 이슈는 자기 parent를 댈 수 있습니다. gadak create --parent와 gadak edit --parent가 하위 이슈 관계를 Jira를 통해 씁니다 (GDK-19, GDK-86).
가장자리에서도 정직합니다. 호스티드 데모가 답할 수 없는 동사를 광고하지 않습니다 (GDK-52). 읽기 전용 홈은 시작 거부가 아니라 경고입니다 (GDK-149, GDK-173). 복사는 복사됐다는 뜻이고, 첨부는 많아야 한 번 받아오며, 데스크톱 앱이 런타임을 두 번 로드하지 않습니다 (GDK-150, GDK-177, GDK-178).
v0.14.2 — 2026-08-16
첫 10분과 토큰이 죽는 날을 위한 릴리스입니다. 거절됐거나 곧 만료될 토큰은 먼저 알려 줍니다. 모든 토큰 함정을 401이 도착한 뒤가 아니라 붙여넣기 전에 이름으로 말하고, 거절된 토큰은 아무것도 먼저 쓰지 않고도 복구됩니다 (GDK-68, GDK-69, GDK-98). 만료는 sync가 죽기 전에 경고합니다 (GDK-67).
설정과 스킬 설치가 두고 온 자리에서 끝납니다. 프로젝트를 하나도 안 고르는
것은 미완성 양식이 아니라 선택입니다 (GDK-99). gadak skill install이
업그레이드를 업그레이드로 다루고, 내장 스킬이 CLI에 실제로 있는 동사를 압니다
(GDK-91, GDK-92).
이미 있던 표면이 자기가 무엇을 하는지 보고합니다. 변하지 않은 Confluence에
대한 한 틱은 페이지 본문을 하나도 읽지 않고 (GDK-113),
gadak issue <KEY> --derive가 파생 컬럼이 어디서 왔는지 보여줍니다
(GDK-111). 기록이 순서를 지키고 (GDK-26), gadak sql이 낡은 미러를
경고하며 (GDK-90), 미러를 열 때 이 빌드가 쓸 수 없는 검색 색인을 고칩니다
(GDK-112). 브라우즈 창이 Escape에 양보하고 (GDK-78), 검색 도움말이
터치에서 동작합니다 (GDK-53).
v0.14.1 — 2026-08-15
첫 CLI 쓰기 동사들: gadak create, gadak attach, gadak edit. gadak
자신의 백로그 위에서 gadak을 쓴 하루를, 나온 그대로 내보냅니다.
macOS 앱은 알림만 하고, 데모는 사람들이 실제로 누르는 자리에서 돕니다. 한 번도 실행된 적 없는 인앱 자가 업데이터는 사라졌고, 이 릴리스는 일부러 데스크톱 zip을 내지 않습니다 (GDK-58, GDK-61). 호스티드 데모는 인앱 브라우저 안에서, 폰 너비에서도 읽히는 첫 페인트로 뜹니다 (GDK-23, GDK-51).
실패가 무슨 일이 있었는지 말합니다. 잘린 키 목록은 몇 개가 빠졌는지 말하고, 거절된 자격증명은 한 소스가 아니라 모든 소스의 watch 루프를 멈춥니다 (GDK-24, GDK-35, GDK-48). 우선순위 색은 계정의 언어가 아니라 rank를 읽습니다. 부팅 중의 키 입력은 버려지는 대신 잡아 둡니다 (GDK-46, GDK-76).
v0.14.0 — 2026-08-15
에이전트가 기대고 만들 수 있는 자리가 생겼습니다. gadak_search는 query를
받고, 모든 툴 에러는 ERROR:로 시작하며 받은 키를 되읊고, 크기 상한을 넘는
응답은 온전한 척하는 대신 오래된 코멘트를 덜어내고 truncated라고 말합니다.
세 가지는 그 위에 지어도 되는 약속입니다. issues_full과 RECIPES 쿼리,
gadak sql stdout, views open --keys -가 그것입니다.
숫자, gadak이 지는 행까지 함께. 살아 있는 2,853 이슈 Cloud 프로젝트 대비
실측입니다. 단순 필터 42배, 에픽 GROUP BY 162배, 그리고 REST로 20분쯤 걸리는
리오픈 카운트가 로컬에서 14.5ms입니다.
brew install midagedev/tap/gadak이 이제 앱입니다. gadak-cli가 CLI 전용
formula입니다. gadak export / gadak import는 진짜 아쉬울 것들을
왕복시킵니다. 저장된 뷰, watch, 즐겨찾기가 그것이고, 자격증명도 사이트 URL도
담지 않습니다. 그리고 한국어 README가 생겼고, 설정 대화상자가 프로젝트 선택에
대해 사실이 아닌 것을 주장하기를 그만뒀습니다.
v0.13.0 — 2026-08-14
모든 것을 검색하는 검색창 하나, 그리고 미러보다 오래 사는 기록. ⌘K가 모든
이슈와 문서를 한 색인에서 질의하고, 목록의 필터 칩은 무시합니다. 목록 위의
상자는 원래 하던 일, 즉 이미 있는 것을 좁히는 일을 계속합니다. 이슈·문서·검색이
~/.gadak/local.db의 한 타임라인에 있으므로 미러를 버려도 기록은 남고,
에이전트는 내가 방문한 것과 내가 가진 것을 gadak sql 한 번으로 조인할 수
있습니다.
창이 에이전트를 따라가고, Jira URL을 붙이면 필터까지 같이 옵니다. 임의의 이슈 키
집합이 일급 뷰이므로 gadak views open --keys -가 에이전트의 답을 내 창에
띄웁니다. gadak views open은 gadak에서 열고, gadak open은 Jira로 나갑니다.
셸이 없는 호스트는 새 MCP 툴로 같은 것을 합니다.
네비게이터 URL이나 jql= 절이 해당하는 칩을 적용하고, Copy JQL이 돌아가는
길이며, 지원하지 않는 부분집합은 조용히 버려지는 대신 나열됩니다. 내 Jira 저장
필터가 사이드바에 나오고, gadak views가 그 필터를 나열하고, 표시하고, 열고,
저장합니다.
위키 스코프는 스페이스 단위이고, 나머지는 수리입니다. Confluence
스페이스마다 자기 워터마크를 갖고, 새로 고른 스페이스는 전체를 채우며, 스코프를
떠난 스페이스는 제거됩니다. 코멘트만 바뀐 위키 편집도 미러에 도달하고, 변하지
않은 페이지는 버전을 올리지 않으며, 삭제된 이슈는 단일 항목 sync로 묘비가
세워집니다. 모르는 --profile은 진짜 목록과 함께 에러를 내고, 업로드 후 미러
재조회가 실패하면 문서화된 에러를 돌려줍니다.
수정 둘은 바깥에서 왔습니다. 사람을 이메일이 아니라 account id로 맞추므로, 사람 필터가 내 사이트가 이메일 주소를 보여주는지에 더 이상 기대지 않습니다. JQL·저장된 뷰·필터·멤버 디렉터리 전반에서 그렇습니다 (#1, @elppaaa 감사합니다). 그리고 macOS 창을 드래그할 수 있습니다 (#2, @wafe 감사합니다).
v0.12.0 — 2026-08-13
어두운 대시보드가 아니라 종이. gadak은 가닥입니다. 코팅 없는 종이, 먹, 쪽빛 실 한 올입니다. 마크는 두 획으로 그린 가이고, 수정구 대시보드와 TUI는 사라졌습니다.
개명은 바이너리, 홈 디렉터리(~/.gadak), 환경변수 접두사(GADAK_*), MCP 툴,
모듈 경로, 데스크톱 번들 id까지 갑니다. 기존 ~/.scry 트리는 첫 실행에 이름이
바뀌고, GADAK_* 쪽이 비어 있는 자리에서는 SCRY_*도 여전히 읽습니다.
라벨과 우선순위와 제목이 바꿀 수 있는 것이 됐습니다. 라벨은 목록에서 보이고,
이슈에서 편집되며, 벌크 바에서 선택 전체에 적용됩니다(s·a 옆의 l).
우선순위는 사이트 자신의 카탈로그에서 id로 씁니다. 데스크톱 앱에서
워크스페이스가 동작하고, 자격증명이 있는 워크스페이스마다 자기 sync 루프를
갖습니다. 큰 미러에서 문서 목록이 얼어붙지 않습니다. 1만 페이지 창에서
4,433ms가 68ms로 줄었습니다.
작은 것들. 네이티브 타이틀바가 사라지고 창 컨트롤이 사이드바로
들어갔습니다. gadak skill install이 MCP 없이 Claude Code 스킬을 심고,
gadak install-cli가 돌고 있는 바이너리를 PATH에 놓습니다. gadak doctor는
버그 리포트에 붙여넣을 수 있는, 가려진 진단을 찍습니다. gadak api는 원시
Atlassian REST 탈출구이고, 낯선 호스트에서는 거절됩니다.
v0.9.0 — 2026-08-06
⌘K에 이름을 치면 사람이 열립니다. 사람 축은 이 버전에서 웹만이고, 데모에 사람이 둘 이상 있습니다. 검색은 왜 맞았는지 말하며 맞은 필드의 스니펫을 보여 주고, 목록의 모든 페이지에 한 줄 본문 미리보기가 붙습니다.
타입 스케일 하나와 오브 하나. 진짜 타입 스케일, 6.2:1의 뮤트 텍스트, 모노크롬 아이콘 패밀리 하나, 그리고 빨강이 의미에 예약된 아바타 팔레트입니다. 워드마크의 구가 x-height에 앉고, 모든 아이콘이 같은 그림에서 파생되며, 초승달 로고는 은퇴합니다. 기하도 같이 맞췄습니다. 두 단계 높이 그리드, 중첩을 따르는 코너 반지름, 핀된 상세 패널 헤더, 한 작성자의 연속 코멘트가 헤더 하나 아래 그룹입니다.
v0.8.0 — 2026-08-06
Gadak.app, macOS 데스크톱 앱입니다. 웹 UI가 서명·공증된 자기 창에 있고, 로컬 서버는 전혀 없습니다. 두 번째 실행은 실행 중인 창에 포커스하고, 번들이 CLI를 들고 있습니다. sync는 인앱 온보딩 뒤에 재시작 없이 시작됩니다.
v0.7.0 — 2026-08-06
에이전트가 올바른 미러에 핀됩니다. gadak mcp install <client>가 현재
프로필과 절대 바이너리 경로를 MCP 호스트 등록에 핀합니다. 로컬 API는 열린
프록시이기를 멈춥니다. 크로스 오리진 쓰기와 DNS-rebinding 읽기를 거절하고,
미러 파일 권한은 열릴 때 0600 / 0700으로 조여집니다.
창이 더 빨라지고 살기 편해집니다. 리졸버가 매핑하면 serve가
http://gadak.localhost를 열고, 바쁜 listen 포트는 실행 중인 gadak에 넘기거나
빈 포트로 폴백합니다. 스페이스 이름, 문서 UX 파도(내가 본 / 최근 갱신 /
작성자별), 에픽 기본 뷰가 들어왔습니다. 키보드 트리아지, 신선도 칩, 웜부트
캐시, 이슈 1만 개 픽스처에 대한 인터랙션 성능 게이트도 함께입니다. Confluence
sync는 실제 사이트용으로 단단해졌습니다.
얼굴. 한 번도 없던 워드마크, 로고, favicon입니다. README는 라이브 데모로
시작하고, 데모가 영어를 말하며(CJK 검색을 위해 한국어 내러티브 페이지는
남습니다), docs/FAQ.md가 어려운 질문에 영수증으로 답합니다.
v0.6.0 — 2026-08-06
Confluence 페이지가 items 뼈대에 합류합니다. 그 뼈대의 두 번째 소스이고,
웹 UI의 문서와 TUI 문서 내비게이터(D)로 나타납니다. 페이지 라벨은 fetch 때
모아져 페이지가 나타나는 모든 곳에 보입니다.
에픽 계층을 있는 그대로 봅니다. 파생 epic_key(가장 가까운 level-1
조상) 덕분에 서브태스크가 스토리가 아니라 에픽 아래 묶이고, 웹 UI에서는 그룹
라벨, 행 칩, 브레드크럼, 롤업이 됩니다. 폰은 짜인 컬럼이 아니라 데스크톱
레이아웃을 렌더합니다.
v0.5.0 — 2026-08-05
워크스페이스, 네온 TUI, 그리고 찾아지는 한국어. serve가 모든 프로필을
/w/<name>/ 아래에 마운트합니다. TUI는 앰비언트 애니메이션, 마우스 지원,
팔레트, 매치 하이라이트를 얻습니다. 검색이 prefix 매치를 하므로 활용된
한국어가 찾아집니다.
v0.4.0 — 2026-08-05
세 표면이 자기가 무엇을 하는지 더 말합니다. TUI가 커스텀 필드를 편집하되 Jira가 허용한 값만 씁니다. 업데이트 안내는 모든 표면에서 매일 익명으로 확인하고 opt-out이 있습니다. 호스티드 데모 서비스 워커 핸드셰이크는 브라우저가 데모를 돌릴 수 없으면 깨끗이 타임아웃하고 그렇게 말합니다.
v0.3.0 — 2026-08-05
커스텀 필드가 스스로 설정됩니다. 첫 full sync가 커스텀 필드를 스스로 발견하고 설정하며, 필터 축은 그렇게 발견한 것에서 옵니다. multi-select 에디터도 포함합니다. sync 진행 줄이 진짜 총량을 들고, 프로젝트는 sync에서 선택이며, sync 히스토리는 사이드바 타임스탬프 뒤에 있습니다.
v0.2.1 — 2026-08-05
서명된 바이너리, 그리고 데모라고 말하는 데모. macOS 릴리스 바이너리를 서명하고 공증합니다. 호스티드 데모는 쓰기를 로컬에서 시뮬레이션하고, 변경이 저장되지 않았다고 말하며, 표면을 데모로 식별하는 카피를 답니다.
v0.2.0 — 2026-08-05
기초, 그리고 설치할 것이 없는 데모. 저장 스키마와 HTTP·sync·에이전트 계약,
그리고 WAL, FTS5, 파생 필드 계산기를 갖춘 SQLite 구현입니다. gadak serve가
빌드된 UI를 서빙하고, --allow-remote 없이 루프백이 아닌 주소에 바인드하는
것을 거절합니다. 내장 뷰는 모든 Jira 사이트에서 같은 의미인 축으로 키하고,
resolution과 재오픈 감지는 로컬라이즈된 이름이 아니라 상태 카테고리로
키합니다. 호스티드 데모는 데모 전용 서비스 워커가 서빙하는 정적 스냅샷입니다.
바이너리도 계정도 필요 없습니다.
사이트를 따라가기. 자격증명이 있으면 gadak serve가 기본으로 sync watch
루프를 시작하고, gadak install-service가 launchd 에이전트나 systemd user
unit을 쓰며, 새 개인 피드 이벤트에 OS 데스크톱 알림이 하나 뜰 수 있습니다.
개인 워치 피드는 질의 때 미러에서 30일 창으로 계산됩니다. gadak 자신의
호출량은 gadak status와 설정 런타임 패널에 보이고, 횟수가 0이면 숨습니다.
워크스페이스를 남에게 건네기, 그리고 그렇게 하는 명령줄.
gadak team export / import가 팀이 합의하는 뷰, 필드 맵, 그룹 규칙,
임계값을 쓰고, 자격증명은 절대 다니지 않으며, 자격증명 키를 담은 파일은
import에서 거절됩니다. gadak snapshot은 나눌 수 있는 사본을 짓습니다. --spread는
이슈의 내부 순서를 보존한 채 창에 걸쳐 타임스탬프를 다시 말하고, --scale은
이슈를 새 키에 복제하고, --now는 시계를 핀하며, 게시 전에 자격증명 스캔이
돕니다.
gadak fields가 실제로 채워진 커스텀 필드가 무엇인지 보고합니다. 명령별 도움은
FlagSet에서 생성되어 어긋날 수 없습니다. 즐겨찾기가 미러에 살아서 gadak sql과
에이전트가 볼 수 있고, 호스티드 데모는 로컬 저장소로 폴백합니다. TUI 패리티는
피드 포커스 탭, 저장된 뷰의 sort/dir/group_by, priority_rank로 키하는
우선순위 정렬입니다.
priority_rank로 키하는 우선순위 정렬.