Features

Ship software with less friction

through(true) BlockBuilder educe(true) BlockBuilder rent_standalone(true) BlockBuilder e: "Amber Concrete Block").id(5006).bu e: "Slate Concrete Block").id(5007).bui e: "Rust Concrete Block").id(5008).build e: "Chalk Concrete Block").id(5009).bui e: "Bone").id(5012).build(), me: "Oak Stairs", id: 5013), me: "Bone Stairs", id: 5014),

Block Edits

Sable proposes several edits at once, so a single keystroke carries the whole change.

const debug = new Debug(document.body, dataStyles: { top: 10px left 10px fixed zIndex: '1000', color: '#fff', backgroundColor: 'var(--color- padding: '8px',
dataStyles: { top: '10px', left: '10px', position: 'fixed', zIndex: '1000',

Typo Repair

Type roughly. Sable straightens out the syntax as you go.

// not sure why, but this seems to work const unbindF6 = bind("F6", () => identifier: Perspective INPUT_IDEN checkType: "code" }) this.inputs return () => { try { unbindKeyC() unbindF6() } catch (e) { // ignore } }
tab

Jump Ahead

Flow walks you from one pending edit to the next, across files.

Add a design-token layer to this project

I'll add a token layer. First let me check whether this is a Vite project and read the current configuration.

Listed directory current directory · 22 results
  • D.git
  • MREADME.md
  • Dpublic
  • D.next
  • TStsconfig.json
  • Dnode_modules
  • JSpnpm-lock.yaml
This looks like a Next.js project. I'll install the token packages, then wire them up. First I'll read package.json so we don't create conflicts.
Read file package.json

Reads the Repo

Custom retrieval models let Pilot hold a whole codebase in view, so you rarely attach files by hand.

Now I'll install the token packages and their peer dependencies, then run the setup script.

$ pnpm add -D @sable/tokens postcss autoprefixer
Skip Run command ⌘⏎

Waiting for approval.

Runs the Shell

Pilot writes and runs terminal commands. Every one of them waits for your confirmation by default.

⚠ Property 'testProbeConfig' does not exist on type ⚠ Property 'testProbeConfig' does not exist on type

I can see there are some linter errors because the type

Searched codebase "ProbeConfigResponse type definition"

Based on the results I can see that the ProbeConfig type doesn't carry a testProbeConfig field. Let me change it.

TS ProbeViewsService.ts +12 -4
printProbeConfig(): void { const probeConfig = this.reactiveStorageServi if (probeConfig?.testProbeConfig !== undefined console.log("Test probe config", probeCo if (probeConfig) {

Fixes Its Own Lint

Pilot reads compiler and lint output, applies the fix, and re-runs until the build comes back green.

ChatMore
physics.rs ↩ reply ▷ apply ⧉ copy
use std::ops use hashbrown::HashMap; use log::{info, warn, error}; use rapier3d::prelude::Collision use specs::{Entities, ReadExpect,
Apply the entire block

Instant Apply

Suggestions from chat land back in the codebase in well under a second.

How do I configure the physics of a rigid
Using…
Codebase

Reading files…

  • TScontrol.ts packages/core/src/core
  • TSrigid-body.ts packages/physics-eng
  • JSindex.js packages/physics-engine/ex

In-House Models

Trained on 3.4 billion code events, Pilot pairs our own models with frontier APIs.

How do I create an @InlineDiffViewZone
⌄ sable-1@ mention

Point at Anything

Reference code with @ to pass it as context. Type @ for a list of every file and symbol in the project.

How do I build a similar panel for this?
⌄ sable-1@ mention Image

Drop in Screens

Hit the image button under chat, or drag a screenshot into the prompt box to hand Sable visual context.

@web What changed in the latest Vite rele
Used
  • TSindex.tsx current file
Web pages
◍ Vite 6 RC ◍ Releases — vite/vite ◍ Vite 5 in production ◍ Vite by exa… ◍ Release v12.1.7-canary.8

Search the Web

Pull current information off the internet with @web. Sable searches, then folds the results into its answer.

Add new source
Entrypoint
https://threejs.org/docs/
Prefix
https://threejs.org/docs/
@ Name
three.js

Index Any Docs

Reference popular libraries with @library, or add your own through @docs → Add new source.

OutputTerminal ▷ zsh+🗑
sable-site git:(iris-features) On branch iris-features Changes not staged for commit: (use "git add <file>…" to update what will be committed) (use "git restore <file>…" to discard changes in working directory)
reset the last commit
⏎ Submit edit ⌥⏎ quick question

Shell Prompt

Press ⌘ K in the terminal to describe a command in plain English. Sable writes the invocation you actually need.

do you know why this returns -100?
⏎ Generate ⌥⏎ quick question ⌄ sable-1   ⇧⌘K
def get_ending_tensor(orig_tensor: torch.tensor assert orig_tensor.shape[:2] == sequence_ids. # print(f'orig tensor - {orig_tensor.shape}') # print(f'sequence ids - {sequence_ids.}

Side Questions

Select any span of code and ask a question about it without ever leaving the file you are in.

Try Sable Now

Download for free