Skip to content

feat: add secret reminder support to overview page#5387

Open
scott-ray-wilson wants to merge 1 commit intomainfrom
SECRETS-83
Open

feat: add secret reminder support to overview page#5387
scott-ray-wilson wants to merge 1 commit intomainfrom
SECRETS-83

Conversation

@scott-ray-wilson
Copy link
Contributor

Context

This PR updates the dashboard router api and overview page to support secret reminders, including several new v3 components

Screenshots

CleanShot 2026-02-05 at 18 37 21@2x

Steps to verify the change

  • Verify you can add, remove and edit secret reminders from the overview page
  • verify the old v2 date picker is still functional as styling was removed to not conflict with v3

Type

  • Fix
  • Feature
  • Improvement
  • Breaking
  • Docs
  • Chore

Checklist

  • Title follows the conventional commit format: type(scope): short description (scope is optional, e.g., fix: prevent crash on sync or fix(api): handle null response).
  • Tested locally
  • Updated docs (if needed)
  • Read the contributing guide

@linear
Copy link

linear bot commented Feb 6, 2026

@maidul98
Copy link
Collaborator

maidul98 commented Feb 6, 2026

Snyk checks have passed. No issues have been found so far.

Status Scanner Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 6, 2026

Greptile Overview

Greptile Summary

This PR adds secret reminder functionality to the overview page, allowing users to set up one-time or recurring reminders for secret rotation.

Key Changes:

  • Extended dashboard API response to include reminder data for each secret (backward compatible with .nullish())
  • Added new v3 Calendar component based on react-day-picker 9.13.0
  • Created SecretReminderForm for managing reminders with validation for dates, intervals, and recipients
  • Updated v2 DatePicker styling to prevent conflicts with v3 components
  • Integrated reminder UI into secret table rows with bell icon

Implementation:

  • Backend properly validates permissions using ProjectPermissionSecretActions.Edit before creating/updating reminders
  • Frontend enforces future-date validation for both one-time and recurring reminders
  • Reminders are fetched efficiently in batch using getRemindersForDashboard to avoid N+1 queries
  • Empty recipient lists default to notifying all project members

Non-breaking: The API change is additive only - the reminder field is optional/nullable, so existing API consumers continue to work without modification.

Confidence Score: 4/5

  • This PR is safe to merge with low risk - changes are well-structured and backward compatible
  • Score reflects solid implementation with proper permission checks, backward compatibility, and good code organization. Minor deduction for lack of documentation about the new feature.
  • No files require special attention - the implementation follows existing patterns and includes proper validation

Important Files Changed

Filename Overview
backend/src/server/routes/v1/dashboard-router.ts Added reminder support to dashboard API response schema, fetches reminders for secrets and includes in response
frontend/src/pages/secret-manager/OverviewPage/components/SecretTableRow/SecretReminderForm.tsx New form component for creating/editing secret reminders with validation for dates, recipients, and recurrence
frontend/src/pages/secret-manager/OverviewPage/components/SecretTableRow/SecretEditTableRow.tsx Added reminder icon button and popover to secret row, integrated with SecretReminderForm

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

3 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 6, 2026

Additional Comments (1)

backend/src/services/reminder/reminder-dal.ts
Use .withSchema() for all column references in joins to avoid ambiguity. While email, name, and id use .withSchema(), ensure all selects explicitly reference their table schemas for consistency and to prevent column name collisions.

      .select(selectAllTableCols(TableName.Reminder))
      .select(db.ref("email").withSchema(TableName.Users))
      .select(db.ref("name").withSchema(TableName.Project).as("projectName"))
      .select(db.ref("id").withSchema(TableName.Project).as("projectId"))
      .select(db.ref("name").withSchema(TableName.Organization).as("organizationName"));

Context Used: Context from dashboard - Use 'email auth' instead of 'direct credential login' in documentation to provide clearer terminolog... (source)

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