Skip to content

Conversation

@github-actions
Copy link
Contributor

This is an automated pull request to release the candidate branch into production, which will trigger a deployment.
It was created by the [Production PR] action.

@vercel
Copy link

vercel bot commented Dec 15, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
app (staging) Ready Ready Preview, Comment Dec 16, 2025 8:20pm
portal (staging) Ready Ready Preview, Comment Dec 16, 2025 8:20pm

@cursor
Copy link

cursor bot commented Dec 15, 2025

PR Summary

Adds device unlink API/UX with FleetDM cleanup, onboarding user menu/sign-out and skip, self-hosting docs and Docker logging improvements, enhanced GitHub sanitized-inputs check, and browser automation eval tweaks.

  • API/Backend:
    • Add PATCH /v1/people/:id/unlink-device to unlink a member’s device; invokes FleetDM host removal and clears fleetDmLabelId.
    • Browser automation: always capture screenshot; propagate evaluationStatus from result (no auto-pass gate); adjust reasons.
  • App (Frontend):
    • People: UI + hook to unlink device (owner-only), new confirmations.
    • Onboarding: header menu with user info and sign-out; add “Skip for now”; make software optional and ignore empty answers.
    • New e2e tests for onboarding sign-out and user menu.
  • Self-Hosting/DevOps:
    • Docker Compose: per-service env files, restart policies, healthcheck fix, and log rotation via json-file options.
    • Dockerfile: bun install --ignore-scripts; include integration-platform pkg manifest.
  • Docs:
    • New self-hosting pages: Docker guide and env reference; update OpenAPI with unlink-device endpoint.
  • Integrations:
    • GitHub “sanitized inputs” check now scans full repo tree (monorepo-aware) and reports multiple matches.
  • Portal:
    • Add form libs (react-hook-form, @hookform/resolvers, zod).

Written by Cursor Bugbot for commit 5912194. This will update automatically on new commits. Configure here.

@graphite-app graphite-app bot requested a review from Marfuen December 15, 2025 16:55
success: true,
screenshotUrl: presignedUrl,
evaluationStatus: 'pass',
evaluationStatus: result.evaluationStatus,
Copy link

Choose a reason for hiding this comment

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

Bug: Successful runs now return undefined evaluationStatus instead of pass

The executeAutomation method no longer returns evaluationStatus in its success path (it only returns success, screenshot, and evaluationReason). However, the calling code at lines 559 and 699 still returns evaluationStatus: result.evaluationStatus, which will be undefined. Previously these lines returned a hardcoded 'pass'. This changes the API contract for successful automation runs from returning evaluationStatus: 'pass' to evaluationStatus: undefined, which could break API consumers expecting this field.

Additional Locations (2)

Fix in Cursor Fix in Web

@graphite-app
Copy link

graphite-app bot commented Dec 15, 2025

Graphite Automations

"Auto-assign PRs to Author" took an action on this PR • (12/15/25)

1 reviewer was added to this PR based on Mariano Fuentes's automation.

* feat(ui)(sidebar): remove old sidebar components and update dependencies

* feat(ui): enhance organization switcher with dropdown menu and sorting options

* revert(ui): sheet ui

* fix(ui): type fix

* fix: tooltip leak

---------

Co-authored-by: Daniel Fu <itsnotaka@gmail.com>
@CLAassistant
Copy link

CLAassistant commented Dec 16, 2025

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
2 out of 3 committers have signed the CLA.

✅ Marfuen
✅ Itsnotaka
❌ github-actions[bot]
You have signed the CLA already but the status is still pending? Let us recheck it.

* feat(docker): add logging configuration and update Dockerfile for integration platform

* fix(docker): add restart policy and correct healthcheck URL

* refactor(docker): simplify dependency installation command in Dockerfile

* chore(bun.lock): update @jridgewell/trace-mapping to version 0.3.31

---------

Co-authored-by: Daniel Fu <itsnotaka@gmail.com>
Co-authored-by: Min Chun Fu <70210356+Itsnotaka@users.noreply.github.com>
* feat(app): create alert for removing device

* feat(api): create endpoint for unlinking device

* feat(app): integrate unlink-device endpoint on click of 'Remove Device' menu

* fix(app): hide Remove Device menu if the current user is not an owner

* feat(app): integrate fleet endpoint to delete the hosts

* fix(app): refresh after unlinking device

* fix(app): remove unused variable

---------

Co-authored-by: chasprowebdev <chasgarciaprowebdev@gmail.com>
Co-authored-by: Mariano Fuentes <marfuen98@gmail.com>
Itsnotaka and others added 2 commits December 16, 2025 14:29
* chore(bun.lock): downgrade configVersion from 1 to 0

* chore(api): update tsconfig path mappings and output directory

* feat(layout): add variant prop to MinimalHeader for onboarding and setup

---------

Co-authored-by: Mariano Fuentes <marfuen98@gmail.com>
Co-authored-by: Mariano Fuentes <marfuen98@gmail.com>
};
} catch (error) {
this.logger.error(`Failed to remove hosts for label ${fleetDmLabelId}:`, error);
throw new Error(`Failed to remove hosts for label ${fleetDmLabelId}: ${error.message}`);
Copy link

Choose a reason for hiding this comment

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

Bug: Unsafe error.message access without type checking

The catch block accesses error.message directly without verifying error is an Error object. In JavaScript, caught exceptions can be any type. If the exception is a string, number, or other non-Error value, error.message will be undefined, producing a confusing error message like "Failed to remove hosts for label X: undefined". Other error handlers in this file (lines 54-57, 64-67) correctly avoid this pattern.

Fix in Cursor Fix in Web

This reverts commit 44faa9e.

Co-authored-by: Mariano Fuentes <marfuen98@gmail.com>
},
},
});
};
Copy link

Choose a reason for hiding this comment

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

Bug: Sign out failure leaves button permanently disabled

The handleSignOut function sets isSigningOut to true but never resets it if authClient.signOut() fails. If a network error or server error occurs during sign out, the button remains stuck in the disabled "Signing out..." state with no way to retry. The function lacks error handling (try-catch/finally) to reset the loading state on failure.

Fix in Cursor Fix in Web

@Marfuen Marfuen merged commit 43b1aa2 into release Dec 16, 2025
8 of 12 checks passed
@claudfuen
Copy link
Contributor

🎉 This PR is included in version 1.71.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

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.

5 participants