Skip to content

[Epic] 1951-epic-desktop-experience-uxs - #1975

Draft
propr-dev[bot] wants to merge 168 commits into
mainfrom
1951-epic-desktop-experience-uxs
Draft

[Epic] 1951-epic-desktop-experience-uxs#1975
propr-dev[bot] wants to merge 168 commits into
mainfrom
1951-epic-desktop-experience-uxs

Conversation

@propr-dev

@propr-dev propr-dev Bot commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Epic PR

This PR aggregates all changes from child PRs merged to the 1951-epic-desktop-experience-uxs branch.


Created automatically by ProPR

propr-dev[bot] and others added 30 commits August 29, 2026 14:23
…gine for CLI

Implemented by ProPR AI using gpt-5.6-sol model.

Implementation completed successfully.
…tance connec

Implemented by ProPR AI using gpt-5.6-sol model.

Implementation completed successfully.
…nstance conn

Implemented by ProPR AI using gpt-5.6-sol model.

Implementation completed successfully.
…compatibilit

Implemented by ProPR AI using gpt-5.6-sol model.

Implementation completed successfully.
…untime and r

Implemented by ProPR AI using gpt-5.6-sol model.

Implementation completed successfully.
Implemented the follow-up fix without committing.

- [pr-build-check.yml](/tmp/git-processor/worktrees/integry/propr/pr-1963-followup-2026-08-29T14-25-06/.github/workflows/pr-build-check.yml:34) now builds `@propr/local-setup` before every affected CLI typecheck/test.
- [build-publish.mjs](/tmp/git-processor/worktrees/integry/propr/pr-1963-followup-2026-08-29T14-25-06/packages/cli/scripts/build-publish.mjs:77) now builds and vendors `@propr/local-setup`, rewriting private workspace imports for the standalone CLI package.

Verified successfully:

- Local-setup and CLI typechecks
- CLI lint
- Hosted-tunnel suite: 312 tests passed
- Init JSON suite: 12 passed
- Local-setup suite: 9 passed
- Agent Skill suite: 62 passed, 1 platform skip
- CLI package dry-run and installed-tarball smoke test
- YAML parsing and `git diff --check`

Docker was unavailable locally, so the exact containerized `actionlint` invocation could not run.

PR: #1963
Comment by: @github-actions[bot] (ID: 5462947943)
Model: gpt-5.6-sol
…s](/tmp/git-processor/worktrees/integry/propr/pr-1963-followup-2026-08-29T14-34-00/packages/cli/src/commands/taskInspectCommands.test.ts:107).

Fixed the full-suite failure in [taskInspectCommands.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-1963-followup-2026-08-29T14-34-00/packages/cli/src/commands/taskInspectCommands.test.ts:107).

The test now validates concurrent state requests without assuming nondeterministic request order. Canonical output ordering remains separately verified.

Validation:

- Focused test passed 20 consecutive runs
- CLI typecheck passed
- `git diff --check` passed
- No commit created

PR: #1963
Comment by: @github-actions[bot] (ID: 5462991038)
Model: gpt-5.6-sol
…p-shaped-ui-20260829-1408-e9w

[1959 by GPT-5.6 Sol] Add the desktop-shaped UI mode and instance connection experience
…d-propr-api-20260829-1408-n3k

[1954 by GPT-5.6 Sol] Create a shared ProPR API client and instance connection model
…anging Electron security configuration.

Implemented the packaging supply-chain follow-up without changing Electron security configuration.

Changes:

- Upgraded all Electron Forge packages to `8.0.0-alpha.10`.
- Pinned safe overrides:
  - `@electron/packager` 20.3.0
  - `@electron/rebuild` 4.2.0
- Regenerated [package-lock.json](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T14-44-22/package-lock.json).
- Added separate runtime and packaging audit scripts in [package.json](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T14-44-22/package.json).
- Added a lockfile-first [desktop release guard](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T14-44-22/.github/workflows/desktop-release-guard.yml) that fails:
  - Runtime advisories at low or higher.
  - Desktop packaging advisories at high or critical.
- Documented the audit policy in [apps/desktop/README.md](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T14-44-22/apps/desktop/README.md).

Verification passed:

- Clean `npm ci`
- Runtime audit: 0 vulnerabilities
- Desktop packaging audit: 0 vulnerabilities
- Full `npm audit`: 0 vulnerabilities
- Desktop/UI typecheck
- 15 desktop tests
- Linux desktop packaging
- Workflow YAML validation and `git diff --check`

The vulnerable `extract-zip`, Electron `node-gyp`, and `cacache` chains are absent. No advisory exception or constrained-exposure documentation was necessary. Changes remain uncommitted as requested.

PR: #1967
Comment by: @integry (ID: 5463039825)
Model: gpt-5.6-sol
…ktop-pairin-20260829-1408-o5i

[1955 by GPT-5.6 Sol] Add secure desktop pairing tokens and compatibility discovery to the API
Implemented the release-blocking packaging fix.

- Disabled only `LoadBrowserProcessSpecificV8Snapshot`; all hardened fuses remain enforced.
- Added a packaged Linux smoke test that:
  - Validates every fuse state.
  - Launches without `--no-sandbox` or `--disable-sandbox`.
  - Requires Electron’s `ready-to-show` renderer event.
  - Requires a clean exit.
- Added the smoke test to the desktop release guard using Xvfb and a correctly configured Chromium setuid sandbox helper.
- Added `desktop:smoke` and documented its usage.

Verification passed:

- Shared package build
- Desktop/UI typecheck
- All 15 desktop tests
- Forge Linux packaging
- Fuse inspection, including the snapshot fuse disabled
- Script syntax and `git diff --check`

The current execution container cannot complete the final launch because it prohibits user namespaces and provides no root/sudo or Xvfb; Electron correctly failed closed instead of disabling its sandbox. The release CI now supplies the required sandbox helper configuration and display server to execute that proof automatically.

PR: #1967
Comment by: @integry (ID: 5463056792)
Model: gpt-5.6-sol
Implemented the self-contained desktop preparation:

- Added `desktop:prepare` to build `@propr/shared`.
- Made `desktop:typecheck` and `desktop:package` invoke preparation first.
- Added `packages/shared/**` to the release-guard trigger.
- Documented the behavior.

Files changed: [package.json](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T15-02-01/package.json:75), [desktop-release-guard.yml](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T15-02-01/.github/workflows/desktop-release-guard.yml:10), and [README.md](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T15-02-01/apps/desktop/README.md:23).

Verification:

- Runtime audit: 0 vulnerabilities
- Packaging audit: 0 vulnerabilities
- `npm ci`: passed
- Typecheck from absent `packages/shared/dist`: passed and recreated output
- Desktop tests: 15/15 passed
- Forge Linux package: passed, independently rebuilding shared first
- JSON, script syntax, and `git diff --check`: passed

The packaged launch smoke was attempted but this execution host lacks both `sudo` and Xvfb and forbids unprivileged user namespaces. The harness verified the fuse configuration, then correctly failed closed because `chrome-sandbox` could not be made root-owned mode `4755`. The CI workflow retains the required sandbox-helper setup and Xvfb launch steps.

PR: #1967
Comment by: @integry (ID: 5463103357)
Model: gpt-5.6-sol
…tmp/git-processor/worktrees/integry/propr/pr-1963-followup-2026-08-29T14-56-46/.github/workflows/cli-node-compatibility.yml:6):

Implemented the follow-up in [cli-node-compatibility.yml](/tmp/git-processor/worktrees/integry/propr/pr-1963-followup-2026-08-29T14-56-46/.github/workflows/cli-node-compatibility.yml:6):

- Builds `@propr/shared`, then `@propr/local-setup`, before project-options tests.
- Triggers compatibility checks when `packages/local-setup/**` changes.
- Audited other clean-checkout CLI paths; they already prepare both dependencies via explicit builds, `test:prepare`, or self-contained `cli:pack`.

Validation passed:

- Node 22: 26/26 project-options tests
- Node 24: 26/26 project-options tests
- Full suite: all 309 test files plus UI workspace passed; UI 465/465 tests
- `npm run cli:pack`
- Actionlint 1.7.12
- Workflow YAML parsing and `git diff --check`

Only the compatibility workflow is modified. No commit was created.

PR: #1963
Comment by: @integry (ID: 5463097453)
Model: gpt-5.6-sol
…-agnostic-l-20260829-1408-o4c

[1958 by GPT-5.6 Sol] Extract the UI-agnostic local setup engine for CLI and desktop use
…ed release smoke:

Implemented the Electron entry-format repair and strengthened release smoke:

- Main/preload now emit explicit CommonJS `.cjs` bundles; packaged manifest and preload path match.
- Packaged renderer uses a restricted app-owned protocol, preserving the disabled file-protocol privilege fuse, as [Electron recommends](https://www.electronjs.org/docs/latest/tutorial/security).
- Renderer-ready is emitted only after verifying `window.proprDesktop`.
- Smoke rejects known main-process uncaught-exception markers.

Key changes: [package.json](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T15-14-42/apps/desktop/package.json:11), [main.ts](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T15-14-42/apps/desktop/src/main.ts:22), [smoke-packaged.mjs](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T15-14-42/apps/desktop/scripts/smoke-packaged.mjs:12).

Validation:

- Typecheck: passed
- Desktop tests: 15/15 passed
- Forge package: passed
- Packaged manifest/bundle inspection: passed
- Fuse validation: passed, including V8 snapshot fuse disabled
- Functional packaged launch: reached renderer-ready with `"preloadBridgeExposed":true`

The exact sandbox smoke was rerun but this container lacks `sudo` and cannot make `chrome-sandbox` root-owned mode `4755`; Chromium correctly refused to start rather than disabling sandboxing. The existing release workflow performs that ownership setup before running the unchanged smoke command.

PR: #1967
Comment by: @integry (ID: 5463184150)
Model: gpt-5.6-sol
…epic-desktop-experience-uxs

Automatically resolved merge conflicts after merging target branch into PR branch.
Resolved conflicts in:
- propr-ui/src/api/apiClient.ts
- propr-ui/src/api/compatibility.ts

PR: #1968
Model: gpt-5.6-sol
…worktrees/integry/propr/pr-1968-followup-2026-08-29T15-39-39/propr-ui/src/App.tsx:458). The merged file exceeded ESLint’s 400-line limit by one effective line; the default wrapper is now a compact named function with unchanged behavior.

Fixed the PR build failure in [App.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1968-followup-2026-08-29T15-39-39/propr-ui/src/App.tsx:458). The merged file exceeded ESLint’s 400-line limit by one effective line; the default wrapper is now a compact named function with unchanged behavior.

Validation passed:

- UI lint with zero warnings
- UI typecheck
- UI production build
- Focused App and desktop-pairing tests: 9/9
- `git diff --check`

Only `propr-ui/src/App.tsx` was modified. No commit was created.

PR: #1968
Comment by: @github-actions[bot] (ID: 5463307288)
Model: gpt-5.6-sol
…ing the user-facing product name and all security settings.

Implemented the Linux space-free package path while preserving the user-facing product name and all security settings.

Changes:

- Forge now emits `apps/desktop/out/propr-desktop-linux-x64` via [forge.config.ts](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T15-42-24/apps/desktop/forge.config.ts:11).
- Smoke launches the exact space-free binary path in [smoke-packaged.mjs](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T15-42-24/apps/desktop/scripts/smoke-packaged.mjs:20).
- CI configures the exact sandbox helper path without globbing in [desktop-release-guard.yml](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T15-42-24/.github/workflows/desktop-release-guard.yml:62).
- Packaged ASAR metadata still contains `"productName":"ProPR Desktop"`.

Verification passed:

- Both audits: 0 vulnerabilities
- Clean `npm ci`: 0 vulnerabilities
- Desktop and renderer typecheck
- Desktop tests: 15/15
- Forge package
- Exact artifact and metadata assertions
- Hardened fuse validation
- `git diff --check`

The final local renderer-ready launch could not complete because this container has neither `sudo` nor `xvfb-run`; it stopped at Chromium’s expected root/setuid ownership check. Its diagnostic used the complete new space-free path without truncation. The CI workflow retains the required `chown root:root`, mode `4755`, Xvfb, and sandboxed renderer-ready/bridge proof.

PR: #1967
Comment by: @integry (ID: 5463320073)
Model: gpt-5.6-sol
…st.mjs](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T15-50-52/test/orchestratorConfig.test.mjs:25).

Fixed the full-suite failure in [test/orchestratorConfig.test.mjs](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T15-50-52/test/orchestratorConfig.test.mjs:25).

The VAPID fixture now pads OpenSSL-generated private scalars to the required 32-byte width, preventing intermittent “malformed” results when a leading zero was omitted.

Validation:

- Exact suite-runner test: 56/56 passed
- `git diff --check`: passed
- No commit created
- Only the test fixture file was modified

PR: #1967
Comment by: @github-actions[bot] (ID: 5463323066)
Model: gpt-5.6-sol
Implemented only F1 and F2.

- Fixture query activation now requires `import.meta.env.DEV`; the trusted desktop bridge remains available in production.
- Connection probe and persistence failures transition to retryable blocked states with distinct messaging.
- Stale connection attempts are ignored.
- Added production fixture, rejection, persistence, retry, and stale-attempt regression tests.

Verification passed:

- 11 focused tests
- UI typecheck
- UI lint
- Production build
- `git diff --check`

No commit or PR was created.

PR: #1968
Comment by: @propr-ultrafix (ID: 0)
Model: gpt-5.6-sol
Implemented F1–F3 only.

- [security.ts](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T16-10-43/apps/desktop/src/security.ts): packaged renderer trust now allows hash routes while rejecting queries, alternate hosts, and documents.
- [desktop.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T16-10-43/propr-ui/src/desktop.tsx): activating a profile now reloads the renderer for fresh REST/socket module configuration.
- [package.json](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T16-10-43/apps/desktop/package.json): dev, make, DEB, and RPM entrypoints prepare `@propr/shared`.
- Added routed-IPC and two-endpoint switching regression tests.

Validation passed:

- Desktop tests: 15/15
- UI tests: 466/466
- Desktop and UI typechecks
- All preparation hooks
- `git diff --check`

No commit created.

PR: #1967
Comment by: @integry (ID: 5463457877)
Model: gpt-5.6-sol
Implemented F3, F4, and F5 only.

- Manager additions now connect and activate; active edits reconnect safely, while inactive edits remain save-only.
- Save, remove, authentication, browser-launch, and active-clear failures surface as retryable UI errors.
- macOS and Windows hide unsupported local setup and show remote-connection guidance.
- Added focused regression coverage in [DesktopExperience.test.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1968-followup-2026-08-29T16-15-38/propr-ui/src/desktop/DesktopExperience.test.tsx).

Verification passed:

- 15 focused tests
- TypeScript typecheck
- Targeted ESLint
- `git diff --check`

No commit was created.

PR: #1968
Comment by: @integry (ID: 5463481548)
Model: gpt-5.6-sol
Implemented only F4, F5, and F6.

- F4: Deep-link IPC now registers eagerly in preload and buffers links until React subscribes. Main-process pending links are queued, preserving startup and loading-time second-instance links.
- F5: Desktop logout now uses the active Electron session with credentials and manual redirects, then navigates internally to `#/login?logged_out=true` without external browsing.
- F6: Credential mutations are serialized per profile with deterministic invocation-order semantics, including profile removal.

Verification passed:

- Desktop tests: 20/20
- UI tests: 467/467
- Desktop and UI typechecks
- Electron Forge package
- `git diff --check`

No commit was created.

PR: #1967
Comment by: @integry (ID: 5463548749)
Model: gpt-5.6-sol
Implemented F6 only.

- Desktop authentication now resolves only after a profile-specific completion signal.
- Login refreshes shared authentication state, then navigates to the intended return path.
- The sign-in button remains disabled while authentication is pending.
- Added focused success-path and adapter completion tests.

Key changes: [LoginPage.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1968-followup-2026-08-29T16-34-38/propr-ui/src/pages/LoginPage.tsx:320), [types.ts](/tmp/git-processor/worktrees/integry/propr/pr-1968-followup-2026-08-29T16-34-38/propr-ui/src/desktop/types.ts:29), [desktop authentication test](/tmp/git-processor/worktrees/integry/propr/pr-1968-followup-2026-08-29T16-34-38/propr-ui/src/pages/LoginPage.desktopAuthentication.test.tsx:23).

Verification passed:

- 41 focused tests
- UI TypeScript check
- UI lint
- `git diff --check`

PR: #1968
Comment by: @integry (ID: 5463572792)
Model: gpt-5.6-sol
Implemented F7 only.

- Successful desktop authentication now reconnects the still-current profile.
- Added a positive-path test covering authentication-required → authenticated → connected app.
- Preserved existing authentication failure handling.

Verification passed:

- DesktopExperience tests: 16/16
- `propr-ui` TypeScript typecheck
- `git diff --check`

Modified only [DesktopExperience.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1968-followup-2026-08-29T16-54-22/propr-ui/src/desktop/DesktopExperience.tsx) and [DesktopExperience.test.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1968-followup-2026-08-29T16-54-22/propr-ui/src/desktop/DesktopExperience.test.tsx).

PR: #1968
Comment by: @integry (ID: 5463666356)
Model: gpt-5.6-sol
Implemented only F7, F8, and F9.

- F7: Added an exact shared `propr-app://renderer` CORS boundary for REST and Socket.IO, enabled CORS on the registered scheme, and extended the packaged smoke test with a real credentialed renderer request.
- F8: Added development-only inline-script CSP support and corrected Vite’s shared renderer entry resolution. Packaged output retains strict `script-src 'self'`.
- F9: Added deterministic deep-link queue coordination and regression coverage for the post-load/pre-assignment race.

Verification passed:

- Desktop tests: 22/22
- API CORS tests: 12/12
- Desktop, UI, and API typechecks
- API lint
- Desktop profile UI test
- Forge packaging
- Vite development HTML and renderer module loading

The packaged launch smoke was attempted but this container cannot configure the Chromium helper as root-owned mode `4755` or provide Xvfb. The existing release workflow provisions both before running the enhanced smoke test.

PR: #1967
Comment by: @integry (ID: 5463673605)
Model: gpt-5.6-sol
…webPushDispatcher.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-1968-followup-2026-08-29T17-05-56/packages/api/test/webPushDispatcher.test.ts:15).

Fixed the intermittent notification regression failure in [webPushDispatcher.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-1968-followup-2026-08-29T17-05-56/packages/api/test/webPushDispatcher.test.ts:15).

The fixture now uses a stable historical timestamp, preventing SQLite/Node wall-clock skew from temporarily hiding claimable jobs.

Validation passed:

- Full notification suite
- Dispatcher test 20/20 repeated runs
- API typecheck
- API lint
- `git diff --check`

Only the intended test file changed; no commit was created.

PR: #1968
Comment by: @github-actions[bot] (ID: 5463687760)
Model: gpt-5.6-sol
…st.ts](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T17-17-44/packages/api/test/webPushDispatcher.test.ts:15).

Fixed the flaky full-suite failure in [webPushDispatcher.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-1967-followup-2026-08-29T17-17-44/packages/api/test/webPushDispatcher.test.ts:15).

The fixture now uses a stable historical timestamp, preventing SQLite wall-clock comparisons from intermittently hiding claimable delivery jobs.

Validation passed:

- Dispatcher suite: 20 consecutive runs, 340/340 tests
- Notification suites: 42/42 tests
- API typecheck
- API lint
- `git diff --check`

Only the intended test file changed; no commit was created.

PR: #1967
Comment by: @github-actions[bot] (ID: 5463780771)
Model: gpt-5.6-sol
propr-dev[bot] and others added 30 commits August 31, 2026 20:34
…into 2032/gpt-5.6-sol-make-windows-msi-start-me-20260831-2021-uou
…7648c34e70ceb7312d42e1ca778be231`.

Implemented the narrowly scoped fix on exact head `1aace8c17648c34e70ceb7312d42e1ca778be231`.

- Replaced invalid `CommonProgramMenuFolder` with `ProgramMenuFolder` in [build-windows-machine-installer.mjs](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T20-45-57/apps/desktop/scripts/build-windows-machine-installer.mjs:232).
- Updated focused assertions to enforce the complete machine-scope contract and reject `CommonProgramMenuFolder` and HKCU values.
- Preserved `perMachine`, `Win64="yes"`, HKLM registrations/key path, shortcut metadata, removal behavior, and native proof unchanged.
- No unrelated files changed; no commit, merge, or base sync performed.

Validation passed:

- Installer tests: 7/7
- Release-workflow tests: 16/16
- Desktop typechecks: passed
- Desktop tests: 155 passed, 6 platform-specific skipped
- `git diff --check`: passed

Fresh native x64/ARM64 validation remains pending because the workflow only checks out committed PR SHAs and has no manual-dispatch trigger. The PR synchronize event will launch it after the surrounding system commits these changes.

PR: #2034
Comment by: @integry (ID: 5484331917)
Model: gpt-5.6-sol
…cc3d48df01fd126e6ecbe2ae07`.

Implemented MSI correction F2 on exact head `e1b318ffa2c139cc3d48df01fd126e6ecbe2ae07`.

- Kept `ProgramMenuFolder`.
- Restored the shortcut marker KeyPath to HKCU.
- Removed `Win64="yes"` from `ApplicationStartMenuShortcutComponent`.
- Preserved per-machine scope and HKLM protocol/App Paths registration.
- Retained the ordinary-user common Start Menu presence/removal proof.
- Removed obsolete native checks for the superseded HKLM shortcut marker.
- Updated assertions to enforce the ICE-valid arrangement and reject `CommonProgramMenuFolder`.

Changed only:

- [build-windows-machine-installer.mjs](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T21-00-00/apps/desktop/scripts/build-windows-machine-installer.mjs)
- [build-windows-machine-installer.test.mjs](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T21-00-00/apps/desktop/scripts/build-windows-machine-installer.test.mjs)
- [test-installed-windows-app.ps1](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T21-00-00/apps/desktop/scripts/test-installed-windows-app.ps1)
- [release-workflow.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T21-00-00/apps/desktop/src/release-workflow.test.ts)

Validation:

- Installer tests: 7/7 passed
- Release-workflow tests: 16/16 passed
- Desktop/UI typechecks: passed
- Desktop tests: 155 passed, 6 platform-specific skipped
- `git diff --check`: passed

No commit, merge, or synchronization performed.

PR: #2034
Comment by: @integry (ID: 5484490917)
Model: gpt-5.6-sol
…cd45d4fa6714a153fe`.

Implemented F3 and F1 on exact head `83aecdf4db2ea68c7d6eeecd45d4fa6714a153fe`.

- [Proof harness](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T21-16-59/apps/desktop/scripts/test-installed-windows-app.ps1:84): fixed environment-path handoff, profileless probe, ownership tracking, exact-file cleanup, and non-recursive empty-folder removal.
- [Source assertions](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T21-16-59/apps/desktop/src/release-workflow.test.ts:544): covers all requested invariants and rejects recursive Start Menu cleanup.
- MSI authoring remains unchanged.

Validation:

- Focused installer/release tests: 24 passed.
- Desktop tests: 156 passed, 6 platform-specific skipped.
- Desktop and UI typechecks passed.
- `git diff --check` passed.
- Only the two requested proof-related files changed; no commit created.

PR: #2034
Comment by: @integry (ID: 5484717700)
Model: gpt-5.6-sol
…cdd42b67a3fa2c8c11b365`.

Implemented diagnostic F4 on exact head `9c6e1d43c30fe296c9cdd42b67a3fa2c8c11b365`.

- Added fixed child exit-code/category parity and redacted parent probe tokens.
- Added PRESENT/ABSENT success, spawn, timeout, and UNKNOWN handling.
- Suppressed child stdout/stderr while preserving the 30-second bound and process-tree cleanup.
- Added fixed uninstall/cleanup substage diagnostics.
- Preserved primary failures when cleanup also fails.
- Kept ownership-aware shortcut cleanup and CommonPrograms non-recursion unchanged.
- MSI authoring was not modified.

Changed:

- [test-installed-windows-app.ps1](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T21-34-44/apps/desktop/scripts/test-installed-windows-app.ps1:89)
- [release-workflow.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T21-34-44/apps/desktop/src/release-workflow.test.ts:543)

Validation:

- Focused installer/release tests: 26 passed
- Desktop/UI typechecks: passed
- Desktop tests: 158 passed, 6 platform-specific skipped
- `git diff --check`: clean
- Only the two intended files changed

Native Windows execution was unavailable in this Linux workspace. No commit was created.

PR: #2034
Comment by: @integry (ID: 5484947274)
Model: gpt-5.6-sol
…154b6ba8808e5b28be5b5e`.

Implemented functional F5 on exact head `33889bd36bbdb9aae2154b6ba8808e5b28be5b5e`.

- Set shortcut probe `LoadUserProfile = $true` in [test-installed-windows-app.ps1](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T21-55-56/apps/desktop/scripts/test-installed-windows-app.ps1:453).
- Updated focused assertions in [release-workflow.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T21-55-56/apps/desktop/src/release-workflow.test.ts:698).
- No MSI, environment, cleanup, shortcut semantics, or unrelated files changed.

Validation passed:

- Installer tests: 7/7
- Release-workflow tests: 19/19
- Desktop/UI typecheck
- Desktop tests: 158 passed, 6 platform skips
- `git diff --check`
- Changed-file scope audit: exactly two intended files

No commit created.

PR: #2034
Comment by: @integry (ID: 5485215604)
Model: gpt-5.6-sol
…69159331347b0ac022d613`.

Implemented functional F6 on exact head `f916c794e5d399524169159331347b0ac022d613`.

- Added the isolated, ACL-validated probe profile/environment in [test-installed-windows-app.ps1](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T22-07-48/apps/desktop/scripts/test-installed-windows-app.ps1:391).
- Passed the smoke directory to both presence and absence probes.
- Added focused containment, ACL/reparse, idempotence, path-separation, seven-key allowlist, and environment-isolation assertions in [release-workflow.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T22-07-48/apps/desktop/src/release-workflow.test.ts:698).
- MSI authoring and unrelated files were untouched.

Validation:

- Installer tests: 7/7 passed
- Release workflow tests: 20/20 passed
- Desktop/UI typechecks: passed
- Desktop tests: 159 passed, 6 platform-specific skipped
- `git diff --check`: passed

Changes remain uncommitted as requested.

PR: #2034
Comment by: @integry (ID: 5485352611)
Model: gpt-5.6-sol
…8934ff55cbb212bd8967df`.

Implemented diagnostic F7 on exact head `5ec88c0835c58628b78934ff55cbb212bd8967df`.

- Added allowlisted Win32 spawn mappings and `UNKNOWN` fallback in [test-installed-windows-app.ps1](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T22-19-18/apps/desktop/scripts/test-installed-windows-app.ps1:549).
- Preserved plain `SPAWN_FAILED` for non-Win32 failures.
- Added exact-source, mapping behavior, fallback, and sentinel-redaction tests in [release-workflow.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T22-19-18/apps/desktop/src/release-workflow.test.ts:625).
- No MSI authoring or F6 probe containment/environment/process semantics changed.

Validation passed:

- Packaging tests: 7/7
- Release workflow tests: 21/21
- `git diff --check` passed

No commit created.

PR: #2034
Comment by: @integry (ID: 5485498108)
Model: gpt-5.6-sol
…c18e4ae8365`.

Implemented F8 on exact head `1b3a179a4f39f45deafe3e487abebc18e4ae8365`.

- Updated the spawn catch to accept only direct Win32 exceptions or an exact `MethodInvocationException` with an immediate Win32 inner exception. No deeper traversal or other wrappers are accepted: [test-installed-windows-app.ps1](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T22-33-22/apps/desktop/scripts/test-installed-windows-app.ps1:550)
- Preserved the existing category allowlist and bare fallback behavior.
- Added wrapper-depth/type, mapping, UNKNOWN, and sentinel-redaction coverage, plus a Windows-only PowerShell catch execution: [release-workflow.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T22-33-22/apps/desktop/src/release-workflow.test.ts:626)
- Corrected the test mapping type to `Record<number, string>`.

Validation:

- Focused release-workflow tests: 21 passed, 1 Windows-only test skipped on Linux.
- Desktop typecheck: passed.
- `git diff --check`: passed.
- Only the two requested files changed; no commit created.

PR: #2034
Comment by: @integry (ID: 5485619615)
Comment by: @integry (ID: 5485644642)
Model: gpt-5.6-sol
…af64ef09e59`.

Implemented F9 on exact head `2a008f7461250bc514e15118d2ce4af64ef09e59`.

- Changed `$spawnFailureCategories` to a normal PowerShell hashtable in [test-installed-windows-app.ps1](/home/node/workspace/apps/desktop/scripts/test-installed-windows-app.ps1:561).
- Replaced the reflection-based deeper-wrapper fixture with explicit nested `MethodInvocationException` objects.
- Added real PowerShell coverage for code 87 → `INVALID_PARAMETER`.
- Preserved all existing selection, redaction, fallback, MSI, environment, ACL, process, and cleanup behavior.

Validation:

- Desktop typecheck passed.
- Focused release workflow tests passed: 21 passed, 1 expected Windows-only skip.
- `git diff --check` passed.
- No commit created.

PR: #2034
Comment by: @integry (ID: 5485801525)
Model: gpt-5.6-sol
…b986453225de560ae483c4e`.

Implemented diagnostic F10 on exact head `86faa47925fdaf288b986453225de560ae483c4e`.

- Added all 16 requested fixed Win32 categories in [test-installed-windows-app.ps1](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T23-01-22/apps/desktop/scripts/test-installed-windows-app.ps1:561).
- Updated exact 23-entry mapping/cardinality, native Windows lookup coverage, UNKNOWN handling, and sentinel redaction tests in [release-workflow.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T23-01-22/apps/desktop/src/release-workflow.test.ts:674).
- Preserved wrapper selection, numeric hashtable lookup, fallbacks, redaction, and process behavior.

Validation:

- Focused release workflow: 21 passed, 1 Windows-only test skipped on Linux.
- Desktop typecheck: passed.
- `git diff --check`: passed.
- Only the two intended files changed; no commit created.

PR: #2034
Comment by: @integry (ID: 5485923810)
Model: gpt-5.6-sol
Implemented F3 only.

- Changed `$shortcutProbeExitCategories` from `[ordered]@{}` to ordinary `@{}` for numeric-key lookup.
- Updated the corresponding source-structure assertion.
- Focused test passed: 21 passed, 1 Windows-only skipped.
- `git diff --check` passed.
- No commit created.

PR: #2034
Comment by: @integry (ID: 5485956015)
Model: gpt-5.6-sol
…178cd975fcb40057`.

Implemented F4 only on exact head `fe67899ebe7f1c98b0819a9c178cd975fcb40057`.

- Replaced the failing shortcut `Process.Start` proof with `LogonUserW(LOGON32_LOGON_NETWORK)` and `WindowsIdentity.RunImpersonated`.
- Added exact ordinary-user SID verification, bounded shortcut metadata/read checks, and secure password buffer zero/free cleanup.
- Disposes identities, streams, and `SafeAccessTokenHandle`.
- Preserved fixed redacted outcomes, canonical CommonPrograms path, and ownership-aware cleanup.
- Removed obsolete shortcut child-process/profile/exit-code machinery and tests.
- MSI/WiX authoring and workflows remain untouched.

Files changed:

- [test-installed-windows-app.ps1](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T23-16-01/apps/desktop/scripts/test-installed-windows-app.ps1:90)
- [release-workflow.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2034-followup-2026-08-31T23-16-01/apps/desktop/src/release-workflow.test.ts:541)

Validation:

- Desktop/UI typecheck: passed
- Focused release-workflow/installer tests: 28 passed
- Full desktop tests: 160 passed, 6 platform-specific skipped
- `git diff --check`: passed
- Only the two scoped files are modified
- No commit, merge, base sync, or additional native diagnostic run performed

Fresh x64 and ARM64 installed-package validation remains for the native Windows CI runners.

PR: #2034
Comment by: @integry (ID: 5486062025)
Model: gpt-5.6-sol
…si-start-me-20260831-2021-uou

[2032 by GPT-5.6 Sol] Make Windows MSI Start Menu shortcut machine-wide
…on numeric b

Implemented by ProPR AI using gpt-5.6-sol model.

Implementation completed successfully.
…ive display

Implemented by ProPR AI using gpt-5.6-sol model.

Implementation completed successfully.
…`57bfef695e4428611fcf7a152f344ac58f076d12`.

Implemented the Windows validation-order fix on exact head `57bfef695e4428611fcf7a152f344ac58f076d12`.

- [release-config.ts](/tmp/git-processor/worktrees/integry/propr/pr-2038-followup-2026-08-31T23-57-32/apps/desktop/src/release-config.ts:40) now validates canonical stable SemVer before applying Windows MSI bounds.
- [release-config.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2038-followup-2026-08-31T23-57-32/apps/desktop/src/release-config.test.ts:54) explicitly covers Windows malformed/prerelease/build diagnostics, canonical numeric overflow, and unchanged macOS/Linux behavior.
- Direct installer-builder validation remains unchanged.

Validation passed:

- Focused release-config: 13 passed
- Installer-builder: 9 passed
- Desktop typecheck
- Full desktop suite: 166 passed, 6 platform-specific skipped
- `git diff --check`

Only the two release-config files were modified; no commit was created.

PR: #2038
Comment by: @integry (ID: 5486469236)
Model: gpt-5.6-sol
…s-installer-20260831-2347-o25

[2037 by GPT-5.6 Sol] Enforce Windows Installer ProductVersion numeric bounds
…window-sizi-20260831-2347-ql3

[2036 by GPT-5.6 Sol] Clamp desktop window sizing to the active display work area
sync(desktop): propagate finalized packaging runtime into UX epic
…960/gpt-5.6-sol-implement-the-guided-loca-20260829-1840-7k8

Automatically resolved merge conflicts after merging target branch into PR branch.
Resolved conflicts in:
- apps/desktop/README.md
- apps/desktop/forge.config.ts
- apps/desktop/package.json
- apps/desktop/src/logger.ts
- apps/desktop/src/main.ts
- propr-ui/src/desktop.tsx
- propr-ui/src/desktop/DesktopExperience.test.tsx

PR: #1978
Model: gpt-5.6-sol
Implemented the UX/runtime reconciliation and deep-link seam.

Key outcomes:

- Exact merge commit exists at `6813708122ad`, with parents:
  - `a6b5b5c841231b67200492e55e1b46b78e354ab3`
  - `0ec939446c2c71eab11c1aac43e9cd3e0cbe1d64`
- Added ordered preload deep-link buffering, exactly-once boundary subscription, teardown/remount safety, and typed adapter exposure.
- Connect links only stage untrusted candidates for explicit confirmation.
- Open links validate active-profile identity and bounded routes, with fixed redacted rejection UI.
- Preserved remote platform flows, Linux local setup, canonical packaged resources, and inert smoke behavior.
- No conflicts, unmerged entries, conflict markers, or whitespace errors.

Validation passed:

- Desktop/UI typechecks
- Focused deep-link, preload, boundary, remount, wizard, main, and smoke tests
- Complete desktop suite
- Unit suite: 278 passed
- Browser smoke: 4 passed
- UI suite: 71 files, 508 tests passed
- Full Suite: all 342 non-live files plus native workspace suite passed
- Validate Changes build/lint/package/release/client/notification checks
- `git diff --check`

Per the harness instruction, the follow-up working-tree changes are ready for its system-managed commit.

PR: #1978
Comment by: @integry (ID: 5486959279)
Model: gpt-5.6-sol
Implemented the requested #1978 follow-ups without committing.

Key changes:

- Darwin skips only the Linux `/proc/<pid>/fd` rename/swap proof.
- Windows skips only the POSIX/Linux controller and filesystem-capability suites; schema, secrets, remote bridge/auth tests still run.
- Added canonical HTTPS remote browser authentication with a validated `/api/auth/github` endpoint and `propr://connect` recovery.
- macOS/Windows renderer bridges now reject local setup without IPC and expose no lifecycle/Docker authority.
- Updated packaged smoke checks for the final welcome-card Connect flow, including no persistence/activation and remote-only setup.
- Extracted desktop presentation panels and split management tests; affected files are all under 400 lines.

Validation passed:

- Full desktop suite: 228 tests, 0 failures.
- Darwin-mode targeted run: 37 passed, exactly one `/proc` test skipped.
- Windows-mode targeted run: platform-neutral tests passed; only explicit POSIX suites skipped.
- UI targeted suite: 32 passed.
- `npm run desktop:typecheck`
- Full UI lint
- Packaged smoke support/authorization tests
- `git diff --check` including new files.

PR: #1978
Comment by: @integry (ID: 5487399603)
Comment by: @integry (ID: 5487406606)
Comment by: @github-actions[bot] (ID: 5487412763)
Comment by: @integry (ID: 5487428417)
Comment by: @integry (ID: 5487441045)
Model: gpt-5.6-sol
…fbe9972a5818c6c020e18439608dd0b3b2c9`. No commit was created.

Implemented the consolidated correction on exact head `e22dfbe9972a5818c6c020e18439608dd0b3b2c9`. No commit was created.

- Replaced browser-cookie OAuth with main-owned two-phase desktop pairing, secure credential storage, origin-bound bearer injection, activation tickets/scopes, authenticated REST/socket handling, and renderer-safe adapters.
- Removed obsolete `remote-authentication.ts` and its URL-only tests.
- Updated packaged smoke to exercise `window.__PROPR_DESKTOP__`, while independently proving macOS/Windows legacy bridges expose no lifecycle authority.
- Closed the coordinator cancellation race and added deterministic delayed-cleanup overlap coverage.

Verification passed:

- Desktop: 328 tests, 0 failures
- Client pairing/transport: 51 tests
- API desktop authentication: 16 tests
- UI desktop/transport suites: 67 tests
- Desktop/UI/API typechecks and lint
- Desktop packaging and packaged-artifact/fuse inspection
- `git diff --check`

The live packaged smoke was attempted but could not launch because the environment has no valid X display or Xvfb installation. The packaged artifact itself built and passed static smoke inspection.

PR: #1978
Comment by: @integry (ID: 5487666617)
Model: gpt-5.6-sol
…c40e1109c2bf378570e342239d7c7558`, without committing.

Implemented the complete correction on exact head `6f8599a8c40e1109c2bf378570e342239d7c7558`, without committing.

Key changes include:

- Restored bounded, ordered IPC/session/protocol/setup/lifecycle/credential/profile/window shutdown and admission draining.
- Restored native durability and release workflow gates.
- Separated metadata-only local activation from ticketed remote scope publication.
- Added encryption-unavailable metadata storage while keeping all secret writes fail-closed.
- Guarded every SocketProvider application event against stale scopes.
- Corrected Windows realpath, HTTPS runtime-config, and explicit Linux preload fixtures.
- Preserved coordinator cancellation exclusion and bridge authority behavior.

Validation passed:

- Desktop typecheck and full suite: 351 tests, 345 passed, 6 expected platform skips.
- Native durability gate: 117/117, zero skips.
- Focused UI regressions: 95/95.
- UI lint, typecheck, build, client tests/build.
- Linux package build and packaged executable/fuse inspection.
- Release metadata verification and `git diff --check`.

Environment limitations:

- Live packaged GUI smoke could not launch because this runner has no X display or `xvfb-run`.
- Windows and Darwin native execution require their respective CI hosts.
- The pinned actionlint container image was unavailable locally.

PR: #1978
Comment by: @integry (ID: 5488054466)
Model: gpt-5.6-sol
…7b29003aaafebf42dea8d60265be0a51c2` without committing.

Implemented all requested corrections on exact head `76ba297b29003aaafebf42dea8d60265be0a51c2` without committing.

Key changes:

- Restored `@propr/client` build ordering in root `test:prepare`.
- Fixed packaged layout inspection to use retained `elements.card`.
- Added executable packaged transport/security coverage for bearer REST, Socket.IO/Engine.IO scope authentication and rotation, stale rejection, complete origin-storage cleanup/rollback, OS-backed credential custody, renderer-secret exclusion, and success/retry/forced-timeout shutdown.
- Added Linux CI provisioning for D-Bus, Secret Service, keyring custody scanning, and both x64/ARM64 smoke jobs.
- Moved local activation persistence behind main-process tickets, generation checks, serialized profile mutations, and exact rollback authority.
- Added deterministic overlapping activation coverage proving superseded attempts neither remain selected nor publish transport state.

Validation passed:

- Desktop tests: 346 passed, 6 platform skips.
- Native durability: 118/118.
- IPC shutdown and pairing lifecycle: 21 passed.
- Desktop/UI typechecks, lint, builds, targeted renderer tests.
- Validate unit, hosted-tunnel, notification, CLI package, client, and Playwright browser suites.
- Linux x64 package build and executable/fuse inspection.
- Release workflow and packaged-smoke support tests.
- `git diff --check`.

Full Suite reached test 200/349 with completed tests passing, then was stopped because this host has no Redis server or Docker and repeatedly returned `ECONNREFUSED`. Full executable Linux smoke requires Xvfb and GNOME Keyring, which are unavailable here; ARM64, native Windows, and Darwin execution likewise require their CI runners. The workflow now provisions and runs those gates.

PR: #1978
Comment by: @integry (ID: 5488378817)
Model: gpt-5.6-sol
…dd7552c55d58e0f7`.

Implemented F17/F18 on exact head `b0012fb8703ded3949b254cedd7552c55d58e0f7`.

- F17: [socketAuthentication.ts](/home/node/workspace/packages/api/services/socketAuthentication.ts) now uses frozen, socket-specific header facades and never mutates the shared Engine.IO request. New namespaces receive the same authentication middleware. Added deterministic failure/reconnect isolation coverage in [socketAuthenticationIsolation.test.ts](/home/node/workspace/packages/api/test/socketAuthenticationIsolation.test.ts).
- F18: [ConfigManager.ts](/home/node/workspace/packages/cli/src/config/ConfigManager.ts) treats successful atomic-save resolution as the commit point, with rollback only on save rejection. Added abort-at-resolution memory/disk parity coverage.

Passed:

- 33 targeted tests
- API/CLI lint and typecheck
- Validate application gates, including 279 fast tests, 321 tunnel tests, CLI packaging, client/UI/docs builds, and notification suites
- Linux x64 desktop package
- 118/118 native durability tests
- Desktop suite: 346 passed, 6 platform skips
- Packaged executable/fuse inspection

Environment-limited:

- Full Suite reached file 209/350 with all prior files green, then required Redis. Docker and Redis are unavailable here.
- Darwin, Windows, ARM64, Linux executable smoke, and native DEB/RPM jobs require their CI runners and missing host tools.

No commit was created.

PR: #1978
Comment by: @integry (ID: 5488805044)
Model: gpt-5.6-sol
…77509dc5d692`.

Implemented F19 on exact head `7866809d20e4f086718e4f6e39f177509dc5d692`.

- [socketAuthentication.ts](/tmp/git-processor/worktrees/integry/propr/pr-1978-followup-2026-09-01T04-50-39/packages/api/services/socketAuthentication.ts:28) now attaches authentication to root, all pre-existing namespaces, and future namespaces through one idempotent enumeration abstraction.
- [socketAuthenticationIsolation.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-1978-followup-2026-09-01T04-50-39/packages/api/test/socketAuthenticationIsolation.test.ts:125) adds deterministic pre-registration coverage for missing/wrong credentials and later-namespace credential isolation.

Verification:

- Focused authentication: 13 passed
- API typecheck/lint: passed
- Full Suite: 349/350 runs passed; only `llmMetrics.test.ts` timed out because Redis/Docker is unavailable
- Host-compatible Validate stages: passed
- Linux x64 package, fuse inspection, typechecks: passed
- Native durability: 118/118 passed
- Desktop tests: 346 passed, 6 platform skips
- Runtime/desktop audits: zero vulnerabilities

The remaining native matrix legs and Linux launch smoke could not run because this host lacks macOS/Windows/ARM64 runners, Docker, Redis, `xvfb-run`, keyring, and RPM tooling. Only the two requested files are modified; no commit was created.

PR: #1978
Comment by: @integry (ID: 5489066697)
Model: gpt-5.6-sol
…702d868a5e9c`.

Implemented F20 on exact HEAD `7d9f0978e0131e9db1b4b96ba235702d868a5e9c`.

- Added shared 16–512 character webhook-secret policy in [webhook-secret-policy.ts](/tmp/git-processor/worktrees/integry/propr/pr-1978-followup-2026-09-01T05-27-32/apps/desktop/src/webhook-secret-policy.ts).
- Enforced it in native prompt acquisition and capability issuance/validation.
- Added 15-character rejection, 16-character acceptance, 512 acceptance, and 513 rejection coverage.
- Added exact shortest-secret renderer/log/diagnostic redaction checks while preserving structured errors.
- Confirmed one-character contextual strings are not globally redacted.

Verification passed:

- Full Suite: all 350 files plus native workspace suite
- Desktop typecheck and tests: 349 passed, 6 platform skips
- Native durability: 118/118
- Validate’s locally reproducible stages
- Linux x64 package build and executable/fuse inspection
- `git diff --check`

Unavailable locally: GUI packaged smoke due missing Xvfb, and the five non-Linux-x64 native/package runners. No commit was created.

PR: #1978
Comment by: @integry (ID: 5489339922)
Model: gpt-5.6-sol
…guided-loca-20260829-1840-7k8

[1960 by GPT-5.6 Sol] Implement the guided local Linux setup wizard in the desktop app
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant