Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
fffac3a
feat(browser): scaffold earl-protocol-browser crate
jrandolf Feb 24, 2026
1369575
fix(browser): add rkyv derives, scope tokio features
jrandolf Feb 24, 2026
455d065
feat(browser): add typed BrowserError enum
jrandolf Feb 24, 2026
c5a7dbf
feat(browser): add BrowserOperationTemplate and BrowserStep schema wi…
jrandolf Feb 24, 2026
a1d129e
feat(browser): add SessionFile with atomic write, 0700 directory, and…
jrandolf Feb 24, 2026
642e512
feat(browser): add Chrome launcher, connect, and configure_page
jrandolf Feb 24, 2026
2f096da
feat(browser): add accessibility tree ref mapping
jrandolf Feb 24, 2026
7fb3d61
feat(browser): add step engine, URL scheme validation, navigation, sn…
jrandolf Feb 24, 2026
8b8c565
fix(browser): use 'text' key in snapshot result per spec
jrandolf Feb 24, 2026
a3dd9f5
feat(browser): add interaction and mouse step implementations
jrandolf Feb 24, 2026
fde0596
feat(browser): implement all remaining step types
jrandolf Feb 24, 2026
ab961f6
fix(browser): validate locator ref and fix wait_for timeout overshoot
jrandolf Feb 24, 2026
6d6390a
feat(browser): implement builder and executor
jrandolf Feb 24, 2026
4fb0eaa
fix(browser): fix action discriminant corruption, session reconnect, …
jrandolf Feb 24, 2026
936aeeb
feat(browser): wire browser protocol into Earl schema, builder, and e…
jrandolf Feb 24, 2026
b33064d
fix(browser): add explicit Browser arm to request_url for consistency
jrandolf Feb 25, 2026
a42be5b
test(browser): add integration tests for navigation, snapshot, scheme…
jrandolf Feb 25, 2026
5248bbd
feat(browser): add example browser templates
jrandolf Feb 25, 2026
ab29522
fix(browser): add Browser arm to validate_operation in validator
jrandolf Feb 25, 2026
7728617
test(browser): add local HTTP test server and shared test helpers
jrandolf Feb 25, 2026
5357c79
test(browser): add screenshot and PDF use-case tests
jrandolf Feb 25, 2026
0e5f797
test(browser): add scraping and javascript use-case tests
jrandolf Feb 25, 2026
a376ace
test(browser): add dialog handling and assertion step tests
jrandolf Feb 25, 2026
a3510b8
test(browser): add form automation and keyboard/mouse use-case tests
jrandolf Feb 25, 2026
7d833d1
test(browser): add cookie and localStorage integration tests
jrandolf Feb 25, 2026
8071deb
test(browser): add session persistence use-case tests
jrandolf Feb 25, 2026
da862e1
test(browser): implement dialog and assertion tests, fix handle_dialog
jrandolf Feb 25, 2026
d3be012
fix(ci): fix clippy errors, rustfmt, and publish order for browser crate
jrandolf Feb 25, 2026
622bb5b
fix(ci): fix workspace rustfmt and per-crate publish dry-run
jrandolf Feb 25, 2026
3ebc567
test(browser): address all code review findings from testing.md review
jrandolf Feb 25, 2026
c5face6
docs: add browser protocol documentation to templates and schema refe…
jrandolf Feb 25, 2026
f094053
fix(docs): remove MDX-incompatible heading ID syntax
jrandolf Feb 25, 2026
26adf30
fix: address code review security and correctness findings
jrandolf Feb 25, 2026
fede9a3
fix: address second round of code review findings
jrandolf Feb 25, 2026
bf0ab42
fix(browser): eliminate temp-file leaks in screenshot/pdf and add stu…
jrandolf Feb 25, 2026
91668a0
fix(browser): restrict diagnostic screenshot permissions to 0o600
jrandolf Feb 25, 2026
82787b3
fix(browser): omit session_id from tracing::warn log to fix CodeQL cl…
jrandolf Feb 25, 2026
19f9dd6
fix(browser): remove session file path from warn log to fix CodeQL cl…
jrandolf Feb 25, 2026
b34ba23
fix(browser): omit session_id from SessionLocked error Display to fix…
jrandolf Feb 25, 2026
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
33 changes: 32 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,4 +108,35 @@ jobs:
- name: Cache cargo artifacts
uses: Swatinem/rust-cache@v2
- name: Validate crates.io package
run: cargo publish --dry-run --locked --no-verify
shell: bash
run: |
set -euo pipefail

# Publish in dependency order matching release.yml.
# - Skip crates that already exist on crates.io (idempotent).
# - Skip crates whose workspace dependencies haven't been
# published yet (valid for newly-added protocol crates before
# their first release).
CRATES=(
earl-core
earl-protocol-http
earl-protocol-grpc
earl-protocol-bash
earl-protocol-sql
earl-protocol-browser
earl
)

for crate in "${CRATES[@]}"; do
echo "Dry-run for $crate..."
output=$(cargo publish --dry-run --locked --no-verify -p "$crate" 2>&1) && echo "$output" || {
if echo "$output" | grep -q "already exists on crates.io index"; then
echo "$crate already on crates.io, skipping."
elif echo "$output" | grep -q "no matching package named"; then
echo "$crate has unpublished workspace dependencies, skipping."
else
echo "$output" >&2
exit 1
fi
}
done
1 change: 1 addition & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,7 @@ jobs:
earl-protocol-grpc
earl-protocol-bash
earl-protocol-sql
earl-protocol-browser
earl
)

Expand Down
Loading