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
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- **The system-dialog language claims say what is covered.** Permission buttons (allow, deny, allow once, allow while using) are matched by role in the 55 iOS 26.5 locales, and on Android for dialogs that use the stock permission controller ids. OK, cancel, not now, open and close are English only. The iOS label table writes its no-break spaces and zero-width non-joiners as escapes (the same bytes). Tests cover the ATT alert in either order and the invisible-character locales.
- **The embedded license key list has a test.** The test checks each embedded key's key id and Ed25519 public key, and that no key id is listed twice. It passes on the empty list in this release. A license signed with the matching private key verifies once its key is embedded, and one signed with another key is refused. Embedding the production public key before a client release lets customers upload reports is a manual release checklist item; no test enforces it. Verification itself is unchanged.

### Removed

- **Studio: two leftovers nothing used.** The `discoveryContext` helper in `studio/wifi_discovery.go` was never called (WiFi discovery builds its own context), and `studio/frontend/src/app.css` held Wails starter-template styles that nothing imported. No behavior changes. The third item in the issue, a commented-out `replace` in `studio/go.mod`, was already removed in #477. (#401)

### Fixed
- **Provider text in a CLI failure is cut, and the client's own key is removed from it.** In `probe generate`, the `with ai` screen steps, the text-only mode and `probe ai doctor`, text that comes from the provider and is shown in a failure or in the doctor report shows at most its first 200 bytes per string, after every exact occurrence of the API key sent in that request has been removed. The strings are the body of a non-200 answer, the type and message of an error object, an answer that does not parse as a verdict, the reasoning of a verdict (so a long reasoning in a failed `with ai` step is shortened), and, in the doctor, the model ids it lists and its sample of the model's answer. This hides an exact echo of the key only: a key that comes back masked, encoded or split is not found, the first 200 bytes of an echoed prompt still appear, and other secrets in that text are not touched. Text a provider returns as the result of a successful call, such as a generated test or an extracted value, is not changed. Studio's chat is unchanged: it redacts error text through its own gate.
- **Provider requests do not follow redirects, in Studio and in the CLI.** An endpoint that redirects is an error, so a prompt and any key are never sent to a second host. Provider error messages keep only the first 200 bytes of the reply, and Studio redacts them.
Expand Down
54 changes: 0 additions & 54 deletions studio/frontend/src/app.css

This file was deleted.

10 changes: 0 additions & 10 deletions studio/wifi_discovery.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"
"fmt"
"sync"
"time"

"github.com/grandcat/zeroconf"
wailsruntime "github.com/wailsapp/wails/v2/pkg/runtime"
Expand Down Expand Up @@ -121,12 +120,3 @@ func entryToDevice(e *zeroconf.ServiceEntry) WiFiDevice {
}
return dev
}

// Helper used by App methods to construct a default browse context tied to
// the App's lifecycle.
func discoveryContext(parent context.Context) (context.Context, context.CancelFunc) {
if parent == nil {
parent = context.Background()
}
return context.WithTimeout(parent, 24*time.Hour) // effectively forever; user stops manually
}
Loading