체인지로그

날짜별로 무엇이 바뀌었는지.

untactit은 아직 공개 릴리스를 낸 적이 없어, 여기 있는 어떤 항목에도 버전 번호가 없습니다. 실제로 들어간 것을 들어간 날에 적은 빌드 기록입니다.

제품은 매일 사내에서 쓰이며, 아래 항목은 릴리스 노트가 아니라 빌드 로그입니다. 버전과 마이그레이션 경로가 붙은 항목은 정식 출시부터 시작됩니다.

정책

호환성을 깨는 변경은 이렇게 다룹니다.

깨질 것이 생기기 전에 밝혀 둘 만한 원칙입니다. 동작하던 것은 예고 없이 멈추지 않습니다. API와 SDK, 내보낸 데이터의 형태까지 마찬가지입니다.

항목은 그 변경을 배포한 사람이 직접 쓰고, 나중에 마케팅 문구로 고쳐 쓰지 않습니다. 발표문처럼 읽히는 변경 이력은 변경 이력이 아닙니다.

30일 전에 예고합니다

이 페이지에 게시하고, 워크스페이스 관리자에게 메일로 보냅니다. 마이그레이션 경로를 함께 명시합니다.

이전 버전은 12개월 유지

API 버전은 1년 동안 나란히 유지됩니다. 마이그레이션은 저희 일정이 아니라 팀의 일정대로 하면 됩니다.

추가 변경은 조용히 나갑니다

새 필드와 엔드포인트는 예고 없이 추가됩니다. 추가만 할 뿐, 무엇도 없애지 않습니다.

무엇도 조용히 사라지지 않습니다

말없이 없애지 않고, 버전 번호가 그대로인 채 동작을 바꾸지 않습니다.


빌드 로그

배포한 날 바로 적습니다.

각 줄은 변경 그 자체이지 요약이 아닙니다. 날짜는 코드가 들어간 날이지, 언급하기로 정한 날이 아닙니다.

2026-08-19

블로그가 5개 언어로 읽힙니다
각 글은 일본어·한국어·간체·번체로 다시 썼습니다. 기계 치환이 아닙니다. 제목·날짜·링크도 선택한 언어를 따릅니다.
명시적 언어 선택이 브라우저 언어보다 우선
한국어를 선택했는데 일본어 브라우저 환경이면 일본어판으로 배선되던 문제가 있었습니다. 이제 명시적 선택이 우선합니다.
자산 대장 실측 감사 공개
763행 대장을 21개 플랫폼과 ID 단위로 대조해 실재는 약 400행이었습니다. 대장이 거짓말하는 세 가지 경로는 블로그에 있습니다.
오류 페이지 스타일 깨짐 수정
404 페이지가 스타일시트를 상대 경로로 참조해 하위 경로에서 무스타일로 렌더링됐습니다. 에셋은 이제 루트 기준으로 해석됩니다.

2026-08-18

화면을 타입 있는 컴포넌트로 이관
41개 화면이 타입 있는 컴포넌트로 렌더링되고 커밋마다 검사됩니다. 동작이 그대로라는 것이 요점입니다.
건수를 플랫폼 실물과 대조
앱에 표시되는 숫자를 각 플랫폼 자신의 기록과 손으로 대조했습니다. 어긋나면 앱 쪽 숫자가 지는 것으로 처리했습니다.
배포는 4층 게이트를 통과
정적 검사·타입 검사·서버 출처 없는 값 소사·동작 실행의 4층. 전부 통과하지 않은 변경은 앱에 도달하지 않습니다.

2026-08-17

블로그를 자사 도메인으로
실측 기사 4편이 이 도메인으로 옮겨졌고, 외부 플랫폼의 사본은 이곳을 정본으로 가리킵니다.
보안 페이지는 실재하는 통제만 기재
보안 페이지의 각 통제는 실제 출하되는 코드에 대응하고, 예정인 것은 예정으로 명기합니다. 그 뒤에 성문 정보보안 정책이 있습니다.
의존 패키지를 게이트에서 검사
서드파티 의존성은 릴리스 전에 알려진 취약점 데이터베이스와 대조됩니다.
블로그에 피드 추가
/feed.xml 로 구독할 수 있습니다. 새 글만, 트래킹 없음.

2026-08-16

다국어 화면 복구
영어·일본어·중국어(간체/번체) 사전이 404였습니다. 화면은 아무 말 없이 한국어로 되돌아갔습니다. 이제 정상적으로 불러옵니다.
한 줄 설치와 확장 업데이트
설치 스크립트와 브라우저 확장의 업데이트 매니페스트에 접근할 수 없었습니다. 둘 다 다시 서빙합니다. 고친 확장이 실제로 사용자 기기까지 갑니다.
라우트 계약
모든 서버 경로를 선언하고 커밋마다 검사합니다. 누락을 잡아야 할 검사가 정작 멈춰 있었고, 위의 문제들은 그 검사를 되살리자 드러난 것입니다.
상태 페이지
상태를 재는 프로브가 서비스가 떠난 포트를 찌르고 있어, 일어나지도 않은 장애를 보고했습니다. 이제 실제 서비스를 측정합니다.

2026-08-15

커버리지를 서버가 계산합니다
무엇이 어디에 배치됐는지, 각 플랫폼이 무엇을 감당할 수 있는지를 서버가 판정합니다. 같은 조직을 보는 두 브라우저가 같은 수치를 봅니다.
새로고침이 빨라졌습니다
조회 요청에 ETag를 실었습니다. 바뀐 게 없는 새로고침은 수 메가바이트 대신 아무것도 전송하지 않습니다.
근거 없는 수치를 걷어냈습니다
모든 화면에서 서버가 준 적 없는 값을 훑었습니다. 찾은 것은 다시 계산하지 않고 지웠습니다 — 출처 없는 숫자는 빈칸보다 나쁩니다.
거버넌스를 한 화면에
승인과 감사 기록을 한 화면에 둡니다. 결정하는 순간과 기록되는 순간은 같기 때문입니다.

2026-08-14

Gemini에 쓰기까지
Gem을 API로 만들고 되읽습니다. 배포가 더 이상 사람이 웹 앱을 직접 조작하는 데 매이지 않습니다.
벤더 반출 파일로 시작하기
ChatGPT·Gemini가 주는 계정 반출 파일을 그대로 넣으면 됩니다. 서버에 있던 파서를 화면에 연결했습니다.
전 플랫폼 반출 실측
각 대상을 가정하지 않고 실제로 쟀습니다. 쓰기가 성공이라 답했는데 아무것도 도착하지 않았다면 그것은 실패이며, 실패로 적었습니다.

2026-08-12

공개 REST API
버전이 붙은 경로 아래 리소스 11종, 커서 페이지네이션, 그리고 같은 빌드에서 나오는 OpenAPI 문서.
아웃바운드 웹훅
이벤트 7종, HMAC-SHA256 서명, 백오프 재시도, 그리고 무엇이 실패했는지 그대로 보여주는 전송 로그.
멀티테넌트 저장소
모든 읽기·쓰기가 조직 단위로 격리됩니다. 델타 동기화라 라이브러리 전체를 다시 받지 않고 밀린 것만 따라잡습니다.
무상태 인증
토큰이 조직과 역할을 함께 답니다. 클라이언트가 요청만으로 자기 권한을 넓힐 수 없습니다.
웹사이트
정적 스크린샷을 실제 동작하는 제품 데모로 교체했고, 전 페이지가 5개 언어로 렌더됩니다.

2026-08-11

보관 기간
감사 기록은 표준 플랜에서 90일, 엔터프라이즈에서 1년 보관합니다. 데이터를 완전 삭제해도 감사 기록은 남습니다.
클라이언트 라이브러리
Python·Node 클라이언트는 작성과 테스트를 마쳤습니다. 다만 PyPI·npm에 아직 올리지 않아, 정직하게 드릴 설치 명령이 없습니다.
운영 DB 경로
같은 데이터 계층이 로컬에서는 SQLite, 운영에서는 Postgres로 돕니다. 마이그레이션은 다시 돌려도 안전합니다.

2026-08-10

SIEM 내보내기
감사 기록은 행마다 행위자·행위·대상을 달고 나갑니다. 다른 로그와 맞춰보려면 최소한 이 셋이 필요합니다.
조직 모델
역할·구성원·승인 정책을 서버로 옮겼습니다. 이제 판정하는 주체가 브라우저가 아닙니다.
계약·부하 검사
변경이 있을 때마다 계약 검사가 API를 훑습니다. 응답 형태가 깨지면 고객사 연동이 아니라 저희 빌드가 먼저 실패합니다.

아직 남은 것

외부 가동률 모니터링은 아직 배포 전이고, 클라이언트 라이브러리는 미등록이며, 보안 인증은 심사받은 적이 없습니다. 셋 다 해당 페이지에 그대로 적어 뒀습니다 — 직접 찾아내게 두지 않습니다.


그동안에는

실제 상태가 적힌 곳.

아직 끝나지 않은 부분까지 포함해, 지금 상태는 이 두 페이지에 적혀 있습니다.

릴리스 노트가 시작될 때 받아보려면 [email protected]으로 신청해 주세요. 릴리스당 한 통, 그 밖에는 아무것도 보내지 않습니다.

에이전트가 무엇을 실행 중인지, 더는 추측하지 않습니다.

워크스페이스 하나만 연결하면 팀이 실제로 쓰는 스킬·규칙·메모리 전부가 보입니다. 약 10분이면 됩니다.

무료로 시작→ 문의하기

신용카드 없이 시작합니다. 지금 쓰는 툴 그대로 동작합니다.