') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Web: fix links to docs by VaguelySerious · Pull Request #17 · vercel/workflow · GitHub
Skip to content

Web: fix links to docs - #17

Merged
VaguelySerious merged 1 commit into
mainfrom
peter/fix-hook-docs-link
Oct 24, 2025
Merged

Web: fix links to docs#17
VaguelySerious merged 1 commit into
mainfrom
peter/fix-hook-docs-link

Conversation

@VaguelySerious

Copy link
Copy Markdown
Member

No description provided.

@vercel

vercelBot commented Oct 24, 2025

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
example-nextjs-workflow-turbopackReadyReadyPreviewCommentOct 24, 2025 2:15am
example-nextjs-workflow-webpackReadyReadyPreviewCommentOct 24, 2025 2:15am
example-workflowReadyReadyPreviewCommentOct 24, 2025 2:15am
workbench-nitro-workflowReadyReadyPreviewCommentOct 24, 2025 2:15am
workflow-docsReadyReadyPreviewCommentOct 24, 2025 2:15am

@changeset-bot

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: eb78f50

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 7 packages
NameType
@workflow/webPatch
@workflow/cliPatch
@workflow/nextPatch
@workflow/nitroPatch
workflowPatch
@workflow/world-testingPatch
@workflow/aiPatch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@pranaygppranaygp left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@VaguelySerious
VaguelySerious merged commit 9ba86ce into mainOct 24, 2025
21 checks passed
@VaguelySerious
VaguelySerious deleted the peter/fix-hook-docs-link branch October 24, 2025 02:20
VaguelySerious added a commit that referenced this pull request May 27, 2026
… post-merge cap
- Rename the public SDK export from `setAttributes` → `experimental_setAttributes`
to signal the unstable surface at every call site (workbench, docs,
e2e + unit tests updated). Internal step name stays
`__builtin_set_attributes`.
- `validateAttributeChanges`: replace `existingCount?: number` with
`existingKeys?: Iterable<string>`. With keys, the cap check uses
real net adds/deletes (an update to an already-present key is zero
net); without keys it falls back to the conservative "every upsert
is +1" shape. Fixes the off-by-design rejection of single-key
updates at the cap boundary.
- `world-local`: rename `withRunAttributeLock` → `withRunFileLock`,
export it, and acquire it from the events-storage run-lifecycle
branches (`run_started`/`run_completed`/`run_failed`/`run_cancelled`).
Each lifecycle write re-reads the run JSON inside the lock so an
attribute write that landed between the pre-validation read and the
write is no longer silently overwritten.
- `world-postgres`: atomic per-run cap. The cap check now lives in the
same `UPDATE` statement as the merge (`WHERE (SELECT COUNT(*) FROM
jsonb_object_keys(merged_expr)) <= ATTRIBUTE_MAX_PER_RUN`), so two
concurrent writers adding disjoint keys at the cap boundary can no
longer both succeed and push the row past 64. A separate re-read on
rejection disambiguates "run not found" from "cap rejected".
- `__builtin_set_attributes`: one process-wide `console.warn` when the
active world adapter doesn't implement `experimentalSetAttributes`,
matching the changelog and `Storage.runs.experimentalSetAttributes`
JSDoc.
Verified #17 (bare-name step lookup) by precedent: the SWC plugin
already special-cases names starting with `__builtin` at
`naming.rs`-adjacent path in `lib.rs:1906` to use the bare function
name as the step ID, which is exactly how `__builtin_response_json`
etc. ship today.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
VaguelySerious added a commit that referenced this pull request May 28, 2026
… post-merge cap
- Rename the public SDK export from `setAttributes` → `experimental_setAttributes`
to signal the unstable surface at every call site (workbench, docs,
e2e + unit tests updated). Internal step name stays
`__builtin_set_attributes`.
- `validateAttributeChanges`: replace `existingCount?: number` with
`existingKeys?: Iterable<string>`. With keys, the cap check uses
real net adds/deletes (an update to an already-present key is zero
net); without keys it falls back to the conservative "every upsert
is +1" shape. Fixes the off-by-design rejection of single-key
updates at the cap boundary.
- `world-local`: rename `withRunAttributeLock` → `withRunFileLock`,
export it, and acquire it from the events-storage run-lifecycle
branches (`run_started`/`run_completed`/`run_failed`/`run_cancelled`).
Each lifecycle write re-reads the run JSON inside the lock so an
attribute write that landed between the pre-validation read and the
write is no longer silently overwritten.
- `world-postgres`: atomic per-run cap. The cap check now lives in the
same `UPDATE` statement as the merge (`WHERE (SELECT COUNT(*) FROM
jsonb_object_keys(merged_expr)) <= ATTRIBUTE_MAX_PER_RUN`), so two
concurrent writers adding disjoint keys at the cap boundary can no
longer both succeed and push the row past 64. A separate re-read on
rejection disambiguates "run not found" from "cap rejected".
- `__builtin_set_attributes`: one process-wide `console.warn` when the
active world adapter doesn't implement `experimentalSetAttributes`,
matching the changelog and `Storage.runs.experimentalSetAttributes`
JSDoc.
Verified #17 (bare-name step lookup) by precedent: the SWC plugin
already special-cases names starting with `__builtin` at
`naming.rs`-adjacent path in `lib.rs:1906` to use the bare function
name as the step ID, which is exactly how `__builtin_response_json`
etc. ship today.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for freeto 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.

2 participants

@VaguelySerious@pranaygp