Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
0396eb4
Fix path drawing in drawDebug
bboonstra Oct 6, 2025
1d6213b
Fix path drawing in drawDebug
bboonstra Oct 6, 2025
b390a6e
Merge branch 'patch-1' of https://github.com/bboonstra/Quickstart int…
bboonstra Oct 6, 2025
dcd4e22
Merge pull request #19 from bboonstra/patch-1
BaronClaps Oct 8, 2025
f383449
2.0.3 Pedro FTC + 1.0.7 Full Panels
BaronClaps Oct 17, 2025
65f18d2
Fix direction typo(change right to left)
Soupborsh Oct 25, 2025
26fccfd
Shift all tests to a center of (72, 72) instead of (0, 0) for Panels …
BaronClaps Nov 6, 2025
be663d1
Update com.pedropathing:ftc dependency to 2.0.4
BaronClaps Nov 9, 2025
867f42d
Add Line Tuner to Manual tuning options
vlad1k337 Nov 11, 2025
155ffb6
Merge pull request #28 from vlad1k337/master
BaronClaps Nov 11, 2025
016e9d6
feat: add telemetry to PIDF Tuners for error
vlad1k337 Nov 25, 2025
dbaffc0
fix: update distance moved displays
bboonstra Dec 5, 2025
d9ae636
Merge pull request #22 from Soupborsh/patch-1
BaronClaps Dec 27, 2025
47c3e31
Enforce one-time reopen for mistake PRs and disable auto-reopen after…
adi-varshney Dec 27, 2025
8ce7df4
Update Pedro version from 2.0.4 to 2.0.5
BaronClaps Jan 1, 2026
f486898
Removed Dairy Core,
chetanvanam Jan 20, 2026
0974a17
setFireSequence() is no longer necessary when using Future.
athGurnani Jan 17, 2026
09e52bd
Decrease distance threshold - likely issue with sorting.
athGurnani Jan 17, 2026
c590a79
Migrate to changed runFireSequence()
athGurnani Jan 17, 2026
2ec9c42
Fix issues in draft auto
athGurnani Jan 17, 2026
11d6fc6
Revert "Fix issues in draft auto"
athGurnani Jan 17, 2026
985f5c9
nitpick things in draft auto
athGurnani Jan 17, 2026
e5d8db2
Migrate all hardware to new class
athGurnani Jan 17, 2026
5b07490
Speed up shoot cycle
athGurnani Jan 17, 2026
46213d6
Migrate BlueFar TeleOp to new hardware setup
athGurnani Jan 17, 2026
e05b133
Create Gamepad/action binder and test OpMode
athGurnani Jan 18, 2026
62f6660
Hardware management + improvements
athGurnani Jan 18, 2026
445e33a
Fix MatchSettings inits
athGurnani Jan 18, 2026
2c7c994
Clean up individual tests
athGurnani Jan 18, 2026
83da01b
Fix MatchSettings init in draft auto
athGurnani Jan 18, 2026
531d462
Simplify Controller initialization and memory management
athGurnani Jan 18, 2026
7011527
Remove redundant storage of action parameters,
athGurnani Jan 18, 2026
d4484d3
Make servo control much easier -- two rapid-fire commands cannot run …
athGurnani Jan 18, 2026
9297a81
Make zero-argument methods possible and finalize new Binding class
athGurnani Jan 19, 2026
fed5ecb
Remove test Controller from BlueFar
athGurnani Jan 19, 2026
49d32a4
Add SlothPanels + correct weight of bot
athGurnani Jan 19, 2026
d519fd3
Removed Dairy Core,
chetanvanam Jan 20, 2026
2e82746
Merge remote-tracking branch 'origin/Korver-League-Tournament' into K…
chetanvanam Jan 20, 2026
e28fd2b
fixes
athGurnani Jan 20, 2026
c4d605b
Kicker Test
athGurnani Jan 20, 2026
226334c
fixes
chetanvanam Jan 21, 2026
b22d34d
Merge branch 'master' of https://github.com/Pedro-Pathing/Quickstart …
chetanvanam Jan 21, 2026
edc9eb4
Statemachine Auto start
chetanvanam Jan 21, 2026
b963c39
Merge remote-tracking branch 'origin/Korver-League-Tournament' into K…
chetanvanam Jan 21, 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
45 changes: 45 additions & 0 deletions .github/workflows/disable-auto-reopen-after-second-close.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Disable auto-reopen after second close

on:
pull_request:
types: [closed]

permissions:
issues: write
pull-requests: write

jobs:
disable:
runs-on: ubuntu-latest
steps:
- name: Disable automatic reopen
uses: actions/github-script@v7
with:
script: |
const pr = context.payload.pull_request;

// Ignore merged PRs
if (pr.merged) return;

const labels = pr.labels.map(l => l.name);

// Only act if it was previously reopened once
if (!labels.includes('reopen-used')) return;

// Mark auto-reopen as permanently disabled
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
labels: ['reopen-locked']
});

await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body:
"This PR was reopened once and then closed again.\n\n" +
"Automatic reopening via `/not-a-mistake` is now disabled.\n" +
"Maintainers may still reopen this PR manually if needed."
});
67 changes: 67 additions & 0 deletions .github/workflows/mistake-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Auto-close mistake PRs

on:
pull_request:
types: [opened, synchronize, reopened]

permissions:
issues: write
pull-requests: write

jobs:
detect:
runs-on: ubuntu-latest
steps:
- name: Detect mistake PR
uses: actions/github-script@v7
with:
script: |
const pr = context.payload.pull_request;
const labels = pr.labels.map(l => l.name);

// Skip if auto-reopen is disabled or already used
if (labels.includes('reopen-used') || labels.includes('reopen-locked')) {
return;
}

// Get changed files
const files = await github.paginate(
github.rest.pulls.listFiles,
{
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number,
}
);

// Detect newly added OR copied files
const hasNewFiles = files.some(
f => f.status === 'added' || f.status === 'copied'
);

if (!hasNewFiles) return;

// Label as mistake PR
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
labels: ['mistake-pr']
});

// Explain and close
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body:
"This PR was automatically closed because it adds new files.\n\n" +
"If this is intentional, comment `/not-a-mistake` **once** to reopen it."
});

await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number,
state: 'closed'
});
84 changes: 84 additions & 0 deletions .github/workflows/reopen-once.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Reopen mistake PR once

on:
issue_comment:
types: [created]

permissions:
issues: write
pull-requests: write

jobs:
reopen:
runs-on: ubuntu-latest
steps:
- name: Handle /not-a-mistake
uses: actions/github-script@v7
with:
script: |
const comment = context.payload.comment;
const issue = context.payload.issue;

if (!issue.pull_request) return;
if (comment.body.trim() !== '/not-a-mistake') return;

const pr = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: issue.number
});

const labels = pr.data.labels.map(l => l.name);

// Only PR author may use this
if (comment.user.login !== pr.data.user.login) {
return;
}

// Must be closed and labeled mistake-pr
if (pr.data.state !== 'closed') return;
if (!labels.includes('mistake-pr')) return;

// Auto-reopen already disabled
if (labels.includes('reopen-used') || labels.includes('reopen-locked')) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
body:
"Automatic reopening is disabled for this PR.\n\n" +
"A maintainer may still reopen it manually if needed."
});
return;
}

// Mark reopen as used FIRST (prevents race)
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
labels: ['reopen-used']
});

await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
name: 'mistake-pr'
});

await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: issue.number,
state: 'open'
});

await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
body:
"PR reopened.\n\n" +
"If this PR is closed again, automatic reopening will be disabled."
});
4 changes: 1 addition & 3 deletions TeamCode/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,5 @@ dependencies {
implementation project(':FtcRobotController')
implementation("dev.frozenmilk.sinister:Sloth:0.2.4")
implementation("org.team11260:fast-load:0.1.4-beta1")
implementation("dev.frozenmilk.dairy:Core:2.2.4")
implementation("dev.frozenmilk.mercurial:Mercurial:1.0.3")
implementation("com.bylazar.sloth:fullpanels:0.2.4+1.0.12")
implementation("com.bylazar:fullpanels:1.0.12")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package org.firstinspires.ftc.teamcode.autos;

import static org.firstinspires.ftc.teamcode.util.Hardware.dt;
import static org.firstinspires.ftc.teamcode.util.Hardware.intake;
import static org.firstinspires.ftc.teamcode.util.Hardware.transfer;

import com.pedropathing.geometry.BezierLine;
import com.pedropathing.geometry.Pose;
import com.pedropathing.paths.Path;
import com.qualcomm.robotcore.eventloop.opmode.OpMode;

import org.firstinspires.ftc.teamcode.util.AllianceColor;
import org.firstinspires.ftc.teamcode.util.MatchSettings;
import org.firstinspires.ftc.teamcode.util.Settings;


public class stateMachineLogic extends OpMode {
private AutoState auto;
private final AllianceColor alliance =new AllianceColor(AllianceColor.Selection.BLUE);
@Override
public void init() {
MatchSettings.initSelection(hardwareMap, alliance, new Pose(-gamepad1.left_stick_y, -gamepad1.left_stick_x, -gamepad1.right_stick_x));

}

@Override
public void start() {
MatchSettings.start();
auto = AutoState.START;
}

@Override
public void loop() {
dt.follower.update();
switch(auto) {
case START:
dt.follower.followPath(
new Path(
new BezierLine(
Settings.Positions.Drivetrain.Blue.FAR_AUTO_START,
Settings.Positions.Drivetrain.Blue.FAR_SHOOT
)
)
);
auto = AutoState.SHOOT_ONE;

case SHOOT_ONE:
if (!dt.follower.isBusy()) {
transfer.fireSortedArtifacts();
auto = AutoState.INTAKE_ONE;
}

case INTAKE_ONE:
if (!transfer.kicker.isBusy()) {
transfer.cancelFire();
intake.run();
dt.follower.followPath(
new Path(
new BezierLine(
Settings.Positions.Drivetrain.Blue.FAR_SHOOT,
new Pose(18, 35)
)
)
);
}
}
}

@Override
public void stop() {
dt.follower.breakFollowing();
dt.follower.startTeleopDrive(true);
dt.follower.setTeleOpDrive(
0,0,0,
true
);
dt.follower.update();
}


enum AutoState {
START,
SHOOT_ONE,
INTAKE_ONE
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.firstinspires.ftc.teamcode.pedroPathing;

import com.bylazar.sloth.configurables.annotations.Configurable;
import com.bylazar.configurables.annotations.Configurable;
import com.pedropathing.control.FilteredPIDFCoefficients;
import com.pedropathing.control.*;
import com.pedropathing.follower.Follower;
Expand Down
Loading