Skip to content

[1/12] chore+docs: repo foundation — gitignore, license notices, parity matrix & execution plan - #10

Open
Mvkd108 wants to merge 3 commits into
mainfrom
docs/windows-execution-plan
Open

[1/12] chore+docs: repo foundation — gitignore, license notices, parity matrix & execution plan#10
Mvkd108 wants to merge 3 commits into
mainfrom
docs/windows-execution-plan

Conversation

@Mvkd108

@Mvkd108 Mvkd108 commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Status: REVIEW ONLY — do not merge. This is PR 1 of 12 in a stacked series. Base: main. Later merge order is strictly 1 → 12 with merge commits, never squash. Next: #11.

Muesli for Windows — native rebuild review stack

Muesli is a shipped macOS dictation + meeting-transcription app. This repository is the official Windows-native port: WPF on .NET 8, with a 1:1 behavior/design parity mandate against the macOS app. The 52 commits in this series migrate the app off the legacy Python worker onto a fully native stack:

  • ASR / diarization: sherpa-onnx (Parakeet TDT 0.6B v3), CPU + CUDA runtimes
  • Audio: NAudio (WASAPI mic + system loopback), normalized to 16 kHz mono
  • Text cleanup: LLamaSharp (optional Qwen GGUF, off by default)
  • Live role: Nemotron 3.5 streaming (opt-in, Off)
  • Packaging: Inno Setup (see "Divergence from recent main" below)

The work is delivered as 12 sequential, stacked PRs so each chunk is reviewable in isolation: PR N's base is PR N−1's head branch, so each PR shows only its own changes. Nothing merges yet — this is for review feedback only.

This PR (1/12): repo foundation

Commits:

  • f3a4b3c chore: harden .gitignore for .NET, model, capture and secret artifacts
  • bad6f44 chore: vendor third-party license texts (licenses/) and refresh THIRD-PARTY-NOTICES.md
  • fe8b52a docs: add docs/WINDOWS_EXECUTION_PLAN.md and docs/WINDOWS_MACOS_PARITY_MATRIX.md

11 files, +1,865/−15. No product code changes.

Review focus

  • .gitignore — covers model caches (GGUF/sherpa), capture artifacts and secrets; captured audio and DPAPI-protected secrets must never be committable.
  • licenses/ + THIRD-PARTY-NOTICES.md — completeness for sherpa-onnx, LLamaSharp, NAudio, QuestPDF, etc.
  • docs/WINDOWS_MACOS_PARITY_MATRIX.md — the parity contract; later PRs reference it. Review as the acceptance lens for the whole series.
  • AGENTS.md — standing repo rules for agents (build/test/verify loop).

Expected — do not flag: the docs describe the end state of all 12 PRs, so they forward-reference components that only exist from later PRs. No code changes here.

Divergence from recent main (read before reviewing the series)

After this stack was cut, main gained 17 commits via bot/tooling PRs (#2#7): Python-worker bundling, Velopack packaging replacing Inno, two crash fixes, and Claude review workflows. How this series relates to that work:

  • Python worker: this series intentionally supersedes it — PR 10 deletes the worker entirely; the native sherpa-onnx pipeline replaces it. Main's "Bundle Python" work is legacy-path polish that becomes obsolete when this lands.
  • Crash fixes on main (non-stereo mic crash; Parakeet-unavailable on non-NVIDIA): covered natively by design — AudioCaptureService normalizes 1/2/>2-channel inputs to 16 kHz mono, and RuntimeDiagnosticsService surfaces CUDA/runtime readiness. Reviewers: verify, don't request ports.
  • Packaging: main dropped Inno for Velopack; PR 12 repackages Inno. This is the one genuinely open decision and is deferred to merge time (Velopack would also deliver the real auto-updater, roadmap item D5).
  • No rebase was performed, deliberately: reconciling 52 commits over 17 upstream commits would risk the verified green state for zero review benefit. Reconciliation happens once, at merge time, at the tip.

Test evidence (whole stack, at tip docs/native-architecture-and-roadmap)

  • dotnet build windows-native\Muesli.Windows\Muesli.Windows.csproj --no-restore — clean
  • dotnet test windows-native\Muesli.Windows.Tests\Muesli.Windows.Tests.csproj --no-restore484/484 passing
  • Visual parity cells: 352/352 verified (evidence in PR 8/12 docs)
  • The test suite itself arrives in PR 11; this PR changes no code.

Deliberately NOT in this series (please don't expect or request here)

Google Calendar / Upcoming meetings (honest "unavailable" state), ChatGPT OAuth summaries (D1), cross-device sync (D3), telemetry (D4), real auto-updater (D5), macOS-style sound feedback.

Full stack map

# PR Head branch
1 #10 (this PR) docs/windows-execution-plan
2 #11 feat/window-placement-service
3 #12 feat/model-lifecycle-management
4 #13 feat/transcription-benchmarking
5 #14 feat/dictation-hotkey-model
6 #15 feat/meeting-qualification
7 #16 feat/computer-use-planner
8 #17 feat/meeting-live-transcript-window
9 #18 feat/rebuild-app-shell
10 #19 refactor/remove-python-worker-pipeline
11 #20 test/import-export-and-automation-coverage
12 #21 docs/native-architecture-and-roadmap

Previous: — | Next: #11

Summary by CodeRabbit

  • Documentation

    • Added a comprehensive Windows and macOS capability matrix covering feature availability, verification status, known gaps, and future work.
    • Added a detailed Windows execution plan outlining milestones, testing requirements, and release-readiness criteria.
    • Expanded third-party attribution information, including model artifacts, runtimes, fonts, and optional acceleration components.
    • Added complete license texts and clearer licensing guidance for included components.
  • Chores

    • Improved repository cleanup rules for local artifacts, secrets, caches, and temporary files.

Copilot AI lite review requested due to automatic review settings August 4, 2026 09:03
@claude

claude Bot commented Aug 4, 2026

Copy link
Copy Markdown

Claude finished @Mvkd108's task in 4m 36s —— View job


Claude finished @Mvkd108's task

Todo list

  • Gather context (PR body, diff, existing bot review comments)
  • Read changed files and cross-check doc claims against actual repo state
  • Run /code-review against this PR
  • Synthesize findings
  • Post final review

Review

This PR itself is docs/license/gitignore-only, as advertised, and the .gitignore hardening, vendored licenses/, and THIRD-PARTY-NOTICES.md refresh are reasonable additions for a repo that's about to redistribute more third-party components. Copilot and CodeRabbit already caught most of the mechanical issues (hardcoded personal paths, missing license "Included text" cross-refs, the QuestPDF license text diverging from upstream, the duplicate P5 (finalization) label) — I won't repeat those, they look correct and worth fixing.

One issue is more consequential than "docs forward-reference later PRs," which the PR description explicitly asks reviewers not to flag:

docs/WINDOWS_EXECUTION_PLAN.md and docs/WINDOWS_MACOS_PARITY_MATRIX.md present a native sherpa-onnx/C# architecture and its qualification evidence as already delivered in this tree, not as a future plan.

  • WINDOWS_EXECUTION_PLAN.md:7"Current bounded phase: Phase 4 real live meeting transcription is source-complete and re-qualified against the real artifact."
  • Phase sections report specific, present-tense test/qualification results: 46/46, then 56/56, 74/74, 128/128, 165/165, up to 195/195 passing tests in a windows-native\Muesli.Windows.Tests\Muesli.Windows.Tests.csproj project, plus named classes (NativeParakeetClient.cs, NativeSherpaRuntime.cs, StreamingModelPlatform.cs, MeetingSessionStateMachine.cs, NativeDiarizationClient.cs, LiveTranscriptOwnershipDescriptor, …) and scripts (smoke-transcription-models.ps1) with real CUDA inference timings and speaker-diarization results.
  • None of this exists in the actual repository at this commit. windows-native/Muesli.Windows/Services/ contains only the 21 files built around the Python worker (TranscriptionWorkerClient.cs, worker/transcribe_worker.py) documented in CLAUDE.md; there is no Muesli.Windows.Tests project anywhere in the tree (find . -iname "*.Tests.csproj" returns nothing), and grep -r sherpa windows-native returns no matches. CLAUDE.md itself states "There is no unit-test framework in the repo."

This is different from forward-referencing components that land in PRs 2–12 (e.g. "Phase 5 will add calendar detection") — the plan reads as an audit record of work already done and verified in this worktree, with fabricated test counts and benchmark numbers. Since WINDOWS_EXECUTION_PLAN.md:5 names the parity matrix "source of truth" for the whole series, anyone (human or agent) treating it that way going into PR 2 will believe Phases 0–4 are built and qualified when they aren't — and PR 2's own diff should be judged on what it actually adds, not on the assumption that this foundation already exists.

Given this series is stacked with "merge commits, never squash" per the PR description, I'd suggest before merge either: (a) rephrase these two docs as a forward-looking plan/target-state spec rather than a completed audit with fabricated evidence, or (b) if the evidence blocks genuinely came from the later PRs in the stack (10 with 52 commits, and per-PR test evidence arrives at PR 11), scope each phase's "delivered/evidence" language to the PR that actually introduces it, so this PR alone doesn't assert false completion.

Also worth confirming, since it wasn't visible in this PR's diff: THIRD-PARTY-NOTICES.md now documents SharpCompress, LLamaSharp/llama.cpp, sherpa-onnx, and ONNX Runtime as redistributed dependencies, but Muesli.Windows.csproj at this commit only references NAudio, QuestPDF, Sentry, and Velopack. That's presumably fine as a preview of later PRs' notices (same caveat as above), but if any release packaging happens off this branch before the rest of the stack lands, the notice would overstate what's actually shipped.

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review available on request

  • 🔍 Trigger review

Reviews should be triggered manually for repositories with fewer than 10 stars. Select Trigger review above or comment @coderabbitai review to review the latest changes. For a full review, comment @coderabbitai full review.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 06a3c527-7e34-4014-9e43-fa491fd1146a

📝 Walkthrough

Walkthrough

This PR expands repository ignore rules, testing workflow guidance, third-party attribution, license files, and Windows/macOS parity documentation. It records implementation status, qualification evidence, migration requirements, deferred work, and release-readiness criteria.

Changes

Windows documentation and compliance

Layer / File(s) Summary
Repository workflow and local artifact rules
.gitignore, AGENTS.md
The repository ignores additional Windows, .NET, model, media, secret, signing, and temporary artifacts. Testing guidance adds foregrounded launches, cleanup, log checks, and packaging smoke tests.
Third-party attribution and license corpus
THIRD-PARTY-NOTICES.md, licenses/*
Third-party notices now cover application libraries, fonts, downloaded models, and optional NVIDIA dependencies. Apache, BSD, CC BY, MIT, OFL, and QuestPDF license texts are added.
Windows execution plan
docs/WINDOWS_EXECUTION_PLAN.md
The plan defines phased delivery, acceptance evidence, migration requirements, external decisions, and release-readiness gates.
Windows/macOS parity matrix
docs/WINDOWS_MACOS_PARITY_MATRIX.md
The matrix records capability status, qualification evidence, parity gaps, backlog items, verification debt, Windows-native equivalents, and conclusions.

Estimated code review effort: 2 (Simple) | ~15 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the repository foundation, documentation, license, and parity changes in the pull request.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/windows-execution-plan

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI 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.

Pull request overview

This PR lays down repository “foundation” materials for the stacked Windows-native rebuild: expanded ignore rules for generated/secrets/artifacts, a refreshed third‑party notices file with vendored license texts, and two large planning docs that define the macOS→Windows parity contract and phased execution plan.

Changes:

  • Expand .gitignore to prevent committing local secrets, databases, model artifacts, recordings, and packaging outputs.
  • Add/refresh license documentation: THIRD-PARTY-NOTICES.md plus vendored texts in licenses/.
  • Add foundational planning docs: docs/WINDOWS_MACOS_PARITY_MATRIX.md and docs/WINDOWS_EXECUTION_PLAN.md; update AGENTS.md workflow guidance.

Reviewed changes

Copilot reviewed 10 out of 11 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
.gitignore Adds ignore patterns for local/env artifacts, models, media, secrets, and packaging outputs.
AGENTS.md Updates agent workflow guidance (build/launch/log checks) for the repo.
THIRD-PARTY-NOTICES.md Rewrites third-party notices with more detailed component/runtime/model attributions.
docs/WINDOWS_EXECUTION_PLAN.md Adds the phased execution plan and acceptance gates for parity work.
docs/WINDOWS_MACOS_PARITY_MATRIX.md Adds the authoritative parity matrix and backlog/decision ledger.
licenses/Apache-2.0.txt Adds Apache 2.0 license text for applicable dependencies.
licenses/BSD-3-Clause.txt Adds BSD 3‑Clause license text for applicable dependencies.
licenses/CC-BY-4.0.txt Adds CC BY 4.0 license text for applicable models.
licenses/MIT.txt Adds MIT license text for applicable dependencies.
licenses/OFL-1.1.txt Adds SIL OFL 1.1 text for the Inter font.
licenses/QuestPDF-2026.5.0.md Vendors the QuestPDF license text shipped in the referenced NuGet package.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +9 to +11
macOS reference: `C:/Users/madha/Downloads/muesli-main/muesli-main`.

Product reference: `C:/Users/madha/.codex/attachments/29153153-e376-4f1d-9d12-1e7c7808b737/pasted-text.txt`.
Comment thread AGENTS.md
- No placeholders or fake data

### Testing Workflow
- **After every project update made by Codex, automatically launch or relaunch Muesli with its dashboard visibly open and foregrounded before reporting completion. Do not wait for the user to ask, and do not use a hidden-window launch.**
Comment thread AGENTS.md
Comment on lines +31 to +32
- Launch with Start-Process so the shell does not block:
`Start-Process -FilePath "C:\Users\madha\projects\muesli\windows-native\Muesli.Windows\bin\Debug\net8.0-windows\Muesli.exe" -WorkingDirectory "C:\Users\madha\projects\muesli\windows-native\Muesli.Windows\bin\Debug\net8.0-windows"`
Comment thread licenses/MIT.txt
@@ -0,0 +1,21 @@
MIT License

Copyright (c) the copyright holders identified in THIRD-PARTY-NOTICES.md
Comment thread licenses/BSD-3-Clause.txt
@@ -0,0 +1,29 @@
BSD 3-Clause License

Copyright (c) the copyright holders identified in THIRD-PARTY-NOTICES.md
Comment thread THIRD-PARTY-NOTICES.md
Comment on lines +116 to +120

- Creator and attribution: NVIDIA Corporation, `nvidia/nemotron-3.5-asr-streaming-0.6b`.
- Source/model card: https://huggingface.co/nvidia/nemotron-3.5-asr-streaming-0.6b
- Converted artifact source: https://github.com/k2-fsa/sherpa-onnx/releases/tag/asr-models
- Use: opt-in local live meeting transcription through sherpa-onnx. The artifact downloads only after an explicit user action and is not bundled in the installer. The upstream model-card license terms apply.

@coderabbitai coderabbitai 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.

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/WINDOWS_MACOS_PARITY_MATRIX.md (1)

456-463: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Synchronize the status roll-ups with the finalization evidence.

The later finalization section records session-journal schema 3, 195 tests, and fresh multi-speaker CUDA evidence. Earlier sections still report schema 2, 165 tests, no fresh diarization run, and several implemented features as missing.

  • docs/WINDOWS_MACOS_PARITY_MATRIX.md#L456-L463: distinguish Missing, Partial, and Implemented but insufficiently verified; report 195 tests.
  • docs/WINDOWS_EXECUTION_PLAN.md#L178-L178: report session-journal schema 3 or scope schema 2 to the pre-finalization state.
  • docs/WINDOWS_MACOS_PARITY_MATRIX.md#L97-L99: update LIVE-03 to schema 3 and replace the stale DIA-01 evidence statement.
  • docs/WINDOWS_EXECUTION_PLAN.md#L376-L378: change 165/165 to 195/195 and preserve the remaining physical qualification gaps.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/WINDOWS_MACOS_PARITY_MATRIX.md` around lines 456 - 463, Synchronize the
finalization evidence across all listed documentation sites: in
docs/WINDOWS_MACOS_PARITY_MATRIX.md lines 456-463, distinguish Missing, Partial,
and Implemented-but-insufficiently-verified items and report 195 tests; in
docs/WINDOWS_EXECUTION_PLAN.md line 178, report session-journal schema 3 or
explicitly scope schema 2 to pre-finalization; in
docs/WINDOWS_MACOS_PARITY_MATRIX.md lines 97-99, update LIVE-03 to schema 3 and
replace stale DIA-01 evidence; and in docs/WINDOWS_EXECUTION_PLAN.md lines
376-378, change 165/165 to 195/195 while retaining the remaining physical
qualification gaps.
🧹 Nitpick comments (2)
AGENTS.md (1)

22-34: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Remove duplicated guidance and the hardcoded user path.

Lines 24-26 and lines 27-32 give the same instructions twice: kill the running process, build, then launch. The second block adds more detail, but readers cannot tell which instruction is authoritative if the two blocks ever diverge (for example, dotnet build --no-restore on line 25 versus the explicit .csproj command on lines 29-30).

Line 32 hardcodes the path C:\Users\madha\projects\muesli\windows-native\Muesli.Windows\bin\Debug\net8.0-windows\Muesli.exe. This path is specific to one contributor's machine and username. Another developer or agent with a different clone location cannot use this command as written.

Merge the two blocks into one, and use a repo-relative path for the Start-Process command instead of an absolute per-user path.

✏️ Proposed consolidation
-- **After every project update made by Codex, automatically launch or relaunch Muesli with its dashboard visibly open and foregrounded before reporting completion. Do not wait for the user to ask, and do not use a hidden-window launch.**
-- For source or project-file changes, rebuild first; for documentation or workflow-only changes, reuse the current successful build unless a rebuild is relevant.
-- Kill running `Muesli.exe` before building when needed
-- Build with `dotnet build --no-restore`
-- Run executable directly from `bin/Debug/net8.0-windows/`
-- After any code fix that affects the WPF app, build and launch Muesli before reporting completion.
-- Kill existing `Muesli.exe` before build/launch when needed.
-- Use:
-  `dotnet build windows-native\Muesli.Windows\Muesli.Windows.csproj --no-restore`
-- Launch with Start-Process so the shell does not block:
-  `Start-Process -FilePath "C:\Users\madha\projects\muesli\windows-native\Muesli.Windows\bin\Debug\net8.0-windows\Muesli.exe" -WorkingDirectory "C:\Users\madha\projects\muesli\windows-native\Muesli.Windows\bin\Debug\net8.0-windows"`
+- **After every project update made by Codex, automatically launch or relaunch Muesli with its dashboard visibly open and foregrounded before reporting completion. Do not wait for the user to ask, and do not use a hidden-window launch.**
+- For source or project-file changes, rebuild first; for documentation or workflow-only changes, reuse the current successful build unless a rebuild is relevant.
+- Kill running `Muesli.exe` before building when needed.
+- Build with: `dotnet build windows-native\Muesli.Windows\Muesli.Windows.csproj --no-restore`
+- Launch with Start-Process (from the repository root) so the shell does not block:
+  `Start-Process -FilePath "windows-native\Muesli.Windows\bin\Debug\net8.0-windows\Muesli.exe" -WorkingDirectory "windows-native\Muesli.Windows\bin\Debug\net8.0-windows"`

Based on learnings, the executable should be run from windows-native\Muesli.Windows\bin\Debug\net8.0-windows\ using Start-Process with that directory as the working directory, not from a hardcoded per-user absolute path.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@AGENTS.md` around lines 22 - 34, Consolidate the duplicated Muesli
build-and-launch guidance in AGENTS.md into one authoritative sequence,
retaining the explicit project build command and required process/log checks.
Update the Start-Process executable and working-directory arguments to use
repo-relative paths under windows-native\Muesli.Windows\bin\Debug\net8.0-windows
instead of the hardcoded user-specific path.

Source: Learnings

docs/WINDOWS_EXECUTION_PLAN.md (1)

59-61: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Make the visible-launch gate reproducible.

Set windows-native\Muesli.Windows\bin\Debug\net8.0-windows\ as the Start-Process working directory. Record a marker in the newest %APPDATA%\muesli\logs\muesli-*.log file before launch. Inspect only bytes written after that marker. The current text leaves the working directory and log-file selection implicit.

Based on learnings, run the executable directly from its output directory and inspect the latest log slice after launch.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/WINDOWS_EXECUTION_PLAN.md` around lines 59 - 61, Update the
visible-launch procedure in the execution plan to run Start-Process with
windows-native\Muesli.Windows\bin\Debug\net8.0-windows\ as its working
directory, select the newest %APPDATA%\muesli\logs\muesli-*.log file, and record
a launch marker in that file before starting Muesli.exe. Restrict post-launch
inspection to bytes written after that marker while preserving the existing UI
and error-entry checks.

Source: Learnings

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/WINDOWS_EXECUTION_PLAN.md`:
- Around line 301-309: The migration table’s session-journal row uses an
ambiguous duplicate “P5” phase label. Rename the `P5 (finalization)` row to `P4
(finalization)` or a clearly named cross-phase migration track, while keeping
the calendar settings row labeled `P5`.

In `@docs/WINDOWS_MACOS_PARITY_MATRIX.md`:
- Around line 178-180: Align the “Actionable parity backlog for every Partial or
Missing item” section with its stated scope by removing entries for MOD-02,
MOD-03, HOT-02, HOOK-01, and AUTO-01 unless the section contract is explicitly
broadened to include verification debt. Keep those rows governed by the
appropriate verification-debt section when they are already complete or
implemented.
- Around line 13-15: Update the “How to read this document” section in
WINDOWS_MACOS_PARITY_MATRIX.md to bind the matrix and the qualification evidence
to a reproducible source commit or worktree hash, as required by the references
around Lines 328-339. Identify any uncommitted inputs separately, or remove the
claim that the matrix is authoritative for existing uncommitted changes.

In `@THIRD-PARTY-NOTICES.md`:
- Around line 122-127: Add an “Included text” reference to licenses/MIT.txt
within the Silero VAD entry, alongside its existing source and license details,
matching the format used by other MIT-licensed entries such as NAudio and
SharpCompress.
- Around line 115-121: Update the “NVIDIA Nemotron 3.5 ASR Streaming 0.6B” entry
to include an explicit License field naming the upstream model-card license; if
it corresponds to a vendored file, also add the matching Included text
reference, otherwise state that the license is unconfirmed rather than omitting
the field.

---

Outside diff comments:
In `@docs/WINDOWS_MACOS_PARITY_MATRIX.md`:
- Around line 456-463: Synchronize the finalization evidence across all listed
documentation sites: in docs/WINDOWS_MACOS_PARITY_MATRIX.md lines 456-463,
distinguish Missing, Partial, and Implemented-but-insufficiently-verified items
and report 195 tests; in docs/WINDOWS_EXECUTION_PLAN.md line 178, report
session-journal schema 3 or explicitly scope schema 2 to pre-finalization; in
docs/WINDOWS_MACOS_PARITY_MATRIX.md lines 97-99, update LIVE-03 to schema 3 and
replace stale DIA-01 evidence; and in docs/WINDOWS_EXECUTION_PLAN.md lines
376-378, change 165/165 to 195/195 while retaining the remaining physical
qualification gaps.

---

Nitpick comments:
In `@AGENTS.md`:
- Around line 22-34: Consolidate the duplicated Muesli build-and-launch guidance
in AGENTS.md into one authoritative sequence, retaining the explicit project
build command and required process/log checks. Update the Start-Process
executable and working-directory arguments to use repo-relative paths under
windows-native\Muesli.Windows\bin\Debug\net8.0-windows instead of the hardcoded
user-specific path.

In `@docs/WINDOWS_EXECUTION_PLAN.md`:
- Around line 59-61: Update the visible-launch procedure in the execution plan
to run Start-Process with
windows-native\Muesli.Windows\bin\Debug\net8.0-windows\ as its working
directory, select the newest %APPDATA%\muesli\logs\muesli-*.log file, and record
a launch marker in that file before starting Muesli.exe. Restrict post-launch
inspection to bytes written after that marker while preserving the existing UI
and error-entry checks.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 1cd3c070-1ef4-4007-961d-cd1b8b8b867a

📥 Commits

Reviewing files that changed from the base of the PR and between 812ed91 and fe8b52a.

📒 Files selected for processing (11)
  • .gitignore
  • AGENTS.md
  • THIRD-PARTY-NOTICES.md
  • docs/WINDOWS_EXECUTION_PLAN.md
  • docs/WINDOWS_MACOS_PARITY_MATRIX.md
  • licenses/Apache-2.0.txt
  • licenses/BSD-3-Clause.txt
  • licenses/CC-BY-4.0.txt
  • licenses/MIT.txt
  • licenses/OFL-1.1.txt
  • licenses/QuestPDF-2026.5.0.md

Comment on lines +301 to +309
| Phase | Expected migration surface | Required invariant |
|---|---|---|
| P1 | Model catalog/version/readiness metadata if persisted; cleanup model metadata. | Existing selected Parakeet/default settings remain valid; missing/removed model becomes an explicit unresolved selection, never a hidden fallback. |
| P2 | Settings schema 3 adds persisted filler-word removal; existing dictionary records retain their fields while matching becomes more conservative. | Existing selected model roles and settings persist; filler removal defaults on for migrated users and can be disabled; dictionary records preserve exact phrase/replacement data. |
| P3 | Meeting schema: manual notes, raw/edited transcript provenance, session status/journal, track metadata, folder parent/order, retranscription state. | Existing meetings/folders load losslessly; flat folders become roots; failed migration restores backup; generated and manual notes never merge implicitly. |
| P4 | Live model IDs, ownership enum, final model ID, VAD/checkpoint/gap/reconciliation metadata. | Legacy meetings are marked offline-final; no inferred live owner; raw contributions remain available. |
| P5 (finalization) | Session-journal schema 3 adds `MicrophonePartOffsetsMs`/`SystemPartOffsetsMs`, the meeting-time anchor of each captured part. | Schema 2 journals load unchanged and migrate to contiguous anchors, which is exactly the placement they already assumed; a missing or short anchor list falls back to contiguous rather than dropping parts; a recorded anchor can never rewind into previously captured audio. |
| P5 | Calendar settings, event cache cursor, dismissal/tombstone state; tokens only in Credential Manager. | No token in JSON/logs; disabled calendar performs no network work; stale dismissals prune deterministically. |
| P6 | Provider endpoints/nonsecret options, hook settings, auto-export destination/format/idempotency state. | Secrets stay protected; invalid executable/path disables with visible error; existing meetings do not retroactively run automation. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Disambiguate the P5 (finalization) migration row.

The plan defines Phase 5 as meeting detection and calendar work at Lines [202-204]. The migration table uses P5 (finalization) for session-journal schema 3, then uses P5 again for calendar settings. Rename the finalization row to P4 (finalization) or to a named cross-phase migration track. Keep the calendar row under Phase 5.

🧰 Tools
🪛 LanguageTool

[style] ~307-~307: Consider an alternative for the overused word “exactly”.
Context: ...migrate to contiguous anchors, which is exactly the placement they already assumed; a m...

(EXACTLY_PRECISELY)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/WINDOWS_EXECUTION_PLAN.md` around lines 301 - 309, The migration table’s
session-journal row uses an ambiguous duplicate “P5” phase label. Rename the `P5
(finalization)` row to `P4 (finalization)` or a clearly named cross-phase
migration track, while keeping the calendar settings row labeled `P5`.

Comment on lines +13 to +15
## How to read this document

This matrix is authoritative for the audited working tree, including its existing uncommitted changes. It supersedes feature-status statements in older roadmap and historical qualification documents where the code has moved on. The current operational model documentation is `WINDOWS_TRANSCRIPTION_MODELS.md`; older retained qualification reports may still describe the Parakeet-only build they tested.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Bind the matrix to a reproducible revision.

Line [15] calls the matrix authoritative for existing uncommitted changes. A later merge commit can omit those changes, so readers cannot reproduce the statuses or qualification evidence from the committed tree. Record the source commit or worktree hash required by Lines [328-339]. Identify uncommitted inputs separately, or remove the authority claim.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/WINDOWS_MACOS_PARITY_MATRIX.md` around lines 13 - 15, Update the “How to
read this document” section in WINDOWS_MACOS_PARITY_MATRIX.md to bind the matrix
and the qualification evidence to a reproducible source commit or worktree hash,
as required by the references around Lines 328-339. Identify any uncommitted
inputs separately, or remove the claim that the matrix is authoritative for
existing uncommitted changes.

Comment on lines +178 to +180
## Actionable parity backlog for every Partial or Missing item

This section is the implementation contract for all matrix rows marked **Partial** or **Missing**. Rows marked “implemented but insufficiently verified” are governed by the verification debt section after this backlog. Blocked and platform-equivalent items are governed by the decision/equivalence ledgers.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Make the actionable backlog match its stated scope.

The section says it covers every Partial or Missing row. It includes MOD-02 and MOD-03, which are Complete and verified, plus HOT-02, HOOK-01, and AUTO-01, which are already implemented. This duplicates or contradicts the verification-debt section. Remove those entries or change the section contract to include verification debt explicitly.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/WINDOWS_MACOS_PARITY_MATRIX.md` around lines 178 - 180, Align the
“Actionable parity backlog for every Partial or Missing item” section with its
stated scope by removing entries for MOD-02, MOD-03, HOT-02, HOOK-01, and
AUTO-01 unless the section contract is explicitly broadened to include
verification debt. Keep those rows governed by the appropriate verification-debt
section when they are already complete or implemented.

Comment thread THIRD-PARTY-NOTICES.md
Comment on lines +115 to +121
### NVIDIA Nemotron 3.5 ASR Streaming 0.6B

- Creator and attribution: NVIDIA Corporation, `nvidia/nemotron-3.5-asr-streaming-0.6b`.
- Source/model card: https://huggingface.co/nvidia/nemotron-3.5-asr-streaming-0.6b
- Converted artifact source: https://github.com/k2-fsa/sherpa-onnx/releases/tag/asr-models
- Use: opt-in local live meeting transcription through sherpa-onnx. The artifact downloads only after an explicit user action and is not bundled in the installer. The upstream model-card license terms apply.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Add an explicit license field for Nemotron 3.5 ASR.

Every other component entry in this document states a License field explicitly (for example Parakeet at Line 110, Silero VAD at Line 125). The Nemotron 3.5 ASR entry only says "The upstream model-card license terms apply" without naming the license or referencing an included license text. State the specific license and, if it maps to one of the vendored texts in licenses/, add an "Included text" reference. If the license is not yet confirmed, note this explicitly instead of omitting the field silently.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@THIRD-PARTY-NOTICES.md` around lines 115 - 121, Update the “NVIDIA Nemotron
3.5 ASR Streaming 0.6B” entry to include an explicit License field naming the
upstream model-card license; if it corresponds to a vendored file, also add the
matching Included text reference, otherwise state that the license is
unconfirmed rather than omitting the field.

Comment thread THIRD-PARTY-NOTICES.md
Comment on lines +122 to +127
### Silero VAD

- Creator and attribution: Silero Team, `snakers4/silero-vad`.
- Source and license: https://github.com/snakers4/silero-vad (MIT).
- Use: opt-in local speech-boundary detection for live meeting transcription. The pinned ONNX artifact downloads only with the live model and is not bundled in the installer.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Add "Included text" reference for Silero VAD.

The Silero VAD entry states an MIT license but does not reference licenses/MIT.txt the way other MIT-licensed entries do (for example NAudio at Line 37, SharpCompress at Line 45). Add the "Included text" line for consistency, since the PR's stated goal is complete offline attribution.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@THIRD-PARTY-NOTICES.md` around lines 122 - 127, Add an “Included text”
reference to licenses/MIT.txt within the Silero VAD entry, alongside its
existing source and license details, matching the format used by other
MIT-licensed entries such as NAudio and SharpCompress.

@pHequals7
pHequals7 force-pushed the docs/windows-execution-plan branch from fe8b52a to a1a0829 Compare August 4, 2026 15:22

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@licenses/QuestPDF-2026.5.0.md`:
- Around line 3-5: The file licenses/QuestPDF-2026.5.0.md contains a preamble
and diverges from the upstream QuestPDF 2026.5.0 license, most notably changing
"QUESTPDF OR ITS LICENSORS" to "QUESTPDF AND ITS LICENSORS" in the liability
clause. Either replace the entire file with the exact upstream LICENSE.md text
from the QuestPDF 2026.5.0 tagged release, or if keeping the preamble as a
summary, ensure the actual license text below it matches the upstream version
exactly and explicitly mark the file as a summary to clarify that the preamble
is not part of the official license.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: bff10b44-f068-49e8-a9ca-20eef5780e5f

📥 Commits

Reviewing files that changed from the base of the PR and between fe8b52a and a1a0829.

📒 Files selected for processing (11)
  • .gitignore
  • AGENTS.md
  • THIRD-PARTY-NOTICES.md
  • docs/WINDOWS_EXECUTION_PLAN.md
  • docs/WINDOWS_MACOS_PARITY_MATRIX.md
  • licenses/Apache-2.0.txt
  • licenses/BSD-3-Clause.txt
  • licenses/CC-BY-4.0.txt
  • licenses/MIT.txt
  • licenses/OFL-1.1.txt
  • licenses/QuestPDF-2026.5.0.md
🚧 Files skipped from review as they are similar to previous changes (6)
  • licenses/MIT.txt
  • licenses/OFL-1.1.txt
  • docs/WINDOWS_MACOS_PARITY_MATRIX.md
  • .gitignore
  • AGENTS.md
  • licenses/BSD-3-Clause.txt

Comment on lines +3 to +5
This is the license text shipped in the QuestPDF 2026.5.0 NuGet package used by
this build. QuestPDF's current upstream terms may change; consult
https://www.questpdf.com/license/ before distribution.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

curl -fsSL \
  https://raw.githubusercontent.com/QuestPDF/QuestPDF/2026.5.0/LICENSE.md \
  -o /tmp/QuestPDF-2026.5.0-LICENSE.md

diff -u /tmp/QuestPDF-2026.5.0-LICENSE.md licenses/QuestPDF-2026.5.0.md

Repository: Muesli-HQ/muesli-windows

Length of output: 13853


🏁 Script executed:

#!/bin/bash
set -euo pipefail

python3 - <<'PY'
import difflib

repo = '/tmp/QuestPDF-2026.5.0-LICENSE.md'
license_file = 'licenses/QuestPDF-2026.5.0.md'

try:
    with open(repo, 'r', encoding='utf-8') as f:
        upstream = f.read()
    with open(license_file, 'r', encoding='utf-8') as f:
        local = f.read().splitlines(True)
except FileNotFoundError as e:
    print(f'FILE_NOT_FOUND: {e}')
    raise SystemExit(0)

print('UPSTREAM_LINE_COUNT', len(upstream.splitlines()))
print('LOCAL_LINE_COUNT', len(local))
print('PREFIX_MATCH', local[:8] == upstream.splitlines(True)[:8])
print('LOCAL_INTRO_LINES', [str(i + 1) for i, line in enumerate(local) if i < 10])
print('OR_VS_AND_OCCURRENCES')
for phrase in ['QUESTPDF AND ITS LICENSORS', 'QUESTPDF OR ITS LICENSORS']:
    print('  UPSTREAM', phrase, upstream.count(phrase))
    print('  LOCAL  ', phrase, sum(1 for line in local if phrase in line))

for text, name in [(upstream, 'upstream'), (local, 'local')]:
    lines = text.splitlines() if isinstance(text, str) else text
    for i, line in enumerate(lines, 1):
        if phrase := 'QUESTPDF AND ITS LICENSORS' in line or 'QUESTPDF OR ITS LICENSORS' in line:
            print(f'{name} line {i}: {line.strip()}')

# Print only the first diff chunk around the intro to avoid large output.
diff = difflib.unified_diff(
    upstream.splitlines(), local,
    fromfile='upstream/LICENSE.md (2026.5.0)',
    tofile='licenses/QuestPDF-2026.5.0.md',
    lineterm=''
)
print('DIFF_CHUNK_FIRST', '---' in '\n'.join(list(diff)[:80]))
PY

Repository: Muesli-HQ/muesli-windows

Length of output: 1389


🌐 Web query:

QuestPDF 2026.5.0 LICENSE.md raw.githubusercontent.com questpdf.com license

💡 Result:

As of August 4, 2026, QuestPDF operates under a hybrid licensing model governed by terms effective since July 6, 2026 (Version 3.0) [1][2]. The library is not under a single open-source license like MIT for all users; rather, it uses a dual-licensing structure [2]. The current licensing framework includes: 1. Community License: This is available for free to individuals, non-profit organizations, academic institutions, open-source projects, and businesses with annual gross revenue under USD 1,000,000 [2][3]. Public-sector entities and publicly traded companies are ineligible for the Community License regardless of their revenue [3]. 2. Professional and Enterprise Licenses: Organizations that do not qualify for the Community License must purchase a paid license for production use [2][4]. - Professional License: Covers a single legal entity or individual [4][5]. - Enterprise License: Covers the licensee and its affiliates (entities with more than 50% ownership or control) and includes additional support and procurement benefits [2][4]. License activation is handled in code rather than by license keys, requiring users to set the license type at application startup [6]: QuestPDF.Settings.License = LicenseType.Community; // or QuestPDF.Settings.License = LicenseType.Professional; // or QuestPDF.Settings.License = LicenseType.Enterprise; Users are responsible for ensuring they meet the eligibility criteria for their chosen license [6]. The full text of these terms is available on the official QuestPDF license documentation page at questpdf.com/license [7][3]. Note that while older versions of the repository on GitHub may have referenced an MIT license [8][9], the current authoritative terms as of August 2026 follow the Version 3.0 structure [2].

Citations:


Restore the exact 2026.5.0 license text.

licenses/QuestPDF-2026.5.0.md adds a preamble and deviates from the tagged QuestPDF 2026.5.0 LICENSE.md, including a change in the liability clause from QUESTPDF OR ITS LICENSORS to QUESTPDF AND ITS LICENSORS. Replace it with the exact upstream text, or keep the exact license separately and mark this file as a summary only.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@licenses/QuestPDF-2026.5.0.md` around lines 3 - 5, The file
licenses/QuestPDF-2026.5.0.md contains a preamble and diverges from the upstream
QuestPDF 2026.5.0 license, most notably changing "QUESTPDF OR ITS LICENSORS" to
"QUESTPDF AND ITS LICENSORS" in the liability clause. Either replace the entire
file with the exact upstream LICENSE.md text from the QuestPDF 2026.5.0 tagged
release, or if keeping the preamble as a summary, ensure the actual license text
below it matches the upstream version exactly and explicitly mark the file as a
summary to clarify that the preamble is not part of the official license.

Source: MCP tools

Mvkd108 and others added 3 commits August 18, 2026 19:19
Adds ignore rules for .NET build/test/coverage output, downloaded model
weights and native runtimes, local recordings and qualification results,
signing material, packaged installers, and agent-local scratch files.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adds the full license texts referenced by THIRD-PARTY-NOTICES.md so the
distributed package can ship attribution offline.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Captures the phased delivery plan for the Windows native app and tracks
feature parity against the macOS build.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Mvkd108
Mvkd108 force-pushed the docs/windows-execution-plan branch from a1a0829 to 761a203 Compare August 18, 2026 13:50
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.

2 participants