Skip to content

Apply Butil improvements (#12393)#12419

Open
msynk wants to merge 9 commits into
bitfoundation:developfrom
msynk:12393-butil-improvements
Open

Apply Butil improvements (#12393)#12419
msynk wants to merge 9 commits into
bitfoundation:developfrom
msynk:12393-butil-improvements

Conversation

@msynk

@msynk msynk commented May 31, 2026

Copy link
Copy Markdown
Member

closes #12393

@coderabbitai

coderabbitai Bot commented May 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 235 files, which is 85 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 44d00dd4-c680-4e28-9afa-8fe8be9a829f

📥 Commits

Reviewing files that changed from the base of the PR and between 29f3696 and 323520e.

📒 Files selected for processing (235)
  • src/Butil/Bit.Butil/BitButil.cs
  • src/Butil/Bit.Butil/Extensions/InternalJSRuntimeExtensions.cs
  • src/Butil/Bit.Butil/Extensions/JSRuntimeExtensions.cs
  • src/Butil/Bit.Butil/Internals/BroadcastChannel/BroadcastChannelListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Events/DomClipboardEventListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Events/DomCompositionEventListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Events/DomDragEventListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Events/DomEventArgs.cs
  • src/Butil/Bit.Butil/Internals/Events/DomEventDispatcher.cs
  • src/Butil/Bit.Butil/Internals/Events/DomEventListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Events/DomFocusEventListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Events/DomInputEventListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Events/DomKeyboardEventListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Events/DomMouseEventListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Events/DomPointerEventListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Events/DomTouchEventListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Events/DomWheelEventListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Fetch/FetchProgressListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Geolocation/GeolocationListenersManager.cs
  • src/Butil/Bit.Butil/Internals/IdleDetector/IdleDetectorListenersManager.cs
  • src/Butil/Bit.Butil/Internals/IntersectionObserver/IntersectionObserverListenersManager.cs
  • src/Butil/Bit.Butil/Internals/MutationObserver/MutationObserverListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Nfc/NdefListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Notification/NotificationListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Performance/PerformanceObserverListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Reporting/ReportingListenersManager.cs
  • src/Butil/Bit.Butil/Internals/ResizeObserver/ResizeObserverListenersManager.cs
  • src/Butil/Bit.Butil/Internals/ServiceWorker/ServiceWorkerListenersManager.cs
  • src/Butil/Bit.Butil/Internals/SpeechRecognition/SpeechRecognitionListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Storage/StorageListenersManager.cs
  • src/Butil/Bit.Butil/Internals/Window/MediaQueryListenersManager.cs
  • src/Butil/Bit.Butil/Publics/Animation/AnimationHandle.cs
  • src/Butil/Bit.Butil/Publics/Animation/AnimationKeyframes.cs
  • src/Butil/Bit.Butil/Publics/Animation/AnimationOptions.cs
  • src/Butil/Bit.Butil/Publics/Animation/ElementReferenceAnimationExtensions.cs
  • src/Butil/Bit.Butil/Publics/BackgroundSync.cs
  • src/Butil/Bit.Butil/Publics/Battery.cs
  • src/Butil/Bit.Butil/Publics/Battery/BatteryStatus.cs
  • src/Butil/Bit.Butil/Publics/BroadcastChannel.cs
  • src/Butil/Bit.Butil/Publics/CacheStorage.cs
  • src/Butil/Bit.Butil/Publics/CacheStorage/CachedResponse.cs
  • src/Butil/Bit.Butil/Publics/ContactPicker.cs
  • src/Butil/Bit.Butil/Publics/Contacts/ContactInfo.cs
  • src/Butil/Bit.Butil/Publics/Cookie.cs
  • src/Butil/Bit.Butil/Publics/Cookie/ButilCookie.cs
  • src/Butil/Bit.Butil/Publics/Cookie/CookieStoreItem.cs
  • src/Butil/Bit.Butil/Publics/CookieStore.cs
  • src/Butil/Bit.Butil/Publics/Crypto.cs
  • src/Butil/Bit.Butil/Publics/Crypto/EcKeyPair.cs
  • src/Butil/Bit.Butil/Publics/Crypto/RsaKeyPair.cs
  • src/Butil/Bit.Butil/Publics/Document.cs
  • src/Butil/Bit.Butil/Publics/Document/VisibilityState.cs
  • src/Butil/Bit.Butil/Publics/Element/ElementReferenceEventExtensions.cs
  • src/Butil/Bit.Butil/Publics/Events/ButilClipboardEventArgs.cs
  • src/Butil/Bit.Butil/Publics/Events/ButilCompositionEventArgs.cs
  • src/Butil/Bit.Butil/Publics/Events/ButilDragEventArgs.cs
  • src/Butil/Bit.Butil/Publics/Events/ButilEvents.cs
  • src/Butil/Bit.Butil/Publics/Events/ButilFocusEventArgs.cs
  • src/Butil/Bit.Butil/Publics/Events/ButilInputEventArgs.cs
  • src/Butil/Bit.Butil/Publics/Events/ButilPointerEventArgs.cs
  • src/Butil/Bit.Butil/Publics/Events/ButilSubscription.cs
  • src/Butil/Bit.Butil/Publics/Events/ButilTouchEventArgs.cs
  • src/Butil/Bit.Butil/Publics/Events/ButilWheelEventArgs.cs
  • src/Butil/Bit.Butil/Publics/EyeDropper.cs
  • src/Butil/Bit.Butil/Publics/Fetch.cs
  • src/Butil/Bit.Butil/Publics/Fetch/AbortableFetch.cs
  • src/Butil/Bit.Butil/Publics/Fetch/FetchProgress.cs
  • src/Butil/Bit.Butil/Publics/Fetch/FetchRequest.cs
  • src/Butil/Bit.Butil/Publics/Fetch/FetchResponse.cs
  • src/Butil/Bit.Butil/Publics/File/BlobInfo.cs
  • src/Butil/Bit.Butil/Publics/FileReader.cs
  • src/Butil/Bit.Butil/Publics/Geolocation.cs
  • src/Butil/Bit.Butil/Publics/Geolocation/GeolocationCoordinates.cs
  • src/Butil/Bit.Butil/Publics/Geolocation/GeolocationError.cs
  • src/Butil/Bit.Butil/Publics/Geolocation/GeolocationOptions.cs
  • src/Butil/Bit.Butil/Publics/Geolocation/GeolocationPosition.cs
  • src/Butil/Bit.Butil/Publics/History.cs
  • src/Butil/Bit.Butil/Publics/IdleDetector.cs
  • src/Butil/Bit.Butil/Publics/IdleDetector/IdleState.cs
  • src/Butil/Bit.Butil/Publics/IndexedDb.cs
  • src/Butil/Bit.Butil/Publics/IndexedDb/IndexedDbHandle.cs
  • src/Butil/Bit.Butil/Publics/IndexedDb/IndexedDbStoreSchema.cs
  • src/Butil/Bit.Butil/Publics/IntersectionObserver/IntersectionObserverEntry.cs
  • src/Butil/Bit.Butil/Publics/IntersectionObserver/IntersectionObserverExtensions.cs
  • src/Butil/Bit.Butil/Publics/IntersectionObserver/IntersectionObserverOptions.cs
  • src/Butil/Bit.Butil/Publics/Keyboard.cs
  • src/Butil/Bit.Butil/Publics/Locks/WebLockMode.cs
  • src/Butil/Bit.Butil/Publics/Locks/WebLockSnapshot.cs
  • src/Butil/Bit.Butil/Publics/MediaDevices.cs
  • src/Butil/Bit.Butil/Publics/MediaDevices/MediaDeviceInfo.cs
  • src/Butil/Bit.Butil/Publics/MediaDevices/MediaStreamHandle.cs
  • src/Butil/Bit.Butil/Publics/MutationObserver/MutationObserverExtensions.cs
  • src/Butil/Bit.Butil/Publics/MutationObserver/MutationObserverOptions.cs
  • src/Butil/Bit.Butil/Publics/MutationObserver/MutationRecord.cs
  • src/Butil/Bit.Butil/Publics/Navigator.cs
  • src/Butil/Bit.Butil/Publics/Navigator/ShareFile.cs
  • src/Butil/Bit.Butil/Publics/NetworkInformation.cs
  • src/Butil/Bit.Butil/Publics/NetworkInformation/NetworkConnectionStatus.cs
  • src/Butil/Bit.Butil/Publics/Nfc.cs
  • src/Butil/Bit.Butil/Publics/Nfc/NdefRecord.cs
  • src/Butil/Bit.Butil/Publics/Notification.cs
  • src/Butil/Bit.Butil/Publics/Notification/NotificationHandle.cs
  • src/Butil/Bit.Butil/Publics/ObjectUrls.cs
  • src/Butil/Bit.Butil/Publics/Performance.cs
  • src/Butil/Bit.Butil/Publics/Performance/PerformanceMemory.cs
  • src/Butil/Bit.Butil/Publics/Permissions.cs
  • src/Butil/Bit.Butil/Publics/Permissions/PermissionState.cs
  • src/Butil/Bit.Butil/Publics/Push.cs
  • src/Butil/Bit.Butil/Publics/Push/PushSubscriptionInfo.cs
  • src/Butil/Bit.Butil/Publics/Reporting.cs
  • src/Butil/Bit.Butil/Publics/Reporting/BrowserReport.cs
  • src/Butil/Bit.Butil/Publics/ResizeObserver/ResizeObserverBox.cs
  • src/Butil/Bit.Butil/Publics/ResizeObserver/ResizeObserverEntry.cs
  • src/Butil/Bit.Butil/Publics/ResizeObserver/ResizeObserverExtensions.cs
  • src/Butil/Bit.Butil/Publics/Screen.cs
  • src/Butil/Bit.Butil/Publics/ScreenOrientation.cs
  • src/Butil/Bit.Butil/Publics/ServiceWorker.cs
  • src/Butil/Bit.Butil/Publics/ServiceWorker/ServiceWorkerRegistrationInfo.cs
  • src/Butil/Bit.Butil/Publics/Speech/SpeechUtterance.cs
  • src/Butil/Bit.Butil/Publics/Speech/SpeechVoice.cs
  • src/Butil/Bit.Butil/Publics/SpeechRecognition.cs
  • src/Butil/Bit.Butil/Publics/SpeechRecognition/SpeechRecognitionOptions.cs
  • src/Butil/Bit.Butil/Publics/SpeechRecognition/SpeechRecognitionResult.cs
  • src/Butil/Bit.Butil/Publics/SpeechSynthesis.cs
  • src/Butil/Bit.Butil/Publics/Storage/ButilStorage.cs
  • src/Butil/Bit.Butil/Publics/Storage/StorageEvent.cs
  • src/Butil/Bit.Butil/Publics/StorageManager.cs
  • src/Butil/Bit.Butil/Publics/StorageManager/StorageEstimate.cs
  • src/Butil/Bit.Butil/Publics/UserAgent.cs
  • src/Butil/Bit.Butil/Publics/UserAgent/HighEntropyUserAgent.cs
  • src/Butil/Bit.Butil/Publics/UserAgent/UserAgentBrand.cs
  • src/Butil/Bit.Butil/Publics/VisualViewport.cs
  • src/Butil/Bit.Butil/Publics/WakeLock.cs
  • src/Butil/Bit.Butil/Publics/WebAudio.cs
  • src/Butil/Bit.Butil/Publics/WebAudio/AudioPlaybackHandle.cs
  • src/Butil/Bit.Butil/Publics/WebLocks.cs
  • src/Butil/Bit.Butil/Publics/Window.cs
  • src/Butil/Bit.Butil/Publics/Window/WindowSelection.cs
  • src/Butil/Bit.Butil/Scripts/animation.ts
  • src/Butil/Bit.Butil/Scripts/backgroundSync.ts
  • src/Butil/Bit.Butil/Scripts/battery.ts
  • src/Butil/Bit.Butil/Scripts/broadcastChannel.ts
  • src/Butil/Bit.Butil/Scripts/cacheStorage.ts
  • src/Butil/Bit.Butil/Scripts/contactPicker.ts
  • src/Butil/Bit.Butil/Scripts/cookieStore.ts
  • src/Butil/Bit.Butil/Scripts/crypto.ts
  • src/Butil/Bit.Butil/Scripts/document.ts
  • src/Butil/Bit.Butil/Scripts/element.ts
  • src/Butil/Bit.Butil/Scripts/events.ts
  • src/Butil/Bit.Butil/Scripts/eyeDropper.ts
  • src/Butil/Bit.Butil/Scripts/fetch.ts
  • src/Butil/Bit.Butil/Scripts/fileReader.ts
  • src/Butil/Bit.Butil/Scripts/geolocation.ts
  • src/Butil/Bit.Butil/Scripts/idleDetector.ts
  • src/Butil/Bit.Butil/Scripts/indexedDb.ts
  • src/Butil/Bit.Butil/Scripts/intersectionObserver.ts
  • src/Butil/Bit.Butil/Scripts/keyboard.ts
  • src/Butil/Bit.Butil/Scripts/mediaDevices.ts
  • src/Butil/Bit.Butil/Scripts/mutationObserver.ts
  • src/Butil/Bit.Butil/Scripts/navigator.ts
  • src/Butil/Bit.Butil/Scripts/networkInformation.ts
  • src/Butil/Bit.Butil/Scripts/nfc.ts
  • src/Butil/Bit.Butil/Scripts/notification.ts
  • src/Butil/Bit.Butil/Scripts/objectUrls.ts
  • src/Butil/Bit.Butil/Scripts/performance.ts
  • src/Butil/Bit.Butil/Scripts/permissions.ts
  • src/Butil/Bit.Butil/Scripts/push.ts
  • src/Butil/Bit.Butil/Scripts/reporting.ts
  • src/Butil/Bit.Butil/Scripts/resizeObserver.ts
  • src/Butil/Bit.Butil/Scripts/serviceWorker.ts
  • src/Butil/Bit.Butil/Scripts/speech.ts
  • src/Butil/Bit.Butil/Scripts/speechRecognition.ts
  • src/Butil/Bit.Butil/Scripts/storage.ts
  • src/Butil/Bit.Butil/Scripts/storageManager.ts
  • src/Butil/Bit.Butil/Scripts/userAgent.ts
  • src/Butil/Bit.Butil/Scripts/utils.ts
  • src/Butil/Bit.Butil/Scripts/wakeLock.ts
  • src/Butil/Bit.Butil/Scripts/webAudio.ts
  • src/Butil/Bit.Butil/Scripts/webLocks.ts
  • src/Butil/Bit.Butil/Scripts/window.ts
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/ClipboardPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/ConsolePage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/CookiePage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/CryptoPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/DevicePage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/DocumentPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/E2EObserversPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/E2EPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/ElementPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/FetchPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/FilesPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/GeolocationPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/HistoryPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/Index.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/KeyboardPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/LocationPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/MediaDevicesPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/NavigatorPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/NotificationPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/ObserversPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/PermissionsPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/ScreenOrientationPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/ScreenPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/SpeechPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/StoragePage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/UserAgentPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/VisualViewportPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/WebAuthnPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Pages/WindowPage.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Routes.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Shared/DemoCard.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Shared/DemoConsole.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Shared/Header.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Shared/Header.razor.css
  • src/Butil/Demo/Bit.Butil.Demo.Core/Shared/MainLayout.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Shared/NavMenu.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/Shared/PageHeader.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/_Imports.razor
  • src/Butil/Demo/Bit.Butil.Demo.Core/wwwroot/app.css
  • src/Butil/Demo/Bit.Butil.Demo.Maui/wwwroot/index.html
  • src/Butil/Demo/Bit.Butil.Demo.Web/wwwroot/index.html
  • src/Butil/tests/Bit.Butil.E2ETests/Bit.Butil.E2ETests.csproj
  • src/Butil/tests/Bit.Butil.E2ETests/BroadcastAndIndexedDbTests.cs
  • src/Butil/tests/Bit.Butil.E2ETests/CookieTests.cs
  • src/Butil/tests/Bit.Butil.E2ETests/CryptoTests.cs
  • src/Butil/tests/Bit.Butil.E2ETests/Infrastructure/ButilHarnessTestBase.cs
  • src/Butil/tests/Bit.Butil.E2ETests/Infrastructure/ButilObserversPageTest.cs
  • src/Butil/tests/Bit.Butil.E2ETests/Infrastructure/ButilPageTest.cs
  • src/Butil/tests/Bit.Butil.E2ETests/Infrastructure/DemoServerFixture.cs
  • src/Butil/tests/Bit.Butil.E2ETests/ObserverTests.cs
  • src/Butil/tests/Bit.Butil.E2ETests/PerformanceAndPlatformTests.cs
  • src/Butil/tests/Bit.Butil.E2ETests/README.md
  • src/Butil/tests/Bit.Butil.E2ETests/StorageTests.cs
  • src/Butil/tests/Bit.Butil.E2ETests/WindowDocumentHistoryTests.cs
  • src/Butil/tests/Bit.Butil.E2ETests/ci/bit.ci.Butil.e2e.yml

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@msynk

msynk commented Jun 1, 2026

Copy link
Copy Markdown
Member Author

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jun 1, 2026

Copy link
Copy Markdown

@msynk Sure, I'll re-review the changes now!

✅ Actions performed

Full review triggered.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR delivers a large set of "Butil improvements" (closes #12393). It expands the Bit.Butil JS-interop surface with many new Web-API wrappers (Battery, BroadcastChannel, ContactPicker, EyeDropper, Fetch, FileReader, Geolocation, IdleDetector, IndexedDb, MediaDevices, Mutation/Resize/Intersection Observers, NetworkInformation, Nfc, ObjectUrls, Performance, Permissions, Push, Reporting, SpeechRecognition/Synthesis, StorageManager, WakeLock, WebAudio, WebLocks, CookieStore, etc.), refactors the demo project (new MainLayout/NavMenu, DemoCard/DemoConsole/PageHeader shared components, redesigned Index/Keyboard/UserAgent pages), and adds a new end-to-end test project plus a CI workflow.

Changes:

  • Adds ~40 new public service classes plus matching listener managers, DTOs, and TypeScript modules implementing the wrappers.
  • Reworks the Butil demo UI shell and several pages, drops the old Header.razor/CSS, and swaps _content/Bit.Butil.Demo.Core/app.css into the host HTML.
  • Adds Bit.Butil.E2ETests Playwright/NUnit suite (and CI workflow) plus tweaks JSRuntimeExtensions / BitButil.cs (service lifetime change to Scoped, simplified runtime-validity check, no longer swallowing JsonException).

Reviewed changes

Copilot reviewed 225 out of 225 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/Butil/Bit.Butil/BitButil.cs Switches all service registrations from Transient to Scoped and registers the many new services.
src/Butil/Bit.Butil/Extensions/{InternalJSRuntimeExtensions,JSRuntimeExtensions}.cs Simplifies runtime-validity detection and stops swallowing JsonException in FastInvoke*.
src/Butil/Bit.Butil/Publics/**/*.cs Adds wrapper classes (Fetch, Push, Permissions, WakeLock, MediaDevices, Nfc, …) and DTOs/handles.
src/Butil/Bit.Butil/Internals/**/*ListenersManager.cs New static managers for the corresponding listener types, with [JSInvokable] callbacks.
src/Butil/Bit.Butil/Scripts/*.ts New TS modules implementing every JS-side counterpart, plus tweaks to existing events.ts, keyboard.ts, navigator.ts, storage.ts, userAgent.ts, utils.ts, document.ts.
src/Butil/Bit.Butil/Publics/{History,Screen,ScreenOrientation,VisualViewport,Keyboard,Notification}.cs Adds Subscribe* variants returning ButilSubscription, plus tracked-notification and element-scoped keyboard.
src/Butil/Bit.Butil/Publics/Cookie.cs Hardens parsing of empty / malformed cookie strings.
src/Butil/Demo/Bit.Butil.Demo.Core/Shared/* Replaces Header.razor with new MainLayout/NavMenu and adds DemoCard/DemoConsole/PageHeader.
src/Butil/Demo/Bit.Butil.Demo.Core/Pages/{Index,Keyboard,UserAgent}.razor Redesigns landing and a couple of demo pages around the new shared components.
src/Butil/Demo/Bit.Butil.Demo.{Web,Maui}/wwwroot/index.html Pulls in the new shared app.css.
src/Butil/tests/Bit.Butil.E2ETests/** New Playwright/NUnit test project, infrastructure, page-scoped bases, README, CI workflow.

Comment thread src/Butil/Bit.Butil/Publics/MutationObserver/MutationRecord.cs Outdated
Comment thread src/Butil/Demo/Bit.Butil.Demo.Core/Pages/UserAgentPage.razor
Comment thread src/Butil/Bit.Butil/BitButil.cs
Comment thread src/Butil/Bit.Butil/Publics/Fetch.cs
Comment thread src/Butil/Bit.Butil/Publics/Navigator/ShareFile.cs
@msynk msynk requested a review from Copilot June 2, 2026 19:40
@msynk

msynk commented Jun 2, 2026

Copy link
Copy Markdown
Member Author

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jun 2, 2026

Copy link
Copy Markdown

@msynk Sure, I'll re-review the changes now!

✅ Actions performed

Full review triggered.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 225 out of 225 changed files in this pull request and generated 7 comments.

Comment thread src/Butil/Bit.Butil/Scripts/fileReader.ts
Comment thread src/Butil/Bit.Butil/Scripts/battery.ts
Comment thread src/Butil/Bit.Butil/Publics/Battery/BatteryStatus.cs Outdated
Comment thread src/Butil/Bit.Butil/Publics/ObjectUrls.cs
Comment thread src/Butil/Bit.Butil/Publics/Fetch.cs
Comment thread src/Butil/Demo/Bit.Butil.Demo.Core/Shared/MainLayout.razor Outdated
Comment thread src/Butil/Demo/Bit.Butil.Demo.Core/Shared/PageHeader.razor Outdated
@msynk

msynk commented Jun 4, 2026

Copy link
Copy Markdown
Member Author

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown

@msynk Sure, I'll re-review the changes now!

✅ Action performed

Full review finished.

@msynk msynk requested a review from Copilot June 4, 2026 10:21
@msynk

msynk commented Jun 4, 2026

Copy link
Copy Markdown
Member Author

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown

@msynk Sure, I'll re-review the changes now!

✅ Action performed

Full review finished.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 226 out of 226 changed files in this pull request and generated 3 comments.

Comment thread src/Butil/Demo/Bit.Butil.Demo.Core/Pages/UserAgentPage.razor Outdated
Comment thread src/Butil/Bit.Butil/Publics/Permissions.cs Outdated
Comment thread src/Butil/Bit.Butil/Publics/MediaDevices/MediaDeviceInfo.cs

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 226 out of 226 changed files in this pull request and generated 4 comments.

Comment thread src/Butil/Demo/Bit.Butil.Demo.Core/Pages/KeyboardPage.razor
Comment thread src/Butil/tests/Bit.Butil.E2ETests/CryptoTests.cs Outdated
Comment thread src/Butil/Bit.Butil/Scripts/geolocation.ts
Comment thread src/Butil/Bit.Butil/Scripts/geolocation.ts
@msynk

msynk commented Jun 6, 2026

Copy link
Copy Markdown
Member Author

@coderabbitai re-review

@coderabbitai

coderabbitai Bot commented Jun 6, 2026

Copy link
Copy Markdown

@msynk Sure, I'll re-review the changes now!

✅ Action performed

Full review finished.

@msynk

msynk commented Jun 8, 2026

Copy link
Copy Markdown
Member Author

@coderabbitai re-review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bit Butil improvements

2 participants