Skip to content

[AGENT] Productize desktop release gates#250

Merged
BASIC-BIT merged 8 commits into
masterfrom
feature/desktop-productization
Jun 9, 2026
Merged

[AGENT] Productize desktop release gates#250
BASIC-BIT merged 8 commits into
masterfrom
feature/desktop-productization

Conversation

@BASIC-BIT

@BASIC-BIT BASIC-BIT commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator

[AGENT]

Refs #249.

Summary

  • Adds Windows desktop package/smoke CI plus a manual draft desktop release workflow.
  • Adds synthetic audio and test-session hooks for deterministic native smoke tests.
  • Adds desktop shell polish: hidden release console, Chronote app icons, frameless titlebar controls, and non-browser context-menu behavior.
  • Adds artifact validation/checksums, focused desktop coverage, and productization docs with Azure Artifact Signing guidance.

Notes

  • Stable desktop release remains blocked on Authenticode signing setup and signed artifact verification.
  • The release workflow intentionally keeps unsigned beta artifacts behind --no-sign until signing is configured.

@BASIC-BIT BASIC-BIT marked this pull request as ready for review June 8, 2026 20:39

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 232169eed5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/desktop-release.yml Outdated
Comment thread apps/desktop/package.json
@greptile-apps

greptile-apps Bot commented Jun 8, 2026

Copy link
Copy Markdown

Greptile Summary

This PR productizes the Chronote Desktop Windows release pipeline, adding CI package/smoke gates and a manual draft-release workflow, along with frameless titlebar polish and deterministic native smoke test infrastructure.

  • Adds desktop-package.yml with two parallel Windows CI jobs: one builds and validates unsigned Tauri bundles with checksum generation, another compiles a synthetic-audio+test-hooks debug binary and exercises the full record→upload→status→meeting-link flow via tauri-driver and a local mock API.
  • Adds desktop-release.yml (manual dispatch) that uses tauri-action to create a draft GitHub Release with unsigned artifacts and uploads SHA256SUMS.txt; stable release remains blocked on Authenticode signing.
  • Adds frameless window decorations, custom titlebar drag/minimize/maximize/close commands, app icon, and global context-menu suppression in App.tsx/styles.css.
  • Adds desktop-artifacts.mjs (reads expected version from tauri.conf.json dynamically), jest.desktop-coverage.config.ts (focused coverage thresholds for desktop API/auth modules), and docs/desktop-productization.md with Azure Artifact Signing guidance and manual smoke checklist.

Confidence Score: 5/5

Safe to merge; changes are additive CI/release infrastructure and UI polish with no modifications to existing bot, API, or data paths.

The PR adds new workflows, scripts, and desktop shell changes that are self-contained. The synthetic-audio and test-hooks Rust features are correctly excluded from release builds via feature flags. The msedgedriver-tool dependency is now pinned at a specific commit. The two minor observations (test fixture version coupling and smoke-test 400 debuggability) do not affect correctness of the CI gate or the production binary.

.github/workflows/desktop-release.yml — the shell-injection finding from a prior review thread (unquoted ${{ inputs.tag }} in PowerShell) should be confirmed resolved before running the release workflow against a production environment.

Important Files Changed

Filename Overview
.github/workflows/desktop-package.yml New CI workflow: two parallel Windows jobs — artifact build/validation and native smoke test. msedgedriver-tool is pinned at a specific --rev. Path triggers now correctly include jest.desktop-coverage.config.ts.
.github/workflows/desktop-release.yml New manual-dispatch release workflow using tauri-action. Shell injection via unquoted ${{ inputs.tag }} in a PowerShell command was flagged in a prior review thread.
apps/desktop/src-tauri/src/audio.rs Adds a synthetic-audio feature-gated mod platform that produces deterministic WAV output for CI smoke testing. cfg guards are correctly mutually exclusive across the three platform paths.
apps/desktop/src-tauri/src/main.rs Adds frameless window commands, windows_subsystem = windows for release builds, and a test-hooks feature-gated test_session_from_env() for CI pre-seeding. Feature guards are correctly applied so test code is excluded from production binaries.
scripts/desktop-artifacts.mjs Validates bundled artifact filenames against the version read dynamically from tauri.conf.json, writes SHA256SUMS.txt. Previous concern about hardcoded version default has been resolved.
scripts/desktop-native-smoke.mjs Full native smoke test: starts a mock Chronote API, builds with synthetic-audio/test-hooks features, runs tauri-driver, exercises the record→upload→status→link flow. Silent 400 on mismatched source IDs would produce a confusing timeout (see comment).
test/scripts/desktopArtifacts.test.ts Unit tests for the artifact validation script. Fixture filenames hardcode 0.1.0 while the script reads the version from tauri.conf.json, creating a silent coupling on version bumps (see comment).
apps/desktop/src/App.tsx Adds frameless-window titlebar with drag, minimize/maximize/close controls, and a global context-menu suppressor. startWindowDrag correctly checks event.target.closest before invoking drag.
jest.desktop-coverage.config.ts New focused Jest coverage config for desktop API/auth modules with explicit thresholds. The file is now correctly included in desktop-package.yml path triggers.
.github/workflows/ci.yml Switches preview-branch git auth header from bearer to base64-encoded basic credentials with x-access-token username. The tr -d newline correctly strips base64 line-wrapping.
Prompt To Fix All With AI
Fix the following 2 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 2
test/scripts/desktopArtifacts.test.ts:1303-1320
**Test fixtures couple to live `tauri.conf.json` version**

Fixture filenames embed `"0.1.0"` directly while the script reads the expected version from `tauri.conf.json` at runtime (no `DESKTOP_ARTIFACT_VERSION` env override). When the version is bumped in the config, these tests will fail until the fixture names are updated in lockstep. Setting `DESKTOP_ARTIFACT_VERSION` in `runArtifactsScript`'s env block would decouple the test from the live config and make the coupling explicit.

### Issue 2 of 2
scripts/desktop-native-smoke.mjs:1037-1042
**Silent 400 from mismatched source IDs manifests as a confusing timeout**

If the desktop app sends source IDs other than the hardcoded `"owner_mic"` / `"system_output"` (e.g. after a rename), the mock returns `400 missing_uploads` but the smoke test surfaces this as a 20-second `Timed out waiting for upload completion` error with no mention of the 400. Consider logging the bad request body or returning an error body that the app would propagate to the UI, so a source-ID drift produces a clearer failure signal.

Reviews (2): Last reviewed commit: "[AGENT] Update desktop visual baselines" | Re-trigger Greptile

Comment thread .github/workflows/desktop-package.yml
Comment thread .github/workflows/desktop-release.yml Outdated
Comment thread scripts/desktop-packaged-smoke.mjs Outdated
Comment thread .github/workflows/desktop-package.yml
@BASIC-BIT

Copy link
Copy Markdown
Collaborator Author

[AGENT]

Review feedback addressed in follow-up commits:

  • release checksums now use published asset basenames and no longer rely on renamed tauri-action asset patterns.
  • workflow_dispatch release tag is passed through RELEASE_TAG env before PowerShell use.
  • msedgedriver-tool is pinned with --rev.
  • jest.desktop-coverage.config.ts is included in desktop workflow path triggers.
  • tauri-driver spawn failures now propagate through the async path so cleanup still runs.
  • the CI/browser smoke is now named Native Desktop Smoke with desktop:smoke:native; installer install/uninstall validation remains a manual hardware-smoke checklist item until Authenticode signing is configured.

@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown

[AGENT]

Visual regression report

No visual diffs detected.
Download the visual-regression artifact and open playwright-report/index.html for the full report.

Run: https://github.com/Chronote-gg/Chronote/actions/runs/27166733891

@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown

[AGENT]

Visual regression report

Detected 2 screenshot changes.

Changed snapshots:

  • desktop-mobile-ready
  • desktop-signed-out

Download the visual-regression artifact and open playwright-report/index.html for the full report.

Run: https://github.com/Chronote-gg/Chronote/actions/runs/27174007312

@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown

[AGENT]

Visual regression report

Detected 2 screenshot changes.

Changed snapshots:

  • desktop-mobile-ready
  • desktop-signed-out

Generated diff previews

2 image previews

desktop-mobile-ready

desktop-mobile-ready
Actual | Expected

desktop-signed-out

desktop-signed-out
Actual | Expected

Download the visual-regression artifact and open playwright-report/index.html for the full report.

Run: https://github.com/Chronote-gg/Chronote/actions/runs/27174351708

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown

[AGENT]

Visual regression report

Committed baseline snapshot updates in this PR: 8.

Committed snapshot files:

  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-mobile-ready-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-processing-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-processing-linked-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-ready-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-recording-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-settings-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-signed-out-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-uploaded-chromium-win32.png

Committed baseline previews

8 image previews

test/e2e/desktop.visual.spec.ts-snapshots/desktop-mobile-ready-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-mobile-ready-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-processing-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-processing-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-processing-linked-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-processing-linked-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-ready-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-ready-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-recording-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-recording-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-settings-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-settings-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-signed-out-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-signed-out-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-uploaded-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-uploaded-chromium-win32.png

No visual diffs detected.
Download the visual-regression artifact and open playwright-report/index.html for the full report.

Run: https://github.com/Chronote-gg/Chronote/actions/runs/27174871440

@BASIC-BIT

Copy link
Copy Markdown
Collaborator Author

[AGENT]

@greptile-apps review

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown

[AGENT]

Visual regression report

Committed baseline snapshot updates in this PR: 8.

Committed snapshot files:

  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-mobile-ready-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-processing-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-processing-linked-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-ready-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-recording-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-settings-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-signed-out-chromium-win32.png
  • M: test/e2e/desktop.visual.spec.ts-snapshots/desktop-uploaded-chromium-win32.png

Committed baseline previews

8 image previews

test/e2e/desktop.visual.spec.ts-snapshots/desktop-mobile-ready-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-mobile-ready-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-processing-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-processing-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-processing-linked-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-processing-linked-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-ready-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-ready-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-recording-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-recording-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-settings-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-settings-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-signed-out-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-signed-out-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-uploaded-chromium-win32.png

test/e2e/desktop.visual.spec.ts-snapshots/desktop-uploaded-chromium-win32.png

No visual diffs detected.
Download the visual-regression artifact and open playwright-report/index.html for the full report.

Run: https://github.com/Chronote-gg/Chronote/actions/runs/27192113785

@BASIC-BIT

Copy link
Copy Markdown
Collaborator Author

[AGENT]

Second Greptile follow-ups addressed in ee476bf:

  • artifact validator tests now pin their fixture version via DESKTOP_ARTIFACT_VERSION.
  • native smoke mock now logs and returns missing/received/completed source IDs when upload-source drift causes missing_uploads.

All PR checks are green and mergeability is clean.

@BASIC-BIT BASIC-BIT merged commit 63fe3e8 into master Jun 9, 2026
24 checks passed
@BASIC-BIT BASIC-BIT deleted the feature/desktop-productization branch June 9, 2026 14:09
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