Add test data injection script with 100 realistic notifications
Reusable ADB script to populate the app with varied test data across 9 app sources (WhatsApp, Gmail, Telegram, Instagram, Slack, Messages, X, Calendar, System) spanning multiple days for UI/UX stress testing. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
62933bf975
commit
64bf065f2d
2 changed files with 205 additions and 0 deletions
95
scripts/inject_test_data.sh
Executable file
95
scripts/inject_test_data.sh
Executable file
|
|
@ -0,0 +1,95 @@
|
|||
#!/bin/bash
|
||||
# inject_test_data.sh — Injects test notifications from test_data.json into the SNI app
|
||||
# Usage: ./scripts/inject_test_data.sh [--clear]
|
||||
# --clear Clears the database before injecting
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
DATA_FILE="$SCRIPT_DIR/test_data.json"
|
||||
PKG="com.roundingmobile.sni.dev"
|
||||
RECEIVER="$PKG/com.roundingmobile.sni.instrumentation.TestBroadcastReceiver"
|
||||
BATCH_SIZE=8
|
||||
|
||||
if [ ! -f "$DATA_FILE" ]; then
|
||||
echo "ERROR: $DATA_FILE not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! adb devices | grep -q "device$"; then
|
||||
echo "ERROR: No ADB device connected"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check app is running
|
||||
if ! adb shell pidof "$PKG" > /dev/null 2>&1; then
|
||||
echo "App not running. Launching..."
|
||||
adb shell am start -n "$PKG/com.roundingmobile.sni.presentation.MainActivity"
|
||||
sleep 2
|
||||
fi
|
||||
|
||||
# Optional: clear DB first
|
||||
if [ "${1:-}" = "--clear" ]; then
|
||||
echo "Clearing database..."
|
||||
adb shell am broadcast -a com.roundingmobile.sni.test.CLEAR_DB -n "$RECEIVER" > /dev/null
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
NOW_MS=$(date +%s%3N)
|
||||
|
||||
# Use python3 to convert age_minutes to timestamps, strip that field,
|
||||
# and split into batches of BATCH_SIZE
|
||||
TOTAL=$(python3 -c "
|
||||
import json, sys
|
||||
|
||||
with open('$DATA_FILE') as f:
|
||||
data = json.load(f)
|
||||
|
||||
now = $NOW_MS
|
||||
for item in data:
|
||||
age = item.pop('age_minutes', 0)
|
||||
item['timestamp'] = now - (age * 60000)
|
||||
|
||||
# Split into batches
|
||||
batch_size = $BATCH_SIZE
|
||||
batches = [data[i:i+batch_size] for i in range(0, len(data), batch_size)]
|
||||
|
||||
for i, batch in enumerate(batches):
|
||||
# Write each batch to a temp file
|
||||
with open(f'/tmp/sni_batch_{i}.json', 'w') as f:
|
||||
json.dump(batch, f, separators=(',', ':'))
|
||||
|
||||
print(f'{len(data)} {len(batches)}')
|
||||
")
|
||||
|
||||
NOTIF_COUNT=$(echo "$TOTAL" | cut -d' ' -f1)
|
||||
BATCH_COUNT=$(echo "$TOTAL" | cut -d' ' -f2)
|
||||
|
||||
echo "Injecting $NOTIF_COUNT notifications in $BATCH_COUNT batches..."
|
||||
|
||||
INJECTED=0
|
||||
for i in $(seq 0 $((BATCH_COUNT - 1))); do
|
||||
BATCH_FILE="/tmp/sni_batch_${i}.json"
|
||||
BATCH_JSON=$(cat "$BATCH_FILE")
|
||||
|
||||
adb shell am broadcast \
|
||||
-a com.roundingmobile.sni.test.INJECT_BATCH \
|
||||
-n "$RECEIVER" \
|
||||
--es json "'$BATCH_JSON'" > /dev/null 2>&1
|
||||
|
||||
BATCH_ITEMS=$(python3 -c "import json; print(len(json.load(open('$BATCH_FILE'))))")
|
||||
INJECTED=$((INJECTED + BATCH_ITEMS))
|
||||
echo " Batch $((i+1))/$BATCH_COUNT done ($INJECTED/$NOTIF_COUNT)"
|
||||
sleep 0.5
|
||||
done
|
||||
|
||||
# Clean up temp files
|
||||
rm -f /tmp/sni_batch_*.json
|
||||
|
||||
# Verify
|
||||
sleep 1
|
||||
adb shell am broadcast -a com.roundingmobile.sni.test.DUMP_STATE -n "$RECEIVER" > /dev/null
|
||||
sleep 1
|
||||
COUNT=$(adb logcat -d -s CLAUDE_TEST:V | grep "STATE db_count=" | tail -1 | sed 's/.*db_count=//')
|
||||
echo ""
|
||||
echo "Done! Database count: $COUNT"
|
||||
110
scripts/test_data.json
Normal file
110
scripts/test_data.json
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
[
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Mom","text":"Dont forget dinner at 7pm tonight! Dad is grilling steaks 🥩","category":"msg","priority":1,"age_minutes":15},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Mom","text":"Also bring the salad bowl I left at your place","category":"msg","priority":1,"age_minutes":12},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Mom","text":"Actually make it 6:30, your sister is coming early","category":"msg","priority":1,"age_minutes":10},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Work Group Chat","text":"Sarah: Meeting moved to 3pm tomorrow. Conference room B.","category":"msg","priority":1,"age_minutes":45},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Work Group Chat","text":"Mike: Works for me, I will bring the projector","category":"msg","priority":1,"age_minutes":43},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"David Miller","text":"Hey, are you coming to dinner tonight? Let me know!","category":"msg","priority":1,"age_minutes":120},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"David Miller","text":"I booked a table at Nobu for 8pm, hope that works","category":"msg","priority":1,"age_minutes":118},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"David Miller","text":"Nvm they were full, going to Olive Garden instead lol","category":"msg","priority":1,"age_minutes":105},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Lisa Chen","text":"Just sent you the photos from the trip! Check your email 📸","category":"msg","priority":1,"age_minutes":180},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Lisa Chen","text":"The sunset ones came out amazing","category":"msg","priority":1,"age_minutes":178},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Apartment Building","text":"Maintenance: Water shutoff tomorrow 9-11am. Sorry for the inconvenience.","category":"msg","priority":1,"age_minutes":300},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Mom","text":"How was your day sweetie? Call me when you get a chance","category":"msg","priority":1,"age_minutes":1500},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Work Group Chat","text":"Sarah: Dont forget to submit your timesheets by Friday","category":"msg","priority":1,"age_minutes":1520},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Work Group Chat","text":"Jake: Already done!","category":"msg","priority":1,"age_minutes":1515},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Work Group Chat","text":"Mike: Can someone review my PR before end of day?","category":"msg","priority":1,"age_minutes":1510},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Lisa Chen","text":"Are we still on for coffee Saturday?","category":"msg","priority":1,"age_minutes":1600},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"David Miller","text":"Check out this link https://youtu.be/dQw4w9WgXcQ","category":"msg","priority":1,"age_minutes":1680},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Family Group","text":"Grandma: Happy birthday to little Tommy! 🎂","category":"msg","priority":1,"age_minutes":1800},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Family Group","text":"Uncle Bob: We will be there at noon with presents!","category":"msg","priority":1,"age_minutes":1795},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Neighbor - Tom","text":"Hey your package was left at my door by mistake, I put it on your porch","category":"msg","priority":1,"age_minutes":2900},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Mom","text":"Found a great recipe for that chicken dish you liked. Want me to send it?","category":"msg","priority":1,"age_minutes":2950},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Mom","text":"https://recipes.example.com/lemon-herb-chicken here it is","category":"msg","priority":1,"age_minutes":2945},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"David Miller","text":"Bro the game last night was insane, did you see that last play?","category":"msg","priority":1,"age_minutes":3000},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"College Friends","text":"Mark: Reunion is set for June 15th at The Grand Hotel, who is in?","category":"msg","priority":1,"age_minutes":3100},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"College Friends","text":"Jessica: Count me in! Already booked my flights","category":"msg","priority":1,"age_minutes":3095},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"College Friends","text":"Ryan: Cant wait, its been way too long","category":"msg","priority":1,"age_minutes":3090},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Lisa Chen","text":"OMG I just got the promotion!! 🎉🎉🎉","category":"msg","priority":1,"age_minutes":3200},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Lisa Chen","text":"Drinks on me this weekend to celebrate","category":"msg","priority":1,"age_minutes":3195},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Family Group","text":"Aunt Sue: Does anyone have Grandmas cookie recipe? I cant find mine","category":"msg","priority":1,"age_minutes":3500},
|
||||
{"package":"com.whatsapp","app_name":"WhatsApp","title":"Apartment Building","text":"Reminder: Building meeting this Thursday at 7pm in the lobby","category":"msg","priority":1,"age_minutes":3600},
|
||||
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Amazon - Your order has shipped","text":"Your order #4829 has shipped. Track at https://track.example.com/4829","category":"email","priority":1,"age_minutes":30},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Amazon - Delivery Update","text":"Your package with Anker USB-C Hub will arrive today by 8pm","category":"email","priority":1,"age_minutes":28},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"GitHub - PR Review Requested","text":"@jdoe requested your review on fix: handle null pointer in NotificationParser","category":"email","priority":2,"age_minutes":90},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"GitHub - CI passed","text":"All checks passed on PR #287: Refactor notification grouping logic","category":"email","priority":1,"age_minutes":85},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Netflix","text":"New arrivals this week: Stranger Things Season 5, The Witcher S4, and more","category":"email","priority":0,"age_minutes":240},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Google Cloud Platform","text":"Your billing statement for February 2026 is ready. Total: $47.23","category":"email","priority":1,"age_minutes":360},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"LinkedIn","text":"You have 3 new connection requests and 12 profile views this week","category":"email","priority":0,"age_minutes":480},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Dr. Petersons Office","text":"Reminder: Your appointment is scheduled for March 20th at 2:30 PM","category":"email","priority":2,"age_minutes":1500},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Jira - MOBILE-1234 updated","text":"Status changed from In Progress to Code Review by Sarah Thompson","category":"email","priority":1,"age_minutes":1550},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Amazon - Delivered","text":"Your package was delivered to the front door. Photo available in app.","category":"email","priority":1,"age_minutes":1600},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Costco - Digital Receipt","text":"Thank you for your purchase. Total: $234.56. View receipt in app.","category":"email","priority":0,"age_minutes":1620},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"GitHub - PR Merged","text":"PR #284 merged: Add notification action buttons support. Nice work!","category":"email","priority":1,"age_minutes":1700},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Delta Airlines","text":"Check in now for your flight DL1234 on March 20. Departs 7:15 AM.","category":"email","priority":2,"age_minutes":2940},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Airbnb - Booking Confirmed","text":"Your stay in Portland OR is confirmed for Apr 10-14. Check-in at 3 PM.","category":"email","priority":1,"age_minutes":3000},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"IRS - Tax Filing Confirmation","text":"Your 2025 federal tax return has been accepted. Refund expected in 21 days.","category":"email","priority":2,"age_minutes":3100},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"HomeDepot","text":"Your order HD-928374 is ready for pickup at Store 4521","category":"email","priority":1,"age_minutes":3200},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Netflix","text":"Because you watched Dark: Check out 1899, Silo, and The OA","category":"email","priority":0,"age_minutes":3300},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Amazon - Deal Alert","text":"Price drop on your wishlist: Sony WH-1000XM6 now $279.99 (30% off)","category":"email","priority":0,"age_minutes":3400},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Your Audible credit is ready","text":"You have 1 credit available. Browse new releases and bestsellers.","category":"email","priority":0,"age_minutes":3500},
|
||||
{"package":"com.google.android.gm","app_name":"Gmail","title":"Google Cloud - Alert","text":"Budget alert: Project sni-backend has reached 80% of monthly budget","category":"email","priority":2,"age_minutes":3600},
|
||||
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Alex Rivera","text":"Have you seen the new Kotlin 2.2 features? The new compiler is blazing fast","category":"msg","priority":1,"age_minutes":55},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Alex Rivera","text":"Especially the new K2 compiler mode, 2x faster builds","category":"msg","priority":1,"age_minutes":52},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Alex Rivera","text":"Check this out https://blog.jetbrains.com/kotlin/2026/kotlin-2-2","category":"msg","priority":1,"age_minutes":50},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Tech News Channel","text":"Breaking: Samsung announces Galaxy S27 with on-device AI assistant","category":"msg","priority":0,"age_minutes":200},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Tech News Channel","text":"Apple WWDC 2026 dates announced: June 8-12 at Apple Park","category":"msg","priority":0,"age_minutes":350},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Maria Santos","text":"Can you help me debug this Compose animation? Its driving me crazy","category":"msg","priority":1,"age_minutes":400},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Maria Santos","text":"Nvm figured it out, I was missing the animateContentSize modifier","category":"msg","priority":1,"age_minutes":380},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Alex Rivera","text":"Lunch tomorrow? That new ramen place finally opened","category":"msg","priority":1,"age_minutes":1500},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Android Dev Group","text":"Anyone know how to handle predictive back with nested navigation?","category":"msg","priority":0,"age_minutes":1600},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Android Dev Group","text":"Use NavHost with the new predictive back handler, works great since Nav 2.8","category":"msg","priority":0,"age_minutes":1590},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Maria Santos","text":"The client loved the new dashboard design! Great job on the animations","category":"msg","priority":1,"age_minutes":2900},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Tech News Channel","text":"Google I/O 2026 keynote highlights: Gemini 3.0, Android 17, new Pixel devices","category":"msg","priority":0,"age_minutes":3000},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Alex Rivera","text":"Did you submit your talk proposal for KotlinConf? Deadline is next week","category":"msg","priority":1,"age_minutes":3100},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Android Dev Group","text":"PSA: Room 2.7 has a breaking change in how TypeConverters work, check migration guide","category":"msg","priority":0,"age_minutes":3200},
|
||||
{"package":"org.telegram.messenger","app_name":"Telegram","title":"Maria Santos","text":"Coffee at 3? I need to pick your brain about Hilt modules","category":"msg","priority":1,"age_minutes":3300},
|
||||
|
||||
{"package":"com.instagram.android","app_name":"Instagram","title":"david_photo","text":"liked your photo","category":"social","priority":0,"age_minutes":35},
|
||||
{"package":"com.instagram.android","app_name":"Instagram","title":"sarah_designs","text":"mentioned you in a comment: this is amazing work! 🔥","category":"social","priority":0,"age_minutes":130},
|
||||
{"package":"com.instagram.android","app_name":"Instagram","title":"travel_adventures","text":"started following you","category":"social","priority":0,"age_minutes":250},
|
||||
{"package":"com.instagram.android","app_name":"Instagram","title":"mark_codes","text":"liked your reel","category":"social","priority":0,"age_minutes":400},
|
||||
{"package":"com.instagram.android","app_name":"Instagram","title":"Instagram","text":"You have 5 new followers this week","category":"social","priority":0,"age_minutes":1440},
|
||||
{"package":"com.instagram.android","app_name":"Instagram","title":"food_lover_nyc","text":"commented on your photo: Where is this restaurant? Looks incredible!","category":"social","priority":0,"age_minutes":1600},
|
||||
{"package":"com.instagram.android","app_name":"Instagram","title":"jessica_runs","text":"mentioned you in their story","category":"social","priority":0,"age_minutes":2880},
|
||||
{"package":"com.instagram.android","app_name":"Instagram","title":"memories","text":"See your memories from 3 years ago today","category":"social","priority":0,"age_minutes":3000},
|
||||
{"package":"com.instagram.android","app_name":"Instagram","title":"david_photo","text":"sent you a reel","category":"social","priority":0,"age_minutes":3100},
|
||||
{"package":"com.instagram.android","app_name":"Instagram","title":"Instagram","text":"Your reel got 1,247 plays! Share it to your story?","category":"social","priority":0,"age_minutes":3400},
|
||||
|
||||
{"package":"com.Slack","app_name":"Slack","title":"#android-team","text":"Jake: Has anyone tested the new Room migration on API 28?","category":"msg","priority":1,"age_minutes":20},
|
||||
{"package":"com.Slack","app_name":"Slack","title":"#android-team","text":"Emily: Yes works fine. Make sure you bump the DB version though","category":"msg","priority":1,"age_minutes":18},
|
||||
{"package":"com.Slack","app_name":"Slack","title":"#android-team","text":"Jake: Perfect thanks! Pushing the fix now","category":"msg","priority":1,"age_minutes":16},
|
||||
{"package":"com.Slack","app_name":"Slack","title":"#general","text":"HR: Company picnic next Friday at Riverside Park! Sign up on the intranet","category":"msg","priority":0,"age_minutes":500},
|
||||
{"package":"com.Slack","app_name":"Slack","title":"#android-team","text":"Sarah: Code freeze for v2.5 is tomorrow at 5pm, get your PRs in","category":"msg","priority":2,"age_minutes":1500},
|
||||
{"package":"com.Slack","app_name":"Slack","title":"#android-team","text":"Mike: I have 2 PRs ready, can someone review MOBILE-456?","category":"msg","priority":1,"age_minutes":1495},
|
||||
{"package":"com.Slack","app_name":"Slack","title":"#general","text":"IT: VPN maintenance window Saturday 2-4am. No action needed.","category":"msg","priority":0,"age_minutes":2900},
|
||||
{"package":"com.Slack","app_name":"Slack","title":"#android-team","text":"Emily: FYI the CI flaky test issue is fixed, all green now","category":"msg","priority":1,"age_minutes":3000},
|
||||
|
||||
{"package":"com.google.android.apps.messaging","app_name":"Messages","title":"+1 (555) 234-5678","text":"Your verification code is 847293. Do not share this code.","category":"msg","priority":2,"age_minutes":25},
|
||||
{"package":"com.google.android.apps.messaging","app_name":"Messages","title":"ATT","text":"Your bill of $89.99 is due on 03/25. Pay at https://att.com/pay","category":"msg","priority":1,"age_minutes":1740},
|
||||
{"package":"com.google.android.apps.messaging","app_name":"Messages","title":"CVS Pharmacy","text":"Your prescription is ready for pickup at the Main St location","category":"msg","priority":1,"age_minutes":2880},
|
||||
{"package":"com.google.android.apps.messaging","app_name":"Messages","title":"+1 (555) 867-5309","text":"Hey its Jason from the conference. Want to grab coffee sometime?","category":"msg","priority":1,"age_minutes":3100},
|
||||
{"package":"com.google.android.apps.messaging","app_name":"Messages","title":"Bank of America","text":"Alert: A login to your account was detected from a new device. Call 1-800-432-1000 if not you.","category":"msg","priority":2,"age_minutes":3500},
|
||||
|
||||
{"package":"com.twitter.android","app_name":"X","title":"@techcrunch","text":"Breaking: Google announces Android 17 with major notification API changes","category":"social","priority":0,"age_minutes":105},
|
||||
{"package":"com.twitter.android","app_name":"X","title":"@JetBrains","text":"Kotlin 2.2 is here! Explore the new features and improved compiler","category":"social","priority":0,"age_minutes":360},
|
||||
{"package":"com.twitter.android","app_name":"X","title":"@AndroidDev","text":"New blog post: Best practices for Compose Navigation in 2026","category":"social","priority":0,"age_minutes":1500},
|
||||
{"package":"com.twitter.android","app_name":"X","title":"@elikiowa","text":"retweeted your post about Room database optimization tips","category":"social","priority":0,"age_minutes":2900},
|
||||
{"package":"com.twitter.android","app_name":"X","title":"@github","text":"Trending: awesome-compose-samples - A curated list of Jetpack Compose examples","category":"social","priority":0,"age_minutes":3200},
|
||||
|
||||
{"package":"com.google.android.calendar","app_name":"Calendar","title":"Team Standup in 15 min","text":"Daily standup - Google Meet - meet.google.com/abc-defg-hij","category":"event","priority":2,"age_minutes":240},
|
||||
{"package":"com.google.android.calendar","app_name":"Calendar","title":"Dentist Appointment tomorrow","text":"Mar 18 at 10:00 AM - Dr. Williams Suite 200","category":"event","priority":1,"age_minutes":1440},
|
||||
{"package":"com.google.android.calendar","app_name":"Calendar","title":"Sprint Planning","text":"Friday 10:00 AM - 11:30 AM Conference Room B","category":"event","priority":1,"age_minutes":3060},
|
||||
{"package":"com.google.android.calendar","app_name":"Calendar","title":"Performance Review","text":"Scheduled: Mar 25 2:00 PM with Manager - prepare self-assessment","category":"event","priority":2,"age_minutes":3500},
|
||||
|
||||
{"package":"android","app_name":"System","title":"Software Update Available","text":"Android 16 QPR2 is ready to install. Estimated time: 15 minutes.","category":"sys","priority":1,"age_minutes":375},
|
||||
{"package":"android","app_name":"System","title":"Battery","text":"Battery is at 15%. Connect charger soon.","category":"sys","priority":1,"age_minutes":1440},
|
||||
{"package":"android","app_name":"System","title":"Storage","text":"Storage almost full. 2.1 GB remaining. Free up space to keep your device running smoothly.","category":"sys","priority":1,"age_minutes":3000}
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue