| … | … | @@ -1,5 +1,23 @@ |
| 1 | 1 | # favela-android |
| 2 | 2 | |
| 3 | **The prototype. The shipping handset app is [`favela-surface-android`](../favela-surface-android).** |
| 4 | |
| 5 | hyper-social #64 settled it in those terms: *"favela-android was the prototype, this is the |
| 6 | full-stack app."* favela-surface-android started as the half of this repo that carried no atproto |
| 7 | dependency, then grew the atproto stack back through `favela-host`, so it is now a superset — and it |
| 8 | is the one with an APK on a handset, native addons over OTA, and releases (0.0.42 at the time of |
| 9 | writing) against this repo's last commit on 2026-08-25. |
| 10 | |
| 11 | Nothing depends on this package. `lib/host/` was copied out of here rather than extracted, which |
| 12 | favela-surface-android records as a debt with this repo as the other half: the first Doze or |
| 13 | foreground-service fix has to land in both places. |
| 14 | |
| 15 | `applicationId` here is `to.favela.android` and there is `to.favela.surface`, deliberately different |
| 16 | so installing one does not replace the other — they hold different identities and different storage. |
| 17 | |
| 18 | What follows is the record of this repo as it stood, and every measurement in it was true when taken. |
| 19 | |
| 20 | |
| 3 | 21 | A **full favela node on a phone** — React Native over a [bare-kit](https://github.com/holepunchto/bare-kit) |
| 4 | 22 | worklet. The phone holds its own DID key, authors and signs its own atproto repo, replicates over |
| 5 | 23 | Hyperswarm and indexes its own appview. |
| … | … | @@ -8,7 +26,7 @@ It **is** favela-web in a WebView — but not a client of a home server, which i |
| 8 | 26 | matters. The phone runs the server. favela-web is embedded in the worklet, serving its pages to |
| 9 | 27 | loopback from an hpp that holds the DID key on this device; nothing renders from a remote host. |
| 10 | 28 | |
| 11 | | ⚠ This reverses the original design, which rendered a hand-written React Native UI over favela-web's |
| 29 | This reverses the original design, which rendered a hand-written React Native UI over favela-web's |
| 12 | 30 | data. That was rebuilt here on 2026-08-11 because the native surface looked nothing like favela and |
| 13 | 31 | could only be brought closer by rebuilding every screen a second time, by hand, to a lower standard. |
| 14 | 32 | Rendering the real pages means every screen favela-web gains arrives on the phone for free — the |
| … | … | @@ -98,6 +116,6 @@ react-native-bare-kit 0.14.5 declares. (Upstream bare-kit has since moved to 0.1 |
| 98 | 116 | 0.14.5 pin is a deliberate divergence to keep the API-30 handset, not a wait for a fix.) Sideloading |
| 99 | 117 | needs "install unknown apps" for your browser. |
| 100 | 118 | |
| 101 | | ⛔ The signing key is durable and kept. Android refuses to upgrade an APK signed with a different |
| 119 | The signing key is durable and kept. Android refuses to upgrade an APK signed with a different |
| 102 | 120 | key, and the only way out is uninstall — which deletes app-private storage, i.e. the node's identity, |
| 103 | 121 | its device chain and its repo. A throwaway debug key would make every rebuild a data-loss event. |