167 Commits
Author SHA1 Message Date
Mark CliandGitHub b1cbf2302d Merge pull request #57 from only-cli/release/0.5.3
release: 0.5.3
v0.5.3
2026-09-04 09:06:17 -04:00
only-cli 5ed47af59b release: 0.5.3
reddit.com is asked with the firefox fingerprint first; see CHANGELOG.
2026-09-04 09:04:54 -04:00
Mark CliandGitHub 962356cb91 Merge pull request #56 from only-cli/fix/reddit-firefox-first
fix: ask reddit.com with the firefox fingerprint first
2026-09-04 09:02:34 -04:00
only-cli 5b30fbfbc1 fix: ask reddit.com with the firefox fingerprint first
Reddit's edge answers the chrome fingerprint with a 403 or a 429 while
letting firefox through, and it allows anonymous readers about ten
requests a minute per address, so the wasted chrome attempt on every
read was costing a real share of that budget. identityOrder() picks the
order per host: firefox then chrome for reddit.com and its subdomains,
chrome then firefox everywhere else, with the same downgrade chain and
plain fetch fallback as before. Refs #52.
2026-09-04 09:01:13 -04:00
Mark CliandGitHub 431dad3abd Merge pull request #55 from only-cli/docs/reddit-feeds
docs: describe the Reddit Atom feed route and its limits
2026-09-04 08:54:43 -04:00
only-cli c344e639b6 docs: describe the Reddit Atom feed route and its limits
The README access paragraph, llms.txt, and the skill now say that oc reddit
reads the www.reddit.com Atom feeds, that a reddit.com page URL given to
oc open still meets the login wall, and that anonymous reddit.com allows
about ten requests a minute. The Benchmarks section notes that the suite
still measures the old.reddit.com page URLs, not the feed route.
2026-09-04 08:53:36 -04:00
Mark CliandGitHub 3b44bc944b Merge pull request #54 from only-cli/release/0.5.2
release: 0.5.2
v0.5.2
2026-09-04 08:48:33 -04:00
only-cli 21f9955e15 release: 0.5.2
Version 0.5.2 in package.json, the lockfile, the plugin manifest, the
marketplace entry, and the npx pins inside the skill. CHANGELOG covers one
change: oc reddit reads the Atom feeds on www.reddit.com now that old.reddit.com
is behind a login and the www .json views answer 403 (#52, #53).
2026-09-04 08:47:02 -04:00
Mark CliandGitHub e7a36a67f0 Merge pull request #53 from only-cli/fix/reddit-atom-feeds
reddit: read the www.reddit.com Atom feeds, old.reddit.com is behind a login now
2026-09-04 08:45:12 -04:00
only-cli 0ea9f4cbda reddit: read the www.reddit.com Atom feeds, old.reddit.com is behind a login now
Since 30 June 2026 every logged-out request to old.reddit.com, HTML, .json,
and .rss alike, lands on /login/?reason=lor2, so every oc reddit verb rendered
an empty login page. The www.reddit.com .json views closed a month earlier and
answer 403 to anything without an OAuth token, whatever the User-Agent or TLS
fingerprint, so they are not a way back in either.

The Atom feeds on www.reddit.com still answer without a login, and the feed
converter already turns one into a page: a subreddit renders in about 480
tokens from a 21,500 token payload, a thread with 22 comments in about 1,000.
Every verb now points at a feed, and new <name> and top <name> join them,
since the feeds offer those sorts for free. The feeds carry no scores or
comment counts, and anonymous reddit.com allows roughly ten requests a minute
per address, which the changelog says plainly.

The fixture is a three-entry post feed in Reddit's shape, one entry for the
post and one per comment, so the thread rendering is covered offline.

Closes #52
2026-09-04 08:42:41 -04:00
Mark CliandGitHub ff5f376063 Merge pull request #51 from only-cli/docs/benchmarks-deps
docs: add the dependency research suite to the Benchmarks section
2026-09-02 17:40:42 -04:00
only-cli c5426c246b docs: add the dependency research suite to the Benchmarks section
only-cli/benchmarks now runs twelve graded lookups on the pages around
a dependency: GitHub, npm, PyPI, RubyGems, crates.io, Docker Hub, Stack
Overflow, an RFC. oc 12/12 at $0.63 against WebFetch 10/12 at $0.70 and
WebSearch 12/12 at $1.22 on Claude Code, with the hard rows called out.
2026-09-02 17:40:37 -04:00
Mark CliandGitHub e046d308c5 Merge pull request #50 from only-cli/docs/benchmarks-0.5.1
docs: sync the Benchmarks section with the 0.5.1 rerun
2026-09-02 17:06:06 -04:00
only-cli 3ea03d341c docs: sync the Benchmarks section with the 0.5.1 rerun
Page view and Claude agent suites rerun on the published 0.5.1 on
2026-09-02. Reddit now sends logged-out readers to a login wall, so oc
reads 13 of 15 pages and says so on the other two; Yahoo Finance refuses
plain fetch. The Codex figures stay from the 0.4.0 and 0.5.0 runs and
are labelled that way.
2026-09-02 17:05:07 -04:00
Mark CliandGitHub ca9f46ca91 Merge pull request #49 from only-cli/release/0.5.1
release: 0.5.1
v0.5.1
2026-09-02 10:50:53 -04:00
only-cli 73ac4e863a release: 0.5.1
Version 0.5.1 in package.json, the lockfile, the plugin manifest, the
marketplace entry, and the npx pins inside the skill. CHANGELOG covers the
fingerprint fallback (#40), the footer no longer offering planned commands
(#44), and find in every footer (#46). The README install note and llms.txt
now describe the full transport chain: Chrome, then Firefox, then native
fetch.
2026-09-02 10:49:23 -04:00
Mark CliandGitHub 10bf7b3b82 Merge pull request #48 from only-cli/test/cache-and-cli-dispatch
test: cover the day cache and cli dispatch directly
2026-09-02 10:47:30 -04:00
Mark CliandGitHub cbf2de39de Merge pull request #47 from only-cli/feat/find-in-footer
feat: offer find in every actions footer
2026-09-02 10:47:26 -04:00
only-cli 5657d60771 test: cover the day cache and cli dispatch directly
cache.js had no test importing it, and cli.js was tested only through its
auth commands. Both now have a file of their own.

tests/cache.test.js proves the policy the module's comment states: a miss
fetches, parses, and writes under host and extension; a fresh copy is served
from disk without touching the network; a copy older than a day is refetched
and replaced; a body the parser rejects is never written, and a stale good
copy survives such a refetch; a cache directory that cannot be created costs
only the refetch. The network is a local proxy that records what it sees, so
"never asked" is asserted, not assumed.

tests/cli.test.js spawns the real binary against a throwaway OC_HOME with a
page seeded straight into a session file, so read, next, find, and do on
text all have something to answer with and nothing fetches. It covers help
on no command and both help flags, the help text naming every dispatchable
command once, unknown first words, a site name reaching the shortcut
resolver before being called unknown, budget and session name validation
running before any command, the nothing-open message from every session
command, the usage lines of open, raw, read, find, and do, do on a text
number reading in place with a recording proxy proving no request left, the
four planned commands failing with one line that names themselves, sites,
and flags placed before or after the command.

Each test was checked against a deliberate break in the code it guards.
2026-09-02 10:38:28 -04:00
only-cli e1ff0f63c4 feat: offer find in every actions footer
find is the cheapest way to go deeper on a rendered page: one command lands
on the block that matters, where read needs the right number first and next
pages toward it. SKILL.md already lists it first under "going further,
cheapest first", but no footer offered it, and the footer is what an agent
actually reads, so callers were steered toward read, next, and raw instead.

The entry now appears in all three footers, after do and before read, so the
order matches the skill. On find's own output it turns the "narrow the
query" hint into an action.

Cost on the fixtures is 3 or 4 tokens per render (news 127 to 131, login 30
to 33, forum 695 to 699). Skipping one next on a long page pays for a
hundred of those.

The test checks the same three footer sites as the stub probe: find is
present and listed ahead of read. It fails on main.

Closes #46.
2026-09-02 09:38:07 -04:00
Mark CliandGitHub 4aabae8340 Merge pull request #45 from nemekath/fix/footer-advertises-unavailable-commands
Drop fill and submit from the actions footer, they always throw
2026-09-02 09:13:51 -04:00
Mark CliandGitHub 227d6928c5 Merge pull request #41 from only-cli/fix/impers-unsupported-fingerprint
fix: fall back to firefox, then plain fetch, when impers refuses a fingerprint
2026-09-02 09:12:38 -04:00
Mark CliandGitHub 7f3e626a4d Merge pull request #43 from only-cli/dependabot/github_actions/codeql-action-64c8a27a46
chore(deps): bump the codeql-action group with 3 updates
2026-09-01 18:33:05 -04:00
Mark CliandGitHub 376851c6fa Merge pull request #42 from only-cli/dependabot/npm_and_yarn/impers-0.1.1
chore(deps): bump impers from 0.1.0 to 0.1.1
2026-09-01 18:32:52 -04:00
Benjamin Z.andClaude Opus 5 21566143d1 Drop fill and submit from the actions footer, they always throw
The footer is the line an agent reads to pick its next command, so a name
in it that cannot run costs a turn and returns nothing. fill and submit are
still stubs, so every page with an input was offering two commands that
throw NotImplemented. Removing them also takes 7 tokens off the rendered
news fixture and 6 off login.

The test probes act.js for handlers that throw NotImplemented rather than
listing them by name, so the next stub to land is covered without anyone
remembering to come back here. It checks all three footers: the render, and
both of find's paths.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-02 00:28:51 +02:00
dependabot[bot]andGitHub dfc9e25436 chore(deps): bump the codeql-action group with 3 updates
Bumps the codeql-action group with 3 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action).


Updates `github/codeql-action/init` from 4.37.8 to 4.37.9
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938)

Updates `github/codeql-action/analyze` from 4.37.8 to 4.37.9
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938)

Updates `github/codeql-action/upload-sarif` from 4.37.8 to 4.37.9
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.37.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-action
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.37.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-action
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.37.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-action
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-01 04:52:31 +00:00
dependabot[bot]andGitHub b7c57e6e0b chore(deps): bump impers from 0.1.0 to 0.1.1
Bumps [impers](https://github.com/lexiforest/impers) from 0.1.0 to 0.1.1.
- [Commits](https://github.com/lexiforest/impers/compare/v0.1.0...v0.1.1)

---
updated-dependencies:
- dependency-name: impers
  dependency-version: 0.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-01 04:49:26 +00:00
only-cli b02dce55af fix: fall back to firefox, then plain fetch, when impers refuses a fingerprint
impers resolves the chrome alias to its newest fingerprint (chrome150 as
of impers 0.1.1), but the native library it loads can be an older system
copy of libcurl-impersonate found before its own pinned download. Such a
copy refuses the fingerprint with an ImpersonateError before any request
leaves, and oc died on the spot with "Impersonating chrome150 is not
supported" (#40).

A refused identity now downgrades the same way a 403 already did: chrome
falls back to firefox, and when both are refused the plain fetch
transport still gets the page. Any other impers failure propagates
unchanged.
2026-08-31 09:11:36 -04:00
Mark CliandGitHub 65322bc5b6 Merge pull request #39 from only-cli/docs/readme-highlights
docs: lead Benchmarks with headline numbers, group auth and proxies under Features
2026-08-26 09:36:39 -04:00
only-cli ba49303527 docs: lead the Benchmarks section with headline numbers, group auth and proxies under Features 2026-08-26 09:32:03 -04:00
Mark CliandGitHub 7f1f109b8e Merge pull request #38 from only-cli/docs/sync-benchmarks
docs: sync the Benchmarks section with the benchmarks README
2026-08-25 10:53:39 -04:00
only-cli 2a5f97204e docs: sync the Benchmarks section with the benchmarks README
Add the language docs suite and the Playwright MCP row, fold the wiki
and docs results into one table, and note where the Codex runs split.
2026-08-25 10:52:12 -04:00
only-cli ccc0cf4476 docs: explain the search shapes a site definition can use, cover every DuckDuckGo search verb
CONTRIBUTING described a command as a URL template only, so a contributor
adding a docs site had no way to learn that a search verb can also name a
static index (sphinx, rdoc, nodedoc), a JSON endpoint (api), or fall back
to DuckDuckGo with a site: filter, or how to pick between them. It also
still counted six files in src/.

The rust, java, ts, and php search verbs had no test; only cpp's did. #25
asked for both verbs per language to be covered offline.
2026-08-25 09:46:23 -04:00
Mark CliandGitHub c12ecf060d Merge pull request #37 from only-cli/chore/codeql-action-v4
ci: bump github/codeql-action to v4.37.8, group its Dependabot updates
2026-08-25 07:55:28 -04:00
only-cliandClaude Fable 5 59964c5dca ci: bump github/codeql-action to v4.37.8, group its Dependabot updates
Dependabot opened separate PRs for init (#35) and analyze (#34). Each
failed because the two steps must run the same version of the action.
Bump init, analyze and upload-sarif together and add a Dependabot group
so future codeql-action bumps arrive as one PR.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 07:54:03 -04:00
Mark CliandGitHub 2c8b8f20c4 Merge pull request #36 from only-cli/dependabot/github_actions/actions/dependency-review-action-5.0.0
chore(deps): bump actions/dependency-review-action from 4.9.0 to 5.0.0
2026-08-25 07:53:24 -04:00
Mark CliandGitHub c3952be485 Merge pull request #33 from only-cli/dependabot/github_actions/ossf/scorecard-action-2d1146689b8cda280b9bc96326124645441f03bc
chore(deps): bump ossf/scorecard-action from 55891bbd73f2425e97637d96e306fc9d491d0b21 to 2d1146689b8cda280b9bc96326124645441f03bc
2026-08-25 07:49:10 -04:00
Mark CliandGitHub 0cf453d02c Merge pull request #32 from only-cli/dependabot/github_actions/actions/upload-artifact-7.0.1
chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1
2026-08-25 07:48:28 -04:00
dependabot[bot]andGitHub 8d4c4ca4eb chore(deps): bump actions/dependency-review-action from 4.9.0 to 5.0.0
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.9.0 to 5.0.0.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/2031cfc080254a8a887f58cffee85186f0e49e48...a1d282b36b6f3519aa1f3fc636f609c47dddb294)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-25 04:45:55 +00:00
dependabot[bot]andGitHub 625048a7d1 chore(deps): bump ossf/scorecard-action
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 55891bbd73f2425e97637d96e306fc9d491d0b21 to 2d1146689b8cda280b9bc96326124645441f03bc.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](https://github.com/ossf/scorecard-action/compare/55891bbd73f2425e97637d96e306fc9d491d0b21...2d1146689b8cda280b9bc96326124645441f03bc)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-version: 2d1146689b8cda280b9bc96326124645441f03bc
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-25 04:44:13 +00:00
dependabot[bot]andGitHub a274761a7b chore(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.2 to 7.0.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/ea165f8d65b6e75b540449e92b4886f43607fa02...043fb46d1a93c77aae656e7c1c64a875d1fc6a0a)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-25 04:44:10 +00:00
only-cli cad6fb4596 docs: sync benchmark numbers to the 0.5.0 run, fix the skill's site list 2026-08-24 21:50:31 -04:00
only-cli 537ddf7d3b docs: copy edits v0.5.0 2026-08-24 21:33:14 -04:00
Mark CliandGitHub e34304a305 Merge pull request #31 from only-cli/release/0.5.0
release: 0.5.0
2026-08-24 21:32:28 -04:00
only-cli 4b6b81f8a0 release: 0.5.0 2026-08-24 21:30:31 -04:00
Mark CliandGitHub 4b3abf218b Merge pull request #26 from only-cli/feat/language-docs
Add language documentation shortcuts (#25): Python, MDN, Node.js, Ruby, Go, Rust, Java, PHP, TypeScript, C/C++, and .NET
2026-08-24 21:27:21 -04:00
only-cli 870ff2cf73 merge main: authenticated sessions via per-session cookie jars 2026-08-24 21:25:44 -04:00
Mark CliandGitHub 06a46abc39 Merge pull request #30 from RonCodes88/feat/authenticated-sessions
feat: authenticated sessions via per-session cookie jars
2026-08-24 21:07:59 -04:00
RonCodes88 e6218a5a5a test: assert the IPv6 tunnel host directly so node's SAN change stops breaking CI 2026-08-25 09:54:35 +09:00
RonCodes88 7aed46ed56 docs: recommend piping the cookie header and explain what logout removes 2026-08-25 09:38:34 +09:00