Conversation
Cover _unit_for metric mapping, _fake_doc generation, run() result aggregation (skipped/ok/error/timeout), _run_one error paths, BackendNotAvailable exception, and all four handler parsing/scoring functions (_bench_embedding, _bench_reranking, _bench_llm_chat, _bench_image_generation). Mock time, network, and handler deps.
Add unit tests for shibaclaw_adapter
test: add unit tests for benchmark runner
Add unit tests for AgentGrantsStore
Cover announce, confirm, claim, get_signing_key, record_failed_attempt, pairing_state, and list_pending with CRUD operations plus edge cases (missing id, duplicate, expiry, max attempts, uninitialised store).
tests: add unit tests for AuthRequestsStore
tests: add unit tests for ClusterPairingStore
…oute)
shared_folders get called GET /api/shared-folders/{id}, but the backend has no
single-folder GET (only list, files, create, delete, access). Fetch the list and
filter by id, erroring cleanly on an unknown id. Aligned the test fake to return
a bare list from the list endpoint, matching the real API.
…tector.py Remove unused top-level imports (time, Path, AsyncMock). Remove superseded monkeypatch on gd.Path.__truediv__ in test_detects_steam_game that was immediately overridden by the Path replacement on the next line.
Adds a generic installable-PWA shell that any app can opt into via pwa:true in the app registry. Messages is the first to use it. - AppManifest gains pwa?: boolean opt-in flag (app-registry.ts) - messages gets pwa:true as the proven demo app - app.html + app-standalone-main.tsx + AppStandalone.tsx mirror the existing chat PWA trio; the standalone shell reads ?app=<id>, validates pwa:true, injects the dynamic manifest link, and mounts the app inside InstallPromptBanner - vite.config.ts: adds app.html as a build entry - GET /manifest?app=<id> (tinyagentos/routes/manifest.py) returns a web app manifest JSON for known pwa-enabled apps; 404 otherwise - Window.tsx: Install icon button on the right of the title bar for pwa:true apps (desktop only); opens /app.html?app=<id> in new tab - Tests: pwa flag assertions in app-registry.test.ts; AppStandalone routing vitest; pytest for the /manifest endpoint (200 shape + 404)
- Use httpx.ConnectError instead of builtin ConnectionError so with_retry treats the exception as retryable and actually retries (assert 7 calls) - Use httpx.Response(503) instead of MagicMock so with_retry's isinstance check passes and the retry-on-status path is exercised (assert 7 calls) - Add httpx import
Force distinct pending_ts values via direct DB update so the ordering assertion does not depend on time.time() clock granularity.
fix(taosctl): shared_folders get filters list (was hitting a missing route)
tests: clean up unused imports and dead monkeypatch in test_gaming_detector.py
feat(#107): universal standalone-PWA shell (opt-in pwa flag + generic app.html + dynamic manifest + title-bar Install)
test: make test_list_pending_ordered_by_announced_at deterministic
fix: make shibaclaw adapter tests genuinely exercise retry paths
Covers ResourceSnapshot properties, hardware probe functions, ResourceManager refresh/get_snapshot/yield/reclaim/best_model_for_task/evaluate_migration/ can_accept_job, and low-RAM throttling in _apply_limits. All external dependencies mocked; 64 tests passing.
AppStandalone called lazy() in the render body, making a new component type each render and remounting the app (state loss); memoize it per appId. The title-bar Install button is desktop-only, but mobile has no desktop title bar, so a PWA app could not be installed from a phone. Add the Install button to the mobile app title bar (MobileAppWindow) for pwa:true apps; it opens the standalone shell where the install prompt / Add to Home Screen guide lives.
Add taosctl browsing_history with list and clear verbs wrapping GET /api/browsing-history and DELETE /api/browsing-history. Skip the record endpoint (complex Pydantic body).
…ts deterministic Mock datetime.now in the store module so back-to-back inserts get distinct, increasing created_ts values. Previously the test relied on real clock granularity, which is flaky on coarse clocks.
The retry tests exhaust all 7 with_retry attempts, and with_retry backs off with real asyncio.sleep, so the three tests slept ~31s each (~90s total) in CI. An autouse fixture makes the backoff instant; the retry COUNT assertions are unchanged. Suite now runs in well under a second.
fix(#107): memoize standalone lazy (remount bug) + mobile Install button
Add unit tests for resource_manager
feat(taosctl): add browsing_history command group
Remove dead monkeypatch in test_start_returns_entry_with_defaults
test(shibaclaw): mock retry backoff (was sleeping ~90s in CI)
Add vitest render test for MigrationBanner component
Add vitest render test for LaunchpadIcon component
Add vitest render test for ModelPickerModal component
Add vitest render test for EmojiPickerField component
test: add vitest tests for use-list-nav hook
Add a vitest test for desktop/src/hooks/use-clock
Add vitest test for use-device-mode hook
Add vitest render test for LoginScreen
test(hooks): add vitest tests for use-focus-trap and getFocusableElements
test: add vitest suite for use-visual-viewport hook
Add vitest test for use-is-pwa hook
test: add vitest test for use-widget-size hook
The in-app Install Update does a git pull, but rebuild_desktop_bundle_if_stale ran 'npm install', which rewrites desktop/package-lock.json. That left the tracked lockfile dirty, so the next ff-only pull aborted with 'local changes would be overwritten by merge' and the update silently failed (reported by a user on an install that predated the #852 restore). npm ci installs exactly from the committed lockfile and never rewrites it, so the tree stays clean for the next pull. Falls back to npm install (then restores the lockfile) only if ci fails on a package.json/lock mismatch.
fix(update): npm ci so rebuild never dirties package-lock.json (broken in-app update)
Qodo reviews are paused for this user.Troubleshooting steps vary by plan Learn more → On a Teams plan? Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center? |
|
👋 Thanks for the PR! This one targets See CONTRIBUTING.md for the branch model. |
|
Important Review skippedToo many files! This PR contains 260 files, which is 110 over the limit of 150. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (260)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Promotes the accumulated dev work to master (435 commits) so users can update to it. Jay-authorized promotion.
Headline: fixes the broken in-app update
npm ciso the rebuild never dirtiesdesktop/package-lock.json(the dirty-lockfile deadlock that blocked Install Update). Combined with fix(update): reset desktop/package-lock.json before the ff-only pull (Install Update 500) #852's restore guard, updates can no longer be blocked by the lockfile.Also included (highlights)
Health
SPA build green; python suite green (on #1197 off dev). The only red on dev is the ~24 drifted desktop vitest tests (#114), which are tests, not runtime, and have no CI job, so they do not affect the running app.
Dependabot security bumps intentionally excluded (separate pass).