Adding new blog post with optional email signup request form#7
Adding new blog post with optional email signup request form#7carlengh wants to merge 15 commits into
Conversation
Added new blog post with optional email form
Added some missing text
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
📝 WalkthroughWalkthroughAdds a documentation-only blog post describing an object-oriented design for Unix-style C++ pipelines: polymorphic message types, callback-driven routing, a Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request introduces a blog post detailing the implementation of Unix-style C++ processing pipelines using operator overloading. The review feedback identifies several technical issues, including the failure of generators to respect downstream continuation signals, the potential for filters to block essential control messages, and a memory safety concern regarding reference captures in lambdas. Additionally, the reviewer suggests removing a stray semicolon and critiques the design of triggering pipeline execution directly within the pipe operator overload.
| next.front(std::make_shared<TextMessage>("Hello ")); | ||
| next.front(std::make_shared<TextMessage>("DocWire ")); | ||
| next.front(std::make_shared<TextMessage>("Pipeline!")); | ||
| next.front(std::make_shared<EndMessage>()); |
There was a problem hiding this comment.
| if (chain.is_generator() && chain.is_leaf()) { | ||
| chain.process(std::make_shared<StartMessage>(), | ||
| MessageCallbacks{[](Msg) { return Continue::Yes; }, | ||
| [](Msg) { return Continue::Yes; }}); | ||
| } |
There was a problem hiding this comment.
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
blog/2026-04-20-unix-style-cpp-pipelines.md (1)
112-119: Consider forwarding non-text messages.The
TextFilterreturnsContinue::Nofor non-TextMessagetypes, which stops propagation. Control messages likeStartMessageandEndMessagemay need to flow through for proper pipeline coordination. Consider forwarding them instead:struct TextFilter : ChainElement { bool is_generator() const override { return false; } Continue process(Msg msg, MessageCallbacks next) override { - if (!dynamic_cast<TextMessage *>(msg.get())) - return Continue::No; - return next.front(msg); + // Forward all messages; filtering logic can be more selective if needed + return next.front(msg); } };Alternatively, explicitly allow control messages to pass through while filtering only data messages.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@blog/2026-04-20-unix-style-cpp-pipelines.md` around lines 112 - 119, The process implementation in TextFilter (class ChainElement) currently returns Continue::No for non-TextMessage types, which stops propagation; change TextFilter::process(Msg msg, MessageCallbacks next) to forward non-text messages by calling next.front(msg) instead of returning Continue::No, or alternatively detect control message types (e.g., StartMessage, EndMessage) and only filter out non-control/data messages while forwarding control messages via next.front(msg); update the dynamic_cast(TextMessage *) check and return path accordingly so control messages can propagate.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@blog/2026-04-20-unix-style-cpp-pipelines.md`:
- Around line 121-129: The process method in struct TextExporter contains an
extraneous semicolon after the return statement; locate the
TextExporter::process implementation (the function named process) and remove the
stray semicolon following "return Continue::Yes;" so the statement is clean
(keep the return Continue::Yes; line and delete the additional semicolon).
- Around line 282-290: The iframe's src attribute is malformed because it
contains Markdown link syntax rather than a raw URL; update the iframe element
(the src attribute on the iframe with title "DocWire Engineering Updates") to
use the direct URL
https://tally.so/embed/0QjA2Z?alignLeft=1&hideTitle=1&transparentBackground=1&dynamicHeight=1
(remove the surrounding [text](...) markup) so the iframe can load correctly
while keeping width, height, frameBorder, marginHeight and marginWidth
unchanged.
---
Nitpick comments:
In `@blog/2026-04-20-unix-style-cpp-pipelines.md`:
- Around line 112-119: The process implementation in TextFilter (class
ChainElement) currently returns Continue::No for non-TextMessage types, which
stops propagation; change TextFilter::process(Msg msg, MessageCallbacks next) to
forward non-text messages by calling next.front(msg) instead of returning
Continue::No, or alternatively detect control message types (e.g., StartMessage,
EndMessage) and only filter out non-control/data messages while forwarding
control messages via next.front(msg); update the dynamic_cast(TextMessage *)
check and return path accordingly so control messages can propagate.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 06425d80-0e24-4c86-97c8-e5d3fd2540a6
📒 Files selected for processing (1)
blog/2026-04-20-unix-style-cpp-pipelines.md
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
removed syntax error
Fixed syntax error
Another syntax change.
Summary by CodeRabbit