Skip to content

Fix Permissions-Policy header rejected by browsers - #2061

Draft
GregorShear wants to merge 1 commit into
mainfrom
claude/dreamy-gould-060dcf
Draft

Fix Permissions-Policy header rejected by browsers#2061
GregorShear wants to merge 1 commit into
mainfrom
claude/dreamy-gould-060dcf

Conversation

@GregorShear

Copy link
Copy Markdown
Contributor

Problem

The nginx always keyword was inside the quoted header value on the Permissions-Policy directive:

add_header Permissions-Policy "geolocation=(), microphone=(), camera=() always";

Browsers therefore received the header value geolocation=(), microphone=(), camera=() always and rejected the entire header. The console reports:

Parse of permissions policy failed because of errors reported by structured header parser

Confirmed on a deployed build on 2026-08-20. As a result the app ships no effective Permissions-Policy header in production (Cloud Run service dashboard in estuary-control).

Fix

Move always outside the quotes so nginx treats it as a directive flag, not part of the header value. This matches the neighboring security headers (Strict-Transport-Security, X-Frame-Options, etc.).

add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;

One-line change in public/nginx.conf.

The nginx add_header always keyword was inside the quoted header value, so browsers received "camera=() always" and rejected the entire Permissions-Policy header with a structured-header parse error. Moving always outside the quotes makes it an nginx directive flag rather than part of the header value, matching the neighboring security headers.
@github-actions

Copy link
Copy Markdown

⚪ Code Health

No change to the dead-code surface.

48 Unused files

File imported nowhere — delete (or import) it.

     src/hooks/useDelay.ts
     src/hooks/useDraft.ts
     src/pages/NoGrants.tsx
     src/pages/OAuth.tsx
     src/services/encryption.ts
     src/types/global.ts
     src/types/vitest.ts
     src/components/graphs/TaskHoursByMonthGraph.tsx
     src/components/tables/Link.tsx
     src/context/LoopIndex/index.tsx
…and 38 more

66 Unused exports

Exported symbol with no references outside its own file — un-export it, or delete it if unused entirely

     src/context/Theme.tsx : logoColors
     src/context/Theme.tsx : intensifiedOutlineThick
     src/context/Theme.tsx : tableAlternateRowsSx
     src/context/Theme.tsx : draggableChipIconSx
     src/context/Theme.tsx : hiddenButAccessibleInput
     src/context/Theme.tsx : primaryColoredBackground_hovered
     src/context/Theme.tsx : detailsPanelBgColor
     src/context/Theme.tsx : menuBackgroundColor
     src/context/Theme.tsx : flexGrowToSiblingsSx
     src/context/Theme.tsx : shardTableRow
…and 56 more

30 Unused exported types

Exported type with no references outside its own file — un-export it, or delete it if unused entirely

     src/utils/billing-utils.ts : FREE_GB_BY_TIER
     src/types/index.ts : InferredSchemas
     src/types/index.ts : Shard
     src/components/shared/WizardDialog/index.ts : WizardStep
     src/api/dataPlanes.ts : AwsDnsEntry
     src/stores/ShardDetail/types.ts : TaskShardDetailsWithShard
     src/stores/ShardDetail/types.ts : ShardDetails
     src/components/tables/Logs/types.ts : RefreshLogsFunction
     src/types/schemaModels.ts : CollectionSchema
     src/components/editor/Bindings/types.ts : SelectedCollectionChangeData
…and 20 more

14 Unused exported enum members

An enum member referenced nowhere

     src/services/supabase.ts : CONNECTOR_TAGS
     src/services/supabase.ts : DRAFTS_EXT
     src/services/supabase.ts : TASKS_BY_DAY
     src/stores/Tables/hooks.ts : accessGrants
     src/stores/Tables/hooks.ts : accessLinks
     src/stores/Tables/hooks.ts : billing
     src/stores/Tables/hooks.ts : connectors
     src/stores/Tables/hooks.ts : entitySelector
     src/stores/Tables/hooks.ts : prefixes
     src/stores/Tables/hooks.ts : prefixAlerts
…and 4 more

5 Unused dependencies

In package.json but never imported

     package.json : @mui/lab
     package.json : @testing-library/jest-dom
     package.json : @urql/exchange-retry
     package.json : logrocket-react
     package.json : stripe

3 Unused devDependencies

In package.json devDependencies but never used

     package.json : @types/logrocket-react
     package.json : @types/react-inspector
     package.json : sharp

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.

1 participant