Add iCloud shared album sync, web settings UI, - #22

Open
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master
Open

Add iCloud shared album sync, web settings UI, #22
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master

Conversation

@ferni7

Copy link
Copy Markdown

Features:

  • iCloud shared album sync: two-step API (webstream + webasseturls), handles 330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro key '2049'), filters videos, checksum sidecar files for upgrade detection
  • Embedded web settings server on port 8080 with full settings form and sync controls; web UI save now also writes to SharedPreferences so BootReceiver picks up changes without requiring an app restart
  • Geocoding now shows city only (not City, State, Country); cache key bumped to v2 to invalidate old entries
  • Photo info overlay: added XSmall (22px) text size option (default); for bottom positions city is shown above date; for top positions date stays on top
  • Slide duration change now takes effect immediately without waiting for the current timer to expire
  • Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle) to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so they appear in release builds

…ements
Features:
- iCloud shared album sync: two-step API (webstream + webasseturls), handles
330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro
key '2049'), filters videos, checksum sidecar files for upgrade detection
- Embedded web settings server on port 8080 with full settings form and sync
controls; web UI save now also writes to SharedPreferences so BootReceiver
picks up changes without requiring an app restart
- Geocoding now shows city only (not City, State, Country); cache key bumped
to v2 to invalidate old entries
- Photo info overlay: added XSmall (22px) text size option (default); for
bottom positions city is shown above date; for top positions date stays on top
- Slide duration change now takes effect immediately without waiting for the
current timer to expire
- Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle)
to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so
they appear in release builds
- Sync timeout is now configurable (15–120s, default 60s) in both the
in-app settings and web UI; passed through to iCloud sync service so
slow connections don't fail with the old 30s hard-coded limit
- Auto-sync now fires on every save when a source is configured, not
only when the URL changes — so tapping Save always kicks off a sync
- Wi-Fi Settings shortcut added to Android section of settings screen
(opens system Wi-Fi page via MethodChannel)
- Device IP/web UI URL banner shown at top of settings screen
- Web UI save now calls syncFromConfig so autostart SharedPreferences
are updated immediately without requiring an app restart
- BootReceiver logs upgraded to Log.i so they appear in release builds
- Add FRAME_SETUP.md with quick ADB commands for setting up a new frame
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ferni7@andrewd-cg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add iCloud shared album sync, web settings UI, - #22

Open
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master
Open

Add iCloud shared album sync, web settings UI, #22
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master

Conversation

@ferni7

Copy link
Copy Markdown

Features:

  • iCloud shared album sync: two-step API (webstream + webasseturls), handles 330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro key '2049'), filters videos, checksum sidecar files for upgrade detection
  • Embedded web settings server on port 8080 with full settings form and sync controls; web UI save now also writes to SharedPreferences so BootReceiver picks up changes without requiring an app restart
  • Geocoding now shows city only (not City, State, Country); cache key bumped to v2 to invalidate old entries
  • Photo info overlay: added XSmall (22px) text size option (default); for bottom positions city is shown above date; for top positions date stays on top
  • Slide duration change now takes effect immediately without waiting for the current timer to expire
  • Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle) to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so they appear in release builds

…ements
Features:
- iCloud shared album sync: two-step API (webstream + webasseturls), handles
330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro
key '2049'), filters videos, checksum sidecar files for upgrade detection
- Embedded web settings server on port 8080 with full settings form and sync
controls; web UI save now also writes to SharedPreferences so BootReceiver
picks up changes without requiring an app restart
- Geocoding now shows city only (not City, State, Country); cache key bumped
to v2 to invalidate old entries
- Photo info overlay: added XSmall (22px) text size option (default); for
bottom positions city is shown above date; for top positions date stays on top
- Slide duration change now takes effect immediately without waiting for the
current timer to expire
- Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle)
to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so
they appear in release builds
- Sync timeout is now configurable (15–120s, default 60s) in both the
in-app settings and web UI; passed through to iCloud sync service so
slow connections don't fail with the old 30s hard-coded limit
- Auto-sync now fires on every save when a source is configured, not
only when the URL changes — so tapping Save always kicks off a sync
- Wi-Fi Settings shortcut added to Android section of settings screen
(opens system Wi-Fi page via MethodChannel)
- Device IP/web UI URL banner shown at top of settings screen
- Web UI save now calls syncFromConfig so autostart SharedPreferences
are updated immediately without requiring an app restart
- BootReceiver logs upgraded to Log.i so they appear in release builds
- Add FRAME_SETUP.md with quick ADB commands for setting up a new frame
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ferni7@andrewd-cg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add iCloud shared album sync, web settings UI, - #22

Open
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master
Open

Add iCloud shared album sync, web settings UI, #22
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master

Conversation

@ferni7

Copy link
Copy Markdown

Features:

  • iCloud shared album sync: two-step API (webstream + webasseturls), handles 330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro key '2049'), filters videos, checksum sidecar files for upgrade detection
  • Embedded web settings server on port 8080 with full settings form and sync controls; web UI save now also writes to SharedPreferences so BootReceiver picks up changes without requiring an app restart
  • Geocoding now shows city only (not City, State, Country); cache key bumped to v2 to invalidate old entries
  • Photo info overlay: added XSmall (22px) text size option (default); for bottom positions city is shown above date; for top positions date stays on top
  • Slide duration change now takes effect immediately without waiting for the current timer to expire
  • Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle) to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so they appear in release builds

…ements
Features:
- iCloud shared album sync: two-step API (webstream + webasseturls), handles
330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro
key '2049'), filters videos, checksum sidecar files for upgrade detection
- Embedded web settings server on port 8080 with full settings form and sync
controls; web UI save now also writes to SharedPreferences so BootReceiver
picks up changes without requiring an app restart
- Geocoding now shows city only (not City, State, Country); cache key bumped
to v2 to invalidate old entries
- Photo info overlay: added XSmall (22px) text size option (default); for
bottom positions city is shown above date; for top positions date stays on top
- Slide duration change now takes effect immediately without waiting for the
current timer to expire
- Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle)
to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so
they appear in release builds
- Sync timeout is now configurable (15–120s, default 60s) in both the
in-app settings and web UI; passed through to iCloud sync service so
slow connections don't fail with the old 30s hard-coded limit
- Auto-sync now fires on every save when a source is configured, not
only when the URL changes — so tapping Save always kicks off a sync
- Wi-Fi Settings shortcut added to Android section of settings screen
(opens system Wi-Fi page via MethodChannel)
- Device IP/web UI URL banner shown at top of settings screen
- Web UI save now calls syncFromConfig so autostart SharedPreferences
are updated immediately without requiring an app restart
- BootReceiver logs upgraded to Log.i so they appear in release builds
- Add FRAME_SETUP.md with quick ADB commands for setting up a new frame
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ferni7@andrewd-cg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add iCloud shared album sync, web settings UI, - #22

Open
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master
Open

Add iCloud shared album sync, web settings UI, #22
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master

Conversation

@ferni7

Copy link
Copy Markdown

Features:

  • iCloud shared album sync: two-step API (webstream + webasseturls), handles 330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro key '2049'), filters videos, checksum sidecar files for upgrade detection
  • Embedded web settings server on port 8080 with full settings form and sync controls; web UI save now also writes to SharedPreferences so BootReceiver picks up changes without requiring an app restart
  • Geocoding now shows city only (not City, State, Country); cache key bumped to v2 to invalidate old entries
  • Photo info overlay: added XSmall (22px) text size option (default); for bottom positions city is shown above date; for top positions date stays on top
  • Slide duration change now takes effect immediately without waiting for the current timer to expire
  • Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle) to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so they appear in release builds

…ements
Features:
- iCloud shared album sync: two-step API (webstream + webasseturls), handles
330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro
key '2049'), filters videos, checksum sidecar files for upgrade detection
- Embedded web settings server on port 8080 with full settings form and sync
controls; web UI save now also writes to SharedPreferences so BootReceiver
picks up changes without requiring an app restart
- Geocoding now shows city only (not City, State, Country); cache key bumped
to v2 to invalidate old entries
- Photo info overlay: added XSmall (22px) text size option (default); for
bottom positions city is shown above date; for top positions date stays on top
- Slide duration change now takes effect immediately without waiting for the
current timer to expire
- Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle)
to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so
they appear in release builds
- Sync timeout is now configurable (15–120s, default 60s) in both the
in-app settings and web UI; passed through to iCloud sync service so
slow connections don't fail with the old 30s hard-coded limit
- Auto-sync now fires on every save when a source is configured, not
only when the URL changes — so tapping Save always kicks off a sync
- Wi-Fi Settings shortcut added to Android section of settings screen
(opens system Wi-Fi page via MethodChannel)
- Device IP/web UI URL banner shown at top of settings screen
- Web UI save now calls syncFromConfig so autostart SharedPreferences
are updated immediately without requiring an app restart
- BootReceiver logs upgraded to Log.i so they appear in release builds
- Add FRAME_SETUP.md with quick ADB commands for setting up a new frame
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ferni7@andrewd-cg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add iCloud shared album sync, web settings UI, - #22

Open
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master
Open

Add iCloud shared album sync, web settings UI, #22
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master

Conversation

@ferni7

Copy link
Copy Markdown

Features:

  • iCloud shared album sync: two-step API (webstream + webasseturls), handles 330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro key '2049'), filters videos, checksum sidecar files for upgrade detection
  • Embedded web settings server on port 8080 with full settings form and sync controls; web UI save now also writes to SharedPreferences so BootReceiver picks up changes without requiring an app restart
  • Geocoding now shows city only (not City, State, Country); cache key bumped to v2 to invalidate old entries
  • Photo info overlay: added XSmall (22px) text size option (default); for bottom positions city is shown above date; for top positions date stays on top
  • Slide duration change now takes effect immediately without waiting for the current timer to expire
  • Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle) to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so they appear in release builds

…ements
Features:
- iCloud shared album sync: two-step API (webstream + webasseturls), handles
330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro
key '2049'), filters videos, checksum sidecar files for upgrade detection
- Embedded web settings server on port 8080 with full settings form and sync
controls; web UI save now also writes to SharedPreferences so BootReceiver
picks up changes without requiring an app restart
- Geocoding now shows city only (not City, State, Country); cache key bumped
to v2 to invalidate old entries
- Photo info overlay: added XSmall (22px) text size option (default); for
bottom positions city is shown above date; for top positions date stays on top
- Slide duration change now takes effect immediately without waiting for the
current timer to expire
- Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle)
to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so
they appear in release builds
- Sync timeout is now configurable (15–120s, default 60s) in both the
in-app settings and web UI; passed through to iCloud sync service so
slow connections don't fail with the old 30s hard-coded limit
- Auto-sync now fires on every save when a source is configured, not
only when the URL changes — so tapping Save always kicks off a sync
- Wi-Fi Settings shortcut added to Android section of settings screen
(opens system Wi-Fi page via MethodChannel)
- Device IP/web UI URL banner shown at top of settings screen
- Web UI save now calls syncFromConfig so autostart SharedPreferences
are updated immediately without requiring an app restart
- BootReceiver logs upgraded to Log.i so they appear in release builds
- Add FRAME_SETUP.md with quick ADB commands for setting up a new frame
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ferni7@andrewd-cg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add iCloud shared album sync, web settings UI, - #22

Open
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master
Open

Add iCloud shared album sync, web settings UI, #22
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master

Conversation

@ferni7

Copy link
Copy Markdown

Features:

  • iCloud shared album sync: two-step API (webstream + webasseturls), handles 330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro key '2049'), filters videos, checksum sidecar files for upgrade detection
  • Embedded web settings server on port 8080 with full settings form and sync controls; web UI save now also writes to SharedPreferences so BootReceiver picks up changes without requiring an app restart
  • Geocoding now shows city only (not City, State, Country); cache key bumped to v2 to invalidate old entries
  • Photo info overlay: added XSmall (22px) text size option (default); for bottom positions city is shown above date; for top positions date stays on top
  • Slide duration change now takes effect immediately without waiting for the current timer to expire
  • Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle) to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so they appear in release builds

…ements
Features:
- iCloud shared album sync: two-step API (webstream + webasseturls), handles
330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro
key '2049'), filters videos, checksum sidecar files for upgrade detection
- Embedded web settings server on port 8080 with full settings form and sync
controls; web UI save now also writes to SharedPreferences so BootReceiver
picks up changes without requiring an app restart
- Geocoding now shows city only (not City, State, Country); cache key bumped
to v2 to invalidate old entries
- Photo info overlay: added XSmall (22px) text size option (default); for
bottom positions city is shown above date; for top positions date stays on top
- Slide duration change now takes effect immediately without waiting for the
current timer to expire
- Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle)
to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so
they appear in release builds
- Sync timeout is now configurable (15–120s, default 60s) in both the
in-app settings and web UI; passed through to iCloud sync service so
slow connections don't fail with the old 30s hard-coded limit
- Auto-sync now fires on every save when a source is configured, not
only when the URL changes — so tapping Save always kicks off a sync
- Wi-Fi Settings shortcut added to Android section of settings screen
(opens system Wi-Fi page via MethodChannel)
- Device IP/web UI URL banner shown at top of settings screen
- Web UI save now calls syncFromConfig so autostart SharedPreferences
are updated immediately without requiring an app restart
- BootReceiver logs upgraded to Log.i so they appear in release builds
- Add FRAME_SETUP.md with quick ADB commands for setting up a new frame
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ferni7@andrewd-cg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add iCloud shared album sync, web settings UI, - #22

Open
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master
Open

Add iCloud shared album sync, web settings UI, #22
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master

Conversation

@ferni7

Copy link
Copy Markdown

Features:

  • iCloud shared album sync: two-step API (webstream + webasseturls), handles 330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro key '2049'), filters videos, checksum sidecar files for upgrade detection
  • Embedded web settings server on port 8080 with full settings form and sync controls; web UI save now also writes to SharedPreferences so BootReceiver picks up changes without requiring an app restart
  • Geocoding now shows city only (not City, State, Country); cache key bumped to v2 to invalidate old entries
  • Photo info overlay: added XSmall (22px) text size option (default); for bottom positions city is shown above date; for top positions date stays on top
  • Slide duration change now takes effect immediately without waiting for the current timer to expire
  • Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle) to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so they appear in release builds

…ements
Features:
- iCloud shared album sync: two-step API (webstream + webasseturls), handles
330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro
key '2049'), filters videos, checksum sidecar files for upgrade detection
- Embedded web settings server on port 8080 with full settings form and sync
controls; web UI save now also writes to SharedPreferences so BootReceiver
picks up changes without requiring an app restart
- Geocoding now shows city only (not City, State, Country); cache key bumped
to v2 to invalidate old entries
- Photo info overlay: added XSmall (22px) text size option (default); for
bottom positions city is shown above date; for top positions date stays on top
- Slide duration change now takes effect immediately without waiting for the
current timer to expire
- Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle)
to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so
they appear in release builds
- Sync timeout is now configurable (15–120s, default 60s) in both the
in-app settings and web UI; passed through to iCloud sync service so
slow connections don't fail with the old 30s hard-coded limit
- Auto-sync now fires on every save when a source is configured, not
only when the URL changes — so tapping Save always kicks off a sync
- Wi-Fi Settings shortcut added to Android section of settings screen
(opens system Wi-Fi page via MethodChannel)
- Device IP/web UI URL banner shown at top of settings screen
- Web UI save now calls syncFromConfig so autostart SharedPreferences
are updated immediately without requiring an app restart
- BootReceiver logs upgraded to Log.i so they appear in release builds
- Add FRAME_SETUP.md with quick ADB commands for setting up a new frame
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ferni7@andrewd-cg
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add iCloud shared album sync, web settings UI, - #22

Open
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master
Open

Add iCloud shared album sync, web settings UI, #22
ferni7 wants to merge 2 commits into
micw:masterfrom
ferni7:master

Conversation

@ferni7

Copy link
Copy Markdown

Features:

  • iCloud shared album sync: two-step API (webstream + webasseturls), handles 330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro key '2049'), filters videos, checksum sidecar files for upgrade detection
  • Embedded web settings server on port 8080 with full settings form and sync controls; web UI save now also writes to SharedPreferences so BootReceiver picks up changes without requiring an app restart
  • Geocoding now shows city only (not City, State, Country); cache key bumped to v2 to invalidate old entries
  • Photo info overlay: added XSmall (22px) text size option (default); for bottom positions city is shown above date; for top positions date stays on top
  • Slide duration change now takes effect immediately without waiting for the current timer to expire
  • Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle) to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so they appear in release builds

…ements
Features:
- iCloud shared album sync: two-step API (webstream + webasseturls), handles
330 redirects, picks best derivative by pixel dimensions (handles iPhone 15 Pro
key '2049'), filters videos, checksum sidecar files for upgrade detection
- Embedded web settings server on port 8080 with full settings form and sync
controls; web UI save now also writes to SharedPreferences so BootReceiver
picks up changes without requiring an app restart
- Geocoding now shows city only (not City, State, Country); cache key bumped
to v2 to invalidate old entries
- Photo info overlay: added XSmall (22px) text size option (default); for
bottom positions city is shown above date; for top positions date stays on top
- Slide duration change now takes effect immediately without waiting for the
current timer to expire
- Boot autostart: BootReceiver uses AlarmManager (setExactAndAllowWhileIdle)
to schedule MainActivity launch 3s after boot; logs upgraded to Log.i so
they appear in release builds
- Sync timeout is now configurable (15–120s, default 60s) in both the
in-app settings and web UI; passed through to iCloud sync service so
slow connections don't fail with the old 30s hard-coded limit
- Auto-sync now fires on every save when a source is configured, not
only when the URL changes — so tapping Save always kicks off a sync
- Wi-Fi Settings shortcut added to Android section of settings screen
(opens system Wi-Fi page via MethodChannel)
- Device IP/web UI URL banner shown at top of settings screen
- Web UI save now calls syncFromConfig so autostart SharedPreferences
are updated immediately without requiring an app restart
- BootReceiver logs upgraded to Log.i so they appear in release builds
- Add FRAME_SETUP.md with quick ADB commands for setting up a new frame
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ferni7@andrewd-cg