Mobile UI: bottom tab navigation + auto-build APK on push
The Library crammed five text nav-links into a non-wrapping row with no bottom navigation — unusable on phones. Restructure the primary screens into a bottom tab bar: - Add src/app/(tabs)/_layout.tsx: <Tabs> with 5 tabs (Library, Search, Study, Ask, Settings) with emoji icons and the accent active tint. - Move index/search/study/ask/settings into the (tabs) route group; the parens keep URLs unchanged (/, /search, /study, /ask, /settings). - Root _layout becomes a Stack hosting (tabs) (headerless) plus the secondary pushed screens (record, transcript/[id], courses, quiz, bibliography), each with a back-button header. - Drop the per-screen <Stack.Screen> headers from the moved tabs (titles now come from Tabs); relocate Study's "Export Anki" action into the body. - Library: remove the cramped header link-row and duplicate title; add a "nothing uploaded" subheader and a Courses link. Verified at 375px: tab bar pinned to the bottom, 5 even tabs, navigation between tabs works. tsc clean, web export OK, 279 tests pass. CI: build-apk now runs automatically on every push to master (after deploy-web), so the APK at /wisp.apk tracks master instead of being frozen at a stale tag. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -7,12 +7,12 @@
|
||||
# `docker compose` simply builds and (re)creates the `wisp` container on the host.
|
||||
#
|
||||
# Triggers:
|
||||
# push to master -> test, then deploy-web
|
||||
# push to master -> test, then deploy-web, then build-apk
|
||||
# pull_request -> test only
|
||||
#
|
||||
# Required repo secrets (Settings -> Actions -> Secrets) — used by the APK job
|
||||
# once it is enabled (see TODO at the bottom): ANDROID_KEYSTORE_BASE64,
|
||||
# ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS, ANDROID_KEY_PASSWORD.
|
||||
# Required repo secrets (Settings -> Actions -> Secrets) — used by the build-apk
|
||||
# job: ANDROID_KEYSTORE_BASE64, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS,
|
||||
# ANDROID_KEY_PASSWORD.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
name: CI
|
||||
@@ -72,11 +72,11 @@ jobs:
|
||||
# with docker create/cp and copy it into the running `wisp` web container so
|
||||
# it is downloadable at https://wisp.briggen.dev/wisp.apk.
|
||||
build-apk:
|
||||
# ONLY on version tags (v*). The native build is heavy (NDK/whisper.cpp) and
|
||||
# slow on the shared prod runner; building it on every push would peg the box
|
||||
# (and degrade the live web apps). Cut a release with: git tag v1.2.3 && git push --tags
|
||||
needs: [test]
|
||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
||||
# Auto-build the APK on every push to master (arm64-only keeps it ~minutes).
|
||||
# Runs after deploy-web so the web updates promptly, then the APK follows and
|
||||
# is published to /srv/wisp/wisp.apk (served at /wisp.apk via the compose mount).
|
||||
needs: [test, deploy-web]
|
||||
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 120
|
||||
steps:
|
||||
|
||||
Reference in New Issue
Block a user