Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
293 commits
Select commit Hold shift + click to select a range
ad4c3d6
issues: #18 expanded to cover Rustler path; verified Rust on iPhone
GenericJam May 13, 2026
44f2e45
issues: #18 NIF source auto-wiring FIXED (iOS) + Android follow-up
GenericJam May 13, 2026
080e620
issues: #15 — Zigler 0.16 host-dev fork landed; iPhone path still pen…
GenericJam May 13, 2026
42b4879
issues: #15 — iOS Zigler foundation landed, isysroot blocker documented
GenericJam May 13, 2026
30a796e
issues: #15 — Zigler iPhone deploy FIXED via fork (verified end-to-end)
GenericJam May 13, 2026
5b2ce5a
issues: file #19 — Android NIF auto-wiring (port the iOS work)
GenericJam May 13, 2026
34f50ee
nif_future + nif_stub_test: catch up with merged iOS wheel-copy fix
GenericJam May 13, 2026
935e355
driver_tab_ios.zig: handle emlx_static alongside sqlite_static
GenericJam May 13, 2026
862d78b
deps: add ex_slop Credo check for AI-generated Elixir patterns
GenericJam May 13, 2026
a2f562d
docs(CLAUDE.md): note ExSlop runs alongside mix credo --strict
GenericJam May 14, 2026
000ff86
refactor: ex_slop mechanical wins in mob
GenericJam May 14, 2026
301e90b
AGENTS.md: add "Don't write this slop" — write-time guidance
GenericJam May 14, 2026
69acd76
bump: erlang 29.0-rc3 → 29.0, elixir 1.20.0-rc.4 → 1.20.0-rc.5
GenericJam May 14, 2026
5d0a52d
Mob.VendorUsb: port the Android NIF surface to Zig (closes mob#6)
GenericJam May 14, 2026
3016bb7
lint: clang-format pass on native sources
GenericJam May 14, 2026
e7f362f
0.6.0
GenericJam May 14, 2026
67471f8
guides/native_extensions.md: summary of mob.enable + mob.add_nif
GenericJam May 14, 2026
2ba1cad
Mob.DNS.configure_pure_beam/1 — pure-BEAM DNS as default for iOS
GenericJam May 14, 2026
b48d993
0.6.1
GenericJam May 14, 2026
79bd96a
docs(permissions): new guide + per-module cross-refs; iOS location ho…
GenericJam May 14, 2026
577bc42
Merge docs/permissions-guide — permissions guide + honest iOS location
GenericJam May 14, 2026
7d3f315
Mob.Camera: live frame stream + shared AVCaptureSession
GenericJam May 15, 2026
8ce0c42
Mob.Bt: Bluetooth Classic peripheral (HFP/SPP/HID)
May 15, 2026
31d2e99
Merge pull request #10 from GenericJam/live-camera-frames
GenericJam May 15, 2026
6e1e122
0.6.2
GenericJam May 15, 2026
928a8dc
camera: rotate session to portrait so YOLO sees an upright scene
GenericJam May 15, 2026
e9796f8
Merge pull request #11 from GenericJam/camera-portrait-rotation
GenericJam May 15, 2026
ba82c87
0.6.3
GenericJam May 15, 2026
3398c4e
Mob.Bt review fixes: drop Jason runtime dep, dedupe encoders, add tests
GenericJam May 15, 2026
c8e95c4
Merge pull request #9 from HeroesLament: Mob.Bt — Bluetooth Classic p…
GenericJam May 15, 2026
9c93d24
0.6.4
GenericJam May 16, 2026
c0eefbf
Mob.GpuView: Metal fragment-shader surface (iOS)
GenericJam May 14, 2026
fb1ddfc
MobGpuView: wrap long swiftlint line in the fragment_main error message
GenericJam May 16, 2026
9857a94
Mob.GpuView: whitelist <GpuView> tag for Android
GenericJam May 16, 2026
6be1ce6
Merge gpuview-ios-rebase: Mob.GpuView (iOS Metal fragment-shader surf…
GenericJam May 16, 2026
def5378
mob_nif.zig: use enif_make_list_from_array for empty BT paired list
GenericJam May 16, 2026
a80408e
PLAN.md: add CI + integration-test plan (3 layers)
GenericJam May 16, 2026
edf0299
ci+docs: add tests + release workflows, CHANGELOG.md, fix HexDocs sou…
GenericJam May 16, 2026
e237b7c
0.6.5
GenericJam May 16, 2026
0f1997a
release.yml: add hex_publish job gated on HEX_API_KEY secret
GenericJam May 16, 2026
9276e84
ci: unblock test.yml — credo + mix_audit fixes
GenericJam May 16, 2026
b863964
ci: run erlfmt under MIX_ENV=dev (the dep's only: :dev)
GenericJam May 16, 2026
bba3b5d
ci: remove onboarding.yml — running these locally instead
GenericJam May 16, 2026
59338d2
release.yml: fix tag pattern — glob, not regex
GenericJam May 16, 2026
2c4c769
release.yml: drive from mix.exs version, drop the manual tag step
GenericJam May 16, 2026
3c89222
ci: per-step idempotency so re-runs back-fill missing pieces
GenericJam May 16, 2026
bc0f24f
Mob.Camera: Android frame stream — CameraX ImageAnalysis path
GenericJam May 16, 2026
d297fe0
Release flow standardisation: RELEASE.md + pre-push hook
GenericJam May 16, 2026
6129f29
Bump to 0.6.6 — release-flow docs + when-to-bump policy
GenericJam May 16, 2026
848014e
RELEASE.md: document mix docs preview + automatic hexdocs publish
GenericJam May 16, 2026
a88135e
Mob.Canvas: document the viewport-scaling contract
GenericJam May 17, 2026
e7b6402
MOB_PLUGINS.md: plugin manifest schema spec
GenericJam May 17, 2026
b974398
Bump to 0.6.7 — Mobile Surface Matrix + plugin spec ride-along
GenericJam May 17, 2026
8d8db15
Fix: button tap target now covers the full padded area (iOS)
GenericJam May 18, 2026
c408e00
Merge: Android camera frame stream + canvas viewport docs
GenericJam May 18, 2026
bf79d65
Bump to 0.6.9 — unblock CI so 0.6.8's camera/canvas work ships to Hex
GenericJam May 18, 2026
150281c
ios mob_beam.m: honour MOB_NODE_SUFFIX env var
GenericJam May 18, 2026
6ef6986
Bump to 0.6.10 — iOS BEAM honours MOB_NODE_SUFFIX
GenericJam May 18, 2026
5a0a5eb
Mob.Sigil: utf8_string preserves non-ASCII bytes in templates
GenericJam May 19, 2026
e671f15
Merge: ~MOB sigil UTF-8 fix
GenericJam May 19, 2026
d582584
Bump to 0.6.11 — ~MOB sigil UTF-8 round-trip fix
GenericJam May 19, 2026
fac4564
Mob.Theme: glass flag + Liquid Glass on iOS 26
GenericJam May 19, 2026
251428f
Merge: Mob.Theme glass flag + Liquid Glass on iOS 26
GenericJam May 19, 2026
9911729
Bump to 0.6.12 — Mob.Theme glass flag + Liquid Glass on iOS
GenericJam May 19, 2026
439bb5c
Glass: use Glass.clear for cards (vs Glass.regular)
GenericJam May 19, 2026
e7d05fb
Merge: Glass.clear for floating-card translucency
GenericJam May 19, 2026
ac17cc1
Bump to 0.6.13 — Glass.clear default for cards
GenericJam May 19, 2026
e1e3031
Mob.Theme: push resolved palette to native via :mob_nif.set_theme/1
GenericJam May 19, 2026
44da397
Merge: BEAM-driven theme push for Compose MaterialTheme
GenericJam May 19, 2026
0905223
Bump to 0.6.14 — Mob.Theme.set/1 pushes resolved palette to native
GenericJam May 19, 2026
6fed5ab
docs: iOS sim BEAM dies on adb host-port collision
GenericJam May 19, 2026
a8a40dc
design: plugin + style + security specs
GenericJam May 19, 2026
94e9577
plan: complete the plugin extraction plan + add rustler test brief
GenericJam May 19, 2026
f8f137b
design: broaden plugin examples beyond Ash
GenericJam May 20, 2026
27c9442
Fix: Column honours fill_height: true (iOS)
C-Sinclair May 18, 2026
290254b
text_field: secure: true for masked password input
C-Sinclair May 18, 2026
11752a4
iOS: file-only :inet_db lookup by default in Mob.App.start/0
C-Sinclair May 18, 2026
0eff5c9
Bump to 0.6.15 — Conor's iOS polish trio + plugin epic design corpus
GenericJam May 20, 2026
e1bfa29
docs: document background execution model
dl-alexandre May 20, 2026
1450882
Bump to 0.6.16 — RUSTLER_NIF_LIB_PATH setenv for rustler on Android
GenericJam May 21, 2026
4f026c8
Bump to 0.6.17 — Mob.Audio.play_at/4 (sample-accurate scheduled playb…
GenericJam May 21, 2026
2bc7aa5
Merge audio-sample-sync — 0.6.17 (Mob.Audio.play_at/4)
GenericJam May 21, 2026
69ec5aa
Bump to 0.6.18 — rename RUSTLER_NIF_LIB_PATH → RUSTLER_BEAM_LIBRARY_PATH
GenericJam May 21, 2026
97e1618
feat: support collocated screen templates
dl-alexandre May 22, 2026
7e6235f
docs: update Android runtime support matrix
dl-alexandre May 22, 2026
cf9c9d0
docs: explain background execution limits
dl-alexandre May 22, 2026
4a9ce5e
removed .DS_Store
clsource May 25, 2026
de87430
docs: improved readme with mermaid and logo
clsource May 25, 2026
fbcd444
docs: add decision log (decisions/ + CLAUDE.md convention)
GenericJam May 25, 2026
158d17a
added warning label
clsource May 25, 2026
e2b085c
Add Mob.data_dir/0 — the writable per-app dir (not MOB_BEAMS_DIR)
GenericJam May 26, 2026
9fe6bc1
DNS: document preresolve as the robust iOS path (cellular-safe)
GenericJam May 27, 2026
13cd621
Merge pull request #32 from GenericJam/dns-system-ns
GenericJam May 27, 2026
2d98417
docs: mark build_system_migration as a historical record (#33)
GenericJam May 27, 2026
6d105e8
Add Mob.Speech text-to-speech capability (#34)
GenericJam May 27, 2026
6910cbe
Merge pull request #30 from NinjasCL-labs/delete-ds-store
GenericJam May 27, 2026
1592c47
Merge pull request #23 from dl-alexandre/docs/android-x86-runtime-sup…
GenericJam May 27, 2026
1d72d99
Merge pull request #31 from NinjasCL-labs/mermaid
GenericJam May 27, 2026
024bc85
Merge pull request #19 from dl-alexandre/docs/background-execution
GenericJam May 27, 2026
6fdaa6c
Merge pull request #24 from dl-alexandre/docs/background-execution-guide
GenericJam May 27, 2026
05b7116
0.6.19
GenericJam May 27, 2026
f5337ef
docs: fix hexdocs rendering — logo + mermaid diagrams
GenericJam May 27, 2026
b7a517d
0.6.20
GenericJam May 27, 2026
527cd46
design: resolve the two UI-kit-evaluation open items
GenericJam May 27, 2026
f04784e
decision: Phase 1 plugin host is a new mob_plugin_demo repo
GenericJam May 27, 2026
9622486
spec: tier-1 nif :module is a C-token, not an Elixir module
GenericJam May 28, 2026
07fa82c
Mob.DNS: in-process IPv4 resolution on Android via Bionic getaddrinfo…
GenericJam May 28, 2026
43d1906
Merge pull request #36 from GenericJam/dns-android-getaddrinfo
GenericJam May 28, 2026
2469a38
Release 0.6.21 — Android in-process DNS via Bionic getaddrinfo NIF
GenericJam May 28, 2026
7857f0b
Mob.Certs: load CA certificates on Android (where :public_key.cacerts…
GenericJam May 28, 2026
5c7c4d9
mob_beam.zig: optional escript/erl/erlexec/beam.smp symlinks for runt…
GenericJam May 28, 2026
3163029
mix format test/mob/certs_test.exs
GenericJam May 28, 2026
436b3d9
Merge pull request #38 from GenericJam/android-cacerts-and-rebar3
GenericJam May 28, 2026
37d7acd
mix.exs: collapse duplicate before_closing_body_tag/1 clauses
GenericJam May 28, 2026
b8828a8
Release 0.6.22 — Mob.Certs + escript symlinks (#38) + body_tag dedupe
GenericJam May 28, 2026
68c1a4c
spec: tighten tier-1 nif :module regex to lowercase-letter-start
GenericJam May 28, 2026
3bb7d32
spec: fix tier-2 example to use C-token nif :module
GenericJam May 28, 2026
08df2e0
docs: update CLAUDE.md to reflect Android node-name fix in mob_dev
GenericJam May 28, 2026
7031739
Phase 1: Mob.Theme.Material3 token plumbing (no visual changes)
GenericJam May 18, 2026
132f1bd
Remove Mob.Bt — extracted to standalone mob_bluetooth plugin
GenericJam May 29, 2026
452dc4c
Test harness: screenshot, scroll control, and element frames over dis…
GenericJam May 29, 2026
6723ea3
docs: zig plugin NIFs + Android bridge classes; dist-port note fix
GenericJam May 29, 2026
a71d979
Release 0.6.23 — agent-driving test harness + Mob.Bt extraction
GenericJam May 29, 2026
cc2700f
Remove bt native from core — extracted to mob_bluetooth tier-1 plugin…
GenericJam May 30, 2026
2be683a
Remove orphaned iOS bt stubs from core (extraction completeness)
GenericJam May 30, 2026
e9b4473
iOS: default to a 128 MB literal super-carrier (-MIscs 128)
GenericJam May 31, 2026
d2de8af
Release 0.6.25: "open with" — Mob.Files.take_opened_document/0
GenericJam May 31, 2026
2221856
clang-format the open-with native additions
GenericJam May 31, 2026
147b53b
Release 0.6.26: remove the hardcoded iOS -MIscs 10 literal cap
GenericJam Jun 1, 2026
fea1e0d
CHANGELOG: Mob.Bt native removal complete (Wave 1 done)
GenericJam Jun 1, 2026
e246de8
Merge Wave 1: remove Bluetooth from core (extracted to mob_bluetooth)
GenericJam Jun 1, 2026
a6ba093
Update deps for Elixir 1.20.0
GenericJam Jun 4, 2026
48e24a2
permissions: extensible registry — iOS runtime table + relaxed Elixir…
GenericJam Jun 5, 2026
d790252
Wave 2: extract location from core into the mob_location plugin
GenericJam Jun 5, 2026
457404d
Plugin tiers 3/4 — Phase 0 core: Mob.Plugins runtime-manifest loader
GenericJam Jun 6, 2026
56ff945
Plugin tier 3 — register plugin screens at boot (Phase 1, screens)
GenericJam Jun 6, 2026
e6c03fd
Plugin tier 3 — core plugin:// image resolver (Phase 1)
GenericJam Jun 6, 2026
a882f1c
Plugin tier 4 — lifecycle, settings, notifications, supervision (Phas…
GenericJam Jun 6, 2026
d840290
Plugin tier 3 — capture host app name at compile time (device fix)
GenericJam Jun 6, 2026
d3fb92a
Plugin tier 4 — start lifecycle before host on_start (iOS device fix)
GenericJam Jun 6, 2026
408ddc2
Docs: plugin tiers 3/4 built — ADR, CHANGELOG, MOB_PLUGINS status
GenericJam Jun 6, 2026
333b476
Plugin tiers 3/4 — notification central delivery + plugin:// image re…
GenericJam Jun 6, 2026
1cf9884
Docs: narrow remaining tier-3/4 work to font bundling
GenericJam Jun 6, 2026
6698e43
Docs: custom fonts built — CHANGELOG + MOB_PLUGINS status
GenericJam Jun 6, 2026
e7920f6
Merge branch 'plugin-tiers-3-4'
GenericJam Jun 6, 2026
9adc00b
fix(plugins): harden runtime against malformed plugin manifests
GenericJam Jun 6, 2026
bb3c374
Merge bughunt-iter1: plugin-system bug-hunt iteration 1 safe fixes
GenericJam Jun 6, 2026
9eeeea3
fix(plugins): log malformed-settings-schema fallbacks instead of sile…
GenericJam Jun 7, 2026
8ab1cff
fix(plugins): crash-isolate notification dispatch (handler + predicate)
GenericJam Jun 7, 2026
8c458b6
Merge bughunt-iter1-hv: high-value flagged plugin bug fixes
GenericJam Jun 7, 2026
3a921da
docs(plugins): authoring guide + conflict-surface/runtime-manifest re…
GenericJam Jun 9, 2026
6bb6b3e
Merge plugin-docs: plugin authoring guide + conflict/runtime-manifest…
GenericJam Jun 9, 2026
96e3ef6
strip camera NIFs from core (mob_camera plugin supplies them) — descoped
GenericJam Jun 9, 2026
e66eccb
feat(plugins): load plugin NIF modules at boot so iOS permission hand…
GenericJam Jun 10, 2026
dbbbb08
fix(ios): weak-define g_preview_session in core so plugin-less apps link
GenericJam Jun 11, 2026
0b1833d
fix(plugins): harden notification dispatch + resolve_image against ma…
GenericJam Jun 11, 2026
bd76f88
docs(plugins): document the host_requirements manifest key
GenericJam Jun 11, 2026
ad81cc2
Merge strip-camera: camera extraction Wave 2 (BREAKING — mob_camera p…
GenericJam Jun 11, 2026
89233d4
chore: remove playwright snapshots + talk slide images swept into 96e…
GenericJam Jun 11, 2026
5bbc1ac
docs(plugins): bring extraction plan up to reality
GenericJam Jun 11, 2026
28ca317
strip photos + biometric from core (mob_photos / mob_biometric plugin…
GenericJam Jun 11, 2026
9d972f6
Merge strip-photos-biometric: Wave 2 photos + biometric core strip
GenericJam Jun 11, 2026
1ce5dd8
docs(plugins): record Wave-2 photos/biometric extraction + notify Sta…
GenericJam Jun 11, 2026
b32b6d3
credo: register ExSlop as a plugin, not a check (it never ran)
GenericJam Jun 11, 2026
0b029e0
docs(plugins): photos + biometric Moto-G-verified
GenericJam Jun 11, 2026
8a13167
strip notify from core (mob_notify plugin supplies scheduling/registr…
GenericJam Jun 11, 2026
1f2b38a
Merge strip-notify: Wave 2 notify core strip (delivery stays)
GenericJam Jun 11, 2026
e7aedda
docs(plugins): mob_notify extracted + Moto-G-verified
GenericJam Jun 11, 2026
9f9f586
strip scanner from core (mob_scanner plugin supplies it) — Wave 3 opens
GenericJam Jun 11, 2026
c223e17
Merge strip-scanner: Wave 3 scanner core strip
GenericJam Jun 11, 2026
111d5db
docs(plugins): mob_scanner extracted + Moto-G-verified (Wave 3 opens)
GenericJam Jun 11, 2026
c2a45d2
feat(nav): route-bound params — Registry.register/3 + lookup_route/1
GenericJam Jun 11, 2026
b2ac186
Merge ash-route-params: route-bound nav params (mob_ash enabler)
GenericJam Jun 11, 2026
ba75075
docs(plugins): spec-v2 lane realized — mob_ash verified on device
GenericJam Jun 12, 2026
e8cbcf4
feat(styles): tokens-only style packages — runtime manifest + boot apply
GenericJam Jun 12, 2026
5eed142
Merge styles-mvp: tokens-only style packages (core half)
GenericJam Jun 12, 2026
52244be
strip citrus theme (mob_theme_citrus style package supplies it) — Wav…
GenericJam Jun 12, 2026
0e81068
Merge strip-theme-citrus: Wave 4 opens
GenericJam Jun 12, 2026
d53264f
test: decouple the boot-apply fixture from the extracted citrus theme
GenericJam Jun 12, 2026
5b1b61b
docs(plugins): styles lane realized (tokens-only) — mob_theme_citrus …
GenericJam Jun 12, 2026
35df613
feat(composite): the third expansion pass — pure-Elixir composites by…
GenericJam Jun 12, 2026
396e2c3
Merge composite-expansion: pure-Elixir composite components
GenericJam Jun 12, 2026
3b13d81
docs(plugins): expand: form honored — composite expansion pass ADR
GenericJam Jun 12, 2026
0cd0e8d
strip obsidian/birch/obsidian_glass/material3 themes (mob_themes pack…
GenericJam Jun 12, 2026
477496b
Merge strip-themes: Wave 4 theme consolidation
GenericJam Jun 12, 2026
48d1999
docs(plugins): Wave 4 consolidated into mob_themes
GenericJam Jun 12, 2026
f2f5e49
docs(styles): implementation status — tokens-only tier shipped, nativ…
GenericJam Jun 12, 2026
19cc808
changelog: draft the 0.7.0 breaking-major entry (unreleased)
GenericJam Jun 12, 2026
1d0146e
release plan: 0.7.0 sequence, package table, open items, Kevin's chec…
GenericJam Jun 12, 2026
8c74e88
docs: guides catch up with the 0.7.0 plugin extractions
GenericJam Jun 12, 2026
07cdf67
docs: ship the full guide set + MOB_STYLES.md on HexDocs
GenericJam Jun 12, 2026
b3f3572
docs: fix wrong-name references + dead intra-doc links
GenericJam Jun 12, 2026
186e7ae
docs: First-Party Packages catalog — the 'fully featured, pull in lib…
GenericJam Jun 12, 2026
c7b702b
docs(plugins guide): catch up with the cycle — tests, composites, hos…
GenericJam Jun 12, 2026
a8c5b37
Release 0.7.0 — the plugin-extraction major (BREAKING)
GenericJam Jun 12, 2026
aa33e92
README: install constraint ~> 0.7
GenericJam Jun 12, 2026
4b4bcd3
Add 'mix setup' to activate git hooks on a fresh clone
GenericJam Jun 16, 2026
57ab77b
Merge #22: collocated screen templates
GenericJam Jun 17, 2026
c40eb6b
Mob.Files: honor :types as a cross-platform picker filter
GenericJam Jun 17, 2026
936fea0
Merge files-type-filter: cross-platform Mob.Files.pick :types filter
GenericJam Jun 17, 2026
407854f
Release 0.7.1 — Mob.Files.pick type filtering + collocated templates
GenericJam Jun 17, 2026
acb8d30
docs: drop the production warning from the README
GenericJam Jun 18, 2026
eb66568
Mob.ScreenCase: blessed in-BEAM screen testing (+ contract check, dev…
GenericJam Jun 19, 2026
36ad6bd
Release 0.7.2 — Mob.ScreenCase in-BEAM screen testing (#44)
GenericJam Jun 19, 2026
a932c16
docs: record that Igniter tasks (incl. mob.adopt) live in mob_dev, no…
GenericJam Jun 19, 2026
c32abc0
mob 0.7.3: extract Mob.Background into the mob_background plugin (BRE…
GenericJam Jun 19, 2026
37dd02d
fix(nif): double-buffer the tap-handle registry (Android + iOS) (#45)
GenericJam Jun 20, 2026
0451c69
Release 0.7.4: double-buffer the tap-handle registry (#45)
GenericJam Jun 20, 2026
128b208
fix(ios): deliver canvas finger-drag (on_drag) — parity with Android
GenericJam Jun 21, 2026
a033f15
fix(ios): polish canvas drag — guard drag flag, document minimumDista…
GenericJam Jun 21, 2026
d4d0717
Release 0.7.5: iOS canvas finger-drag (on_drag) (#47)
GenericJam Jun 21, 2026
b5a2bc4
Add device orientation: detect + lock (Mob.Device) (#49)
GenericJam Jun 25, 2026
a26c824
Release 0.7.6: device orientation detect + lock (#49)
GenericJam Jun 25, 2026
641cdaa
Release 0.7.7: fix boot crash from missing -nifs declaration (0.7.6 r…
GenericJam Jun 25, 2026
ceb1b99
Add Mob.Device.open_settings/1: open OS settings from a screen (#50)
GenericJam Jun 25, 2026
3ccc1b4
Release 0.7.8: Mob.Device.open_settings/1 (#50)
GenericJam Jun 25, 2026
e90fe6f
Release 0.7.9: iOS non-glass box fill honors corner_radius
GenericJam Jun 26, 2026
f14c0ef
Release 0.7.10: iOS row align "baseline" -> .lastTextBaseline
GenericJam Jun 27, 2026
d5e38f2
Add LiveView-style ergonomics: :if/:for, @assigns sugar, Socket helpers
GenericJam Jun 27, 2026
df70504
docs: cover :if/:for/@assigns and Socket helpers in guides
GenericJam Jun 27, 2026
5a133f5
Merge pull request #52 from GenericJam/feat/liveview-ergonomics
GenericJam Jun 27, 2026
22c9bd7
Release 0.7.11: LiveView-style sigil ergonomics + Socket helpers
GenericJam Jun 27, 2026
a70ce0d
MOB-5: ~MOB @foo raises a clear error when assigns is not in scope
GenericJam Jul 1, 2026
239a9f4
docs: add worked component-authoring examples to components guide
GenericJam Jul 1, 2026
34ad6ad
docs: keep #pure-elixir-composite-components anchor after section rename
GenericJam Jul 1, 2026
fccd1c4
Merge pull request #56 from GenericJam/mob-5-sigil-assigns-guard
GenericJam Jul 1, 2026
e4d829d
Merge pull request #57 from GenericJam/docs/component-authoring-examples
GenericJam Jul 1, 2026
0b41866
Release 0.7.12: clear ~MOB @foo error + component-authoring guide
GenericJam Jul 1, 2026
76e346d
docs(components): clear up the tag-whitelist warning and Component-vs…
GenericJam Jul 3, 2026
a732dee
Release 0.7.13: clarify tag-whitelist warning + Component-vs-Composit…
GenericJam Jul 3, 2026
f9556c5
MOB-6: magnetometer / compass support in Mob.Motion (#59)
GenericJam Jul 4, 2026
e4a6c8e
Release 0.7.14: magnetometer / compass support in Mob.Motion
GenericJam Jul 4, 2026
f071e0f
MOB-30: refresh mobile_surface_matrix.md — magnetometer/compass/orien…
GenericJam Jul 5, 2026
3d6219e
MOB-15: torch / flashlight support in core (Mob.Torch) (#61)
GenericJam Jul 5, 2026
467000b
Release 0.7.15: torch / flashlight support (Mob.Torch)
GenericJam Jul 5, 2026
aef9917
docs: fix undefined tap/1 in getting_started "first screen" example (…
GenericJam Jul 5, 2026
f6c6308
docs: make the 0xAARRGGBB color format explicit (vs CSS hex) (#64)
GenericJam Jul 5, 2026
7809905
MOB-14: network / connectivity state in Mob.Device (query + events) (…
GenericJam Jul 5, 2026
0cb5dd1
Release 0.7.16: network / connectivity state (Mob.Device.network_state)
GenericJam Jul 5, 2026
ef86ecb
MOB-20: keep-awake / idle-timer support in Mob.Device (#66)
GenericJam Jul 5, 2026
32498c6
Release 0.7.17: keep-awake / idle-timer (Mob.Device.keep_awake)
GenericJam Jul 5, 2026
ec39679
MOB-35: Mob.Audio input-level metering (agent "ears") — contract + ho…
GenericJam Jul 7, 2026
b316a3c
Mob.Audio output probes: verify sound is actually working (#54)
GenericJam Jul 7, 2026
6842e3c
Remove errant deps symlink committed via #54
GenericJam Jul 7, 2026
d06ddbc
Release 0.7.18: Mob.Audio output probes + input-level metering (#69)
GenericJam Jul 7, 2026
fdebfd8
Fix iOS Motion accel: match Android units + sign convention (#70)
GenericJam Jul 11, 2026
55db98b
Bump to 0.7.19 — iOS Motion accel units + sign fix
GenericJam Jul 11, 2026
bde2056
iOS: make the screenshot NIF opt-in for release builds (#71)
GenericJam Jul 11, 2026
26329fa
Bump to 0.7.20 — iOS screenshot NIF opt-in for release builds
GenericJam Jul 11, 2026
7e9f196
Fix vertical scroll width after iPad resize
dl-alexandre Jul 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed .DS_Store
Binary file not shown.
4 changes: 4 additions & 0 deletions .credo.exs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
configs: [
%{
name: "default",
# ex_slop is a credo PLUGIN (registers its whole check bundle), not a
# check — listing it under checks.enabled was silently ignored
# ("Ignoring an undefined check: ExSlop").
plugins: [{ExSlop, []}],
files: %{
included: ["lib/", "test/"],
excluded: [~r"/_build/", ~r"/deps/"]
Expand Down
79 changes: 79 additions & 0 deletions .githooks/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
#!/usr/bin/env bash
# .githooks/pre-push — Mob repo pre-push gate.
#
# Activated per-clone with: git config core.hooksPath .githooks
# See RELEASE.md for the full release flow + when this hook runs.
#
# Two tiers of check:
#
# ALWAYS (cheap, sub-10s):
# mix format --check-formatted
# mix credo --strict
# mix compile --warnings-as-errors
#
# ONLY WHEN mix.exs CHANGED IN THIS PUSH (release preflight):
# mix test --exclude macos_only --exclude requires_zig
#
# Intentionally NOT in the always-tier: the full test suite. It's a
# 30-60s wait per push and that's exactly what teaches people to reach
# for --no-verify. CI runs the suite on every push regardless; this
# hook is here to catch the 80% of breaks that the fast checks find.
set -euo pipefail

# Suppress noisy OTP-28 regex warning so the hook output is clean.
export ELIXIR_ERL_OPTIONS="-elixir ansi_enabled true"

cheap_checks() {
echo "[pre-push] format..."
mix format --check-formatted

echo "[pre-push] credo..."
mix credo --strict

echo "[pre-push] compile (--warnings-as-errors)..."
mix compile --warnings-as-errors
}

release_preflight() {
echo "[pre-push] mix.exs changed → running release preflight..."
mix test --exclude macos_only --exclude requires_zig

# mix mob.security_scan only exists in mob_dev. Gate on availability
# so the same hook script can live unchanged in mob / mob_dev / mob_new.
if mix help mob.security_scan >/dev/null 2>&1; then
echo "[pre-push] mob.security_scan..."
mix mob.security_scan
fi
}

# git invokes pre-push with no args but pipes
# <local_ref> <local_sha> <remote_ref> <remote_sha>
# on stdin, one line per ref being pushed. We diff the local sha
# against the remote sha to see what mix.exs looks like in this push.
zero=0000000000000000000000000000000000000000
mix_exs_changed=false

while read -r local_ref local_sha remote_ref remote_sha; do
# Branch deletion (local_sha all zeros) → nothing to diff.
[ "$local_sha" = "$zero" ] && continue

if [ "$remote_sha" = "$zero" ]; then
# New branch on the remote — diff against origin/master so we
# don't try to scan an open-ended commit range.
range="origin/master..$local_sha"
else
range="$remote_sha..$local_sha"
fi

if git diff --name-only "$range" 2>/dev/null | grep -qx 'mix.exs'; then
mix_exs_changed=true
fi
done

cheap_checks

if [ "$mix_exs_changed" = "true" ]; then
release_preflight
fi

echo "[pre-push] ✓ all checks passed"
247 changes: 0 additions & 247 deletions .github/workflows/onboarding.yml

This file was deleted.

Loading
Loading