Skip to content

feat(experiment): add Slack brand theme for charm/huh prompts#351

Open
srtaalej wants to merge 7 commits intomainfrom
charm-slack-theme
Open

feat(experiment): add Slack brand theme for charm/huh prompts#351
srtaalej wants to merge 7 commits intomainfrom
charm-slack-theme

Conversation

@srtaalej
Copy link
Contributor

Changelog

Added a custom Slack-branded color theme for CLI prompts when using the charm experiment flag

Summary

This PR adds a custom Slack-branded theme (ThemeSlack()) for charmbracelet/huh prompts using official brand colors (Aubergine, Blue, Green, Yellow, Red) and wires the theme into all 5 charm form constructors so prompts are styled when -e charm is active

Screen.Recording.2026-02-24.at.1.25.24.PM.mov

Requirements

@srtaalej srtaalej added this to the Next Release milestone Feb 24, 2026
@srtaalej srtaalej self-assigned this Feb 24, 2026
@srtaalej srtaalej added enhancement M-T: A feature request for new functionality changelog Use on updates to be included in the release notes experiment Experimental feature accessed behind the --experiment flag or toggle semver:minor Use on pull requests to describe the release version increment labels Feb 24, 2026
@srtaalej srtaalej changed the title feat(charm): add Slack brand theme for huh prompts feat(experiment): add Slack brand theme for charm/huh prompts Feb 24, 2026
@srtaalej srtaalej marked this pull request as ready for review February 24, 2026 18:57
@srtaalej srtaalej requested a review from a team as a code owner February 24, 2026 18:57
@zimeg zimeg changed the base branch from main to charm-iostreams February 24, 2026 20:31
Base automatically changed from charm-iostreams to main February 24, 2026 20:47
Copy link
Member

@zimeg zimeg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👁️‍🗨️ @srtaalej Great eye for details! The preview looks amazing! I'm leaving a few quick comments before testing more - thanks so much for the fast iteration toward this!


import (
"github.com/charmbracelet/huh"
"github.com/charmbracelet/lipgloss"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💄 praise: So great to see these styles shining!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📠 question: Would it be better to move this to the internal/style package? I forget if import errors occur, but it might be nice to keep sequences separate from direct I/O operations.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ooo yes on it 🫡

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗣️ From direct message: This is going to be addressed with #355?

@codecov
Copy link

codecov bot commented Feb 24, 2026

Codecov Report

❌ Patch coverage is 0% with 71 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.45%. Comparing base (1059ec2) to head (d692f11).
⚠️ Report is 7 commits behind head on main.

Files with missing lines Patch % Lines
internal/iostreams/charm_theme.go 0.00% 66 Missing ⚠️
internal/iostreams/charm.go 0.00% 5 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #351      +/-   ##
==========================================
- Coverage   64.48%   64.45%   -0.04%     
==========================================
  Files         213      214       +1     
  Lines       17879    18033     +154     
==========================================
+ Hits        11530    11623      +93     
- Misses       5276     5332      +56     
- Partials     1073     1078       +5     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@zimeg zimeg added semver:patch Use on pull requests to describe the release version increment and removed semver:minor Use on pull requests to describe the release version increment labels Feb 26, 2026
Copy link
Member

@zimeg zimeg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@srtaalej LGTM! I'm leaving a few comments of changes that'd be nice to include with these updates, but nothing that has to land with this PR.

I'm curious about proper contrast in prompt outputs and left a few screenshots for this. Longterm I'd love to include vhs alongside changes with various setups, but for now let's be diligent to screenshots 🚢

"github.com/charmbracelet/lipgloss"
)

// Slack brand colors
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📚 suggestion: Would you have a link to these brandings? It might be nice to include this in comment for ongoing maintenance and curious review-

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that could be nice but its behind okta verification so not visible to public?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@srtaalej Thanks for checking! Let's use another link with similar recommendation instead:

🔗 https://a.slack-edge.com/4d5bb/marketing/img/media-kit/slack_brand_guidelines_september2020.pdf

Comment on lines +27 to +28
slackAubergine = lipgloss.Color("#4a154b")
slackBrightAuberg = lipgloss.Color("#611f69")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎨 issue(non-blocking): This purple-esque might not appear well on dark backgrounds! Would using the following AdaptiveColor methods perhaps help toward this?

create

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👾 ramble: I consider this non-blocking while these are experimental changes, but we should keep watch toward this in ongoing updates before an official release.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📸 ramble: Similar toward the delete command - the prompt text feels almost hidden to me at the moment:

delete

Foreground(slackLegalGray).
Background(lipgloss.Color("#000"))

// Blurred field styles — subdued version of focused
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 question: I'm not familiar with "blurred" or "focused" styles... Can we expand this comment toward when these appear?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗣️ From direct message: This is going to be addressed with #355?

@zimeg
Copy link
Member

zimeg commented Feb 26, 2026

🏷️ I marked this as a patch change while we're using the "experiment" tag too. The changelog label I understand can be included or not, but I forget if these changes are noted in official releases or as part of the experiments page:

🔗 https://docs.slack.dev/tools/slack-cli/reference/experiments

srtaalej and others added 2 commits February 26, 2026 17:26
Co-authored-by: Eden Zimbelman <eden.zimbelman@salesforce.com>
Co-authored-by: Eden Zimbelman <eden.zimbelman@salesforce.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog Use on updates to be included in the release notes enhancement M-T: A feature request for new functionality experiment Experimental feature accessed behind the --experiment flag or toggle semver:patch Use on pull requests to describe the release version increment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants