Skip to content

feat: delete dimensions and releases; rich release views - #385

Open
yuvrajjsingh0 wants to merge 6 commits into
mainfrom
feat/delete-dimensions-releases-rich-release-views
Open

feat: delete dimensions and releases; rich release views#385
yuvrajjsingh0 wants to merge 6 commits into
mainfrom
feat/delete-dimensions-releases-rich-release-views

Conversation

@yuvrajjsingh0

@yuvrajjsingh0 yuvrajjsingh0 commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features

    • Added Custom and Auto-generated Release Views with filtering and dedicated navigation.
    • Added deletion releases for removing dimension-specific configurations, including status tracking and safeguards.
    • Added deletion badges and explanatory details throughout release pages.
    • Added safe dimension deletion with checks for active releases and helpful blocking details.
    • Added warnings and validation when release targeting references missing dimensions.
    • Dimension keys now preserve capitalization while converting spaces to underscores.
  • Documentation

    • Updated guidance for dimensions, release views, deletion workflows, and deleted targeting dimensions.

@semanticdiff-com

semanticdiff-com Bot commented Aug 12, 2026

Copy link
Copy Markdown

Review changes with  SemanticDiff

Changed Files
File Status
  airborne_dashboard/app/dashboard/[orgId]/[appId]/dimensions/page.tsx  47% smaller
  airborne_dashboard/components/release/steps/TargetingStep.tsx  36% smaller
  airborne_dashboard/app/dashboard/[orgId]/[appId]/page.tsx  33% smaller
  airborne_dashboard/app/dashboard/[orgId]/[appId]/views/page.tsx  28% smaller
  airborne_dashboard/components/releaseViews/ViewReleaseInfo.tsx  14% smaller
  airborne_server/src/organisation/application/dimension.rs  12% smaller
  airborne_dashboard/app/dashboard/[orgId]/[appId]/releases/[releaseId]/page.tsx  12% smaller
  airborne_server/src/release/utils.rs  3% smaller
  airborne_dashboard/app/dashboard/[orgId]/[appId]/releases/page.tsx  3% smaller
  airborne_server/src/release.rs  3% smaller
  airborne_dashboard/app/dashboard/[orgId]/[appId]/releases/[releaseId]/clone/page.tsx  0% smaller
  airborne_dashboard/components/dimensions/DeleteDimension.tsx  0% smaller
  airborne_dashboard/components/release/ReleaseFormContext.tsx  0% smaller
  airborne_dashboard/components/releaseViews/DeleteSliceRelease.tsx  0% smaller
  airborne_dashboard/types/release.ts  0% smaller
  airborne_docs/docs/dashboard/dimensions.mdx Unsupported file format
  airborne_docs/docs/dashboard/releases.mdx Unsupported file format
  airborne_docs/docs/dashboard/views.mdx Unsupported file format
  airborne_docs/static/docs_static/img/screenshots/dark/dimension-delete-blocked.png Unsupported file format
  airborne_docs/static/docs_static/img/screenshots/dark/dimensions-list.png Unsupported file format
  airborne_docs/static/docs_static/img/screenshots/dark/releases-list.png Unsupported file format
  airborne_docs/static/docs_static/img/screenshots/dark/views-delete-release.png Unsupported file format
  airborne_docs/static/docs_static/img/screenshots/dark/views.png Unsupported file format
  airborne_docs/static/docs_static/img/screenshots/light/dimension-delete-blocked.png Unsupported file format
  airborne_docs/static/docs_static/img/screenshots/light/dimensions-list.png Unsupported file format
  airborne_docs/static/docs_static/img/screenshots/light/releases-list.png Unsupported file format
  airborne_docs/static/docs_static/img/screenshots/light/views-delete-release.png Unsupported file format
  airborne_docs/static/docs_static/img/screenshots/light/views.png Unsupported file format
  airborne_server/migrations/20260812120000_add_view_type_to_release_views/down.sql Unsupported file format
  airborne_server/migrations/20260812120000_add_view_type_to_release_views/up.sql Unsupported file format
  airborne_server/migrations/20260812130000_add_pending_delete_to_release_views/down.sql Unsupported file format
  airborne_server/migrations/20260812130000_add_pending_delete_to_release_views/up.sql Unsupported file format
  airborne_server/src/organisation/application/dimension/types.rs  0% smaller
  airborne_server/src/release/types.rs  0% smaller
  airborne_server/src/utils.rs  0% smaller
  airborne_server/src/utils/db/models.rs  0% smaller
  airborne_server/src/utils/db/schema.rs  0% smaller
  airborne_server/src/utils/release_view.rs  0% smaller

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9c602a77-7271-4661-9011-c9ea25eb8ef0

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

The change adds custom and auto-generated release views, deletion releases, pending deletion tracking, dimension deletion authorization, and missing-dimension validation in release targeting. Dashboard pages and documentation expose the new states and workflows.

Changes

Release view deletion workflow

Layer / File(s) Summary
Release-view storage and lifecycle primitives
airborne_server/migrations/..., airborne_server/src/utils/release_view.rs, airborne_server/src/utils/db/*
Release views now store their type and pending deletion release. Shared helpers create canonical auto-generated views and settle pending deletions.
Delete-release API and release lifecycle
airborne_server/src/release.rs, airborne_server/src/release/types.rs, airborne_server/src/release/utils.rs
The server creates deletion releases for eligible views, validates dimensions and pending operations, reports deletion metadata, and settles or clears pending state.
Dimension safety and release-view API
airborne_server/src/organisation/application/dimension.*
The API reports active releases targeting dimensions, blocks unsafe dimension deletion, filters views by type, and prevents direct changes to auto-generated views.
Release views and release indicators
airborne_dashboard/app/dashboard/[orgId]/[appId]/views/page.tsx, airborne_dashboard/components/releaseViews/DeleteSliceRelease.tsx, airborne_dashboard/app/dashboard/[orgId]/[appId]/releases/*
The dashboard filters view types, displays pending deletion state, supports slice deletion, and labels deletion releases.
Dimension deletion and targeting validation
airborne_dashboard/app/dashboard/[orgId]/[appId]/dimensions/page.tsx, airborne_dashboard/components/dimensions/*, airborne_dashboard/components/release/*, airborne_docs/docs/dashboard/*
Dimension deletion is permission-gated and release-aware. Targeting blocks missing dimensions. Documentation describes the updated view and deletion workflows.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Dashboard
  participant DeleteSliceRelease
  participant DeleteReleaseAPI
  participant ReleaseViewStore
  participant ReleaseExperiment
  Dashboard->>DeleteSliceRelease: confirm view deletion
  DeleteSliceRelease->>DeleteReleaseAPI: POST view ID
  DeleteReleaseAPI->>ReleaseViewStore: validate view and pending state
  DeleteReleaseAPI->>ReleaseExperiment: create deletion release
  DeleteReleaseAPI->>ReleaseViewStore: mark pending deletion
  ReleaseExperiment-->>Dashboard: display deletion release status
Loading

Poem

A rabbit clicks “Delete” with care,
While views and releases share a chair.
Missing dims raise flags up high,
Pending changes wait nearby.
The dashboard badges softly glow.
Hop, hop—the safer workflows grow!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the pull request's main changes: deleting dimensions and releases and enhancing release views.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/delete-dimensions-releases-rich-release-views

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 7

Caution

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

⚠️ Outside diff range comments (2)
airborne_dashboard/components/release/steps/TargetingStep.tsx (1)

42-66: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

A failed dimension fetch flags every rule as deleted and blocks the wizard.

finally sets dimensionsLoaded to true even when the request fails. dimensions then stays [], so line 65 marks every rule dimension as unknown and canProceedToStep(2) returns false. Each card also shows "no longer exists", which is wrong. A transient network error therefore blocks release creation with a misleading message.

Set the flag only after a successful load.

🐛 Proposed fix
         setDimensions(data);
+        setDimensionsLoaded(true);
       } catch (err) {
         console.error("Error fetching dimensions:", err);
-      } finally {
-        setDimensionsLoaded(true);
       }
     };
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@airborne_dashboard/components/release/steps/TargetingStep.tsx` around lines
42 - 66, Update the dimension-loading effect in TargetingStep so
dimensionsLoaded is set to true only after apiFetch successfully returns and
setDimensions completes; remove the unconditional finally update. Keep the
existing unknown-dimension calculation gated by dimensionsLoaded, so failed
requests do not mark all targeting rules as deleted or block the wizard.
airborne_dashboard/app/dashboard/[orgId]/[appId]/views/page.tsx (1)

78-119: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Discard stale list responses after the filter changes.

fetchViewsList captures filterType and always writes to viewsList. If a user changes the filter twice quickly, the earlier request can resolve last and populate the list with views for the previous filter. The list then shows the wrong view types until the next refetch.

Track the active request and ignore outdated responses.

🛠️ Proposed fix using a request token
+  const requestIdRef = useRef(0);
+
   const fetchViewsList = async (pageNum: number = 1, append: boolean = false) => {
+    const requestId = ++requestIdRef.current;
     if (append) {
       setIsLoadingMore(true);
     } else {
       setIsLoading(true);
     }
 
     try {
       const res: ReleaseViewListResponse = await apiFetch(
         `/organisations/applications/dimension/release-view/list`,
         {
           query: {
             page: pageNum,
             count: 20,
             ...(filterType !== ViewTypeFilter.ALL ? { view_type: filterType } : {}),
           },
         },
         {
           token,
           org,
           app,
         }
       );
 
+      if (requestId !== requestIdRef.current) return;
+
       if (append) {
         setViewsList((prev) => [...prev, ...res.data]);
       } else {
         setViewsList(res.data);
       }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@airborne_dashboard/app/dashboard/`[orgId]/[appId]/views/page.tsx around lines
78 - 119, Update fetchViewsList to track a request token or equivalent
active-request identifier for each filter-dependent fetch, and only apply
viewsList, totalItems, and hasMore updates when the response belongs to the
latest request. Ensure outdated responses are ignored, including their
loading-state cleanup where necessary, while preserving append behavior for the
active request.
🧹 Nitpick comments (5)
airborne_server/migrations/20260812120000_add_view_type_to_release_views/up.sql (1)

7-8: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Avoid validating this constraint while adding it.

ADD CONSTRAINT validates existing rows before it completes. This can block writes to hyperotaserver.release_views during deployment. Add the constraint as NOT VALID, then validate it in a later migration.

Proposed migration change
 ALTER TABLE hyperotaserver.release_views
     ADD CONSTRAINT release_views_view_type_check
-    CHECK (view_type IN ('custom', 'auto_generated'));
+    CHECK (view_type IN ('custom', 'auto_generated')) NOT VALID;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@airborne_server/migrations/20260812120000_add_view_type_to_release_views/up.sql`
around lines 7 - 8, Update the release_views_view_type_check constraint in the
migration to add it as NOT VALID, avoiding validation of existing rows during
deployment. Leave validation for a separate later migration.

Source: Linters/SAST tools

airborne_dashboard/components/releaseViews/DeleteSliceRelease.tsx (1)

42-46: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Encode the path segment for consistency.

Other call sites in the dashboard wrap identifiers with encodeURIComponent, for example the release detail requests. view.id is a server-generated UUID, so this is a consistency point rather than a defect.

-        `/releases/views/${view.id}/delete`,
+        `/releases/views/${encodeURIComponent(view.id)}/delete`,
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@airborne_dashboard/components/releaseViews/DeleteSliceRelease.tsx` around
lines 42 - 46, Update the API request in the DeleteSliceRelease component to
wrap view.id with encodeURIComponent when constructing the
/releases/views/{id}/delete path, matching the encoding used by other
release-related requests while preserving the existing POST options and
parameters.
airborne_server/src/release.rs (1)

1208-1266: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Consider reconciling the created experiment if the pending marker fails to persist.

mark_delete_release_pending at line 1257 runs after the experiment exists in Superposition. If that database write fails, the endpoint returns an error, but the delete experiment stays in CREATED state with no view marker. The view then still offers "Delete release", and a second call creates another experiment.

Consider discarding the created experiment when the marker write fails, or logging the orphaned release ID at error level so it can be found.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@airborne_server/src/release.rs` around lines 1208 - 1266, Handle failure of
release_view::mark_delete_release_pending after create_experiment succeeds by
reconciling the already-created experiment: discard it when supported, or log
the orphaned release_id at error level before propagating the database error.
Keep the successful response unchanged and ensure the created experiment ID is
available to the failure path.
airborne_server/src/release/utils.rs (2)

527-557: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Reuse the new helpers inside build_overrides.

build_overrides inlines the same resolve-config builder at lines 637-650 and the same build. filter at lines 935-947. The logic is now duplicated in two places, and it can drift. Call resolve_config_document and config_document_to_overrides from build_overrides, keeping the existing degrade-to-None behavior where it is required.

Also applies to: 611-626

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@airborne_server/src/release/utils.rs` around lines 527 - 557, Update
build_overrides to call resolve_config_document for resolved configuration and
config_document_to_overrides for converting the document, removing its
duplicated builder and build-filter logic. Preserve build_overrides’ existing
behavior of degrading helper failures to None, while keeping
resolve_config_document’s error propagation for its direct callers.

536-549: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Non-string dimension values become empty strings in the resolve context.

Line 546 uses value.as_str().unwrap_or(""). A numeric or boolean dimension value therefore resolves as "". For delete_release_for_view this makes the control snapshot resolve the wrong slice, so the "nothing to delete" comparison at release.rs line 1201 can compare the wrong configs.

build_overrides already contains the same coercion, so this is pre-existing behavior. Consider serializing non-string values with value.to_string() for scalars in both places.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@airborne_server/src/release/utils.rs` around lines 536 - 549, The resolve
context builder in the shown fold currently converts non-string dimension values
to empty strings; update it to preserve scalar values by serializing them with
the existing JSON value representation (for example, string content or
value.to_string()). Apply the same conversion in build_overrides so both paths
resolve dimensions consistently, while retaining empty handling only for
genuinely unsupported or missing values.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@airborne_dashboard/components/release/ReleaseFormContext.tsx`:
- Around line 213-215: Update the validation gate in TargetingStep so
unknownDimensions blocks progression only when targeting is editable; preserve
the current unknown-dimension check for create mode while allowing edit mode to
proceed even when a deleted dimension is present.

In `@airborne_server/src/organisation/application/dimension.rs`:
- Around line 405-431: Update the context construction and comparison in the
affected_views/release matching flow to preserve non-string JSON values instead
of converting them with as_str().unwrap_or_default(). Use direct JSON value
comparison or a lossless serialization consistently for both experiment and view
contexts, ensuring numeric and boolean dimensions remain distinct and release
matching cannot bind unrelated entries.

In `@airborne_server/src/release.rs`:
- Around line 1112-1142: Make the pending-deletion transition in
mark_delete_release_pending atomic with its check: update the view only when
pending_delete_release_id is NULL, inspect the affected-row count, and return
the existing “deletion already in progress” error when no row is updated. Keep
the earlier validation in the surrounding release-delete flow, but ensure only
the request that successfully claims the row can create the delete experiment.
- Around line 113-138: Update create_release to use the created experimental
variant ID (experimental_{pkg_version}) when concluding the first release
instead of constructing {experiment_id}-experimental_1. Pass
experimental_variant_id through the conclusion request, and propagate any
conclude error rather than discarding it so the endpoint cannot report success
while the release remains unconcluded.

In `@airborne_server/src/release/utils.rs`:
- Around line 572-586: Update the dimension lookup around list_dimensions to
fetch every page before building known. Set the request’s page/count parameters
and iterate through subsequent pages, aggregating each returned dimension into
the existing known set before filtering dims for missing entries.

In `@airborne_server/src/utils/release_view.rs`:
- Around line 190-205: The delete-release flow must reserve the view before
creating the external release to prevent concurrent overwrites. Update
mark_delete_release_pending and its caller to generate the release ID first,
atomically set pending_delete_col only when it is NULL, and treat a failed
update as reservation failure; if external release creation fails, clear only
the matching reservation before returning the error.
- Around line 150-170: Update the release-view creation flow to keep custom and
auto-generated views independent: in the logic around existing and the diesel
insert, avoid treating matching custom dimensions as an existing auto-generated
view, and ensure the uniqueness/conflict contract distinguishes view_type (or
otherwise uses a separate auto-generated name namespace). Preserve
delete_release_for_view compatibility by allowing auto-generated views to be
inserted and conflict only with equivalent auto-generated records.

---

Outside diff comments:
In `@airborne_dashboard/app/dashboard/`[orgId]/[appId]/views/page.tsx:
- Around line 78-119: Update fetchViewsList to track a request token or
equivalent active-request identifier for each filter-dependent fetch, and only
apply viewsList, totalItems, and hasMore updates when the response belongs to
the latest request. Ensure outdated responses are ignored, including their
loading-state cleanup where necessary, while preserving append behavior for the
active request.

In `@airborne_dashboard/components/release/steps/TargetingStep.tsx`:
- Around line 42-66: Update the dimension-loading effect in TargetingStep so
dimensionsLoaded is set to true only after apiFetch successfully returns and
setDimensions completes; remove the unconditional finally update. Keep the
existing unknown-dimension calculation gated by dimensionsLoaded, so failed
requests do not mark all targeting rules as deleted or block the wizard.

---

Nitpick comments:
In `@airborne_dashboard/components/releaseViews/DeleteSliceRelease.tsx`:
- Around line 42-46: Update the API request in the DeleteSliceRelease component
to wrap view.id with encodeURIComponent when constructing the
/releases/views/{id}/delete path, matching the encoding used by other
release-related requests while preserving the existing POST options and
parameters.

In
`@airborne_server/migrations/20260812120000_add_view_type_to_release_views/up.sql`:
- Around line 7-8: Update the release_views_view_type_check constraint in the
migration to add it as NOT VALID, avoiding validation of existing rows during
deployment. Leave validation for a separate later migration.

In `@airborne_server/src/release.rs`:
- Around line 1208-1266: Handle failure of
release_view::mark_delete_release_pending after create_experiment succeeds by
reconciling the already-created experiment: discard it when supported, or log
the orphaned release_id at error level before propagating the database error.
Keep the successful response unchanged and ensure the created experiment ID is
available to the failure path.

In `@airborne_server/src/release/utils.rs`:
- Around line 527-557: Update build_overrides to call resolve_config_document
for resolved configuration and config_document_to_overrides for converting the
document, removing its duplicated builder and build-filter logic. Preserve
build_overrides’ existing behavior of degrading helper failures to None, while
keeping resolve_config_document’s error propagation for its direct callers.
- Around line 536-549: The resolve context builder in the shown fold currently
converts non-string dimension values to empty strings; update it to preserve
scalar values by serializing them with the existing JSON value representation
(for example, string content or value.to_string()). Apply the same conversion in
build_overrides so both paths resolve dimensions consistently, while retaining
empty handling only for genuinely unsupported or missing values.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: fcca68e5-5807-450d-b769-31758977bf9d

📥 Commits

Reviewing files that changed from the base of the PR and between a706e7f and 7f32d2f.

⛔ Files ignored due to path filters (10)
  • airborne_docs/static/docs_static/img/screenshots/dark/dimension-delete-blocked.png is excluded by !**/*.png
  • airborne_docs/static/docs_static/img/screenshots/dark/dimensions-list.png is excluded by !**/*.png
  • airborne_docs/static/docs_static/img/screenshots/dark/releases-list.png is excluded by !**/*.png
  • airborne_docs/static/docs_static/img/screenshots/dark/views-delete-release.png is excluded by !**/*.png
  • airborne_docs/static/docs_static/img/screenshots/dark/views.png is excluded by !**/*.png
  • airborne_docs/static/docs_static/img/screenshots/light/dimension-delete-blocked.png is excluded by !**/*.png
  • airborne_docs/static/docs_static/img/screenshots/light/dimensions-list.png is excluded by !**/*.png
  • airborne_docs/static/docs_static/img/screenshots/light/releases-list.png is excluded by !**/*.png
  • airborne_docs/static/docs_static/img/screenshots/light/views-delete-release.png is excluded by !**/*.png
  • airborne_docs/static/docs_static/img/screenshots/light/views.png is excluded by !**/*.png
📒 Files selected for processing (25)
  • airborne_dashboard/app/dashboard/[orgId]/[appId]/dimensions/page.tsx
  • airborne_dashboard/app/dashboard/[orgId]/[appId]/releases/[releaseId]/page.tsx
  • airborne_dashboard/app/dashboard/[orgId]/[appId]/releases/page.tsx
  • airborne_dashboard/app/dashboard/[orgId]/[appId]/views/page.tsx
  • airborne_dashboard/components/dimensions/DeleteDimension.tsx
  • airborne_dashboard/components/release/ReleaseFormContext.tsx
  • airborne_dashboard/components/release/steps/TargetingStep.tsx
  • airborne_dashboard/components/releaseViews/DeleteSliceRelease.tsx
  • airborne_dashboard/types/release.ts
  • airborne_docs/docs/dashboard/dimensions.mdx
  • airborne_docs/docs/dashboard/releases.mdx
  • airborne_docs/docs/dashboard/views.mdx
  • airborne_server/migrations/20260812120000_add_view_type_to_release_views/down.sql
  • airborne_server/migrations/20260812120000_add_view_type_to_release_views/up.sql
  • airborne_server/migrations/20260812130000_add_pending_delete_to_release_views/down.sql
  • airborne_server/migrations/20260812130000_add_pending_delete_to_release_views/up.sql
  • airborne_server/src/organisation/application/dimension.rs
  • airborne_server/src/organisation/application/dimension/types.rs
  • airborne_server/src/release.rs
  • airborne_server/src/release/types.rs
  • airborne_server/src/release/utils.rs
  • airborne_server/src/utils.rs
  • airborne_server/src/utils/db/models.rs
  • airborne_server/src/utils/db/schema.rs
  • airborne_server/src/utils/release_view.rs

Comment thread airborne_dashboard/components/release/ReleaseFormContext.tsx
Comment thread airborne_server/src/organisation/application/dimension.rs
Comment thread airborne_server/src/release.rs
Comment thread airborne_server/src/release.rs
Comment thread airborne_server/src/release/utils.rs
Comment thread airborne_server/src/utils/release_view.rs Outdated
Comment thread airborne_server/src/utils/release_view.rs Outdated
@yuvrajjsingh0
yuvrajjsingh0 force-pushed the feat/delete-dimensions-releases-rich-release-views branch 2 times, most recently from 4dfc39a to 566b51c Compare August 17, 2026 13:29
@yuvrajjsingh0
yuvrajjsingh0 force-pushed the feat/delete-dimensions-releases-rich-release-views branch from 566b51c to 9bd6bd7 Compare August 18, 2026 07:40
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