oficina / sheets Public

Clone
git clone https://amadan.net/oficina/sheets

Plain git — no account needed to clone.

Download

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:

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:

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.