# Oficina Sheets for Mac, iPhone and iPad

Entirely native SwiftUI editors use the same authenticated Go calculation,
formatting, sealed storage and permission paths as the web application.
No embedded browser editor or second formula engine is used.

Build with Xcode 26.6, Swift 6.2+, and XcodeGen:

```sh
native/scripts/build-mac.sh
native/scripts/build-iphone.sh simulator
```

The macOS bundle is `native/build/Oficina Sheets.app`. Simulator products
are under `native/build/ios`. Device builds use `build-iphone.sh device`
and require `OFICINA_DEVELOPMENT_TEAM` and the team's normal signing setup.
Simulator and device builds use separate DerivedData directories.
`OFICINA_SKIP_PROJECT_GENERATION=1` allows the suite runner to generate the
project once before starting parallel builds.

The shared native transport and Mac packaging tools are pinned to reviewed
revision `a49307c29cf36dff2cf423c3f98b38269ce9a553` of
`https://amadan.net/rastrillo/native`. Both SwiftPM and Xcode resolve that
revision; no sibling development checkout is required.

Select a cell, then edit its formula bar, double-click, or type while the
Mac grid has keyboard focus. Enter saves and moves down; Tab saves and
moves right; Escape discards the focused cell edit. The range field accepts
addresses such as `A1:C10`. Menus provide copy/paste, clear, fill, formatting,
size controls, functions, history, comments, sharing and workbook transfer.
Sort/filter opens a native table preserving each cell's original reference.

Network content uses ephemeral transport. Requested exports stream to a private
temporary workbook and are handed to the system file-save picker; the temporary
file is removed on completion, cancellation or failure. Failed value batches
remain available for retry/discard; window close and Quit protect pending
edits. The app does not claim offline editing or sealed local document caches.

Current web limits remain visible: a single worksheet, a 500-row/200-column
grid window, 500-cell paste limit, first-worksheet XLSX/XLSM import up to
20 MiB, and no undo for formatting or sizing. Formula evaluation and number
display come from the Go server. Charts, conditional-format rule editing,
structural row/column changes and additional worksheet editing do not exist
in the web baseline and are not represented as finished features here.

Verification:

```sh
swift test --package-path native/apple
go test ./...
```

`SheetsReview` and `SheetsReviewPhone` are separate, unshipped review targets.
Their fixture server uses temporary databases and ordinary authenticated
sessions. Production entry points never contain fixture credentials.
See the native design spec and review records for exercised coverage;
compiling a target alone does not establish editing parity.
