Skip to content

Releases: httuicom/httui

httui notes v0.4.1

22 May 00:59
a1ee583

Choose a tag to compare

Maintenance release: installer, offline fonts, bug fixes.

Added

  • One-line installercurl -fsSL https://httui.com/install.sh | sh installs the latest macOS or Linux build.

Changed

  • Self-hosted fonts — fonts are bundled instead of fetched from the Google Fonts CDN; the app now works fully offline.

Fixed

  • Editor — leaked focus listeners when switching files or toggling vim.
  • HTTP block — visible flash from the body editor reconfiguring on every blur in form mode.
  • Connections — save failures in the new-connection modal now show an error instead of failing silently.

httui notes v0.4.0

18 May 16:29

Choose a tag to compare

First public release. httui is a git-native, local-first desktop
markdown editor with executable HTTP and DB blocks inline in
documents and an embedded Claude chat assistant. Vaults are plain
.md files plus a .httui/ sidecar — no proprietary store, no
account.

Distribution: macOS .dmg (unsigned), Windows .msi / .exe,
Linux .deb / .rpm / AppImage, a Homebrew cask, and a winget
manifest. In-app auto-update is served from GitHub Releases;
pre-releases are opt-in under Settings → General.

Added

  • Executable HTTP & DB blocks — run requests and queries inline in markdown documents; chain blocks with {{ref}} and the positional {{$prev.path}} reference.
  • Claude chat assistant — embedded assistant with MCP tools, image attachments, and per-session permissions.
  • Git integration — a collapsible Source Control side panel and a full Git pane-tab: stage / commit, one-click Sync (commit → pull → push), branch switcher, merge-conflict resolution, commit-message templates, history with inline diffs, and share-via-repo URLs.
  • Vault flow — empty-state Open / Clone / Create cards; a first-run scan prompts for keychain secrets the vault references but the machine lacks.
  • Connections page — master-detail view with live status, latency, schema preview, and "used in runbooks" navigation.
  • Variables & Environments pages — a cross-environment variable grid with secret reveal and session overrides, plus environment cards with clone / rename / delete.
  • Quick popovers — ⌘E environment switcher, connection quick-edit, {{var}} inspector, and ⌘⇧V new-variable — none of which steal editor focus.
  • DocHeader — a card above the editor with the title, abstract, tags, pre-flight checks, and document metadata.
  • Workbench shell — a new top bar, sidebar (Files / Connections / Variables), and an interactive status bar.
  • File-backed configuration — connections, environments, and UI preferences live in plain TOML files, with *.local.toml overrides and a watcher that picks up external edits.
  • Vault migration — converts a legacy SQLite vault to the file-based layout (backs up first, idempotent, with a dry-run preview).
  • File conflict detection — externally modified files surface a banner with Reload / Keep Mine choices.

Changed

  • HTTP block storage — request bodies are stored as HTTP-message text inside an http fenced code block; legacy JSON-bodied blocks are still parsed on read.
  • Performance — large response bodies render in a read-only editor instead of blocking the webview, and the HTTP executor caps response bodies at 100 MB.

Removed

  • TipTap editor and the E2E block — superseded by CodeMirror 6 and the HTTP block.
  • Top-bar "Run all" button, the editor toolbar, and heading auto-numbering — dropped as redundant.
  • Web-app and Docker self-host — explicitly out of scope.

Fixed

  • Unreadable push errors — git push rejections (protected branch, non-fast-forward, auth) now show a readable summary instead of raw git stderr.
  • Invisible merge conflicts — a conflicted vault no longer reports "working tree clean"; the git panel parses unmerged entries and shows the resolver.
  • Markdown round-triphttp and db-* fenced blocks survive the CodeMirror parser / serializer cycle without corruption.
  • HTTP headers — invalid header names produce a clear error instead of a generic reqwest builder error.
  • HTTP cancel — cancelling mid-body returns a clean result rather than partial bytes.
  • Chat auto-save — auto-save is suppressed while an update_note tool call is in flight, driven by tool events instead of timeouts.

Security

  • Secrets in the OS keychain — connection passwords and is_secret variables are stored in the system keychain, with only a sentinel reference in config files; plaintext fallback applies only when the keychain is unavailable.
  • SQL injection guard{{ref}} references in SQL blocks are always converted to bind parameters, never string-interpolated.

httui notes v0.4.0-rc.3

18 May 15:57

Choose a tag to compare

Pre-release

First public release. httui notes is a git-native, local-first desktop
markdown editor with executable HTTP and DB blocks inline in documents
and an embedded Claude chat assistant. Vaults are plain .md files
plus a .httui/ sidecar — no proprietary store, no account.

This entry consolidates the v1 foundation work (epics 00–37) and the
v2 vertical pass (V1–V12): the empty-state vault flow (open / clone /
create), the workbench shell + design system, refined Connections /
Variables / Environments master-detail surfaces, the document
DocHeader (frontmatter + tags), the Git side panel + share-via-repo,
the quick popovers (⌘E / connection chip / {{var}} / ⌘⇧V / clone
env), and the signed/cross-platform release pipeline.

Distribution: macOS .dmg (unsigned developer build for v1 — see
docs/RELEASE.md for the Gatekeeper bypass), Windows .msi / .exe,
Linux .deb / .rpm / AppImage, a Homebrew cask, and a winget
manifest. In-app auto-update is served from GitHub Releases on the
stable channel by default; pre-releases are opt-in under
Settings → General.

Added

  • ⌘E env switcher — atalho abre um dropdown no seletor de
    ambiente da status bar com atalhos numéricos (1–9) pra trocar de
    env e uma ação rápida "Clone <env>". (V11 cenário 1)
  • Quick-edit de conexão — clicar numa conexão na sidebar abre
    um popover com status, "Rotate password", override temporário de
    host:port (só pra sessão, badge TEMPORARY na conexão), Test e
    Duplicate. (V11 cenário 2)
  • Popover do {{var}} no editor — clicar num chip {{var}}
    mostra o valor no ambiente ativo, um override de sessão e
    "Used in N blocks", sem perder o cursor do editor ao fechar.
    (V11 cenário 3)
  • ⌘⇧V nova variável — popover estilo cmd+K com seletor de tipo
    (Text/Number/Bool/Secret) e helpers de template
    ({{uuid()}}, {{now()}}, {{base64()}}, {{env()}},
    {{$prev.body.id}}); salva no ambiente ativo. (V11 cenário 4)
  • Referência posicional {{$prev.path}} — encadeia bloco→bloco
    usando a resposta do bloco anterior sem precisar nomear um
    alias=. (V11 cenário 4)
  • Git side panel (Source Control) — coluna lateral colapsável
    estilo VS Code, aberta/fechada pelo botão git da top bar e
    persistente entre sessões: status do branch, lista de mudanças
    com stage/unstage por arquivo, campo de commit, Sync, history
    compacto, e botão "Details" pro pane-tab detalhado. Não rouba o
    foco do editor. (V10.1 cenários 1, 5)
  • Sync de 1 clique — botão Sync faz stage-all → commit → pull
    (fast-forward only) → push numa ação só, com progresso por
    etapa; para na etapa que falhar e mostra o motivo; reusa o
    confirm de set-upstream quando o branch não tem upstream.
    (V10.1 cenário 3)
  • Template de commit message — o campo de commit vem
    pré-preenchido (Update <nota> / Update N notes por padrão);
    configurável em Settings → General com placeholders {{notes}}
    / {{count}} / {{date}}. (V10.1 cenários 2, 8)
  • History compacto + diff inline — últimos commits no side
    panel (hash, autor, subject, tempo relativo); clicar abre o diff
    do commit ali mesmo; "View all" abre o pane-tab. (V10.1 cenário 4)
  • Faixa de métricas no pane-tab git — branch, upstream,
    ahead/behind explícito, mudanças por tipo, autor do último
    commit, último sync e URL do remote acima das abas. (V10.1
    cenário 6)
  • Git panel — aba singleton (botão na top bar) com Status / Log:
    working tree (staged/unstaged/untracked), stage/unstage por
    arquivo, commit form com preview, log filtrável (autor / path),
    diff de commit lado-a-lado, push / pull / fetch, e prompt de
    confirmar set-upstream ao dar push numa branch sem upstream.
    Detecta git remote add feito por fora sem precisar recarregar.
    (V10 cenários 1-5, 8)
  • Branch switcher — o indicador de branch na status bar agora
    abre um picker (branches locais + remotas, filtro, criar nova) que
    faz checkout e recarrega a árvore de arquivos. (V10 cenário 4)
  • Resolução de conflito de merge — banner por arquivo
    conflitado com Accept yours / Accept theirs e um resolvedor 3-way
    (ours editável ↔ theirs, base sob demanda). No editor markdown,
    hunks de conflito ganham destaque (ours/theirs/markers) + ações
    inline na linha do marker (accept current/incoming/both). (V10
    cenário 6)
  • Share via URL do repositório — popover (na status bar e no
    git panel) com as URLs HTTPS / SSH / Web do remote; copiar ou
    abrir a Web URL no navegador. (V10 cenário 7)
  • DocHeader card acima do CM6 — breadcrumb (workspace › path),
    h1 serif do título, abstract serif, tag chips na coluna direita,
    pill row de pre-flight checks, meta strip com gravatar do owner +
    edited mtime + branch + diff stats (main +N ~M) + last run
    status. Card é o ponto de entrada visual da nota. (V6 cenários 1-2)
  • Pre-flight check builder no DocHeader+ Add check abre
    popover com kind picker (connection / env_var / branch /
    file_exists / command) + CM6 inline editor pra value com
    autocomplete contextual (connections puxam de
    ConnectionsStore, env_var da env ativa). Pill cliclável
    abre o mesmo popover em modo edit (pré-bind do kind/value +
    botão Remove). (V6 cenário 9)
  • Pre-flight context wiring — evaluator agora lê o estado real
    do vault: connection names do ConnectionsStore, env-var keys
    da env ativa via EnvironmentsStore, branch corrente via
    git rev-parse --abbrev-ref HEAD. file_exists / command
    contra FS + PATH. Checks deixam de ser "decorativos" e passam
    a refletir o ambiente. (V6 cenário 9 — def8e27, 3c3be69)
  • Pre-flight Run-all gate⌘⇧R (Run all) com pre-flight
    com falha abre dialog de confirmação; Shift+⌘⇧R faz override.
    (V6 cenário 10)
  • Variables page (master-detail) — TopBar LuKeyRound
    abre tab dedicada com lista densa cross-env (1 row por chave,
    colunas por env, contagem USES via vault-grep), sidebar
    SCOPES/HELPERS, detail panel à direita com value-per-env (Show
    pra secrets resolve via keychain, Edit + Override + Delete por
    row), is_secret toggle com prompt + migração para/do keychain,
    USED IN BLOCKS lista clicável que pula pro arquivo. (V5
    cenários 1-4)
  • Session override — botão Override em cada value row salva
    TEMPORARY value em memória (useSessionOverrideStore); chip
    TEMPORARY clicável dropa. getActiveVariables mergeia
    overrides em cima do resolver, então blocos HTTP/DB
    consomem o valor de override. Sem persistência. (V5 cenário 3)
  • + New variable inline form — table-row style
    (KEY mono input + VALUE input + lock toggle + + save + × cancel)
    inserido no header da Variables page. (V5 cenário 5)
  • Environments page — TopBar LuLayers abre tab com cards
    densos por env (varCount, connectionsUsedCount, ACTIVE pill,
    chips personal/temporary). Click ativa o env via
    set_active_environment; o pill ACTIVE faz swap visual
    animado
    entre cards (FLIP manual via getBoundingClientRect
    • translate inverso, 360ms ease-out). (V5 cenário 6)
  • Clone / Rename / Delete environment — ⋮ menu em cada card
    abre Chakra Popover ancorado embaixo. Clone copia plain vars.
    Rename migra entries de keychain (novo backend
    rename_environment + EnvironmentsStore::rename_env).
    Delete tem banner Destructive + type-the-name confirmation
    (industry-standard guardrail). (V5 cenários 7-8)
  • + New environment — Popover anchored no botão pra criar
    novo env (envs/.toml). (V5 cenário 6 polish)
  • EnvironmentManager drawer — refatorado pra consumir
    VariableValueRow + NewVariableForm (V5 atoms). Per-var
    delete shortcut (× vermelho ghost) + + New variable inline
    • per-env Set active / Duplicate / Delete header actions.
      (V5 cenário 10)
  • Master-detail shared atomscomponents/layout/shared/
    expõe SectionLabel, SidebarHintCard,
    MasterDetailListHeader, MasterDetailSidebarRow +
    constants MASTER_DETAIL_SIDEBAR_WIDTH (220px) /
    _DETAIL_WIDTH (420px). Connections + Variables agora
    alinham layout pixel-pixel via essas peças.
  • Connections page (master-detail) — página dedicada (TopBar
    LuPlug ou via tab) substitui o drawer legado: lista filtrada por
    kind/env/status com status dot + latência, painel detail com
    credentials + schema preview + "Used in runbooks" (file:line link
    com navegação), modal "New connection" com tabs per-kind
    (Form / Connection string / SSL — SSH placeholder), file picker
    nativo para SQLite db / cert / key paths, ⋮ menu de row
    (Edit / Test / Duplicate / Delete) e config-changed listener
    refletindo edição manual de connections.toml. (V4 cenários 1-8)
  • find_connection_uses_cmd Tauri command — vault-grep
    on-demand (httui_core::connection_uses) que walk *.md e
    retorna {file, line} de cada referência db-<connection> no
    vault. (V4 cenário 7)
  • Workbench shell + design system — top bar com logo, breadcrumb
    (workspace › project › file), segmented env switcher, ⌘K search e
    branch button substituem a topbar legada. Sidebar nova reúne Files,
    Connections (status dot + latência ms + PROD chip) e Variables
    (lock icon + valor mascarado para entries is_secret). Status bar
    interativa expõe env menu, branch menu, contador +N ~M -D de
    mudanças git, latência, cursor (Ln/Col), encoding e versão.
    (V2 cenários 1-3)
  • Inline DocHeader (Notion-mode) — título serif, abstract, tags
    (chips +/×) e checklist preflight ([x] item) editáveis dentro do
    CodeMirror; frontmatter YAML invisível e gerado automaticamente.
    Meta strip do header mostra autor (avatar Gravatar + nome),
    contagem de blocos e last-run inline. (V2 cenário 4.5)
  • Empty-state cards (Open / Clone / Create vault) — primeiro
    contato com o app sem vault aberto. Three actionable cards
    replace the legacy "Em branco / Templates / Importar" surface,
    with inline error rendering per card and Mac-native directory
    picker. Open and Create rely on scaffold_new_vault; Clone
    s...
Read more