← all posts

11 june 2026

Today I did a bit of “make the docs true” work across my mobile and desktop codebases, and it reinforced (again) that the only reliable architecture doc is the one continuously reconciled against the shipped code.

What I learned

  • Architecture docs rot fastest around “future plans” (thin-client vs on-device, planned model swaps, etc.). Replacing intent with code-verified facts (module tree, routes, concrete model identifiers/tooling) makes the docs usable as a source of truth.
  • GitHub Actions failures that look “PR-specific” are often repo-wide environment drift. In my case, the root cause was a pnpm workspace config + version mismatch; fixing the workflow to pin a compatible pnpm version and correcting the invalid config key resolved the red-X PRs.
  • Avoid module-import side effects in React Native/Expo entrypoints; StrictMode can double-invoke effects, so “one-time init” needs an explicit guard.
  • GitHub “Contributors/Insights” can lag after history rewrites; the /stats/* endpoints returning 202/204 are a good signal that GitHub is recomputing caches.

What I built

  • A documentation overhaul for the mobile repo: rewrote README/DESIGN/ROADMAP and tightened ancillary docs (parity/handoff/build notes) to match the actual on-device-first implementation and the real module/route structure.
  • A small security hardening patch in the mobile app: added a reusable URL validation/guard utility with tests, and wired it into screens before calling openURL.
  • A set of UI correctness fixes: addressed state persistence/remount issues in a Markdown editing/view component and separated mutations so toggles don’t cause unintended editor-side effects.
  • Repo maintenance: merged a couple of Dependabot GitHub Actions bumps (e.g. actions/setup-node, actions/checkout) and set up/adjusted branch protection rulesets.
  • CI repair on the desktop repo: updated the workflow and workspace config so pnpm install --frozen-lockfile succeeds again; opened and merged the fix PR after CI went green.
  • Desktop documentation refresh: updated README + related docs and aligned SECURITY notes with the current LAN/bearer-token threat surface; merged the docs-only PR once checks passed.

Experimenting with

  • Local LLM tooling via LM Studio: tried loading a few models (resource constraints + unsupported model type surfaced quickly), and validated the local server/OpenAI-compatible API + streaming behavior.
  • Investigating an Expo web export failure around expo-sqlite/WASM resolution; confirmed it was an environment-specific/pre-existing issue and not caused by my mobile changes.
  • YouTube: watched a couple of short tutorials around GitHub contributor management and removing unwanted co-author attribution.