Skip to content

Performance optimizations, a11y gaps, NETOWRK_PLUGIN typo, and architecture improvements#3406

Closed
Copilot wants to merge 3 commits intomainfrom
copilot/optimize-performance-and-fix-typo
Closed

Performance optimizations, a11y gaps, NETOWRK_PLUGIN typo, and architecture improvements#3406
Copilot wants to merge 3 commits intomainfrom
copilot/optimize-performance-and-fix-typo

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 10, 2026

Nine medium-priority findings addressed: Zone.js over-patching, a misspelled injection token, eager preloading of all routes, inconsistent platform detection, overly broad CUSTOM_ELEMENTS_SCHEMA, duplicate API-triggering observables, missing ARIA on camera UI, constructor-based subscriptions, and unguarded subscriptions in settings.

Changes

Performance

  • Zone.js: Add __zone_symbol__UNPATCHED_EVENTS to zone-flags.ts — scroll, mousemove, touchmove, pointermove, mouseenter, mouseleave, resize no longer trigger change detection
  • Preloading: Replace PreloadAllModules with SelectivePreloadingStrategy; only routes marked data: { preload: true } (login, home) are eagerly fetched
  • Duplicate API calls: Add hasNewInbox$ to DiaBackendTransactionRepository with shareReplay({ bufferSize: 1, refCount: true }); both HomePage and CaptureTabComponent subscribe to the shared stream instead of each independently driving inbox$

Bug / Naming

  • Typo: NETOWRK_PLUGINNETWORK_PLUGIN across capacitor-plugins.module.ts, capacitor-plugins-testing.module.ts, network.service.ts

Architecture

  • Platform detection: Replace Capacitor.getPlatform() == 'android' / !== 'android' with Platform.is('android') from @ionic/angular in media.component.ts and dia-backend-notification.service.ts
  • CUSTOM_ELEMENTS_SCHEMA: Remove from SharedModule — it was silencing ALL unknown-element errors app-wide; leaf modules that actually use Swiper web components (details, go-pro, tutorial) already carry the schema
  • Constructor subscriptions: Move active subscriptions in HomePage and CaptureTabComponent constructors into ngOnInit() to avoid premature side-effects and improve testability
  • Unguarded subscriptions: Add untilDestroyed(this) to emailVerification() and copyPrivateKeyToClipboard() in SettingsPage — both were escaping @UntilDestroy({ checkProperties: true }) because they are not assigned to class properties

Accessibility

  • Add role="button", tabindex="0", aria-label, aria-pressed, and keyboard handlers (keydown.enter, keydown.space with $event.preventDefault()) to all interactive <div> and <mat-icon> elements in custom-camera.page.html
// Before — each component independently subscribed to inbox$, causing 2 API call chains
readonly hasNewInbox$ = this.diaBackendTransactionRepository.inbox$.pipe(
  map(transactions => transactions.count !== 0),
  startWith(false)
);

// After — single shared stream in the repository
// DiaBackendTransactionRepository
readonly hasNewInbox$ = this.inbox$.pipe(
  map(transactions => transactions.count !== 0),
  startWith(false),
  shareReplay({ bufferSize: 1, refCount: true })
);

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • accounts.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5184 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-30345659 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1470320601599956341,1153340520904374809,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,12240734580782173993,8614725389549690955,4 --trace-process-track-uuid=3190708989122997041 node (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-30345659 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --js-flags=--max-old-space-size=4096 http://localhost:9876/?id=30345659 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 dist/docs.json rimraf (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5542 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-6899936 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,5921120005344028989,14542355678715405330,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,17271757156247967586,10134142084102220328,4 --trace-process-track-uuid=3190708989122997041 sh (dns block)
  • android.clients.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5184 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-30345659 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1470320601599956341,1153340520904374809,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,12240734580782173993,8614725389549690955,4 --trace-process-track-uuid=3190708989122997041 node (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-30345659 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --js-flags=--max-old-space-size=4096 http://localhost:9876/?id=30345659 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 dist/docs.json rimraf (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5542 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-6899936 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,5921120005344028989,14542355678715405330,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,17271757156247967586,10134142084102220328,4 --trace-process-track-uuid=3190708989122997041 sh (dns block)
  • clients2.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5184 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-30345659 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1470320601599956341,1153340520904374809,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,12240734580782173993,8614725389549690955,4 --trace-process-track-uuid=3190708989122997041 node (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-30345659 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --js-flags=--max-old-space-size=4096 http://localhost:9876/?id=30345659 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 dist/docs.json rimraf (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5542 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-6899936 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,5921120005344028989,14542355678715405330,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,17271757156247967586,10134142084102220328,4 --trace-process-track-uuid=3190708989122997041 sh (dns block)
  • clientservices.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5184 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-30345659 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1470320601599956341,1153340520904374809,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,12240734580782173993,8614725389549690955,4 --trace-process-track-uuid=3190708989122997041 node (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-30345659 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --js-flags=--max-old-space-size=4096 http://localhost:9876/?id=30345659 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 dist/docs.json rimraf (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5542 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-6899936 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,5921120005344028989,14542355678715405330,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,17271757156247967586,10134142084102220328,4 --trace-process-track-uuid=3190708989122997041 sh (dns block)
  • download.cypress.io
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node node index.js --exec install conf�� ut-json dist/docs.json --local ode committer.email (dns block)
  • redirector.gvt1.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5184 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-30345659 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1470320601599956341,1153340520904374809,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,12240734580782173993,8614725389549690955,4 --trace-process-track-uuid=3190708989122997041 node (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-30345659 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --js-flags=--max-old-space-size=4096 http://localhost:9876/?id=30345659 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 dist/docs.json rimraf (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5542 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-6899936 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,5921120005344028989,14542355678715405330,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,17271757156247967586,10134142084102220328,4 --trace-process-track-uuid=3190708989122997041 sh (dns block)
  • safebrowsingohttpgateway.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5184 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-30345659 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1470320601599956341,1153340520904374809,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,12240734580782173993,8614725389549690955,4 --trace-process-track-uuid=3190708989122997041 node (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-30345659 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --js-flags=--max-old-space-size=4096 http://localhost:9876/?id=30345659 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 dist/docs.json rimraf (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5542 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-6899936 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,5921120005344028989,14542355678715405330,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,17271757156247967586,10134142084102220328,4 --trace-process-track-uuid=3190708989122997041 sh (dns block)
  • www.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5184 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-30345659 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,1470320601599956341,1153340520904374809,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,12240734580782173993,8614725389549690955,4 --trace-process-track-uuid=3190708989122997041 node (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-30345659 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications --no-sandbox --js-flags=--max-old-space-size=4096 http://localhost:9876/?id=30345659 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222 dist/docs.json rimraf (dns block)
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=5542 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-6899936 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,5921120005344028989,14542355678715405330,262144 --disable-features=PaintHolding --variations-seed-version --pseudonymization-salt-handle=7,i,17271757156247967586,10134142084102220328,4 --trace-process-track-uuid=3190708989122997041 sh (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI added 2 commits April 10, 2026 10:36
- Zone.js: Add UNPATCHED_EVENTS for high-frequency events
- Fix NETOWRK_PLUGIN typo → NETWORK_PLUGIN across 3 files
- Replace PreloadAllModules with SelectivePreloadingStrategy
- Use Platform.is() instead of Capacitor.getPlatform() in 2 files
- Remove CUSTOM_ELEMENTS_SCHEMA from SharedModule
- Add hasNewInbox$ with shareReplay to DiaBackendTransactionRepository
- Add ARIA attributes to custom-camera UI for accessibility
- Move constructor subscriptions to ngOnInit in home.page.ts and capture-tab
- Add untilDestroyed(this) to unguarded subscriptions in settings.page.ts"

Agent-Logs-Url: https://github.com/numbersprotocol/capture-cam/sessions/e9446569-e2d6-4116-bd15-e54de2ea9038
Copilot AI changed the title [WIP] Fix performance optimizations and naming typo Performance optimizations, a11y gaps, NETOWRK_PLUGIN typo, and architecture improvements Apr 10, 2026
Copilot AI requested a review from numbers-official April 10, 2026 10:41
@numbers-official
Copy link
Copy Markdown
Collaborator

Closing this stale Copilot draft PR. It is outdated against main, not merge-ready, and bundles broad automated changes without current full CI coverage. We should re-open focused PRs only for findings that are still valid after current main/Angular 21.

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.

[Feature][Medium] Performance optimizations, a11y gaps, naming typo, and architecture improvements

2 participants