Skip to content

[primitives] Fix Cursor MCP connection docs#123

Merged
justfinethanku merged 2 commits into
mainfrom
contrib/matthallett/fix-cursor-mcp-docs
Apr 13, 2026
Merged

[primitives] Fix Cursor MCP connection docs#123
justfinethanku merged 2 commits into
mainfrom
contrib/matthallett/fix-cursor-mcp-docs

Conversation

@matthallett1
Copy link
Copy Markdown
Collaborator

Summary

  • Adds a dedicated Cursor section (7.5) to the getting-started guide and remote-mcp primitive with native url config — no mcp-remote needed.
  • Updates the mcp-remote fallback examples (for clients that still need stdio bridging) to pass the access key via ?key= query parameter instead of --header, avoiding OAuth client registration failures with mcp-remote@latest.
  • Clarifies that the core Open Brain server uses x-brain-key while extension servers use x-access-key in the troubleshooting guides.

Why

mcp-remote@latest now defaults to http-first transport, which attempts OAuth client registration before forwarding custom headers. Open Brain uses simple key-based auth (not OAuth), so this registration attempt fails with a ServerError. Since Cursor natively supports remote MCP servers via the url field (like Sentry's config), mcp-remote is unnecessary and actively harmful.

Files changed

  • docs/01-getting-started.md — Split "Other Clients" into dedicated Cursor (7.5) and Other Clients (7.6) sections
  • primitives/remote-mcp/README.md — Added Cursor section, updated mcp-remote examples, fixed 401 troubleshooting
  • primitives/troubleshooting/README.md — Clarified header names and added Cursor-specific guidance

Test plan

  • Verified Cursor connects successfully with native url field config (~/.cursor/mcp.json)
  • Verified mcp-remote with ?key= query parameter works for stdio-only clients
  • Confirmed mcp-remote with --header fails with OAuth ServerError on mcp-remote@latest

Made with Cursor

@github-actions
Copy link
Copy Markdown

OB1 Automated Review

This PR modifies docs or repo governance files. Contribution checks skipped.

✅ No issues found.

@github-actions github-actions Bot added documentation Improvements or additions to documentation primitive Contribution: reusable concept guide labels Mar 25, 2026
@matthallett1
Copy link
Copy Markdown
Collaborator Author

@claude review this PR

1 similar comment
@matthallett1
Copy link
Copy Markdown
Collaborator Author

@claude review this PR

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Mar 30, 2026

Claude finished @matthallett1's task in 1m 6s —— View job


PR Review: [docs] Fix Cursor MCP connection — use native url field, not mcp-remote

  • Read changed files
  • Review docs/01-getting-started.md
  • Review primitives/remote-mcp/README.md
  • Review primitives/troubleshooting/README.md
  • Post final review

Summary

This is a solid, well-scoped docs fix that addresses a real breakage introduced by mcp-remote@latest. The technical reasoning is sound and the changes are consistent across all three files. I have a few minor observations but nothing blocking.


What Works Well

Technically correct. The diagnosis is accurate — mcp-remote@latest now uses http-first transport and attempts OAuth client registration before forwarding custom headers. Since Open Brain uses simple key-based auth, this registration fails with a ServerError. Moving Cursor users to the native url field is the right call.

Consistent changes across files. The fix is applied in all three relevant places: docs/01-getting-started.md (step 7.5), primitives/remote-mcp/README.md, and primitives/troubleshooting/README.md. Good coverage.

Useful separation of concerns. Splitting "Other Clients" into a dedicated Cursor section (7.5) and a general stdio-bridge section (7.6) makes the guide easier to follow. Users who just need Cursor don't have to parse through mcp-remote options.

The ?key= query parameter approach is pragmatic. For clients that genuinely need mcp-remote (stdio-only), documenting the key via query param instead of --header avoids the OAuth issue for those cases too.

The warning note is well-placed. The "do not use mcp-remote for Cursor" callout in both the getting-started guide (line 733) and the remote-mcp primitive (line 74) proactively stops users who might copy an older example.


Minor Observations

The x-brain-key vs x-access-key clarification is slightly buried. The troubleshooting README (primitives/troubleshooting/README.md:16) now says:

If using header-based auth (Claude Code), the core Open Brain server expects x-brain-key while extension servers expect x-access-key

This is accurate and useful. However, the same nuance in docs/01-getting-started.md (line 828) only mentions x-brain-key without the extension distinction. Not a blocker, but worth noting for consistency.

Claude Code section still uses --header (primitives/remote-mcp/README.md:53):

--header "x-access-key: your-access-key"

This is intentional — Claude Code's native --header flag doesn't go through mcp-remote, so it doesn't hit the OAuth issue. But it could confuse readers who just read the "don't use --header" warning above it. A one-line comment like # Claude Code uses native headers — not mcp-remote, so this works fine would prevent that confusion. Not required.

No test instructions for "Other Clients." The PR's test plan covers Cursor and mcp-remote with ?key=, which is the important part. Not a gap.


Alignment with OB1 Standards

  • No credentials or secrets introduced
  • No core thoughts table changes
  • No local MCP servers — all instructions point to remote Edge Functions
  • No binary blobs or unqualified SQL
  • Docs-only change, so no metadata.json required

Verdict

Approve. This fixes a real, user-facing breakage caused by an upstream mcp-remote change and is well-documented across the relevant files. The minor note about the x-brain-key vs x-access-key wording in 01-getting-started.md:828 is cosmetic and can be addressed in a follow-up if desired.

@justfinethanku
Copy link
Copy Markdown
Collaborator

Thanks for putting this together. We want to merge it as soon as these minor issues are handled:

  • retitle the PR to an allowed category, most likely [primitives]
  • add explicit Prerequisites, Step-by-step instructions, and Expected outcome sections to primitives/remote-mcp/README.md
  • rebase or otherwise resolve the current conflict with main if it still exists

If you want, enable maintainer edits and we can help patch this.

matthallett1 and others added 2 commits April 12, 2026 22:12
mcp-remote@latest now attempts OAuth client registration before sending
custom headers, which breaks against Open Brain's simple key-based auth.
Cursor supports remote MCP servers natively via the url field, so
mcp-remote is unnecessary.

Changes:
- Add dedicated Cursor section to getting-started guide (7.5) and
  remote-mcp primitive with native url config
- Update mcp-remote examples to pass key via ?key= query parameter
  instead of --header to avoid OAuth discovery issues
- Clarify x-brain-key (core) vs x-access-key (extensions) in
  troubleshooting guides

Made-with: Cursor
@justfinethanku justfinethanku changed the title [docs] Fix Cursor MCP connection — use native url field, not mcp-remote [primitives] Fix Cursor MCP connection docs Apr 13, 2026
@justfinethanku justfinethanku force-pushed the contrib/matthallett/fix-cursor-mcp-docs branch from 97be95d to 716edfa Compare April 13, 2026 02:13
@justfinethanku justfinethanku merged commit b9ef650 into main Apr 13, 2026
1 of 2 checks passed
@justfinethanku justfinethanku deleted the contrib/matthallett/fix-cursor-mcp-docs branch April 13, 2026 02:13
corruptmemory pushed a commit to corruptmemory/OB1 that referenced this pull request Apr 15, 2026
* [docs] Fix Cursor MCP connection — use native url field, not mcp-remote

mcp-remote@latest now attempts OAuth client registration before sending
custom headers, which breaks against Open Brain's simple key-based auth.
Cursor supports remote MCP servers natively via the url field, so
mcp-remote is unnecessary.

Changes:
- Add dedicated Cursor section to getting-started guide (7.5) and
  remote-mcp primitive with native url config
- Update mcp-remote examples to pass key via ?key= query parameter
  instead of --header to avoid OAuth discovery issues
- Clarify x-brain-key (core) vs x-access-key (extensions) in
  troubleshooting guides

Made-with: Cursor

* [primitives] Bring remote MCP docs in line with repo format

---------

Co-authored-by: Jonathan Edwards <justfinethanku@gmail.com>
alanshurafa added a commit to alanshurafa/OB1 that referenced this pull request Apr 19, 2026
backfill.mjs previously tolerated integer-style NateBJones-Projects#123 parent refs when no
UUIDs were present, writing them into derived_from. On a canonical UUID
install trace_provenance and find_derivatives cast every element to
::uuid at query time, so those rows would explode later with 22P02
invalid input syntax. Silently writing unusable data is worse than
failing up front.

parseParentIds now throws loudly if any integer ref is detected, naming
the offending row, the sample refs, and why we refuse. The main loop
catches the throw per-row, logs a parse error reason, and still flips
derivation_layer='derived' on the row so operators can see the flag and
re-run with --force after fixing the artifact.

Update the README ID Type Note so BIGINT-fork users know this backfill
path is UUID-only and they must repopulate derived_from themselves.
gleesonb pushed a commit to gleesonb/OB1 that referenced this pull request May 12, 2026
* [docs] Fix Cursor MCP connection — use native url field, not mcp-remote

mcp-remote@latest now attempts OAuth client registration before sending
custom headers, which breaks against Open Brain's simple key-based auth.
Cursor supports remote MCP servers natively via the url field, so
mcp-remote is unnecessary.

Changes:
- Add dedicated Cursor section to getting-started guide (7.5) and
  remote-mcp primitive with native url config
- Update mcp-remote examples to pass key via ?key= query parameter
  instead of --header to avoid OAuth discovery issues
- Clarify x-brain-key (core) vs x-access-key (extensions) in
  troubleshooting guides

Made-with: Cursor

* [primitives] Bring remote MCP docs in line with repo format

---------

Co-authored-by: Jonathan Edwards <justfinethanku@gmail.com>
justfinethanku added a commit that referenced this pull request May 22, 2026
* [schemas] Provenance chains columns and helpers

Adds derived_from, derivation_method, derivation_layer, supersedes to public.thoughts plus trace_provenance and find_derivatives helper SQL. Idempotent, with rollback documented.

* [recipes] Provenance chains pipeline — backfill, eval, MCP tools

Scripts and tool handlers that operate on the provenance columns: backfill existing pointer/derived thoughts, nightly quality eval, and trace/find MCP tools for reasoning queries.

* [schemas] Fix REVIEW-CODEX-P1-2: service-role-only GRANT on provenance RPCs

SECURITY DEFINER helpers trace_provenance and find_derivatives were granted
to authenticated, so any signed-in Supabase user could call them via
PostgREST and bypass the edge-function access key. Restrict EXECUTE to
service_role only (revoke from authenticated and PUBLIC) so the edge
function is the sole caller.

Also drop the client-supplied p_exclude_restricted parameter from
find_derivatives — a caller could pass false and unmask restricted rows.
Restricted rows are now unconditionally hidden. DROP FUNCTION of the old
3-arg signature runs before CREATE OR REPLACE so the migration stays
re-runnable.

* [schemas] Fix CR-01: read sensitivity_tier/source_type/type from metadata, not columns

The canonical public.thoughts table (docs/01-getting-started.md) only
defines id, content, embedding, metadata, created_at, updated_at, and
content_fingerprint. The helpers were reading t.sensitivity_tier,
t.source_type, and t.type as top-level columns, which do not exist on a
stock OB1 install — the two CREATE OR REPLACE FUNCTION blocks failed with
'column does not exist' and left the migration half-applied.

Change both helpers to read those three fields via metadata->>'…'. The
RETURNS TABLE signatures keep the same columns so callers do not change.
Document the canonical-schema contract and the RLS behaviour (row-level,
not column-level) in the schema README.

* [recipes] Fix REVIEW-CODEX-P1-3: reject integer refs in UUID backfill

backfill.mjs previously tolerated integer-style #123 parent refs when no
UUIDs were present, writing them into derived_from. On a canonical UUID
install trace_provenance and find_derivatives cast every element to
::uuid at query time, so those rows would explode later with 22P02
invalid input syntax. Silently writing unusable data is worse than
failing up front.

parseParentIds now throws loudly if any integer ref is detected, naming
the offending row, the sample refs, and why we refuse. The main loop
catches the throw per-row, logs a parse error reason, and still flips
derivation_layer='derived' on the row so operators can see the flag and
re-run with --force after fixing the artifact.

Update the README ID Type Note so BIGINT-fork users know this backfill
path is UUID-only and they must repopulate derived_from themselves.

* [schemas] Fix WR-02: UUID regex constraint on derived_from elements

Element shape was previously validated only in application code. A bad
insert (integer, object, or non-UUID string) would pass the existing
'is JSONB array' check and only fail later inside trace_provenance with
22P02 invalid input syntax for uuid, with no pointer to the offending
row. Add thoughts_derived_from_uuid_elements_check so every element is
asserted to be an RFC 4122 UUID string at write time, and the
constraint name makes the bad row easy to locate.

Update the rollback block to drop the new constraint.

* [recipes] Fix REVIEW-CODEX-P2: inline MCP envelopes, no missing helpers

mcp-tools.ts previously called toolSuccess(...) and toolFailure(...)
helpers that do not exist in the canonical server/index.ts. Pasting the
snippet as documented produced compile errors.

Replace every return with the literal envelope shape
  { content: [{ type: 'text', text: ... }] }
(plus isError: true on failure paths) so the snippet matches the
canonical server patterns and drops in clean. Also drop the
exclude_restricted input on find_derivatives because the SQL RPC no
longer accepts it (see P1-2 fix) — the filter is hardcoded server-side.

README updated to reflect the new signature and sensitivity-enforcement
contract.

* [recipes] Fix WR-01/WR-06: SUPABASE_* canonical, OPEN_BRAIN_* fallback

Every other OB1 recipe (instagram-import, grok-export-import, etc.) uses
SUPABASE_URL / SUPABASE_SERVICE_ROLE_KEY. This recipe introduced the
novel OPEN_BRAIN_URL / OPEN_BRAIN_SERVICE_KEY pair, so users with an
existing .env hit 'missing env' even though their canonical credentials
were set.

backfill.mjs and eval.mjs now read SUPABASE_* first and fall back to
OPEN_BRAIN_* with a one-time deprecation warning. The grader key gains
the same pattern — OPENROUTER_API_KEY preferred, ANTHROPIC_API_KEY
accepted with a warning that it must be an OpenRouter-compatible token
for the openrouter grader to authenticate.

eval.mjs also fails fast when the openrouter grader is selected without
a key (WR-06), before doing the Supabase candidate/parent fetches that
would otherwise burn 201+ round-trips on a 200-row run.

README credential tracker and export block updated to canonical names.

* [recipes] Fix REVIEW-CODEX-P3: remove unused node:path import

path was imported but never referenced in eval.mjs.

* [schemas] Fix REVIEW-CODEX-2-P1: drop subquery CHECK; UUID validation in app layer

* [recipes] Fix REVIEW-CODEX-2-P1: read source_type/type from metadata via PostgREST JSON syntax

* [recipes] Fix REVIEW-CODEX-2-P2: mirror backfill provenance into metadata for stock RPC compat

* [schemas] Add merge_thought_provenance_metadata RPC for race-free metadata mirror

* [recipes] Fix REVIEW-CODEX-3-P1: backfill uses RPC instead of GET+PATCH to avoid race with eval

* [docs] Explain race-free metadata mirror in provenance READMEs

* [schemas] Add merge_thought_eval_metadata RPC for race-free eval writes

* [recipes] Fix REVIEW-CODEX-4-P1: eval.mjs uses RPC instead of GET+PATCH to close reverse race

* [recipes] Fix REVIEW-CODEX-4-P2: document and handle backfill half-migration recovery

* [schemas] Fix REVIEW-CODEX-5-P2: merge_thought_*_metadata RPCs raise on zero rows

* [recipes] Fix REVIEW-CODEX-5-P2: eval apply-scores surfaces missing thoughts as errors

* [recipes] Fix REVIEW-CODEX-5-P2: backfill exits non-zero on half-migrated rows

* [recipes] Fix REVIEW-CODEX-6-P1: trace_provenance returns cycle stubs instead of crashing

* [recipes] Fix REVIEW-CODEX-6-P2: eval.mjs exits non-zero on malformed lines and row errors

* [recipes] Fix REVIEW-CODEX-6-P3: backfill distinguishes deleted rows from half-migrated

* [recipes] Fix REVIEW-CODEX-7-P1: correct trace_provenance edge direction in tree rebuild

* [recipes] Fix REVIEW-CODEX-7-P2: backfill exits non-zero on provenance parse errors

* [recipes] Fix REVIEW-CODEX-8-P2: use per-row depth in trace_provenance, not canonical

* [recipes] Fix REVIEW-CODEX-8: dry-run parse-error warning qualifies 'would have'

* [recipes] Fix REVIEW-CODEX-9-P2: over-fetch by one to detect trace_provenance truncation precisely

* [recipes] Fix REVIEW-CODEX-9-P2: paginate fetchCandidates to survive eval backlogs

* [recipes] Fix REVIEW-CODEX-10-P2: keyset pagination on (created_at, id) for stable fetchCandidates

* [recipes] Fix REVIEW-CODEX-11-P1: quote keyset cursor values to escape PostgREST reserved dots

* [provenance] Tidy docs for lint and current paths

---------

Co-authored-by: Jonathan Edwards <justfinethanku@gmail.com>
adamreading pushed a commit to adamreading/OB1-AJO that referenced this pull request May 22, 2026
…s-Projects#207)

* [schemas] Provenance chains columns and helpers

Adds derived_from, derivation_method, derivation_layer, supersedes to public.thoughts plus trace_provenance and find_derivatives helper SQL. Idempotent, with rollback documented.

* [recipes] Provenance chains pipeline — backfill, eval, MCP tools

Scripts and tool handlers that operate on the provenance columns: backfill existing pointer/derived thoughts, nightly quality eval, and trace/find MCP tools for reasoning queries.

* [schemas] Fix REVIEW-CODEX-P1-2: service-role-only GRANT on provenance RPCs

SECURITY DEFINER helpers trace_provenance and find_derivatives were granted
to authenticated, so any signed-in Supabase user could call them via
PostgREST and bypass the edge-function access key. Restrict EXECUTE to
service_role only (revoke from authenticated and PUBLIC) so the edge
function is the sole caller.

Also drop the client-supplied p_exclude_restricted parameter from
find_derivatives — a caller could pass false and unmask restricted rows.
Restricted rows are now unconditionally hidden. DROP FUNCTION of the old
3-arg signature runs before CREATE OR REPLACE so the migration stays
re-runnable.

* [schemas] Fix CR-01: read sensitivity_tier/source_type/type from metadata, not columns

The canonical public.thoughts table (docs/01-getting-started.md) only
defines id, content, embedding, metadata, created_at, updated_at, and
content_fingerprint. The helpers were reading t.sensitivity_tier,
t.source_type, and t.type as top-level columns, which do not exist on a
stock OB1 install — the two CREATE OR REPLACE FUNCTION blocks failed with
'column does not exist' and left the migration half-applied.

Change both helpers to read those three fields via metadata->>'…'. The
RETURNS TABLE signatures keep the same columns so callers do not change.
Document the canonical-schema contract and the RLS behaviour (row-level,
not column-level) in the schema README.

* [recipes] Fix REVIEW-CODEX-P1-3: reject integer refs in UUID backfill

backfill.mjs previously tolerated integer-style NateBJones-Projects#123 parent refs when no
UUIDs were present, writing them into derived_from. On a canonical UUID
install trace_provenance and find_derivatives cast every element to
::uuid at query time, so those rows would explode later with 22P02
invalid input syntax. Silently writing unusable data is worse than
failing up front.

parseParentIds now throws loudly if any integer ref is detected, naming
the offending row, the sample refs, and why we refuse. The main loop
catches the throw per-row, logs a parse error reason, and still flips
derivation_layer='derived' on the row so operators can see the flag and
re-run with --force after fixing the artifact.

Update the README ID Type Note so BIGINT-fork users know this backfill
path is UUID-only and they must repopulate derived_from themselves.

* [schemas] Fix WR-02: UUID regex constraint on derived_from elements

Element shape was previously validated only in application code. A bad
insert (integer, object, or non-UUID string) would pass the existing
'is JSONB array' check and only fail later inside trace_provenance with
22P02 invalid input syntax for uuid, with no pointer to the offending
row. Add thoughts_derived_from_uuid_elements_check so every element is
asserted to be an RFC 4122 UUID string at write time, and the
constraint name makes the bad row easy to locate.

Update the rollback block to drop the new constraint.

* [recipes] Fix REVIEW-CODEX-P2: inline MCP envelopes, no missing helpers

mcp-tools.ts previously called toolSuccess(...) and toolFailure(...)
helpers that do not exist in the canonical server/index.ts. Pasting the
snippet as documented produced compile errors.

Replace every return with the literal envelope shape
  { content: [{ type: 'text', text: ... }] }
(plus isError: true on failure paths) so the snippet matches the
canonical server patterns and drops in clean. Also drop the
exclude_restricted input on find_derivatives because the SQL RPC no
longer accepts it (see P1-2 fix) — the filter is hardcoded server-side.

README updated to reflect the new signature and sensitivity-enforcement
contract.

* [recipes] Fix WR-01/WR-06: SUPABASE_* canonical, OPEN_BRAIN_* fallback

Every other OB1 recipe (instagram-import, grok-export-import, etc.) uses
SUPABASE_URL / SUPABASE_SERVICE_ROLE_KEY. This recipe introduced the
novel OPEN_BRAIN_URL / OPEN_BRAIN_SERVICE_KEY pair, so users with an
existing .env hit 'missing env' even though their canonical credentials
were set.

backfill.mjs and eval.mjs now read SUPABASE_* first and fall back to
OPEN_BRAIN_* with a one-time deprecation warning. The grader key gains
the same pattern — OPENROUTER_API_KEY preferred, ANTHROPIC_API_KEY
accepted with a warning that it must be an OpenRouter-compatible token
for the openrouter grader to authenticate.

eval.mjs also fails fast when the openrouter grader is selected without
a key (WR-06), before doing the Supabase candidate/parent fetches that
would otherwise burn 201+ round-trips on a 200-row run.

README credential tracker and export block updated to canonical names.

* [recipes] Fix REVIEW-CODEX-P3: remove unused node:path import

path was imported but never referenced in eval.mjs.

* [schemas] Fix REVIEW-CODEX-2-P1: drop subquery CHECK; UUID validation in app layer

* [recipes] Fix REVIEW-CODEX-2-P1: read source_type/type from metadata via PostgREST JSON syntax

* [recipes] Fix REVIEW-CODEX-2-P2: mirror backfill provenance into metadata for stock RPC compat

* [schemas] Add merge_thought_provenance_metadata RPC for race-free metadata mirror

* [recipes] Fix REVIEW-CODEX-3-P1: backfill uses RPC instead of GET+PATCH to avoid race with eval

* [docs] Explain race-free metadata mirror in provenance READMEs

* [schemas] Add merge_thought_eval_metadata RPC for race-free eval writes

* [recipes] Fix REVIEW-CODEX-4-P1: eval.mjs uses RPC instead of GET+PATCH to close reverse race

* [recipes] Fix REVIEW-CODEX-4-P2: document and handle backfill half-migration recovery

* [schemas] Fix REVIEW-CODEX-5-P2: merge_thought_*_metadata RPCs raise on zero rows

* [recipes] Fix REVIEW-CODEX-5-P2: eval apply-scores surfaces missing thoughts as errors

* [recipes] Fix REVIEW-CODEX-5-P2: backfill exits non-zero on half-migrated rows

* [recipes] Fix REVIEW-CODEX-6-P1: trace_provenance returns cycle stubs instead of crashing

* [recipes] Fix REVIEW-CODEX-6-P2: eval.mjs exits non-zero on malformed lines and row errors

* [recipes] Fix REVIEW-CODEX-6-P3: backfill distinguishes deleted rows from half-migrated

* [recipes] Fix REVIEW-CODEX-7-P1: correct trace_provenance edge direction in tree rebuild

* [recipes] Fix REVIEW-CODEX-7-P2: backfill exits non-zero on provenance parse errors

* [recipes] Fix REVIEW-CODEX-8-P2: use per-row depth in trace_provenance, not canonical

* [recipes] Fix REVIEW-CODEX-8: dry-run parse-error warning qualifies 'would have'

* [recipes] Fix REVIEW-CODEX-9-P2: over-fetch by one to detect trace_provenance truncation precisely

* [recipes] Fix REVIEW-CODEX-9-P2: paginate fetchCandidates to survive eval backlogs

* [recipes] Fix REVIEW-CODEX-10-P2: keyset pagination on (created_at, id) for stable fetchCandidates

* [recipes] Fix REVIEW-CODEX-11-P1: quote keyset cursor values to escape PostgREST reserved dots

* [provenance] Tidy docs for lint and current paths

---------

Co-authored-by: Jonathan Edwards <justfinethanku@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation primitive Contribution: reusable concept guide

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants