Skip to content

Releases: johnae/greed

Greed 0.3.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 04:41
7616148

Highlights

  • Hoard (greed notes): your notes and todos on a home page with today, the agenda and a search over everything; todos in plain words (call the bank tomorrow 18:00), repeats, habits and reminders.
  • An Obsidian vault works as it is: links, aliases, embeds and pictures, callouts, front matter, daily notes, templates and the Tasks plugin's dates.
  • Mail (greed mail): your IMAP accounts (Gmail, and Proton through Bridge) in a local copy, searched as you type, offline too; threads, HTML laid out with nothing loaded, writing in Markdown, invites, rules and undo.
  • One query language for notes, mail and the shell's filters (is:todo due:..+7d, in:inbox from:anna), checked as you type, and notes blocks that keep a list of what a query finds.
  • Agents in both: ask your notes a question, pull the todos out of a meeting, sum up the week, ask which mail needs an answer; jobs can run on a schedule, and what they change waits for your review.
  • A mail becomes a todo in your notes, linking back to its thread.
  • The shell reads more commands as tables (free, ss, ip, mount, uptime, ping, test runs, git's branches and stashes), and parse turns any text into a table with a sikt program.
  • A session that crashed or was upgraded comes back as it was; one you quit starts clean.

New

  • core: greed.sikt reads rows out of text with sikt programs, on other threads for many texts
  • core: a sikt program's rows can hold each capture as the text it matched
  • shell: parse reads text as a table with a sikt program, and a parser can be one
  • shell: free, ss, ip, mount, uptime, ping, test runs, who, env and git's branches, remotes and stashes read as tables
  • core: :w! makes a folder that isn't there, as :wa!, :wq! and :wqa! do
  • core: reading dates in plain words moves to core, for notes, queries and the rest
  • core: one query language: a query parsed into a tree, with its mistakes, and printed back
  • core: a date in a query read as the days it covers: today, 2w, eow, monday, last week, 2026-10
  • core: a query checked against its source and run over items: fields, flags, dates, places, sorting
  • index: queries run over rows in Rust, with maybe for what only Luau can tell
  • index: an index on SQLite: items in items, fields and flags, words in FTS5, searched with the same rules
  • index: greed.index: indexes Luau reads and writes, on another thread
  • core: a search box for queries: colours, the live *, mistakes, counts, tab and history
  • index: words and values match without minding accents: cafe finds Café
  • core: in: naming nothing says so, with the name likely meant; tab completes names
  • query: an item can be in several places, as a mail in its labels, and in: finds it there
  • core: greed.fs.scan lists a folder's files with sizes and times, and reads them, in the background
  • core: core.file.on_changed hears what Greed writes, moves and removes
  • notes: an index of every note, kept current: titles, outline, todos, tags, links, fields, reminders
  • hoard: greed notes opens Hoard, a home for your notes: search, today, the agenda, adding todos
  • notes: todos say when in plain words, like tomorrow 18:00 or every monday, and repeating todos come back
  • hoard: greed capture adds to today's note from any shell, and today's note starts from a template
  • lsp: a completion source can ask to be asked first
  • hoard: / in a note offers a todo, dates, a reminder, a repeat, a link, a heading, a table or a tag
  • notes: links go to headings, blocks and aliases as Obsidian writes them, and the Tasks plugin's due dates count
  • notes: embeds show the note, section or block in place
  • notes: :notes-link links to a heading, list item or block, giving it an id
  • notes: renaming a note or folder changes the links to it
  • hoard: [[ completes notes, their headings and blocks as you type
  • hoard: modeless and without line numbers or spelling servers, unless set otherwise
  • hoard: the status line and going back lead home from a note
  • hoard: the home is a box to write in, adding to today and searching as you type
  • hoard: :hoard goes to Hoard's session from anywhere, :hoard-window in a window of its own
  • hoard: the arrows move about the home, and the widget you're on lights up
  • hoard: esc in a note goes back to the home
  • hoard: todos written today are on the agenda, and the box fits its width
  • hoard: a todo on the agenda moves to another day with its when button or alt-d
  • notes: repeats on several days or every few, habits, from and until, and reminders at a time alone
  • core: quick-fix asks plugins first, then the language server
  • notes: a line names the notes it mentions, the quick fix links them, and notes list where they're mentioned
  • hoard: the home brings back old notes and waiting todos, and the week gets a review
  • markdown: list items and sections move, indent and zoom with what's under them
  • notes: notes, todos and headings answer queries, and agents can ask them
  • notes: a notes block in a note lists what its query finds, as the notes change
  • hoard: the home's search reads an index of everything the notes say, and takes queries
  • core: greed.fs.write can write in the background, so a slow disk doesn't hold the editor
  • hoard: the first time, the home says where notes are and how to add to them
  • notes: a todo a notes block lists is ticked from its row, as a data source's row offers what can be done with it
  • hoard: the agenda as a note of queries, made the first time and then yours to change
  • markdown: Obsidian's callouts show their sign and title, their bar in their kind's colour
  • notes: front matter's lists and links are fields queries read, and its date is the note's
  • notes: in an Obsidian vault, today's note goes where its daily notes settings say, from their template
  • notes: note kinds from templates, and front matter completion
  • notes: agent jobs: pull out todos, ask your notes, sum up the week
  • notes: rename a tag in every note
  • notes: picture embeds, found as Obsidian finds attachments
  • notes: a tag naming a note kind offers its missing fields
  • notes: agent jobs on a schedule, skipped when there's nothing new
  • restore: a session that was quit starts clean, one that crashed or was upgraded comes back
  • mail: greed-mail: accounts, logging in over TLS, what a server can do, its mailboxes
  • mail: the store and the first sync: headers newest first, by UID range, a batch at a time
  • mail: flags and labels kept up to date, messages gone from the server go, Bridge's labels as places
  • mail: bodies: each message's text, its HTML packed and what's attached, unread first
  • mail: threads: replies join what they reply to, in whichever order they come
  • mail: the index: messages and threads by words, places, fields and flags, kept up with the store
  • mail: greed-mail serve: syncs in the background, answers search results and threads over JSON-RPC
  • mail: :mail searches your mail as you type and reads its threads, from greed-mail
  • mail: new mail comes at once through IDLE; a failing account is tried again, later each time
  • mail: greed mail opens mail in a session of its own on a full page; a quick look elsewhere
  • mail: mark read, flag, archive and trash; changes show at once and go to the server each round
  • mail: write, reply and send mail over SMTP; a copy in Sent, the original marked answered
  • mail: tags: keywords on plain IMAP, shown in the list, t to set or take off; Proton and Gmail wait
  • mail: HTML mail laid out as styled text in Greed, its links opened from it; h for its text, b for a browser that loads nothing
  • mail: attachments open from a thread or save where you say, fetched whole the first time
  • mail: a list shows a thread once, its changes made to the messages found
  • mail: saved searches over the list, their unread counted as mail comes; g 1 to g 9
  • mail: rules for new mail: a query and what to do with what it finds, in Luau
  • mail: T makes a todo of a message, linking back; mail: links open its thread
  • mail: invites read as a card; accept, maybe or decline answers the organizer
  • mail: the quick look elsewhere changes mail through the mail session
  • mail: z undoes the last change or takes back mail just sent; deleting for good asks
  • mail: a thread opens on what's new, older messages and long quotes folded; o shows all
  • mail: writing mail: From by who it went to, aliases, addresses completed from your mail, attachments
  • mail: tags set as Gmail labels, and Proton labels once an account turns them on
  • mail: aliases are you: is:mine, invites to them, and never offered as contacts
  • mail: the list says what greed-mail is busy with: a bar while indexing, how much is in while syncing
  • mail: what's written is kept as a draft as you go; :mail-drafts writes one again, z reopens mail taken back
  • mail: space . acts on the mail at the cursor, and on the draft being written
  • core: files open by type: in Greed, outside it as open_with says, never a program
  • mail: what's attached shows in the list and under each message, with how it opens
  • mail: space . on what's attached: open, open outside, save, save all, copy its path
  • mail: search what's attached by its name and kind: file:invoice type:pdf
  • mail: what's attached to recent and flagged mail is fetched ahead, so it opens at once
  • mail: g s picks any saved search by name, however many there are
  • mail: tab and shift-tab go through the saved searches, alt-1 to alt-9 to one
  • mail: identities: a signature, Reply-To and Bcc to yourself for each address you send from
  • mail: mail is written in Markdown and goes as its text and the HTML it makes
  • mail: a default From for new mail, and :mail-from picks who it's from with that identity's signature
  • mail: greed-mail and the plugin say which protocol they speak, and a mismatch says what to rebuild
  • mail: rules can be tried on the mail you have, then run over it; and a rule can be kept for mail of an age
  • mail: ctrl-enter or alt-enter sends the mail being written
  • agent: what you're in says wha...
Read more

Greed 0.2.1

Choose a tag to compare

@github-actions github-actions released this 18 Oct 11:16
a370498

Highlights

  • Snippets in VS Code's format: copy in VS Code snippet files or sets like friendly-snippets, with places, choices, variables and transforms.
  • Brackets and quotes typed in pairs, in the Helix and VS Code styles, and completion from words in open files and from paths as you type.
  • Undo lasts across restarts, kept with each save.
  • space - shows a folder as text: rename, make, move and delete files by editing it. Deletes go to the trash.
  • Plugins from git, named in your config and pinned to commits in a lock file next to it.
  • Indent guides, color swatches and TODO comments picked out.
  • Trusting a project is asked in a box that stays until you answer, and the status line says when a language server waits for :trust.

New

  • core: brackets and quotes typed in pairs, in the helix and vscode styles
  • lsp: words from open files and paths complete as you type
  • core: snippets with places to fill in, tab going from one to the next
  • snippets: your own snippets, in VS Code's format, a file per language
  • indent guides, color swatches and TODO comments picked out
  • undo lasts across restarts, kept with each save
  • folders: edit a folder as text to rename, make, move and delete files; deleting goes to the trash
  • git-plugins: plugins from git, fetched in the background and pinned in a lock file
  • record: demos can show the keys they press and a caption
  • core: greed.text.matches finds a regex's matches and groups in a string
  • snippets: choices offered in the menu, and VS Code's transforms
  • git-plugins: a plugin taken out of the config is removed by :plugins-sync

Fixed

  • core: the question whether to trust a project was cut off on narrow screens, and outside a repository it asked about the file's folder instead of the one the language server runs in, so rust-analyzer kept waiting after a yes (#3); it's now a box that stays until you answer
  • lsp: a server held back in an untrusted project says it waits for :trust
  • notes: reminders go off in one session when several are running
  • projects: space P says what enter does, and alt-o opens a project here

Documentation

  • 0.2.0's highlights as the release page shows them, one line each
  • site: plain text and a recording of Greed in place of the generated picture
  • plain wording, tables and examples in place of long prose, on every page
  • provider-neutral examples, agents by protocol, a shorter front page
  • site: a short hero and a tour of recent additions
  • show-keys and caption in recording scripts

Greed 0.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 16:22
141fbc0

Highlights

A Markdown page working out a budget: fields, formulas, a table's worked-out columns and a bar chart

  • Live Markdown: fields, {{ formulas }}, worked-out table columns and charts under tables, recomputed as you type. Data blocks read tables live from CSV, SQLite and PostgreSQL.
  • Agents across machines: one session follows the others and the hubs on machines you reached with greed ssh. space space lists every session and agent, and you can answer or stop an agent from anywhere, Claude Code's questions included.
  • Auto mode for agents: commands that only look, build or test run by themselves, and a decision model you pick judges the rest or asks you. :decision-check tries a model before you rely on it.
  • Untrusted projects run none of their own code until you trust them: config, language servers that run the project's code, and formatting on save. Greed asks once.
  • core.ui, a way for plugins to draw interfaces as text: lists, grids, inputs and buttons. The picker, completion and the command line use it.
  • Some 330 more languages from Helix's list, Terraform, OpenTofu and HCL among them.
  • In the window, views scroll smoothly, buttons light up under the mouse and input methods compose at the cursor. :s///c asks about each match.
  • Install on macOS and Linux with Homebrew: brew install johnae/greed/greed, or brew install --cask johnae/greed/greed-app for Greed.app.

New

  • languages: Terraform, OpenTofu and HCL: HCL's grammar downloaded with Helix's queries, terraform-ls or tofu-ls
  • languages: some 330 more languages from Helix's list: files, comments, indent and language servers
  • sessions: space B goes back to the session you were in, on whichever machine, and home comes back from another machine
  • agent: agent-max-tokens stops Greed's own agent once a session has read and written that many tokens
  • agent: a status tool, greed ctl status: what needs you and the agents at work, with a schema version
  • terminal: agents in terminals say through their hooks when they work, wait for you or idle; greed ctl KEY=@- reads stdin
  • agent: Greed's own sessions fork too, going on from what was said with the same model and tool groups
  • agent: agents in workspaces of their own hear when another changes the same files
  • core: objects.changed nudges whoever follows an object to look again now; terminals keep their agent's state per source, trusted or not, reconciled when the program ends
  • agent: the Claude Code Greed starts tells Greed through its hooks when it works or waits, with nothing to set up; the status line counts agents in terminals too
  • agent: agents running in terminals show in the session list, where enter goes to their terminal and x closes it
  • ssh: greed ssh notices a dropped connection, through a heartbeat both ends keep, and comes back to the same session by itself
  • cli: greed ls says how each session's agents are doing, asking it as an ordinary client; greed.session.status
  • agent: greed ctl watch follows a session's status: all of it at once, again on each change and every 15 seconds
  • hub: one session on the machine follows the others, so each says what waits elsewhere (space i A goes there)
  • agent: the status says which machine it's on, by an id made once, for hubs to tell machines apart
  • hub: the hub tells each machine once when an agent anywhere waits for you
  • hub: hubs follow other machines' hubs over ssh, so you see and hear of agents there
  • hub: follow the machines you reached with greed ssh lately, no config needed
  • hub: a session over greed ssh shows what's on your machine, asked through your client
  • picker: space space lists your sessions and agents on every machine, from plugins' places
  • agent: answer or stop an agent from anywhere: its actions in space space, here or on other machines
  • agent: Claude Code's questions wait in Greed while you're elsewhere, answered from anywhere
  • agent: questions Greed's agent asks are answered from anywhere; greed ctl acting as you asks an agent every time
  • agent: Claude Code's multiple-choice questions are asked on a page while you're elsewhere
  • blocks: what runs by itself runs only as you last let it; changes from outside wait
  • core: formulas, Luau's expressions worked out without running code
  • markdown: live values, {{ formulas }}, lets and fields, worked out as you edit
  • markdown: formula columns in tables, worked out row by row
  • blocks: command buttons in Markdown, values quoted as one argument each
  • chart: charts under Markdown tables, drawn again as the table changes
  • chart: charts under tables drawn as vectors where the client can
  • blocks: code blocks get the page's values, fields, lets and tables
  • markdown: edit tables as drawn from normal mode
  • markdown: markup opens as written when the cursor steps inside
  • markdown: a hidden part says when it shows, and opens with the cursor on it
  • notes: a todo can have several reminders, each going off on its own
  • core: tables of data in one shape, and the sources they come from
  • data: data blocks in Markdown, tables read live from csv, sqlite and psql
  • chart: a chart line under a data block charts the table it read
  • core: core.ui, interfaces drawn as text and marks from a view's state
  • data: a data block's table opens in a float as text; tables drawn by core.ui
  • core: core.ui grids, values under the cursor, items kept as lines move, button rows
  • data: data SOURCE in the shell, so boards and shell blocks read databases
  • core: core.ui keyed parts drawn again only when they change, and soon for bursts
  • gui: scrolled views glide to their place, unless gui-smooth-scroll is off
  • core: core.ui inputs under a view, marks of a span's own, and its namespace and width
  • core: core.ui finds lines by value, picks out fuzzy matches, and mounts before it draws
  • core: a core.ui view can draw under an input line, as a picker's list under its query
  • core: a core.ui view over an input can have no lines, leaving only the input
  • acp: images sent while the agent works go with the message, to Greed's agent at its next step
  • core: a core.ui list marks its current row; picker, completion and the command line use it
  • core: value_at gives the value of the span at a position
  • gui: hover lights up buttons, fields and choices; input methods compose at the cursor
  • core: risk.safe tells command lines that only look, build or test
  • acp: auto mode answers agents' questions where it safely can
  • acp: auto mode's decision model judges commands by what you asked, risky ones too
  • models: decide asks yes-or-no questions of a System One decision model or any chat model
  • acp: auto mode asks the decision model how likely a command is harmful and asked for
  • acp: up and down bring back what you sent; auto or manual shown in colour and remembered
  • acp: auto mode asks whether a command is safe and asked for, as clef-flash answers best
  • acp: :decision-check tries the decision model on commands it should and shouldn't let run
  • core: greed.fs.dirs gives the system's folder for temporary files
  • acp: auto mode judges scratch files in /tmp, tells ACP agents why, and stops after twenty blocks
  • core: language servers start only in folders Luau trusts, held back until then
  • core: an untrusted project runs none of its own code until you trust it, asked once
  • cmdline: :s///c asks about each match, vim's y/n/a/l/q
  • core: greed.fs takes relative paths from the shown project's root
  • site: recordings get the room on wide screens and open larger on a click

Fixed

  • ssh: greed ssh relays an agent that answers, falling back to IdentityAgent, and says on the status line why one doesn't
  • ssh: a session puts its own greed on its programs' PATH when none is there, so greed FILE works on machines greed ssh set up
  • hub: ask a client attaching from elsewhere about its machine at once
  • agent: a tool call without its path tells the model; a crash ends the turn instead of hanging it
  • agent: an answer a question doesn't offer is ignored, not taken as a no
  • hub: the status line counts agents from what the hub heard, not by listing sessions each frame
  • markdown: a table's last row no longer drawn in the border's dim style
  • markdown: a command button's values are left for its command
  • blocks: a command button's output shows in a float as it runs
  • markdown: fill out table rows typed short of cells
  • chart: a Markdown chart's comment line stays in sight above it
  • blocks: command buttons run in sh, the same for anyone
  • shell: values in lines for your shell are quoted for it, nu and fish too
  • acp: a long command in the box's bottom line is cut to fit, its time still shown
  • acp: an image sent while the agent works says it goes with the next message
  • gui: only a view that scrolled glides, never rows moved by its text or a pane with fixed parts or pictures
  • board: i, a, c and o open a card's file in typing mode too
  • acp: typing in the box keeps the status animated rather than drawing it still for a moment
  • core: a cursor kept by core.ui lands on a whole character
  • board: updates drawn together, charts run again once a resize settles
  • models: decide reads the provider's key as models, whoever asks
  • acp: the decision model sees your newest message apart, and a new one asks it again
  • acp: auto mode asks the decision model one plain question, whether a command is safe to run
  • core: servers that only read files start untrusted, and tests trust every project
  • core: a key other than y or n at the trust question does what it would have
  • markdown: a search into a table, or typing that changed nothing, leaves it as written

Faster

  • keys are drawn before background work; slow status line pieces move aside
  • delta: rows a scrolled view still shows move on the client and aren't sent again
  • markdown: an edit reads only the lines it changed, and questions and charts look only where ...
Read more

Greed 0.1.8

Choose a tag to compare

@github-actions github-actions released this 14 Oct 20:27
1ae8a54

Full Changelog: v0.1.7...v0.1.8

Greed 0.1.7

Choose a tag to compare

@github-actions github-actions released this 14 Oct 19:24
7ecc060

Full Changelog: v0.1.6...v0.1.7

Greed 0.1.6

Choose a tag to compare

@github-actions github-actions released this 14 Oct 11:38
96e5753

Full Changelog: v0.1.5...v0.1.6

Greed 0.1.5

Choose a tag to compare

@github-actions github-actions released this 13 Oct 22:50
0798af6

Full Changelog: v0.1.4...v0.1.5

Greed 0.1.4

Choose a tag to compare

@github-actions github-actions released this 13 Oct 11:31
23dd512

Full Changelog: v0.1.3...v0.1.4

Greed 0.1.3

Choose a tag to compare

@github-actions github-actions released this 11 Oct 22:50
00cb2bc

Full Changelog: v0.1.2...v0.1.3

Greed 0.1.2

Choose a tag to compare

@github-actions github-actions released this 11 Oct 19:41
4728953

Full Changelog: v0.1.1...v0.1.2