Releases: waylake/four-eight
Release list
v0.5.0
상담 화면에서 말을 줄이고, 창이 좁아도 내용이 잘리지 않게 했습니다.
계산 규칙은 바뀌지 않았습니다. 이미 보신 명식과 해석 내용은 그대로이고, 지난 상담도 그대로 남습니다.
상담 화면이 조용해졌습니다
- 근거 칩이 한 번만 나옵니다. 예전에는 같은 칩이 머리와 답변 밑에 글자까지 똑같이 두 줄로 있었습니다. 이제 머리에만 있고, 축을 바꾼 뒤의 옛 답변처럼 그 답변이 실제로 쓴 근거가 다를 때만 답변 밑에 함께 표시됩니다.
- 답변 위의 "풀이" 라벨을 지웠습니다. 답변마다 굵은 글씨 한 줄이 붙어 기록에서 가장 눈에 띄는 것이 내용이 아니라 라벨이었습니다. 이 글을 AI가 썼다는 사실은 답변 밑의 모델 표시와 입력창 밑 고지가 그대로 말합니다.
- 처음 화면의 인사말이 입력창 바로 위로 내려왔습니다. 예전에는 둘 사이에 화면 높이의 3분의 1이 비어 있었습니다.
- 머리에 있던 "근거 N개 · 최근 발언 N개"를 지웠습니다. 칩이 이미 보여 주고 있고, 무엇을 기억하지 않는지는 축 메뉴의 도움말에 있습니다.
- 지난 상담 목록 칸이 넓은 창에서 창의 4분의 1까지 자라던 것을 고쳤습니다.
- 기록과 입력창 사이에 구분이 생겼습니다. 예전에는 배경색이 같아 긴 기록의 마지막 문장이 입력창에 그대로 닿았습니다.
풀이 본문을 제대로 그립니다
- 굵게·기울임·목록·인용·제목·코드가 제대로 표시됩니다. 예전에는 모델이 마크다운을 쓰면
**같은 기호가 글자 그대로 보였습니다. - 쓰는 중에도 기호가 깜빡이지 않습니다.
쓰는 동안 화면이 답을 따라갑니다
- 답이 길어져도 화면이 바닥을 따라갑니다.
- 위로 올려 읽으시면 따라가기를 멈춥니다. 앱이 화면을 다시 끌어내리지 않고, 그때 "맨 아래로"가 나타납니다.
- 긴 문단이 한 번에 들어와도 답이 화면 밖에서 써지지 않습니다.
창이 좁아도 잘리지 않습니다
- 창을 좁히거나 사이드바를 넓게 끌면 글이 화면 밖으로 잘려 나가던 문제를 고쳤습니다. 상담에서는 입력창이 화면 밖으로 밀려나고 사이드바가 제목줄 밑으로 들어가기도 했습니다. 명식과 캘린더에서도 같은 문제가 있었습니다.
- 이제 창이 좁아지면 내용이 접히거나 스크롤됩니다.
접근성
- VoiceOver가 어느 발언이 AI 풀이인지 다시 알려 줍니다.
- 대비를 높여 쓰시면 답변의 복사·다시 쓰기가 항상 보입니다. 예전에는 마우스를 올려야만 나타났습니다.
달라진 것
- 창의 최소 너비가 1000에서 1100으로 늘었습니다. 네 화면 중 가장 넓은 명식이 사이드바를 최대로 끌었을 때 요구하는 폭이 그것입니다. 이 값이 작아서 내용이 잘리고 있었습니다.
- 칸 사이 나눔선을 끌어 폭을 조절하는 기능이 없어졌습니다. 명식·캘린더·상담 세 화면입니다. 그 나눔선이 각 칸이 적어 놓은 최소 폭을 지키지 않아 잘림의 원인이었습니다.
- 여러 문단에 걸쳐 드래그로 한 번에 선택하는 것이 안 됩니다. 문단 안에서는 됩니다. 답변 전체는 "복사" 버튼이나 마크다운 내보내기로 가져가실 수 있습니다.
v0.4.0
상담 화면이 채팅 한 화면이 되었습니다.
계산 규칙은 바뀌지 않았습니다. 이미 보신 명식과 해석 내용은 그대로이고, 지난 상담도 그대로 남습니다.
한 화면에서 이어집니다
- 입력창이 움직이지 않습니다. 예전에는 고민을 적는 화면과 이어가는 화면이 따로였고, 상담을 여는 순간 적는 자리가 화면 가운데에서 바닥으로 옮겨 갔습니다.
↩로 보내고⇧↩로 줄을 바꿉니다.⌘↩과 보내기 버튼도 그대로 동작합니다. 한글 조합 중에는 Return을 가로채지 않으므로 마지막 음절이 사라지지 않습니다.esc로도 생성을 멈출 수 있습니다.⌘.도 그대로입니다.- 처음 적은 고민이 이후 발언과 같은 모습으로 보입니다.
지난 상담
- 검색이 생겼습니다(
⌘F). 고민 원문과 주고받은 말을 모두 찾습니다. - 오늘 · 어제 · 이전으로 묶입니다.
- 목록을 접을 수 있습니다(
⌥⌘S). 접으면 읽는 열이 넓어집니다. - 키보드 위아래로 상담을 옮겨 다닐 수 있습니다.
이어 물을 거리
- 답이 끝나면 이 근거로 더 물을 수 있는 것을 제안합니다. 축마다 고정된 문구이고 모델이 만들지 않습니다.
- 누르면 입력창에 넣기만 하고 보내지 않습니다. 고쳐 적으실 수 있습니다.
막다른 골목을 없앴습니다
- 쓸 곳을 아직 고르지 않으셨어도
↩가 동작합니다. 적으신 말을 기록하고, 풀이는 나중에 받으실 수 있습니다. - 생성이 실패하면 그 자리에 다시 시도가 있습니다.
- 안전 안내가 떠도 적으신 글을 지우지 않습니다.
화면 정리
- 컴포저 아래 잔글씨가 다섯 줄에서 한 줄이 되었습니다. AI 고지와 목적지 안내는 그대로 항상 보입니다.
- "오늘의 기운 함께 보기"를 축 메뉴 안으로 옮겼습니다.
- 복사와 다시 쓰기는 답변에 마우스를 올리면 나옵니다.
- 메뉴 막대에 상담 메뉴가 생겼습니다 — 새 상담, 입력창으로(
⇧⌘L), 상담 검색(⌘F), 목록 토글(⌥⌘S), 내보내기(⇧⌘E).
v0.3.1
상담 화면을 다시 만들었고, 추론 모델에서 풀이가 한 글자도 나오지 않던 문제를 고쳤습니다.
계산 규칙은 바뀌지 않았습니다. 이미 보신 명식과 해석 내용은 그대로입니다.
추론 모델에서 답이 안 나오던 문제
0.3.0에서 DeepSeek·o 계열·Gemini 같은 추론 모델을 지정하면 "답이 길이 한도에서 잘렸습니다"만 나오고 풀이가 한 글자도 나오지 않았습니다. 요금은 나갔습니다.
원인은 앱이 출력 상한 700을 보내고 있었던 것입니다. 이 값은 이 Mac의 Gemma에 맞춘 것인데, 추론 모델은 그 한도를 생각과 답변에 함께 쓰기 때문에 700이 전부 생각에 쓰였습니다.
- 출력 상한을 기본으로 보내지 않습니다. 제공자의 기본값을 씁니다. 앱이 고를 수 있는 옳은 숫자가 없습니다 — 같은 모델도 제공자 라우트에 따라 상한이 32배까지 갈립니다.
- 요금을 묶고 싶으시면 설정 → 해석에서 값을 넣으실 수 있습니다. 비워 두시는 것을 권합니다.
- 그래도 생각만 하다 끝나면 그 사실을 그대로 말합니다 — 몇 자를 생각에 썼는지와 무엇을 하면 되는지. "잘렸습니다"로 뭉개지 않습니다.
- 상한을 자동으로 올려 다시 보내지 않습니다.
finish_reason: length가 네 가지 원인을 뭉갠 값이어서, 올리는 것이 해결인 경우와 악화인 경우가 섞여 있습니다.
상담 화면
- 답변마다 근거 칩이 붙습니다. 0.3.0까지는 붙지 않았습니다. 그리고 그 답변이 실제로 쓴 근거를 표시하므로, 축을 바꾸셔도 이전 답변의 인용이 그대로 유지됩니다.
- 풀이가 전폭 본문으로 나옵니다. 테두리 카드와 들여쓰기를 걷어냈습니다.
- 행 길이를 고쳤습니다. 한글 기준 한 행이 48자를 넘어 접근성 상한(40자)을 벗어나 있었습니다. 지금은 38자입니다.
- 입력칸이 자동으로 포커스를 받습니다. 첫 풀이까지 클릭 다섯 번 중 둘이 포커스에만 쓰였습니다.
- 단축키를 버튼에 적었습니다 —
풀이 받기 ⌘↩,중단 ⌘.. - 주 버튼이 하나입니다. "적어만 두기"는 ⋯ 메뉴로 옮겼습니다.
- 쓰는 중에도 다음 말을 입력할 수 있습니다.
- 근거 머리가 스크롤과 무관하게 항상 보입니다.
- 축 칩을 누를 수 있습니다. 라우팅이 실패할 때까지 기다리지 않고 처음부터 고르실 수 있습니다.
다시 쓰기가 이전 답변을 지우지 않습니다. 새 답변이 그 아래에 붙습니다.- 답변마다 복사 버튼이 있습니다.
- 첫 화면의 잔글씨를 네 줄에서 두 줄로 줄이고, 권하지 않는 축은 접었습니다.
고쳤습니다
- 축을 바꿀 때 오늘의 기운 근거가 빠져 있었습니다.
지금 이 시기를 고르면 근거가 대운 하나로 줄었습니다. - "이 명식에는 … 권하지 않습니다"가 사실이 아니었습니다. 그 목록은 오늘의 일진까지 보고 계산하므로 날짜에 따라 바뀝니다.
- 원격 제공자를 쓰실 때 "이 Mac에서 돌아가는 AI 모델이 씁니다"라고 표시되던 문구를 고쳤습니다.
- 릴리스 노트의 굵게·링크 표기가 업데이트 대화상자에 원본 그대로 보이던 문제를 고쳤습니다.
v0.3.0
문장을 쓸 곳을 고를 수 있습니다. 이 Mac의 Gemma 4 외에, 직접 지정한 OpenAI 호환 제공자에게 주문할 수 있습니다.
계산 규칙은 바뀌지 않았습니다. 이미 보신 명식과 해석 내용은 그대로입니다.
프라이버시 — 먼저 읽어 주세요
이 앱은 지금까지 "생년월일시와 해석은 네트워크로 전송되지 않습니다"라고 말해 왔습니다. 기본값에서는 그 문장이 그대로 참입니다. 아무것도 설정하지 않으시면 달라지는 것이 없습니다.
원격 제공자를 직접 설정하신 경우에만 글이 나가고, 그때는 이렇게 다룹니다.
- 처음 보내기 전에 실제로 나갈 글자를 그대로 보여 드립니다. 요약이 아니라 원문이고, "동의합니다" 체크박스가 아닙니다.
- 확인은 주소(호스트)마다 한 번만 묻습니다. 매번 물으면 읽지 않고 누르는 습관이 생기고, 그러면 확인이 있는 것이 없는 것보다 나쁩니다.
- 인물 이름과 생년월일시 원본은 나가지 않습니다. 계산이 끝난 명식 사실과 근거 원문, 그리고 상담에 적으신 글만 나갑니다.
- 화면과 설정의 프라이버시 문장이 지금 설정에서 계산됩니다. 고정된 문구로 두면 언젠가 거짓말이 됩니다.
- 이미 만들어진 문장에는 어디서 썼는지가 함께 기록됩니다. 섹션마다, 답변마다 따로 남으므로 이 Mac에서 쓴 문장이 원격에서 쓴 것으로 표시되지 않습니다.
보낸 글을 제공자가 어떻게 다루는지(학습 사용 여부, 보관 기간)는 이 앱이 알 수 없습니다. 그 부분은 제공자의 정책을 직접 확인하셔야 합니다.
문장을 쓸 곳 고르기
- 설정 → 해석에서 "이 Mac에서" 또는 "지정한 제공자에게"를 고릅니다.
localhost에서 도는 Ollama·LM Studio는 경고 없이 지원됩니다. 루프백이므로 글이 기기를 벗어나지 않고, 거기에 같은 경고를 띄우면 경고가 진짜 필요한 자리에서 의미를 잃습니다. 키가 없어도 됩니다.- 실제로 호출되는 주소를 입력하는 동안 그대로 보여 드립니다. 빈 경로에
/v1을 몰래 붙이지 않습니다 — 짐작이 틀리면 404가 나면서 사용자는 자기가 넣은 주소가 쓰였다고 믿게 됩니다. - 이 Mac 밖으로 평문
http는 거부합니다. 경고가 아닙니다. API 키와 적어 주신 글이 같은 패킷에 실려 중간에 그대로 읽힙니다. - "저장하고 확인"이 짧은 요청을 실제로 한 번 보냅니다. 모델 목록만 받아 보는 방식은 키를 검사하지 않고 목록을 내주는 곳에서 통과해 버립니다.
- 제공자가 요청을 거절하면 그쪽이 쓴 문장을 그대로 보여 드리고, 어느 호환 스위치를 켜면 되는지 짚어 드립니다. 앱이 마음대로 다른 요청을 다시 보내지는 않습니다.
- 제공자가 토큰 사용량을 보고하면 표시하고, 보고하지 않으면 아무 말도 하지 않습니다. 요금을 추정하지 않습니다.
- 제공자 목록을 앱에 넣지 않았습니다. 이유는 ADR 0011에 있습니다.
고쳤습니다
- 상담에서 덧붙이는 말도 안전 선별을 통과합니다. 지금까지는 처음 적은 고민만 검사했습니다. 위기 표현이 걸리면 모델을 부르지 않고 기록도 남기지 않으며, 원격을 쓰시는 경우 아무것도 전송되지 않습니다.
- 답변마다 출처를 따로 기록합니다. 상담은 며칠에 걸쳐 이어질 수 있고 그 사이 쓰는 곳을 바꾸실 수 있는데, 지금까지는 마지막 값이 모든 답변에 붙어 있었습니다.
- 해석 섹션마다 출처를 따로 기록합니다. 절반을 만들고 다른 곳에서 이어가면 앞의 절반까지 나중 것으로 표시되던 문제입니다.
- 원격에서 답이 길이 한도에 걸려 잘리면 알려 드립니다. 잘린 해설은 완성된 해설처럼 읽히므로 표시하지 않으면 알 수 없습니다.
- 원격 생성을 중단하면 그 섹션을 완성된 것으로 표시하지 않습니다. 이어가기가 그 섹션을 건너뛰지 않습니다.
알려진 제약
- 앱을 업데이트하면 저장하신 API 키를 다시 넣어야 할 수 있습니다. 이 앱은 Apple 개발자 인증서로 서명되지 않았고, 그런 경우 이 Mac의 키체인은 업데이트된 앱을 다른 프로그램으로 봅니다. 앱이 그 상태를 알아보고 무엇을 하면 되는지 알려 드립니다. 키를 다른 곳에 대신 저장하지는 않습니다 — 평문으로 남는 것이 잃는 것보다 나쁩니다.
- 게이트웨이 구독을 쓰시는 경우, 모델에 따라
/chat/completions가 아닌 다른 규격으로 라우팅되는 곳이 있습니다. 그런 모델은 이 앱에서 동작하지 않으므로 확인 버튼으로 미리 보시는 편이 빠릅니다. - Azure OpenAI는 지원하지 않습니다. 주소에 질의 문자열이 필요하고 인증 헤더 이름도 다릅니다.
v0.2.0
해석이 처음부터 완성된 상태로 보이고, AI는 요청할 때만 씁니다. 대화 기능을 상담 단위로 다시 만들었습니다.
계산 규칙은 바뀌지 않았습니다. 이미 보신 명식과 해석 내용은 그대로입니다.
해석 화면이 달라졌습니다
- 규칙 엔진이 조립한 근거 원문 해설이 항상 먼저 있습니다. 모델이 없어도, 다운로드 전에도, 생성에 실패한 뒤에도 그 자리에 있습니다.
- AI 문장은 "AI로 다시 쓰기"를 누를 때만 만듭니다. 화면을 열거나 모델을 고르는 것으로 생성이 시작되지 않습니다.
- 만든 AI 문장이 이 Mac에 남습니다. 앱을 껐다 켜도, 인물을 바꿨다 돌아와도 그대로입니다. 섹션이 끝날 때마다 저장하므로 중간에 앱이 닫혀도 완성된 부분은 남습니다.
- AI 문장 아래에 근거 원문을 접어 두었습니다. 두 층을 나란히 볼 수 있습니다.
- 문장의 출처 표기가 기록에서 나옵니다. 어느 모델이 언제 썼는지 그대로 보입니다.
- 해석을 쓴 뒤 근거 콘텐츠 판이 올라가면 화면에 알립니다. 문장을 조용히 지우지 않습니다.
모델 설정이 유지됩니다
- 모델을 한 번 고르면 앱을 껐다 켜도 선택이 남습니다. 설정 화면에 다시 오실 일이 없습니다.
- 메모리 적재는 풀이를 처음 주문할 때 자동으로 일어납니다. 실행할 때 미리 올려두지 않으므로 오늘 AI를 쓰지 않으시면 아무 비용도 들지 않습니다.
- "메모리에서 내리기"가 선택을 지우지 않습니다.
상담 (대화 기능을 새로 만들었습니다)
- 고민을 적으면 앱이 어떤 명리 축의 이야기인지 정하고, 그 축의 근거만으로 풀이합니다. 축은 열 가지이며 무엇을 보고 그렇게 읽었는지 화면에 적습니다.
- 답변에 근거가 붙습니다. 풀이를 받기 전에도 어떤 근거를 쓸지 미리 볼 수 있습니다.
- 상담을 여는 것과 풀이를 받는 것이 다른 행위입니다. 축을 정하고 근거를 고르고 되묻는 것까지는 모델 없이 동작합니다.
- 상담이 이 Mac에 남습니다. 며칠에 걸쳐 이어갈 수 있고, 마크다운으로 내보내면 근거 ID까지 함께 나갑니다.
- 오늘의 기운을 함께 볼지 상담마다 고를 수 있습니다.
- 무엇을 보고 무엇을 기억하지 않는지 화면에 적었습니다. 기억하는 척하지 않습니다.
- 많이 힘든 상태가 담긴 글에는 사주 풀이로 답하지 않습니다. 모델을 부르지 않고 상담 전화를 안내하며, 그 글은 저장하지 않습니다.
- 풀이는 AI 모델이 쓴다는 것, 심리 상담이나 치료가 아니라는 것을 화면에 항상 표시합니다.
고쳐진 것
- 모델을 고르면 이미 읽은 해석이 전부 다시 생성되던 문제.
- 앱을 껐다 켜면 모델을 다시 설정하라고 하던 문제.
- 대화 내용이 모델을 적재하거나 인물을 바꿀 때 지워지던 문제.
- 해석 화면의 엔진 표기가 현재 설정을 따라가 이미 만든 문장의 출처를 잘못 보여주던 문제.
v0.1.0
첫 공개입니다. macOS에서 사주 명식을 계산하고, 그 결과를 이 Mac 안에서 해석합니다.
명식과 계산
- 절기 입기 시각을 분 단위로 판정해 년주와 월주를 세웁니다. 태양 겉보기 황경을 VSOP87D 계열로 직접 계산하므로 성력 파일도 네트워크도 필요하지 않습니다.
- 출생지 경도로 진태양시를 보정하고, 한국의 역대 표준시와 서머타임(1948
1960, 19871988)을 반영합니다. UTC+8:30 시대도 포함합니다. - 지장간, 십신, 십이운성, 신살, 공망, 합충형파해, 오행 분포, 신강신약, 대운을 산출합니다.
- 윤달을 포함한 한국 음양력을 변환합니다.
- 출생 시각을 모르면 시주를 비운 삼주로 봅니다. 임의로 채우지 않습니다.
오늘과 캘린더
- 오늘 화면에서 일진과 대운·세운·월운, 그날이 명식과 만나는 지점을 봅니다.
- 월간 캘린더에 날마다 일진이 적히고, 충·삼합·일간합이 닿는 날이 표시됩니다.
- 메뉴바에서 앱을 열지 않고 오늘의 기운을 확인합니다.
- 날에 등급을 매기지 않습니다. 좋은 날과 나쁜 날 대신 어떤 성격의 기운이 실리는지만 서술합니다.
해석
- 해석 규칙 108개. 모든 문단에 근거 칩이 붙고, 누르면 그 문장을 만든 명리 규칙의 원문이 나옵니다.
- Gemma 4 E2B 또는 E4B를 선택해 내려받으면 같은 내용이 자연스러운 문장으로 다시 쓰입니다. 생성은 언제든 멈추고 이어갈 수 있으며, 이미 만든 섹션은 다시 쓰지 않습니다.
- 명식을 두고 대화할 수 있습니다. 모델은 확정된 사실과 매칭된 규칙만 받고, 근거에 없는 것은 지어내지 말고 모른다고 답하도록 지시받습니다.
- 모델이 없어도 앱은 완전하게 동작합니다. 규칙 엔진이 근거를 그대로 조립합니다.
유파 차이
진태양시 보정 방식, 균시차, 자시 경계, 대운수 끝처리를 설정에서 고를 수 있습니다. 기본값을 정하되 그것을 정답이라 부르지 않습니다. 적용된 보정은 명식 화면에 항상 표시됩니다.
정확도
- 공표 절기 시각 51건(1954~2026)과 ±90초 이내로 일치합니다.
- 외부에 공개된 사주 사례 7건과 명식이 완전히 일치합니다. UTC+8:30 시대에 서머타임이 겹친 경우, 절입 2분 뒤 출생, 자시 경계로 갈리는 쌍, 해외 출생을 포함합니다.
- 검증 테스트 49개.
프라이버시
생년월일시와 해석은 네트워크로 전송되지 않습니다. 네트워크는 모델을 내려받을 때만 쓰입니다.
알려진 제약
- Apple 공증을 받지 않았습니다. 직접 내려받으면 첫 실행에서 Gatekeeper를 한 번 통과해야 합니다. Homebrew로 설치하면 이 과정이 없습니다. 자세한 내용은 README를 보세요.
- 지원 범위는 1900년부터 2100년입니다. 검증 데이터가 닿는 구간입니다.
- 삭이나 중기가 자정에 수 초 이내로 근접하는 극단 사례에서 공표 역서와 갈릴 수 있습니다.