summaryrefslogtreecommitdiff
path: root/Omni/Jr
diff options
context:
space:
mode:
authorBen Sima <ben@bensima.com>2025-12-01 12:48:51 -0500
committerBen Sima <ben@bensima.com>2025-12-01 12:48:51 -0500
commitfc67e1d6d92cde1adf7dc852a6cb2df279ffff5f (patch)
treefcc243d90cd8d9185b27990bfe3ab923e78d334f /Omni/Jr
parent41fc5370fd9f7b7fe5486f4c35321f28f093720e (diff)
Fix timeline dark mode styling and render comments/thoughts as markdown
- Add dark mode styles for comment-bubble and thought-bubble - Render comments with renderMarkdown instead of plain text - Render thoughts with renderMarkdown instead of renderTextWithNewlines - Remove unused renderTextWithNewlines function
Diffstat (limited to 'Omni/Jr')
-rw-r--r--Omni/Jr/Web.hs17
-rw-r--r--Omni/Jr/Web/Style.hs6
2 files changed, 10 insertions, 13 deletions
diff --git a/Omni/Jr/Web.hs b/Omni/Jr/Web.hs
index ecc851d..03072bb 100644
--- a/Omni/Jr/Web.hs
+++ b/Omni/Jr/Web.hs
@@ -2444,8 +2444,8 @@ renderCommentTimelineEvent content actor timestamp now =
Lucid.span_ [Lucid.class_ "event-icon"] "💬"
renderActorLabel actor
renderRelativeTimestamp now timestamp
- Lucid.div_ [Lucid.class_ "event-content comment-bubble"] <| do
- Lucid.toHtml content
+ Lucid.div_ [Lucid.class_ "event-content comment-bubble markdown-content"] <| do
+ renderMarkdown content
-- | Render status change event
renderStatusChangeEvent :: (Monad m) => Text -> TaskCore.CommentAuthor -> UTCTime -> UTCTime -> Lucid.HtmlT m ()
@@ -2500,10 +2500,10 @@ renderAssistantTimelineEvent content _actor timestamp now =
Lucid.span_ [Lucid.class_ "event-label"] "Thought"
renderActorLabel TaskCore.Junior
renderRelativeTimestamp now timestamp
- Lucid.div_ [Lucid.class_ "event-content thought-bubble"] <| do
+ Lucid.div_ [Lucid.class_ "event-content thought-bubble markdown-content"] <| do
let truncated = Text.take 2000 content
isTruncated = Text.length content > 2000
- renderTextWithNewlines truncated
+ renderMarkdown truncated
when isTruncated <| Lucid.span_ [Lucid.class_ "event-truncated"] "..."
-- | Render tool call event
@@ -2589,15 +2589,6 @@ renderCollapsibleOutput content =
Lucid.pre_ [Lucid.class_ "tool-output-pre"] (Lucid.toHtml content)
else Lucid.pre_ [Lucid.class_ "tool-output-pre"] (Lucid.toHtml content)
--- | Render text with literal \n replaced by <br> tags
-renderTextWithNewlines :: (Monad m) => Text -> Lucid.HtmlT m ()
-renderTextWithNewlines txt =
- let parts = Text.splitOn "\\n" txt
- renderPart idx part = do
- Lucid.toHtml part
- when (idx < length parts - 1) <| Lucid.br_ []
- in traverse_ (uncurry renderPart) (zip [0 ..] parts)
-
-- | Decode JSON tool result and render in a user-friendly way
renderDecodedToolResult :: (Monad m) => Text -> Lucid.HtmlT m ()
renderDecodedToolResult content =
diff --git a/Omni/Jr/Web/Style.hs b/Omni/Jr/Web/Style.hs
index a169cd7..4efba18 100644
--- a/Omni/Jr/Web/Style.hs
+++ b/Omni/Jr/Web/Style.hs
@@ -2005,6 +2005,12 @@ darkModeStyles =
".retry-value" ? color "#9ca3af"
".retry-commit" ? backgroundColor "#374151"
".event-bubble" ? backgroundColor "#374151"
+ ".comment-bubble" ? do
+ backgroundColor "#374151"
+ color "#d1d5db"
+ ".thought-bubble" ? do
+ backgroundColor "#44403c"
+ color "#d6d3d1"
".event-label" ? color "#d1d5db"
".line-count" ? do
backgroundColor "#374151"