fix(proskenion): repair desktop app build (drifted Debug field + eval API) - #4149
Merged
Conversation
… API) proskenion is excluded from the workspace (GTK/webkit2gtk) and not built in CI, so two compile errors had drifted onto main: - state/connection.rs: the manual `Debug` impl referenced a removed `retry_backoff_ms` field (E0609). Dropped the stale line. - views/files/toolbar.rs: `document::eval(&js).is_err()` — Dioxus `eval` returns an `Eval` future, not a `Result` (E0599). Added `.await` to match the other eval call sites (chat.rs, command_palette.rs). `cargo build -p proskenion --manifest-path crates/theatron/proskenion/Cargo.toml` now compiles cleanly. Gate-Passed: kanon 0.1.0
|
forkwright
pushed a commit
that referenced
this pull request
May 28, 2026
🤖 I have created a release *beep* *boop* --- ## [0.28.0](v0.27.0...v0.28.0) (2026-05-28) ### Features * **agora:** reintroduce Matrix channel provider ([cf4a13f](cf4a13f)), closes [#3981](#3981) * **complexity:** Tier-1 no-LLM handler registry ([#3970](#3970)) ([#4107](#4107)) ([8cacb1a](8cacb1a)), closes [#4106](#4106) * **energeia:** add prompt context policy slot ([3681da8](3681da8)), closes [#3974](#3974) * **energeia:** add prompt worktree policy slot ([#4066](#4066)) ([b683be5](b683be5)) * **energeia:** add session isolation primitive ([#4093](#4093)) ([3e18e26](3e18e26)) * **energeia:** bound DAG context handoff ([6e09a72](6e09a72)), closes [#3974](#3974) * **energeia:** emit child session progress ([#4067](#4067)) ([40a627f](40a627f)) * **episteme:** add memory policy RL readiness ([#4046](#4046)) ([a2a3a65](a2a3a65)) * **episteme:** NuExtract-2.0 ONNX bookkeeping provider ([#3978](#3978)) ([#4108](#4108)) ([5e97029](5e97029)) * **hermeneus:** add no-llm complexity tier ([7a9d810](7a9d810)), closes [#3970](#3970) * **hermeneus:** carry structured output format ([18db6e3](18db6e3)), closes [#3972](#3972) * **memory:** add project identity primitive ([#4059](#4059)) ([8e7f676](8e7f676)) * **memory:** tag observations with runtime project id ([fc12cc3](fc12cc3)) * **mneme:** partition recall by project ([81f60f6](81f60f6)), closes [#3975](#3975) * **organon:** implement katharos worktree cleanup ([#4060](#4060)) ([6dccac4](6dccac4)) * **provider:** accept codex oauth config type ([5f2d6b4](5f2d6b4)), closes [#3980](#3980) * **recall:** thread local reranker model path ([#4092](#4092)) ([4e1833d](4e1833d)), closes [#3977](#3977) * **routing:** RoutingBoundary + FallthroughRouter — Q-learner prereqs ([#3969](#3969)) ([#4105](#4105)) ([6a3b2b9](6a3b2b9)) ### Bug Fixes * **aletheia/init:** honor the global -r/--instance-root flag for init ([#4177](#4177)) ([1091647](1091647)) * **aletheia/maintenance:** unify the three maintenance task-name lists and include audits in 'run all' ([#4178](#4178)) ([c77b2d9](c77b2d9)) * **aletheia/tls:** reject --days 0 and overflowing --days instead of emitting already-expired certs ([#4176](#4176)) ([fd9d18d](fd9d18d)) * **ci:** open auto-merge PR for _llm regeneration instead of direct push ([#4114](#4114)) ([54fc7a6](54fc7a6)) * **ci:** repair YAML syntax in llm-regen workflow PR body ([#4118](#4118)) ([f1fcff8](f1fcff8)) * **compile:** add missing project_id to Fact/ScoredResult/RecallResult initializers; suppress loopback-url false positives ([#4125](#4125)) ([0bed947](0bed947)) * **energeia:** add missing project_id field to training Fact initializer ([#4110](#4110)) ([c7fa56e](c7fa56e)) * **energeia:** pass real PR diff into QA ([cfca9df](cfca9df)), closes [#3941](#3941) * **episteme,aletheia:** carry scope/project_id/visibility through fact supersession ([#4172](#4172)) ([7cf2845](7cf2845)) * **episteme:** partition instinct aggregation by project ([98ca77d](98ca77d)), closes [#3975](#3975) * **episteme:** sanitize FTS query text so recall survives questions and punctuation ([#4174](#4174)) ([57fb08d](57fb08d)) * **fmt:** apply rustfmt to episteme nuextract bookkeeping provider ([#4113](#4113)) ([f05f8f2](f05f8f2)) * **fmt:** apply rustfmt to hermeneus cc/codex/complexity providers ([#4111](#4111)) ([4a1adf2](4a1adf2)) * **hermeneus:** classify seat-bridged providers as cloud ([0251691](0251691)) * **hermeneus:** codex provider silently drops tool-use turns ([#3980](#3980)) ([#4104](#4104)) ([9bfa5aa](9bfa5aa)) * **hermeneus:** ignore unenforceable max_tokens on CC/Kimi providers instead of erroring ([#4166](#4166)) ([b432978](b432978)), closes [#4158](#4158) * **hermeneus:** normalize OpenAI cache token usage ([#4045](#4045)) ([c58947d](c58947d)) * **hermeneus:** restore pii-allow marker in vault_round_trip test fixture ([#4127](#4127)) ([38df495](38df495)) * **integration-tests:** add project_id to engine-tests Fact fixtures ([#4147](#4147)) ([de46e53](de46e53)) * **lint:** add serde(deny_unknown_fields) to 39 taxis config structs ([#4121](#4121)) ([9d5d1f2](9d5d1f2)) * **lint:** clean non-koina kanon lint baseline for full hygiene gate ([#4100](#4100)) ([66b3ec7](66b3ec7)), closes [#3987](#3987) * **lint:** clear residual rust-lint in aletheia-lexica and organon ([#4186](#4186)) ([c03c56b](c03c56b)) * **lint:** drive aletheia/commands rust-lint violations to zero ([#4207](#4207)) ([d5a6ddd](d5a6ddd)) * **lint:** drive daemon (oikonomos) rust-lint violations to zero ([#4195](#4195)) ([ea10c0c](ea10c0c)) * **lint:** drive eidos rust-lint violations to zero ([#4188](#4188)) ([9196fbe](9196fbe)) * **lint:** drive energeia rust-lint violations to zero ([#4204](#4204)) ([a034ea6](a034ea6)) * **lint:** drive eval (dokimion) rust-lint violations to zero ([#4202](#4202)) ([18200b9](18200b9)) * **lint:** drive graphe rust-lint violations to zero ([#4189](#4189)) ([319b689](319b689)) * **lint:** drive poiesis rust-lint violations to zero ([#4199](#4199)) ([5fd4a36](5fd4a36)) * **lint:** drive symbolon rust-lint violations to zero ([#4193](#4193)) ([50cb0e7](50cb0e7)) * **lint:** drive taxis rust-lint violations to zero ([#4196](#4196)) ([abab180](abab180)) * **lint:** make kanon gate --full pass on main ([#4145](#4145)) ([32d34be](32d34be)) * **lint:** resolve all kanon rust-lint violations in agora to zero ([#4122](#4122)) ([bc2b769](bc2b769)) * **lint:** resolve kanon rust-lint violation in dianoia to zero ([#4133](#4133)) ([12c5459](12c5459)) * **lint:** resolve kanon rust-lint violations in 6 tiny crates to zero ([#4120](#4120)) ([4073a68](4073a68)) * **lint:** resolve kanon rust-lint violations in diaporeia to zero ([#4137](#4137)) ([a6fd0f5](a6fd0f5)) * **lint:** resolve kanon rust-lint violations in hermeneus to zero ([#4184](#4184)) ([6d767ee](6d767ee)) * **lint:** resolve kanon rust-lint violations in krites to zero ([#4139](#4139)) ([112cf65](112cf65)) * **lint:** resolve kanon rust-lint violations in melete to zero ([#4123](#4123)) ([d920662](d920662)) * **lint:** resolve kanon rust-lint violations in organon to zero ([#4140](#4140)) ([ea87908](ea87908)) * **lint:** resolve kanon rust-lint violations in pylon to zero ([#4183](#4183)) ([eaf556d](eaf556d)) * **lint:** resolve kanon rust-lint violations in thesauros to zero ([#4135](#4135)) ([2d1aaf4](2d1aaf4)) * **matrix:** remove stale config dto surface ([9a067da](9a067da)), closes [#3981](#3981) * **nous,episteme:** stop double-wrapping recall errors and log failing read scripts ([#4170](#4170)) ([4820d63](4820d63)), closes [#4156](#4156) * **nous:** preserve local complexity routing boundary ([#4064](#4064)) ([a5a3e1b](a5a3e1b)) * **nous:** remove redundant provider name from provider-unavailable message ([#4167](#4167)) ([c999a61](c999a61)), closes [#4154](#4154) * **proskenion:** clean API client lint ([#4054](#4054)) ([8cb6bc8](8cb6bc8)) * **proskenion:** clean chart label lint ([#4080](#4080)) ([f3b2059](f3b2059)) * **proskenion:** clean config prefs lint ([#4082](#4082)) ([ae2bb3e](ae2bb3e)) * **proskenion:** clean meta assembly numeric lint ([#4077](#4077)) ([e36bc75](e36bc75)) * **proskenion:** clean meta fetch lint ([#4076](#4076)) ([b3bc5bc](b3bc5bc)) * **proskenion:** clean ops fetch lint ([#4078](#4078)) ([e2626ca](e2626ca)) * **proskenion:** clean planning fetch lint ([#4079](#4079)) ([4a55b8c](4a55b8c)) * **proskenion:** clean SSE lint slice ([#4052](#4052)) ([d8cb78b](d8cb78b)) * **proskenion:** clean state indexing lint ([#4057](#4057)) ([adc9622](adc9622)) * **proskenion:** clean stream error lint ([#4053](#4053)) ([648a902](648a902)) * **proskenion:** clean tool metrics lint ([#4055](#4055)) ([0314e74](0314e74)) * **proskenion:** clean truncation lint ([#4056](#4056)) ([56bb553](56bb553)) * **proskenion:** clean UI empty fallback lint ([#4081](#4081)) ([4f94553](4f94553)) * **proskenion:** repair desktop app build (drifted Debug field + eval API) ([#4149](#4149)) ([ea02844](ea02844)) * **proskenion:** tag credentials TODO debt quadrant ([#4071](#4071)) ([f4748a6](f4748a6)) * **pylon:** accept bodiless POST /knowledge/facts/{id}/forget and default the reason ([#4181](#4181)) ([6961625](6961625)) * **pylon:** reject invalid metrics query params instead of silently ignoring them ([#4153](#4153)) ([adbabb8](adbabb8)) * **pylon:** replace unfulfilled expect with explicit allow on ImportFactError re-export ([#4112](#4112)) ([74f56fb](74f56fb)) * repair desktop smoke test + serialize flaky architecture_fact tests ([#4150](#4150)) ([13ba571](13ba571)) * **routing:** preserve interactive after-action outcomes ([#4068](#4068)) ([54751f0](54751f0)) * **routing:** wire empirical feedback router injection at runtime startup ([#4099](#4099)) ([3492670](3492670)) * **security:** clean high severity lint findings ([#4061](#4061)) ([aa2f6b8](aa2f6b8)) ### Documentation * **_llm:** refresh current_state.toml to v0.27.0 ([#4041](#4041)) ([fbe9b91](fbe9b91)), closes [#4034](#4034) * **decisions:** add ADR-001 adopting Nygard ADR practice ([#4044](#4044)) ([6c5e057](6c5e057)) * **decisions:** backfill aletheia ADRs 001-003 (D-020 canary) ([#4087](#4087)) ([d90b37f](d90b37f)) * **matrix:** remove stale config affordance ([#4069](#4069)) ([09e895b](09e895b)) * **organon:** refresh bookkeeper feature status ([#4065](#4065)) ([bec9677](bec9677)) * **QUICKSTART:** bump prebuilt-binary version pin to v0.27.0 ([#4043](#4043)) ([ad3db0e](ad3db0e)), closes [#4033](#4033) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Why
The desktop app (
proskenion) did not compile onmain. It is excluded from the workspace (GTK/webkit2gtk system deps) and not built in CI, so two errors had drifted in undetected:state/connection.rs:118(E0609) — the manualDebugimpl referenced a removedretry_backoff_msfield.views/files/toolbar.rs:117(E0599) —document::eval(&js).is_err(), but Dioxusevalreturns anEvalfuture, not aResult.What
retry_backoff_msline from theDebugimpl (field no longer exists; referenced nowhere else)..awaitto the toolbarevalcall so it matches the other call sites (chat.rs,command_palette.rs) and actually drives the clipboard-write before checking the result.Verification
cargo build -p proskenion --manifest-path crates/theatron/proskenion/Cargo.tomlnow compiles cleanly (no errors, no warnings). The root-workspacekanon gate --fullis green (tip carries theGate-Passed:trailer); note the main-workspace gate does not coverproskenionsince it is excluded.Review note
Leaving this for maintainer review rather than auto-merging: change #2 alters desktop-app runtime behavior (the clipboard copy now awaits the eval). Separately,
proskenionhas accumulated a backlog ofclippy -D warningslint debt (it is outside CI) — out of scope here; flagged for a dedicated cleanup.