Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
330 commits
Select commit Hold shift + click to select a range
9fadf46
docs: verify Whisper model download
alichherawalla Jul 17, 2026
3362708
test: require loaded diffusion models
alichherawalla Jul 17, 2026
10a998a
test: cover full-app image generation
alichherawalla Jul 17, 2026
f5febd2
docs: verify image generation
alichherawalla Jul 17, 2026
7eda980
test: keep downloaded Whisper unloaded
alichherawalla Jul 17, 2026
55be916
docs: verify Whisper stays unloaded
alichherawalla Jul 17, 2026
e59f3c0
test: share downloaded image fixture
alichherawalla Jul 17, 2026
07d61b8
test: identify chat back control
alichherawalla Jul 17, 2026
262a630
test: cover idle STT reclaim
alichherawalla Jul 17, 2026
1b57d35
docs: verify idle STT reclaim
alichherawalla Jul 17, 2026
029b05a
test: cover full-app loading modes
alichherawalla Jul 17, 2026
36e6e9b
docs: verify model loading modes
alichherawalla Jul 17, 2026
207e672
test: cover oversized model recovery
alichherawalla Jul 17, 2026
2604ce6
docs: verify oversized model recovery
alichherawalla Jul 17, 2026
3046ec3
test: cover image fullscreen preview
alichherawalla Jul 17, 2026
819ec4f
docs: verify image fullscreen preview
alichherawalla Jul 17, 2026
44ea01f
test: cover full-app message copy
alichherawalla Jul 17, 2026
7a52987
docs: verify full-app message copy
alichherawalla Jul 17, 2026
c6e0146
test: cover full-app message retries
alichherawalla Jul 17, 2026
1cacd80
docs: verify message retries
alichherawalla Jul 17, 2026
2d734fc
test: cover queued chat turns
alichherawalla Jul 17, 2026
267dc4f
docs: verify queued chat turns
alichherawalla Jul 17, 2026
07ef21f
test: hide truncated Whisper models
alichherawalla Jul 17, 2026
3f026bd
docs: verify truncated model filtering
alichherawalla Jul 17, 2026
d59254b
docs: verify settings destinations
alichherawalla Jul 17, 2026
7c11590
test: cover device memory readout
alichherawalla Jul 17, 2026
2a08362
docs: verify device memory readout
alichherawalla Jul 17, 2026
5ebee0d
test: clear stale generation failures
alichherawalla Jul 17, 2026
25e8286
docs: verify stale failure recovery
alichherawalla Jul 17, 2026
5e330ee
test: isolate concurrent voice downloads
alichherawalla Jul 17, 2026
bd6f894
test: keep chat usable during voice download
alichherawalla Jul 17, 2026
6421722
test: cover empty LAN discovery
alichherawalla Jul 17, 2026
3f26b53
docs: verify download and discovery isolation
alichherawalla Jul 17, 2026
7876073
test: cover remote onboarding completion
alichherawalla Jul 17, 2026
b16fff5
docs: verify remote onboarding completion
alichherawalla Jul 17, 2026
567f9d3
test: eject every resident model type
alichherawalla Jul 17, 2026
c484393
test: expose remote model identity
alichherawalla Jul 17, 2026
b2827e2
docs: verify residency and remote identity
alichherawalla Jul 17, 2026
40c8b81
test: eject one resident model
alichherawalla Jul 17, 2026
81dab77
test: show long reply cutoff
alichherawalla Jul 17, 2026
ce3eb74
test: keep remote text count truthful
alichherawalla Jul 17, 2026
32d1cd6
test: lazy reload ejected text model
alichherawalla Jul 17, 2026
b738f03
test: show support prompt once per session
alichherawalla Jul 17, 2026
be28433
test: show thinking header while streaming
alichherawalla Jul 17, 2026
f088b89
docs: verify memory and generation feedback
alichherawalla Jul 17, 2026
f1b9558
test: verify downloaded model details
alichherawalla Jul 17, 2026
a7bb41e
test: download a second speech model
alichherawalla Jul 17, 2026
d65a611
test: preview pending image attachment
alichherawalla Jul 17, 2026
2f7ccf2
test: regenerate image turns
alichherawalla Jul 17, 2026
2d1857b
docs: verify model and image journeys
alichherawalla Jul 17, 2026
99b7f01
test: stop microphone on chat exit
alichherawalla Jul 17, 2026
935ac34
test: render voice mode transcripts
alichherawalla Jul 17, 2026
8b9810a
test: apply top p from settings
alichherawalla Jul 17, 2026
9c13273
test: apply cpu thread setting
alichherawalla Jul 17, 2026
1d65040
test: apply model batch size
alichherawalla Jul 17, 2026
d4111bf
test: apply flash attention setting
alichherawalla Jul 17, 2026
f2824f7
docs: verify voice and inference settings
alichherawalla Jul 17, 2026
ed52a35
test: recover from full context window
alichherawalla Jul 17, 2026
c28893d
test: enforce minimum image size
alichherawalla Jul 17, 2026
c4fbb29
test: route voice requests to image
alichherawalla Jul 17, 2026
723dea1
test: reset image generation settings
alichherawalla Jul 17, 2026
32275d3
test: keep image settings surfaces aligned
alichherawalla Jul 17, 2026
07fab4a
docs: verify image and context settings
alichherawalla Jul 17, 2026
3d6e337
test: cover voice calculator journey
alichherawalla Jul 17, 2026
64ddf68
test: show generated images in gallery
alichherawalla Jul 17, 2026
e897a52
test: verify image warmup messaging
alichherawalla Jul 17, 2026
64cfcc4
docs: verify voice tools and image gallery
alichherawalla Jul 17, 2026
0139106
test: stop voice generation cleanly
alichherawalla Jul 17, 2026
2960bc0
test: grant first photo attachment
alichherawalla Jul 17, 2026
218fd0b
fix: explain denied photo access
alichherawalla Jul 17, 2026
e8a9e99
test: answer questions about images
alichherawalla Jul 17, 2026
f90781c
test: keep litert vision affordance stable
alichherawalla Jul 17, 2026
39e2636
test: refuse images for text-only models
alichherawalla Jul 17, 2026
46de300
docs: verify voice and vision journeys
alichherawalla Jul 17, 2026
5fd866a
test: keep text and whisper coresident
alichherawalla Jul 17, 2026
2e23edf
test: keep sidecars with heavy text
alichherawalla Jul 17, 2026
71ff686
test: reclaim speech after voice turn
alichherawalla Jul 17, 2026
9836bde
docs: verify sidecar residency journeys
alichherawalla Jul 17, 2026
2323cab
fix: preserve maximum text settings
alichherawalla Jul 17, 2026
528c066
test: preserve legacy persisted schemas
alichherawalla Jul 17, 2026
3e7aa78
test: recover from partial startup storage
alichherawalla Jul 17, 2026
fc0444a
test: preserve committed data on interrupted writes
alichherawalla Jul 17, 2026
ad81638
test: isolate optional pro startup failures
alichherawalla Jul 17, 2026
354ea33
fix: enforce app lock before navigation
alichherawalla Jul 17, 2026
5a4d809
test: verify first message lazy loading
alichherawalla Jul 17, 2026
7688781
docs: close app-derived p0 audit
alichherawalla Jul 17, 2026
d7e0c3d
test: drain queued downloads after relaunch
alichherawalla Jul 17, 2026
3ec372b
test: verify chat dictation across runtimes
alichherawalla Jul 17, 2026
633dbef
test: verify native thinking tool journey
alichherawalla Jul 17, 2026
e606b7b
docs: record strict p0 journey upgrades
alichherawalla Jul 17, 2026
fe7d4ee
test: reclaim sidecars on memory warning
alichherawalla Jul 17, 2026
8a4ce97
docs: credit memory warning recovery
alichherawalla Jul 17, 2026
8935da8
test: verify queued chat ordering
alichherawalla Jul 17, 2026
ec30416
test: verify reply regeneration branching
alichherawalla Jul 17, 2026
5accc86
test: finish realtime dictation teardown
alichherawalla Jul 17, 2026
d3f3f14
test: verify first litert message
alichherawalla Jul 17, 2026
a6de667
docs: verify first litert response
alichherawalla Jul 17, 2026
c81fc09
test: recover blocked whisper automatically
alichherawalla Jul 17, 2026
2b0a453
docs: verify whisper memory recovery
alichherawalla Jul 17, 2026
03f5fe2
fix: keep edited chat titles coherent
alichherawalla Jul 17, 2026
5ce7597
test: apply temperature to each turn
alichherawalla Jul 17, 2026
f2fc927
docs: verify temperature application
alichherawalla Jul 17, 2026
443cc68
fix: await litert terminal generation state
alichherawalla Jul 17, 2026
0748848
test: apply context length on reload
alichherawalla Jul 17, 2026
9d1d392
docs: verify litert recovery and context
alichherawalla Jul 17, 2026
de1e9fd
test: execute calculator through full app
alichherawalla Jul 17, 2026
2cc0eec
docs: verify calculator tool journey
alichherawalla Jul 17, 2026
7d0f854
test: apply updated system prompts
alichherawalla Jul 17, 2026
34228b4
docs: verify system prompt application
alichherawalla Jul 17, 2026
cb9ae8c
test: execute parallel calculator calls
alichherawalla Jul 17, 2026
64c85b5
test: apply litert sampler changes
alichherawalla Jul 17, 2026
0b02da1
docs: verify sampler and parallel tools
alichherawalla Jul 17, 2026
9214b0a
test: recover malformed tool arguments
alichherawalla Jul 17, 2026
85d544f
test: apply image size and guidance
alichherawalla Jul 17, 2026
bcb0a3b
docs: verify image settings and tool recovery
alichherawalla Jul 17, 2026
ae9eadb
docs: credit strict app lock journey
alichherawalla Jul 17, 2026
ae6588f
test: strip empty thinking from plain replies
alichherawalla Jul 17, 2026
5105675
docs: verify plain reply cleanup
alichherawalla Jul 17, 2026
86e3c62
test: apply image steps per generation
alichherawalla Jul 17, 2026
82f8c44
docs: verify image step application
alichherawalla Jul 17, 2026
acf0c8c
test: keep enhancement prompts free of thinking
alichherawalla Jul 17, 2026
9ba3b0a
docs: verify clean prompt enhancement
alichherawalla Jul 17, 2026
3b33c52
docs: credit strict tool rendering evidence
alichherawalla Jul 17, 2026
cbb8db7
docs: credit strict multimodal turn
alichherawalla Jul 17, 2026
8d8a2ca
test: speak markdown replies as clean prose
alichherawalla Jul 17, 2026
be201b7
docs: verify reply speech journey
alichherawalla Jul 17, 2026
2eea2b8
test: run gguf generation on cpu
alichherawalla Jul 17, 2026
404f613
test: execute datetime through full app
alichherawalla Jul 17, 2026
af1585c
test: execute device info through full app
alichherawalla Jul 17, 2026
cec1812
docs: verify cpu and device tools
alichherawalla Jul 17, 2026
2ddf903
test: cover full-app web search tool journey
alichherawalla Jul 17, 2026
2f9d83e
test: cover enhancement progress in full app
alichherawalla Jul 17, 2026
714e9e3
test: cover full-app project creation
alichherawalla Jul 17, 2026
91b82bf
test: cover full-app remote model replies
alichherawalla Jul 17, 2026
cef42d5
test: cover full-app remote reasoning
alichherawalla Jul 17, 2026
bd6ac49
fix: recover LiteRT vision context overflow
alichherawalla Jul 17, 2026
c1aaf4d
docs: record P1 remote project and vision coverage
alichherawalla Jul 17, 2026
0dbb880
fix: preserve LiteRT thinking across tool calls
alichherawalla Jul 17, 2026
9eb35a8
test(downloads): cover extraction kill recovery
alichherawalla Jul 17, 2026
01c3eb8
fix: accumulate remote parallel tool calls by index
alichherawalla Jul 17, 2026
d831616
test: cover settings reload send race
alichherawalla Jul 17, 2026
d8a9a05
test: cover full-app OpenCL backend
alichherawalla Jul 17, 2026
79a37eb
test: cover loaded model RAM in full app
alichherawalla Jul 17, 2026
06c4cfa
fix: report GPU fallback once per load
alichherawalla Jul 17, 2026
b76a022
fix: reconcile failed image extraction retry
alichherawalla Jul 17, 2026
33f1148
test: cover remote disconnect recovery
alichherawalla Jul 17, 2026
95e4213
docs: close confirmed P1 integration gaps
alichherawalla Jul 17, 2026
d596ecd
test: cover remote thinking tool journey
alichherawalla Jul 17, 2026
31f6e84
test: cover full-app GPU layer control
alichherawalla Jul 17, 2026
be3afa2
docs: credit GPU layers and remote tool reasoning
alichherawalla Jul 17, 2026
b3e8bac
test: cover full-app NPU backend gating
alichherawalla Jul 17, 2026
5f8615d
docs: credit full-app NPU backend coverage
alichherawalla Jul 17, 2026
62fd7be
test: cover kill-mid-generation relaunch recovery
alichherawalla Jul 17, 2026
9b7c7e3
fix: free local model on remote activation
alichherawalla Jul 17, 2026
95bb0f8
test: add deterministic physical device smoke automation
alichherawalla Jul 17, 2026
afe6914
fix: recover clearly from microphone permission denial
alichherawalla Jul 17, 2026
a8a43db
test: cover P1 loading and residency journeys
alichherawalla Jul 17, 2026
27945cf
fix: preserve project documents across relaunch
alichherawalla Jul 17, 2026
8f448e7
fix: resume pending prompts after model selection
alichherawalla Jul 17, 2026
276183f
test: add deterministic physical chat journey
alichherawalla Jul 17, 2026
758ca1d
test: cover download cancellation lifecycle
alichherawalla Jul 17, 2026
58954b7
feat: add coherent conversation rename flow
alichherawalla Jul 17, 2026
a03a8f0
fix: secure remote server lifecycle
alichherawalla Jul 17, 2026
f005a9c
fix: persist chat image attachments durably
alichherawalla Jul 17, 2026
45f2ebb
test: strengthen native boundary harness
alichherawalla Jul 17, 2026
f0c7034
fix: persist LiteRT context compaction
alichherawalla Jul 17, 2026
b8a86db
test: cover gallery deletion journey
alichherawalla Jul 17, 2026
5ec0421
test: prove empty final tool results in full app
alichherawalla Jul 17, 2026
9287c7f
fix: preserve newer download hydration state
alichherawalla Jul 17, 2026
50c283f
fix: recover after deleting resident model
alichherawalla Jul 17, 2026
e18f152
fix: validate local model imports
alichherawalla Jul 17, 2026
892f66c
fix: remove corrupt phantom models
alichherawalla Jul 17, 2026
ca31fa0
test: prove TTS deletion clears residency
alichherawalla Jul 17, 2026
1de55fd
test: cover knowledge base replacement lifecycle
alichherawalla Jul 17, 2026
0c91b18
test: prove remote prompt enhancement in full app
alichherawalla Jul 17, 2026
40e789f
test: prove voice collision and residency journeys
alichherawalla Jul 17, 2026
39f9615
test: replace voice artifact mocks with full app journeys
alichherawalla Jul 17, 2026
75a4519
fix: enforce catastrophic memory survival floor
alichherawalla Jul 17, 2026
85dd40c
test: execute MCP through the full app
alichherawalla Jul 17, 2026
1e2037a
test: forbid mocked Pro modules
alichherawalla Jul 17, 2026
ebc3c17
fix: revoke Pro features live with entitlement
alichherawalla Jul 17, 2026
3d22ebf
test: preserve private chat across app lock
alichherawalla Jul 17, 2026
e94a4cf
test: cover model browse and picker parity
alichherawalla Jul 17, 2026
1cfcde7
test: install bundled embeddings on first KB use
alichherawalla Jul 17, 2026
6bbbb35
test: replace mockist coverage with app journeys
alichherawalla Jul 19, 2026
e219cb0
fix(downloads): remove cancelled queued row immediately
alichherawalla Jul 19, 2026
b86ea8d
chore: sync Pro integration coverage
alichherawalla Jul 19, 2026
1ec7b04
fix: harden secondary recovery journeys
alichherawalla Jul 20, 2026
b6c32f0
test: refresh stability contract fixtures
alichherawalla Jul 20, 2026
6583920
fix: open chat after selecting first model
alichherawalla Jul 20, 2026
3dc0d02
test: align stability contracts with current owners
alichherawalla Jul 20, 2026
ada6142
fix: isolate thinking across tool rounds
alichherawalla Jul 20, 2026
7a32f99
fix: update Pro purchase and OAuth loading
alichherawalla Jul 20, 2026
8edf79e
test: close remaining P2 audit journeys
alichherawalla Jul 20, 2026
2d7f1a0
docs: publish release verification plan
alichherawalla Jul 20, 2026
d98a5e3
docs: retain PR 558 device gates
alichherawalla Jul 20, 2026
782a4b8
fix: close review stability races
alichherawalla Jul 20, 2026
155ef4f
fix: keep download lifecycle state truthful
alichherawalla Jul 20, 2026
384b1e6
docs: map release automation and manual coverage
alichherawalla Jul 20, 2026
eb79e5d
chore: update Pro stability coverage
alichherawalla Jul 20, 2026
88ee3a8
fix: bind llama output budget to context
alichherawalla Jul 20, 2026
4dc911c
test: reconcile stability suite contracts
alichherawalla Jul 20, 2026
4d50de5
test: wait for terminal voice tool state
alichherawalla Jul 20, 2026
b3c6acf
test: synchronize app lock unlock journey
alichherawalla Jul 20, 2026
7ce05b6
fix: keep output token floor module-private
alichherawalla Jul 20, 2026
c19af9a
test: browse settings routes in one journey
alichherawalla Jul 20, 2026
3eb3fdf
test: cover cold Whisper release recovery
alichherawalla Jul 20, 2026
f55aa7c
fix: cancel Whisper load release cleanly
alichherawalla Jul 20, 2026
a6f9c36
test: cover image network retry finalization
alichherawalla Jul 20, 2026
dc43436
test: cover lifecycle with active downloads
alichherawalla Jul 20, 2026
15de0a2
test: cover repeated model swaps and eject all
alichherawalla Jul 20, 2026
d0f2314
test: cover generation under saturated downloads
alichherawalla Jul 20, 2026
f5a9cd1
docs: record commissioned integration coverage
alichherawalla Jul 20, 2026
3e22993
test: cover slide cancel recovery
alichherawalla Jul 20, 2026
34a08bc
test: cover TTS pressure recovery
alichherawalla Jul 20, 2026
6297ba6
test: stabilize resident eject journey
alichherawalla Jul 20, 2026
b1f85a7
test: stabilize tool persistence journey
alichherawalla Jul 20, 2026
2a109ca
test: stabilize image retry transition
alichherawalla Jul 20, 2026
eb58b51
chore: disable pathological pre-push gate
alichherawalla Jul 20, 2026
bc9c38d
test: replace mockist integration suites
alichherawalla Jul 20, 2026
2131083
chore: remove Maestro E2E harness
alichherawalla Jul 20, 2026
56d4df4
chore: add one-command release gate
alichherawalla Jul 20, 2026
64ee69d
docs: add prioritized manual QA walkthrough and release check-off
alichherawalla Jul 20, 2026
3eb2d48
test: prove transient stat error deletes a valid model (G1, red)
alichherawalla Jul 20, 2026
7666900
fix: keep a valid model when validation can't verify it (G1)
alichherawalla Jul 20, 2026
d840f7f
test: prove Load-Anyway refuses on pre-reclaim RAM reading (G3, red)
alichherawalla Jul 20, 2026
76c9767
fix: wait for reclaim before the Load-Anyway survival probe (G3)
alichherawalla Jul 20, 2026
82b1c15
test: prove image thread-reload double-counts resident RAM (G4, red)
alichherawalla Jul 20, 2026
0583cb8
fix: don't double-count an already-resident model on reload (G4)
alichherawalla Jul 20, 2026
966bcb8
test: prove multi-file image download fails on foreground resume (G5,…
alichherawalla Jul 20, 2026
c4500a4
fix: keep a live multi-file image download across resume (G5)
alichherawalla Jul 20, 2026
cd19728
fix: keep a zip image download alive through its unzip window (G6)
alichherawalla Jul 20, 2026
b4eca3c
fix: gate reconcile re-unzip on extraction completeness (G7)
alichherawalla Jul 20, 2026
d930f31
test: prove remote tool call dropped on id-less first chunk (G9, red)
alichherawalla Jul 20, 2026
f52c2be
fix: keep a remote tool call whose id arrives after its index (G9)
alichherawalla Jul 20, 2026
989fe6a
fix: scope reasoning on the forced-final tool round (G10 facet b)
alichherawalla Jul 20, 2026
ff52892
docs: record gap-finding resolution status (G1-G10)
alichherawalla Jul 20, 2026
509876c
docs: add run-order manual test walkthrough CSV (260 rows)
alichherawalla Jul 20, 2026
1c18b23
chore: satisfy lint on the G-series fixes
alichherawalla Jul 20, 2026
db2d4f1
test: reconcile unit tests with the G1/G7 behavior changes
alichherawalla Jul 20, 2026
10d08ea
test: cover isImageModelDirUsable to 100%; re-baseline pro coverage
alichherawalla Jul 21, 2026
572175c
chore: re-enable a fixed pre-push gate; diff-coverage advisory
alichherawalla Jul 21, 2026
179d663
fix: keep package.json in sync with native version in uat.sh
alichherawalla Jul 21, 2026
c805402
docs: correct uat.sh version-sync comment (in-app reads package.json)
alichherawalla Jul 21, 2026
be5d335
feat: show build number alongside version (distinguishes betas)
alichherawalla Jul 21, 2026
48c4c43
chore: drop jest from pre-push (findRelatedTests explodes on App-impo…
alichherawalla Jul 21, 2026
c3764de
fix: eliminate CI jest timeout flakiness (recycle worker + raise test…
alichherawalla Jul 21, 2026
f96a841
test: re-baseline pro coverage to CI's actual (82/75/78/83)
alichherawalla Jul 21, 2026
691102c
ci: call jest binary directly instead of npx (Sonar S6505)
alichherawalla Jul 21, 2026
f6cdeab
ci: clear Sonar new-code security findings on CI config
alichherawalla Jul 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 10 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,10 @@
cache: 'npm'

- name: Install dependencies
run: npm ci

Check warning on line 68 in .github/workflows/ci.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Omitting "--ignore-scripts" allows lifecycle scripts to run during package installation.

See more on https://sonarcloud.io/project/issues?id=off-grid-ai_off-grid-ai-mobile&issues=AZ-DN84eyFpPeHcBIQvw&open=AZ-DN84eyFpPeHcBIQvw&pullRequest=571

- name: Type check
run: npx tsc --noEmit
run: node_modules/.bin/tsc --noEmit

architecture:
# Standing gates: dependency-cruiser (layering, engine DIP, import cycles, orphans — 0 violations,
Expand Down Expand Up @@ -152,10 +152,18 @@
java-version: '17'

- name: Install JS dependencies
run: npm ci

Check warning on line 155 in .github/workflows/ci.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Omitting "--ignore-scripts" allows lifecycle scripts to run during package installation.

See more on https://sonarcloud.io/project/issues?id=off-grid-ai_off-grid-ai-mobile&issues=AZ-DN84eyFpPeHcBIQv0&open=AZ-DN84eyFpPeHcBIQv0&pullRequest=571

- name: Run Jest tests
run: npx jest --coverage --forceExit --runInBand
# NOT --runInBand: a single in-band process accumulates every test's leaked handles/memory
# across ~6800 tests, and late heavy full-app tests get GC-starved and blow their timeout
# (flaky, position-dependent — each passes in ~2s alone). --maxWorkers=1 keeps execution
# SERIAL (no parallel-OOM, the reason in-band was chosen) but runs in a worker that
# --workerIdleMemoryLimit RECYCLES before it bloats, so memory stays bounded. Conclusive fix
# for the timeout flakiness without changing any test.
# Call the installed binary directly (not `npx`, which Sonar S6505 flags for on-demand
# install + lifecycle scripts). Deps are already installed by `npm ci` above.
run: node_modules/.bin/jest --coverage --forceExit --maxWorkers=1 --workerIdleMemoryLimit=1536MB

- name: Install Android NDK
# Configuring the native modules (op-sqlite etc.) needs the pinned NDK; the macOS
Expand Down Expand Up @@ -229,7 +237,7 @@
df -h

- name: Install dependencies
run: npm ci

Check warning on line 240 in .github/workflows/ci.yml

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Omitting "--ignore-scripts" allows lifecycle scripts to run during package installation.

See more on https://sonarcloud.io/project/issues?id=off-grid-ai_off-grid-ai-mobile&issues=AZ-DN84eyFpPeHcBIQv3&open=AZ-DN84eyFpPeHcBIQv3&pullRequest=571

- name: Build Android Debug
run: cd android && ./gradlew assembleDebug
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ fastlane/*.p8

# testing
/coverage
/.artifacts/device-e2e/

# Yarn
.yarn
Expand Down
30 changes: 19 additions & 11 deletions .husky/pre-push
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
#!/usr/bin/env sh
# Fast local pre-push gate. Re-enabled after being disabled (the old hook fanned the push range out
# into ONE jest process PER test file via `xargs -n 1`, and ran Sonar on every push — tens of
# minutes). Fixes: related tests run in a SINGLE jest invocation, and Sonar is left to CI (the
# authoritative full gate). Scoped to the changed files in the push range, so ordinary pushes stay fast.
set -e

ZERO_OID="0000000000000000000000000000000000000000"
ROOT="$(git rev-parse --show-toplevel)"
BIN="$ROOT/node_modules/.bin"

collect_changed_files() {
changed_files=""
Expand Down Expand Up @@ -41,21 +48,27 @@ PUSHED_SWIFT=$(printf '%s\n' "$CHANGED_FILES" | grep '\.swift$' | grep -v 'Pods/
PUSHED_KOTLIN=$(printf '%s\n' "$CHANGED_FILES" | grep -E '\.(kt|kts)$' || true)

if [ -n "$PUSHED_JS" ]; then
echo "▶ Pro real-module gate..."
npm run check:no-pro-mocks

echo "▶ JS/TS lint (push range)..."
echo "$PUSHED_JS" | tr '\n' '\0' | xargs -0 eslint --max-warnings=999
echo "$PUSHED_JS" | tr '\n' '\0' | xargs -0 "$BIN/eslint" --max-warnings=999

echo "▶ TypeScript type check..."
npx tsc --noEmit
"$BIN/tsc" --noEmit

echo "▶ JS/TS tests (related to changed files)..."
echo "$PUSHED_JS" | tr '\n' '\0' | xargs -0 npx jest --findRelatedTests --passWithNoTests
# NOTE: no jest here. `--findRelatedTests` on any App-imported file (a screen, a core service,
# jest.setup) relates to EVERY full-app journey suite — hundreds of tests, tens of minutes: the
# exact "pathological" slowness that got this hook disabled. A pre-push hook must stay fast, so the
# local gate is the quick static checks below; CI runs the full jest suite as the authoritative
# test gate. (Run `npm test` locally when you want the suite before pushing.)

echo "▶ Architecture gate (dependency-cruiser)..."
npm run depcruise

# knip runs in CI (the "architecture" job) as a hard 0-gate, but was NOT in this local hook, so
# unused-export failures only surfaced after a wasted CI round-trip (twice). Run it here too. It
# analyses the whole project (not just the push range), so keep it in the JS block.
# unused-export failures only surfaced after a wasted CI round-trip. Run it here too. It analyses
# the whole project (not just the push range), so keep it in the JS block.
echo "▶ Dead-code gate (knip)..."
npm run knip
fi
Expand All @@ -82,8 +95,3 @@ if [ -n "$PUSHED_KOTLIN" ]; then
echo "▶ Android tests..."
npm run test:android
fi

if [ -n "$PUSHED_JS$PUSHED_SWIFT$PUSHED_KOTLIN" ]; then
echo "▶ Sonar scan..."
npm run sonar
fi
287 changes: 0 additions & 287 deletions .maestro/E2E_TESTING.md

This file was deleted.

9 changes: 0 additions & 9 deletions .maestro/config.yaml

This file was deleted.

Loading
Loading