Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
{
".": "1.7.0"
".": "1.8.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
configured_endpoints: 41
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-b0c72d2fe5911c9ce155275b954198bf2152e915a7e5b9f719aad50e222b9ef8.yml
openapi_spec_hash: 5cf943ea5718059b7975417b012cee28
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-2c3f4e4b357ca78c019a3aacd006e2bb8b332d4172a300ee6c46c076a216ed3f.yml
openapi_spec_hash: b89be415cf6ee594b521885a9deb25ac
config_hash: 0fb0ceca5946298c416cec0cca5260c7
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
# Changelog

## 1.8.0 (2026-08-23)

Full Changelog: [v1.7.0...v1.8.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.7.0...v1.8.0)

### Features

* **api:** api update ([985ccab](https://github.com/context-dot-dev/context-dev-cli/commit/985ccab2173e91b5cf40749f33133d7c92527652))
* **api:** api update ([3583e1a](https://github.com/context-dot-dev/context-dev-cli/commit/3583e1aff934cfb1ce1bad257ffbfa262b3a8733))
* **api:** api update ([7b5b53f](https://github.com/context-dot-dev/context-dev-cli/commit/7b5b53f167b6bf29d2c4de02f348edc2122d5e80))
* **api:** api update ([af18337](https://github.com/context-dot-dev/context-dev-cli/commit/af1833778a6a1620a5e3f0008b7f67cd5dae53c0))

## 1.7.0 (2026-08-18)

Full Changelog: [v1.6.0...v1.7.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.6.0...v1.7.0)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,7 +7,7 @@ require (
github.com/charmbracelet/bubbletea v1.3.6
github.com/charmbracelet/lipgloss v1.1.0
github.com/charmbracelet/x/term v0.2.1
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0
github.com/goccy/go-yaml v1.18.0
github.com/itchyny/json2yaml v0.1.4
github.com/muesli/reflow v0.3.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,8 +18,8 @@ github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payR
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0 h1:gw/QnKENZ8seyEPI9t9f7MjbtQGK392WFalNUKS3Xs4=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0 h1:SsEX/lciOcEwANUhkEs6iJoEtSD2oZmnmslHtlio/Cc=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
Expand Down
2 changes: 1 addition & 1 deletion pkg/cmd/version.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,4 +2,4 @@

package cmd

const Version = "1.7.0" // x-release-please-version
const Version = "1.8.0" // x-release-please-version
14 changes: 10 additions & 4 deletions pkg/cmd/web.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Flags: []cli.Flag{
&requestflag.Flag[map[string]any]{
Name: "schema",
Usage: "JSON Schema for the returned data object. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Usage: "JSON Schema for the returned data object. Image fields such as `image_urls` or `product_photos` automatically make page image references available to extraction, so product data and photos can be returned in one call. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Required: true,
BodyPath: "schema",
},
Expand All@@ -31,6 +31,11 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Required: true,
BodyPath: "url",
},
&requestflag.Flag[[]map[string]any]{
Name: "action",
Usage: "Optional browser actions executed in order on the requested page after it loads, before links are discovered or additional pages are crawled. Requires a paid plan. When actions are provided and stopAfterMs is omitted, the crawl budget defaults to 110000 ms.",
BodyPath: "actions",
},
&requestflag.Flag[bool]{
Name: "fact-check",
Usage: "When true, every returned value must be grounded in facts stated on the page; fields that cannot be supported by the page are returned as null/empty. When false (default), the model may make reasonable inferences and derivations from the page content (e.g. ideal customer, competitor analysis, recommendations) while keeping verifiable specifics (names, quotes, URLs, dates, metrics) faithful to the source.",
Expand DownExpand Up@@ -84,7 +89,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "stop-after-ms",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Default: 80000 (80s).",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Defaults to 80000 (80s), or 110000 (110s) when browser actions are provided.",
Default: 80000,
BodyPath: "stopAfterMs",
},
Expand DownExpand Up@@ -557,7 +562,7 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[string]{
Name: "url-regex",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped.",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped. An automatic prefix scope in the form ^<starting URL> follows a redirect of the starting page.",
BodyPath: "urlRegex",
},
&requestflag.Flag[bool]{
Expand All@@ -568,7 +573,8 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "wait-for-ms",
Usage: "Optional browser wait time in milliseconds after initial page load for each crawled page. Min: 0. Max: 30000 (30 seconds). ",
Usage: "Browser wait time in milliseconds after initial page load for each crawled page. Defaults to 3500 (3.5 seconds). Min: 0. Max: 30000 (30 seconds).",
Default: 3500,
BodyPath: "waitForMs",
},
&requestflag.Flag[string]{
Expand Down
5 changes: 5 additions & 0 deletions pkg/cmd/web_test.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,6 +18,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -46,6 +47,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -74,6 +76,9 @@ func TestWebExtract(t *testing.T) {
" required: bar\n" +
" additionalProperties: bar\n" +
"url: https://example.com\n" +
"actions:\n" +
" - do: wait\n" +
" timeMs: 0\n" +
"factCheck: true\n" +
"followSubdomains: true\n" +
"includeFrames: true\n" +
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
{
".": "1.7.0"
".": "1.8.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
configured_endpoints: 41
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-b0c72d2fe5911c9ce155275b954198bf2152e915a7e5b9f719aad50e222b9ef8.yml
openapi_spec_hash: 5cf943ea5718059b7975417b012cee28
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-2c3f4e4b357ca78c019a3aacd006e2bb8b332d4172a300ee6c46c076a216ed3f.yml
openapi_spec_hash: b89be415cf6ee594b521885a9deb25ac
config_hash: 0fb0ceca5946298c416cec0cca5260c7
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
# Changelog

## 1.8.0 (2026-08-23)

Full Changelog: [v1.7.0...v1.8.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.7.0...v1.8.0)

### Features

* **api:** api update ([985ccab](https://github.com/context-dot-dev/context-dev-cli/commit/985ccab2173e91b5cf40749f33133d7c92527652))
* **api:** api update ([3583e1a](https://github.com/context-dot-dev/context-dev-cli/commit/3583e1aff934cfb1ce1bad257ffbfa262b3a8733))
* **api:** api update ([7b5b53f](https://github.com/context-dot-dev/context-dev-cli/commit/7b5b53f167b6bf29d2c4de02f348edc2122d5e80))
* **api:** api update ([af18337](https://github.com/context-dot-dev/context-dev-cli/commit/af1833778a6a1620a5e3f0008b7f67cd5dae53c0))

## 1.7.0 (2026-08-18)

Full Changelog: [v1.6.0...v1.7.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.6.0...v1.7.0)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,7 +7,7 @@ require (
github.com/charmbracelet/bubbletea v1.3.6
github.com/charmbracelet/lipgloss v1.1.0
github.com/charmbracelet/x/term v0.2.1
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0
github.com/goccy/go-yaml v1.18.0
github.com/itchyny/json2yaml v0.1.4
github.com/muesli/reflow v0.3.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,8 +18,8 @@ github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payR
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0 h1:gw/QnKENZ8seyEPI9t9f7MjbtQGK392WFalNUKS3Xs4=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0 h1:SsEX/lciOcEwANUhkEs6iJoEtSD2oZmnmslHtlio/Cc=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
Expand Down
2 changes: 1 addition & 1 deletion pkg/cmd/version.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,4 +2,4 @@

package cmd

const Version = "1.7.0" // x-release-please-version
const Version = "1.8.0" // x-release-please-version
14 changes: 10 additions & 4 deletions pkg/cmd/web.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Flags: []cli.Flag{
&requestflag.Flag[map[string]any]{
Name: "schema",
Usage: "JSON Schema for the returned data object. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Usage: "JSON Schema for the returned data object. Image fields such as `image_urls` or `product_photos` automatically make page image references available to extraction, so product data and photos can be returned in one call. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Required: true,
BodyPath: "schema",
},
Expand All@@ -31,6 +31,11 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Required: true,
BodyPath: "url",
},
&requestflag.Flag[[]map[string]any]{
Name: "action",
Usage: "Optional browser actions executed in order on the requested page after it loads, before links are discovered or additional pages are crawled. Requires a paid plan. When actions are provided and stopAfterMs is omitted, the crawl budget defaults to 110000 ms.",
BodyPath: "actions",
},
&requestflag.Flag[bool]{
Name: "fact-check",
Usage: "When true, every returned value must be grounded in facts stated on the page; fields that cannot be supported by the page are returned as null/empty. When false (default), the model may make reasonable inferences and derivations from the page content (e.g. ideal customer, competitor analysis, recommendations) while keeping verifiable specifics (names, quotes, URLs, dates, metrics) faithful to the source.",
Expand DownExpand Up@@ -84,7 +89,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "stop-after-ms",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Default: 80000 (80s).",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Defaults to 80000 (80s), or 110000 (110s) when browser actions are provided.",
Default: 80000,
BodyPath: "stopAfterMs",
},
Expand DownExpand Up@@ -557,7 +562,7 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[string]{
Name: "url-regex",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped.",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped. An automatic prefix scope in the form ^<starting URL> follows a redirect of the starting page.",
BodyPath: "urlRegex",
},
&requestflag.Flag[bool]{
Expand All@@ -568,7 +573,8 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "wait-for-ms",
Usage: "Optional browser wait time in milliseconds after initial page load for each crawled page. Min: 0. Max: 30000 (30 seconds). ",
Usage: "Browser wait time in milliseconds after initial page load for each crawled page. Defaults to 3500 (3.5 seconds). Min: 0. Max: 30000 (30 seconds).",
Default: 3500,
BodyPath: "waitForMs",
},
&requestflag.Flag[string]{
Expand Down
5 changes: 5 additions & 0 deletions pkg/cmd/web_test.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,6 +18,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -46,6 +47,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -74,6 +76,9 @@ func TestWebExtract(t *testing.T) {
" required: bar\n" +
" additionalProperties: bar\n" +
"url: https://example.com\n" +
"actions:\n" +
" - do: wait\n" +
" timeMs: 0\n" +
"factCheck: true\n" +
"followSubdomains: true\n" +
"includeFrames: true\n" +
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
{
".": "1.7.0"
".": "1.8.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
configured_endpoints: 41
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-b0c72d2fe5911c9ce155275b954198bf2152e915a7e5b9f719aad50e222b9ef8.yml
openapi_spec_hash: 5cf943ea5718059b7975417b012cee28
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-2c3f4e4b357ca78c019a3aacd006e2bb8b332d4172a300ee6c46c076a216ed3f.yml
openapi_spec_hash: b89be415cf6ee594b521885a9deb25ac
config_hash: 0fb0ceca5946298c416cec0cca5260c7
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
# Changelog

## 1.8.0 (2026-08-23)

Full Changelog: [v1.7.0...v1.8.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.7.0...v1.8.0)

### Features

* **api:** api update ([985ccab](https://github.com/context-dot-dev/context-dev-cli/commit/985ccab2173e91b5cf40749f33133d7c92527652))
* **api:** api update ([3583e1a](https://github.com/context-dot-dev/context-dev-cli/commit/3583e1aff934cfb1ce1bad257ffbfa262b3a8733))
* **api:** api update ([7b5b53f](https://github.com/context-dot-dev/context-dev-cli/commit/7b5b53f167b6bf29d2c4de02f348edc2122d5e80))
* **api:** api update ([af18337](https://github.com/context-dot-dev/context-dev-cli/commit/af1833778a6a1620a5e3f0008b7f67cd5dae53c0))

## 1.7.0 (2026-08-18)

Full Changelog: [v1.6.0...v1.7.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.6.0...v1.7.0)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,7 +7,7 @@ require (
github.com/charmbracelet/bubbletea v1.3.6
github.com/charmbracelet/lipgloss v1.1.0
github.com/charmbracelet/x/term v0.2.1
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0
github.com/goccy/go-yaml v1.18.0
github.com/itchyny/json2yaml v0.1.4
github.com/muesli/reflow v0.3.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,8 +18,8 @@ github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payR
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0 h1:gw/QnKENZ8seyEPI9t9f7MjbtQGK392WFalNUKS3Xs4=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0 h1:SsEX/lciOcEwANUhkEs6iJoEtSD2oZmnmslHtlio/Cc=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
Expand Down
2 changes: 1 addition & 1 deletion pkg/cmd/version.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,4 +2,4 @@

package cmd

const Version = "1.7.0" // x-release-please-version
const Version = "1.8.0" // x-release-please-version
14 changes: 10 additions & 4 deletions pkg/cmd/web.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Flags: []cli.Flag{
&requestflag.Flag[map[string]any]{
Name: "schema",
Usage: "JSON Schema for the returned data object. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Usage: "JSON Schema for the returned data object. Image fields such as `image_urls` or `product_photos` automatically make page image references available to extraction, so product data and photos can be returned in one call. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Required: true,
BodyPath: "schema",
},
Expand All@@ -31,6 +31,11 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Required: true,
BodyPath: "url",
},
&requestflag.Flag[[]map[string]any]{
Name: "action",
Usage: "Optional browser actions executed in order on the requested page after it loads, before links are discovered or additional pages are crawled. Requires a paid plan. When actions are provided and stopAfterMs is omitted, the crawl budget defaults to 110000 ms.",
BodyPath: "actions",
},
&requestflag.Flag[bool]{
Name: "fact-check",
Usage: "When true, every returned value must be grounded in facts stated on the page; fields that cannot be supported by the page are returned as null/empty. When false (default), the model may make reasonable inferences and derivations from the page content (e.g. ideal customer, competitor analysis, recommendations) while keeping verifiable specifics (names, quotes, URLs, dates, metrics) faithful to the source.",
Expand DownExpand Up@@ -84,7 +89,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "stop-after-ms",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Default: 80000 (80s).",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Defaults to 80000 (80s), or 110000 (110s) when browser actions are provided.",
Default: 80000,
BodyPath: "stopAfterMs",
},
Expand DownExpand Up@@ -557,7 +562,7 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[string]{
Name: "url-regex",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped.",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped. An automatic prefix scope in the form ^<starting URL> follows a redirect of the starting page.",
BodyPath: "urlRegex",
},
&requestflag.Flag[bool]{
Expand All@@ -568,7 +573,8 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "wait-for-ms",
Usage: "Optional browser wait time in milliseconds after initial page load for each crawled page. Min: 0. Max: 30000 (30 seconds). ",
Usage: "Browser wait time in milliseconds after initial page load for each crawled page. Defaults to 3500 (3.5 seconds). Min: 0. Max: 30000 (30 seconds).",
Default: 3500,
BodyPath: "waitForMs",
},
&requestflag.Flag[string]{
Expand Down
5 changes: 5 additions & 0 deletions pkg/cmd/web_test.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,6 +18,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -46,6 +47,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -74,6 +76,9 @@ func TestWebExtract(t *testing.T) {
" required: bar\n" +
" additionalProperties: bar\n" +
"url: https://example.com\n" +
"actions:\n" +
" - do: wait\n" +
" timeMs: 0\n" +
"factCheck: true\n" +
"followSubdomains: true\n" +
"includeFrames: true\n" +
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
{
".": "1.7.0"
".": "1.8.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
configured_endpoints: 41
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-b0c72d2fe5911c9ce155275b954198bf2152e915a7e5b9f719aad50e222b9ef8.yml
openapi_spec_hash: 5cf943ea5718059b7975417b012cee28
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-2c3f4e4b357ca78c019a3aacd006e2bb8b332d4172a300ee6c46c076a216ed3f.yml
openapi_spec_hash: b89be415cf6ee594b521885a9deb25ac
config_hash: 0fb0ceca5946298c416cec0cca5260c7
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
# Changelog

## 1.8.0 (2026-08-23)

Full Changelog: [v1.7.0...v1.8.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.7.0...v1.8.0)

### Features

* **api:** api update ([985ccab](https://github.com/context-dot-dev/context-dev-cli/commit/985ccab2173e91b5cf40749f33133d7c92527652))
* **api:** api update ([3583e1a](https://github.com/context-dot-dev/context-dev-cli/commit/3583e1aff934cfb1ce1bad257ffbfa262b3a8733))
* **api:** api update ([7b5b53f](https://github.com/context-dot-dev/context-dev-cli/commit/7b5b53f167b6bf29d2c4de02f348edc2122d5e80))
* **api:** api update ([af18337](https://github.com/context-dot-dev/context-dev-cli/commit/af1833778a6a1620a5e3f0008b7f67cd5dae53c0))

## 1.7.0 (2026-08-18)

Full Changelog: [v1.6.0...v1.7.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.6.0...v1.7.0)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,7 +7,7 @@ require (
github.com/charmbracelet/bubbletea v1.3.6
github.com/charmbracelet/lipgloss v1.1.0
github.com/charmbracelet/x/term v0.2.1
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0
github.com/goccy/go-yaml v1.18.0
github.com/itchyny/json2yaml v0.1.4
github.com/muesli/reflow v0.3.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,8 +18,8 @@ github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payR
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0 h1:gw/QnKENZ8seyEPI9t9f7MjbtQGK392WFalNUKS3Xs4=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0 h1:SsEX/lciOcEwANUhkEs6iJoEtSD2oZmnmslHtlio/Cc=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
Expand Down
2 changes: 1 addition & 1 deletion pkg/cmd/version.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,4 +2,4 @@

package cmd

const Version = "1.7.0" // x-release-please-version
const Version = "1.8.0" // x-release-please-version
14 changes: 10 additions & 4 deletions pkg/cmd/web.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Flags: []cli.Flag{
&requestflag.Flag[map[string]any]{
Name: "schema",
Usage: "JSON Schema for the returned data object. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Usage: "JSON Schema for the returned data object. Image fields such as `image_urls` or `product_photos` automatically make page image references available to extraction, so product data and photos can be returned in one call. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Required: true,
BodyPath: "schema",
},
Expand All@@ -31,6 +31,11 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Required: true,
BodyPath: "url",
},
&requestflag.Flag[[]map[string]any]{
Name: "action",
Usage: "Optional browser actions executed in order on the requested page after it loads, before links are discovered or additional pages are crawled. Requires a paid plan. When actions are provided and stopAfterMs is omitted, the crawl budget defaults to 110000 ms.",
BodyPath: "actions",
},
&requestflag.Flag[bool]{
Name: "fact-check",
Usage: "When true, every returned value must be grounded in facts stated on the page; fields that cannot be supported by the page are returned as null/empty. When false (default), the model may make reasonable inferences and derivations from the page content (e.g. ideal customer, competitor analysis, recommendations) while keeping verifiable specifics (names, quotes, URLs, dates, metrics) faithful to the source.",
Expand DownExpand Up@@ -84,7 +89,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "stop-after-ms",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Default: 80000 (80s).",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Defaults to 80000 (80s), or 110000 (110s) when browser actions are provided.",
Default: 80000,
BodyPath: "stopAfterMs",
},
Expand DownExpand Up@@ -557,7 +562,7 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[string]{
Name: "url-regex",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped.",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped. An automatic prefix scope in the form ^<starting URL> follows a redirect of the starting page.",
BodyPath: "urlRegex",
},
&requestflag.Flag[bool]{
Expand All@@ -568,7 +573,8 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "wait-for-ms",
Usage: "Optional browser wait time in milliseconds after initial page load for each crawled page. Min: 0. Max: 30000 (30 seconds). ",
Usage: "Browser wait time in milliseconds after initial page load for each crawled page. Defaults to 3500 (3.5 seconds). Min: 0. Max: 30000 (30 seconds).",
Default: 3500,
BodyPath: "waitForMs",
},
&requestflag.Flag[string]{
Expand Down
5 changes: 5 additions & 0 deletions pkg/cmd/web_test.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,6 +18,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -46,6 +47,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -74,6 +76,9 @@ func TestWebExtract(t *testing.T) {
" required: bar\n" +
" additionalProperties: bar\n" +
"url: https://example.com\n" +
"actions:\n" +
" - do: wait\n" +
" timeMs: 0\n" +
"factCheck: true\n" +
"followSubdomains: true\n" +
"includeFrames: true\n" +
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
{
".": "1.7.0"
".": "1.8.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
configured_endpoints: 41
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-b0c72d2fe5911c9ce155275b954198bf2152e915a7e5b9f719aad50e222b9ef8.yml
openapi_spec_hash: 5cf943ea5718059b7975417b012cee28
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-2c3f4e4b357ca78c019a3aacd006e2bb8b332d4172a300ee6c46c076a216ed3f.yml
openapi_spec_hash: b89be415cf6ee594b521885a9deb25ac
config_hash: 0fb0ceca5946298c416cec0cca5260c7
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
# Changelog

## 1.8.0 (2026-08-23)

Full Changelog: [v1.7.0...v1.8.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.7.0...v1.8.0)

### Features

* **api:** api update ([985ccab](https://github.com/context-dot-dev/context-dev-cli/commit/985ccab2173e91b5cf40749f33133d7c92527652))
* **api:** api update ([3583e1a](https://github.com/context-dot-dev/context-dev-cli/commit/3583e1aff934cfb1ce1bad257ffbfa262b3a8733))
* **api:** api update ([7b5b53f](https://github.com/context-dot-dev/context-dev-cli/commit/7b5b53f167b6bf29d2c4de02f348edc2122d5e80))
* **api:** api update ([af18337](https://github.com/context-dot-dev/context-dev-cli/commit/af1833778a6a1620a5e3f0008b7f67cd5dae53c0))

## 1.7.0 (2026-08-18)

Full Changelog: [v1.6.0...v1.7.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.6.0...v1.7.0)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,7 +7,7 @@ require (
github.com/charmbracelet/bubbletea v1.3.6
github.com/charmbracelet/lipgloss v1.1.0
github.com/charmbracelet/x/term v0.2.1
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0
github.com/goccy/go-yaml v1.18.0
github.com/itchyny/json2yaml v0.1.4
github.com/muesli/reflow v0.3.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,8 +18,8 @@ github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payR
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0 h1:gw/QnKENZ8seyEPI9t9f7MjbtQGK392WFalNUKS3Xs4=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0 h1:SsEX/lciOcEwANUhkEs6iJoEtSD2oZmnmslHtlio/Cc=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
Expand Down
2 changes: 1 addition & 1 deletion pkg/cmd/version.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,4 +2,4 @@

package cmd

const Version = "1.7.0" // x-release-please-version
const Version = "1.8.0" // x-release-please-version
14 changes: 10 additions & 4 deletions pkg/cmd/web.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Flags: []cli.Flag{
&requestflag.Flag[map[string]any]{
Name: "schema",
Usage: "JSON Schema for the returned data object. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Usage: "JSON Schema for the returned data object. Image fields such as `image_urls` or `product_photos` automatically make page image references available to extraction, so product data and photos can be returned in one call. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Required: true,
BodyPath: "schema",
},
Expand All@@ -31,6 +31,11 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Required: true,
BodyPath: "url",
},
&requestflag.Flag[[]map[string]any]{
Name: "action",
Usage: "Optional browser actions executed in order on the requested page after it loads, before links are discovered or additional pages are crawled. Requires a paid plan. When actions are provided and stopAfterMs is omitted, the crawl budget defaults to 110000 ms.",
BodyPath: "actions",
},
&requestflag.Flag[bool]{
Name: "fact-check",
Usage: "When true, every returned value must be grounded in facts stated on the page; fields that cannot be supported by the page are returned as null/empty. When false (default), the model may make reasonable inferences and derivations from the page content (e.g. ideal customer, competitor analysis, recommendations) while keeping verifiable specifics (names, quotes, URLs, dates, metrics) faithful to the source.",
Expand DownExpand Up@@ -84,7 +89,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "stop-after-ms",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Default: 80000 (80s).",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Defaults to 80000 (80s), or 110000 (110s) when browser actions are provided.",
Default: 80000,
BodyPath: "stopAfterMs",
},
Expand DownExpand Up@@ -557,7 +562,7 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[string]{
Name: "url-regex",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped.",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped. An automatic prefix scope in the form ^<starting URL> follows a redirect of the starting page.",
BodyPath: "urlRegex",
},
&requestflag.Flag[bool]{
Expand All@@ -568,7 +573,8 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "wait-for-ms",
Usage: "Optional browser wait time in milliseconds after initial page load for each crawled page. Min: 0. Max: 30000 (30 seconds). ",
Usage: "Browser wait time in milliseconds after initial page load for each crawled page. Defaults to 3500 (3.5 seconds). Min: 0. Max: 30000 (30 seconds).",
Default: 3500,
BodyPath: "waitForMs",
},
&requestflag.Flag[string]{
Expand Down
5 changes: 5 additions & 0 deletions pkg/cmd/web_test.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,6 +18,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -46,6 +47,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -74,6 +76,9 @@ func TestWebExtract(t *testing.T) {
" required: bar\n" +
" additionalProperties: bar\n" +
"url: https://example.com\n" +
"actions:\n" +
" - do: wait\n" +
" timeMs: 0\n" +
"factCheck: true\n" +
"followSubdomains: true\n" +
"includeFrames: true\n" +
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
{
".": "1.7.0"
".": "1.8.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
configured_endpoints: 41
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-b0c72d2fe5911c9ce155275b954198bf2152e915a7e5b9f719aad50e222b9ef8.yml
openapi_spec_hash: 5cf943ea5718059b7975417b012cee28
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-2c3f4e4b357ca78c019a3aacd006e2bb8b332d4172a300ee6c46c076a216ed3f.yml
openapi_spec_hash: b89be415cf6ee594b521885a9deb25ac
config_hash: 0fb0ceca5946298c416cec0cca5260c7
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
# Changelog

## 1.8.0 (2026-08-23)

Full Changelog: [v1.7.0...v1.8.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.7.0...v1.8.0)

### Features

* **api:** api update ([985ccab](https://github.com/context-dot-dev/context-dev-cli/commit/985ccab2173e91b5cf40749f33133d7c92527652))
* **api:** api update ([3583e1a](https://github.com/context-dot-dev/context-dev-cli/commit/3583e1aff934cfb1ce1bad257ffbfa262b3a8733))
* **api:** api update ([7b5b53f](https://github.com/context-dot-dev/context-dev-cli/commit/7b5b53f167b6bf29d2c4de02f348edc2122d5e80))
* **api:** api update ([af18337](https://github.com/context-dot-dev/context-dev-cli/commit/af1833778a6a1620a5e3f0008b7f67cd5dae53c0))

## 1.7.0 (2026-08-18)

Full Changelog: [v1.6.0...v1.7.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.6.0...v1.7.0)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,7 +7,7 @@ require (
github.com/charmbracelet/bubbletea v1.3.6
github.com/charmbracelet/lipgloss v1.1.0
github.com/charmbracelet/x/term v0.2.1
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0
github.com/goccy/go-yaml v1.18.0
github.com/itchyny/json2yaml v0.1.4
github.com/muesli/reflow v0.3.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,8 +18,8 @@ github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payR
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0 h1:gw/QnKENZ8seyEPI9t9f7MjbtQGK392WFalNUKS3Xs4=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0 h1:SsEX/lciOcEwANUhkEs6iJoEtSD2oZmnmslHtlio/Cc=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
Expand Down
2 changes: 1 addition & 1 deletion pkg/cmd/version.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,4 +2,4 @@

package cmd

const Version = "1.7.0" // x-release-please-version
const Version = "1.8.0" // x-release-please-version
14 changes: 10 additions & 4 deletions pkg/cmd/web.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Flags: []cli.Flag{
&requestflag.Flag[map[string]any]{
Name: "schema",
Usage: "JSON Schema for the returned data object. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Usage: "JSON Schema for the returned data object. Image fields such as `image_urls` or `product_photos` automatically make page image references available to extraction, so product data and photos can be returned in one call. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Required: true,
BodyPath: "schema",
},
Expand All@@ -31,6 +31,11 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Required: true,
BodyPath: "url",
},
&requestflag.Flag[[]map[string]any]{
Name: "action",
Usage: "Optional browser actions executed in order on the requested page after it loads, before links are discovered or additional pages are crawled. Requires a paid plan. When actions are provided and stopAfterMs is omitted, the crawl budget defaults to 110000 ms.",
BodyPath: "actions",
},
&requestflag.Flag[bool]{
Name: "fact-check",
Usage: "When true, every returned value must be grounded in facts stated on the page; fields that cannot be supported by the page are returned as null/empty. When false (default), the model may make reasonable inferences and derivations from the page content (e.g. ideal customer, competitor analysis, recommendations) while keeping verifiable specifics (names, quotes, URLs, dates, metrics) faithful to the source.",
Expand DownExpand Up@@ -84,7 +89,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "stop-after-ms",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Default: 80000 (80s).",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Defaults to 80000 (80s), or 110000 (110s) when browser actions are provided.",
Default: 80000,
BodyPath: "stopAfterMs",
},
Expand DownExpand Up@@ -557,7 +562,7 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[string]{
Name: "url-regex",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped.",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped. An automatic prefix scope in the form ^<starting URL> follows a redirect of the starting page.",
BodyPath: "urlRegex",
},
&requestflag.Flag[bool]{
Expand All@@ -568,7 +573,8 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "wait-for-ms",
Usage: "Optional browser wait time in milliseconds after initial page load for each crawled page. Min: 0. Max: 30000 (30 seconds). ",
Usage: "Browser wait time in milliseconds after initial page load for each crawled page. Defaults to 3500 (3.5 seconds). Min: 0. Max: 30000 (30 seconds).",
Default: 3500,
BodyPath: "waitForMs",
},
&requestflag.Flag[string]{
Expand Down
5 changes: 5 additions & 0 deletions pkg/cmd/web_test.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,6 +18,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -46,6 +47,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -74,6 +76,9 @@ func TestWebExtract(t *testing.T) {
" required: bar\n" +
" additionalProperties: bar\n" +
"url: https://example.com\n" +
"actions:\n" +
" - do: wait\n" +
" timeMs: 0\n" +
"factCheck: true\n" +
"followSubdomains: true\n" +
"includeFrames: true\n" +
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
{
".": "1.7.0"
".": "1.8.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
configured_endpoints: 41
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-b0c72d2fe5911c9ce155275b954198bf2152e915a7e5b9f719aad50e222b9ef8.yml
openapi_spec_hash: 5cf943ea5718059b7975417b012cee28
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-2c3f4e4b357ca78c019a3aacd006e2bb8b332d4172a300ee6c46c076a216ed3f.yml
openapi_spec_hash: b89be415cf6ee594b521885a9deb25ac
config_hash: 0fb0ceca5946298c416cec0cca5260c7
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
# Changelog

## 1.8.0 (2026-08-23)

Full Changelog: [v1.7.0...v1.8.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.7.0...v1.8.0)

### Features

* **api:** api update ([985ccab](https://github.com/context-dot-dev/context-dev-cli/commit/985ccab2173e91b5cf40749f33133d7c92527652))
* **api:** api update ([3583e1a](https://github.com/context-dot-dev/context-dev-cli/commit/3583e1aff934cfb1ce1bad257ffbfa262b3a8733))
* **api:** api update ([7b5b53f](https://github.com/context-dot-dev/context-dev-cli/commit/7b5b53f167b6bf29d2c4de02f348edc2122d5e80))
* **api:** api update ([af18337](https://github.com/context-dot-dev/context-dev-cli/commit/af1833778a6a1620a5e3f0008b7f67cd5dae53c0))

## 1.7.0 (2026-08-18)

Full Changelog: [v1.6.0...v1.7.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.6.0...v1.7.0)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,7 +7,7 @@ require (
github.com/charmbracelet/bubbletea v1.3.6
github.com/charmbracelet/lipgloss v1.1.0
github.com/charmbracelet/x/term v0.2.1
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0
github.com/goccy/go-yaml v1.18.0
github.com/itchyny/json2yaml v0.1.4
github.com/muesli/reflow v0.3.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,8 +18,8 @@ github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payR
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0 h1:gw/QnKENZ8seyEPI9t9f7MjbtQGK392WFalNUKS3Xs4=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0 h1:SsEX/lciOcEwANUhkEs6iJoEtSD2oZmnmslHtlio/Cc=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
Expand Down
2 changes: 1 addition & 1 deletion pkg/cmd/version.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,4 +2,4 @@

package cmd

const Version = "1.7.0" // x-release-please-version
const Version = "1.8.0" // x-release-please-version
14 changes: 10 additions & 4 deletions pkg/cmd/web.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Flags: []cli.Flag{
&requestflag.Flag[map[string]any]{
Name: "schema",
Usage: "JSON Schema for the returned data object. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Usage: "JSON Schema for the returned data object. Image fields such as `image_urls` or `product_photos` automatically make page image references available to extraction, so product data and photos can be returned in one call. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Required: true,
BodyPath: "schema",
},
Expand All@@ -31,6 +31,11 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Required: true,
BodyPath: "url",
},
&requestflag.Flag[[]map[string]any]{
Name: "action",
Usage: "Optional browser actions executed in order on the requested page after it loads, before links are discovered or additional pages are crawled. Requires a paid plan. When actions are provided and stopAfterMs is omitted, the crawl budget defaults to 110000 ms.",
BodyPath: "actions",
},
&requestflag.Flag[bool]{
Name: "fact-check",
Usage: "When true, every returned value must be grounded in facts stated on the page; fields that cannot be supported by the page are returned as null/empty. When false (default), the model may make reasonable inferences and derivations from the page content (e.g. ideal customer, competitor analysis, recommendations) while keeping verifiable specifics (names, quotes, URLs, dates, metrics) faithful to the source.",
Expand DownExpand Up@@ -84,7 +89,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "stop-after-ms",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Default: 80000 (80s).",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Defaults to 80000 (80s), or 110000 (110s) when browser actions are provided.",
Default: 80000,
BodyPath: "stopAfterMs",
},
Expand DownExpand Up@@ -557,7 +562,7 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[string]{
Name: "url-regex",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped.",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped. An automatic prefix scope in the form ^<starting URL> follows a redirect of the starting page.",
BodyPath: "urlRegex",
},
&requestflag.Flag[bool]{
Expand All@@ -568,7 +573,8 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "wait-for-ms",
Usage: "Optional browser wait time in milliseconds after initial page load for each crawled page. Min: 0. Max: 30000 (30 seconds). ",
Usage: "Browser wait time in milliseconds after initial page load for each crawled page. Defaults to 3500 (3.5 seconds). Min: 0. Max: 30000 (30 seconds).",
Default: 3500,
BodyPath: "waitForMs",
},
&requestflag.Flag[string]{
Expand Down
5 changes: 5 additions & 0 deletions pkg/cmd/web_test.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,6 +18,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -46,6 +47,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -74,6 +76,9 @@ func TestWebExtract(t *testing.T) {
" required: bar\n" +
" additionalProperties: bar\n" +
"url: https://example.com\n" +
"actions:\n" +
" - do: wait\n" +
" timeMs: 0\n" +
"factCheck: true\n" +
"followSubdomains: true\n" +
"includeFrames: true\n" +
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
{
".": "1.7.0"
".": "1.8.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
configured_endpoints: 41
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-b0c72d2fe5911c9ce155275b954198bf2152e915a7e5b9f719aad50e222b9ef8.yml
openapi_spec_hash: 5cf943ea5718059b7975417b012cee28
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-2c3f4e4b357ca78c019a3aacd006e2bb8b332d4172a300ee6c46c076a216ed3f.yml
openapi_spec_hash: b89be415cf6ee594b521885a9deb25ac
config_hash: 0fb0ceca5946298c416cec0cca5260c7
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
# Changelog

## 1.8.0 (2026-08-23)

Full Changelog: [v1.7.0...v1.8.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.7.0...v1.8.0)

### Features

* **api:** api update ([985ccab](https://github.com/context-dot-dev/context-dev-cli/commit/985ccab2173e91b5cf40749f33133d7c92527652))
* **api:** api update ([3583e1a](https://github.com/context-dot-dev/context-dev-cli/commit/3583e1aff934cfb1ce1bad257ffbfa262b3a8733))
* **api:** api update ([7b5b53f](https://github.com/context-dot-dev/context-dev-cli/commit/7b5b53f167b6bf29d2c4de02f348edc2122d5e80))
* **api:** api update ([af18337](https://github.com/context-dot-dev/context-dev-cli/commit/af1833778a6a1620a5e3f0008b7f67cd5dae53c0))

## 1.7.0 (2026-08-18)

Full Changelog: [v1.6.0...v1.7.0](https://github.com/context-dot-dev/context-dev-cli/compare/v1.6.0...v1.7.0)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,7 +7,7 @@ require (
github.com/charmbracelet/bubbletea v1.3.6
github.com/charmbracelet/lipgloss v1.1.0
github.com/charmbracelet/x/term v0.2.1
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0
github.com/goccy/go-yaml v1.18.0
github.com/itchyny/json2yaml v0.1.4
github.com/muesli/reflow v0.3.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,8 +18,8 @@ github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payR
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0 h1:gw/QnKENZ8seyEPI9t9f7MjbtQGK392WFalNUKS3Xs4=
github.com/context-dot-dev/context-go-sdk/v2 v2.10.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0 h1:SsEX/lciOcEwANUhkEs6iJoEtSD2oZmnmslHtlio/Cc=
github.com/context-dot-dev/context-go-sdk/v2 v2.11.0/go.mod h1:CvRANWLP0FHj5XyUwzEVX79ujdwr/2Jy375UVzKNQm8=
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
Expand Down
2 changes: 1 addition & 1 deletion pkg/cmd/version.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,4 +2,4 @@

package cmd

const Version = "1.7.0" // x-release-please-version
const Version = "1.8.0" // x-release-please-version
14 changes: 10 additions & 4 deletions pkg/cmd/web.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -21,7 +21,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Flags: []cli.Flag{
&requestflag.Flag[map[string]any]{
Name: "schema",
Usage: "JSON Schema for the returned data object. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Usage: "JSON Schema for the returned data object. Image fields such as `image_urls` or `product_photos` automatically make page image references available to extraction, so product data and photos can be returned in one call. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.",
Required: true,
BodyPath: "schema",
},
Expand All@@ -31,6 +31,11 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
Required: true,
BodyPath: "url",
},
&requestflag.Flag[[]map[string]any]{
Name: "action",
Usage: "Optional browser actions executed in order on the requested page after it loads, before links are discovered or additional pages are crawled. Requires a paid plan. When actions are provided and stopAfterMs is omitted, the crawl budget defaults to 110000 ms.",
BodyPath: "actions",
},
&requestflag.Flag[bool]{
Name: "fact-check",
Usage: "When true, every returned value must be grounded in facts stated on the page; fields that cannot be supported by the page are returned as null/empty. When false (default), the model may make reasonable inferences and derivations from the page content (e.g. ideal customer, competitor analysis, recommendations) while keeping verifiable specifics (names, quotes, URLs, dates, metrics) faithful to the source.",
Expand DownExpand Up@@ -84,7 +89,7 @@ var webExtract = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "stop-after-ms",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Default: 80000 (80s).",
Usage: "Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Defaults to 80000 (80s), or 110000 (110s) when browser actions are provided.",
Default: 80000,
BodyPath: "stopAfterMs",
},
Expand DownExpand Up@@ -557,7 +562,7 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[string]{
Name: "url-regex",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped.",
Usage: "Regex pattern. Only URLs matching this pattern will be followed and scraped. An automatic prefix scope in the form ^<starting URL> follows a redirect of the starting page.",
BodyPath: "urlRegex",
},
&requestflag.Flag[bool]{
Expand All@@ -568,7 +573,8 @@ var webWebCrawlMd = requestflag.WithInnerFlags(cli.Command{
},
&requestflag.Flag[int64]{
Name: "wait-for-ms",
Usage: "Optional browser wait time in milliseconds after initial page load for each crawled page. Min: 0. Max: 30000 (30 seconds). ",
Usage: "Browser wait time in milliseconds after initial page load for each crawled page. Defaults to 3500 (3.5 seconds). Min: 0. Max: 30000 (30 seconds).",
Default: 3500,
BodyPath: "waitForMs",
},
&requestflag.Flag[string]{
Expand Down
5 changes: 5 additions & 0 deletions pkg/cmd/web_test.go
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,6 +18,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -46,6 +47,7 @@ func TestWebExtract(t *testing.T) {
"web", "extract",
"--schema", "{type: bar, properties: bar, required: bar, additionalProperties: bar}",
"--url", "https://example.com",
"--action", "{do: wait, timeMs: 0}",
"--fact-check=true",
"--follow-subdomains=true",
"--include-frames=true",
Expand DownExpand Up@@ -74,6 +76,9 @@ func TestWebExtract(t *testing.T) {
" required: bar\n" +
" additionalProperties: bar\n" +
"url: https://example.com\n" +
"actions:\n" +
" - do: wait\n" +
" timeMs: 0\n" +
"factCheck: true\n" +
"followSubdomains: true\n" +
"includeFrames: true\n" +
Expand Down
Loading