device_io 2.0.0-dev.0
device_io: ^2.0.0-dev.0 copied to clipboard
Cross-platform file picking, saving, sharing, and opening for Flutter. Image and file pickers, save dialogs, OS share sheet, open-with — one API on mobile, desktop, and web.
Changelog — prerelease lane #
2.0.0-dev.0 #
- Breaking: the result family is renamed —
PlatformResult→Outcome,PlatformSuccess→Success,PlatformCancelled→Cancelled,PlatformUnsupported→Unsupported,PlatformFailure→Failed,PlatformPermissionDenied→PermissionDenied. Migration is a mechanical find-and-replace of those six names; fields, semantics, and the sealed hierarchy (PermissionDenied still subtypes Failed) are unchanged. - Added
AssetPicker.pickDirectory— a directory chooser on the five native platforms;Unsupportedon web. - Added
FileSaver.saveInto— silent save into a caller-chosen directory (pairs withpickDirectoryfor pick-once-save-many), with the same name-sanitizing and no-clobber guarantees assave;Unsupportedon web. - Added
FileOpener.open(SaveLocation)— opens what a save returned without destructuring:SavedAtPathopens at its path,SavedByBrowserreturnsUnsupported.
Commits since v1.0.0-dev.0 (8)
- 058fad9 release: v2.0.0-dev.0
- f031eae feat!: Outcome result family; directory pair; location-aware open; test-suite restructure (#24)
- b0162e4 docs: changelog lanes carry the full standard block and the versions marker
- 5a21999 docs: novice-first description and the stable 1.0.0 changelog entry
- 787caf5 ci: debug-ssh adopts the shared resolve-inputs pattern (#23)
- 6b56707 ci: align auto-close mention + upgrade-check job name with the template (#22)
- c547f2f ci: expose the runner input on the release workflow (#21)
- 24caf5b chore: shorten pubspec description to pana's 60-180 char window (#20)
1.0.0-dev.0 #
First prerelease — cross-platform device IO for Flutter: pick, share, save, open. One API on iOS, Android, macOS, Windows, Linux, and web.
Commits since initial (61)
- e17fd02 release: v1.0.0-dev.0
- 533865d chore: drop publish_to none — device_io publishes to pub.dev now (#19)
- 811c3e3 ci: bump whuppi/ci to v2.0.4 (#18)
- bd3e95e ci: bump whuppi/ci to v2.0.3 (#17)
- 1cfb0b5 ci: bump whuppi/ci to v2.0.2 (#16)
- 5ba16c5 ci: bump whuppi/ci to v2.0.1 (#15)
- 52002a0 docs: banner + README polish (#14)
- eb146aa build: adopt whuppi/ci v2.0.0 — dual-compiler web gate (#13)
- 3504b28 chore: adopt whuppi/ci v1.0.8 (#12)
- d35c58f build: adopt the shared platforms gate + shell lint, radar-track pana (#11)
- 54ce174 ci: align dependabot + PR template with the workspace shape (#10)
- c5aaf22 refactor(api)!: role-noun capabilities, sync constructor, sealed SaveLocation (#9)
- f154a1b ci: bump whuppi/ci shared refs to v1.0.5 (#5)
- 4df6595 fix(web-tests): run web suites under dart test to fix the Windows CI hang (#8)
- 8153027 fix: restore file_picker 12-beta — the #6 downgrade broke Android (AGP 9+) (#7)
- d739f29 fix: Windows picker harness paths; downgrade deps off beta; add [P] portability jobs (#6)
- 3d81316 chore(deps): bump share_plus_platform_interface, share_plus and file_picker (#1)
- f667876 chore: add slopfairy config, drop blind-copied MIGRATION.md (#4)
- 332cc3f chore: stamp example/.gitignore to the canonical template (#3)
- 423fae1 ci: bump whuppi/ci to v1.0.1, deploy secrets tooling, team-slug auto-close (#2)
- 554c20f fix: hyphenate the CODEOWNERS team slug (GitHub slugifies underscores)
- b7c7c1e chore: re-stamp the commit-msg hook (generic examples)
- 0c82f96 ci: shared matrix-filter, upgrade-sdk label, wildcard whuppi-ci dependabot group
- 932f767 ci: pass zizmor auditor — ref-pin config, cooldown, documented permissions
- 970bcaf docs: record the shared-CI wiring in roadmap, updating, changelog
- 450c7a1 ci: wire device_io onto the whuppi/ci shared workflows
- f629a5e fix: add the commit-types list the commit-msg hook reads
- 1578431 docs: strip the residual AI-writing tells from the README
- 37f4687 docs: solidify README to the reference standard — collapsibles, shape, tone
- e4be434 chore: stamp AGENTS.md from the workspace stamper; drop premature 'in CI'
- c6a5ec9 docs: README macOS Install — add the Downloads entitlement
- ed56714 docs: macOS Downloads entitlement — a real requirement the smoke surfaced
- 741d04e test(example): journey matrix + integration smoke — the pdf_manipulator layer
- 59835a9 docs: test architecture as-built — mirror + real-Chrome runners
- 68df439 test: web adapter suites in real Chrome — instrumented JS surface
- d00a98d test: picker adapter suite — option passthrough, permission mapping, seam
- f406c7f test: native adapter suites — on-disk contracts, share requests, opener protocol
- 65cd653 test: pure-logic suites — result physics, MIME, filesystem safety, laziness
- 307c9ea feat(test): suite foundation — harness, declared-truth fixtures, guards
- bc79ad9 docs: README rewritten to the reference standard
- ef6c9ed style(example): align to the reference example standard
- 653a8b4 docs: silent public mobile saves → WONT_DO (for now), with the real reason
- 8d0a40f docs: roadmap flips + changelog/migration/architecture sync for the capability batch
- 7a73757 feat(example): cover the new surface — video/media picks, multi-file share, saveAs mimeType
- f16a945 feat: lazy web file picks via the File System Access picker
- b467cbd feat: saveAs accepts mimeType — API consistency with the other save methods
- 1d0044d feat: shareFiles (multi-file sheets) + sharePositionOrigin everywhere
- e35cd6b feat: example app — all six platforms, one exhaustive result renderer
- 6c4f4f7 feat: pickVideo, captureVideo, pickMedia, pickMultipleMedia
- becbe1b docs: full documentation + community-file set, pdf_manipulator pattern
- 89acbfe feat: Makefile + pana platform gate — which immediately caught real regressions
- ec5dd92 style: pdf_manipulator conventions — pubspec pattern, final classes,
@immutable, doc examples - dd57c8d chore: drop cross_file — orphaned when the XFile helper was inlined
- 3fddcf4 chore!: file_picker 8→11, share_plus 11→12, test dev dep to SDK ceiling
- 70dd847 fix: audit every Unsupported claim — two were lies, now fixed
- b960f3b refactor: kill the picker's fake platform matrix + five smaller smells
- 741243e refactor: exact permission-code allowlist, atomic staging, unified mime inference
- 0c08adb fix!: deep-audit pass — filesystem safety, error fidelity, lazy web picks, saveAs
- aa1105c feat!: foundational API reshape — typed outcomes, cross-platform opener, plurals, stream share
- 9e80303 fix: strict lints, doc gaps, share delete race, download clobbering, picker null path
- 07207bb chore: initial import of device_io from the whuppi workspace