Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .changeset/history-keeps-its-errors.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
"fiber": patch
---

A response body that fails to load, or a history clear that fails, is reported
in the History tab again instead of vanishing the moment the tab opens.

History now catches up with what the MCP server records whenever the tab is
opened, and a catch-up that succeeded cleared every error on the way — including
the one the tab was being opened to show. It now clears only an earlier failure
to list history, which is the one a successful list resolves.

Also moves rustls to 0.23.45 for RUSTSEC-2026-0285, in which TLS 1.3 handshake
messages were accepted across encryption level boundaries, and fast-uri (used by
the editor's schema linting) to 3.1.8 for two advisories on how it parses a
URI's authority.

Clicking another collection's settings cog while a settings drawer is open now
reliably switches to that collection. The click also counted as dismissing the
open drawer, and when the dismissal landed last the drawer closed and stayed
closed.
8 changes: 4 additions & 4 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions src/lib/components/SectionSettings.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -304,8 +304,20 @@
and usable — you are configuring a collection you can still see.
-->
<Dialog.Overlay class="drawer-scrim absolute inset-0 z-40 bg-black/40" />
<!--
A click on another collection's cog is outside this drawer, and used to
close it at the same time as it opened the next one. Whichever landed
last won, and sometimes that was the close: the drawer shut and stayed
shut. The cog switches collections itself, flushing the one being left,
so the click is not also a dismissal.
-->
<Dialog.Content
class="drawer absolute inset-y-0 left-0 z-50 flex w-[min(460px,80%)] flex-col border-r border-border bg-panel shadow-2xl"
onInteractOutside={(event) => {
if (event.target instanceof Element && event.target.closest('[data-opens-settings]')) {
event.preventDefault();
}
}}
>
<div class="p-4 pb-0 shrink-0">
<Dialog.Title class="text-sm font-semibold">Section settings</Dialog.Title>
Expand Down
1 change: 1 addition & 0 deletions src/lib/components/Sidebar.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -1110,6 +1110,7 @@
{...props}
type="button"
aria-label="Settings for {section.name}"
data-opens-settings
onclick={(event) => {
event.stopPropagation();
onOpenSettings(section);
Expand Down
26 changes: 22 additions & 4 deletions src/lib/history.svelte.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,31 @@ class History {
* clicked went nowhere.
*/
viewingId = $state<string | null>(null);
/**
* The message of the last list that failed, if `error` still shows it.
*
* A list that succeeds resolves that error and no other. `refresh` runs
* every time the History tab opens, and clearing `error` outright there
* wiped a failed body load or clear the moment the tab that reports it was
* opened.
*/
#listError: string | null = null;

#listed(): void {
if (this.error !== null && this.error === this.#listError) this.error = null;
this.#listError = null;
}

#listFailed(error: unknown): void {
this.error = this.#listError = String(error);
}

async load(): Promise<void> {
try {
this.entries = (await historyList()).map(fromRecord);
this.error = null;
this.#listed();
} catch (error) {
this.error = String(error);
this.#listFailed(error);
}
}

Expand All @@ -123,9 +141,9 @@ class History {
let records: HistoryRecord[];
try {
records = await historyList();
this.error = null;
this.#listed();
} catch (error) {
this.error = String(error);
this.#listFailed(error);
return;
}
const known = new Set(this.entries.map((entry) => entry.id));
Expand Down
Loading