Conversation
|
Resolved that issue. |
|
Sorry not sure I understand? This is my personal account and the other account is my assistant account. |
|
@schickling Is humemm your bot? I know "schickling-assistant" is. |
|
Not that I know of 😅 |
|
Nice work! |
|
Looking further at it, @humemm seems to be a mixed bot/human account ([1] feels human, [2] also does). |
pietdevries94/playwright-web-flake#21 landed upstream, switching Chromium fetchers to Chrome for Testing URLs. Our local override (mkPatchedPlaywrightDriver, chromium-cft.nix, chromium-headless-shell-cft.nix) is no longer needed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@pietdevries94 @bitbloxhub any reason not to backport these changes up through 6762287 to the https://github.com/pietdevries94/playwright-web-flake/tree/1.58.2 tag? |
|
Yeah, after checking a bit I think we can retag I'll go ahead and do that. Actually, |
pietdevries94/playwright-web-flake#21 landed upstream, switching Chromium fetchers to Chrome for Testing URLs. Our local override (mkPatchedPlaywrightDriver, chromium-cft.nix, chromium-headless-shell-cft.nix) is no longer needed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add pnpm repo-boundary GVS spec * Tighten pnpm repo-boundary spec wording * Finalize pnpm repo-boundary spec * Move dev installs to a root hoisted pnpm workspace * Fix PR 368 CI regressions * Include workspace member pnpm manifests in mk-pnpm-cli * Narrow mk-pnpm-cli workspace member manifest staging * Persist pnpm metadata cache for legacy deploy * Refactor pnpm CLI builder around the aggregate root workspace * Restrict staged workspace members to the aggregate root * Install external repo roots in staged pnpm builds * Derive staged pnpm patches from lockfiles * Split repo-root and package-only workspace sources * Own external package lock roots in staged pnpm builds * Avoid duplicate manifest staging for package lock roots * Let external lock roots own their workspace copies * Clarify composed aggregate lock ownership * Refine aggregate lock ownership spec * Add pnpm composed-root CI install mode * Handle non-frozen pnpm installs in CI * Disable pnpm package manager self-updates in dev tasks * Stabilize pnpm task execution in dev shells * Align root pnpm packageManager with dev env * Disable pnpm self-management in Nix builds * Make nix-cli hash source explicit * Force cold hash refresh in nix:hash * Fix shared hash source updates * Stabilize pnpm deps FOD inputs * Make pnpm deps hashes platform-agnostic * Fix pnpm store spec parsing * Skip local pnpm package specs in store fetch * Fix pnpm deps parser interpolation * Refresh oxlint-npm deps hash * Fix package-scoped nix-cli fingerprint checks * Use job-local megarepo stores in CI sync helpers * (sch-vfv.1) Patch Playwright Chromium fetches to CFT URLs * (sch-vfv.1) Fix macOS Playwright headless-shell hash * (sch-vfv.1) Fix macOS Playwright Chromium hash * (sch-vfv.1) Harden nix hash and CI lock refresh * (sch-vfv.1) Compose nested pnpm installs transitively * (sch-vfv.1) Add Genie metadata-based workspace composition * (sch-vfv.1) Clarify pnpm single-instance install invariants * Remove local Playwright Chromium CFT URL workaround pietdevries94/playwright-web-flake#21 landed upstream, switching Chromium fetchers to Chrome for Testing URLs. Our local override (mkPatchedPlaywrightDriver, chromium-cft.nix, chromium-headless-shell-cft.nix) is no longer needed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add shared effect-lsp lint task * refactor(genie): project workspaces from package graph * test(genie): fix deterministic check regressions * Finalize genie composition alignment * Restore genie authoring boundary and cleanup aggregate API * Finish aggregate root projection boundary cleanup * Refine genie workspace seed projections * Finish genie pnpm workspace SSOT cleanup * Replace Effect.succeed(undefined) with Effect.void Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Fix floating effect lint warnings (yield or assign unused effects) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Remove package-local pnpm lockfiles * Fix optional Effect recovery typing * fix(genie): prevent double ^ prefix in peer dependency resolution resolvePeerDependencies was unconditionally prepending ^ to external peer dep values, even when they already had a ^ prefix from upstream package data. This caused ^^0.94.2 in downstream composed packages. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Rename Effect LSP task module to ts-effect-lsp * Add ambient CSS module declaration for side-effect imports Fixes TS2882 for `import '@xterm/xterm/css/xterm.css'` now that noUncheckedSideEffectImports defaults to true in TS 5.8+/tsgo. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Refresh tsgo flake input * Pin effect-tsgo to working upstream revision * Fix aggregate devenv check task execution * docs(spec): clarify cross-repo link boundary * docs(prompt): add cross-repo boundary follow-up handoff * rm tmp * fix: stage pnpm patches at build time * fix(genie): stop root workspace projection at repo boundaries * split megarepo workspace sync from lock management * cut over megarepo to raw ref paths * Remove nested pnpm workspace manifests * fix: update dependencies in megarepo.lock and clean up genie command code * Fix lint warnings: add missing JSDoc and explicit boolean compare Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Fix exactOptionalPropertyTypes error in workspace test helper Conditionally spread pnpmPackageClosure so the key is absent rather than explicitly set to undefined. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: update locked versions and hashes for tsgo and typescript-go in flake.lock * docs: clarify usage of pnpmWorkspaceYaml.manual as an escape hatch for non-genie-managed members * fix: update locked versions and hashes for tsgo and typescript-go in devenv.lock * fix: update locked versions and hashes for tsgo in devenv.lock and flake.lock * fix: rename tsgo diagnostics task from `ts:check:effect-lsp` to `ts:effect-lsp` * fix: enhance workspace dependency resolution and path handling in mk-pnpm-cli and catalog modules * fix: harden mk-pnpm-cli.nix and workspace graph traversal - Fix overlay ordering: apply shortest prefixes first so "." doesn't wipe nested overlays - Fix resolveSourceFor: handle "." prefix correctly (matches all paths) - Fix packageJsonPath: use absoluteSourcePathFor instead of hardcoded workspaceRootPath - Fix materializeWorkspace: copy external member dirs when installDir != memberDirs - Fix repo inference: deterministic tiebreaking (lexicographic) when counts are equal - Fix traversal keys: always use repo-qualified keys to prevent cross-repo name collisions - Remove dead normalizePathLike code Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: cast config type in createEffectRoute to satisfy TanStack Router's SSR serialization validator The conditional spread pattern produces a union type too wide for TanStack Router's Constrain/ValidateSerializableLifecycleResultSSR checks. The `satisfies` already validates at build time; the cast helps the type flow through. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: add root-level CSS ambient declaration for tsgo pnpm workspace resolution tsgo resolves pnpm workspace `file:` links through node_modules, bypassing project references. This means consuming packages' tsconfig contexts don't include tui-react's ambient `*.css` declaration. Add a shared `types/css.d.ts` at the repo root and include it in the three consuming packages (megarepo, genie, notion-cli) via their genie configs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: replace global Error with tagged WriteSchemaToFileError in notion-cli Global `Error` in Effect's failure channel loses type safety as untagged errors merge together. Use Data.TaggedError for proper discrimination. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: exclude external member dirs from aggregate closure copy aggregateOwnedWorkspaceClosureDirs only filtered by install root dir but not its member dirs, causing double-copy permission errors when member dirs were also copied in the external install root section. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add dedicated CLI storybook stories for mr lock commands Separate story group under CLI/Lock/ with dedicated stories for each lock subcommand (sync, update, apply) including interactive timelines, dry-run variants, error scenarios, and lock input sync display. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * perf: skip fixup phase in pnpm deps FOD The pnpm store tarball doesn't benefit from patchShebangs — it's just an archive of cached packages. Saves ~3-4s per FOD build. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: use semantic sync statuses — recorded/applied instead of locked Split the generic 'locked' status into 'recorded' (lock sync: workspace→lockfile) and 'applied' (lock apply: lockfile→workspace) with mode-specific display text. Dry-run uses "would record"/"to record" and "would check out"/"to check out". Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: model parallel sync execution in UI and stories Replace singular `activeMember` with `activeMembers` array to accurately reflect concurrency=4 parallel sync. Spinners now show for all members syncing simultaneously, with pending items queued behind them. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add prodInstall parameter for production-only pnpm install Adds a `prodInstall` boolean parameter (default false) that appends `--prod` to pnpm install flags, skipping devDependencies. This reduces install time and node_modules size for CLI builds that use `catalog.compose({ mode: 'install' })` to move inherited peers to deps. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * perf: parallelize megarepo CLI operations and add otel span instrumentation Parallelize sequential operations across sync, nix-lock, and store commands: - Orphan symlink removal: unbounded concurrency for fs ops - Nested megarepo sync: concurrency 4 for recursive --all syncs - Nix lock member processing: concurrency 8 across members - Store status/GC: concurrency 8 for repo and worktree analysis Add OpenTelemetry spans for full trace visibility: - megarepo/sync, megarepo/sync/member (with name/source attributes) - megarepo/nix-lock/file, megarepo/nix-lock/nested - git/clone, git/clone-bare, git/fetch, git/fetch-bare - git/create-worktree, git/create-worktree-detached, git/worktree-status Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add sub-spans and span.label attributes for high-quality otel traces - Add megarepo/sync/member sub-spans: clone-or-fetch, resolve-ref, create-worktree - Add span.label attribute to all spans for Grafana waterfall display (e.g. megarepo/sync/member[nanoid], git/worktree-status[/path/...]) - Covers git.ts, member.ts, sync.ts, nix-lock/mod.ts, store/mod.ts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add result.status and action attributes to sync member spans - Add result.status (already_synced, synced, cloned, error, etc.) to megarepo/sync/member span - Add action (clone, fetch, noop, etc.) and bareExists to clone-or-fetch sub-span - Add ref and refType to create-worktree sub-span Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: fix formatting (oxfmt) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: extract commonPnpmPolicySettings to external.ts Move shared pnpm policy settings (nodeLinker, dedupePeerDependents, strictPeerDependencies, supportedArchitectures) from internal.ts to external.ts so downstream megarepos can import them as SSOT. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(lint): resolve all oxlint warnings (explicit-boolean-compare, named-args, jsdoc) Fix 42 pre-existing warnings exposed by --deny-warnings in CI: - explicit-boolean-compare: use === true for boolean ternaries - named-args: convert createLockState/createLockTimeline to destructured args - jsdoc-require-exports: add JSDoc to exported createLockState and WriteSchemaToFileError Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: remove automatic nix store repair on task failure The withStoreRepairRetry() logic triggers a full 1.1TB nix-store --verify --check-contents --repair on ANY task failure, not just corruption. This blocks runners for 40+ minutes on legitimate failures (type errors, test failures, lint). The existing validateNixStoreStep provides fast upfront validation. * fix: add --all to megarepo lock apply in CI, update @effect-atom versions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: update oxc-config pnpm deps hash after @effect-atom version bump Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: update pnpmDepsHash for genie and megarepo CLI builds The @effect-atom version bump changed the pnpm lockfile, invalidating the fixed-output derivation hashes for both CLI packages. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: update lockfileHash and packageJsonDepsHash for genie and megarepo All three Nix hashes (pnpmDepsHash, lockfileHash, packageJsonDepsHash) need updating after @effect-atom version bump changed the lockfile and package.json dependency fields. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: make repo identity explicit, remove legacy escape hatches - Replace heuristic `inferCurrentRepoNameFromPackages` with explicit `repoName` parameter on all projection APIs (aggregateFromPackages, root, tsconfigJsonFromPackages) - Remove `packageJson.aggregate()` and `pnpmWorkspaceYaml.manual()` legacy APIs - Add `extraMembers` as exceptional compromise for non-genie-managed workspace members (e.g. livestore standalone examples) - Remove `PnpmPackageClosureConfig` and `AggregatePackageJsonInput` from top-level runtime exports; keep PnpmPackageClosureConfig in genie/external.ts as documented exceptional export for downstream workspaceMember() factories - Update docs/changelog to accurately reflect current API surface and frame extraMembers as exceptional, not default Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: make type-aware oxlint depend on pnpm:install When tsconfig is provided for type-aware linting, tsgolint needs node_modules to resolve external types. Without this dependency, lint:check:oxlint runs before pnpm:install in CI, causing all external types to resolve as 'error' types and triggering hundreds of false positive no-redundant-type-constituents violations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: format genie runtime files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: use targeted nix-store repair instead of full-store scan Replace `nix-store --verify --check-contents --repair` (scans entire store, 250K+ paths / 1.1TB) with `nix-store --repair-path` targeting only the invalid devenv path. The full-store scan causes nix-daemon D-state IO blocking, starving all concurrent CI jobs on the runner. * feat: redesign CLI commands — fetch/apply/lock three-command model Replace the old workspace/lock_sync/lock_update/lock_apply mode system with a clean three-command data flow model: - `mr fetch` — Remote → Lock (fetch upstream refs, resolve commits, write lock) - `mr apply` — Lock → Workspace (create worktrees, symlink, nix lock sync, generators) - `mr lock` — Workspace → Lock (record current HEAD commits) - `mr fetch --apply` — fetch then apply (daily driver) Key changes: - SyncMode: 'fetch' | 'apply' | 'lock' replaces old 4-mode system - applyAfterFetch pattern: fetch runs silently, then apply renders output - mergeFetchErrors: fetch errors surface through apply results for better UX - Orphan removal, nix lock sync, generators guarded to apply mode only - Nested --all recursion correctly handles fetch-then-apply per nested megarepo - All 44 integration tests passing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add root workspace patch coverage validation Packages declaring pnpm.patchedDependencies now trigger validation at the workspace root level — pnpmWorkspaceYaml.root() checks that all patch keys from the workspace closure are covered by the root config. Also refines recompose-patches to skip private packages (workspace root handles patches for them), and adds pnpm.patchedDependencies to @overeng/utils so the requirement is grounded in package metadata. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: restructure storybook stories to match CLI command hierarchy - Reorganize SyncOutput stories: CLI/Sync/* and CLI/Lock/* → CLI/Fetch/*, CLI/Apply/*, CLI/Lock/* matching the actual fetch/apply/lock commands - Add command prop to all TuiStoryPreview components showing the mr CLI command in a powerline prompt (e.g. "mr fetch --all --verbose") - Add cwd prop to all stories matching each story's workspace root path - Consolidate dryRun: replace separate DryRun stories with a dryRun control arg toggle (Pin, Store/Fix, Store/GC, Fetch/Apply/Lock) - Delete PinOutput/DryRun.stories.tsx (merged into Success.stories.tsx) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: move border-radius to outer wrapper so corners round the full component Previously borderRadius was on containerStyles (inner content panes), causing rounded corners between the powerline bar and terminal content. Now the outer wrapper clips all children, rounding only the outer edges. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: make powerline prompt text selectable Remove userSelect: 'none' so users can copy the command text. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: remove unused imports and dead code to fix CI lint/typecheck Remove leftover unused imports, declarations, and dead code from recent CLI redesign refactor that caused CI failures. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: wire ref sync, pre-flight checks, and fix lock file bugs - Wire ref sync into syncNixLocks: propagate branch refs from megarepo.lock to all 4 downstream file types (flake.nix, devenv.yaml, flake.lock, devenv.lock) - Wire pre-flight hygiene checks into mr lock, mr apply, mr pin with --no-strict flag - Fix extractLockFileInputs to filter to direct inputs only (skip transitive deps) - Fix broken_worktree path parsing to handle refs/tags/ and refs/commits/ paths - Add fixStoreIssues and parseWorktreeRef tests Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add --porcelain flag to mr store worktree new Outputs only the worktree path for scripting: cd $(mr store worktree new owner/repo --ref branch --porcelain) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style: apply lint fixes (explicit boolean comparisons, toSorted, named args) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style: add JSDoc comments, refactor to named args, fix remaining lint - Add JSDoc to all exported declarations (jsdoc-require-exports) - Refactor getByDotPath, setByDotPath, updateNixFlakeUrl, parseGitPath to use named args pattern (named-args) - Fix remaining explicit-boolean-compare in stories and source files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: add tagged union types for nix lock sync output (Phase 6) Introduces three distinct update types for lock sync results: - RevUpdate: mechanical commit SHA propagation (dim in output) - RefUpdate: intentional branch/ref changes (cyan highlighted) - SharedSourceUpdate: shared lock source propagation (e.g. devenv) Schema, view, fixtures, stories, and orchestration all updated. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: handle null/undefined in updateNixFlakeUrl with exactOptionalPropertyTypes The named-args refactoring exposed exactOptionalPropertyTypes issues where null/undefined were passed as optional property values. Fix by explicitly allowing null|undefined in the updates type and using null-coalescing checks in the implementation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: remaining polish — auto-detect nested, preflight view, status labels, quality fixes - Auto-detect nested megarepos by scanning for megarepo.json (Phase 4) - Add PreflightFailed state with issue list, mr store fix hint, --no-strict escape hatch - Add preflight stories (apply/lock failures, errors-only, single issue) - Add LockRequired and WithLockSync stories for mr apply - Add DepsOutput error stories - Mode-aware status labels: "fetched"/"already up to date" in fetch mode - Rename NixFlakeUrl scheme → _tag discriminant (project conventions) - Change updateNixFlakeUrl null → undefined removal sentinel Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style: add JSDoc to exported lock sync update type aliases Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: resolve 5 view bugs in LockSyncSection rendering - Add flexDirection="column" to outer Box (fixes verbose tree not rendering) - Add ref/rev type labels to LockFileUpdateLine - Include sharedSourceUpdates targetCount in member count - Update summary wording to "Nix lock sync: N updates across M members" Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: resolve remaining lint issues (explicit-boolean-compare, unused params, named-args, format) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: verbose tree rendering + storybook control gaps Root cause: paddingTop={1} on LockSyncSection Box caused yoga height=1, and renderTreeSimple clips content at yoga-computed height. Text nodes have zero height in yoga, so the box only had room for 1 line (padding). Fix: replace paddingTop with explicit <Text> </Text> empty line. Also adds missing storybook controls: - --all toggle on lock/Results and apply/Results stories - --dryRun toggle on StoreOutput/Fetch stories Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: complete storybook control audit — add missing --force, --verbose, --porcelain Adds missing storybook controls across all renderers: - --force on all SyncOutput stories (fetch/apply/lock) - --verbose on Fetch/Issues stories - --porcelain on StoreOutput/WorktreeNew stories - --no-strict skipped (requires renderer schema changes) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: use classifyRef for tag/commit ref validation in store hygiene validateStoreMembers previously only skipped ref_mismatch checks for 40-char commit SHAs, causing false positives for tag refs (e.g. v1.0.0) in detached HEAD worktrees. Now uses classifyRef to correctly skip both tags and commits. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: update obsolete commands, apply checkout, dedup, and path member handling - Update megarepo.nix task definitions to new command model (mr fetch/apply/lock) - Update ci-workflow.ts to use mr fetch --apply and mr apply - Fix apply mode to use locked commit instead of bare repo branch tip - For newly created branch worktrees in apply mode, fast-forward to locked commit - Share visited set in applyAfterFetch nested fetch calls (dedup fix) - Skip local path members in lock mode (nothing to record) - Fix storybook atom state reset when controls change - Fix Results.stories.tsx force control dependency Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: update all documentation to new command model (fetch/apply/lock) Replace old command references across 8 documentation files: - mr sync → mr fetch --apply - mr lock sync → mr lock - mr lock update → mr fetch --apply - mr lock apply → mr apply Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: revert incorrect path member skip and dedup visited sharing - Revert "skip local path members in lock mode" — lock mode needs to record their current commit for reproducibility - Revert sharing visited set in applyAfterFetch nested fetch — the fetch marks megarepos as visited, causing the subsequent apply to skip them Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: format markdown and source files (oxfmt) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: split sync.ts into engine.ts, apply.ts, fetch.ts, lock.ts Each command gets its own file mirroring the three-command model. Fix missing execCommand re-export in commands/mod.ts that caused CLI crash. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: update remaining legacy mr sync references to new command model Update run.sh test harness, stories, and context docs to use mr fetch --apply instead of mr sync. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat: rename devenv tasks to match CLI model and detect broken worktrees Rename megarepo devenv tasks (lock:sync→lock, lock:update→fetch-apply, lock:apply→apply) and add broken worktree detection in store commands. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: add JSDoc comments to exported command constants (oxlint) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: format store/mod.ts and store.ts (oxfmt) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: propagate nested sync failures instead of silently swallowing The catchAll in --all recursion now surfaces the error as an 'error' member result so collectSyncErrors reports it to the user. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(nix): resolve mkPnpmCli root patch files via workspaceSources Root patchedDependencies entries pointing into workspaceSources paths (e.g. repos/effect-utils/...) were not found during workspace materialization because copyPatchedDependencyFilesCmd used the pre-overlay workspaceRootPath. Add copyResolvedPatchFilesCmd which parses patch paths from the lockfile at Nix eval time and resolves each through absoluteSourcePathFor, using the same source-resolution logic as copyFileCmd/copyDirCmd. This ensures patch files under workspaceSources prefixes are found in the correct source root. Also add chmod before cp in both patch copy functions for idempotency when root and external install root patches target the same path. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Johannes Schickling <schickling.j@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Fixes #20