diff options
| author | Ben Sima <ben@bensima.com> | 2025-12-01 07:40:49 -0500 |
|---|---|---|
| committer | Ben Sima <ben@bensima.com> | 2025-12-01 07:40:49 -0500 |
| commit | 4919cf825d4fdbcecc1f69fcf2a32176dfdde5ac (patch) | |
| tree | 0853eef48784ffb840589ddfdd305de7507f11cd /Omni/Jr | |
| parent | e3f20289bdf3014b418367931fbd9cf96239061a (diff) | |
Add author field to task comments (Human vs Junior)
Comments now track whether they were made by a Human or by Junior
(the agent). The CommentAuthor type is stored in the database and
displayed in the web UI with styled badges.
Task-Id: t-201
Diffstat (limited to 'Omni/Jr')
| -rw-r--r-- | Omni/Jr/Web.hs | 13 | ||||
| -rw-r--r-- | Omni/Jr/Web/Style.hs | 24 |
2 files changed, 35 insertions, 2 deletions
diff --git a/Omni/Jr/Web.hs b/Omni/Jr/Web.hs index 88e0442..d191454 100644 --- a/Omni/Jr/Web.hs +++ b/Omni/Jr/Web.hs @@ -1624,7 +1624,16 @@ instance Lucid.ToHtml TaskDetailPage where renderComment currentTime c = Lucid.div_ [Lucid.class_ "comment-card"] <| do Lucid.p_ [Lucid.class_ "comment-text"] (Lucid.toHtml (TaskCore.commentText c)) - Lucid.span_ [Lucid.class_ "comment-time"] (renderRelativeTimestamp currentTime (TaskCore.commentCreatedAt c)) + Lucid.div_ [Lucid.class_ "comment-meta"] <| do + Lucid.span_ [Lucid.class_ ("comment-author " <> authorClass)] (Lucid.toHtml (authorLabel (TaskCore.commentAuthor c))) + Lucid.span_ [Lucid.class_ "comment-time"] (renderRelativeTimestamp currentTime (TaskCore.commentCreatedAt c)) + where + authorClass = case TaskCore.commentAuthor c of + TaskCore.Human -> "author-human" + TaskCore.Junior -> "author-junior" + authorLabel author = case author of + TaskCore.Human -> "Human" :: Text + TaskCore.Junior -> "Junior" :: Text commentForm :: (Monad m) => Text -> Lucid.HtmlT m () commentForm tid = @@ -2880,7 +2889,7 @@ server = taskCommentHandler :: Text -> CommentForm -> Servant.Handler (Headers '[Header "Location" Text] NoContent) taskCommentHandler tid (CommentForm commentText) = do - _ <- liftIO (TaskCore.addComment tid commentText) + _ <- liftIO (TaskCore.addComment tid commentText TaskCore.Human) pure <| addHeader ("/tasks/" <> tid) NoContent taskReviewHandler :: Text -> Servant.Handler TaskReviewPage diff --git a/Omni/Jr/Web/Style.hs b/Omni/Jr/Web/Style.hs index 00d66c2..86a3729 100644 --- a/Omni/Jr/Web/Style.hs +++ b/Omni/Jr/Web/Style.hs @@ -1276,6 +1276,24 @@ commentStyles = do fontSize (px 13) color "#374151" whiteSpace preWrap + ".comment-meta" ? do + display flex + alignItems center + Stylesheet.key "gap" ("8px" :: Text) + ".comment-author" ? do + display inlineBlock + padding (px 2) (px 6) (px 2) (px 6) + borderRadius (px 2) (px 2) (px 2) (px 2) + fontSize (px 10) + fontWeight (weight 600) + textTransform uppercase + whiteSpace nowrap + ".author-human" ? do + backgroundColor "#dbeafe" + color "#1e40af" + ".author-junior" ? do + backgroundColor "#d1fae5" + color "#065f46" ".comment-time" ? do fontSize (px 11) color "#9ca3af" @@ -1825,6 +1843,12 @@ darkModeStyles = backgroundColor "#374151" borderColor "#4b5563" ".comment-text" ? color "#d1d5db" + ".author-human" ? do + backgroundColor "#1e3a8a" + color "#93c5fd" + ".author-junior" ? do + backgroundColor "#064e3b" + color "#6ee7b7" ".comment-time" ? color "#9ca3af" ".comment-textarea" ? do backgroundColor "#374151" |
