Skip to content

Releases: imrj05/orbit

Orbit Pi 0.2.3

Choose a tag to compare

@github-actions github-actions released this 30 Sep 19:00
8dc88bd

Added

  • Add MCP server management, settings UI, and status (#45)
  • Check installed packages for updates and surface a notice (#43)

Changed

  • Feat/add star the repo button (#44)

What's Changed

  • feat(plugins): surface a notice when installed packages have updates by @rj05xdev in #43
  • Feat/add star the repo button by @imrj05 in #44
  • feat(mcp): add MCP server management, settings UI, and status by @imrj05 in #45

Full Changelog: v0.2.2...v0.2.3

Orbit Pi 0.2.2

Choose a tag to compare

@github-actions github-actions released this 29 Sep 20:51
464c38a

Added

  • Hover hints now carry the shortcut: the model and thinking chips, New Task,
    the sidebar's Search/Usage rows, the top-bar panel toggles, the Git page
    tabs, and the workspace + use registry-backed tooltips ("Choose Model
    (⌘⇧M)"), and hovering a session row shows the ⌘1…⌘9 slot that opens it.

  • A single command registry now backs the keymap, the command palette, and
    Settings → Shortcuts, so a chord, its chip, and the action it runs can never
    drift apart. The palette gained Rename Session, Pin / Unpin, Clone
    Session
    , Delete Session, Choose Model (⌘⇧M), Choose Thinking
    Level
    (⌘⇧T), Review Changes (⌘⇧R), and Keyboard Shortcuts (⌘/).

  • Session management is number- and cycle-addressable: ⌘1…⌘9
    (Ctrl+1…9) open the Nth session in the sidebar's visible order, and
    Ctrl+Tab / Ctrl+Shift+Tab cycle to the next or previous session. The
    palette also lists Next Session and Previous Session.

  • The Review pane is fully keyboard operable: Tab / Shift+Tab move between
    the workbench's focus stops, arrows walk the changed-files tree, Enter
    opens a file or toggles a folder, n / p jump between changed files,
    [ / ] jump between hunks, e / c expand or collapse every file, and
    Escape returns to the chat. The composer's autocomplete and the terminal
    keep Tab for their own use.

Changed

  • The Git page tabs moved from ⌘1…⌘5 to ⌘⌥1…⌘⌥5 (Ctrl+Alt+1…5) so
    the number keys can address sessions directly.

Fixed

  • Orbit and orbit-rpc also probe ~/.pi/agent/bin for the pi launcher,
    alongside the npm/pnpm/bun home dirs they already checked. A bundled .app
    never inherits the shell PATH that contains it, so a pi installed there used
    to read as missing.

  • Shortcuts that were advertised but macOS-only (cmd- editor clipboard and
    undo, Files close, Git page tabs) now use the platform modifier, so Windows
    and Linux get the same keys. The ⌘. abort chord was dead — gpui names the key
    ., not period — and now fires.

  • Compaction and branch summaries now appear in the transcript as boundary
    cards: Compaction — Compacted from 150K tokens (click to expand the
    summary) and Branch summary. A successful compaction also re-reads pi's
    compacted context right away, so the summarized history is replaced by the
    summary the moment it lands instead of lingering until the session is
    reopened.

What's Changed

  • Refector/session compact issue by @imrj05 in #42

Full Changelog: v0.2.1...v0.2.2

Orbit Pi 0.2.1

Choose a tag to compare

@github-actions github-actions released this 28 Sep 19:11
7999208

Changed

  • Dropdown menus across the app now match the branch selector's popover
    style: one surface treatment, roomier rows with the same hover, and the
    current choice marked with the active fill and a check. This covers the Git
    page's Sync and "…" menus, changed-file and merge/rebase menus, the Review
    source menu, the Usage filter and row menus, the composer's add/mode
    popups, and the sidebar session menu; the branch, label, template, and
    Settings pickers now share the same row treatment. Right-click context
    menus stay compact.

Fixed

  • The Issue page's Label dropdown now closes when its trigger is clicked a
    second time. The popup dismissed on mouse-down and the trigger's mouse-up
    re-opened it on the same click; the trigger now honors the same gesture
    guard every other dropdown uses.

  • New Task now starts a fresh session when pi has exited instead of doing
    nothing. With no turn in flight the button sent new_session to the live
    process, so while the reconnect banner was up the command went into the dead
    process's stdin and was never answered; it now spawns a replacement whenever
    the process is not alive, dropping the corpse and its stale exit banner. The
    sidebar's workspace + gets the same fix.

What's Changed

  • fix(session): respawn pi when New Task runs with a dead process by @imrj05 in #40
  • Unify dropdown menus on the branch selector's picker style by @imrj05 in #41

Full Changelog: v0.2.0...v0.2.1

Orbit Pi 0.2.0

Choose a tag to compare

@github-actions github-actions released this 28 Sep 16:01
4a1f823

Added

  • The Git page's Issues and Pull requests forms now discover the repository's own
    templates (.github/ISSUE_TEMPLATE/ Markdown and YAML issue forms, plus
    .github/PULL_REQUEST_TEMPLATE.md and its variants). A lone template applies
    automatically; with several, a Template picker (including Blank) chooses one.
    The choice prefills the title prefix and body skeleton — a YAML issue form is flattened
    into Markdown — and its labels: ride along on Create.

  • The Git page's Issues and Pull requests forms can now draft their title and
    Markdown body with a Generate button. Add optional notes (or leave them blank) and
    Orbit makes the same one-shot, tool-free pi -p call the commit-message generator uses,
    reading the branch, its commits, and its changed files; when pi is missing or has no
    credentials it falls back to a local heuristic built from those same facts. Nothing is
    created until you review the draft and press Create.

  • Every icon-only button across the app now carries the same native tooltip the
    send / stop button has — a localized label, usually with its keyboard shortcut
    (e.g. Toggle Terminal (⌘J)). Covers the top bar, sidebar, transcript copy /
    diff controls, composer add button, window caption buttons, Explorer, Review
    pane, Git, Usage, terminal, settings, and the picker / dialog controls.

  • The sidebar's Projects list now defaults to most recent activity, with a
    sort control on the header to order workspace groups by recently added, name
    (A–Z or Z–A), or session count, or fall back to the manual added order. The
    choice persists in ~/.orbit-pi/workspaces.json and each project now records
    when it was added.

  • Each project in the sidebar can now wear its own mark: pick from a curated
    set of the bundled HugeIcons and tint it with one of eight semantic colors
    (which follow the active palette). Reach it from the workspace header's ⋯
    menu → Icon & color, with a Reset back to the folder default. The choice
    persists in ~/.orbit-pi/workspaces.json beside the project list.

Fixed

  • Images in issue/PR bodies, comments, and transcripts now render. The markdown image
    element forced a definite height: 0, and gpui derives a missing width from a definite
    height before the image decodes (0 × ratio), so a loaded screenshot collapsed to a 0×0
    box with only its border visible. The height is left auto now: the image scales to the
    reading column and taffy keeps its aspect ratio.

  • Screenshots in replies load again when GitHub stored them as signed
    private-user-images.githubusercontent.com/…?jwt=… URLs. That JWT expires within
    minutes, so the app got a 404 and showed the alt-text fallback; the renderer rewrites
    the URL to the durable github.com/user-attachments/assets/<uuid> form encoded in the
    filename, which serves the same image.

  • GitHub issue/PR bodies and comments now render screenshots that GitHub stored as raw
    HTML <img src="…"> tags when the line is inside a blockquote or list item — a quoted
    bug report is a common case. Previously only a standalone top-level <img> line became
    an image, so these showed the tag as text; the whole tag/its URL rendered as a link.

  • The New pull request form's Base branch picker, and the Template pickers on
    both new-issue/new-PR forms, no longer float over the wrong part of the form or paint
    behind its fields. They are anchored to the chip that opens them (opening upward at the
    bottom of the PR form), draw above the form, and use the top branch selector's dropdown
    chip (glyph, value, chevron) and picker surface — list inset, rows, and search row for
    the branch list.

  • The Issues tab's Label picker — the list filter chip and the detail view's
    Edit labels button — no longer opens at the page's top-right over the issue list.
    It anchors to the button that opened it, opens directly beneath it, and uses the same
    picker surface and rows as the branch selector.

  • The conversation rail's active tick now follows every navigation path, not
    just wheel and scrollbar gestures. Clicking a tick and pressing ⌘↑/⌘↓ scroll
    the list programmatically, which never fired gpui's scroll handler, so the
    highlight stayed on the turn the reader left behind. Repeated ⌘↑/⌘↓ presses
    also walked a single turn and stalled; they now step through the transcript,
    and ⌘↑ from the live edge jumps back to the previous turn instead of doing
    nothing. The viewport hint wins while a run streams too, so scrolling up to
    read history moves the rail even mid-stream.

  • The sidebar's project headers now stay pinned as you scroll through any
    expanded group, not just the active workspace. Previously only the open
    workspace's header was sticky, so a long list under the first project pinned
    while every other expanded project scrolled its header away.

  • The "open in" menu's app icons are crisp and no longer tiny. macOS returns an
    icon whose largest representation is 1024×1024, and the menu embedded that PNG
    unchanged, so the renderer's single bilinear pass had to squeeze it into a
    14px slot — the blur. Icons are now rasterized to exactly the pixel size the
    menu draws (36×36 for the now-18px slot, matching a Retina blit 1:1), which
    also drops each embedded icon from roughly 1 MB to 2 KB.

What's Changed

  • feat(sidebar): workspace sorting, custom workspace marks, and UI polish by @rj05xdev in #37
  • feat(ui): native tooltips for icon-only controls + rail/scroll fixes by @rj05xdev in #38
  • feat(git): AI-draft issues/PRs against repo templates; fix Git page pickers & image rendering by @rj05xdev in #39

Full Changelog: v0.0.19...v0.2.0

Orbit Pi 0.0.19

Choose a tag to compare

@github-actions github-actions released this 27 Sep 20:12
12b3dce

Changed

  • The Review pane gained view controls. The changed files collapse to their
    headers or expand back in one click (each header is its own toggle), long lines
    wrap or unwrap (unwrapping pans only the diff body — the file name and change
    counts stay fixed at the pane's edges), the diff switches between unified and
    side-by-side rows, and the pane can own the page — the session view yields and
    the sessions sidebar opens beside it — or minimize to a rail, returning to the
    docked side pane first. All icon toggles with tooltips.

Added

  • Settings → Agent → Behavior now lets Enter queue a follow-up (the existing
    default) or steer the running task. The preference persists across launches
    without changing pi’s settings or messages already queued.
  • Compact Send/Steer/Queue hints on the right side of the composer footer,
    immediately left of the context-window indicator, plus send/steer/stop tooltips.
    Settings → Shortcuts reflects the selected default. Hints remain visible with
    an empty draft; the newline shortcut stays in Settings rather than adding
    clutter below the composer.
  • Transcript tool cards show the file's language icon on read / edit /
    write rows and on the changed-files summary. web_fetch rows show the URL
    as a clickable link with the scheme hidden, and web_search rows show the
    query instead of the raw arguments JSON.
  • Bare http(s):// URLs in user and assistant prose are links now: accent
    colored, underlined, marked with the HugeIcons external-link arrow, and
    opened in the default browser on click. Markdown [label](url) links keep
    their own label.

Changed

  • Alt/Option+Enter uses the opposite sending mode; ⌘⇧Enter / Ctrl+Shift+Enter
    remains an explicit steer. Idle sends still start a normal prompt, and
    Shift+Enter still inserts a new line. Steering and alternate-send shortcuts
    are scoped to the chat input so they cannot submit drafts from other fields.

Fixed

  • File icons render everywhere they are used (the Explorer tree, @file
    mention rows, attachment chips, and Git changed-file rows). The bundled Nerd
    Fonts symbols face was embedded in the app but never registered with the text
    system, so every devicon silently fell back to a text extension badge.

Fixed

  • Dragging the header of a window that is maximized on the primary display no
    longer locks the app up: the drag now starts the system's caption-move
    command instead of posting a non-client left-button message, which GPUI
    dispatches back into the drag region and the drag region answers with another
    post. Restoring and moving at the start of the drag behave like a native
    titlebar.
  • The Git page's Back button leaves the page again: the leading controls (Back
    and the page title) now sit outside the window drag region, so pressing them
    no longer starts a window move that swallows the click. The empty bar after
    the controls still drags the window.

What's Changed

  • feat(composer): configure Enter behavior and show footer hints by @dimixar in #33
  • refactor(review): remove AI review and enrich the Review pane by @imrj05 in #34
  • fix(windows): repair header drag and the Git page Back button by @imrj05 in #35
  • feat(transcript): file icons on tool cards and clickable URLs by @imrj05 in #36

Full Changelog: v0.0.18...v0.0.19

Orbit Pi 0.0.18

Choose a tag to compare

@github-actions github-actions released this 26 Sep 15:01
06341ae

Added

  • Default session model — Settings → Agent can pick the model and thinking level
    every new session starts on, whichever workflow mode it runs in. The choice lives
    in Orbit's own ~/.orbit-pi/session-defaults.json (pi's global settings file is
    untouched), rides the spawn flags for a session's first turn and
    set_model / set_thinking_level RPC for every later session in a live process,
    and leaves pi's own default alone when unset. The thinking options are the levels
    pi itself derives for the selected model, so the control tracks the model rather
    than the live session. Resumed sessions keep the model in their file; the
    composer chip still changes model / thinking per session.
  • Zed design tokens — theme/tokens.rs ports Zed's sizing system: dynamic
    spacing with Compact / Default / Comfortable density, text / headline / icon /
    button sizes, list, popover, context-menu, modal, tooltip, input and scrollbar
    metrics, the corner-radius scale, elevation shadows with elevation_1/2/3, and
    motion durations. Tokens equal Zed's default pixels at Orbit's defaults and
    follow the UI font size and Spacing Density settings.

Changed

  • Context menus (sidebar session / workspace, Explorer, Git sync / branch / file)
    now follow Zed's context-menu metrics: 200px minimum width, 23px entries,
    14px text and icons, Base04 / Base06 insets, ListSeparator spacing, an 8px
    radius with Zed's lighter popover shadow, and an 8px window-edge margin.
    Their sizes now scale with the UI font size.
  • Tooltips use Zed's tooltip metrics: offset off the cursor, 14px text, and
    wrapping at 288px instead of overflowing on one line.
  • Extension dialogs use Zed's modal layout: ModalHeader / section / footer
    insets, a Small headline, a 32px input field, 32px confirm buttons, and the
    four-layer modal shadow.
  • The remaining floating modals — provider usage / API key / provider editor
    (Settings), the update dialog, and the custom-UI card — use Zed's
    ModalSurface (elevation_3): the four-layer shadow, an 8px radius, and
    ModalHeader / section / ModalFooter insets. The legacy heavier
    popover_shadow helper is gone.
  • Sidebar session and workspace rows use Zed's list-item tokens: a 4px
    (rounded_sm) hover/selection radius, TextSize for title / label / metadata
    text, and DynamicSpacing for their padding and gaps.
  • Transcript chrome follows the token scales: message-row padding, user-bubble
    radius / padding / text, tool and question card shells and headers, tool error
    strips, and the usage footer metric and breakdown card now read TextSize,
    DynamicSpacing, Radius, and BufferLineHeight instead of ad-hoc px.
  • Settings chrome follows the token scales: the page header, section labels,
    grouped boards, and setting_row layout use TextSize / DynamicSpacing /
    Radius, the row separators use the 1px hairline token, and keycap chips size
    to ButtonSize::Default height. Setting cards and toolbars migrate next.
  • Spacing is unified on DynamicSpacing. The ad-hoc Theme::space helper — which
    scaled with density but ignored the UI font size — is removed, and its ~185
    call sites (mostly the Git panel, Usage page, and Settings) now resolve through
    the token scale, so they follow the UI font size too.
  • UI type is unified on TextSize. ~370 .text_size(theme.ui_px(…)) sites snap
    onto the 10 / 12 / 14 / 16 scale (XSmall / Small / Default / Large); at
    most a 1px shift each. Sub-10px badge glyphs and 17px+ display headings, which
    the UI scale doesn't cover, keep their sizing.
  • Corner radii are unified on Radius. gpui's fixed rounded_sm/md/lg/xl helpers
    and every on-scale rounded(px(N)) (2/4/6/8/12) now resolve through the theme,
    so card, chip, and input corners also follow the UI font size.
  • One-shot transitions adopt AnimationDuration (Fast, 150ms). Looping affordances
    (spinner, shimmer, streaming) and feedback timers keep their own cadences, which
    the three-value token scale doesn't cover.
  • The settings page is fully on the token scales. Its side nav, headers, sections,
    rows, toolbars, select popups, cards, and modals now read DynamicSpacing /
    TextSize / Radius / ButtonSize; the last gpui spacing utilities and raw px
    literals are gone, leaving only bespoke geometry (avatar / dot / toggle sizes,
    fixed panel and modal widths).
  • The Usage page (and its chart / heatmap / table / filters / tooltip modules) is on
    the same scales: all spacing, type, and on-scale radii resolve through the tokens;
    only chart and table geometry keeps its own px.
  • Every input box follows the InputField tokens. The branch picker's create-branch
    field (previously frameless) now uses input_field_frame, and the Ask panel's
    custom-answer field uses DynamicSpacing offsets; all other single-line inputs
    already routed through input_field_frame / picker_search_frame. The main
    composer, file editor, and inline tree rename stay bespoke components.
  • Every search box is the picker search row (picker_search_frame), matching the
    command palette: the settings / Git / Usage searches and the skills filter were
    boxed InputFields and now share the palette's flat 36px row, so all searches
    read identically. The Git panel's issue / pull-request search grows to fill its
    filter bar and shrinks when tight (min 160px) instead of a fixed 200px, so the
    Pulls tab no longer overflows with its extra state chip.
  • The session-details title (rename) input follows the InputField tokens: its
    block uses DynamicSpacing / input::gap / input_label / input_field_frame,
    and the Generate-title and Update buttons size to ButtonSize::Large (32px) so
    the row lines up with the 32px field.
  • Picker ↑/↓ now scroll the focused row into view. The command palette,
    workspace picker, and branch picker set a positive ScrollHandle offset,
    but gpui stores it negative once scrolled down (the model selector already
    negated it) — so the list never actually scrolled and the highlight walked
    off-screen, looking like ↑/↓ did nothing. They negate it now, and the palette
    also scrolls against its actual (window-capped) list height instead of the
    uncapped list_max_h. Two command-palette tests cover the ↑/↓ move and its
    scroll-into-view; the scroll test fails on the old sign.
  • The model picker had the same ↑/↓-doesn't-stick symptom for four reasons,
    all now fixed. (1) Its open-time "pin the highlight to the active model"
    re-ran on every render for the first 400 ms (the hover-suppression
    window), so a ↓ pressed right after opening was silently snapped back; the
    pin now runs only on a genuine open / catalog change. (2) Its deferred scroll
    re-targeted the active model for up to 250 ms after open; it now follows the
    current highlight. (3) pi re-reports the whole catalog on every get_state,
    and set_catalog re-armed the pin and re-scrolled to the active model each
    time — so any periodic sync undid an ↑/↓ while the popup was open. An
    unchanged set_catalog is now a no-op. (4) The pin stayed armed until the
    popup's first render, so a ↑/↓ arriving before that frame (or right after a
    scope change / catalog refresh re-armed it) was undone by it; a deliberate
    ↑/↓ now cancels the pin. Covered end to end as well: a test opens the real
    OrbitApp with the real bind_keys, asserts the popup's filter actually
    holds focus, and steps the highlight through several presses.
  • Picker rows no longer move the keyboard highlight on hover: the command
    palette, workspace picker, and extension-dialog option rows used on_hover to
    follow the pointer, and on_hover re-fires whenever hit-testing changes — so
    scrolling a row under a stationary pointer hijacked the highlight. They use
    on_mouse_move now, so only real pointer movement moves it.
  • Single-line inputs no longer wrap. Every ComposerInput capped at
    with_max_lines(1) — the session-details name, the Git branch field, the
    provider / model / plugin / skill filters, the usage searches, the extension
    dialog, and the find bar — now also sets with_wrap(false), so a long value is
    clipped at the edge instead of wrapping into a second row and painting the
    editor's vertical scrollbar. Non-wrapping text also scrolls horizontally to
    follow the caret, so typing past the field's width still shows what you type
    (clipped to the text area, so the code editor's gutter stays put).
  • The Git panel's tab strip is on the §5 button language: each tab is a
    button_frame(ButtonSize::Medium) — the same 28px height, Base08 padding,
    Base04 gap, button::RADIUS (4px), and Default label as the branch chip and
    the panel's filter chips — so the tabs and the chips beside them read as one
    system. The tab strip and branch row are Base40 tall, and the whole panel's
    spacing resolves through DynamicSpacing (one shared tab_bar for Changes /
    History / Graph / Issues / Pulls).
  • The sidebar's New Task, Search, and Usage controls share one
    button_frame(ButtonSize::Large): the hand-rolled 28px Search / Usage rows
    now match the New Task button's height, Base08 padding, button::RADIUS
    (4px), and Default label, while keeping their ghost treatment (no fill or
    border, hover only) — one evenly sized stack.
  • The model selector's option rows keep the picker's two-line token height. A
    capped list is a flex column, so without flex_none every row shrinks toward
    the picker_entry minimum (31px) instead of picker::two_line_entry_height
    (50px), leaving the 28px leading provider / thinking chip with almost no
    vertical padding. The no-match empty row, its provider-header gap, and the
    row's hover highlight are on the same tokens / on_mouse_move as the other
    pickers.

Fixed...

Read more

Orbit Pi 0.0.17

Choose a tag to compare

@github-actions github-actions released this 24 Sep 21:55
f840702

Added

  • Workflow modes — plan, build, or answer instead of one undifferentiated
    chat. A session is scoped Plan, Build, or Ask from the New Task
    page or the composer chip, per session. Plan and Ask are read-only: the
    bundled orbit-workflow-extension disables the write tools, gates bash to
    a read-only allowlist, and injects mode guidance, re-arming live sessions
    from ~/.orbit-pi/workflow.json with no restart.
  • AI review agent — a read-only reviewer over the current change set or the
    whole project, from the Review pane's sparkles menu or the command palette.
    It runs on its own pi process scoped to Ask mode (so the chat session and
    transcript are untouched), launched with ORBIT_REVIEW=1 so the access guard
    never blocks its read-only git diff. Findings parse from a fenced JSON
    block into severity-chipped rows that scroll the diff to the offending file;
    the answer's prose is kept when no findings parse.

What's Changed

  • feat(workflow): Plan/Build/Ask session modes, AI review, and UI refinements by @imrj05 in #24

Full Changelog: v0.0.16...v0.0.17

Orbit Pi 0.0.16

Choose a tag to compare

@github-actions github-actions released this 23 Sep 20:54
8ebdb42

Added

  • Add structured data, harden headers, and extend cache windows
  • Rebuild landing around story sections and refresh OG

Changed

  • Feat/UI refinement (#23)

What's Changed

Full Changelog: v0.0.15...v0.0.16

Orbit Pi 0.0.15

Choose a tag to compare

@github-actions github-actions released this 23 Sep 15:04
ef8c638

Core Changes

  • feat(session): confirm renames with a success check on the update button
  • Refactor/transcript UI: #22

Credits

Huge thanks to @rajeshwar-hyphun, and @imrj05 for helping!

What's Changed

  • Refactor/transcript UI by @rajeshwar-hyphun in #22

New Contributors

  • @rajeshwar-hyphun made their first contribution in #22

Full Changelog: v0.0.14...v0.0.15

Orbit Pi 0.0.14

Choose a tag to compare

@github-actions github-actions released this 23 Sep 03:38
46fd608

Full Changelog: v0.0.13...v0.0.14