Skip to content

Conversation

@ymc9
Copy link
Member

@ymc9 ymc9 commented Sep 4, 2025

Summary by CodeRabbit

  • Chores
    • Shifted telemetry token injection from the build config to a dedicated post-build step in the CI pipeline.
    • Simplified build configuration by removing the previous inline hook.
    • Improved build logging for clearer visibility during releases.
    • No changes to CLI behavior or user-facing features.

Copilot AI review requested due to automatic review settings September 4, 2025 04:59
@coderabbitai
Copy link

coderabbitai bot commented Sep 4, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Warning

Rate limit exceeded

@ymc9 has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 9 minutes and 4 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between db06bc4 and 72d4081.

📒 Files selected for processing (3)
  • .github/workflows/build-test.yml (1 hunks)
  • .github/workflows/publish-release.yml (1 hunks)
  • packages/cli/scripts/post-build.ts (1 hunks)

Walkthrough

Removes the tsup onSuccess hook from the CLI build, adds a new post-build script to inject the telemetry token into built artifacts, and updates the CI workflow to run this script after building.

Changes

Cohort / File(s) Summary of Changes
CLI build config
packages/cli/tsup.config.ts
Removed onSuccess hook and related fs/path imports; no other tsup config changes.
CI workflow
.github/workflows/build-test.yml
Modified build step to echo TELEMETRY_TRACKING_TOKEN, run build, then execute pnpm tsx packages/cli/scripts/post-build.ts.
Post-build script
packages/cli/scripts/post-build.ts
Added script that reads TELEMETRY_TRACKING_TOKEN and replaces <TELEMETRY_TRACKING_TOKEN> in dist/index.js and dist/index.cjs using synchronous I/O and ESM utilities.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Poem

I hop through builds with steady cheer,
Tokens tucked, the path is clear.
The hook is gone—now scripts take flight,
Post-build whispers in the night.
Two files patched, job well spun—
Bun-bun logs: “Replace, and done.” 🐇✨

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/telemetry-token

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@claude
Copy link

claude bot commented Sep 4, 2025

Claude finished @ymc9's task —— View job


Code Review: Telemetry Token Fix

Reviewing this PR that fixes telemetry token configuration.

Todo List:

  • Read and analyze the changed file
  • Review code quality and best practices
  • Check for potential bugs or issues
  • Evaluate performance considerations
  • Assess security concerns
  • Review test coverage implications
  • Provide final feedback and recommendations

Change Summary:
The PR adds a single debug logging line to output the TELEMETRY_TRACKING_TOKEN environment variable value during the build process.

console.log('TELEMETRY_TRACKING_TOKEN:', process.env['TELEMETRY_TRACKING_TOKEN']);

Code Review Findings

Code Quality & Best Practices

  • Change is minimal and focused
  • Follows existing code style and patterns in the file
  • Consistent with other debug logging in the codebase

⚠️ Security Concerns

  • HIGH PRIORITY: This change logs the telemetry tracking token to the console during build, which could expose sensitive credentials in CI/CD logs
  • The token appears to be a Mixpanel tracking token based on usage in packages/cli/src/telemetry.ts:48
  • While tracking tokens are typically less sensitive than API secrets, logging them can still pose security risks

Performance Considerations

  • Minimal performance impact - single console.log during build time only
  • No runtime performance implications

Potential Bugs

  • No bugs identified in the implementation
  • Defensive check if (!process.env['TELEMETRY_TRACKING_TOKEN']) already exists

Test Coverage

  • This is a build-time debugging change that doesn't affect runtime logic
  • No additional test coverage needed for this logging statement

Architecture Context

The telemetry system works by:

  1. constants.ts defines a placeholder '<TELEMETRY_TRACKING_TOKEN>'
  2. Build process (tsup.config.ts) replaces this placeholder with actual token from env var
  3. Runtime telemetry code uses the replaced token to initialize Mixpanel

Recommendations

  1. Consider Security Implications: If this debug logging is for troubleshooting build issues, consider:

    • Using a masked/redacted version: console.log('TELEMETRY_TRACKING_TOKEN:', token ? '[REDACTED]' : 'undefined')
    • Making it conditional: if (process.env['DEBUG_BUILD']) console.log(...)
    • Removing it after debugging is complete
  2. Alternative Approach: Instead of logging the full token, you could log just whether it exists:

    console.log('TELEMETRY_TRACKING_TOKEN present:', !!process.env['TELEMETRY_TRACKING_TOKEN']);

Overall Assessment

Approved with Security Caveat: The change is functionally correct and minimal, but consider the security implications of logging tokens in CI environments. If this is temporary debugging code, ensure it's removed before the next release.

Copy link
Contributor

Copilot AI left a comment

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 adds debug logging to display the telemetry tracking token value during the build process. The change helps with debugging telemetry configuration by outputting the token value to the console.

  • Adds console logging for the TELEMETRY_TRACKING_TOKEN environment variable

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
packages/cli/tsup.config.ts (2)

23-29: Use consistent paths for read/write; write should also join with __dirname.

Reading uses path.join(__dirname, ...) but writing is CWD-relative; this can write to the wrong location.

-            fs.writeFileSync(file, updatedContent, 'utf-8');
+            fs.writeFileSync(path.join(__dirname, file), updatedContent, 'utf-8');

24-27: Replace all occurrences and avoid $ expansion in replacement strings.

String.prototype.replace only replaces the first match and may interpret $ in the replacement. Use replaceAll with a function.

-            const updatedContent = content.replace(
-                '<TELEMETRY_TRACKING_TOKEN>',
-                process.env['TELEMETRY_TRACKING_TOKEN'],
-            );
+            const token = process.env['TELEMETRY_TRACKING_TOKEN']!;
+            const updatedContent = content.replaceAll('<TELEMETRY_TRACKING_TOKEN>', () => token);
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between b443018 and 7c6706b.

📒 Files selected for processing (1)
  • packages/cli/tsup.config.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
{packages,samples,tests}/**

📄 CodeRabbit inference engine (CLAUDE.md)

Packages are located in packages/, samples/, and tests/

Files:

  • packages/cli/tsup.config.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build-test (20.x)
🔇 Additional comments (1)
packages/cli/tsup.config.ts (1)

1-4: Ensure __dirname is defined under ESM.

If the repo uses "type": "module", __dirname is undefined. Verify config loader; if ESM, derive it explicitly.

// At top of file:
import { fileURLToPath } from 'node:url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));

Also applies to: 23-23

@claude
Copy link

claude bot commented Sep 4, 2025

Claude finished @ymc9's task —— View job


Code Review: Telemetry Token Fix

Reviewing this PR that fixes telemetry token configuration.

Todo List:

  • Read and analyze the changed file
  • Review code quality and best practices
  • Check for potential bugs or issues
  • Evaluate performance considerations
  • Assess security concerns
  • Review test coverage implications
  • Provide final feedback and recommendations

Change Summary:
The PR adds a single debug logging line to output the TELEMETRY_TRACKING_TOKEN environment variable value during the build process.

console.log('TELEMETRY_TRACKING_TOKEN:', process.env['TELEMETRY_TRACKING_TOKEN']);

Code Review Findings

Code Quality & Best Practices

  • Change is minimal and focused
  • Follows existing code style and patterns in the file
  • Consistent with other debug logging in the codebase

⚠️ Security Concerns

  • HIGH PRIORITY: This change logs the telemetry tracking token to the console during build, which could expose sensitive credentials in CI/CD logs
  • The token appears to be a Mixpanel tracking token based on usage in packages/cli/src/telemetry.ts:48
  • While tracking tokens are typically less sensitive than API secrets, logging them can still pose security risks

Performance Considerations

  • Minimal performance impact - single console.log during build time only
  • No runtime performance implications

Potential Bugs

  • No bugs identified in the implementation
  • Defensive check if (!process.env['TELEMETRY_TRACKING_TOKEN']) already exists

Test Coverage

  • This is a build-time debugging change that doesn't affect runtime logic
  • No additional test coverage needed for this logging statement

Architecture Context

The telemetry system works by:

  1. constants.ts defines a placeholder '<TELEMETRY_TRACKING_TOKEN>'
  2. Build process (tsup.config.ts) replaces this placeholder with actual token from env var
  3. Runtime telemetry code uses the replaced token to initialize Mixpanel

Recommendations

  1. Consider Security Implications: If this debug logging is for troubleshooting build issues, consider:

    • Using a masked/redacted version: console.log('TELEMETRY_TRACKING_TOKEN:', token ? '[REDACTED]' : 'undefined')
    • Making it conditional: if (process.env['DEBUG_BUILD']) console.log(...)
    • Removing it after debugging is complete
  2. Alternative Approach: Instead of logging the full token, you could log just whether it exists:

    console.log('TELEMETRY_TRACKING_TOKEN present:', !!process.env['TELEMETRY_TRACKING_TOKEN']);

Overall Assessment

Approved with Security Caveat: The change is functionally correct and minimal, but consider the security implications of logging tokens in CI environments. If this is temporary debugging code, ensure it's removed before the next release.


@claude
Copy link

claude bot commented Sep 4, 2025

Claude finished @ymc9's task —— View job


Code Review: Telemetry Token Fix

Reviewing this PR that fixes telemetry token configuration.

Todo List:

  • Read and analyze the changed file (packages/cli/tsup.config.ts)
  • Review code quality and best practices
  • Check for potential bugs or issues
  • Evaluate performance considerations
  • Assess security concerns
  • Review test coverage implications
  • Provide final feedback and recommendations

Change Summary:
The PR adds a single debug logging line to output the TELEMETRY_TRACKING_TOKEN environment variable value during the build process.

console.log('TELEMETRY_TRACKING_TOKEN:', process.env['TELEMETRY_TRACKING_TOKEN']);

Code Review Findings

Code Quality & Best Practices

  • Change is minimal and focused
  • Follows existing code style and patterns in the file
  • Consistent with other debug logging in the codebase

⚠️ Security Concerns

  • HIGH PRIORITY: This change logs the telemetry tracking token to the console during build, which could expose sensitive credentials in CI/CD logs
  • The token appears to be a Mixpanel tracking token based on usage in packages/cli/src/telemetry.ts:48
  • While tracking tokens are typically less sensitive than API secrets, logging them can still pose security risks

Performance Considerations

  • Minimal performance impact - single console.log during build time only
  • No runtime performance implications

Potential Bugs

  • No bugs identified in the implementation
  • Defensive check if (!process.env['TELEMETRY_TRACKING_TOKEN']) already exists

Test Coverage

  • This is a build-time debugging change that doesn't affect runtime logic
  • No additional test coverage needed for this logging statement

Architecture Context

The telemetry system works by:

  1. constants.ts defines a placeholder '<TELEMETRY_TRACKING_TOKEN>'
  2. Build process (tsup.config.ts) replaces this placeholder with actual token from env var
  3. Runtime telemetry code uses the replaced token to initialize Mixpanel

Recommendations

  1. Consider Security Implications: If this debug logging is for troubleshooting build issues, consider:

    • Using a masked/redacted version: console.log('TELEMETRY_TRACKING_TOKEN:', token ? '[REDACTED]' : 'undefined')
    • Making it conditional: if (process.env['DEBUG_BUILD']) console.log(...)
    • Removing it after debugging is complete
  2. Alternative Approach: Instead of logging the full token, you could log just whether it exists:

    console.log('TELEMETRY_TRACKING_TOKEN present:', !!process.env['TELEMETRY_TRACKING_TOKEN']);

Overall Assessment

Approved with Security Caveat: The change is functionally correct and minimal, but consider the security implications of logging tokens in CI environments. If this is temporary debugging code, ensure it's removed before the next release.


Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 35c4f3e and d80eade.

📒 Files selected for processing (1)
  • .github/workflows/build-test.yml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build-test (20.x)

@claude
Copy link

claude bot commented Sep 4, 2025

Claude finished @ymc9's task —— View job


Code Review: Telemetry Token Fix

Reviewing this PR that fixes telemetry token configuration.

Todo List:

  • Read and analyze the changed files
  • Review code quality and best practices
  • Check for potential bugs or issues
  • Evaluate performance considerations
  • Assess security concerns
  • Review test coverage implications
  • Provide final feedback and recommendations

Change Summary:
The PR adds telemetry token logging in two places:

  1. CI workflow: echo TOKEN $TELEMETRY_TRACKING_TOKEN && pnpm run build
  2. Build config: console.log('TELEMETRY_TRACKING_TOKEN:', process.env['TELEMETRY_TRACKING_TOKEN']);

Code Review Findings

Code Quality & Best Practices

  • Changes are minimal and focused
  • Follow existing code style and patterns in both files
  • Consistent with other debug logging approaches in the codebase

🚨 CRITICAL Security Concerns

  • HIGH PRIORITY: Both changes log the telemetry tracking token to console/CI logs, which exposes sensitive credentials
  • The token appears to be a Mixpanel tracking token based on usage in packages/cli/src/telemetry.ts:48
  • While tracking tokens are typically less sensitive than API secrets, logging them can still pose security risks
  • CI logs are often accessible to team members and may be stored in logging systems

Performance Considerations

  • Minimal performance impact - logging occurs during build time only
  • No runtime performance implications

Potential Bugs

  • No functional bugs identified in the implementation
  • Defensive check if (!process.env['TELEMETRY_TRACKING_TOKEN']) already exists to prevent processing when token is missing

Test Coverage

  • These are build-time debugging changes that don't affect runtime logic
  • No additional test coverage needed for logging statements

Architecture Context

The telemetry system works by:

  1. constants.ts defines a placeholder '<TELEMETRY_TRACKING_TOKEN>'
  2. Build process (tsup.config.ts) replaces this placeholder with actual token from env var
  3. Runtime telemetry code uses the replaced token to initialize Mixpanel

Recommendations

  1. Address Security Issue: If this debug logging is for troubleshooting build issues, consider:

    • Using a masked/redacted version: console.log('TELEMETRY_TRACKING_TOKEN:', token ? '[REDACTED]' : 'undefined')
    • Making it conditional: if (process.env['DEBUG_BUILD']) console.log(...)
    • Removing it after debugging is complete
  2. Alternative Approaches:

    • Log only token presence: console.log('TELEMETRY_TRACKING_TOKEN present:', !!process.env['TELEMETRY_TRACKING_TOKEN']);
    • For CI: Remove the echo command and rely on environment variable availability
  3. File-Specific Issues:

    • .github/workflows/build-test.yml:69: Remove echo TOKEN $TELEMETRY_TRACKING_TOKEN && from the run command
    • packages/cli/tsup.config.ts:19: Remove or mask the token logging

Overall Assessment

🚨 Requires Changes: The functionality works correctly, but the security implications of logging tokens in CI environments must be addressed. This is especially important for open-source projects where CI logs may be publicly accessible.

Suggested Fix:

// packages/cli/tsup.config.ts:19
console.log('TELEMETRY_TRACKING_TOKEN present:', !!process.env['TELEMETRY_TRACKING_TOKEN']);
# .github/workflows/build-test.yml:69
run: pnpm run build

@claude
Copy link

claude bot commented Sep 4, 2025

Claude finished @ymc9's task —— View job


Code Review: Telemetry Token Fix

Reviewing this PR that fixes telemetry token configuration.

Todo List:

  • Read and analyze the changed files
  • Review code quality and best practices
  • Check for potential bugs or issues
  • Evaluate performance considerations
  • Assess security concerns
  • Review test coverage implications
  • Provide final feedback and recommendations

Change Summary:
The PR introduces a new post-build script (packages/cli/scripts/post-build.ts) that processes built files to replace telemetry token placeholders, modifies the build process to run this script, and adds CI logging of the telemetry token.

Code Review Findings

Code Quality & Best Practices

  • Clean Implementation: The post-build script follows good ESM practices with proper imports and file handling
  • Clear Separation of Concerns: Token replacement is isolated to a dedicated post-build step
  • Consistent Code Style: Follows the existing codebase patterns and uses modern Node.js APIs

🚨 CRITICAL Security Concerns

  • HIGH PRIORITY: Line 7 in packages/cli/scripts/post-build.ts and line 69 in .github/workflows/build-test.yml both log the full telemetry tracking token value to console/CI logs
  • This exposes sensitive credentials in build logs, CI/CD outputs, and potentially public GitHub Actions logs
  • The token appears to be a Mixpanel tracking token based on usage in packages/cli/src/telemetry.ts:48
  • While tracking tokens are less sensitive than API secrets, logging them still poses security risks

Performance Considerations

  • Minimal Impact: Token replacement happens at build time only, no runtime performance implications
  • Efficient Processing: Only processes the specific files that need token replacement
  • Clean File Operations: Uses synchronous file operations appropriately for build-time tasks

Potential Bugs

  • No Functional Issues: The implementation correctly handles file paths and token replacement
  • Proper Error Handling: The existing codebase has defensive checks for missing tokens
  • Path Resolution: Correctly uses ESM path resolution with fileURLToPath and proper relative paths

⚠️ Test Coverage

  • Build-Time Logic: This is build infrastructure code that typically doesn't need unit tests
  • Integration Testing: The telemetry system itself has proper initialization checks
  • No Additional Coverage Needed: The token replacement logic is straightforward and doesn't require dedicated tests

Architecture Context

The telemetry system works by:

  1. constants.ts defines a placeholder '<TELEMETRY_TRACKING_TOKEN>'
  2. Build process now uses post-build script to replace this placeholder with actual token from env var
  3. Runtime telemetry code uses the replaced token to initialize Mixpanel at packages/cli/src/telemetry.ts:48

Critical Recommendations

  1. 🚨 Remove Token Logging (High Priority):

    • File: packages/cli/scripts/post-build.ts:7 - Remove: console.log('TELEMETRY_TRACKING_TOKEN:', token);
    • File: .github/workflows/build-test.yml:69 - Remove: echo TOKEN $TELEMETRY_TRACKING_TOKEN &&
  2. Alternative Safe Logging:

    // Instead of logging the token value, log only its presence:
    console.log('TELEMETRY_TRACKING_TOKEN present:', !!token);
  3. File Path Issue:

    • File: packages/cli/scripts/post-build.ts:16 - The write operation uses a relative path while read uses absolute. Should be:
    fs.writeFileSync(path.join(_dirname, '..', file), updatedContent, 'utf-8');

Overall Assessment

🚨 Requires Security Fix: The implementation is functionally correct and well-structured, but must address the critical security issue of logging sensitive tokens before merging. The token exposure in both CI logs and build output could compromise the telemetry system's security.

Recommended Actions:

  1. Remove all token value logging immediately
  2. Fix the file path inconsistency in the post-build script
  3. Consider making token logging conditional on a debug flag if needed for troubleshooting

@claude
Copy link

claude bot commented Sep 4, 2025

Claude finished @ymc9's task —— View job


Code Review: Telemetry Token Fix

Reviewing this PR that fixes telemetry token configuration.

Todo List:

  • Read and analyze all changed files
  • Review code quality and best practices
  • Check for potential bugs or issues
  • Evaluate performance considerations
  • Assess security concerns
  • Review test coverage implications
  • Provide final feedback and recommendations

Change Summary:
The PR introduces a new post-build script (packages/cli/scripts/post-build.ts) that processes built files to replace telemetry token placeholders, modifies the build process to run this script, and adds CI logging of the telemetry token.

Code Review Findings

Code Quality & Best Practices

  • Clean Implementation: The post-build script follows good ESM practices with proper imports and file handling
  • Clear Separation of Concerns: Token replacement is isolated to a dedicated post-build step
  • Consistent Code Style: Follows the existing codebase patterns and uses modern Node.js APIs

🚨 CRITICAL Security Concerns

  • HIGH PRIORITY: Line 7 in packages/cli/scripts/post-build.ts and line 69 in .github/workflows/build-test.yml both log the telemetry tracking token to console/CI logs
  • This exposes sensitive credentials in build logs, CI/CD outputs, and potentially public GitHub Actions logs
  • The token appears to be a Mixpanel tracking token based on usage in packages/cli/src/telemetry.ts:48
  • While tracking tokens are less sensitive than API secrets, logging them still poses security risks

Performance Considerations

  • Minimal Impact: Token replacement happens at build time only, no runtime performance implications
  • Efficient Processing: Only processes the specific files that need token replacement
  • Clean File Operations: Uses synchronous file operations appropriately for build-time tasks

Potential Bugs

  • No Functional Issues: The implementation correctly handles file paths and token replacement
  • Proper Error Handling: The existing codebase has defensive checks for missing tokens
  • Path Resolution: Correctly uses ESM path resolution with fileURLToPath and proper relative paths

⚠️ Test Coverage

  • Build-Time Logic: This is build infrastructure code that typically doesn't need unit tests
  • Integration Testing: The telemetry system itself has proper initialization checks
  • No Additional Coverage Needed: The token replacement logic is straightforward and doesn't require dedicated tests

Architecture Context

The telemetry system works by:

  1. constants.ts defines a placeholder '<TELEMETRY_TRACKING_TOKEN>'
  2. Build process now uses post-build script to replace this placeholder with actual token from env var
  3. Runtime telemetry code uses the replaced token to initialize Mixpanel at packages/cli/src/telemetry.ts:48

Critical Recommendations

  1. 🚨 Remove Token Logging (High Priority):

    • File: packages/cli/scripts/post-build.ts:7 - Remove: console.log('TELEMETRY_TRACKING_TOKEN:', token?.[0]);
    • File: .github/workflows/build-test.yml:69 - Remove: echo TOKEN $TELEMETRY_TRACKING_TOKEN &&
  2. Alternative Safe Logging:

    // Instead of logging the token value, log only its presence:
    console.log('TELEMETRY_TRACKING_TOKEN present:', !!token);
  3. File Path Issue:

    • File: packages/cli/scripts/post-build.ts:16 - The write operation uses a relative path while read uses absolute. Should be:
    fs.writeFileSync(path.join(_dirname, '..', file), updatedContent, 'utf-8');

Overall Assessment

🚨 Requires Security Fix: The implementation is functionally correct and well-structured, but must address the critical security issue of logging sensitive tokens before merging. The token exposure in both CI logs and build output could compromise the telemetry system's security.

Recommended Actions:

  1. Remove all token value logging immediately
  2. Fix the file path inconsistency in the post-build script
  3. Consider making token logging conditional on a debug flag if needed for troubleshooting

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (2)
packages/cli/package.json (1)

25-25: Move post-build step to npm’s postbuild lifecycle
Split the scripts so npm runs the post-build automatically and tsx is available from the workspace root:

-        "build": "tsc --noEmit && tsup-node && tsx scripts/post-build.ts",
+        "build": "tsc --noEmit && tsup-node",
+        "postbuild": "tsx scripts/post-build.ts",

tsx is already declared in the root package.json (package.json:29), so it will be hoisted into the CLI package. For watch-mode builds, consider using tsup’s --onSuccess hook.

packages/cli/scripts/post-build.ts (1)

15-15: Replace all occurrences of the placeholder

If the placeholder appears multiple times, only the first gets replaced.

-    const updatedContent = content.replace('<TELEMETRY_TRACKING_TOKEN>', token);
+    const updatedContent = content.replaceAll('<TELEMETRY_TRACKING_TOKEN>', token);
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 4b20b3f and 34e9842.

📒 Files selected for processing (3)
  • packages/cli/package.json (1 hunks)
  • packages/cli/scripts/post-build.ts (1 hunks)
  • packages/cli/tsup.config.ts (0 hunks)
💤 Files with no reviewable changes (1)
  • packages/cli/tsup.config.ts
🧰 Additional context used
📓 Path-based instructions (1)
{packages,samples,tests}/**

📄 CodeRabbit inference engine (CLAUDE.md)

Packages are located in packages/, samples/, and tests/

Files:

  • packages/cli/scripts/post-build.ts
  • packages/cli/package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build-test (20.x)
  • GitHub Check: claude-review
🔇 Additional comments (1)
packages/cli/scripts/post-build.ts (1)

12-17: Add guardrails in post-build.ts: skip missing files, warn on absent placeholders, use correct absolute paths

for (const file of filesToProcess) {
-    const content = fs.readFileSync(path.join(_dirname, '..', file), 'utf-8');
-    const updatedContent = content.replace('<TELEMETRY_TRACKING_TOKEN>', token);
-    fs.writeFileSync(file, updatedContent, 'utf-8');
+    const absPath = path.join(_dirname, '..', file);
+    if (!fs.existsSync(absPath)) {
+        console.warn(`Skip: ${absPath} not found`);
+        continue;
+    }
+    const content = fs.readFileSync(absPath, 'utf-8');
+    const updatedContent = content.replaceAll('<TELEMETRY_TRACKING_TOKEN>', token);
+    if (updatedContent === content) console.warn(`Placeholder not found in ${file}`);
+    fs.writeFileSync(absPath, updatedContent, 'utf-8');
}

After building, verify no placeholders remain:

rg -n "<TELEMETRY_TRACKING_TOKEN>" packages/cli/dist || echo "OK: no placeholders found"

@claude
Copy link

claude bot commented Sep 4, 2025

Claude finished @ymc9's task —— View job


Code Review: Telemetry Token Fix

Reviewing this PR that fixes telemetry token configuration.

Todo List:

  • Read and analyze all changed files
  • Review code quality and best practices
  • Check for potential bugs or issues
  • Evaluate performance considerations
  • Assess security concerns
  • Review test coverage implications
  • Provide final feedback and recommendations

Change Summary:
The PR introduces a new post-build script (packages/cli/scripts/post-build.ts) that processes built files to replace telemetry token placeholders, modifies the build process to run this script, and adds CI logging of the telemetry token.

Code Review Findings

Code Quality & Best Practices

  • Clean Implementation: The post-build script follows good ESM practices with proper imports and file handling
  • Clear Separation of Concerns: Token replacement is isolated to a dedicated post-build step
  • Consistent Code Style: Follows the existing codebase patterns and uses modern Node.js APIs

🚨 CRITICAL Security Concerns

  • HIGH PRIORITY: Line 7 in packages/cli/scripts/post-build.ts and line 71 in .github/workflows/build-test.yml both log the telemetry tracking token to console/CI logs
  • This exposes sensitive credentials in build logs, CI/CD outputs, and potentially public GitHub Actions logs
  • The token appears to be a Mixpanel tracking token based on usage in packages/cli/src/telemetry.ts:48
  • While tracking tokens are less sensitive than API secrets, logging them still poses security risks

Performance Considerations

  • Minimal Impact: Token replacement happens at build time only, no runtime performance implications
  • Efficient Processing: Only processes the specific files that need token replacement
  • Clean File Operations: Uses synchronous file operations appropriately for build-time tasks

⚠️ Potential Bugs

  • Path Inconsistency: packages/cli/scripts/post-build.ts:14-16 - The read operation uses absolute paths but write uses relative paths, which could cause files to be written to the wrong location if CWD ≠ packages/cli
  • Incomplete Replacement: Line 15 uses replace() instead of replaceAll(), so only the first occurrence of the placeholder gets replaced

Test Coverage

  • Build-Time Logic: This is build infrastructure code that typically doesn't need unit tests
  • Integration Testing: The telemetry system itself has proper initialization checks
  • No Additional Coverage Needed: The token replacement logic is straightforward and doesn't require dedicated tests

Architecture Context

The telemetry system works by:

  1. constants.ts defines a placeholder '<TELEMETRY_TRACKING_TOKEN>'
  2. Build process now uses post-build script to replace this placeholder with actual token from env var
  3. Runtime telemetry code uses the replaced token to initialize Mixpanel at packages/cli/src/telemetry.ts:48

Critical Recommendations

  1. 🚨 Remove Token Logging (High Priority):

    • File: packages/cli/scripts/post-build.ts:7 - Remove: console.log('TELEMETRY_TRACKING_TOKEN:', token?.[0]);
    • File: .github/workflows/build-test.yml:71 - Remove: echo TOKEN $TELEMETRY_TRACKING_TOKEN &&
  2. Fix File Path Bug:

    • File: packages/cli/scripts/post-build.ts:16 - Use absolute path for write operation:
    const filePath = path.join(_dirname, '..', file);
    const content = fs.readFileSync(filePath, 'utf-8');
    const updatedContent = content.replaceAll('<TELEMETRY_TRACKING_TOKEN>', token);
    fs.writeFileSync(filePath, updatedContent, 'utf-8');
  3. Alternative Safe Logging:

    // Instead of logging the token value, log only its presence:
    console.log('TELEMETRY_TRACKING_TOKEN present:', !!token);

Overall Assessment

🚨 Requires Security Fix: The implementation is functionally correct and well-structured, but must address the critical security issue of logging sensitive tokens before merging. The token exposure in both CI logs and build output could compromise the telemetry system's security.

Recommended Actions:

  1. Remove all token value logging immediately
  2. Fix the file path inconsistency in the post-build script
  3. Use replaceAll() instead of replace() for complete token replacement
  4. Consider making token logging conditional on a debug flag if needed for troubleshooting

@claude
Copy link

claude bot commented Sep 4, 2025

Claude finished @ymc9's task —— View job


Code Review: Telemetry Token Fix

Reviewing this PR that fixes telemetry token configuration.

Todo List:

  • Read and analyze all changed files
  • Review code quality and best practices
  • Check for potential bugs or issues
  • Evaluate performance considerations
  • Assess security concerns
  • Review test coverage implications
  • Provide final feedback and recommendations

Change Summary:
The PR introduces a new post-build script (packages/cli/scripts/post-build.ts) that processes built files to replace telemetry token placeholders, modifies the build process to run this script, and adds CI logging of the telemetry token.

Code Review Findings

Code Quality & Best Practices

  • Clean Implementation: The post-build script follows good ESM practices with proper imports and file handling
  • Clear Separation of Concerns: Token replacement is isolated to a dedicated post-build step
  • Consistent Code Style: Follows the existing codebase patterns and uses modern Node.js APIs

🚨 CRITICAL Security Concerns

  • HIGH PRIORITY: Line 7 in packages/cli/scripts/post-build.ts and line 72 in .github/workflows/build-test.yml both log the telemetry tracking token to console/CI logs
  • This exposes sensitive credentials in build logs, CI/CD outputs, and potentially public GitHub Actions logs
  • The token appears to be a Mixpanel tracking token based on usage in packages/cli/src/telemetry.ts:48
  • While tracking tokens are less sensitive than API secrets, logging them still poses security risks

Performance Considerations

  • Minimal Impact: Token replacement happens at build time only, no runtime performance implications
  • Efficient Processing: Only processes the specific files that need token replacement
  • Clean File Operations: Uses synchronous file operations appropriately for build-time tasks

⚠️ Potential Bugs

  • Path Inconsistency: packages/cli/scripts/post-build.ts:14-16 - The read operation uses absolute paths but write uses relative paths, which could cause files to be written to the wrong location if CWD ≠ packages/cli
  • Incomplete Replacement: Line 15 uses replace() instead of replaceAll(), so only the first occurrence of the placeholder gets replaced

Test Coverage

  • Build-Time Logic: This is build infrastructure code that typically doesn't need unit tests
  • Integration Testing: The telemetry system itself has proper initialization checks
  • No Additional Coverage Needed: The token replacement logic is straightforward and doesn't require dedicated tests

Architecture Context

The telemetry system works by:

  1. constants.ts defines a placeholder '<TELEMETRY_TRACKING_TOKEN>'
  2. Build process now uses post-build script to replace this placeholder with actual token from env var
  3. Runtime telemetry code uses the replaced token to initialize Mixpanel at packages/cli/src/telemetry.ts:48

Critical Recommendations

  1. 🚨 Remove Token Logging (High Priority):

    • File: packages/cli/scripts/post-build.ts:7 - Remove: console.log('TELEMETRY_TRACKING_TOKEN:', token?.[0]);
    • File: .github/workflows/build-test.yml:72 - Remove: echo TOKEN $TELEMETRY_TRACKING_TOKEN
  2. Fix File Path Bug:

    • File: packages/cli/scripts/post-build.ts:16 - Use absolute path for write operation:
    const filePath = path.join(_dirname, '..', file);
    const content = fs.readFileSync(filePath, 'utf-8');
    const updatedContent = content.replaceAll('<TELEMETRY_TRACKING_TOKEN>', token);
    fs.writeFileSync(filePath, updatedContent, 'utf-8');
  3. Alternative Safe Logging:

    // Instead of logging the token value, log only its presence:
    console.log('TELEMETRY_TRACKING_TOKEN present:', !!token);

Overall Assessment

🚨 Requires Security Fix: The implementation is functionally correct and well-structured, but must address the critical security issue of logging sensitive tokens before merging. The token exposure in both CI logs and build output could compromise the telemetry system's security.

Recommended Actions:

  1. Remove all token value logging immediately
  2. Fix the file path inconsistency in the post-build script
  3. Use replaceAll() instead of replace() for complete token replacement
  4. Consider making token logging conditional on a debug flag if needed for troubleshooting

@claude
Copy link

claude bot commented Sep 4, 2025

Claude finished @ymc9's task —— View job


Code Review: Telemetry Token Fix

Reviewing this PR that fixes telemetry token configuration.

Todo List:

  • Read and analyze all changed files
  • Review code quality and best practices
  • Check for potential bugs or issues
  • Evaluate performance considerations
  • Assess security concerns
  • Review test coverage implications
  • Provide final feedback and recommendations

Change Summary:
The PR introduces a new post-build script (packages/cli/scripts/post-build.ts) that processes built files to replace telemetry token placeholders, modifies the build process to run this script, and adds CI logging of the telemetry token.

Code Review Findings

Code Quality & Best Practices

  • Clean Implementation: The post-build script follows good ESM practices with proper imports and file handling
  • Clear Separation of Concerns: Token replacement is isolated to a dedicated post-build step
  • Consistent Code Style: Follows the existing codebase patterns and uses modern Node.js APIs

🚨 CRITICAL Security Concerns

  • HIGH PRIORITY: Line 72 in .github/workflows/build-test.yml logs the telemetry tracking token to console/CI logs
  • This exposes sensitive credentials in build logs, CI/CD outputs, and potentially public GitHub Actions logs
  • The token appears to be a Mixpanel tracking token based on usage in packages/cli/src/telemetry.ts:48
  • While tracking tokens are less sensitive than API secrets, logging them still poses security risks

Performance Considerations

  • Minimal Impact: Token replacement happens at build time only, no runtime performance implications
  • Efficient Processing: Only processes the specific files that need token replacement
  • Clean File Operations: Uses synchronous file operations appropriately for build-time tasks

⚠️ Potential Bugs

  • Path Issue: packages/cli/scripts/post-build.ts:17 - Double path joining creates incorrect path: path.join(_dirname, '..', filePath) where filePath already includes path.join(_dirname, '..', file)
  • Incomplete Replacement: Line 18 uses replace() instead of replaceAll(), so only the first occurrence of the placeholder gets replaced

Test Coverage

  • Build-Time Logic: This is build infrastructure code that typically doesn't need unit tests
  • Integration Testing: The telemetry system itself has proper initialization checks
  • No Additional Coverage Needed: The token replacement logic is straightforward and doesn't require dedicated tests

Architecture Context

The telemetry system works by:

  1. constants.ts defines a placeholder '<TELEMETRY_TRACKING_TOKEN>'
  2. Build process now uses post-build script to replace this placeholder with actual token from env var
  3. Runtime telemetry code uses the replaced token to initialize Mixpanel at packages/cli/src/telemetry.ts:48

Critical Recommendations

  1. 🚨 Remove Token Logging (High Priority):

    • File: .github/workflows/build-test.yml:72 - Remove: echo TOKEN $TELEMETRY_TRACKING_TOKEN
  2. Fix File Path Bug:

    • File: packages/cli/scripts/post-build.ts:17 - Remove double path joining:
    const content = fs.readFileSync(filePath, 'utf-8');
  3. Use replaceAll for Complete Replacement:

    • File: packages/cli/scripts/post-build.ts:18 - Use replaceAll() instead of replace():
    const updatedContent = content.replaceAll('<TELEMETRY_TRACKING_TOKEN>', token);
  4. Alternative Safe Logging:

    // Instead of logging the token value, log only its presence:
    console.log('TELEMETRY_TRACKING_TOKEN present:', !!token);

Overall Assessment

🚨 Requires Security Fix: The implementation is functionally correct and well-structured, but must address the critical security issue of logging sensitive tokens before merging. The token exposure in both CI logs and build output could compromise the telemetry system's security.

Recommended Actions:

  1. Remove all token value logging immediately
  2. Fix the file path bug in the post-build script
  3. Use replaceAll() instead of replace() for complete token replacement
  4. Consider making token logging conditional on a debug flag if needed for troubleshooting

@claude
Copy link

claude bot commented Sep 4, 2025

Claude finished @ymc9's task —— View job


Code Review: Telemetry Token Fix

Reviewing this PR that fixes telemetry token configuration.

Todo List:

  • Read and analyze all changed files
  • Review code quality and best practices
  • Check for potential bugs or issues
  • Evaluate performance considerations
  • Assess security concerns
  • Review test coverage implications
  • Provide final feedback and recommendations

Change Summary:
The PR introduces a new post-build script (packages/cli/scripts/post-build.ts) that processes built files to replace telemetry token placeholders, modifies the build process to run this script, and updates CI workflows accordingly.

Code Review Findings

Code Quality & Best Practices

  • Clean Implementation: The post-build script follows good ESM practices with proper imports and file handling
  • Clear Separation of Concerns: Token replacement is isolated to a dedicated post-build step that runs after the main build
  • Consistent Code Style: Follows the existing codebase patterns and uses modern Node.js APIs
  • Proper Architecture: The approach of build-time token replacement is sound and follows security best practices

⚠️ Potential Bugs

  • Path Inconsistency: packages/cli/scripts/post-build.ts:17 - The script has a bug where it reads from a double-nested path: path.join(_dirname, '..', filePath) where filePath already contains path.join(_dirname, '..', file). This results in reading from an incorrect path.
  • Incomplete Replacement: Line 18 uses replace() instead of replaceAll(), so only the first occurrence of the placeholder gets replaced if there are multiple instances
  • Missing Error Handling: No error handling if files don't exist or if file operations fail

Performance Considerations

  • Minimal Impact: Token replacement happens at build time only, no runtime performance implications
  • Efficient Processing: Only processes the specific files that need token replacement (dist/index.js, dist/index.cjs)
  • Clean File Operations: Uses synchronous file operations appropriately for build-time tasks

Security Concerns

  • Good Security Practice: No token logging in the current implementation (previous versions had this issue but it's been resolved)
  • Environment Variable Handling: Properly reads token from environment variables without exposing it
  • Build-Time Replacement: The approach of replacing placeholders at build time is secure

Test Coverage

  • Build Infrastructure: This is build infrastructure code that typically doesn't need unit tests
  • Integration Coverage: The telemetry system itself has proper initialization checks at packages/cli/src/telemetry.ts:47-48
  • No Additional Coverage Needed: The token replacement logic is straightforward and gets validated through the build process

Architecture Context

The telemetry system works by:

  1. constants.ts defines a placeholder '<TELEMETRY_TRACKING_TOKEN>'
  2. Build process now uses post-build script to replace this placeholder with actual token from env var
  3. Runtime telemetry code uses the replaced token to initialize Mixpanel at packages/cli/src/telemetry.ts:48

Recommendations

  1. Fix Path Bug (High Priority):

    • File: packages/cli/scripts/post-build.ts:17 - Fix the double path joining:
    const filePath = path.join(_dirname, '..', file);
    const content = fs.readFileSync(filePath, 'utf-8');
    const updatedContent = content.replaceAll('<TELEMETRY_TRACKING_TOKEN>', token);
    fs.writeFileSync(filePath, updatedContent, 'utf-8');
  2. Use replaceAll() for Complete Replacement:

    • File: packages/cli/scripts/post-build.ts:18 - Use replaceAll() to ensure all occurrences are replaced
  3. Add Error Handling (Optional):

    for (const file of filesToProcess) {
        const filePath = path.join(_dirname, '..', file);
        if (!fs.existsSync(filePath)) {
            console.warn(`Warning: ${filePath} not found, skipping...`);
            continue;
        }
        // ... rest of processing
    }

Overall Assessment

Good Implementation with Minor Fixes Needed: The overall approach is sound and addresses the telemetry token configuration correctly. The main issue is a path handling bug that could cause the script to fail. Once fixed, this provides a clean separation between build configuration and token injection.

The implementation successfully:

  • Removes the need for complex tsup configuration hooks
  • Provides a dedicated post-build step that's easy to understand
  • Maintains security by not exposing tokens in logs
  • Follows the existing codebase patterns and conventions

@claude
Copy link

claude bot commented Sep 4, 2025

Claude finished @ymc9's task —— View job


Code Review: Telemetry Token Fix

Reviewing this PR that fixes telemetry token configuration.

Todo List:

  • Read and analyze all changed files
  • Review code quality and best practices
  • Check for potential bugs or issues
  • Evaluate performance considerations
  • Assess security concerns
  • Review test coverage implications
  • Provide final feedback and recommendations

Change Summary:
The PR introduces a new post-build script (packages/cli/scripts/post-build.ts) that processes built files to replace telemetry token placeholders, modifies the build process to run this script, and updates CI workflows accordingly.

Code Review Findings

Code Quality & Best Practices

  • Clean Implementation: The post-build script follows good ESM practices with proper imports and file handling
  • Clear Separation of Concerns: Token replacement is isolated to a dedicated post-build step that runs after the main build
  • Consistent Code Style: Follows the existing codebase patterns and uses modern Node.js APIs
  • Proper Architecture: The approach of build-time token replacement is sound and follows security best practices

⚠️ Potential Bugs

  • Incomplete Replacement: packages/cli/scripts/post-build.ts:18 - Line 18 uses replace() instead of replaceAll(), so only the first occurrence of the placeholder gets replaced if there are multiple instances
  • Missing Error Handling: No error handling if files don't exist or if file operations fail

Performance Considerations

  • Minimal Impact: Token replacement happens at build time only, no runtime performance implications
  • Efficient Processing: Only processes the specific files that need token replacement (dist/index.js, dist/index.cjs)
  • Clean File Operations: Uses synchronous file operations appropriately for build-time tasks

Security Concerns

  • Good Security Practice: No token logging in the current implementation (previous versions had this issue but it's been resolved)
  • Environment Variable Handling: Properly reads token from environment variables without exposing it
  • Build-Time Replacement: The approach of replacing placeholders at build time is secure

Test Coverage

  • Build Infrastructure: This is build infrastructure code that typically doesn't need unit tests
  • Integration Coverage: The telemetry system itself has proper initialization checks at packages/cli/src/telemetry.ts:47-48
  • No Additional Coverage Needed: The token replacement logic is straightforward and gets validated through the build process

Architecture Context

The telemetry system works by:

  1. constants.ts defines a placeholder '<TELEMETRY_TRACKING_TOKEN>'
  2. Build process now uses post-build script to replace this placeholder with actual token from env var
  3. Runtime telemetry code uses the replaced token to initialize Mixpanel at packages/cli/src/telemetry.ts:48

Recommendations

  1. Fix Incomplete Replacement (High Priority):

    • File: packages/cli/scripts/post-build.ts:18 - Use replaceAll() to ensure all occurrences are replaced:
    const updatedContent = content.replaceAll('<TELEMETRY_TRACKING_TOKEN>', token);
  2. Add Error Handling (Optional):

    for (const file of filesToProcess) {
        const filePath = path.join(_dirname, '..', file);
        if (!fs.existsSync(filePath)) {
            console.warn(`Warning: ${filePath} not found, skipping...`);
            continue;
        }
        // ... rest of processing
    }

Overall Assessment

Good Implementation with Minor Fixes Needed: The overall approach is sound and addresses the telemetry token configuration correctly. The main issue is a potential incomplete replacement that could cause the script to miss some occurrences. Once fixed, this provides a clean separation between build configuration and token injection.

The implementation successfully:

  • Removes the need for complex tsup configuration hooks
  • Provides a dedicated post-build step that's easy to understand
  • Maintains security by not exposing tokens in logs
  • Follows the existing codebase patterns and conventions

@ymc9 ymc9 merged commit b02958d into dev Sep 4, 2025
4 checks passed
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.

2 participants