Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Tags: FluidifyAI/Regen

Tags

v1.1.0

Toggle v1.1.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
docs(changelog): add v1.1.0 entry (#156)

* feat(push): add Firebase Admin SDK dependency [OPE-234]

* feat(push): add migration 000043 - device_tokens table [OPE-234]

* feat(push): add DeviceToken GORM model [OPE-234]

* feat(push): implement DeviceTokenRepository with 20-token cap [OPE-234]

* feat(push): add GoogleApplicationCredentials to config [OPE-234]

* feat(push): implement PushService with FCM sender abstraction [OPE-234]

* feat(push): implement device token registration and unregistration endpoints [OPE-234]

* feat(push): write incident service push trigger tests (RED) [OPE-234]

* feat(push): trigger push notifications on incident create and resolve

Wire PushNotifier into incidentService so the on-call commander
receives a push when an incident is created via CreateIncidentFromAlert
and CreateIncidentFromAlertWithGrouping. The commander also receives
a resolved push from both ResolveIncident and UpdateIncident.

Goroutines are guarded by recoverAsyncPanic; the token string is never
logged. Use non-deprecated option.WithAuthCredentialsJSON and
messaging.IsUnregistered APIs.

[OPE-234]

* feat(push): add push notification trigger to escalation worker

When SetPushService is called, SendEscalationDM resolves the on-call
user's UUID via userRepo.GetByEmail and sends a push notification
alongside the existing Slack DM. User not found is a soft error —
the DM is still sent and no error is returned to the caller.

[OPE-234]

* feat(push): add PushCleanupWorker to sweep stale device tokens

Runs a DeleteStale pass on startup then every 24 hours; removes tokens
not seen in 90 days. The 90-day constant is defined once in the
implementation file with no magic numbers at call sites.

[OPE-234]

* feat(push): wire push infrastructure into server startup and routes

Construct deviceTokenRepo and PushService in serve.go; pass both to
SetupRoutes and StartAll. Routes registers /push/register and
/push/unregister under the authenticated group when deviceTokenRepo is
set. StartAll wires push into the escalation worker and launches
PushCleanupWorker when Firebase is configured. Server starts cleanly
without GOOGLE_APPLICATION_CREDENTIALS — push is simply disabled.

[OPE-234]

* fix(push): address code review findings in push notification infrastructure

- Add index on device_tokens(token) to avoid full table scans in
  DeleteByToken and UpdateLastSeen
- Serialize concurrent Upsert calls with SELECT FOR UPDATE on the user
  row to close TOCTOU race in the 20-token-per-user cap check
  (PostgreSQL only; SQLite in tests skips the lock via dialect check)
- Remove duplicate startup log in start.go; PushCleanupWorker.Run
  already emits the same message with richer context fields
- Fix isErrTokenLimitExceeded test helper to use errors.Is instead of
  err.Error() string comparison so it stays correct if the error is
  ever wrapped

* docs(changelog): add v1.1.0 entry for push notification infrastructure

v1.0.2

Toggle v1.0.2's commit message
v1.0.2 — login cookie fix (HTTP installs) + full IANA timezone picker

v1.0.1

Toggle v1.0.1's commit message
v1.0.1 — security patch: Go 1.25.12 (GO-2026-5856 crypto/tls ECH priv…

…acy leak)

v1.0.0

Toggle v1.0.0's commit message
Fluidify Regen v1.0.0 — first stable release

v0.20.0

Toggle v0.20.0's commit message
v0.20.0 — security + bug-fix release

v0.19.1

Toggle v0.19.1's commit message
fix(sidebar): collapse settings by default, remove nav scrollbar

v0.19.0

Toggle v0.19.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
[OPE-184] Analytics: enterprise hook + user_id tracking for AI usage (#…

…123)

* docs(spec): add design spec for OPE-184 analytics dashboard

* feat(enterprise): add AnalyticsProvider hook + UserID on UsageEvent

Adds AnalyticsProvider interface with noopAnalytics stub (returns 402)
wired into enterprise.Hooks and registered at /api/v1/analytics in
routes.go. Extends UsageEvent with UserID *uuid.UUID and CostSummary
with ByUser []UserCostRow so the Pro costtracker can attribute AI spend
to individual users. Five AI handler call sites now extract the
authenticated user via middleware.GetLocalUser and populate UserID.

Closes OPE-184

* feat(analytics): replace coming-soon with Upgrade to Pro upsell page

* fix(analytics): point upsell CTA to GitHub repo instead of broken domain

v0.18.1

Toggle v0.18.1's commit message
feat(ui): move version to System Settings page; add AGPLv3 notice to …

…login/logout

v0.18.0

Toggle v0.18.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
[OPE-191] Show running app version in the UI (#122)

* fix(schedules): send RFC 3339 datetime for unavailability start/end dates

Backend CreateUnavailabilityRequest uses time.Time which requires RFC 3339
format; bare YYYY-MM-DD fails Go JSON unmarshal. Append T00:00:00Z on the
way out — backend truncates to date-only anyway.

* test(health): add failing tests for version field in health response [OPE-191]

* feat(health): add appVersion parameter to Health handler, return version in response [OPE-191]

* feat(serve): wire version ldflag variable through SetupRoutes to health endpoint [OPE-191]

* build(makefile): inject VERSION via ldflag in build target [OPE-191]

* build(docker): pass APP_VERSION build-arg as ldflag into Go binary [OPE-191]

* ci(release): pass APP_VERSION build-arg from git tag to Docker build [OPE-191]

* feat(frontend): add health API module with getHealth function [OPE-191]

* feat(sidebar): fetch and display app version below admin nav when expanded [OPE-191]

* fix(build): pass APP_VERSION to docker build; proxy /health in Vite dev server

v0.17.1

Toggle v0.17.1's commit message
ci(k8s): prune dangling Docker build cache before test suite

Corrupted BuildKit snapshots on the self-hosted runner caused
k3d image import to fail with 'parent snapshot does not exist'.
Pruning dangling cache at the start of each run prevents recurrence.