Skip to content

0.6.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 01:34
· 33 commits to master since this release

A provider that reads the web before answering, an action that picks its own model, and a
cut-off answer you can ask to finish.

Perplexity

A new preset — and less a model than a search engine with a model on top. It reads the web
first and answers from what it found, attaching the pages it used. You reach for it for
facts, names and dates: the things an ordinary model does not know and invents with perfect
confidence.

Three of its quirks are handled so they do not look like breakage:

  • It publishes no list of models. "Fetch the list" would have hit a 404 captioned "no
    such model at this address" — a lie twice over. The four Sonar models are built in, and the
    button shows them without a request. The field is still free text, so a new name can be
    typed in without waiting for a plugin update.
  • It has no editing tools. Function calling is not something it does; a request carrying
    tools comes back as a 400 on every question. The plugin no longer sends them, and the
    settings say so under the toggle rather than leaving you to guess.
  • Picking it fills in the model. sonar is set straight away — there is nothing to
    guess at and nothing to look up.

Sources under the answer

The point of a search model is that its answer can be checked. The links it was built on now
sit under the answer, collapsed — there can be a dozen, and they get opened only when the
answer is doubted. They are stored with the answer, so they survive a restart of Obsidian.

The numbers are taken out of the text. A search model cites as it writes — "born in
Moscow[1][6][8]" — and in a long answer those tails sit after every sentence and get in the
way of reading, while telling you nothing on their own. They are stripped; the list below is
what they pointed at anyway. Code blocks and [[wiki links]] are left alone, and a number
the model cites without sending us the source is left alone too — in someone's own text
[1] is just a number in brackets.

A source keeps the number the provider gave it. A repeated page is shown once and a non-web
address is not shown at all, but neither renumbers the rest.

Saving the conversation to a note keeps the sources: the list is written out after the
answer.

An action can have its own model

Proofreading is done no worse by the cheapest model there is; judging a text without a strong
one is pointless; and facts have to be looked up where there is a web. Until now every action
went to whatever stood in the panel header, so getting this right meant switching the header
before each keystroke — and forgetting to, sooner or later.

An action now carries a provider of its own: pick one in the action's own window, and it
always goes there. Leave it on "the one in the panel" and nothing changes. Only providers you
have already configured are offered — an action that cannot run is not worth creating. If the
chosen one loses its model later, the action says so and refuses to run: quietly falling back
to the header would mean an action created to search the web answering out of its head.

A private chat can have its own model

A private chat is started to ask something that is not about the vault at all — and the model
wanted there is usually a different one: cheaper, or simply not the one you keep your work
with. Until now it answered with whatever stood in the header, so getting this right meant
switching on the way in and switching back on the way out — and forgetting on the way out.

There is now a setting for it. Pick a provider and every private chat goes to it; the panel
header names whoever is actually answering, so there is nothing to remember. Picking a model
in the header while in a private chat changes that same setting rather than the panel one —
leave the private chat and everything is where you left it.

The choice does not touch privacy either way: what makes a private chat private is that
nothing from the vault is sent, and that holds whichever model answers.

A cut-off answer can be finished

The model runs out of room and stops mid-word. Until now that was the end of the run: the
half you had paid for stayed in the card, and the only way on was to copy it by hand or ask
again from the beginning — paying for the same text twice.

There is now a Finish it button. It sends the answer back as the model's own words and
asks it to carry on from the exact character it stopped at, then joins the two halves.

  • In the chat the continuation is glued into the same answer, not added as a second
    reply — otherwise a long text, which is the whole reason this exists, would have to be
    copied in pieces and stitched together. The token count for the answer adds up across both
    halves.
  • For an edit over a selection the joined text is applied to the note as a normal edit,
    with its diff and its Undo. If the model runs out of room a second time, the button is
    simply there again.

The beginning of an interrupted edit lives in memory until Obsidian restarts, so after a
restart the button is gone rather than promising something it cannot do.

Things that were quietly going wrong

  • Retry after an error no longer drops the attached fragment. Attach a piece of a note,
    ask about it, lose the network, press Retry — and the question went off without the
    fragment, silently. The panel clears the attachment when the question leaves, and the retry
    had nothing left to pick up.
  • Retry no longer cuts into a different conversation. If the chat was cleared while the
    error was still on screen, the retry trimmed the feed by a position that now pointed into
    whatever had replaced it.
  • Two edits can no longer start at once. The "that is a lot of text" question is a modal;
    while it waited, a second edit passed the busy check, and the two overwrote each other's
    handle — so Stop only ever reached the last one.