Skip to content

Releases: waylake/four-eight

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 30 Jul 05:40

상담 화면에서 말을 줄이고, 창이 좁아도 내용이 잘리지 않게 했습니다.

계산 규칙은 바뀌지 않았습니다. 이미 보신 명식과 해석 내용은 그대로이고, 지난 상담도 그대로 남습니다.

상담 화면이 조용해졌습니다

  • 근거 칩이 한 번만 나옵니다. 예전에는 같은 칩이 머리와 답변 밑에 글자까지 똑같이 두 줄로 있었습니다. 이제 머리에만 있고, 축을 바꾼 뒤의 옛 답변처럼 그 답변이 실제로 쓴 근거가 다를 때만 답변 밑에 함께 표시됩니다.
  • 답변 위의 "풀이" 라벨을 지웠습니다. 답변마다 굵은 글씨 한 줄이 붙어 기록에서 가장 눈에 띄는 것이 내용이 아니라 라벨이었습니다. 이 글을 AI가 썼다는 사실은 답변 밑의 모델 표시와 입력창 밑 고지가 그대로 말합니다.
  • 처음 화면의 인사말이 입력창 바로 위로 내려왔습니다. 예전에는 둘 사이에 화면 높이의 3분의 1이 비어 있었습니다.
  • 머리에 있던 "근거 N개 · 최근 발언 N개"를 지웠습니다. 칩이 이미 보여 주고 있고, 무엇을 기억하지 않는지는 축 메뉴의 도움말에 있습니다.
  • 지난 상담 목록 칸이 넓은 창에서 창의 4분의 1까지 자라던 것을 고쳤습니다.
  • 기록과 입력창 사이에 구분이 생겼습니다. 예전에는 배경색이 같아 긴 기록의 마지막 문장이 입력창에 그대로 닿았습니다.

풀이 본문을 제대로 그립니다

  • 굵게·기울임·목록·인용·제목·코드가 제대로 표시됩니다. 예전에는 모델이 마크다운을 쓰면 ** 같은 기호가 글자 그대로 보였습니다.
  • 쓰는 중에도 기호가 깜빡이지 않습니다.

쓰는 동안 화면이 답을 따라갑니다

  • 답이 길어져도 화면이 바닥을 따라갑니다.
  • 위로 올려 읽으시면 따라가기를 멈춥니다. 앱이 화면을 다시 끌어내리지 않고, 그때 "맨 아래로"가 나타납니다.
  • 긴 문단이 한 번에 들어와도 답이 화면 밖에서 써지지 않습니다.

창이 좁아도 잘리지 않습니다

  • 창을 좁히거나 사이드바를 넓게 끌면 글이 화면 밖으로 잘려 나가던 문제를 고쳤습니다. 상담에서는 입력창이 화면 밖으로 밀려나고 사이드바가 제목줄 밑으로 들어가기도 했습니다. 명식과 캘린더에서도 같은 문제가 있었습니다.
  • 이제 창이 좁아지면 내용이 접히거나 스크롤됩니다.

접근성

  • VoiceOver가 어느 발언이 AI 풀이인지 다시 알려 줍니다.
  • 대비를 높여 쓰시면 답변의 복사·다시 쓰기가 항상 보입니다. 예전에는 마우스를 올려야만 나타났습니다.

달라진 것

  • 창의 최소 너비가 1000에서 1100으로 늘었습니다. 네 화면 중 가장 넓은 명식이 사이드바를 최대로 끌었을 때 요구하는 폭이 그것입니다. 이 값이 작아서 내용이 잘리고 있었습니다.
  • 칸 사이 나눔선을 끌어 폭을 조절하는 기능이 없어졌습니다. 명식·캘린더·상담 세 화면입니다. 그 나눔선이 각 칸이 적어 놓은 최소 폭을 지키지 않아 잘림의 원인이었습니다.
  • 여러 문단에 걸쳐 드래그로 한 번에 선택하는 것이 안 됩니다. 문단 안에서는 됩니다. 답변 전체는 "복사" 버튼이나 마크다운 내보내기로 가져가실 수 있습니다.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 29 Jul 05:54

상담 화면이 채팅 한 화면이 되었습니다.

계산 규칙은 바뀌지 않았습니다. 이미 보신 명식과 해석 내용은 그대로이고, 지난 상담도 그대로 남습니다.

한 화면에서 이어집니다

  • 입력창이 움직이지 않습니다. 예전에는 고민을 적는 화면과 이어가는 화면이 따로였고, 상담을 여는 순간 적는 자리가 화면 가운데에서 바닥으로 옮겨 갔습니다.
  • 로 보내고 ⇧↩로 줄을 바꿉니다. ⌘↩과 보내기 버튼도 그대로 동작합니다. 한글 조합 중에는 Return을 가로채지 않으므로 마지막 음절이 사라지지 않습니다.
  • esc로도 생성을 멈출 수 있습니다. ⌘.도 그대로입니다.
  • 처음 적은 고민이 이후 발언과 같은 모습으로 보입니다.

지난 상담

  • 검색이 생겼습니다(⌘F). 고민 원문과 주고받은 말을 모두 찾습니다.
  • 오늘 · 어제 · 이전으로 묶입니다.
  • 목록을 접을 수 있습니다(⌥⌘S). 접으면 읽는 열이 넓어집니다.
  • 키보드 위아래로 상담을 옮겨 다닐 수 있습니다.

이어 물을 거리

  • 답이 끝나면 이 근거로 더 물을 수 있는 것을 제안합니다. 축마다 고정된 문구이고 모델이 만들지 않습니다.
  • 누르면 입력창에 넣기만 하고 보내지 않습니다. 고쳐 적으실 수 있습니다.

막다른 골목을 없앴습니다

  • 쓸 곳을 아직 고르지 않으셨어도 가 동작합니다. 적으신 말을 기록하고, 풀이는 나중에 받으실 수 있습니다.
  • 생성이 실패하면 그 자리에 다시 시도가 있습니다.
  • 안전 안내가 떠도 적으신 글을 지우지 않습니다.

화면 정리

  • 컴포저 아래 잔글씨가 다섯 줄에서 한 줄이 되었습니다. AI 고지와 목적지 안내는 그대로 항상 보입니다.
  • "오늘의 기운 함께 보기"를 축 메뉴 안으로 옮겼습니다.
  • 복사와 다시 쓰기는 답변에 마우스를 올리면 나옵니다.
  • 메뉴 막대에 상담 메뉴가 생겼습니다 — 새 상담, 입력창으로(⇧⌘L), 상담 검색(⌘F), 목록 토글(⌥⌘S), 내보내기(⇧⌘E).

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 28 Jul 14:23

상담 화면을 다시 만들었고, 추론 모델에서 풀이가 한 글자도 나오지 않던 문제를 고쳤습니다.

계산 규칙은 바뀌지 않았습니다. 이미 보신 명식과 해석 내용은 그대로입니다.

추론 모델에서 답이 안 나오던 문제

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

Choose a tag to compare

@github-actions github-actions released this 28 Jul 13:02

문장을 쓸 곳을 고를 수 있습니다. 이 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

Choose a tag to compare

@github-actions github-actions released this 28 Jul 04:15

해석이 처음부터 완성된 상태로 보이고, AI는 요청할 때만 씁니다. 대화 기능을 상담 단위로 다시 만들었습니다.

계산 규칙은 바뀌지 않았습니다. 이미 보신 명식과 해석 내용은 그대로입니다.

해석 화면이 달라졌습니다

  • 규칙 엔진이 조립한 근거 원문 해설이 항상 먼저 있습니다. 모델이 없어도, 다운로드 전에도, 생성에 실패한 뒤에도 그 자리에 있습니다.
  • AI 문장은 "AI로 다시 쓰기"를 누를 때만 만듭니다. 화면을 열거나 모델을 고르는 것으로 생성이 시작되지 않습니다.
  • 만든 AI 문장이 이 Mac에 남습니다. 앱을 껐다 켜도, 인물을 바꿨다 돌아와도 그대로입니다. 섹션이 끝날 때마다 저장하므로 중간에 앱이 닫혀도 완성된 부분은 남습니다.
  • AI 문장 아래에 근거 원문을 접어 두었습니다. 두 층을 나란히 볼 수 있습니다.
  • 문장의 출처 표기가 기록에서 나옵니다. 어느 모델이 언제 썼는지 그대로 보입니다.
  • 해석을 쓴 뒤 근거 콘텐츠 판이 올라가면 화면에 알립니다. 문장을 조용히 지우지 않습니다.

모델 설정이 유지됩니다

  • 모델을 한 번 고르면 앱을 껐다 켜도 선택이 남습니다. 설정 화면에 다시 오실 일이 없습니다.
  • 메모리 적재는 풀이를 처음 주문할 때 자동으로 일어납니다. 실행할 때 미리 올려두지 않으므로 오늘 AI를 쓰지 않으시면 아무 비용도 들지 않습니다.
  • "메모리에서 내리기"가 선택을 지우지 않습니다.

상담 (대화 기능을 새로 만들었습니다)

  • 고민을 적으면 앱이 어떤 명리 축의 이야기인지 정하고, 그 축의 근거만으로 풀이합니다. 축은 열 가지이며 무엇을 보고 그렇게 읽었는지 화면에 적습니다.
  • 답변에 근거가 붙습니다. 풀이를 받기 전에도 어떤 근거를 쓸지 미리 볼 수 있습니다.
  • 상담을 여는 것과 풀이를 받는 것이 다른 행위입니다. 축을 정하고 근거를 고르고 되묻는 것까지는 모델 없이 동작합니다.
  • 상담이 이 Mac에 남습니다. 며칠에 걸쳐 이어갈 수 있고, 마크다운으로 내보내면 근거 ID까지 함께 나갑니다.
  • 오늘의 기운을 함께 볼지 상담마다 고를 수 있습니다.
  • 무엇을 보고 무엇을 기억하지 않는지 화면에 적었습니다. 기억하는 척하지 않습니다.
  • 많이 힘든 상태가 담긴 글에는 사주 풀이로 답하지 않습니다. 모델을 부르지 않고 상담 전화를 안내하며, 그 글은 저장하지 않습니다.
  • 풀이는 AI 모델이 쓴다는 것, 심리 상담이나 치료가 아니라는 것을 화면에 항상 표시합니다.

고쳐진 것

  • 모델을 고르면 이미 읽은 해석이 전부 다시 생성되던 문제.
  • 앱을 껐다 켜면 모델을 다시 설정하라고 하던 문제.
  • 대화 내용이 모델을 적재하거나 인물을 바꿀 때 지워지던 문제.
  • 해석 화면의 엔진 표기가 현재 설정을 따라가 이미 만든 문장의 출처를 잘못 보여주던 문제.

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 28 Jul 02:06

첫 공개입니다. macOS에서 사주 명식을 계산하고, 그 결과를 이 Mac 안에서 해석합니다.

명식과 계산

  • 절기 입기 시각을 분 단위로 판정해 년주와 월주를 세웁니다. 태양 겉보기 황경을 VSOP87D 계열로 직접 계산하므로 성력 파일도 네트워크도 필요하지 않습니다.
  • 출생지 경도로 진태양시를 보정하고, 한국의 역대 표준시와 서머타임(19481960, 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년입니다. 검증 데이터가 닿는 구간입니다.
  • 삭이나 중기가 자정에 수 초 이내로 근접하는 극단 사례에서 공표 역서와 갈릴 수 있습니다.