Skip to content

Instantly share code, notes, and snippets.

@wodin
wodin / final_review_54.md
Created November 30, 2025 17:11
PR #54 Multi-Agent Code Review - watermelondb-expo-plugin

PR #54 Final Review - Multi-Agent Consolidated Assessment

Verdict: BLOCK MERGE

PR: #54 (v2.4.0) Branch: v2.4.0 → beta Reviewers: Security, Performance, Quality, Gemini, Codex


@wodin
wodin / TODO-1500-fixes.md
Created November 24, 2025 15:04
PR #1500 Multi-Agent Review - Issue Fixes

PR #1500 Multi-Agent Review - Issue Fixes

VERIFIED: Issues Actually Introduced by PR #1500:

  • Snapshot JSON parsing complexity (notes_controller.rb:38-80) - new code
  • JSON parsing with bare rescue (notes_controller.rb:50-56) - silent failures
  • get_value() falsy handling behavior (debatable if bug - intentionally returns falsy values)

VERIFIED: Fixed Within PR #1500:

  • ✅ N+1 queries for staff roles (introduced commit 99aec49922, fixed commit 1b878d6c55)
  • ✅ Lambda duplication (introduced commit 99aec49922, fixed commit a5819fec1d)
@wodin
wodin / API_SPECIFICATION.md
Created November 22, 2025 10:34
Mobile App API Specification - Authentication & Lab Reports

Mobile App API Specification

Base URL: https://zeus.intelms.com:8447 Timeout: 30 seconds Content-Type: application/json


Authentication

@wodin
wodin / EmojiPicker.jsx
Created August 15, 2025 21:57
Emoji Picker
// https://stackblitz.com/edit/react-aria-emoji-picker?file=src%2FEmojiPicker.tsx
import {
Autocomplete,
Button,
GridLayout,
ListBox,
ListBoxItem,
Select,
SelectValue,
@wodin
wodin / AndroidManifest.xml
Last active January 1, 2023 23:37
Allowing an Android app to be moved to an SD card by the user (untested)
<!-- Need to specify the `installLocation`. Can do this with a config plugin -->
<!-- See `app.json` and `withAndroidManifestAttributes.js` below -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp"
android:installLocation="auto">
...
</manifest>
@wodin
wodin / eas.json
Created August 12, 2022 08:42
Simple EAS Build config with simulator build profiles
{
"cli": {
"version": ">= 0.52.0"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"sim-dev": {
@wodin
wodin / app.config.js
Last active August 12, 2023 03:57
Add `usesCleartextTraffic` to AndroidManifest.xml in Expo managed workflow
/*
* Convert `app.json` to `app.config.js`
* Install `@expo/config-plugins` as a devDependency
* Copy the `withAndroidApplicationAttributes` config plugin and related `addAttributesToApplication` function to `app.config.js`
* Add a `plugins` section to reference the config plugin and specify the attribute to add
* Build with `eas build -p android ...`
*/
import { AndroidConfig, withAndroidManifest } from "@expo/config-plugins";
function addAttributesToApplication(androidManifest, attributes) {
@wodin
wodin / BuildSteps.md
Created October 6, 2021 09:52
Building wodin/expo-zip-example
/tmp$ git clone https://github.com/wodin/expo-zip-example
Cloning into 'expo-zip-example'...
remote: Enumerating objects: 38, done.
remote: Counting objects: 100% (38/38), done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 38 (delta 15), reused 38 (delta 15), pack-reused 0
Receiving objects: 100% (38/38), 170.29 KiB | 369.00 KiB/s, done.
Resolving deltas: 100% (15/15), done.
/tmp$ cd expo-zip-example
@wodin
wodin / bcup2bw.py
Last active June 19, 2025 14:26
Migration from Buttercup to Bitwarden
#!/usr/bin/env python3
import sys
import csv
import json
from collections import OrderedDict
# !type
# !group_id
# !group_name