This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# Continuation brief
|
||||
|
||||
## User objective
|
||||
|
||||
Replace the routine act of opening mobile file attachments in Google/Microsoft apps with an
|
||||
account-free local viewer. Android first; preserve an iOS path through reusable core logic.
|
||||
Do not turn this into a storage cloud or a new full Office suite as the first deliverable.
|
||||
|
||||
## Current source
|
||||
|
||||
Read `README.md`, `FEATURES.md`, `ARCHITECTURE.md`, `SECURITY.md`, `BUILD.md` and `VALIDATION.md`.
|
||||
Android Kotlin/Compose implementation, isolated PDF service, JVM ZIP adapter and genuine common
|
||||
Kotlin reading-preview parsers are present. 112 offline core/JVM checks passed. Android and Apple
|
||||
builds have not completed; Android bootstrap attempts fail before compilation. The archive contains no APK and no LibreOffice binary.
|
||||
|
||||
## Browser addition in 0.2.0
|
||||
|
||||
Read `BROWSER.md` and `BROWSER_ACCEPTANCE.md`. Native SAF folder browsing and a separate GET_CONTENT
|
||||
picker are implemented, with APP_FILES/directory VIEW registration. Shared browser models, sort/filter,
|
||||
MIME/selection policy and streamed-copy limits are in commonMain. Android adapters own grants, metadata,
|
||||
opt-in thumbnails and copied FileProvider results. Exported activity extras are sanitized before
|
||||
SavedStateHandle defaults are created. Do not remove that protection or forward directory grants.
|
||||
|
||||
No broad storage access, all-files permission, raw-path enumeration, file mutation, persistent picker
|
||||
result or replacement system DocumentsUI is implemented. Android 11+ root/Downloads restrictions are
|
||||
intentional and explained in the UI. The debug-only fixture DocumentsProvider is for tests only.
|
||||
|
||||
## First actions
|
||||
|
||||
Bootstrap the official checksum-verified Gradle wrapper on a connected build machine; install the
|
||||
pinned Android SDK/JDK tooling; resolve/build/test/lint. Fix all actual compile/runtime issues before
|
||||
extending formats. Run `ViewerSmokeTest`, `BrowserIntegrationTest`, and the manual distinct-UID real-provider flows. Preserve known limitations
|
||||
in the UI and documentation. Update the validation report only with commands actually run.
|
||||
|
||||
## Non-negotiable boundaries
|
||||
|
||||
Keep originals read-only; explicit copy/export/share only. Do not add INTERNET, all-files access,
|
||||
telemetry or account requirements to solve a document-opening problem. A selected provider may
|
||||
have independent networking. Do not execute scripts/macros/formulas or load external resources.
|
||||
Keep input/output/ZIP/XML/repetition limits enforced during parsing. Never extract archive paths to
|
||||
the filesystem. Preserve capability/fidelity labels and explicit error recovery.
|
||||
|
||||
Keep Android types out of commonMain. `platform-jvm` is not the iOS implementation. Use the configured
|
||||
Apple framework and build a native ZIP/file/PDF adapter later. Do not call an untested interface or
|
||||
placeholder native bridge an implemented engine.
|
||||
|
||||
## Known areas for review
|
||||
|
||||
Custom preview XML parser is bounded but not schema/namespace validating. Office previews omit
|
||||
substantial content. PDF IPC, worker cancellation/lifecycle and actual device memory need testing.
|
||||
Image EXIF/animation handling is absent. Export/share jobs and cache cleanup need race tests. UI
|
||||
strings are currently English and mostly inline; move them to a localization layer before adding
|
||||
languages. Dependency locking/verification/SBOM requires an actual resolved build.
|
||||
|
||||
Follow the implementation slices in `ROADMAP.md`, with measurable acceptance results. Keep source
|
||||
and documentation complete in each release ZIP. Do not commit user documents, local SDK paths,
|
||||
private signing keys or generated build caches.
|
||||
|
||||
## Continuation from 0.2.3
|
||||
|
||||
Current requested baseline: Gradle 8.14.5, installed JDK 17, Kotlin 2.2.21, AGP 8.11.1.
|
||||
All sources and SAF-D1 diagnostics are integrated; no patch step remains. Check
|
||||
`docs/VALIDATION.md` before claiming build/device success. The persistent folder
|
||||
failure is unresolved; obtain the exact new message after confirming the 0.2.3 /
|
||||
SAF-D1 footer. Do not infer permission failure from retained-grant=false alone.
|
||||
Do not upgrade the build toolchain or add a duplicate root Kotlin JVM plugin to
|
||||
investigate the storage-provider issue. Current pins are checked offline by
|
||||
`scripts/check-build-config.py` as well as by Gradle settings at configuration time.
|
||||
Reference in New Issue
Block a user