Commit Graph
78 Commits
Author SHA1 Message Date
excho0 15d80a454c Merge updated model settings base into provider E2E 2026-10-14 15:46:30 +03:00
excho0 d6d724f151 Merge dev into model settings acceptance 2026-10-14 15:34:35 +03:00
excho0 192c3fd88b fix(desktop): preserve the active chat across responsive layouts (#205)
* Refresh PR #205 branch contents after rebase

* fix: restore complete source files on PR #205
2026-10-14 14:34:36 +03:00
excho0 acafb358d2 test(desktop): verify Settings reconnect recovery (#203)
* Refresh PR #203 branch contents after rebase

* fix: restore complete source files on PR #203
2026-10-14 14:32:35 +03:00
excho0 8ec4d78284 test(desktop): verify theme and accent persistence (#201)
* Refresh PR #201 branch contents after rebase

* fix: restore complete source files on PR #201
2026-10-14 14:32:25 +03:00
excho0 eeda32ca5a test(desktop): verify workspace panels in RTL (#199)
* Refresh PR #199 branch contents after rebase

* fix: restore complete source files on PR #199
2026-10-14 14:30:03 +03:00
excho0 92044f3029 test(desktop): verify planner stream teardown in Electron (#198)
* Refresh PR #198 branch contents after rebase

* fix: restore complete source files on PR #198
2026-10-14 14:29:56 +03:00
excho0 eb6f5a2d86 fix(desktop): format daemon development versions correctly (#207)
* Refresh PR #207 branch contents after rebase

* fix: restore complete source files on PR #207
2026-10-14 14:28:07 +03:00
excho0 9daf380dc9 feat(web): serve browser clients with paired-session auth (#213) 2026-10-14 14:16:06 +03:00
excho0 1e79d42d5d fix: restore complete source files on PR #202 2026-10-14 14:06:19 +03:00
excho0 9f8c0a5bdb Refresh PR #202 branch contents after rebase 2026-10-14 13:47:04 +03:00
excho0 4504bc4203 feat(models): support multiple named provider profiles (#211)
* feat(models): support named provider profiles

* fix(protocol): restore complete generated protobuf source
2026-10-14 13:33:23 +03:00
excho0 bc8d88c057 test(desktop): cover workspace panel persistence (#197) 2026-10-14 13:27:31 +03:00
excho0 bb46d7d557 test(desktop): cover Operations reconnect (#195) 2026-10-14 13:17:54 +03:00
excho0 8c5c69842d feat(desktop): add development IPC traffic diagnostics (#231)
* feat(desktop): add bounded IPC log sanitizer

* test(desktop): cover IPC log redaction and bounds

* feat(desktop): trace IPC and add DevTools toggle

* feat(desktop): display IPC logs in DevTools

* chore(desktop): preserve Linux window icon
2026-10-14 12:59:06 +03:00
rvnminers-A-and-N 35261139fb test(desktop): end-to-end tests of the real app, and a window that survives having no WebGL (#184)
* 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.
2026-10-14 12:59:02 +03:00
rvnminers-A-and-N 9898094e0c feat(desktop): the logo on the app, and installers for Windows, macOS and Linux (#218)
* 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
2026-10-13 22:48:09 -04:00
rvnminers-A-and-N d4eee0840d feat: icons drawn from the logo, and one on the Windows daemon (#216) 2026-10-13 21:38:33 -04:00
excho0 af0153e3d6 test(desktop): assert model download progress 2026-10-10 18:03:32 +03:00
excho0 846f6fdff2 test(desktop): cover local model downloads 2026-10-10 17:56:55 +03:00
excho0 b4725dc427 test(desktop): cover OpenAI provider key flow 2026-10-10 17:55:29 +03:00
excho0 1f00f47136 test(desktop): verify model settings end to end 2026-10-10 16:54:05 +03:00
excho0 c0043fe722 fix(desktop): preserve settings scroll across routes 2026-10-10 16:35:56 +03:00
excho0 2a1e69386a fix(desktop): distinguish panel taps from drags 2026-10-10 16:28:30 +03:00
excho0 904a4d42b1 test(desktop): exercise live mobile workspace behavior 2026-10-10 16:26:09 +03:00
excho0 b8f8a3e88c fix(desktop): make panel handle toggles reliable 2026-10-10 16:18:27 +03:00
excho0 432b49d38b test(desktop): cover workspace panel persistence 2026-10-10 16:04:18 +03:00
excho0 372bea6aed test(desktop): make end-to-end layouts explicit 2026-10-10 15:48:01 +03:00
excho0 ad6d13e6ac test: cover operations reconnect 2026-10-10 15:44:03 +03:00
rvnminers-A-and-N a271c75b8e 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.
2026-10-10 12:35:44 +00:00
excho0 c661e2ba66 fix(i18n): clarify private job key sharing (#192) 2026-10-10 15:10:36 +03:00
rvnminers-A-and-N f626a7eea8 fix(desktop): a window with no WebGL is not offered the topology at all 2026-10-10 11:03:43 +00:00
rvnminers-A-and-N be9abafb12 test(desktop): end-to-end tests of the real app against a node of their own 2026-10-10 10:18:01 +00:00
rvnminers-A-and-N d8548efeb9 fix(desktop): a window with no WebGL shows the workspace without its globe, not nothing 2026-10-10 10:18:01 +00:00
excho0 26ad102b7c fix(desktop): open language picker from the keyboard (#177)
* fix(desktop): open language picker from the keyboard

* fix(desktop): manage focus in portalled selectors
2026-10-10 03:57:35 -04:00
excho0 2520943534 feat(desktop): build native packages with an embedded daemon (#169)
* 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
2026-10-10 02:17:05 -04:00
excho0andrvnminers-A-and-N 78c7d0241e feat(chat): expire unattached uploads without releasing other owners (#165)
* 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>
2026-10-10 02:05:33 -04:00
excho0 833bca1641 feat(desktop): start and stop an owned local daemon (#167)
* feat(desktop): own local daemon startup and shutdown

* fix(desktop): prefer the CLI pool port and allow graceful daemon shutdown
2026-10-10 01:53:08 -04:00
excho0 410041fec5 fix(ui): bundle locale flags from Flagpack instead of copied public assets (#173)
* fix(ui): bundle locale flags directly from Flagpack

* test(ui): verify every locale flag in production assets
2026-10-10 01:52:53 -04:00
excho0 8db6d24b2c fix(workspace): resize panels from their visible width (#172) 2026-10-10 01:52:44 -04:00
rvnminers-A-and-N 742759057a fix(api): reading jobs needs the node's token, and a job can ask for a worker by node ID (#166) 2026-10-10 00:47:11 -04:00
excho0andrvnminers-A-and-N f55a7f59b6 fix(chat): check node attachment capability before uploading (#151)
* 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>
2026-10-09 11:59:38 -04:00
excho0andrvnminers-A-and-N a6bec94e33 feat(chat): bind uploaded attachments through structured Ask references (#150)
* 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

* test(storage): cover malformed file reference rows

* test(chat): cover attachment rejection before model execution

---------

Co-authored-by: Austin L. <86896075+rvnminers-A-and-N@users.noreply.github.com>
2026-10-09 11:44:09 -04:00
excho0andrvnminers-A-and-N 804d714b30 feat(chat): encrypt attachments and enforce private jobs in their conversation (#142)
* 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>
2026-10-09 11:41:24 -04:00
excho0andrvnminers-A-and-N 7a5fe72c25 fix(files): expose encryption and attachment retention consequences (#139)
* 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>
2026-10-09 11:40:18 -04:00
excho0andrvnminers-A-and-N f574d49d58 fix(deps): deduplicate protobufjs with protocol compatibility coverage (#138)
* 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>
2026-10-09 11:40:06 -04:00
excho0andrvnminers-A-and-N f6b80f86c3 fix(i18n): translate model settings, actions and notifications (#136)
* 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>
2026-10-09 11:39:41 -04:00
excho0andrvnminers-A-and-N 3ff9f10c1d fix(models): enforce required API keys and show provider descriptions (#135)
* 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>
2026-10-09 11:39:27 -04:00
excho0andrvnminers-A-and-N 25c7f5250d feat(pool): configurable invitations, copy and removal confirmation (#134)
* 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>
2026-10-09 11:39:15 -04:00
excho0andrvnminers-A-and-N 71c3ae94ac feat(jobs): open recorded and live timelines with one event stream (#133)
* 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>
2026-10-09 11:39:02 -04:00