Skip to content

ci: promoted release workflow for v*-turq.* tags#1

Merged
hughmadden merged 996 commits intomainfrom
feature/profile-bootstrap-file
Feb 23, 2026
Merged

ci: promoted release workflow for v*-turq.* tags#1
hughmadden merged 996 commits intomainfrom
feature/profile-bootstrap-file

Conversation

@turquoisebaydev
Copy link
Owner

Adds a GitHub Actions pipeline that triggers on tags like v2026.2.22-turq.1, builds dist, runs smoke tests (macos+ubuntu), and publishes a GitHub Release asset openclaw-dist-.tgz.

steipete and others added 30 commits February 22, 2026 07:35
steipete and others added 28 commits February 22, 2026 10:28
Closes openclaw#23053

The streaming path already strips [[reply_to_current]] and other
directive tags via stripInlineDirectiveTagsForDisplay, but the
non-streaming broadcastChatFinal path and the chat.inject path
sent raw message content to webchat clients, causing tags to
appear in rendered messages after streaming completes.
Co-authored-by: David Rudduck <david@rudduck.org.au>
…penclaw#16699)

Merged via /review-pr -> /prepare-pr -> /merge-pr.

Prepared head SHA: 67b5bce
Co-authored-by: Glucksberg <80581902+Glucksberg@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
Strict validation (added in d1e9490) rejects the legitimate 'comment'
field on bindings. This field is used for annotations in config files.

Changes:
- BindingsSchema: added comment: z.string().optional()
- AgentBinding type: added comment?: string

Fixes openclaw#23385
Bug: privateApiStatus cache expires after 10 minutes, returning null.
The check '!== false' treats null as truthy, causing 500 errors when
trying to use Private API features that aren't actually available.

Root cause: In JavaScript, null !== false evaluates to true.

Fix: Changed all checks from '!== false' to '=== true', so null (cache
expired/unknown) is treated as disabled (safe default).

Files changed:
- extensions/bluebubbles/src/send.ts (line 376)
- extensions/bluebubbles/src/monitor-processing.ts (line 423)
- extensions/bluebubbles/src/attachments.ts (lines 210, 220)

Fixes openclaw#23393
…claw#22582)

Merged via /review-pr -> /prepare-pr -> /merge-pr.

Prepared head SHA: 8569fc8
Co-authored-by: YuzuruS <1485195+YuzuruS@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
When OPENCLAW_PROFILE is set (and not "default"), automatically load a
PROFILE-<profileName>.md file from the workspace as an additional
bootstrap context file. This gives each profile instance its own
personality/context overlay without needing hook configuration.

Changes:
- Add isProfileBootstrapName() helper to validate PROFILE-*.md pattern
- Update loadWorkspaceBootstrapFiles() to load profile file when env var is set
- Insert profile file in correct order (after USER.md, before HEARTBEAT.md)
- Update loadExtraBootstrapFiles() to accept PROFILE-*.md filenames
- Update filterBootstrapFilesForSession() to preserve profile files in subagent/cron sessions
- Widen WorkspaceBootstrapFileName type to include dynamic profile filenames
- Add comprehensive test coverage for all profile file scenarios
- Update bootstrap-extra-files hook documentation

The profile file is optional - if it doesn't exist, it's silently skipped
without adding a [MISSING] marker. This makes it zero-config for
multi-instance setups like hive clusters.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@hughmadden hughmadden merged commit d3909b6 into main Feb 23, 2026
turquoisebaydev pushed a commit that referenced this pull request Mar 3, 2026
… and docs (openclaw#16761)

Add inline file attachment support for sessions_spawn (subagent runtime only):

- Schema: attachments[] (name, content, encoding, mimeType) and attachAs.mountPath hint
- Materialization: files written to .openclaw/attachments/<uuid>/ with manifest.json
- Validation: strict base64 decode, filename checks, size limits, duplicate detection
- Transcript redaction: sanitizeToolCallInputs redacts attachment content from persisted transcripts
- Lifecycle cleanup: safeRemoveAttachmentsDir with symlink-safe path containment check
- Config: tools.sessions_spawn.attachments (enabled, maxFiles, maxFileBytes, maxTotalBytes, retainOnSessionKeep)
- Registry: attachmentsDir/attachmentsRootDir/retainAttachmentsOnKeep on SubagentRunRecord
- ACP rejection: attachments rejected for runtime=acp with clear error message
- Docs: updated tools/index.md, concepts/session-tool.md, configuration-reference.md
- Tests: 85 new/updated tests across 5 test files

Fixes:
- Guard fs.rm in materialization catch block with try/catch (review concern #1)
- Remove unreachable fallback in safeRemoveAttachmentsDir (review concern openclaw#7)
- Move attachment cleanup out of retry path to avoid timing issues with announce loop

Co-authored-by: Tyler Yust <TYTYYUST@YAHOO.COM>
Co-authored-by: napetrov <napetrov@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.