ms365-toolkit 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. ms365_toolkit-0.1.0/.claude/CLAUDE.md +65 -0
  2. ms365_toolkit-0.1.0/.github/workflows/ci.yml +29 -0
  3. ms365_toolkit-0.1.0/.github/workflows/release.yml +29 -0
  4. ms365_toolkit-0.1.0/.gitignore +22 -0
  5. ms365_toolkit-0.1.0/.playwright-mcp/console-2026-04-03T13-27-27-126Z.log +30 -0
  6. ms365_toolkit-0.1.0/.playwright-mcp/console-2026-04-03T13-31-05-990Z.log +9 -0
  7. ms365_toolkit-0.1.0/.playwright-mcp/console-2026-04-03T13-47-52-875Z.log +10 -0
  8. ms365_toolkit-0.1.0/.playwright-mcp/console-2026-04-03T13-48-26-590Z.log +144 -0
  9. ms365_toolkit-0.1.0/.playwright-mcp/console-2026-04-03T13-54-00-267Z.log +36 -0
  10. ms365_toolkit-0.1.0/.playwright-mcp/console-2026-04-03T13-55-44-034Z.log +36 -0
  11. ms365_toolkit-0.1.0/.playwright-mcp/page-2026-04-03T13-27-28-763Z.yml +222 -0
  12. ms365_toolkit-0.1.0/.playwright-mcp/page-2026-04-03T13-31-07-280Z.yml +306 -0
  13. ms365_toolkit-0.1.0/.playwright-mcp/page-2026-04-03T13-47-53-612Z.yml +547 -0
  14. ms365_toolkit-0.1.0/.playwright-mcp/page-2026-04-03T13-48-27-097Z.yml +306 -0
  15. ms365_toolkit-0.1.0/.playwright-mcp/page-2026-04-03T13-54-00-332Z.yml +326 -0
  16. ms365_toolkit-0.1.0/.playwright-mcp/page-2026-04-03T13-55-44-553Z.yml +243 -0
  17. ms365_toolkit-0.1.0/BUILD_PLAN.md +696 -0
  18. ms365_toolkit-0.1.0/Makefile +44 -0
  19. ms365_toolkit-0.1.0/PKG-INFO +18 -0
  20. ms365_toolkit-0.1.0/README.md +259 -0
  21. ms365_toolkit-0.1.0/config.example.toml +41 -0
  22. ms365_toolkit-0.1.0/forms.json +196 -0
  23. ms365_toolkit-0.1.0/packages/ms365-toolkit-mcp/pyproject.toml +18 -0
  24. ms365_toolkit-0.1.0/packages/ms365-toolkit-mcp/src/ms365_toolkit_mcp_wrapper/__init__.py +7 -0
  25. ms365_toolkit-0.1.0/pypi-account.md +124 -0
  26. ms365_toolkit-0.1.0/pypi-github-form.html +1 -0
  27. ms365_toolkit-0.1.0/pypi-login-snapshot.md +91 -0
  28. ms365_toolkit-0.1.0/pypi-publishing-after-second.txt +1 -0
  29. ms365_toolkit-0.1.0/pypi-publishing-deep.md +254 -0
  30. ms365_toolkit-0.1.0/pypi-publishing-result.json +4 -0
  31. ms365_toolkit-0.1.0/pypi-publishing.md +139 -0
  32. ms365_toolkit-0.1.0/pypi-token.md +167 -0
  33. ms365_toolkit-0.1.0/pypi-unverified.md +134 -0
  34. ms365_toolkit-0.1.0/pyproject.toml +62 -0
  35. ms365_toolkit-0.1.0/scripts/check_release_version.py +38 -0
  36. ms365_toolkit-0.1.0/scripts/setup_mcp.sh +162 -0
  37. ms365_toolkit-0.1.0/src/ms365_toolkit/__init__.py +1 -0
  38. ms365_toolkit-0.1.0/src/ms365_toolkit/adapter/__init__.py +0 -0
  39. ms365_toolkit-0.1.0/src/ms365_toolkit/auth/__init__.py +11 -0
  40. ms365_toolkit-0.1.0/src/ms365_toolkit/auth/credentials.py +123 -0
  41. ms365_toolkit-0.1.0/src/ms365_toolkit/auth/device_code.py +60 -0
  42. ms365_toolkit-0.1.0/src/ms365_toolkit/auth/tokens.py +116 -0
  43. ms365_toolkit-0.1.0/src/ms365_toolkit/cli/__init__.py +162 -0
  44. ms365_toolkit-0.1.0/src/ms365_toolkit/cli/auth.py +100 -0
  45. ms365_toolkit-0.1.0/src/ms365_toolkit/cli/inbox.py +25 -0
  46. ms365_toolkit-0.1.0/src/ms365_toolkit/cli/labeling.py +184 -0
  47. ms365_toolkit-0.1.0/src/ms365_toolkit/cli/labeling_web.py +515 -0
  48. ms365_toolkit-0.1.0/src/ms365_toolkit/cli/read_common.py +31 -0
  49. ms365_toolkit-0.1.0/src/ms365_toolkit/cli/read_tools.py +446 -0
  50. ms365_toolkit-0.1.0/src/ms365_toolkit/client/__init__.py +30 -0
  51. ms365_toolkit-0.1.0/src/ms365_toolkit/client/calendar.py +146 -0
  52. ms365_toolkit-0.1.0/src/ms365_toolkit/client/email.py +247 -0
  53. ms365_toolkit-0.1.0/src/ms365_toolkit/client/exceptions.py +48 -0
  54. ms365_toolkit-0.1.0/src/ms365_toolkit/client/graph.py +244 -0
  55. ms365_toolkit-0.1.0/src/ms365_toolkit/client/mail_index.py +196 -0
  56. ms365_toolkit-0.1.0/src/ms365_toolkit/client/sanitize.py +16 -0
  57. ms365_toolkit-0.1.0/src/ms365_toolkit/config/__init__.py +35 -0
  58. ms365_toolkit-0.1.0/src/ms365_toolkit/config/loader.py +257 -0
  59. ms365_toolkit-0.1.0/src/ms365_toolkit/intelligence/__init__.py +32 -0
  60. ms365_toolkit-0.1.0/src/ms365_toolkit/intelligence/calendar_scoring.py +59 -0
  61. ms365_toolkit-0.1.0/src/ms365_toolkit/intelligence/day_overview.py +58 -0
  62. ms365_toolkit-0.1.0/src/ms365_toolkit/intelligence/email_triage.py +90 -0
  63. ms365_toolkit-0.1.0/src/ms365_toolkit/intelligence/labels.py +94 -0
  64. ms365_toolkit-0.1.0/src/ms365_toolkit/intelligence/morning_brief.py +66 -0
  65. ms365_toolkit-0.1.0/src/ms365_toolkit/intelligence/thread_classifier.py +139 -0
  66. ms365_toolkit-0.1.0/src/ms365_toolkit/intelligence/vip.py +15 -0
  67. ms365_toolkit-0.1.0/src/ms365_toolkit/mcp/__init__.py +9 -0
  68. ms365_toolkit-0.1.0/src/ms365_toolkit/mcp/__main__.py +25 -0
  69. ms365_toolkit-0.1.0/src/ms365_toolkit/mcp/planner.py +88 -0
  70. ms365_toolkit-0.1.0/src/ms365_toolkit/mcp/runtime.py +37 -0
  71. ms365_toolkit-0.1.0/src/ms365_toolkit/mcp/serializers.py +88 -0
  72. ms365_toolkit-0.1.0/src/ms365_toolkit/mcp/server.py +21 -0
  73. ms365_toolkit-0.1.0/src/ms365_toolkit/mcp/tools.py +216 -0
  74. ms365_toolkit-0.1.0/src/ms365_toolkit/models/__init__.py +25 -0
  75. ms365_toolkit-0.1.0/src/ms365_toolkit/models/calendar.py +42 -0
  76. ms365_toolkit-0.1.0/src/ms365_toolkit/models/email.py +51 -0
  77. ms365_toolkit-0.1.0/src/ms365_toolkit/models/enums.py +49 -0
  78. ms365_toolkit-0.1.0/src/ms365_toolkit/safety/__init__.py +29 -0
  79. ms365_toolkit-0.1.0/src/ms365_toolkit/safety/allowlist.py +51 -0
  80. ms365_toolkit-0.1.0/src/ms365_toolkit/safety/audit.py +87 -0
  81. ms365_toolkit-0.1.0/src/ms365_toolkit/safety/canonical.py +73 -0
  82. ms365_toolkit-0.1.0/src/ms365_toolkit/safety/dialog.py +94 -0
  83. ms365_toolkit-0.1.0/src/ms365_toolkit/safety/domains.py +33 -0
  84. ms365_toolkit-0.1.0/src/ms365_toolkit/safety/folder_allowlist.py +68 -0
  85. ms365_toolkit-0.1.0/src/ms365_toolkit/safety/gate.py +232 -0
  86. ms365_toolkit-0.1.0/src/ms365_toolkit/safety/rate_limiter.py +177 -0
  87. ms365_toolkit-0.1.0/tests/__init__.py +0 -0
  88. ms365_toolkit-0.1.0/tests/safety/__init__.py +0 -0
  89. ms365_toolkit-0.1.0/tests/unit/__init__.py +0 -0
  90. ms365_toolkit-0.1.0/tests/unit/test_auth_credentials.py +207 -0
  91. ms365_toolkit-0.1.0/tests/unit/test_auth_device_code.py +124 -0
  92. ms365_toolkit-0.1.0/tests/unit/test_auth_tokens.py +189 -0
  93. ms365_toolkit-0.1.0/tests/unit/test_cli_auth.py +143 -0
  94. ms365_toolkit-0.1.0/tests/unit/test_cli_inbox.py +98 -0
  95. ms365_toolkit-0.1.0/tests/unit/test_cli_labeling.py +211 -0
  96. ms365_toolkit-0.1.0/tests/unit/test_cli_labeling_web.py +83 -0
  97. ms365_toolkit-0.1.0/tests/unit/test_cli_read_tools.py +553 -0
  98. ms365_toolkit-0.1.0/tests/unit/test_client_calendar.py +214 -0
  99. ms365_toolkit-0.1.0/tests/unit/test_client_email.py +337 -0
  100. ms365_toolkit-0.1.0/tests/unit/test_client_exceptions.py +48 -0
  101. ms365_toolkit-0.1.0/tests/unit/test_client_graph.py +231 -0
  102. ms365_toolkit-0.1.0/tests/unit/test_client_mail_index.py +121 -0
  103. ms365_toolkit-0.1.0/tests/unit/test_client_sanitize.py +19 -0
  104. ms365_toolkit-0.1.0/tests/unit/test_config_loader.py +153 -0
  105. ms365_toolkit-0.1.0/tests/unit/test_intelligence_calendar_scoring.py +117 -0
  106. ms365_toolkit-0.1.0/tests/unit/test_intelligence_day_overview.py +92 -0
  107. ms365_toolkit-0.1.0/tests/unit/test_intelligence_email_triage.py +152 -0
  108. ms365_toolkit-0.1.0/tests/unit/test_intelligence_labels.py +75 -0
  109. ms365_toolkit-0.1.0/tests/unit/test_intelligence_morning_brief.py +119 -0
  110. ms365_toolkit-0.1.0/tests/unit/test_intelligence_vip.py +61 -0
  111. ms365_toolkit-0.1.0/tests/unit/test_mcp_server.py +312 -0
  112. ms365_toolkit-0.1.0/tests/unit/test_models_calendar.py +49 -0
  113. ms365_toolkit-0.1.0/tests/unit/test_models_email.py +59 -0
  114. ms365_toolkit-0.1.0/tests/unit/test_models_enums.py +26 -0
  115. ms365_toolkit-0.1.0/tests/unit/test_packaging_metadata.py +35 -0
  116. ms365_toolkit-0.1.0/tests/unit/test_safety_allowlist.py +32 -0
  117. ms365_toolkit-0.1.0/tests/unit/test_safety_audit.py +55 -0
  118. ms365_toolkit-0.1.0/tests/unit/test_safety_canonical.py +85 -0
  119. ms365_toolkit-0.1.0/tests/unit/test_safety_dialog.py +49 -0
  120. ms365_toolkit-0.1.0/tests/unit/test_safety_folder_allowlist.py +49 -0
  121. ms365_toolkit-0.1.0/tests/unit/test_safety_gate.py +153 -0
  122. ms365_toolkit-0.1.0/tests/unit/test_safety_gate_protocol.py +44 -0
  123. ms365_toolkit-0.1.0/tests/unit/test_safety_rate_limiter.py +76 -0
  124. ms365_toolkit-0.1.0/uv.lock +1893 -0
@@ -0,0 +1,65 @@
1
+ # ms365-toolkit — Project Instructions
2
+
3
+ ## What This Is
4
+ Multi-consumer MS365 email + calendar toolkit with a non-negotiable safety layer. Intended for local CLI use, MCP server use, and read-only adapter integration.
5
+
6
+ ## Architecture
7
+ ```
8
+ src/ms365_toolkit/
9
+ ├── models/ # Frozen dataclasses: EmailMessage, EmailDraft, CalendarEvent, FreeBusySlot, enums
10
+ ├── auth/ # MSAL device-code flow, Keychain 2-token split, refresh, scope constants
11
+ ├── client/ # GraphClient (urllib), EmailClient, CalendarClient, endpoint flexibility (/me/ vs /users/{upn}/)
12
+ ├── intelligence/ # Email triage, calendar scoring, VIP, morning_brief(), day_overview()
13
+ ├── safety/ # SafetyGate: OS dialog, SHA-256 draft binding, allowlists, rate limiter, audit
14
+ ├── config/ # TOML loading, multi-profile (~/.ms365-toolkit/profiles/{name}/), validation
15
+ ├── mcp/ # FastMCP server, 20 tools via @mcp.tool(), stdio transport
16
+ ├── cli/ # Auth login/revoke, config init, profile mgmt, serve
17
+ └── adapter/ # Optional provider integration layer (read-only)
18
+ ```
19
+
20
+ ## TDD Workflow
21
+ ```
22
+ 1. RED: Write the test first
23
+ 2. GREEN: Write minimum code to pass
24
+ 3. REFACTOR: Clean up, add types, add structlog logging
25
+ 4. VERIFY: make tdd → make lint
26
+ ```
27
+
28
+ ## Make Commands
29
+ ```bash
30
+ make tdd # Fast TDD loop: ruff fix + unit tests (--maxfail=1)
31
+ make test # Unit tests only
32
+ make test-safety # Adversarial safety tests only
33
+ make test-all # All tests with coverage (fail under 80%)
34
+ make lint # ruff check + mypy --strict
35
+ make format # ruff format + fix
36
+ make ci # Full pipeline: lint + all tests
37
+ make serve # Run MCP server (stdio)
38
+ ```
39
+
40
+ ## Key Conventions
41
+ - **Package**: `ms365_toolkit` (under `src/ms365_toolkit/`)
42
+ - **Python**: 3.11+ (tomllib and zoneinfo are stdlib)
43
+ - **Logging**: structlog throughout. Write-ops get JSONL audit (0600 perms).
44
+ - **Types**: mypy --strict. All functions have type annotations.
45
+ - **Safety**: ALL write operations go through SafetyGate. No exceptions.
46
+ - **Tests**: pytest markers: `@pytest.mark.unit`, `@pytest.mark.safety`
47
+
48
+ ## Safety Layer (Non-Negotiable)
49
+ Every write operation goes through this chain:
50
+ ```
51
+ Tool call → config reload (atomic, mtime) → domain/folder allowlist
52
+ → rate limiter (SQLite WAL) → draft SHA-256 hash → OS dialog (osascript)
53
+ → re-verify hash → Graph API call → audit log (JSONL, 0600)
54
+ ```
55
+
56
+ Key rules:
57
+ 1. SafetyGate is a constructor dependency for all Write* clients — no bypass possible
58
+ 2. OS dialog uses osascript — macOS only for v1, fail-closed on non-macOS
59
+ 3. Hash computed from LOCAL canonical payload, never from Graph's stored draft
60
+ 4. Write tokens are keychain-only by default (no env without --insecure-env-write)
61
+ 5. All denials are audited with reason codes (no bodies/subjects, hashed domains)
62
+ 6. Config uses atomic replace (temp+fsync+rename), pinned at gate entry
63
+
64
+ ## Git Identity
65
+ identity: personal
@@ -0,0 +1,29 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: actions/setup-python@v5
15
+ with:
16
+ python-version: "3.11"
17
+ - uses: astral-sh/setup-uv@v5
18
+ - name: Install dev and MCP dependencies
19
+ run: uv sync --extra dev --extra mcp
20
+ - name: Check packaging versions
21
+ run: uv run python scripts/check_release_version.py
22
+ - name: Ruff
23
+ run: uv run ruff check src tests
24
+ - name: Pytest
25
+ run: uv run pytest tests/unit -q
26
+ - name: Build root wheel
27
+ run: uv build --wheel
28
+ - name: Build wrapper wheel
29
+ run: uv build --wheel --directory packages/ms365-toolkit-mcp
@@ -0,0 +1,29 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ publish:
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ id-token: write
13
+ contents: read
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - uses: actions/setup-python@v5
17
+ with:
18
+ python-version: "3.11"
19
+ - uses: astral-sh/setup-uv@v5
20
+ - name: Check release version
21
+ run: uv run python scripts/check_release_version.py
22
+ - name: Build root package
23
+ run: uv build
24
+ - name: Publish root package
25
+ run: uv publish --trusted-publishing always dist/*
26
+ - name: Build wrapper package
27
+ run: uv build --directory packages/ms365-toolkit-mcp
28
+ - name: Publish wrapper package
29
+ run: uv publish --trusted-publishing always packages/ms365-toolkit-mcp/dist/*
@@ -0,0 +1,22 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ dist/
5
+ build/
6
+ .mypy_cache/
7
+ .pytest_cache/
8
+ .ruff_cache/
9
+ .coverage
10
+ htmlcov/
11
+ *.egg
12
+ .env
13
+ .venv/
14
+ venv/
15
+ .DS_Store
16
+
17
+ # Local MS365 profile state
18
+ .ms365-toolkit/
19
+ *.db
20
+ *.sqlite
21
+ *.sqlite3
22
+ thread_labels.jsonl
@@ -0,0 +1,30 @@
1
+ [ 175ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
2
+ [ 175ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
3
+ [ 175ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
4
+ [ 175ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
5
+ [ 175ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
6
+ [ 175ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
7
+ [ 1613ms] Error: No ad placements found.
8
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
9
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
10
+ [ 15868ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
11
+ [ 15868ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
12
+ [ 15868ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
13
+ [ 15868ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
14
+ [ 15868ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
15
+ [ 15868ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
16
+ [ 15908ms] Error: No ad placements found.
17
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
18
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
19
+ [ 89267ms] TypeError: document.createElement(...).textContent is not a function
20
+ at u (https://pypi.org/static/js/warehouse.b72f9687.js:1:96492)
21
+ at HTMLInputElement.h (https://pypi.org/static/js/warehouse.b72f9687.js:1:97089)
22
+ [ 101747ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
23
+ [ 101748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
24
+ [ 101748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
25
+ [ 101748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
26
+ [ 101748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
27
+ [ 101748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
28
+ [ 101781ms] Error: No ad placements found.
29
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
30
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
@@ -0,0 +1,9 @@
1
+ [ 1210ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
2
+ [ 1210ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
3
+ [ 1210ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
4
+ [ 1210ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
5
+ [ 1210ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
6
+ [ 1210ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
7
+ [ 1246ms] Error: No ad placements found.
8
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
9
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
@@ -0,0 +1,10 @@
1
+ [ 210ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
2
+ [ 210ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
3
+ [ 210ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
4
+ [ 210ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
5
+ [ 210ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
6
+ [ 210ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
7
+ [ 250ms] [VERBOSE] [DOM] Password forms should have (optionally hidden) username fields for accessibility: (More info: https://goo.gl/9p2vKq) %o @ https://pypi.org/manage/account/:0
8
+ [ 537ms] Error: No ad placements found.
9
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
10
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
@@ -0,0 +1,144 @@
1
+ [ 460ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
2
+ [ 460ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
3
+ [ 460ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
4
+ [ 460ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
5
+ [ 460ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
6
+ [ 460ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
7
+ [ 487ms] Error: No ad placements found.
8
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
9
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
10
+ [ 53884ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
11
+ [ 53884ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
12
+ [ 53884ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
13
+ [ 53884ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
14
+ [ 53884ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
15
+ [ 53884ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
16
+ [ 53913ms] Error: No ad placements found.
17
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
18
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
19
+ [ 73177ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
20
+ [ 73177ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
21
+ [ 73177ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
22
+ [ 73177ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
23
+ [ 73177ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
24
+ [ 73177ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
25
+ [ 73205ms] Error: No ad placements found.
26
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
27
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
28
+ [ 114532ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
29
+ [ 114532ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
30
+ [ 114532ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
31
+ [ 114532ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
32
+ [ 114532ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
33
+ [ 114532ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
34
+ [ 114560ms] Error: No ad placements found.
35
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
36
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
37
+ [ 115487ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
38
+ [ 115487ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
39
+ [ 115487ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
40
+ [ 115487ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
41
+ [ 115487ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
42
+ [ 115487ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
43
+ [ 115518ms] Error: No ad placements found.
44
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
45
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
46
+ [ 152291ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
47
+ [ 152291ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
48
+ [ 152291ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
49
+ [ 152291ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
50
+ [ 152291ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
51
+ [ 152291ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
52
+ [ 152323ms] Error: No ad placements found.
53
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
54
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
55
+ [ 153110ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
56
+ [ 153110ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
57
+ [ 153110ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
58
+ [ 153110ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
59
+ [ 153110ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
60
+ [ 153110ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
61
+ [ 153138ms] Error: No ad placements found.
62
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
63
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
64
+ [ 212764ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
65
+ [ 212764ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
66
+ [ 212764ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
67
+ [ 212764ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
68
+ [ 212764ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
69
+ [ 212764ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
70
+ [ 212789ms] Error: No ad placements found.
71
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
72
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
73
+ [ 213962ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
74
+ [ 213962ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
75
+ [ 213962ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
76
+ [ 213962ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
77
+ [ 213962ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
78
+ [ 213962ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
79
+ [ 213984ms] Error: No ad placements found.
80
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
81
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
82
+ [ 249371ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
83
+ [ 249371ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
84
+ [ 249371ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
85
+ [ 249371ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
86
+ [ 249371ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
87
+ [ 249371ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
88
+ [ 249397ms] Error: No ad placements found.
89
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
90
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
91
+ [ 267748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
92
+ [ 267748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
93
+ [ 267748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
94
+ [ 267748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
95
+ [ 267748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
96
+ [ 267748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
97
+ [ 267774ms] Error: No ad placements found.
98
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
99
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
100
+ [ 268616ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
101
+ [ 268616ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
102
+ [ 268616ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
103
+ [ 268616ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
104
+ [ 268616ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
105
+ [ 268616ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
106
+ [ 268642ms] Error: No ad placements found.
107
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
108
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
109
+ [ 285103ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
110
+ [ 285103ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
111
+ [ 285103ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
112
+ [ 285103ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
113
+ [ 285103ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
114
+ [ 285103ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
115
+ [ 285127ms] Error: No ad placements found.
116
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
117
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
118
+ [ 295542ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
119
+ [ 295542ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
120
+ [ 295542ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
121
+ [ 295542ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
122
+ [ 295542ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
123
+ [ 295542ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
124
+ [ 295568ms] Error: No ad placements found.
125
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
126
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
127
+ [ 304596ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
128
+ [ 304596ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
129
+ [ 304596ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
130
+ [ 304596ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
131
+ [ 304596ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
132
+ [ 304596ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
133
+ [ 304621ms] Error: No ad placements found.
134
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
135
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
136
+ [ 314748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
137
+ [ 314748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
138
+ [ 314748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
139
+ [ 314748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
140
+ [ 314748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
141
+ [ 314748ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
142
+ [ 314778ms] Error: No ad placements found.
143
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
144
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
@@ -0,0 +1,36 @@
1
+ [ 18ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
2
+ [ 18ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
3
+ [ 18ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
4
+ [ 18ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
5
+ [ 18ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
6
+ [ 18ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
7
+ [ 48ms] Error: No ad placements found.
8
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
9
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
10
+ [ 30409ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
11
+ [ 30409ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
12
+ [ 30409ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
13
+ [ 30409ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
14
+ [ 30409ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
15
+ [ 30409ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
16
+ [ 30438ms] Error: No ad placements found.
17
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
18
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
19
+ [ 80604ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
20
+ [ 80604ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
21
+ [ 80604ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
22
+ [ 80604ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
23
+ [ 80604ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
24
+ [ 80604ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
25
+ [ 80632ms] Error: No ad placements found.
26
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
27
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
28
+ [ 81184ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
29
+ [ 81184ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
30
+ [ 81184ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
31
+ [ 81184ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
32
+ [ 81184ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
33
+ [ 81184ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
34
+ [ 81211ms] Error: No ad placements found.
35
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
36
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
@@ -0,0 +1,36 @@
1
+ [ 470ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
2
+ [ 470ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
3
+ [ 470ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
4
+ [ 470ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
5
+ [ 470ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
6
+ [ 470ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
7
+ [ 500ms] Error: No ad placements found.
8
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
9
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
10
+ [ 30013ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
11
+ [ 30013ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
12
+ [ 30013ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
13
+ [ 30013ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
14
+ [ 30014ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
15
+ [ 30014ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
16
+ [ 30039ms] Error: No ad placements found.
17
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
18
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
19
+ [ 71270ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
20
+ [ 71270ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
21
+ [ 71270ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
22
+ [ 71270ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
23
+ [ 71270ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
24
+ [ 71270ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
25
+ [ 71297ms] Error: No ad placements found.
26
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
27
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977
28
+ [ 71983ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'. @ :0
29
+ [ 71983ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'battery'. @ :0
30
+ [ 71983ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'document-domain'. @ :0
31
+ [ 71983ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'. @ :0
32
+ [ 71983ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'. @ :0
33
+ [ 71983ms] [WARNING] Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'. @ :0
34
+ [ 72009ms] Error: No ad placements found.
35
+ at w (https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:11867)
36
+ at https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js:1:12977