Skip to content

umm v0.71.5

Choose a tag to compare

@github-actions github-actions released this 09 Sep 04:07
· 12 commits to main since this release

v0.71.5 — 이름 속 줄바꿈 하나에 통째로 날아가던 백업

v0.69.0이 공간을 문서로 내보내는 길을 냈고, v0.71.3은 그 옆에 오래 있던 Markdown
내보내기가 문서가 아니라 백업이라고 적었습니다. 백업인 이유는 v0.65.0부터
umm이 자기가 쓴 파일을 다시 읽어 들이기 때문입니다.

그 파일은 사람이 쓴 말을 뜻이 있는 줄 위에 올려놓습니다. 공간 이름은 배너 제목,
생각 제목은 ## 제목, 갈래는 목록 항목, 연결의 이유는 화살표 뒤. 이 모양들은
줄에서 끝납니다.

그런데 들어오는 쪽에서 줄바꿈을 막는 곳이 하나도 없습니다. 공간 이름은 트림하고
글자 수만 세고, 생각 제목은 온 대로 저장되고, 웹의 입력칸은 <input>이라 우연히
한 줄일 뿐입니다 — API나 MCP 클라이언트는 무엇이든 씁니다.

    공간 이름:  우리 팀↵회고

            전                              후
    ━━━━━━━━━━━━━━━━━━━━━━━━    ━━━━━━━━━━━━━━━━━━━━━━━━
    # 우리 팀                    # 우리 팀 회고
                                (빈 줄)
    회고                        Exported from umm at ...
    Exported from umm at ...
      ↑ 배너 절의 본문이
        "회고"로 시작함

배너를 놓치면 백업이 아닙니다

가져오기가 어떤 파일을 umm 자신의 것으로 인정하는 조건은 하나입니다: 배너가
그 절의 본문 전부일 것. 두 줄짜리 이름의 나머지가 그 본문에 끼어들면 선언을
놓치고, 복원은 남의 Markdown을 읽는 길로 떨어집니다.

            선언을 놓친 뒤 복원되는 것

    id            (사라짐)      canvas 좌표   (사라짐)
    type · color  (사라짐)      갈래          (사라짐)
    연결          (사라짐)      제목 없는 생각 → 전부 "Thought"

실제로 vitest로 확인했습니다 — 두 줄 이름이면 isExport:falsesourceId가 전부
undefined, 한 줄이면 그대로 복원됩니다. 복원할 수 없는 백업은 백업이 아니고,
이것은 이름에 든 줄바꿈 하나로 그렇게 되고 있었습니다.

같은 줄바꿈이 생각 제목에 들면 생각 하나가 둘로 열리고 제목의 절반이 이름으로
남습니다. 갈래 이름에 들면 - line: 키와 Lines of thinking 항목이 — 가져오기가
한 줄씩 읽는 자리 — 한 줄씩 어긋납니다.

규칙은 하나입니다

연결의 Reason은 이미 이 일을 하고 있었습니다(\n을 공백으로). 그 처리를 oneLine
하나로 모으고, 줄 위에 올라가는 모든 자리 — 공간 이름, 생각 제목, 갈래 이름, 갈래의
결론, 연결의 이유 — 가 같은 함수를 지나가게 했습니다. 말은 남기고 줄바꿈만 공백이
됩니다.

var newlines = strings.NewReplacer("\r\n", " ", "\r", " ", "\n", " ")

func oneLine(text string) string {
	return strings.TrimSpace(newlines.Replace(text))
}

형식은 바뀌지 않습니다. 이미 누군가의 디스크에 있는 내보내기 파일은 전과 똑같이
읽힙니다.

검증

시험 2개를 새로 넣었습니다(단위 1 + 통합 1). helper를 무력화해 줄바꿈을 그대로 두면
통합 시험이 배너 제목·생각 제목·갈래 두 줄에서 실패하는 것을 확인했습니다.

  • TestOneLineKeepsTheWordsAndDropsTheBreak\n · \r\n · \r, 앞뒤 공백,
    이미 한 줄인 말, 빈 말
  • TestMarkdownExportKeepsNamesOnOneLineIntegration — 두 줄 이름의 공간을 실제로
    내보내 배너가 절의 본문 전부인지, 생각 제목이 하나인지, 갈래와 그 결론이 한 항목인지

go vet ./... · go test -p 1 ./...(실제 PostgreSQL 17에 대한 통합 시험 포함) ·
gofmt · tsc · oxlint/Prettier · i18n 994키 · vitest 156개 ·
scripts/check-version.sh 통과.

What's Changed

  • auto-improve: Keep a name on the line the export gives it by @hkjang in #147

Full Changelog: v0.71.4...v0.71.5