* fix(desktop): a window with no WebGL shows the workspace without its globe, not nothing
* test(desktop): end-to-end tests of the real app against a node of their own
* fix(desktop): a window with no WebGL is not offered the topology at all
* test(desktop): the WebGL test says why a topology is not there
It asks the window whether it has WebGL and how wide it is before it looks
for the topology's handle, and sets the window to its opening size. On a
machine that draws no WebGL even in software it is skipped with the reason,
except in CI, where that is a failure.
* feat(desktop): the logo on the app, and installers for Windows, macOS and Linux
* test(desktop): the packaging test expects the icon and the installers
It asks the window whether it has WebGL and how wide it is before it looks
for the topology's handle, and sets the window to its opening size. On a
machine that draws no WebGL even in software it is skipped with the reason,
except in CI, where that is a failure.
* feat(desktop): own local daemon startup and shutdown
* feat(desktop): package native apps with matching daemon
* fix(desktop): prefer the CLI pool port and allow graceful daemon shutdown
* fix(packaging): stamp and verify the embedded daemon version
* feat(storage): replay durable chat pin operations after failures
* test(storage): cover the replay of chat pin operations, and log a failing replay once
The loop that applies queued pin changes moves out of runDaemon into
replayFilePinsPeriodically, so that it can be tested, and logs a failure
when it starts and when it ends rather than every two seconds.
The migration is renumbered to 0018, after those dev gained meanwhile.
* fix(storage): a pin that can never be made does not hold up the queue, and a deletion that was made is not reported as failing
* wip: preserve managed chat attachment retention
* docs(storage): specify draft retention and compatibility guarantees
* fix(files): hide collected content without deleting durable ownership
* fix(desktop): retain draft ownership for empty chat uploads
* fix(files): list protected blobs without remote reads and isolate malformed rows
* test(files): cover restored content without active pins
---------
Co-authored-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>
* fix(desktop): pass gRPC stream status to planner UI (#117)
* fix(desktop): validate IPC senders and scope streams to windows (#117)
* fix(desktop): bound downloads and cancel window-owned file transfers (#117)
* fix(chat): reconstruct saved tool states and job links (#117)
* feat(jobs): configure task timeout and display results
* feat(jobs): inspect recorded and live events on demand
* feat(pool): configure invitations and confirm member removal
* fix(models): require provider keys and display provider descriptions
* fix(i18n): localize model settings in every supported language
* fix(nix): use locked Go 1.27 without automatic toolchain downloads
* fix(deps): deduplicate protobuf and verify grpc protocol compatibility
* fix(files): surface private-key and chat attachment retention notices
* feat(planner): support private jobs with node-owned sealing keys
* feat(chat): encrypt attachments and enforce private planner jobs
* test(chat): verify encrypted planner work across conversation turns
* feat(storage): persist independent owners of shared files
* test(api): retain file pins while attachment owners remain
* feat(storage): bind file references to chat deletion transactions
* fix(api): identify referenced file removals as failed preconditions
* feat(chat): retain uploaded attachments through structured Ask metadata
* fix(chat): require explicit attachment ownership capability before upload
* test(storage): cover malformed file reference rows
* test(chat): cover attachment rejection before model execution
* fix: keep verify in the local API through the merge
---------
Co-authored-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>
* fix(desktop): pass gRPC stream status to planner UI (#117)
* fix(desktop): validate IPC senders and scope streams to windows (#117)
* fix(desktop): bound downloads and cancel window-owned file transfers (#117)
* fix(chat): reconstruct saved tool states and job links (#117)
* feat(jobs): configure task timeout and display results
* feat(jobs): inspect recorded and live events on demand
* feat(pool): configure invitations and confirm member removal
* fix(models): require provider keys and display provider descriptions
* fix(i18n): localize model settings in every supported language
* fix(nix): use locked Go 1.27 without automatic toolchain downloads
* fix(deps): deduplicate protobuf and verify grpc protocol compatibility
* fix(files): surface private-key and chat attachment retention notices
* feat(planner): support private jobs with node-owned sealing keys
* feat(chat): encrypt attachments and enforce private planner jobs
---------
Co-authored-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>
* fix(desktop): pass gRPC stream status to planner UI (#117)
* fix(desktop): validate IPC senders and scope streams to windows (#117)
* fix(desktop): bound downloads and cancel window-owned file transfers (#117)
* fix(chat): reconstruct saved tool states and job links (#117)
* feat(jobs): configure task timeout and display results
* feat(jobs): inspect recorded and live events on demand
* feat(pool): configure invitations and confirm member removal
* fix(models): require provider keys and display provider descriptions
* fix(i18n): localize model settings in every supported language
* fix(nix): use locked Go 1.27 without automatic toolchain downloads
* fix(deps): deduplicate protobuf and verify grpc protocol compatibility
* fix(files): surface private-key and chat attachment retention notices
---------
Co-authored-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>
* fix(desktop): pass gRPC stream status to planner UI (#117)
* fix(desktop): validate IPC senders and scope streams to windows (#117)
* fix(desktop): bound downloads and cancel window-owned file transfers (#117)
* fix(chat): reconstruct saved tool states and job links (#117)
* feat(jobs): configure task timeout and display results
* feat(jobs): inspect recorded and live events on demand
* feat(pool): configure invitations and confirm member removal
* fix(models): require provider keys and display provider descriptions
* fix(i18n): localize model settings in every supported language
* fix(nix): use locked Go 1.27 without automatic toolchain downloads
* fix(deps): deduplicate protobuf and verify grpc protocol compatibility
---------
Co-authored-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>
* fix(desktop): pass gRPC stream status to planner UI (#117)
* fix(desktop): validate IPC senders and scope streams to windows (#117)
* fix(desktop): bound downloads and cancel window-owned file transfers (#117)
* fix(chat): reconstruct saved tool states and job links (#117)
* feat(jobs): configure task timeout and display results
* feat(jobs): inspect recorded and live events on demand
* feat(pool): configure invitations and confirm member removal
* fix(models): require provider keys and display provider descriptions
* fix(i18n): localize model settings in every supported language
---------
Co-authored-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>
* fix(desktop): pass gRPC stream status to planner UI (#117)
* fix(desktop): validate IPC senders and scope streams to windows (#117)
* fix(desktop): bound downloads and cancel window-owned file transfers (#117)
* fix(chat): reconstruct saved tool states and job links (#117)
* feat(jobs): configure task timeout and display results
* feat(jobs): inspect recorded and live events on demand
* feat(pool): configure invitations and confirm member removal
* fix(models): require provider keys and display provider descriptions
---------
Co-authored-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>
* fix(desktop): pass gRPC stream status to planner UI (#117)
* fix(desktop): validate IPC senders and scope streams to windows (#117)
* fix(desktop): bound downloads and cancel window-owned file transfers (#117)
* fix(chat): reconstruct saved tool states and job links (#117)
* feat(jobs): configure task timeout and display results
* feat(jobs): inspect recorded and live events on demand
* feat(pool): configure invitations and confirm member removal
---------
Co-authored-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>
* fix(desktop): pass gRPC stream status to planner UI (#117)
* fix(desktop): validate IPC senders and scope streams to windows (#117)
* fix(desktop): bound downloads and cancel window-owned file transfers (#117)
* fix(chat): reconstruct saved tool states and job links (#117)
* feat(jobs): configure task timeout and display results
* feat(jobs): inspect recorded and live events on demand
---------
Co-authored-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>