Initial public release of Warp.

Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
David Stern
2026-04-28 08:43:33 -05:00
commit 0dbd3d567a
4982 changed files with 1431549 additions and 0 deletions
+101
View File
@@ -0,0 +1,101 @@
---
name: promote-feature
description: Promote a feature-flagged feature to Dogfood, Preview, or Stable in the Warp codebase. Use when a feature behind a FeatureFlag is ready to roll out to a broader audience, including wiring up the compile-time/runtime bridge and deferring flag cleanup safely.
---
# promote-feature
Guides the staged promotion of a gated `FeatureFlag` variant to Dogfood, Preview, or Stable, and schedules the follow-up cleanup.
## Overview
Feature flags have two interacting layers:
- **Runtime** (`warp_core/src/features.rs`): `DOGFOOD_FLAGS`, `PREVIEW_FLAGS`, `RELEASE_FLAGS` — enabled per-channel at startup.
- **Compile-time** (`app/Cargo.toml` + `app/src/lib.rs`): Cargo features in `[features]`. The `default = [...]` array enables a feature for all builds. `enabled_features()` in `app/src/lib.rs` bridges each Cargo feature to its `FeatureFlag` variant via `#[cfg(feature = "...")]`.
**Do not remove the flag immediately after promoting to Stable.** Keep it for at least 1–2 release cycles so a rollback is a one-line PR (remove the entry from `default`). Use the `remove-feature-flag` skill for the cleanup step later.
## Promote to Dogfood
Add the flag to `DOGFOOD_FLAGS` in `warp_core/src/features.rs`:
```rust
pub const DOGFOOD_FLAGS: &[FeatureFlag] = &[
// ...
FeatureFlag::YourFeature,
];
```
No other file changes needed.
## Promote to Preview
1. Add to `PREVIEW_FLAGS` in `warp_core/src/features.rs`.
2. Remove from `DOGFOOD_FLAGS` if present — Preview flags are automatically included in Dogfood builds.
```rust
pub const PREVIEW_FLAGS: &[FeatureFlag] = &[
// ...
FeatureFlag::YourFeature,
];
```
## Promote to Stable
This requires changes in **three files**.
### 1. `app/Cargo.toml` — add to `default`
Add the snake_case feature name to the `default = [...]` array:
```toml
default = [
# ...
"your_feature_name",
]
```
Prefer this over adding to `RELEASE_FLAGS` (see comment at `warp_core/src/features.rs:787-790`). It compiles the feature into all builds and enables a one-line rollback.
### 2. `app/src/lib.rs` — add to `enabled_features()` bridge
Add a `#[cfg(...)]` entry inside the `flags.extend([...])` block in `enabled_features()`, following the existing pattern:
```rust
#[cfg(feature = "your_feature_name")]
FeatureFlag::YourFeature,
```
Place it near logically related entries.
### 3. `warp_core/src/features.rs` — remove from `PREVIEW_FLAGS` / `DOGFOOD_FLAGS`
Remove the variant from whichever arrays it currently lives in:
```rust
pub const PREVIEW_FLAGS: &[FeatureFlag] = &[
// Remove FeatureFlag::YourFeature,
];
```
### Validate
```bash
cargo fmt
cargo clippy --workspace --all-targets --all-features --tests -- -D warnings
```
### Create a follow-up Linear issue
After the PR lands, create a Linear issue to remind the team to remove the flag. Use the Linear MCP tool:
```
save_issue(
title: "Remove FeatureFlag::YourFeature after stabilization",
team: <your team>,
assignee: "me",
description: "FeatureFlag::YourFeature was promoted to Stable in <PR link>. Remove the flag and dead code branches after 1–2 release cycles. Follow the `remove-feature-flag` skill.",
labels: ["tech-debt"],
priority: 4 // Low
)
```