feat: support features.code_channels in app manifest round trip - #670
feat: support features.code_channels in app manifest round trip#670mcodik wants to merge 1 commit into
Conversation
AppFeatures had no field for code_channels, so Go's json.Unmarshal silently dropped it before the manifest was sent to apps.manifest.validate/update. Add it as a RawJSON passthrough so any future sub-fields survive without further struct changes. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #670 +/- ##
==========================================
+ Coverage 78.19% 78.20% +0.01%
==========================================
Files 239 239
Lines 18149 18149
==========================================
+ Hits 14192 14194 +2
+ Misses 3957 3955 -2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
| ManifestSlashCommandsItems []ManifestSlashCommandsItem `json:"slash_commands,omitempty" yaml:"slash_commands,flow,omitempty"` | ||
| Search *Search `json:"search,omitempty" yaml:"search,flow,omitempty"` | ||
| RichPreviews *RichPreviews `json:"rich_previews,omitempty" yaml:"rich_previews,flow,omitempty"` | ||
| CodeChannels *RawJSON `json:"code_channels,omitempty" yaml:"code_channels,flow,omitempty"` |
There was a problem hiding this comment.
👁️🗨️ question: Should we extend values for code_channels to include the following or are these values sometimes changed?:
type CodeChannels struct {
Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
SlashCommandURL string `json:"slash_command_url,omitempty" yaml:"slash_command_url,omitempty"`
}There was a problem hiding this comment.
Add it as a RawJSON passthrough so any future sub-fields survive without further struct changes.
🌚 note: Am open to this as well but think we benefit from strict structures overall after stable API releases!
|
📚 note: I'm open to keeping this with |
|
nice, I hadnt seen #641 . I'm ok with you merging that instead! re RawJSON vs specified, I picked RawJSON here because its a part of the manifest the CLI doesnt process, so if we ever add new fields to that feature those wont silently get dropped when handled by old CLIs that dont know about the field |
|
@mcodik Now is the time to close this PR. Thanks once more for bumping these features 🪬 |
Changelog
Lets devs set code_channels feature in their manifests, and have it display in
manifest exportSummary
AppFeatures had no field for code_channels, so Go's json.Unmarshal silently dropped it before the manifest was sent to apps.manifest.validate/update. Add it as a RawJSON passthrough so any future sub-fields survive without further struct changes.
Preview
Before

After
Testing
Run
manifest exporton app that has the code_channels feature set in the manifestNotes
(Add any additional context, trade-offs, or follow-up items)
Requirements