Skip to content

feat(feedback): notify users when feedback issues are canceled#3637

Open
rebelchris wants to merge 2 commits intomainfrom
eng-837-add-feedback-note-when-canceling-user-feedback-issues
Open

feat(feedback): notify users when feedback issues are canceled#3637
rebelchris wants to merge 2 commits intomainfrom
eng-837-add-feedback-note-when-canceling-user-feedback-issues

Conversation

@rebelchris
Copy link
Contributor

@rebelchris rebelchris commented Feb 26, 2026

Summary

  • add a new feedback_cancelled notification type and context to mirror the existing feedback resolution flow
  • generate and store a user notification when Linear sends a Canceled state update for feedback-linked issues
  • extend webhook tests to verify cancellation notification creation and cancellation idempotency

Key decisions

  • no migration required: notification type is stored as an existing string field in NotificationV2
  • no frontend changes: notification rendering already uses generic title/description fields
  • keep cancellation notifications non-email (consistent with feedback_resolved mail mappings)

Linear issue: https://linear.app/dailydev/issue/ENG-837/add-feedback-note-when-canceling-user-feedback-issues

Closes ENG-837


Created by Huginn 🐦‍⬛

@pulumi
Copy link

pulumi bot commented Feb 26, 2026

🍹 The Update (preview) for dailydotdev/api/prod (at ee2a89b) was successful.

✨ Neo Explanation

This is a standard application release that rolls out a new build to all 7 deployments and 32 cron jobs, while replacing the previous version's DB and ClickHouse migration jobs with new ones targeting the updated codebase. No infrastructure changes are involved — this is purely a code deployment.

Root Cause Analysis

A new version of the application has been built and is being deployed to production. Every workload in the cluster references a container image pinned to a specific build version, and that version tag has changed, causing all resources to be updated in lockstep.

Dependency Chain

The new container image version cascades uniformly across the entire stack:

  • 7 Deployments (API, background workers, WebSocket, Temporal, private, personalized digest, worker jobs) are being rolled out with the new image, which Kubernetes will handle as a rolling update with no downtime.
  • 32 CronJobs are updated so that the next time each job fires, it will use the new image version.
  • 2 one-time migration Jobs (DB migration + ClickHouse migration) tied to the previous version are being deleted, and 2 new equivalent Jobs for the new version are being created. These will run the TypeORM database migration (migration:run) and the ClickHouse migration script against the new codebase before (or alongside) the deployment going live.

Risk Analysis

No stateful resources (databases, storage buckets, persistent volumes) are being replaced or deleted. The migration Jobs do execute schema changes against the database and ClickHouse, which carries inherent risk if the migrations are not backward-compatible — however, this is a standard pattern for this stack and the jobs are scoped to run once (completions: 1, restartPolicy: Never). Deployments use rolling updates, so no downtime is expected.

Resource Changes

    Name                                                       Type                           Operation
~   vpc-native-update-views-cron                               kubernetes:batch/v1:CronJob    update
~   vpc-native-hourly-notification-cron                        kubernetes:batch/v1:CronJob    update
+   vpc-native-api-db-migration-603cf41d                       kubernetes:batch/v1:Job        create
~   vpc-native-update-tag-recommendations-cron                 kubernetes:batch/v1:CronJob    update
~   vpc-native-generate-search-invites-cron                    kubernetes:batch/v1:CronJob    update
~   vpc-native-update-source-public-threshold-cron             kubernetes:batch/v1:CronJob    update
~   vpc-native-private-deployment                              kubernetes:apps/v1:Deployment  update
~   vpc-native-post-analytics-history-day-clickhouse-cron      kubernetes:batch/v1:CronJob    update
~   vpc-native-update-source-tag-view-cron                     kubernetes:batch/v1:CronJob    update
~   vpc-native-update-tags-str-cron                            kubernetes:batch/v1:CronJob    update
~   vpc-native-squad-posts-analytics-refresh-cron              kubernetes:batch/v1:CronJob    update
~   vpc-native-clean-zombie-opportunities-cron                 kubernetes:batch/v1:CronJob    update
~   vpc-native-expire-super-agent-trial-cron                   kubernetes:batch/v1:CronJob    update
~   vpc-native-deployment                                      kubernetes:apps/v1:Deployment  update
~   vpc-native-ws-deployment                                   kubernetes:apps/v1:Deployment  update
~   vpc-native-user-profile-updated-sync-cron                  kubernetes:batch/v1:CronJob    update
~   vpc-native-clean-zombie-user-companies-cron                kubernetes:batch/v1:CronJob    update
~   vpc-native-clean-zombie-images-cron                        kubernetes:batch/v1:CronJob    update
~   vpc-native-update-achievement-rarity-cron                  kubernetes:batch/v1:CronJob    update
+   vpc-native-api-clickhouse-migration-603cf41d               kubernetes:batch/v1:Job        create
~   vpc-native-validate-active-users-cron                      kubernetes:batch/v1:CronJob    update
~   vpc-native-user-profile-analytics-clickhouse-cron          kubernetes:batch/v1:CronJob    update
~   vpc-native-update-current-streak-cron                      kubernetes:batch/v1:CronJob    update
~   vpc-native-generic-referral-reminder-cron                  kubernetes:batch/v1:CronJob    update
~   vpc-native-clean-gifted-plus-cron                          kubernetes:batch/v1:CronJob    update
~   vpc-native-bg-deployment                                   kubernetes:apps/v1:Deployment  update
~   vpc-native-daily-digest-cron                               kubernetes:batch/v1:CronJob    update
~   vpc-native-temporal-deployment                             kubernetes:apps/v1:Deployment  update
~   vpc-native-worker-job-deployment                           kubernetes:apps/v1:Deployment  update
~   vpc-native-update-trending-cron                            kubernetes:batch/v1:CronJob    update
~   vpc-native-sync-subscription-with-cio-cron                 kubernetes:batch/v1:CronJob    update
~   vpc-native-personalized-digest-cron                        kubernetes:batch/v1:CronJob    update
~   vpc-native-update-highlighted-views-cron                   kubernetes:batch/v1:CronJob    update
~   vpc-native-user-profile-analytics-history-clickhouse-cron  kubernetes:batch/v1:CronJob    update
~   vpc-native-clean-stale-user-transactions-cron              kubernetes:batch/v1:CronJob    update
~   vpc-native-personalized-digest-deployment                  kubernetes:apps/v1:Deployment  update
~   vpc-native-check-analytics-report-cron                     kubernetes:batch/v1:CronJob    update
~   vpc-native-user-posts-analytics-refresh-cron               kubernetes:batch/v1:CronJob    update
-   vpc-native-api-clickhouse-migration-cff69b46               kubernetes:batch/v1:Job        delete
-   vpc-native-api-db-migration-cff69b46                       kubernetes:batch/v1:Job        delete
~   vpc-native-calculate-top-readers-cron                      kubernetes:batch/v1:CronJob    update
... and 4 other changes

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.

1 participant