Skip to content

fix: deploy quick fixes#5085

Merged
perkinsjr merged 10 commits intomainfrom
deploy-quick-fixes
Feb 23, 2026
Merged

fix: deploy quick fixes#5085
perkinsjr merged 10 commits intomainfrom
deploy-quick-fixes

Conversation

@ogzhanolguncu
Copy link
Contributor

What does this PR do?

This PR fixes:

  • Safari network tab rendering issue
Screenshot 2026-02-19 at 15 28 47
  • Locks network tab to eliminate weird panning issues
  • Fixes hover issue of workplace switcher
Screenshot 2026-02-19 at 13 37 02
  • Makes sure when reading the RPS for sentinel we read the correct project's sentinel
  • Uses same default value for items in the /project/settings
  • Removes faulty default value for healthcheck setting
Screenshot 2026-02-19 at 13 36 57 - Removes `Environment Variables` and `Custom Domains` from project overview coz they are moved to settings.

How should this be tested?

  • Just trigger a deployment locally and check network tab
  • Play around with the UI a bit

Checklist

Required

  • Filled out the "How to test" section in this PR
  • Read Contributing Guide
  • Self-reviewed my own code
  • Commented on my code in hard-to-understand areas
  • Ran pnpm build
  • Ran pnpm fmt
  • Ran make fmt on /go directory
  • Checked for warnings, there are none
  • Removed all console.logs
  • Merged the latest changes from main onto my branch with git pull origin main
  • My changes don't cause any responsiveness issues

Appreciated

  • If a UI change was made: Added a screen recording or screenshots to this PR
  • Updated the Unkey Docs if changes were necessary

@vercel
Copy link

vercel bot commented Feb 19, 2026

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

Project Deployment Actions Updated (UTC)
dashboard Ready Ready Preview, Comment Feb 23, 2026 11:59am
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
engineering Ignored Ignored Preview Feb 23, 2026 11:59am

Request Review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 19, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6416654 and 72e9bb4.

📒 Files selected for processing (1)
  • web/apps/dashboard/app/(app)/[workspaceSlug]/projects/[projectId]/(overview)/deployments/[deploymentId]/network/deployment-network-view.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • web/apps/dashboard/app/(app)/[workspaceSlug]/projects/[projectId]/(overview)/deployments/[deploymentId]/network/deployment-network-view.tsx

📝 Walkthrough

Walkthrough

This pull request updates the deployment network visualization with a locked canvas state, refactors node styling and health indicator layouts, renames the network generation model from regions to sentinels, modifies settings forms to remove empty-state labels, and adds Safari-specific CSS fixes for foreignObject rendering.

Changes

Cohort / File(s) Summary
Infinite Canvas Locked State
deployment-network-view.tsx, infinite-canvas.tsx
Adds locked prop to InfiniteCanvas, disabling all mouse/wheel interactions and zoom momentum when activated. Adjusts canvas origin and spacing configuration.
Tree Node Sizing & Rendering
tree-element-node.tsx, tree-layout.tsx, canvas-boundary.tsx
Introduces size prop to TreeElementNode for explicit width/height specification. Updates tree rendering to pass node dimensions and Safari-specific fix flag for foreignObject compatibility.
Node Layout & Health Indicators
node-wrapper.tsx, health-banner.tsx, status-dot.tsx, status-indicator.tsx, skeleton-node.tsx, skeleton-layout.tsx
Refactors node styling by removing relative positioning, simplifying hover effects, and converting gradient layouts to CSS grid. Updates status indicators with grid-based positioning and removes variant prop. Removes skeleton node entries and simplifies status indicator placeholders.
Live Indicator
live.tsx
Removes variant prop from StatusDot component call, relying on default behavior.
Network Generation Schema Refactor
tree-generate.tsx, generate.ts, get-sentinel-rps.ts
Renames deployment network configuration from regions/instancesPerRegion to sentinels/instancesPerSentinel. Updates presets, health distributions, and sentinel selection logic. Adds projectId filtering for sentinel lookups. Introduces mapRegionToFlag utility for flag code generation.
Settings Forms Empty State Handling
command.tsx, custom-domains/index.tsx, env-vars/index.tsx, regions.tsx, healthcheck/index.tsx, form-setting-card.tsx
Removes "None" or default labels from settings cards when no data is present. FormSettingCard adds nullish coalescing fallback to conditionally display "None" label. Healthcheck component refactored with hasPreviousData flag.
Project Page & Navigation
[projectId]/page.tsx, team-switcher.tsx
Removes Custom Domains and Environment Variables sections from project page. Adds hover background styling to workspace switcher menu items.
CSS & Animation Updates
tailwind.css, tailwind.config.js
Adds Safari-specific .safari-fo-fix CSS workaround for foreignObject rendering with animation adjustments. Changes marquee animation from transform-based to text-indent-based.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 10.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'fix: deploy quick fixes' is vague and uses generic terminology like 'quick fixes' that doesn't convey the specific changes made. Consider using a more specific title that highlights the main fix, such as 'fix: Safari network tab rendering and deployment settings issues' or 'fix: multiple deployment UI and settings fixes'.
✅ Passed checks (1 passed)
Check name Status Explanation
Description check ✅ Passed The PR description lists the fixes being addressed and provides testing instructions, but the required checklist items are not marked complete, indicating incomplete preparation for review.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch deploy-quick-fixes

Tip

Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
web/apps/dashboard/app/(app)/[workspaceSlug]/projects/[projectId]/(overview)/deployments/[deploymentId]/network/unkey-flow/components/simulate/tree-generate.tsx (1)

224-258: ⚠️ Potential issue | 🟡 Minor

Set min="1" for instance sliders to prevent empty sentinel groups.

The slider currently allows 0 instances per sentinel, which would create sentinels with no children in the visualization. While this doesn't cause a divide-by-zero error (the generator uses Array.from({ length: instanceCount }, ...) which handles 0 gracefully), it produces semantically invalid network topologies. All preset configurations enforce min >= 1, so the slider should do the same.

Fix
-                min="0"
+                min="1"
...
-                min="0"
+                min="1"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@web/apps/dashboard/app/`(app)/[workspaceSlug]/projects/[projectId]/(overview)/deployments/[deploymentId]/network/unkey-flow/components/simulate/tree-generate.tsx
around lines 224 - 258, The instance-per-sentinel range inputs allow 0
currently; change both input elements that read/write
customConfig.instancesPerSentinel (the two <input type="range"> controls whose
onChange call setCustomConfig) to use min="1" instead of min="0" so sliders
cannot select zero, and ensure the onChange handlers clamp/adjust the paired
value if necessary to keep min <= max (update setCustomConfig logic in those
handlers to enforce the constraint while preserving generateMutation.isLoading
disabling).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@web/apps/dashboard/app/`(app)/[workspaceSlug]/projects/[projectId]/(overview)/deployments/[deploymentId]/network/unkey-flow/components/nodes/node-wrapper/health-banner.tsx:
- Line 20: Replace the Tailwind template literal width class which the JIT can't
detect by moving the dynamic width into an inline style: keep the static
Tailwind classes (e.g., "mx-auto" and "-m-[20px]") on the div in the
HealthBanner component and add a style prop that sets width using
DEFAULT_NODE_WIDTH (e.g., style={{ width: `${DEFAULT_NODE_WIDTH}px` }} or
equivalent), removing the `w-[${DEFAULT_NODE_WIDTH}px]` from the className.

In
`@web/apps/dashboard/app/`(app)/[workspaceSlug]/projects/[projectId]/(overview)/deployments/[deploymentId]/network/unkey-flow/components/tree/tree-element-node.tsx:
- Around line 1-35: The TreeElementNode component signature now requires a size
prop but canvas-boundary.tsx's error boundary fallback (the <TreeElementNode> at
line 11) is missing it; update that TreeElementNode usage to include a size
object (e.g., width: 400, height: 250) along with the existing id and position
so it matches how tree-layout.tsx passes size (NODE_SIZES[...] ) and preserves
the doubling logic in TreeElementNode.

In `@web/apps/dashboard/lib/trpc/routers/deploy/network/generate.ts`:
- Around line 14-19: The schema allows instancesPerSentinel.min >
instancesPerSentinel.max which can produce a negative range for getRandomInt;
update generatorConfigSchema to add a cross-field validation (using z.refine or
superRefine) on the instancesPerSentinel object to ensure min <= max and return
a clear validation error message; reference the instancesPerSentinel object and
its min/max fields in the refinement so the constraint is enforced before any
code (e.g., where getRandomInt is used) runs.

---

Outside diff comments:
In
`@web/apps/dashboard/app/`(app)/[workspaceSlug]/projects/[projectId]/(overview)/deployments/[deploymentId]/network/unkey-flow/components/simulate/tree-generate.tsx:
- Around line 224-258: The instance-per-sentinel range inputs allow 0 currently;
change both input elements that read/write customConfig.instancesPerSentinel
(the two <input type="range"> controls whose onChange call setCustomConfig) to
use min="1" instead of min="0" so sliders cannot select zero, and ensure the
onChange handlers clamp/adjust the paired value if necessary to keep min <= max
(update setCustomConfig logic in those handlers to enforce the constraint while
preserving generateMutation.isLoading disabling).

@vercel vercel bot temporarily deployed to Preview – dashboard February 19, 2026 12:47 Inactive
@vercel vercel bot temporarily deployed to Preview – engineering February 20, 2026 21:07 Inactive
@vercel vercel bot temporarily deployed to Preview – dashboard February 20, 2026 21:07 Inactive
@vercel vercel bot temporarily deployed to Preview – dashboard February 23, 2026 11:59 Inactive
@perkinsjr perkinsjr merged commit 1c87089 into main Feb 23, 2026
13 checks passed
@perkinsjr perkinsjr deleted the deploy-quick-fixes branch February 23, 2026 12:00
MichaelUnkey pushed a commit that referenced this pull request Feb 26, 2026
* fix: fetch correct deployment+sentinel

* fix: add missing team switcher hover indicator

* refactor: use the same empty text

* fix: lock network view and fix generate dummy network

* fix: safari rendering issue of network

* chore: fmt

* fix: build

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com>
Co-authored-by: James P <james@unkey.com>
github-merge-queue bot pushed a commit that referenced this pull request Mar 17, 2026
* test keys table

* re org and exports

* error fix

* Apos

* chore: remove deployment breadcrumbs (#5019)

* fix: cleanup project side nav

* feat: simplify deployment overview page

only show build logs until it's built, then show domains and network

* chore: clean up nav

* fix(clickhouse): improve latest keys used queries for high volume (150M +)  (#4959)

* fix(clickhouse): improve clickhouse query for key logs and add  new table and mv for latest keys used

* fix valid/error count = 0 scenario

* remove identity_id from order by

* wrap identity_id with aggregating function since its removed from the order key

---------

Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com>

* fix: domain refetch and promotion disable rule (#5013)

* fix: domain refetch and promotion disable rule

* fix: regression

---------

Co-authored-by: Andreas Thomas <dev@chronark.com>

* refactor: move custom domains to tanstack db (#5017)

* refactor: move custom domains to tanstack db

* fix: comment

* fix: delete mutation

* remove: unnecessary query

* remove agent (#5021)

* remove agent

* remove agent

* chore: vault in dashboard (#5023)

* remove agent

* remove agent

* use vault in dashboard

* remove

* project domain (#5022)

* fix: cleanup project side nav

* feat: simplify deployment overview page

only show build logs until it's built, then show domains and network

* chore: clean up nav

* feat: add per-project sticky domain and only display that

* chore: use vault in api (#5024)

* chore: use vault in api

* chore: use vault in api

* fix harness

* use memory test

* vault container go start

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* fix: Make GH callback dynamic (#5029)

* dunno

* nextjs should allow a setting that says dynamic

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* allow longer timeouts (#5032)

* docs: add ratelimit.unkey.com benchmark links to ratelimiting docs

Add references to real-time performance benchmarks in:
- introduction.mdx: new 'Performance at scale' accordion
- modes.mdx: link after latency claim

Presents benchmarks as capability demonstration rather than comparison.

* docs: add description to cache store interface page (#5037)

Add missing SEO description to frontmatter

Generated-By: mintlify-agent

Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
Co-authored-by: Andreas Thomas <dev@chronark.com>

* docs: remove orphaned SDK documentation (#5033)

Remove Spring Boot Java, Rust, and Elixir SDK docs that are not linked in navigation and appear to be outdated/unmaintained.

Generated-By: mintlify-agent

Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
Co-authored-by: Andreas Thomas <dev@chronark.com>

* No data

* add bg

* rework release (#5044)

* rework release

* rework release

* feat: generate rpc wrappers (#5028)

* feat: generate rpc wrappers

* bazel happyier

* more changes

* more changes

* move path

* delete old files (#5043)

* fix: rabbit comments

---------

Co-authored-by: Oz <21091016+ogzhanolguncu@users.noreply.github.com>

* feat/gossip (#5015)

* add a gossip implementation

* add gossip to sentinel/frontline

* add message muxing

* sentinel fun

* cleansings

* cleansings

* cleansings

* cleansings

* use oneof

* fix bazel happiness

* do some changies

* exportoneof

* more cool fancy thingx

* change gateway choosing

* add label

* adjjust some more

* adjjust some more

* fixa test

* goodbye kafka

* fix: bazel

* rename gateway -> ambassador

* add docs

* fix: rabbit comments

* [autofix.ci] apply automated fixes

* idfk

* more changes

* more changes

* fix ordering

* fix missing files

* fix test

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* fix: retry hubble ui (#5056)

* fix: wait for cillium policy until CRDs are ready (#5059)

* fix: retry cillium policy until CRDs are ready

* fix: blocks until all system pods are ready

* deployment build screen v1 (#5042)

* fix: cleanup project side nav

* feat: simplify deployment overview page

only show build logs until it's built, then show domains and network

* feat: new build screen for ongoing deployments

* fix: table column typo

* fix: update copy to remove mention of analytics deletion (#5067)

* fix typo (#5039)

* rfc: sentinel middlewares (#5041)

* fix: cleanup project side nav

* feat: simplify deployment overview page

only show build logs until it's built, then show domains and network

* feat: middleware rfc

* Update svc/sentinel/proto/buf.gen.ts.yaml

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com>

* feat: config files (#5045)

* fix: cleanup project side nav

* feat: simplify deployment overview page

only show build logs until it's built, then show domains and network

* feat: add pkg/config for struct-tag-driven TOML/YAML/JSON configuration

Introduces a new configuration package that replaces environment variable
based configuration with file-based config. Features:

- Load and validate config from TOML, YAML, or JSON files
- Struct tag driven: required, default, min/max, oneof, nonempty
- Environment variable expansion (${VAR} and ${VAR:-default})
- JSON Schema generation for editor autocompletion
- Collects all validation errors instead of failing on first
- Custom Validator interface for cross-field checks

Also adds cmd/generate-config-docs for generating MDX documentation
from Go struct tags, and a Makefile target 'config-docs'.

Amp-Thread-ID: https://ampcode.com/threads/T-019c672a-0e8e-7138-b0ab-27cdbeaca7ba
Co-authored-by: Amp <amp@ampcode.com>

* remove gen

* clean up

* feat(api): migrate API service to file-based TOML config (#5046)

* feat(api): migrate API service to file-based config

Migrate the API service from environment variables to TOML file-based
configuration using pkg/config. Replaces all UNKEY_* env vars with a
structured api.toml config file.

Changes:
- Rewrite svc/api/config.go with tagged Config struct
- Update svc/api/run.go to use new config fields
- Update cmd/api/main.go to accept --config flag
- Add dev/config/api.toml for docker-compose
- Update dev/k8s/manifests/api.yaml with ConfigMap
- Regenerate config docs from struct tags

Amp-Thread-ID: https://ampcode.com/threads/T-019c672a-0e8e-7138-b0ab-27cdbeaca7ba
Co-authored-by: Amp <amp@ampcode.com>

* feat(vault): migrate Vault service to file-based TOML config (#5047)

* feat(vault): migrate Vault service to file-based config

Migrate the Vault service from environment variables to TOML file-based
configuration using pkg/config.

Changes:
- Rewrite svc/vault/config.go with tagged Config struct
- Update svc/vault/run.go to use new config fields
- Update cmd/vault/main.go to accept --config flag
- Add dev/config/vault.toml for docker-compose
- Update dev/k8s/manifests/vault.yaml with ConfigMap
- Remove UNKEY_* env vars from docker-compose and k8s

Amp-Thread-ID: https://ampcode.com/threads/T-019c672a-0e8e-7138-b0ab-27cdbeaca7ba
Co-authored-by: Amp <amp@ampcode.com>

* feat(ctrl): migrate Ctrl API and Worker to file-based TOML config (#5048)

* feat(ctrl): migrate Ctrl API and Worker services to file-based config

Migrate both ctrl-api and ctrl-worker from environment variables to TOML
file-based configuration using pkg/config.

Changes:
- Rewrite svc/ctrl/api/config.go and svc/ctrl/worker/config.go
- Update run.go files to use new config fields
- Update cmd/ctrl/api.go and worker.go to accept --config flag
- Add dev/config/ctrl-api.toml and ctrl-worker.toml
- Update dev/k8s/manifests/ctrl-api.yaml and ctrl-worker.yaml with ConfigMaps
- Remove UNKEY_* env vars from docker-compose and k8s manifests

* feat(krane): migrate Krane service to file-based TOML config (#5049)

* feat(krane): migrate Krane service to file-based config

Migrate the Krane container orchestrator from environment variables to
TOML file-based configuration using pkg/config.

Changes:
- Rewrite svc/krane/config.go with tagged Config struct
- Update svc/krane/run.go to use new config fields
- Update cmd/krane/main.go to accept --config flag
- Add dev/config/krane.toml for docker-compose
- Update dev/k8s/manifests/krane.yaml with ConfigMap
- Remove UNKEY_* env vars from docker-compose and k8s

Amp-Thread-ID: https://ampcode.com/threads/T-019c672a-0e8e-7138-b0ab-27cdbeaca7ba
Co-authored-by: Amp <amp@ampcode.com>

* feat(frontline): migrate Frontline service to file-based TOML config (#5050)

* feat(frontline): migrate Frontline service to file-based config

Migrate the Frontline reverse proxy from environment variables to TOML
file-based configuration using pkg/config.

Changes:
- Rewrite svc/frontline/config.go with tagged Config struct
- Update svc/frontline/run.go to use new config fields
- Update cmd/frontline/main.go to accept --config flag
- Update dev/k8s/manifests/frontline.yaml with ConfigMap
- Remove UNKEY_* env vars from k8s manifest

Amp-Thread-ID: https://ampcode.com/threads/T-019c672a-0e8e-7138-b0ab-27cdbeaca7ba
Co-authored-by: Amp <amp@ampcode.com>

* feat(preflight): migrate Preflight service to file-based TOML config (#5051)

* feat(preflight): migrate Preflight service to file-based config

Migrate the Preflight webhook admission controller from environment
variables to TOML file-based configuration using pkg/config.

Changes:
- Rewrite svc/preflight/config.go with tagged Config struct
- Update svc/preflight/run.go to use new config fields
- Update cmd/preflight/main.go to accept --config flag
- Update dev/k8s/manifests/preflight.yaml with ConfigMap
- Remove UNKEY_* env vars from k8s manifest

Amp-Thread-ID: https://ampcode.com/threads/T-019c672a-0e8e-7138-b0ab-27cdbeaca7ba
Co-authored-by: Amp <amp@ampcode.com>

* feat(sentinel): migrate Sentinel service to file-based config (#5052)

Migrate the Sentinel sidecar from environment variables to TOML
file-based configuration using pkg/config. This is the final service
migration in the config stack.

Changes:
- Rewrite svc/sentinel/config.go with tagged Config struct
- Update svc/sentinel/run.go to use new config fields
- Update cmd/sentinel/main.go to accept --config flag
- Update dev/docker-compose.yaml: replace env vars with TOML volume
  mounts for all migrated services (api, vault, krane, ctrl-api,
  ctrl-worker)
- Minor formatting fix in pkg/db generated code

---------

Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>

* fix: bad config

* remove unnecessary tls config for ctrl api

* fix: error

* fix: do not log config content

* ix: remove kafka

* fix: replica

* fix: return err

* fix: only overwrite frontline id if missing

* fix: observability

* fix: otel

* fix: redundant config

* fix: reuse tls

* fix: consolidate

* fix: use shared configs

* fix: config

* fix: something

* Update pkg/config/common.go

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: vault startup

* fix: instanceid

* fix: vault config

* fix: make configs required

* fix: everything works again

---------

Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* clean deployment url label (#4976)

* clean deployment url

* fix conversion error and maintain single source of truth

---------

Co-authored-by: Andreas Thomas <dev@chronark.com>
Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com>

* feat: New deploy settings (#5073)

* feat: add github section

* feat: Add icons

* feat: add new sections

* feat: add settingsgroup

* feat: add region selection

* feat: add instances

* feat: add memory and cpu section

* feat: add sections

* feat: add health check

* feat: add scaling

* fix: get rid of redundant prop

* refactor: Add toasts to mutations

* refactor: rename component

* feat: add port section

* feat: fix overlapping borders

* refactor: fix healthcheck tRPC

* feat: add command section

* feat: add env section

* fix: finalize env-vars

* refactor: finalize

* feat: Add custom domains

* fix: overflwo

* feat: make tRPC route for each mutation

* fix: displayValue styles

* refactor: tidy

* fix: revert accidental changes

* feat: add cname table

* fix: github styling issues

* refactor: tidy

* refactor: rename

* fix: linter

* fix: dynamic form issue

* feat: allow env selection

* chore: tidy

* fix: use same chevron

* fix: use certmanager if availiable otherwise certfile (#5076)

* fix: use certmanager if availiable otherwise certfile

* feat: make tls enabled by default

now you need to explicitely pass tls.disabled=true
if not, we fail during startup.

also renamed some port vars to make it obvious what they are used for

* chore: log candidates for easier debugging

* fix: use static certs first

---------

Co-authored-by: chronark <dev@chronark.com>

* feat: sentinel key verification middleware (#5079)

* feat: key-sentinel-middleware

* fix error pages (#5083)

* fix error pages

* remove test

* move some files

* Update svc/frontline/internal/errorpage/error.go.tmpl

Co-authored-by: Andreas Thomas <dev@chronark.com>

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Andreas Thomas <dev@chronark.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* add rl headers.

* feat: new ui and fixed a bunch of stuff

* Update svc/sentinel/engine/match.go

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: coderabbit

---------

Co-authored-by: Andreas Thomas <dev@chronark.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* clean up after sentinel middleware (#5088)

* feat: key-sentinel-middleware

* fix error pages (#5083)

* fix error pages

* remove test

* move some files

* Update svc/frontline/internal/errorpage/error.go.tmpl

Co-authored-by: Andreas Thomas <dev@chronark.com>

* [autofix.ci] apply automated fixes

---------

Co-authored-by: Andreas Thomas <dev@chronark.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* add rl headers.

* feat: new ui and fixed a bunch of stuff

* Update svc/sentinel/engine/match.go

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: coderabbit

* chore: clean up old columns

* fix: db

---------

Co-authored-by: Flo <flo@unkey.com>
Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix proto type (#5093)

* fix: cleanup project side nav

* feat: simplify deployment overview page

only show build logs until it's built, then show domains and network

* fix: runtime exception due to gaslighting type

* fix: Modals with combo box work again  (#5002)

* chore: remove chproxy routes (#5101)

* chore: remove chproxy routes

* refactor: move prometheus metrics to scoped packages (#5102)

* remove the hand holding (#5108)

* feat: gossip metrics (#5107)

* fix: Make identity slugs copyable (#5100)

* fix: make me copy

* Update web/apps/dashboard/app/(app)/[workspaceSlug]/authorization/permissions/components/table/components/assigned-items-cell.tsx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* refactor: useDeployment hook usage (#5086)

* refactor: useDeployment hook usage

* fix: remove redundant check

* feat: i need more metrics (#5115)

* docs: Python and Go examples (#5058)

* Add Python and Go SDK documentation

- Add Go quickstart guide with stdlib, Gin, and Echo examples
- Add Python quickstart guide with FastAPI, Flask, Django
- Add Go cookbook: stdlib, Gin, Echo middleware recipes
- Add Python cookbook: FastAPI rate limiting recipe

All content uses Unkey v2 API only.

* Add final Python cookbook recipe and 5-minutes guide

* Update docs.json sidebar navigation

- Add Go and Python quickstart guides to Framework Guides
- Add Go and Python cookbook recipes to Recipes section
- Remove duplicate 5-minutes quickstart file

* Add Go examples to quickstart and reorganize cookbook by language

- Add Go code examples to /quickstart/quickstart.mdx for key creation and verification
- Reorganize cookbook recipes into subsections: TypeScript, Go, Python, General
- Keep existing TypeScript and Python examples in quickstart

* Update cookbook index with new Go and Python recipes

* Fix code issues in Go and Python documentation

- Fix int to string conversion in go-gin-middleware (use strconv)
- Fix middleware composition in go-stdlib-middleware
- Fix wait calculation in python-fastapi-ratelimit (use total_seconds)
- Fix headers attachment in python-fastapi-ratelimit (use JSONResponse)
- Fix nil pointer dereference in quickstart/go
- Fix unsafe type assertion in quickstart/go

* Fix async/sync issue and nil pointer in quickstart docs

- Use verify_key_async in Python async route
- Add nil check for result.Code in Go quickstart

* Fix more code issues in documentation

- Fix GetUnkeyResult type assertion in go-gin-middleware
- Fix imports in python-fastapi-ratelimit (add JSONResponse, remove unused timedelta)
- Update basic rate limit example to use async API with context manager
- Add missing os import in Django settings snippet

* Fix missing os import in python-flask-auth.mdx

* Fix unsafe type assertions in Go middleware docs

- Fix RequirePermission in go-echo-middleware with safe type assertion
- Fix GetUnkeyResult in go-echo-middleware with safe type assertion
- Fix RequirePermission in go-gin-middleware with safe type assertion

* Fix error handling in Python docs - replace ApiError with UnkeyError

* Update legacy analytics documentation

- Replace outdated /apis/features/analytics.mdx with minimal reference page
- Remove analytics from API Keys sidebar in docs.json
- Add redirect from /apis/features/analytics to /analytics/overview

* fix

* Update to mint

* Fix critical type assertion issues in go-gin-middleware

- Store pointer to struct in context (not value) for type assertion compatibility
- Add checked type assertion in RequireRole with proper error handling

* Add it back

* fix the comma

* revert

* Update go examples

* cookbook update

* update quickstart

* remove analytics page that is redirected

* Update web/apps/docs/cookbook/go-echo-middleware.mdx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update web/apps/docs/cookbook/go-echo-middleware.mdx

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix: deploy quick fixes (#5085)

* fix: fetch correct deployment+sentinel

* fix: add missing team switcher hover indicator

* refactor: use the same empty text

* fix: lock network view and fix generate dummy network

* fix: safari rendering issue of network

* chore: fmt

* fix: build

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com>
Co-authored-by: James P <james@unkey.com>

* docs: remove duplicate onboarding page (#5035)

Remove quickstart/onboarding/onboarding-api.mdx which duplicates content from the new quickstart. Redirects already exist in docs.json.

Generated-By: mintlify-agent

Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
Co-authored-by: Andreas Thomas <dev@chronark.com>
Co-authored-by: James P <james@unkey.com>

* docs: remove deprecated Vercel integration page (#5034)

The Vercel integration is currently not supported. Remove the page to avoid confusing users.

Generated-By: mintlify-agent

Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
Co-authored-by: James P <james@unkey.com>

* fix: schema cache (#5116)

* fix: do background gossip connect (#5119)

* fix: do background gossip connect

* bazel happy

* chore: debug wan failures (#5124)

* chore: debug wan failures

* add log writer

* bazel ..........

* bazel ..........

* fix: a user cannot click outside of the org selection modal (#5031)

* fix: a user cannot click outside of the org selection modal

* use errorMessage instead of hard coding messages

* restore x closing functionality

* fix rabbit, fix flash of empty state

* clear last used workspace when auto-selection fails

* remove unused conditional

---------

Co-authored-by: James P <james@unkey.com>

* sentinel prewarm cache (#5071)

* fix: cleanup project side nav

* feat: simplify deployment overview page

only show build logs until it's built, then show domains and network

* feat: sentinels prewarm their cache

it's not optmized, but pretty neat

---------

Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com>

* fix: ignore empty wan (#5122)

Co-authored-by: Andreas Thomas <dev@chronark.com>
Co-authored-by: James P <james@unkey.com>

* docs: move docs (#5125)

* refactor: deploy settings tanstack (#5104)

* refactor: move them to tanstack

* refactor: tidy up

* feat: add env provider to decide what env we are on

* refactor: tidy

* feat: add scroll into view for settingcard

* fix: bg

* refactor: remove toasts from env-vars

* chore: tidy

* fix: build

* feat: vault bulk en/decrypt (#5127)

* feat: vault bulk en/decrypt

* oops wrong file

* cleanup proto

* [autofix.ci] apply automated fixes

* cleanup

* cleanup

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* feat: trace generated rpc clients (#5128)

* feat: trace generated rpc clients

* ignore not found

* fix: docs generator paths (#5136)

* fix: retry memberlist creation (#5134)

* fix: retry memberlist creation

* remove comments

* move to const

* fix: Restore filtering on logs (#5138)

* Restore filtering on logs

Restores filtering on the logs.

* [autofix.ci] apply automated fixes

* fmt

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* fix: resolve dns to ip (#5139)

* fix: resolve dns to ip

* rabbit comments

* Fix/issue 5132 billing section widths (#5140)

* fix: Billing page has inconsistent section widths (#5132)

Standardized all SettingCard components to use consistent width classes:
- Updated Usage component: contentWidth changed from 'w-full lg:w-[320px]' to 'w-full'
- Updated CancelAlert component: contentWidth changed from 'w-full lg:w-[320px]' to 'w-full'
- Updated Billing Portal in client.tsx: contentWidth changed from 'w-full lg:w-[320px]' to 'w-full'
- Updated CurrentPlanCard component: removed min-w-[200px] from className for consistency

All billing sections now use contentWidth='w-full' for consistent layout.

Fixes #5132

* Fix billing and setting cards

* [autofix.ci] apply automated fixes

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* pnpm i

* No virtualization

* pagination footer

* sorting and pagination changes

* refactor

* exports

* move data-table to ui

* install

* fmt

* Footer style changes

* sorting and pagination changes

* sorting and footer loading fix

* cleanup

* prefetch pages

* changes for review comments from rabbit and meg

* Ref fix and removed not needed import

* [autofix.ci] apply automated fixes

* sorting fix and key navigation

* review changes mess

* minor rabbit changes

* Update loading-indicator animation delay

* style change on pageination footer

* ref type change

---------

Co-authored-by: Andreas Thomas <dev@chronark.com>
Co-authored-by: Meg Stepp <mcstepp@users.noreply.github.com>
Co-authored-by: Flo <53355483+Flo4604@users.noreply.github.com>
Co-authored-by: Oz <21091016+ogzhanolguncu@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: James P <james@unkey.com>
Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
Co-authored-by: gui martins <guilhermev2huehue@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: Vansh Malhotra <vansh.malhotra439@gmail.com>
Co-authored-by: Flo <flo@unkey.com>
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.

4 participants