Skip to content

chore(deps)(deps-dev): Bump vitest from 2.1.9 to 4.1.5#7

Closed
dependabot[bot] wants to merge 149 commits into
mainfrom
dependabot/npm_and_yarn/vitest-4.1.5
Closed

chore(deps)(deps-dev): Bump vitest from 2.1.9 to 4.1.5#7
dependabot[bot] wants to merge 149 commits into
mainfrom
dependabot/npm_and_yarn/vitest-4.1.5

Conversation

@dependabot
Copy link
Copy Markdown

@dependabot dependabot Bot commented on behalf of github May 4, 2026

Bumps vitest from 2.1.9 to 4.1.5.

Release notes

Sourced from vitest's releases.

v4.1.5

   🚀 Experimental Features

   🐞 Bug Fixes

    View changes on GitHub

v4.1.4

   🚀 Experimental Features

   🐞 Bug Fixes

    View changes on GitHub

v4.1.3

   🚀 Experimental Features

... (truncated)

Commits
  • e399846 chore: release v4.1.5
  • 7dc6d54 Revert "fix: respect diff config options in soft assertions (#8696)"
  • 9787ded fix: respect diff config options in soft assertions (#8696)
  • 325463a fix(ast-collect): recognize _vi_import prefix in static test discovery (#10...
  • 0e0ff41 feat(coverage): istanbul to support instrumenter option (#10119)
  • 663b99f fix: alias agent reporter to minimal (#10157)
  • 122c25b fix: fix vi.defineHelper called as object method (#10163)
  • 6abd557 feat(api): make test-specification options writable (#10154)
  • 596f739 fix: project color label on html reporter (#10142)
  • 9423dc0 fix: --project negation excludes browser instances (#10131)
  • Additional commits viewable in compare view
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for vitest since your current version.


giuseppealbrizio and others added 30 commits May 3, 2026 22:19
Locks the V1 scope, stack, monorepo structure, data model, key flows,
PTP layer extraction strategy, AI agent design, camera compatibility
approach, ptpcamerad workaround, security posture, testing strategy,
and license model. 8 open questions left explicit for resolution
before the implementation plan is written.

Stack aligned with formray engineering-guidelines/12-technology-stacks.md:
React 19 + TypeScript + Vite + Tailwind v4 + Zustand + Vitest + Zod.
PTP layer forks filmkit (MIT, validated on user's X-S20 during
brainstorming session). V2 reserved for Tauri 2.0 desktop wrapper.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Self-contained adversarial-review prompt for independent validation
of the V1 design spec. Saved as project artifact for reproducibility
of the brainstorming back-and-forth.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Applies Codex review R1 with the following major changes:

Blockers:
- B1: §6.4 uses Fuji vendor opcodes 0x900C/0x900D (not standard PTP),
  RAF object format 0xF802, filename FUP_FILE.dat. Re-validation
  required on X-S20.
- B2: macOS demoted to experimental/beta in V1. V1 happy-path
  platforms = Linux + Windows + Android Chrome. macOS first-class
  support = V2 (Tauri helper). Chosen over pulling V2 into V1
  (would break timeline).
- B3: Privacy contradiction fixed. RAF preview = local-only;
  AI reference images = sent to Anthropic with explicit per-image
  consent + EXIF strip + size cap. API key = session-only by default.
- B4: Atomic rollback claim removed. Replaced with pre-flight checks
  + backup-before-write + fail-loud + restore-from-backup-on-demand.
- B5: .ffr.json declared as creative-recipe subset, not lossless
  preset. Lossless capture deferred to V2.

High items addressed:
- H1: capabilitySetId = cameraModel + firmwareVersion (not generation)
- H2: PtpTransport DI, Uint8Array I/O, AbortSignal, typed errors,
  split @filmfork/ptp-fuji + @filmfork/ptp-fuji-webusb
- H3: pinned-commit fork, "independent fork, not endorsed" language
- H4: API key session-only default, persona opt-in
- H5: URL recipes cannot push to camera in one click
- H6: AI framed as starting recipe with confidence indicators
- H7: §16 acceptance traceable 1:1 to §2 scope
- H8: WCAG 2.2 AA, en + it i18n
- H9: seed list = originals + explicit permissions only
- H10: project renamed FilmFork (working title); FujiComp deprecated
  for trademark exposure

Plus all M1-M8 and L1-L3 items, schema migrations, error taxonomy,
diagnostic bundle, library export/import, browser matrix.

Timeline revised from "8-10 weeks" to "10 weeks honest + 2 weeks
buffer" given accepted scope cuts.

Spec grew 510 -> 864 lines.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Preserves Codex R1 output verbatim for traceability
- R2 prompt asks Codex to verify R1 fixes were actually applied,
  catch new issues introduced by the rewrite, and respect locked
  decisions (B2 macOS-beta, B5 creative-recipe, H10 FilmFork name,
  TS-not-Rust V1 stack)
- Targets specific R2 risks: schema additions, vendor opcode
  completeness, backup-model gaps, error taxonomy completeness,
  AI confidence pseudo-precision, package split testability,
  firmware-keyed capability set fallback, macOS workaround safety,
  CSP coverage, EXIF stripping reliability, FilmFork TM sanity

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Applies Codex R2 review with the following changes:

Blockers:
- NB1 (schema vs filmkit-writable): §5 trimmed to filmkit-proven
  slot-writable subset only. Removed dRangePriority, longExposureNR,
  lensModulationOptimizer. WB modes reduced to filmkit-supported.
  All removed fields documented as V2 with explicit reinstatement
  criteria. §9 X-S20 capability fixed: monochromaticColor: true.
  §9 adds writableSlotProperties whitelist.

Highs:
- NH1: §6.3 replaces backup with transactional verified backup
  (read-all + verify-count + verify-critical-fields before mark
  verified=true). Restore offered only on verified backups.
- NH2: §9 unknown-firmware policy = read-only by default, writes
  require explicit "experimental" confirmation gate.
- NH3: §6.3 battery preflight replaced with manual UX confirmation;
  auto-check conditional on V1-dev property identification.
- NH4: §6.2 + §11 EXIF strip = JPEG only, decode-to-canvas +
  re-encode + verifier scan, abort on failure. HEIF/PNG rejected.

Mediums:
- NM1: §7 deterministic confidence rubric with post-processing
  downgrade caps in confidence.ts; tests enforce.
- NM2: §6.7 error taxonomy expanded with RafFormatInvalid,
  AiPayloadTooLarge, AiModelUnavailable, PtpTimeout, BackupIncomplete,
  FirmwareUnsupported, WebUSBUnsupported. UsbHttpsRequired renamed
  to WebUSBSecureContextRequired.
- NM3: §6.4 cleanup narrowed to positively-identified handles only.
- NM4: §8 transport contract added (timeout, chunk size, transaction
  ID, DATA/RESPONSE boundary ownership).
- NM5: §10 + docs/macos-beta.md = safer-first sequence before -9.
  Min macOS 13 Ventura.
- NM6: §11 CSP expanded with worker-src + manifest-src; csp-check
  in CI.
- NM7: §15.9-15.16 restructured as ADR-eligible tasks with
  owner/output/pass-fail.

Lows: Zod 4 latest stable, model IDs in config not prose, NOTICE
narrowed to forked packages only.

Locked decisions reaffirmed: B2 macOS-beta, B5 creative-recipe,
H10 FilmFork working title, TS V1 stack.

Spec grew 864 -> 964 lines.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Targeted verification of R2 finding closure (NB1, NH1-4, NM1-7,
NL1-3) plus regression check on R3 changes:
- §5 schema trim (removed dRangePriority, longExposureNR, LMO,
  WB modes; fixed monochromaticColor for X-S20)
- §6.3 transactional verified backup
- §6.4 narrowed cleanup
- §6.7 expanded error taxonomy
- §7 deterministic confidence rubric + EXIF JPEG-only
- §8 transport contract
- §9 writableSlotProperties whitelist + unknown-firmware safety
- §10 macOS safer-first sequence
- §11 expanded CSP
- §13 NOTICE narrowed
- §15.9-15.16 ADR-eligible task structure

Drives toward convergence: yes/no/one-more-round verdict required.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)
Applies all four R3 findings:

Blockers:
- NB1 R3 (DRAuto): §5 dynamicRange enum trimmed to
  ["DR100", "DR200", "DR400"]; DRAuto value moved to deferred V2
  list per filmkit's UI_DR_TO_PRESET only mapping 1/2/3.

Highs:
- NH1 R3 (backup target slot not verified): §6.3 transactional
  backup now begins with explicit slot-selection gate:
  SetDevicePropValue(D18C, targetSlot) + readback verification.
  Mismatch aborts with BackupIncomplete; nothing persisted.

Mediums:
- NM1 R3 (HEIC UX cliff): §6.2 EXIF rejection message is
  platform-aware. iPhone uploads get specific Photos app + Settings
  guidance for converting to JPEG.

Lows:
- NL1 R3 (AutoAmbiencePriority naming): §16 acceptance now requires
  explicit schema↔filmkit codec round-trip test for WB mode name.

§17 changelog added (R3→R4). Convergence statement appended:
spec ready for superpowers:writing-plans.

All locked decisions preserved (B2 macOS-beta, B5 creative-recipe,
H10 FilmFork, TS V1 stack). Timeline confirmed: 10 weeks + 2 buffer.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
R4 prompt is a tight convergence check, not another deep adversarial
review. Verifies four R3 findings (NB1 DRAuto, NH1 backup slot
verify, NM1 HEIC UX, NL1 AmbiencePriority codec) are closed in R4
and the 9 surgical edits introduced no regression.

Output drives to a clean verdict: READY / ONE-MORE-ROUND /
REGRESSION. If READY, recommends invoking superpowers:writing-plans.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)
Convergence reached after 4 rounds of adversarial review. All R3
findings (NB1 DRAuto, NH1 backup slot verify, NM1 HEIC UX,
NL1 AmbiencePriority codec) confirmed FIXED. R4 surgical edits
verified clean. Convergence statement warranted.

Codex flags 3 implementation risks the plan must address:
1. Keep recipe schema and filmkit translator in lockstep
2. Make X-S20 manual hardware validation reproducible (logs/artifacts)
3. Treat WebUSB failure modes as first-class UX, not edge cases

Next: superpowers:writing-plans

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)
User-driven (non-Codex) revision adding the differentiating product
layer without expanding V1 scope into community/backend and without
changing locked stack or scope decisions.

Added:
- §6.7 Camera-side iteration loop (R5 headline workflow): AI proposes
  starting recipe, camera renders real JPEG, user gives natural-language
  feedback, AI changes 1-3 targeted parameters, camera re-renders,
  deterministic diff displayed, history of last 10 iterations
  session-only, save chosen iteration to library.
- §6.8 Recipe diff & visual comparison: deterministic rule-based
  lookup-table-driven (NOT AI) translator with en+it locales.
- §5 Structured `reasoning` upgraded: visualEffect + reason + risk
  + confidence per parameter (was flat `explanation`).
- §5 Local Taste Profile: separate Zod schema, opt-in `enabled`
  gate, structured fields (tone, grain, contrast, preferred sims,
  shooting contexts), 90-day TTL, first-class settings UI, included
  in library export/import.
- §1 innovation positioning: "FilmFork is not only a recipe browser;
  it is a camera-backed look lab for iterating toward a personal
  Fuji style."

Renumbered §6.7 typed errors -> §6.9; cross-references updated.

Locked constraints preserved: TS/React stack, macOS beta in V1,
creative recipe subset, schema = filmkit-proven only, no accounts/
community/backend/managed proxy in V1, privacy posture unchanged
or stronger (iteration RAF stays browser-local; iteration history
session-only).

Timeline: target preserved at 10 weeks + 2 buffer; iteration loop
composes existing surfaces (AI + preview + diff); ~1 week net add
absorbed by buffer.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Validation-focused prompt: verify the five R5 additions
(iteration loop, recipe diff, structured reasoning, Local Taste
Profile, innovation positioning) are coherent and safe. Confirm
locked constraints preserved (TS stack, macOS beta, creative recipe,
filmkit-proven fields, no backend/community/proxy, privacy posture).
Catch cross-reference regressions from §6.7 renumbering. Sanity-check
"absorbed by existing buffer" timeline claim.

Verdict: READY / ONE-MORE-ROUND / REGRESSION / SCOPE-VIOLATION.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Codex R5 review verdict: ONE-MORE-ROUND with two surgical fixes
(locked constraints, schema integrity, cross-references all clean).
R5.1 applies them:

1. §6.7 unknown-firmware gating corrected: render/preview is
   session-scoped D185 conversion-profile write that does NOT
   mutate persistent slot state. Only save→push (step 10) is
   gated by §6.3. User can iterate freely on unknown-firmware
   bodies.

2. Stale "persona" wording replaced with "Taste Profile" in
   §11 threat model, §14 V2 roadmap, §16 acceptance.

3. Sanitization wording strengthened: explicitly specified as
   strip+cap → wrap with sentinel markers → system prompt
   instructs Claude to treat block as data not instructions →
   never interpolated into command surface → local audit log.
   Standard prompt-injection defense pattern made explicit.

R4 → R5 changelog extended with R5 → R5.1 sub-section.
Title bumped R5 → R5.1.

Codex verdict path satisfied: R5 ready for superpowers:writing-plans
after these fixes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
24 tasks covering monorepo bootstrap, recipe-schema package
(Recipe + R5 structured reasoning + R5 TasteProfile + capability
matrix + R5 recipe diff with en+it + schema migrations +
AmbiencePriority codec test), ptp-fuji package (filmkit fork at
pinned commit, PtpTransport DI, FujiCameraSession with state
machine, typed error taxonomy, AbortSignal, FakeTransport),
ptp-fuji-webusb + ai-agent stubs, CI workflow, schema↔translator
lockstep gate (Codex risk #1), and initial documentation.

Plan is split: Phase 1 of 7. Subsequent phases get their own plans
after Phase 1 ships and is reviewed.

Each task has TDD discipline (failing test → run → impl → run →
commit) with full code blocks, exact file paths, exact commands.

Self-review pass: spec coverage mapped, no placeholders, type
consistency verified, R5 additions threaded through tasks 7/8/13/14.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Initialize npm workspaces with Node 22, TypeScript 5.7, Vitest,
ESLint 9, Prettier 3. AGPL-3.0 LICENSE at root.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Strict mode + noUncheckedIndexedAccess + exactOptionalPropertyTypes
per Formray module 12.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Renamed plan's .eslintrc.cjs to eslint.config.cjs (ESLint 9 flat-config
filename convention; .cjs forces CommonJS despite package.json type=module).
Added --no-error-on-unmatched-pattern to lint script so npm run lint exits 0
before any packages/* exists.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
MIT licensed. Strict TS, composite project reference for workspace
incremental builds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Identity, provenance, capability targeting, look-affecting params.
Filmkit-proven slot-writable subset only — no DRAuto, dRangePriority,
LMO, longExposureNR, extra WB modes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces flat explanation with three-field structure per spec §5.
Payload caps preserved (max 40 entries; visualEffect ≤200, reason ≤300,
risk ≤200).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Separate Zod schema, opt-in via enabled gate (default false),
structured preferences (tone/grain/contrast/film sims/contexts/notes),
caps (10 pref sims, 8 contexts, 500-char notes), 90-day TTL field.

Per spec §5 R5.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
X-S20 fw1.10: monochromaticColor=true (R3 fix), writableSlotProperties
whitelist explicit, no unproven fields.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
*10 encoding for tone/color/sharpness/clarity (filmkit convention).
Round-trip preserved for all V1 schema fields.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Locks the AutoAmbiencePriority (schema) ↔ AmbiencePriority (filmkit)
mapping. When ptp-fuji's enum import lands in Phase 1, this test
exposes any silent rename.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
v1 passthrough; future-version recipes rejected with clear update
message. Migration chain extensible for v2+.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deterministic delta-to-phrase lookup. en + it locales, parameter-by-
parameter rules with stable ruleKey identifiers for tests.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Walks 14 flat parameter paths, applies en or it rule table, falls
back to generic phrase if no rule matches. Cross-camera diff flags
capability mismatch instead of diffing silently. Localized summary.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…TREAM

MIT licensed. NOTICE credits filmkit + RE chain. UPSTREAM pins
exact filmkit commit SHA.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Direct copy of filmkit's src/ptp/, src/profile/, src/util/binary.ts.
WebUSB references marked FIXME for Task 17 PtpTransport refactor.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Extracts WebUSB dependency behind a transport interface (refactor of
filmkit copy). Typed errors per spec §6.9 with FilmForkError class.
FakeTransport test helper enables pure-Node testing of session logic.

Adaptations vs upstream filmkit:
- src/ptp/transport.ts: USBTransport class replaced with PtpFraming
  helper that wraps an injected PtpTransport. WebUSB-specific
  connect/disconnect/endpoint-discovery code removed (lives in
  @filmfork/ptp-fuji-webusb in Phase 2). PTP framing methods
  (send/recv/sendCommand/sendDataCommand) now route through the
  transport interface and accept AbortSignal.
- src/profile/preset-translate.ts: RawProp type re-declared inline
  (was imported from filmkit's session.ts which is not part of the
  Task 16 copy set).
- All relative imports use .js extensions (NodeNext +
  verbatimModuleSyntax).
- FilmForkError uses 'override readonly cause' to satisfy
  exactOptionalPropertyTypes; cause is only assigned when defined.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
giuseppealbrizio and others added 25 commits May 5, 2026 11:04
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Codex GPT-5 <noreply@anthropic.com>
Co-Authored-By: Codex GPT-5 <noreply@anthropic.com>
Co-Authored-By: Codex GPT-5 <noreply@anthropic.com>
Co-Authored-By: Codex GPT-5 <noreply@anthropic.com>
Co-Authored-By: Codex GPT-5 <noreply@anthropic.com>
Co-Authored-By: Codex GPT-5 <noreply@anthropic.com>
Co-Authored-By: Codex GPT-5 <noreply@anthropic.com>
Co-Authored-By: Codex GPT-5 <noreply@anthropic.com>
Co-Authored-By: Codex GPT-5 <noreply@anthropic.com>
Co-Authored-By: Codex GPT-5 <noreply@anthropic.com>
Co-Authored-By: Codex GPT-5 <noreply@anthropic.com>
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 2.1.9 to 4.1.5.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.5/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-version: 4.1.5
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot force-pushed the dependabot/npm_and_yarn/vitest-4.1.5 branch from 1eb97ce to b6a86e6 Compare May 5, 2026 18:00
@dependabot @github
Copy link
Copy Markdown
Author

dependabot Bot commented on behalf of github May 5, 2026

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot dependabot Bot deleted the dependabot/npm_and_yarn/vitest-4.1.5 branch May 5, 2026 19: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