Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
28cfb6d
feat(core): update tokenless workflows and supporting modules
jazelly Jul 24, 2026
df5edf7
fix(playwright): verify provider accounts and expose visible status
jazelly Jul 25, 2026
f6dd951
feat(cli): align fixture-driven provider capabilities
jazelly Jul 25, 2026
0d438ec
refactor(tokenless): consolidate project implementation
jazelly Jul 25, 2026
21844cc
docs(cli): add command reference links and setup daemon safeguards
jazelly Jul 25, 2026
0dc3e49
feat(tokenless): update CLI integration and project documentation
jazelly Jul 25, 2026
4317e00
fix(cli): reject invalid command options
jazelly Jul 25, 2026
a4815db
refactor(tokenless): streamline project architecture
jazelly Jul 26, 2026
7f14808
fix(cli): make daemon entry executable
jazelly Jul 26, 2026
804d873
feat(cli): complete durable TypeScript daemon
jazelly Jul 26, 2026
cf71b88
feat(cli): embed playwright runtime in ts daemon
jazelly Jul 26, 2026
c6d38f3
feat(cli): add browser runtime quiesce controls
jazelly Jul 26, 2026
eb0004d
feat(cli): switch default runtime to ts daemon
jazelly Jul 26, 2026
bb7bf16
feat(cli): remove native runtime packages
jazelly Jul 26, 2026
521d4a7
docs(roadmaps): define roadmap lifecycle and provider architecture
jazelly Jul 26, 2026
d099d88
refactor(tokenless): streamline project architecture
jazelly Jul 27, 2026
ef33467
refactor(tokenless): simplify project implementation
jazelly Jul 27, 2026
c70192d
fix(cli): validate daemon proof using encoded wire format
jazelly Jul 27, 2026
4c06b2b
refactor(tokenless): simplify CLI implementation
jazelly Jul 27, 2026
ec5dea8
refactor(tokenless): simplify project structure and remove obsolete code
jazelly Jul 27, 2026
77ebc9f
refactor(tokenless): consolidate project implementation changes
jazelly Jul 27, 2026
350fba0
feat(cli): recover daemon jobs and replay agent outcomes
jazelly Jul 27, 2026
06b5c8f
docs(testing): focus browser e2e on core workflows
jazelly Jul 27, 2026
4d5dfa4
docs(tokenless): align provider E2E policy and skill guidance
jazelly Jul 28, 2026
2f0f90f
refactor(tokenless): update core implementation
jazelly Jul 30, 2026
7652158
feat(qwen): add provider-specific mode selection docs
jazelly Jul 30, 2026
bd4b7c9
fix(cli): align provider availability and runtime health
jazelly Jul 30, 2026
bacffef
fix(e2e): allow classified Claude Cloudflare blocker skips
jazelly Jul 30, 2026
d9dabfb
test(live-e2e): consolidate provider submissions and document setup
jazelly Jul 30, 2026
d737e3f
fix(live-e2e): preserve focus during headed browser launch
jazelly Jul 30, 2026
e014f32
docs: refine capability-first agent routing roadmap
jazelly Jul 30, 2026
1d44047
feat(cli): add capability routing and profile browser open
jazelly Jul 31, 2026
7beeb3b
fix(live-e2e): launch headed browser without focus activation
jazelly Jul 31, 2026
654412b
test(live-e2e): reuse one browser across full suite
jazelly Jul 31, 2026
abc58bb
fix(cli): classify Qwen DNS failures as suspected rate limits
jazelly Aug 1, 2026
09f5f07
feat(cli): add provider page isolation and DeepSeek support
jazelly Aug 1, 2026
d3d78ce
feat(tokenless): update provider workflows and CLI capabilities
jazelly Aug 1, 2026
2986940
feat[tokenless]: update project functionality
jazelly Aug 1, 2026
107ee7e
feat(browser-runtime): add repair recovery and CDP connection mode
jazelly Aug 1, 2026
50a20b5
refactor(core): streamline tokenless architecture
jazelly Aug 1, 2026
4946671
fix(browser-runtime): verify artifacts before cache commit
jazelly Aug 1, 2026
654cc43
docs(architecture): document single-browser profile isolation and Cloak
jazelly Aug 1, 2026
378ed4c
feat(browser-runtime): add safe Cloak profile discovery and multiprofile
jazelly Aug 1, 2026
a976d92
fix(cli): enforce E2E keychain safety and update Cloak docs
jazelly Aug 1, 2026
06908f8
feat(cli): support opaque profile copying and Cloak AMD64 acceptance
jazelly Aug 1, 2026
3f21056
feat(project): update application features and documentation
jazelly Aug 1, 2026
b9421d3
feat(cli): expand providers and harden managed browser safety
jazelly Aug 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .changeset/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ Add one changeset for every user-visible change to the published `tokenless` CLI

Run `npm run changeset` and select `tokenless`. The release workflow creates a
version pull request only when an unpublished changeset is present. Merging that
pull request publishes all six native runtime packages before the universal CLI.
pull request publishes the single pure JavaScript `tokenless` package.
5 changes: 5 additions & 0 deletions .changeset/bright-profiles-wave.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Add case-sensitive `-P` profile and `-p` provider CLI shortcuts.
5 changes: 5 additions & 0 deletions .changeset/browser-connection-mode-evaluation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Add an experimental config-only Playwright/CDP browser connection mode and a two-mode real-browser capability matrix while preserving the existing default.
5 changes: 5 additions & 0 deletions .changeset/browser-runtime-selection.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add profile-bound browser runtime selection with system-first auto discovery, a locked managed Chrome for Testing fallback, explicit Anti-Detect CloakBrowser setup, safe known-Chromium profile/version inventory before Cloak download, exact four-component Cloak compatibility classification, interactive or explicit non-interactive clean-profile confirmation, clean runtime-isolated profiles, exact daemon runtime errors, transactional artifact security verification, per-provider setup review tabs, keychain-neutral E2E Cloak launches, separate doctor profile/runtime compatibility checks, and gated real-browser acceptance coverage.
5 changes: 5 additions & 0 deletions .changeset/calm-dolphins-help.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Reorganize CLI help into concise canonical and advanced command groups.
5 changes: 5 additions & 0 deletions .changeset/calm-workspaces-align.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add experimental four-provider capability inspection, explicit Workspace fallback modes, trusted conversation continuation, and visible file-upload acceptance evidence.
5 changes: 5 additions & 0 deletions .changeset/capability-first-routing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add a canonical task-capability catalog, expose evidence-backed provider routes through `tokenless capabilities list`, and route normal runs by explicit and inferred capability requirements before browser mutation.
5 changes: 5 additions & 0 deletions .changeset/capability-ranked-provider-fallback.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Rank automatic provider fallback by the run's complete capability requirements, recheck live eligibility before mutation, reject under-declared routes, preserve a versioned context envelope, expose structured durable fallback evidence, and fail closed when file selection lacks visible provider acceptance.
5 changes: 5 additions & 0 deletions .changeset/claude-cloudflare-known-issue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Classify Claude Cloudflare human checks as a narrow live E2E release-gate known issue when the durable blocker code is structured as `visible_cloudflare_turnstile` or `visible_cloudflare_interstitial`.
5 changes: 5 additions & 0 deletions .changeset/clean-daemon-v1-boundary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Unify and simplify the local CLI-daemon HTTP boundary under one Tokenless Daemon API v1 OpenAPI contract: keep only public job and browser-runtime routes, run Playwright coordination in-process, require proof before bearer use, and remove unreleased legacy payloads and extension compatibility.
5 changes: 5 additions & 0 deletions .changeset/clean-provider-registry.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add experimental Qwen guest-session support through the shared provider registry and visible Playwright workflow.
5 changes: 5 additions & 0 deletions .changeset/clear-command-map.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Publish a complete bilingual CLI command reference and link it from built-in help and public READMEs.
5 changes: 5 additions & 0 deletions .changeset/deepseek-provider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add the experimental DeepSeek visible-session provider with safe navigation, sign-in detection, baseline chat controls, and evidence-gated capability classification.
5 changes: 5 additions & 0 deletions .changeset/deepseek-visible-controls.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add experimental DeepSeek visible provider support with exact Instant, Expert, and Vision mode selection, independent DeepThink and Search controls, hCaptcha detection, mode-aware capability inspection, and provenance-bound real-session DOM fixtures.
5 changes: 5 additions & 0 deletions .changeset/doubao-experimental-provider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add an experimental signed-in Doubao adapter with visible account and free-tier inspection, Cloak-tested file upload, exact mode and coding-oriented Web skill controls, visible unavailable-state handling, prompt and response handling, and provider challenge detection.
5 changes: 5 additions & 0 deletions .changeset/durable-agent-replay.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Start the local daemon on demand with SQLite-backed dynamic endpoint discovery, recover leased and checkpointed jobs after restart, and add agent-scoped one-time outcome replay with durable full-result lookup.
5 changes: 5 additions & 0 deletions .changeset/gentle-composers-verify.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Accept non-empty visible composer content after prompt input instead of requiring an exact DOM text match.
5 changes: 5 additions & 0 deletions .changeset/grok-visible-entitlements.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Report Grok profiles as Free or SuperGrok from visible model entitlements and inventory redacted provider DOM fixtures by page URL.
5 changes: 5 additions & 0 deletions .changeset/guest-access-routing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Add provider access/tier reporting and a provider-session state machine that runs ChatGPT and Gemini guest sessions, hands unauthenticated Claude and Grok jobs to the user before task input, and persists redacted structural DOM snapshots.
5 changes: 5 additions & 0 deletions .changeset/import-profile-compatibility-state.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Preserve limited Chromium compatibility state when importing a browser profile with explicit user consent.
5 changes: 5 additions & 0 deletions .changeset/keychain-neutral-production-browser.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Keep every production Chromium launch keychain-neutral with `--password-store=basic` and `--use-mock-keychain`, regardless of the configured browser executable or connection mode.
5 changes: 5 additions & 0 deletions .changeset/local-web-control-plane.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add the secure bilingual local web control plane, profile-scoped provider and browser preferences, reserved dashboard tabs, setup handoff, dashboard CLI command, and browser-facing administration API.
5 changes: 5 additions & 0 deletions .changeset/localized-cli-language.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add English and Simplified Chinese CLI output selected during setup or through the persistent language config.
5 changes: 5 additions & 0 deletions .changeset/manual-profile-onboarding.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Keep managed-profile initialization user-run instead of triggering it from agent skills.
5 changes: 5 additions & 0 deletions .changeset/perplexity-experimental-provider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add experimental Perplexity guest chat routing with live prompt submission, completed responses, normalized citations, and visible citation-link closure through a managed Cloak profile.
5 changes: 5 additions & 0 deletions .changeset/profile-owned-browser-instances.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Keep one stable browser instance per active managed profile while removing the macOS-specific inspection launcher.
5 changes: 5 additions & 0 deletions .changeset/prompt-controls-wait.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Wait for visible prompt input and submit controls, distinguish availability timeouts from action failures, and allow free or anonymous prompt surfaces without an authentication precheck.
5 changes: 5 additions & 0 deletions .changeset/provider-availability-routing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Route implicit provider jobs through cached setup observations, report pre-submission errors when no cached provider is usable, and make doctor report provider usability plus normally stopped on-demand runtime state without treating either as damage.
5 changes: 5 additions & 0 deletions .changeset/provider-rate-limit-cadence.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add a packaged subscription-aware provider rate-limit catalog, durable submission history, cadence-based admission and deferral, in-scope provider fallback, visible cooldown handling, and `tokenless limits inspect` diagnostics.
5 changes: 5 additions & 0 deletions .changeset/provider-runtime-fallback.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Automatically fallback implicit runs across capability-compatible providers before human handoff while preserving one durable job and provider-attempt history.
5 changes: 5 additions & 0 deletions .changeset/provider-whitelist-config.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Rename persistent preferred provider configuration to `providerWhitelist`, default it to every non-disabled provider except Gemini, and migrate existing config on the next write.
5 changes: 5 additions & 0 deletions .changeset/providerless-profile-open.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Allow `tokenless profiles open` to launch a managed profile without selecting or navigating to a provider unless `--provider` is passed.
5 changes: 5 additions & 0 deletions .changeset/pure-js-runtime.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Ship Tokenless as a pure JavaScript package with the TypeScript daemon embedded in the CLI package, removing platform-specific native runtime packages and standalone Playwright runner artifacts.
5 changes: 5 additions & 0 deletions .changeset/quiet-tabs-preserve.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Preserve independent browser tabs for different providers, projects, and conversations unless a local job explicitly requests replacement.
5 changes: 5 additions & 0 deletions .changeset/qwen-dns-throttling.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Record intermittent Qwen DNS failures as retryable suspected rate limits without claiming confirmed provider throttling, and document the distinction and recovery steps.
5 changes: 5 additions & 0 deletions .changeset/qwen-visible-modes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add Qwen-specific mode discovery and selection, including Deep Research variants and Auto/Thinking/Fast effort controls.
5 changes: 5 additions & 0 deletions .changeset/real-native-projects.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add real Claude and Grok native Project creation, exact reuse, instruction outcomes, and durable Project-scoped conversation identity. Use the canonical Qwen Studio chat surface with hydration-safe guest submission.
5 changes: 5 additions & 0 deletions .changeset/setup-daemon-exact-reconcile.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Make ordinary daemon reuse depend on verified ready identity plus the exact package version, and let `tokenless setup` reconcile same-home version drift only after proof verification.
5 changes: 5 additions & 0 deletions .changeset/setup-handoff-headed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Check each provider's setup sign-in status once and report it without opening a login handoff or retrying.
5 changes: 5 additions & 0 deletions .changeset/setup-runtime-preflight.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Make `tokenless setup` report the local CLI version against npm latest and reconcile installed-runtime drift after verified same-home ready identity.
5 changes: 5 additions & 0 deletions .changeset/signed-capability-readiness.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Simplify daemon readiness to the same-home proof plus exact package version, and keep shutdown on the bearer-authenticated control endpoint.
5 changes: 5 additions & 0 deletions .changeset/soft-lamps-daemon-stop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Negotiate daemon reuse independently from package versions, and add `tokenless daemon stop` with same-home ready verification followed by bearer-authenticated graceful self-shutdown that waits for the daemon-managed browser to release its profile before returning.
5 changes: 5 additions & 0 deletions .changeset/strict-cli-options.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Reject unknown and command-incompatible CLI options before dispatch, include command usage in human and JSON errors, and add common per-command `-h`/`--help`.
5 changes: 5 additions & 0 deletions .changeset/unified-global-maintenance.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": patch
---

Unify setup and upgrade maintenance so the verified current CLI always upserts global Tokenless skills and reconciles its matching TypeScript daemon.
5 changes: 5 additions & 0 deletions .changeset/visible-provider-accounts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Fail provider authentication checks closed on visible account controls and include visible provider usernames and subscription labels in managed profile output.
5 changes: 5 additions & 0 deletions .changeset/zai-experimental-provider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"tokenless": minor
---

Add experimental Z.ai guest chat routing with Cloak-verified prompt submission, completed visible responses, conversation mapping, and durable state.
2 changes: 2 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- [ ] I ran the applicable manual real-provider E2E gates locally, or this pull request does not affect visible-provider behavior.
- [ ] Every applicable real-provider E2E passes before release; invoked suites had no skipped case or internal retry.
70 changes: 26 additions & 44 deletions .github/workflows/publish-npm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,32 +30,10 @@ jobs:
- id: release
run: node scripts/release/verify-pending.mjs "$GITHUB_OUTPUT"

publish-native:
publish-cli:
needs: prepare
if: needs.prepare.outputs.publish == 'true'
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- runner: macos-14
platform: darwin
arch: arm64
- runner: macos-15-intel
platform: darwin
arch: x64
- runner: ubuntu-24.04-arm
platform: linux
arch: arm64
- runner: ubuntu-24.04
platform: linux
arch: x64
- runner: windows-11-arm
platform: win32
arch: arm64
- runner: windows-2022
platform: win32
arch: x64
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
Expand All @@ -64,36 +42,41 @@ jobs:
cache: npm
- name: Install npm with Trusted Publishing support
run: npm install --global npm@11.15.0
- name: Install Rust
run: rustup toolchain install stable --profile minimal
- name: Build and verify this native runtime
run: npm --prefix packages/cli run build:native
- name: Publish native runtime
run: node scripts/release/publish-package.mjs "packages/cli/npm/tokenless-native-${{ matrix.platform }}-${{ matrix.arch }}"
- name: Install dependencies
run: npm ci --ignore-scripts
- name: Publish CLI
run: node scripts/release/publish-package.mjs packages/cli

publish-cli:
needs: [prepare, publish-native]
create-github-release:
needs: [prepare, publish-cli]
if: needs.prepare.outputs.publish == 'true'
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '24'
cache: npm
- name: Install npm with Trusted Publishing support
run: npm install --global npm@11.15.0
- name: Install dependencies
- name: Extract release notes from persisted changelog
env:
VERSION: ${{ needs.prepare.outputs.version }}
run: node scripts/release/extract-changelog-section.mjs "$VERSION" /tmp/tokenless-release-notes.md
- name: Create GitHub release
env:
GH_TOKEN: ${{ github.token }}
VERSION: ${{ needs.prepare.outputs.version }}
run: |
# Native packages are published immediately before this job, so refresh
# their optional-dependency entries while installing the workspace.
rm package-lock.json
npm install --ignore-scripts
- name: Publish universal CLI after every native runtime
run: node scripts/release/publish-package.mjs packages/cli
TAG="v$VERSION"
if gh release view "$TAG" >/dev/null 2>&1; then
echo "Release $TAG already exists; leaving it unchanged."
else
gh release create "$TAG" \
--target "$GITHUB_SHA" \
--title "tokenless $TAG" \
--notes-file /tmp/tokenless-release-notes.md
fi

clear-pending-marker:
needs: [prepare, publish-cli]
needs: [prepare, create-github-release]
if: needs.prepare.outputs.publish == 'true'
runs-on: ubuntu-24.04
steps:
Expand All @@ -115,7 +98,6 @@ jobs:
git checkout -B "$CLEANUP_BRANCH" origin/main
node scripts/release/verify-pending.mjs /tmp/release-output
grep -Fx "version=$VERSION" /tmp/release-output
rm package-lock.json
npm install --package-lock-only --ignore-scripts
git rm .changeset/publish-pending.json
git add package-lock.json
Expand Down
Loading