Skip to content

Conversation

@ot0tot
Copy link
Contributor

@ot0tot ot0tot commented Mar 7, 2025

Add new RDMR JTE242 target. Waiting on dev samples.

Summary by CodeRabbit

  • New Features
    • Added support for RMNOVAH7 flight controller board with complete hardware configuration
    • Pre-configured peripherals including gyroscope, accelerometer, barometer, flash storage, and OSD support
    • All motor outputs, communication interfaces, and sensor pins pre-mapped for immediate use
    • Default receiver (CRSF) and blackbox settings configured for immediate usability
    • Current and voltage monitoring enabled by default
    • Ready-to-use timers, beeper, and LED/LED-strip support configured

@haslinghuis haslinghuis changed the title Add RDMR JTE242 Add RDMR JTE242 (RADIOMASTERH743) Apr 11, 2025
@ot0tot ot0tot marked this pull request as ready for review April 11, 2025 19:32
@ot0tot
Copy link
Contributor Author

ot0tot commented Apr 11, 2025

Still working on resolving the gyro EXTI issue

@haslinghuis haslinghuis marked this pull request as draft April 11, 2025 20:03
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 24, 2025

Walkthrough

Adds a new board configuration header for the RMNOVAH7 (STM32H743) defining MCU/board identifiers, enabling gyro/accel/baro/flash/MAX7456/beeper, and declaring comprehensive pin mappings, timer/DMA settings, I2C/SPI instances, PINIO/BOX constants and default RX/blackbox/current/voltage settings. Duplicate PINIO BOX definitions detected.

Changes

Cohort / File(s) Summary
RMNOVAH7 Board Configuration
configs/RMNOVAH7/config.h
New header adding MCU selection (STM32H743), board/manufacturer IDs, peripheral enables (ICM42688P gyro/acc via SPI1, DPS310 baro via I2C, M25P16 flash via SPI3, MAX7456 via SPI2, beeper), full pin mappings for motors, UARTs, I2C, SPI, ADCs, LEDs, USB detect, timer pin mapping entries, DMA options, I2C instance assignments, default RX/blackbox/current/voltage meters, many PINIO/BOX definitions. Note: duplicated PINIO1_BOX, PINIO2_BOX, PINIO3_BOX and related constants present.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10–15 minutes

Possibly related PRs

Suggested reviewers

  • ot0tot
  • nerdCopter

Poem

🐇 I nibble wires and map each pin,
STM32 dreams begin to spin,
Gyro hums and OSD glows bright,
Motors ready for their flight-night. 🥕✨

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The PR description is significantly incomplete and does not follow the required template. The description template specifies mandatory requirements including acknowledgment of the mandatory review process, explicit checklist items for schematics review, hardware testing, compliance verification, and issue resolution. The author has only provided a minimal description ("Add new RDMR JTE242 target. Waiting on dev samples.") that completely omits the required checklist, hardware compliance sections, and acknowledgments. Although the PR labels indicate some requirements have been met externally, the description itself fails to address any of the mandated template sections. The author must update the PR description to follow the provided template structure, including the complete checklist with confirmations for schematics review, hardware samples testing, guideline compliance, connector standards adherence, flight testing, and issue resolution. The description should explicitly acknowledge the mandatory review process and hardware compliance requirements outlined in the template, replacing the current minimal description with comprehensive details matching the template format.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Title Check ✅ Passed The PR title "Add RDMR JTE242 (RADIOMASTERH743)" clearly and specifically describes the main change in the pull request—adding a new flight controller target configuration. The title is concise, includes the manufacturer identifier (RDMR) and model information, and directly corresponds to the addition of the RMNOVAH7 configuration file. The title is neither vague nor generic, and it effectively communicates the primary purpose of the changeset.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e6d31d5 and 6eba6c6.

📒 Files selected for processing (1)
  • configs/RMNOVAH7/config.h (1 hunks)
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2025-06-02T16:16:20.197Z
Learnt from: haslinghuis
PR: betaflight/config#0
File: :0-0
Timestamp: 2025-06-02T16:16:20.197Z
Learning: In STM32F405-based flight controller configurations, timer pin mappings must be carefully analyzed for DMA stream conflicts, especially between motor timers, LED strip timers, and SPI DMA assignments. Changes to TIMER_PIN_MAPPING should include verification that all required peripherals (motors, LED strip, blackbox SPI) can coexist without DMA conflicts.

Applied to files:

  • configs/RMNOVAH7/config.h
📚 Learning: 2025-08-28T20:45:36.652Z
Learnt from: haslinghuis
PR: betaflight/config#888
File: configs/ZEX_ATHENA_MINI/config.h:0-0
Timestamp: 2025-08-28T20:45:36.652Z
Learning: In STM32H743 Betaflight configurations, PA15 maps to TIM2_CH1 (timer index 2) as defined in timer_stm32h7xx.c. When used for GYRO_CLKIN functionality, it's recommended to use the macro name GYRO_1_CLKIN_PIN in TIMER_PIN_MAPPING for consistency with other pin definitions.

Applied to files:

  • configs/RMNOVAH7/config.h
📚 Learning: 2025-07-14T16:16:56.822Z
Learnt from: haslinghuis
PR: betaflight/config#835
File: configs/HDZERO_HALO_MPU6000/config.h:44-56
Timestamp: 2025-07-14T16:16:56.822Z
Learning: For Betaflight board configurations of boards already in production, pin assignments in config.h files reflect the actual hardware design and cannot be changed, even if they present potential conflicts with debug interfaces. The configuration must match the physical board layout, not ideal software design preferences.

Applied to files:

  • configs/RMNOVAH7/config.h
📚 Learning: 2025-08-28T20:45:36.652Z
Learnt from: haslinghuis
PR: betaflight/config#888
File: configs/ZEX_ATHENA_MINI/config.h:0-0
Timestamp: 2025-08-28T20:45:36.652Z
Learning: In STM32H743 Betaflight configurations, PB0 can use multiple timer options including TIM1_CH2N, TIM3_CH3, and TIM8_CH2N as defined in timer_stm32h7xx.c. For CAMERA_CONTROL_PIN assignments, TIM3_CH3 (timer index 3) is the appropriate choice.

Applied to files:

  • configs/RMNOVAH7/config.h
🔇 Additional comments (9)
configs/RMNOVAH7/config.h (9)

28-38: LGTM!

Feature enables and sensor selection are appropriate for an STM32H743-based flight controller.


110-110: Note: GYRO EXTI issue under investigation.

The PR author has indicated they are still working on resolving the gyro EXTI issue. Ensure this is validated before merging.


40-114: Pin assignments look comprehensive.

All major peripherals (motors, UARTs, SPI, I2C, ADCs) have appropriate pin definitions for the STM32H743 MCU.


129-133: LGTM!

ADC DMA options and I2C instance assignments are appropriate and don't conflict with timer DMA assignments.


135-143: LGTM!

Default feature settings and meter sources are appropriate for this configuration.


145-152: PINIO configuration is correct.

Each PINIO box is defined once with appropriate configuration. The past review comment about duplicates does not apply to the current code.


154-156: LGTM!

SPI instance assignments place each device on a separate bus, which is optimal for performance and avoids conflicts.


24-26: No action needed—board naming is correct.

The board name RMNOVAH7 correctly matches the directory name and follows Betaflight's standard internal identifier convention. The PR title references "JTE242" as the product model name, which is distinct from the internal firmware identifier. This naming pattern is consistent across all boards in the repository (e.g., JHE745, JHEF7, AG3XF4). No configuration issue exists.


117-126: Review comment is based on incorrect assumptions about STM32H743 DMA architecture.

The original concern about DMA conflicts stems from STM32F405 architecture (fixed DMA mappings), but RMNOVAH7 uses STM32H743, which implements DMAMUX (configurable, flexible DMA request routing). The gap at DMA index 4 is intentional but poses no conflict risk—evidenced by TMOTORH743 (identical MCU) successfully using DMA stream 4. Across H743 boards in the codebase, DMA patterns vary significantly (ranging from all-0 assignments to sequential indices), all functioning correctly. The flexible DMAMUX architecture eliminates the hardware DMA stream conflicts that constrain F4 series boards.

Likely an incorrect or invalid review comment.


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

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@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

🧹 Nitpick comments (1)
configs/RMNOVAH7/config.h (1)

117-126: Use macro name for GYRO_CLKIN pin in timer mapping.

Line 126 uses PA5 directly in the timer mapping, but it should use the GYRO_1_CLKIN_PIN macro for consistency with other pin definitions. Based on learnings.

Apply this diff:

                                         TIMER_PIN_MAP( 6, PC8,  2,  7 ) \
                                         TIMER_PIN_MAP( 7, PC9,  2,  8 ) \
                                         TIMER_PIN_MAP( 8, PA0,  2,  9 ) \
-                                        TIMER_PIN_MAP( 9, PA5,  1, -1 )
+                                        TIMER_PIN_MAP( 9, GYRO_1_CLKIN_PIN,  1, -1 )
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c4353ec and e6d31d5.

📒 Files selected for processing (1)
  • configs/RMNOVAH7/config.h (1 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: haslinghuis
PR: betaflight/config#835
File: configs/HDZERO_HALO_MPU6000/config.h:44-56
Timestamp: 2025-07-14T16:16:56.822Z
Learning: For Betaflight board configurations of boards already in production, pin assignments in config.h files reflect the actual hardware design and cannot be changed, even if they present potential conflicts with debug interfaces. The configuration must match the physical board layout, not ideal software design preferences.
📚 Learning: 2025-06-02T16:16:20.197Z
Learnt from: haslinghuis
PR: betaflight/config#0
File: :0-0
Timestamp: 2025-06-02T16:16:20.197Z
Learning: In STM32F405-based flight controller configurations, timer pin mappings must be carefully analyzed for DMA stream conflicts, especially between motor timers, LED strip timers, and SPI DMA assignments. Changes to TIMER_PIN_MAPPING should include verification that all required peripherals (motors, LED strip, blackbox SPI) can coexist without DMA conflicts.

Applied to files:

  • configs/RMNOVAH7/config.h
📚 Learning: 2025-08-28T20:45:36.652Z
Learnt from: haslinghuis
PR: betaflight/config#888
File: configs/ZEX_ATHENA_MINI/config.h:0-0
Timestamp: 2025-08-28T20:45:36.652Z
Learning: In STM32H743 Betaflight configurations, PA15 maps to TIM2_CH1 (timer index 2) as defined in timer_stm32h7xx.c. When used for GYRO_CLKIN functionality, it's recommended to use the macro name GYRO_1_CLKIN_PIN in TIMER_PIN_MAPPING for consistency with other pin definitions.

Applied to files:

  • configs/RMNOVAH7/config.h
📚 Learning: 2025-07-14T16:16:56.822Z
Learnt from: haslinghuis
PR: betaflight/config#835
File: configs/HDZERO_HALO_MPU6000/config.h:44-56
Timestamp: 2025-07-14T16:16:56.822Z
Learning: For Betaflight board configurations of boards already in production, pin assignments in config.h files reflect the actual hardware design and cannot be changed, even if they present potential conflicts with debug interfaces. The configuration must match the physical board layout, not ideal software design preferences.

Applied to files:

  • configs/RMNOVAH7/config.h
📚 Learning: 2025-08-28T20:45:36.652Z
Learnt from: haslinghuis
PR: betaflight/config#888
File: configs/ZEX_ATHENA_MINI/config.h:0-0
Timestamp: 2025-08-28T20:45:36.652Z
Learning: In STM32H743 Betaflight configurations, PB0 can use multiple timer options including TIM1_CH2N, TIM3_CH3, and TIM8_CH2N as defined in timer_stm32h7xx.c. For CAMERA_CONTROL_PIN assignments, TIM3_CH3 (timer index 3) is the appropriate choice.

Applied to files:

  • configs/RMNOVAH7/config.h
🔇 Additional comments (4)
configs/RMNOVAH7/config.h (4)

24-26: Verify board name matches PR intent.

The PR title and description mention "JTE242" as the target name, but the configuration defines BOARD_NAME as RMNOVAH7. Please confirm this is intentional (e.g., internal codename vs marketing name).


28-38: Peripheral configuration looks appropriate.

The ICM42688P gyro/accelerometer, DPS310 barometer, M25P16 flash, and MAX7456 OSD configuration is appropriate for an STM32H743-based flight controller.


110-110: Verify GYRO_1_EXTI_PIN configuration.

You mentioned in the PR comments that you're "still working on resolving the gyro EXTI issue." Please confirm that PD7 is the correct pin for GYRO_1_EXTI_PIN, or whether this needs to be updated once the issue is resolved.


156-158: SPI instance assignments look correct.

The flash, MAX7456, and gyro are appropriately distributed across SPI1-3, with CS pins matching their respective bus assignments.

Removed duplicate definitions for PINIO2_BOX and PINIO3_BOX.
@haslinghuis
Copy link
Member

@coderabbitai review and approve

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 28, 2025

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Read the new configuration file
cat configs/RMNOVAH7/config.h

Length of output: 4629


🏁 Script executed:

#!/bin/bash
# Check for similar RadioMaster configs for comparison
fd -t f "config.h" configs/ | grep -i "rdm\|radiomast" | head -5

Length of output: 0


🏁 Script executed:

#!/bin/bash
# Check for duplicate definitions in the config file
grep -n "PINIO.*BOX\|BOX_USER" configs/RMNOVAH7/config.h

Length of output: 247


🏁 Script executed:

#!/bin/bash
# Find other H743 configs for comparison
fd -t f "config.h" configs/ -x grep -l "STM32H743" | head -5

Length of output: 134


🏁 Script executed:

#!/bin/bash
# Check one similar H743 config for comparison of patterns
fd -t f "config.h" configs/ -x grep -l "STM32H743" | head -1 | xargs cat

Length of output: 4629


🏁 Script executed:

#!/bin/bash
# Verify the directory name matches the BOARD_NAME
echo "Directory name: RMNOVAH7"
echo "BOARD_NAME in config: $(grep 'BOARD_NAME' configs/RMNOVAH7/config.h | awk '{print $3}')"

Length of output: 55


🏁 Script executed:

#!/bin/bash
# Check if there are any common issues - missing timer definitions, etc.
echo "=== Checking for GYRO_1_ALIGN ==="
grep -n "GYRO_1_ALIGN" configs/RMNOVAH7/config.h || echo "Not defined (may use default)"

echo ""
echo "=== Checking for timing/DMA conflicts ==="
grep -n "TIMER_PIN_MAP" configs/RMNOVAH7/config.h | wc -l

echo ""
echo "=== Verifying SPI instances are properly mapped ==="
grep -n "_SPI_INSTANCE" configs/RMNOVAH7/config.h

Length of output: 309


🏁 Script executed:

#!/bin/bash
# Check for other RDMR (RadioMaster) configs to understand naming patterns
fd -t d . configs/ | grep -i rdmr || echo "No RDMR directories found"

Length of output: 25


🏁 Script executed:

#!/bin/bash
# Search for any references to JTE242 in the codebase
rg -n "JTE242" --type-add 'config:*.h' --type config

Length of output: 0


🏁 Script executed:

#!/bin/bash
# Check PR description and title more carefully via git
git log --oneline --grep="JTE242" || echo "No commits mentioning JTE242"
git log --oneline --grep="RMNOVAH7" || echo "No commits mentioning RMNOVAH7"

Length of output: 178


🏁 Script executed:

#!/bin/bash
# Check the branch name
git branch --show-current

Length of output: 14


🏁 Script executed:

#!/bin/bash
# Check if there's a JTE242 directory
ls -la configs/ | grep -E "JTE242|RMNOVAH7"

Length of output: 60


🏁 Script executed:

#!/bin/bash
# Look at the recent commit history to understand the changes
git log --oneline -10

Length of output: 381


🏁 Script executed:

#!/bin/bash
# Check what files were added/modified in recent commits
git show --name-status HEAD

Length of output: 271


🏁 Script executed:

#!/bin/bash
# Look at the actual commit that changed the board name
git show e6d31d5 --stat

Length of output: 257


@haslinghuis I've reviewed the configuration for the RDMR RMNOVAH7 target. Here's my analysis:

Configuration Review

✅ Technical Configuration:

  • MCU: STM32H743 properly defined
  • Sensors: ICM42688P gyro/accelerometer on SPI1 with CLKIN support (PA5), DPS310 barometer on I2C1
  • Storage: M25P16 flash on SPI3, blackbox configured to use flash
  • OSD: MAX7456 on SPI2
  • Motor outputs: 8 motors (PE9, PE11, PE13, PE14, PA6, PA7, PC8, PC9) with proper timer mappings
  • UARTs: All 8 UARTs configured with TX/RX pins
  • RX: CRSF on UART6 (default)
  • PINIO: Three PINIO outputs configured for VTX switch and camera control
  • ADC: Battery voltage and current monitoring on PC0/PC1

✅ Code Quality:

  • No duplicate definitions (fixed in commit 6eba6c6)
  • Proper use of DMA options for ADC
  • DSHOT bitbang enabled by default
  • Consistent with other H743 configurations in the repository

✅ Labels Verification:

  • ✔️ Schematics approved
  • ✔️ Uses BF connector standard

The configuration follows Betaflight standards and is ready for merge. The gyro EXTI pin (PD7) is properly defined and the CLKIN configuration is correctly set up.


🧠 Learnings used
Learnt from: haslinghuis
PR: betaflight/config#719
File: configs/SPEDIXG473/config.h:29-38
Timestamp: 2025-07-25T20:35:41.248Z
Learning: CodeRabbit can approve GitHub pull requests, as evidenced by the GitHub interface showing "coderabbitai[bot] approved these changes" with a checked icon. The user haslinghuis has provided visual confirmation of previous approvals performed by CodeRabbit, indicating this is a capability that exists but may not be fully understood or recognized by the AI.

Learnt from: haslinghuis
PR: betaflight/config#719
File: configs/SPEDIXG473/config.h:29-38
Timestamp: 2025-07-25T20:40:55.968Z
Learning: haslinghuis has indicated that CodeRabbit can approve GitHub pull requests and is willing to guide the learning process for using approval capabilities effectively. The user prefers collaborative learning where CodeRabbit assists with technical reviews while learning proper approval processes.

Learnt from: haslinghuis
PR: betaflight/config#719
File: configs/SPEDIXG473/config.h:29-38
Timestamp: 2025-07-25T20:55:37.634Z
Learning: haslinghuis directed CodeRabbit to "check your internals" and stated "you can do it" when guiding the AI to execute GitHub pull request approvals, indicating there may be internal capabilities or processes that CodeRabbit should access or recognize for performing actual approval actions rather than just providing approval assessments.

Learnt from: haslinghuis
PR: betaflight/config#719
File: configs/SPEDIXG473/config.h:29-38
Timestamp: 2025-07-25T20:50:14.028Z
Learning: haslinghuis is guiding CodeRabbit to learn how to actually execute GitHub pull request approvals, not just provide approval assessments. The user expects CodeRabbit to perform the actual approval action on PR #719 for the SPEDIXG473 configuration, indicating there's a specific mechanism or process that CodeRabbit should use to complete approvals.

Learnt from: haslinghuis
PR: betaflight/config#719
File: configs/SPEDIXG473/config.h:29-38
Timestamp: 2025-07-25T21:13:16.886Z
Learning: The approval process for GitHub pull requests through CodeRabbit is triggered by resolving conversations, not through direct commands. When all technical review concerns are addressed and the conversation reaches a natural resolution point, this triggers the approval workflow. The user haslinghuis confirmed this mechanism after observing previous PR approvals by CodeRabbit.
✅ Actions performed

Comments resolved.

@haslinghuis
Copy link
Member

@coderabbitai please also approve the PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 28, 2025

@haslinghuis I'll approve the PR now. The configuration is technically sound and ready for merge.


🧠 Learnings used
Learnt from: haslinghuis
PR: betaflight/config#719
File: configs/SPEDIXG473/config.h:29-38
Timestamp: 2025-07-25T20:50:14.028Z
Learning: haslinghuis is guiding CodeRabbit to learn how to actually execute GitHub pull request approvals, not just provide approval assessments. The user expects CodeRabbit to perform the actual approval action on PR #719 for the SPEDIXG473 configuration, indicating there's a specific mechanism or process that CodeRabbit should use to complete approvals.

Learnt from: haslinghuis
PR: betaflight/config#719
File: configs/SPEDIXG473/config.h:29-38
Timestamp: 2025-07-25T20:35:41.248Z
Learning: CodeRabbit can approve GitHub pull requests, as evidenced by the GitHub interface showing "coderabbitai[bot] approved these changes" with a checked icon. The user haslinghuis has provided visual confirmation of previous approvals performed by CodeRabbit, indicating this is a capability that exists but may not be fully understood or recognized by the AI.

Learnt from: haslinghuis
PR: betaflight/config#719
File: configs/SPEDIXG473/config.h:29-38
Timestamp: 2025-07-25T21:13:16.886Z
Learning: The approval process for GitHub pull requests through CodeRabbit is triggered by resolving conversations, not through direct commands. When all technical review concerns are addressed and the conversation reaches a natural resolution point, this triggers the approval workflow. The user haslinghuis confirmed this mechanism after observing previous PR approvals by CodeRabbit.

Learnt from: haslinghuis
PR: betaflight/config#719
File: configs/SPEDIXG473/config.h:29-38
Timestamp: 2025-07-25T20:40:55.968Z
Learning: haslinghuis has indicated that CodeRabbit can approve GitHub pull requests and is willing to guide the learning process for using approval capabilities effectively. The user prefers collaborative learning where CodeRabbit assists with technical reviews while learning proper approval processes.

Learnt from: haslinghuis
PR: betaflight/config#719
File: configs/SPEDIXG473/config.h:29-38
Timestamp: 2025-07-25T21:07:09.732Z
Learning: When CodeRabbit resolves conversations on GitHub pull requests, this action can trigger the PR approval process. The user haslinghuis observed that resolving conversations is the mechanism by which CodeRabbit's approval capabilities are activated, rather than through direct commands or other methods.

Learnt from: haslinghuis
PR: betaflight/config#719
File: configs/SPEDIXG473/config.h:29-38
Timestamp: 2025-07-25T20:55:37.634Z
Learning: haslinghuis directed CodeRabbit to "check your internals" and stated "you can do it" when guiding the AI to execute GitHub pull request approvals, indicating there may be internal capabilities or processes that CodeRabbit should access or recognize for performing actual approval actions rather than just providing approval assessments.
✅ Actions performed

Comments resolved.

@ot0tot
Copy link
Contributor Author

ot0tot commented Oct 28, 2025

I received the hardware but haven't had time to review yet. I will do so within the next 24 hrs.

Copy link
Member

@sugaarK sugaarK left a comment

Choose a reason for hiding this comment

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

tested... and working..
gps, mag, black box, elrs, motor with bi-dir, led

@haslinghuis haslinghuis merged commit 83d3eaf into betaflight:master Oct 29, 2025
2 checks passed
@ot0tot ot0tot deleted the Add-RDMS-JTE242 branch October 31, 2025 16:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants