From a2a155c785cdf43c971b88db174c33ac1e867da3 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Wed, 27 May 2026 15:21:45 -0500 Subject: feat(render): render issue titles and the view name verbatim The buffer should mirror Linear: a value on the page appears exactly as Linear stores it, so the heading title matches what you'd see opening the issue in Linear itself. I flipped pearl-title-case-headings to default nil so titles render verbatim. I also stopped running the view name in the #+title through the title-caser, which was coupled to the same flag. The smart-title-case path stays as opt-in tidying for anyone who wants it. Two transformations remain, both forced by Org's syntax rather than chosen: state names become TODO keywords (Org keywords can't contain spaces, so the real name stays in the LINEAR-STATE-NAME drawer), and descriptions and comments convert between Markdown and Org. Documented under "Fidelity to Linear" in the README. --- tests/test-pearl-heading.el | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'tests/test-pearl-heading.el') diff --git a/tests/test-pearl-heading.el b/tests/test-pearl-heading.el index 2675518..a780143 100644 --- a/tests/test-pearl-heading.el +++ b/tests/test-pearl-heading.el @@ -82,8 +82,18 @@ ;;; rendering on / off -(ert-deftest test-pearl-format-heading-defaults-prefix-and-title-case () - "By default the heading carries the identifier prefix and a title-cased title." +(ert-deftest test-pearl-format-heading-default-prefix-verbatim-title () + "By default the heading carries the identifier prefix and the verbatim title, +matching Linear's own capitalization." + (let ((pearl-show-identifier-in-heading t) + (pearl-title-case-headings nil)) + (let ((out (pearl--format-issue-as-org-entry + '(:id "u" :identifier "SE-401" :title "fix the refresh bug" + :priority 2 :state (:name "Todo"))))) + (should (string-match-p "^\\*\\* TODO \\[#B\\] SE-401: fix the refresh bug$" out))))) + +(ert-deftest test-pearl-format-heading-title-case-opt-in () + "With title-casing opted in, the title is smart-cased; the prefix is unaffected." (let ((pearl-show-identifier-in-heading t) (pearl-title-case-headings t)) (let ((out (pearl--format-issue-as-org-entry -- cgit v1.2.3