Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
c4d4d88
Remove legacy hdzero special case
mmosca Dec 15, 2024
daa1ff6
add HAKRCH743 target
niepingyu Dec 15, 2025
aba749b
Update src/main/target/HAKRCH743/target.c
HAKRC8899 Dec 16, 2025
77aac46
Update target.c
HAKRC8899 Dec 16, 2025
fb9a0f8
Rename profile commands to control_profile
MrD-RC Jan 30, 2026
b1cbc45
add vbatt warning to multifunction
breadoven Feb 2, 2026
ecfd1a9
Update osd.c
breadoven Feb 3, 2026
1cfcbb1
Update osd.c
breadoven Feb 3, 2026
c53fb5d
fix batt voltage state inconsistency
breadoven Feb 3, 2026
342eeee
remove blinking
breadoven Feb 3, 2026
497cb3a
fix: flght controller hard fault caused by insufficient CRSF rx buffe…
KeithCoreDumped Jan 20, 2026
4c4430e
fix data length overflow
KeithCoreDumped Feb 4, 2026
9225369
fix: resolve MSP connection hangs due to packet truncation and buffer…
KeithCoreDumped Feb 4, 2026
24275c0
Mark 16 legacy MSP commands as deprecated for removal in INAV 10.0
sensei-hacker Feb 8, 2026
435e489
msp_protocol.h change depreciation comment format
sensei-hacker Feb 8, 2026
b4ca845
Fix servo throttle mix outputting wrong position when disarmed
sensei-hacker Feb 9, 2026
31bb99e
Fix SD card busy-wait loops that can lock up flight controller
sensei-hacker Feb 9, 2026
321e8e6
Add error handling when SDIO DMA fails to disable
sensei-hacker Feb 9, 2026
3529fcd
Brahma H7 target files
Feb 12, 2026
cb834eb
NEW_HARDWARE_POLICY.md: Use Discord rather than email
sensei-hacker Feb 15, 2026
3dd3fc7
change default cycle time
breadoven Feb 16, 2026
1d370a6
Add SDMODELH7V2 target (STM32H743)
sensei-hacker Feb 17, 2026
3a93f24
SDMODELH7V2: replace camera control with USER1/USER2 PINIO, preset UA…
sensei-hacker Feb 17, 2026
1a1b420
Bugfix: SDIO capacity shows incorrectly on F4 devices
cluez0r Feb 20, 2026
3a3709d
Fix USB VCP lockup on disconnect (STM32F4)
daijoubu Feb 21, 2026
692d640
Fix USB VCP lockup on disconnect (STM32F7/H7)
daijoubu Feb 21, 2026
502095a
Fix CDC_Send_FreeBytes buffer calculation (STM32F4)
daijoubu Feb 21, 2026
bc91386
Add DTR tracking for USB VCP connection detection
daijoubu Feb 21, 2026
5a81c9b
Add suspend detection as disconnect fallback (STM32F4)
daijoubu Feb 21, 2026
bf81e90
Fix DTR tracking default - assume connected initially
daijoubu Feb 21, 2026
e17b50b
SDMODELH7V2: COnfigure PINIO and Bluetooth arming control
sensei-hacker Feb 22, 2026
1fca72e
Update navigation_multicopter.c
breadoven Feb 22, 2026
9e4bb24
Merge pull request #11341 from sensei-hacker/target/sdmodelh7v2
sensei-hacker Feb 28, 2026
edf04d2
Add Loiter to LED control on mode flight
John-Henrique Feb 28, 2026
d91f591
Merge pull request #11333 from iNavFlight/sensei-hacker-patch-6
sensei-hacker Mar 1, 2026
7ec7f0d
Remove HD_3016 from resolutionType_e enum
sensei-hacker Mar 1, 2026
cfdcbeb
Merge pull request #10540 from iNavFlight/mmosca-remove-hdzero-specia…
sensei-hacker Mar 1, 2026
b52c6f7
CI: publish PR test builds to iNavFlight/pr-test-builds
sensei-hacker Mar 1, 2026
37e02bd
CI: address code review findings in pr-test-builds workflow
sensei-hacker Mar 1, 2026
e5bcf83
Mark MSP_STATUS, MSP_DEBUG, and blackbox config commands as deprecated
sensei-hacker Mar 1, 2026
1aec36a
Mark MSP_STATUS_EX as deprecated; accCalibAxisFlags in MSP_CALIBRATIO…
sensei-hacker Mar 1, 2026
7cbd46a
Merge pull request #11381 from sensei-hacker/feature/pr-test-builds
sensei-hacker Mar 1, 2026
8099ece
Merge pull request #11382 from iNavFlight/maintenance-9.x
sensei-hacker Mar 1, 2026
aa2fefc
cmake/sitl: use CheckLinkerFlag instead of GCC version check for --no…
sensei-hacker Mar 1, 2026
767333f
CI: fix YAML syntax error in pr-test-builds workflow
sensei-hacker Mar 1, 2026
b2dd830
Merge pull request #11384 from sensei-hacker/fix/pr-test-builds-yaml-…
sensei-hacker Mar 1, 2026
c7edbc3
CI: fix YAML syntax error in pr-test-builds workflow
sensei-hacker Mar 1, 2026
48cf782
Merge pull request #11385 from iNavFlight/maintenance-9.x
sensei-hacker Mar 1, 2026
4e07d5c
remove setting and change warning logic
breadoven Mar 1, 2026
7ff2464
pos est corr improvements + vel filtering
breadoven Mar 1, 2026
a539ce1
HAKRCH743: Add DMAR for Dshot on all outputs, fix typo
sensei-hacker Mar 2, 2026
ed37ed2
Update navigation_pos_estimator.c
breadoven Mar 2, 2026
506ea42
Update navigation_pos_estimator.c
breadoven Mar 2, 2026
63c255c
CI: fix pr-test-builds release creation failing with target_commitish…
sensei-hacker Mar 2, 2026
ccdbecf
Merge pull request #11388 from sensei-hacker/fix/pr-test-builds-targe…
sensei-hacker Mar 2, 2026
c8b2edc
Fix SPI GPIO alternate function assignment on STM32H7/F7
sensei-hacker Mar 2, 2026
6817a66
drivers: explicitly include common/utils.h in SPI AF lookup headers
sensei-hacker Mar 2, 2026
36bb13d
cmake/sitl: guard CheckLinkerFlag for compatibility with CMake < 3.18
sensei-hacker Mar 2, 2026
9d44fe5
Trackback FC crash fix
breadoven Mar 3, 2026
873e9d6
Add AGENT.md rules
Mar 4, 2026
78a96e3
Merge pull request #11397 from iNavFlight/dzikuvx-help-ai-agents
DzikuVx Mar 5, 2026
d631648
Merge pull request #11393 from breadoven/abo_trackback_fix
breadoven Mar 5, 2026
1ce09df
Merge pull request #11359 from breadoven/abo_mc_althold_manual_climb_fix
breadoven Mar 5, 2026
c2752cf
Merge pull request #11308 from breadoven/abo_add_batt_volt_warning
breadoven Mar 5, 2026
1e46d5b
Use single-precision math where double is unnecessary
sensei-hacker Mar 6, 2026
2c7003f
Code review fixes for float math flash savings
sensei-hacker Mar 6, 2026
a85fa5f
Target cleanup
Mar 6, 2026
27ac14f
Merge pull request #11389 from sensei-hacker/fix/spi-af-lookup-table
sensei-hacker Mar 6, 2026
6bac5a2
Merge pull request #11182 from HAKRC8899/feature/HAKRCH743
sensei-hacker Mar 7, 2026
6468642
Merge pull request #11315 from sensei-hacker/deprecate-legacy-msp-com…
sensei-hacker Mar 7, 2026
e7f9808
Merge pull request #11318 from sensei-hacker/fix-servo-throttle-mix-d…
sensei-hacker Mar 7, 2026
df00886
Merge pull request #11321 from sensei-hacker/fix-blackbox-sd-lockup
sensei-hacker Mar 7, 2026
5f05fbc
Merge pull request #11351 from daijoubu/fix-usb-vcp-blocking
sensei-hacker Mar 7, 2026
79907bc
Merge pull request #11302 from iNavFlight/MrD_Update-CLI-docs-re-prof…
sensei-hacker Mar 7, 2026
4878b4f
Merge pull request #11369 from HumpbackLab/fix/msp-crsf-communication
sensei-hacker Mar 7, 2026
405e6d5
Merge pull request #11374 from John-Henrique/master
sensei-hacker Mar 7, 2026
3891620
Merge pull request #11383 from sensei-hacker/fix-sitl-cmake-rwx-linke…
sensei-hacker Mar 7, 2026
a4996f4
Merge pull request #11387 from breadoven/abo_pos_est_corr_improvement
sensei-hacker Mar 7, 2026
eabb140
Merge pull request #11402 from sensei-hacker/optimize-code-size-float…
sensei-hacker Mar 7, 2026
0e2fedf
Merge pull request #11406 from iNavFlight/master
sensei-hacker Mar 7, 2026
e948b06
Merge pull request #11347 from cluez0r/sdmmc_f4_capacity_bug
sensei-hacker Mar 7, 2026
2db79da
Merge pull request #11404 from iNavFlight/brahma_h7
DzikuVx Mar 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,16 @@ jobs:
with:
name: targets
path: targets.txt
- name: Save PR number
if: github.event_name == 'pull_request'
run: echo "${{ github.event.pull_request.number }}" > pr_number.txt
- name: Upload PR number
if: github.event_name == 'pull_request'
uses: actions/upload-artifact@v4
with:
name: pr-number
path: pr_number.txt
retention-days: 1

build-SITL-Linux-arm64:
runs-on: ubuntu-22.04-arm
Expand Down
151 changes: 151 additions & 0 deletions .github/workflows/pr-test-builds.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
name: PR Test Builds

# Runs after "Build firmware" completes. Uses workflow_run (rather than
# pull_request directly) so that secrets are available even for PRs from forks.
#
# Requires a repository secret PR_BUILDS_TOKEN with Contents: write access
# to iNavFlight/pr-test-builds (fine-grained PAT or classic PAT with repo scope).
on:
workflow_run:
workflows: ["Build firmware"]
types: [completed]

jobs:
publish:
runs-on: ubuntu-latest
# Only act on pull_request-triggered runs that succeeded.
if: >
github.event.workflow_run.event == 'pull_request' &&
github.event.workflow_run.conclusion == 'success'
# Prevent concurrent runs for the same PR branch racing on the
# release delete/create cycle.
concurrency:
group: pr-test-build-${{ github.event.workflow_run.head_repository.full_name }}-${{ github.event.workflow_run.head_branch }}
cancel-in-progress: true
permissions:
actions: read # to download artifacts from the triggering workflow run
issues: write # github.rest.issues.* endpoints used to post PR comments
pull-requests: write # to post the PR comment

steps:
- name: Download PR number
uses: actions/download-artifact@v4
with:
name: pr-number
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ secrets.GITHUB_TOKEN }}

- name: Read PR number
id: pr
run: |
PR_NUM=$(tr -dc '0-9' < pr_number.txt)
if [ -z "$PR_NUM" ]; then
echo "::error::Invalid PR number in artifact"
exit 1
fi
echo "number=${PR_NUM}" >> $GITHUB_OUTPUT

- name: Download firmware artifacts
uses: actions/download-artifact@v4
with:
pattern: matrix-inav-*
merge-multiple: true
path: hexes
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ secrets.GITHUB_TOKEN }}

- name: Get build info
id: info
run: |
COUNT=$(find hexes -name '*.hex' -type f | wc -l)
if [ "$COUNT" -eq 0 ]; then
echo "::error::No .hex files found in downloaded artifacts"
exit 1
fi
echo "count=${COUNT}" >> $GITHUB_OUTPUT
echo "short_sha=$(echo '${{ github.event.workflow_run.head_sha }}' | cut -c1-7)" >> $GITHUB_OUTPUT

# Delete the previous release for this PR (if any) so assets are replaced
# cleanly on each new commit. --cleanup-tag removes the old tag so it is
# recreated fresh pointing to the new commit.
- name: Delete existing PR release
env:
GH_TOKEN: ${{ secrets.PR_BUILDS_TOKEN }}
run: |
gh release delete "pr-${{ steps.pr.outputs.number }}" \
--repo iNavFlight/pr-test-builds --cleanup-tag --yes 2>/dev/null || true

- name: Create PR release
env:
GH_TOKEN: ${{ secrets.PR_BUILDS_TOKEN }}
PR_NUMBER: ${{ steps.pr.outputs.number }}
SHORT_SHA: ${{ steps.info.outputs.short_sha }}
HEX_COUNT: ${{ steps.info.outputs.count }}
REPO: ${{ github.repository }}
run: |
PR_URL="https://github.com/${REPO}/pull/${PR_NUMBER}"
printf '%s\n\n%s\n\n%s\n' \
"Test build for [PR #${PR_NUMBER}](${PR_URL}) — commit \`${SHORT_SHA}\`" \
"**${HEX_COUNT} targets built.** Find your board's \`.hex\` file by name (e.g. \`MATEKF405SE.hex\`)." \
"> Development build for testing only. Use Full Chip Erase when flashing." \
> release-notes.md
gh release create "pr-${PR_NUMBER}" hexes/*.hex \
--repo iNavFlight/pr-test-builds \
--prerelease \
--title "PR #${PR_NUMBER} (${SHORT_SHA})" \
--notes-file release-notes.md

- name: Post or update PR comment
uses: actions/github-script@v7
env:
PR_NUMBER: ${{ steps.pr.outputs.number }}
SHORT_SHA: ${{ steps.info.outputs.short_sha }}
HEX_COUNT: ${{ steps.info.outputs.count }}
with:
script: |
const prNumber = parseInt(process.env.PR_NUMBER, 10);
if (isNaN(prNumber)) throw new Error(`Invalid PR number: ${process.env.PR_NUMBER}`);
const shortSha = process.env.SHORT_SHA;
const count = process.env.HEX_COUNT;
const releaseUrl = `https://github.com/iNavFlight/pr-test-builds/releases/tag/pr-${prNumber}`;

const body = [
'<!-- pr-test-build -->',
'**Test firmware build ready** — commit `' + shortSha + '`',
'',
`[Download firmware for PR #${prNumber}](${releaseUrl})`,
'',
`${count} targets built. Find your board's \`.hex\` file by name on that page ` +
'(e.g. `MATEKF405SE.hex`). Files are individually downloadable — no GitHub login required.',
'',
'> Development build for testing only. Use Full Chip Erase when flashing.',
].join('\n');

const comments = await github.paginate(
github.rest.issues.listComments,
{
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
}
);

const existing = comments.find(c =>
c.user.type === 'Bot' && c.body.includes('<!-- pr-test-build -->')
);

if (existing) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existing.id,
body,
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
body,
});
}
Loading