Commit 7180dc5806
Verified · cmc
Layout: unified · split
README.md +9 −5
| @@ -1,15 +1,16 @@ | |||
| 1 | # Orgstar | 1 | # Orgstar |
| 2 | 2 | ||
| 3 | A native macOS editor for org-mode files, with an iOS app for the agenda and capture. | 3 | A native macOS editor for org-mode files, with an iOS app for iPhone and iPad. |
| 4 | 4 | ||
| 5 | The files are the source of truth: Orgstar edits them in place and leaves | 5 | The files are the source of truth: Orgstar edits them in place and leaves |
| 6 | every byte you didn't change as it was, so Emacs and sync tools can work on | 6 | every byte you didn't change as it was, so Emacs and sync tools can work on |
| 7 | the same folder. | 7 | the same folder. |
| 8 | 8 | ||
| 9 | Status: macOS v1, design phases 1–6: editing with Emacs, Mac and Doom keys, | 9 | Status: macOS v1, design phases 1–6: editing with Emacs, Mac and Doom keys, |
| 10 | agenda, table formulas, Babel, export, capture, clocking, board, themes and | 10 | agenda, table formulas, Babel and tangling, export, capture, clocking, board, |
| 11 | buffers. Owed: the M1 Air gate run and the VoiceOver check. iOS (phase 7): | 11 | themes and buffers. Owed: the M1 Air gate run and the VoiceOver check. iOS |
| 12 | agenda and capture, Simulator builds only so far. | 12 | (phase 7): the editor, agenda, capture, search, clocking, reminders, export |
| 13 | and tangling, Simulator builds only so far. | ||
| 13 | 14 | ||
| 14 | ## Build and run | 15 | ## Build and run |
| 15 | 16 | ||
| @@ -25,12 +26,15 @@ searches, ⇧⌘A shows the agenda. In the editor, TAB on a heading cycles its | |||
| 25 | folding and Shift-TAB cycles the whole file. Orgstar opens `.org` files from | 26 | folding and Shift-TAB cycles the whole file. Orgstar opens `.org` files from |
| 26 | Finder once the app has been launched. | 27 | Finder once the app has been launched. |
| 27 | 28 | ||
| 29 | C-c C-v t tangles the file's source blocks into the files their `:tangle` | ||
| 30 | header names, as `org-babel-tangle` does. | ||
| 31 | |||
| 28 | `org-protocol://capture?template=…&url=…&title=…&body=…` and | 32 | `org-protocol://capture?template=…&url=…&title=…&body=…` and |
| 29 | `org-protocol://store-link?url=…&title=…` links work as in Emacs, so browser | 33 | `org-protocol://store-link?url=…&title=…` links work as in Emacs, so browser |
| 30 | bookmarklets written for org-protocol work unchanged. Shortcuts has a | 34 | bookmarklets written for org-protocol work unchanged. Shortcuts has a |
| 31 | "Capture to Orgstar" action that files text with a capture template. | 35 | "Capture to Orgstar" action that files text with a capture template. |
| 32 | 36 | ||
| 33 | The iOS app (agenda and capture, iOS 26) builds for the Simulator: | 37 | The iOS app (iOS 26) builds for the Simulator: |
| 34 | 38 | ||
| 35 | ```sh | 39 | ```sh |
| 36 | scripts/build-ios-app.sh # builds .build/ios-app/Orgstar.app | 40 | scripts/build-ios-app.sh # builds .build/ios-app/Orgstar.app |
Sources/OrgstarMobile/OrgstarMobileApp.swift +5 −2
| @@ -132,9 +132,12 @@ struct RootView: View { | |||
| 132 | } | 132 | } |
| 133 | } | 133 | } |
| 134 | .clockAccessory(model.clock.running, perform: clock) | 134 | .clockAccessory(model.clock.running, perform: clock) |
| 135 | .overlay(alignment: .top) { | 135 | // Above the tab bar, clear of every screen's toolbar. |
| 136 | .overlay(alignment: .bottom) { | ||
| 136 | if let message { | 137 | if let message { |
| 137 | Text(message).font(.callout).padding(8).frame(maxWidth: .infinity).background(.bar) | 138 | Text(message).font(.callout).padding(.horizontal, 14).padding(.vertical, 8) |
| 139 | .background(.regularMaterial, in: Capsule()) | ||
| 140 | .padding(.bottom, 150) | ||
| 138 | .onTapGesture { self.message = nil } | 141 | .onTapGesture { self.message = nil } |
| 139 | .task(id: message) { | 142 | .task(id: message) { |
| 140 | try? await Task.sleep(for: .seconds(4)) | 143 | try? await Task.sleep(for: .seconds(4)) |