116 Commits
Author SHA1 Message Date
ponzischeme89 d5632e844a 0.3.49 2026-08-28 23:00:02 +12:00
ponzischeme89 3e89036f7b 0.3.38 2026-08-28 09:37:05 +12:00
ponzischeme89 0b12c09deb 0.3.38 2026-08-27 21:06:27 +12:00
ponzischeme89 07004bd2e2 0.3.37 2026-08-27 20:33:05 +12:00
ponzischeme89 2f4bd0da31 0.3.35 2026-08-27 15:50:15 +12:00
ponzischeme89 6b2bf767e2 0.3.34 2026-08-27 11:04:51 +12:00
ponzischeme89 b0b8990f90 0.3.33 2026-08-27 07:31:57 +12:00
ponzischeme89 394a6d9b57 0.3.33 2026-08-27 07:31:03 +12:00
ponzischeme89 3d42c98947 0.3.32 2026-08-26 21:31:05 +12:00
ponzischeme89 a5f9a91832 0.3.31 - Studio logo to station indent 2026-08-26 12:02:12 +12:00
ponzischeme89 263177a9e4 0.3.29 - More search fixes 2026-08-26 10:31:25 +12:00
ponzischeme89 0bef5b8927 0.3.28 - More search fixes 2026-08-26 09:35:12 +12:00
ponzischeme89 9d11bb7282 0.3.27 - Omni search fixes, Services in genre browser.. 2026-08-26 08:42:56 +12:00
ponzischeme89 919a12f8d5 0.3.26 2026-08-25 23:47:03 +12:00
ponzischeme89 3c247a0afd 0.3.25 2026-08-25 23:33:48 +12:00
ponzischeme89 d0f3ed94de 0.3.24 2026-08-25 22:46:01 +12:00
ponzischeme89 772635784c 0.3.23 - Search radarr/sonarr 2026-08-25 15:39:43 +12:00
ponzischeme89 0fcc02f57e 0.3.22 - PINs 2026-08-25 11:39:55 +12:00
ponzischeme89 396d35e2f5 0.3.21 2026-08-24 22:56:46 +12:00
ponzischeme89 4f95767e2f 0.3.20 2026-08-24 13:13:44 +12:00
ponzischeme89 a6bd655786 0.3.18 2026-08-24 10:00:04 +12:00
ponzischeme89andClaude Opus 5 1ae07b93ec 0.3.17
Fix the crash on every cold start of a signed-in television.

MembyIcons' currentIconPack and DesignTokens' activePalette are process-wide
mutableStateOf. The first thing in the process to touch either was ThemeSync,
applying the cached pack and palette from an IO thread within milliseconds of
the settings store's first emission -- reliably after MainActivity had taken
its composition snapshot. A state object created in a newer snapshot than the
composition reading it makes that read throw, so HomeNavigation's first
MembyIcon.mark read died with "Reading a state that was created after the
snapshot was taken".

MembyApp.onCreate now creates both on the main thread before anything else can.
Both calls are value-level no-ops; what matters is the thread and the ordering.

It was invisible on a fresh install because first-run and sign-in draw no marks,
which is why clearing app data appeared to fix it -- and it looked like an update
bug only because replacing the APK is what forces a cold start with the launcher
as the first screen. A reboot did it too.

Also: AppRoot filtered neither read of the persisted requiredUpdateVersion
through requiredUpdateSatisfied, so a set that had just installed the demanded
version opened on the retired-build screen it was updating to escape, until a
/v1/update round trip completed. Both reads now apply the rule the in-memory
signal and markRequiredUpdate already did.

Verified on 10.0.0.238: three cold starts, no crash, launcher fully drawn.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HoEWidWhZu9kZzNURatmcT
2026-08-24 09:58:09 +12:00
ponzischeme89 067395a362 0.3.16 2026-08-24 09:16:19 +12:00
ponzischeme89 30155e1c5f 0.3.15 2026-08-24 08:16:55 +12:00
ponzischeme89 72cb3c376e 0.3.14 2026-08-24 07:43:17 +12:00
ponzischeme89 f1d2c2f2eb 0.3.14 2026-08-24 07:29:23 +12:00
ponzischeme89 6ba8728dce 0.3.13 2026-08-23 20:25:20 +12:00
ponzischeme89 5107c4b0fc 0.3.12 2026-08-23 18:55:04 +12:00
ponzischeme89 aa8f16f21b 0.3.11 2026-08-23 18:21:18 +12:00
ponzischeme89 c809127996 0.3.10 2026-08-23 17:45:46 +12:00
ponzischeme89 d4e1cb2fbf 0.3.09 2026-08-23 16:38:15 +12:00
ponzischeme89 63c3df11b2 0.3.08 2026-08-23 14:16:03 +12:00
ponzischeme89 89ebe21201 0.3.07 2026-08-23 13:20:54 +12:00
ponzischeme89 766cea2199 0.3.06 2026-08-23 09:40:45 +12:00
ponzischeme89 9a1f44da46 0.3.05 2026-08-22 21:47:54 +12:00
ponzischeme89 d2f7f84cbf 0.3.04 2026-08-22 20:01:49 +12:00
ponzischeme89 7d77700c7b 0.3.03 2026-08-22 18:40:50 +12:00
ponzischeme89 9858e44710 0.3.02 2026-08-22 15:32:51 +12:00
ponzischeme89 b3e3f62c54 0.3.01 2026-08-22 12:38:26 +12:00
ponzischeme89 f982d391b9 0.3.01 2026-08-22 11:32:50 +12:00
ponzischeme89 b131932a4e 0.3.00 2026-08-22 08:26:10 +12:00
ponzischeme89 3ae8ffad64 0.2.99 2026-08-22 07:15:10 +12:00
ponzischeme89 5df4a1aaa3 0.2.99 2026-08-22 07:15:03 +12:00
ponzischeme89 4fd690a127 0.2.98 2026-08-22 06:29:34 +12:00
ponzischeme89 ac4cf32746 0.2.98 2026-08-22 06:29:31 +12:00
ponzischeme89 8b3d80a0a6 0.2.97 2026-08-21 23:15:42 +12:00
ponzischeme89 c85fab4459 0.2.96 2026-08-21 22:40:31 +12:00
ponzischeme89 32019f2e20 0.2.95 - Refactor 2026-08-21 22:07:02 +12:00
ponzischeme89 02247a6287 0.2.94 2026-08-21 21:04:57 +12:00
ponzischeme89 9c7dec32a8 0.2.93 2026-08-21 17:16:47 +12:00
ponzischeme89 57edfaa60b 0.2.93 2026-08-21 16:30:29 +12:00
ponzischeme89 891d3dfedc 0.2.92 2026-08-21 16:02:25 +12:00
ponzischeme89 4439277c86 0.2.91 2026-08-21 15:24:22 +12:00
ponzischeme89 4c48ef8b19 0.2.90 2026-08-21 14:06:36 +12:00
ponzischeme89 fb97980775 0.2.89 2026-08-21 13:22:04 +12:00
ponzischeme89 243b7c8b90 0.2.88 2026-08-21 12:12:03 +12:00
ponzischeme89 48043dbae2 0.2.87 2026-08-21 11:36:22 +12:00
ponzischeme89 aac8438764 0.2.86 2026-08-21 11:19:10 +12:00
ponzischeme89 af1ca4370c 0.2.85 2026-08-21 10:38:41 +12:00
ponzischeme89 5467fba0eb 0.2.84 2026-08-21 09:54:44 +12:00
ponzischeme89 f1164db2c5 0.2.82 2026-08-20 15:06:00 +12:00
ponzischeme89 549f9c5eed Untrack .tmp-go-cache 2026-08-20 10:05:51 +12:00
ponzischeme89 434371e9cf 0.2.81 2026-08-20 07:54:03 +12:00
ponzischeme89 769fe01c84 0.2.80 2026-08-19 21:30:44 +12:00
ponzischeme89 0782545013 0.2.79 - Slow api fixes 2026-08-19 18:08:00 +12:00
ponzischeme89 590e069366 0.2.78 2026-08-19 14:25:44 +12:00
ponzischeme89 2b43b9ef12 0.2.77 2026-08-19 06:57:59 +12:00
ponzischeme89 8c847c59b8 0.2.76 - Icon Packs 2026-08-18 14:59:29 +12:00
ponzischeme89 36d171e51b 0.2.75 2026-08-18 08:41:48 +12:00
ponzischeme89 1da91e40a1 0.1.52 Gateway 2026-08-17 19:09:17 +12:00
ponzischeme89 d5a8d3ad88 0.2.74 - Genres brwoser 2026-08-17 14:56:13 +12:00
ponzischeme89 43ab18854c 0.2.73 2026-08-17 13:13:10 +12:00
ponzischeme89 12b27c77c3 0.2.72 - Magic button, Next up fixes 2026-08-17 11:41:36 +12:00
ponzischeme89 36cb1324fd 0.2.71 2026-08-17 07:34:23 +12:00
ponzischeme89 93fb0fd728 0.2.70 - Cold start improvements 2026-08-16 22:08:43 +12:00
ponzischeme89 845fa349e4 0.2.69 - Homepage loading improvements pass 2026-08-16 21:20:55 +12:00
ponzischeme89 b9374baaf1 0.2.68 2026-08-16 12:13:51 +12:00
ponzischeme89 bd3732fba5 0.2.67 - Detail pages improvements 2026-08-16 09:02:17 +12:00
ponzischeme89 4bc4b075ec 0.2.66 - End Credits improvements / Gateway: 0.1.47 - End credits redesign 2026-08-15 22:26:17 +12:00
ponzischeme89 e528d04b43 0.2.65 - End Credits wiring / Gateway: 0.1.45 - Credits 2026-08-15 21:11:43 +12:00
ponzischeme89 d5d47473a2 0.2.64 update 2026-08-15 09:23:26 +12:00
ponzischeme89 a2ca7e8061 Fix release history ordering 2026-08-14 13:41:43 +12:00
ponzischeme89 9775041c30 Merge remote-tracking branch 'github/main'
# Conflicts:
#	CHANGELOG.md
#	app/build.gradle.kts
2026-08-14 13:33:05 +12:00
ponzischeme89 05d95f51cd Release Memby 0.2.64 2026-08-14 13:32:14 +12:00
ponzischeme89 ad0c74f880 0.2.63 update 2026-08-14 11:49:07 +12:00
ponzischeme89 06b6490ac9 0.2.63 update 2026-08-14 11:47:32 +12:00
ponzischeme89 bd5cd8a4b1 Bump Memby app to 0.2.63 2026-08-14 11:46:36 +12:00
ponzischeme89 9a8ecbdceb Bump gateway to 0.1.42 2026-08-14 11:06:47 +12:00
ponzischeme89 48c2809041 Bump gateway to 0.1.41 2026-08-14 10:48:12 +12:00
ponzischeme89 19f08e6293 Fix Sonarr TV request policy and bump gateway to 0.1.40 2026-08-14 10:30:25 +12:00
ponzischeme89 5e2ed3d12e 0.1.38 gateway 2026-08-14 09:40:03 +12:00
ponzischeme89andClaude Opus 5 abc392d30b 0.2.62 - Roll back the custom playback engine
0.2.61 shipped the groundwork for Memby playing video itself and caused
playback problems in the field, so it is withdrawn. This is 0.2.60's code
released as 0.2.62: Android refuses an APK whose versionCode went
backwards, so a set already on 0.2.61 (20061) could not install a 0.2.60
build (20060).

The 0.2.61 work is parked on parked/0.2.61 and tagged broken-0.2.61.

Also corrects the changelog headings the reset left behind: the top block
was labelled 0.2.59 while holding 0.2.60's notes, and 0.2.59's own two
entries were folded into it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 19:28:10 +12:00
ponzischeme89 a0b84dfc37 0.2.60 - Improvments to Requests, placeholders 2026-08-12 16:54:41 +12:00
ponzischeme89 4fb68f4bbc 0.2.59 - Settings save fixes 2026-08-12 15:39:08 +12:00
ponzischeme89 613f203cf9 0.2.58 - Requests module 2026-08-12 14:13:19 +12:00
ponzischeme89 64f19aeef2 0.2.57 - Traliers bug fixes 2026-08-12 13:08:53 +12:00
ponzischeme89 f2d052dbf6 0.2.56 - Reliable trailer playback 2026-08-12 11:05:07 +12:00
ponzischeme89 9777eb0952 0.2.55 - Remote config/Request fixes 2026-08-12 09:57:56 +12:00
ponzischeme89 4b31946635 0.2.54 2026-08-12 08:25:15 +12:00
ponzischeme89 e30962245e 0.2.53 2026-08-12 07:33:24 +12:00
ponzischeme89 5fed3360c2 0.2.52 2026-08-11 23:41:10 +12:00
ponzischeme89 0e183cf560 0.2.51 - update checker fixes 2026-08-11 17:26:48 +12:00
ponzischeme89 226136b4e7 0.2.51 2026-08-11 17:18:04 +12:00
ponzischeme89 5e5849f985 0.2.50 2026-08-11 15:18:26 +12:00
ponzischeme89 594159c0ae Release 0.2.49 2026-08-11 13:46:53 +12:00
ponzischeme89 f46d6596c5 0.2.48 - Tv calender fixes 2026-08-11 12:08:51 +12:00
ponzischeme89 dd2dd497f2 0.2.45 - Server side git commits 2026-08-10 20:54:00 +12:00
ponzischeme89 4c47a5f8a0 0.2.45 - Server side git commits 2026-08-10 20:39:26 +12:00
ponzischeme89 56c1167382 0.2.45 - Advanced analytics, logout old versions 2026-08-10 20:24:22 +12:00
ponzischeme89 63f0768507 Release v0.2.43 2026-08-10 13:09:38 +12:00
ponzischeme89 12b519762b 0.2.42 - DTS surround sound support 2026-08-10 12:24:25 +12:00
ponzischeme89 f41db66ac6 0.2.42 - DTS surround sound support 2026-08-10 12:23:23 +12:00
ponzischeme89 32c0054c44 0.2.41 - Preroll fixes, theme fixes 2026-08-10 09:39:09 +12:00
ponzischeme89 e1bb687df4 0.2.40 & server 0.1.30 2026-08-10 08:54:23 +12:00
ponzischeme89 78d26effbf 0.2.40 2026-08-10 08:37:08 +12:00
ponzischeme89 d2f2eb62be Improve playback, preroll and TV experience 2026-08-10 07:11:14 +12:00
3413 changed files with 171532 additions and 16900 deletions
+103 -18
View File
@@ -7,6 +7,20 @@ MEMBY_EMBY_URL=https://molise.bounceme.net
# above — video goes device -> Emby directly, never through the gateway. # above — video goes device -> Emby directly, never through the gateway.
MEMBY_EMBY_PUBLIC_URL=https://molise.bounceme.net MEMBY_EMBY_PUBLIC_URL=https://molise.bounceme.net
# Where the gateway reads media *bytes* from, which is a different question from the two
# addresses above and matters for exactly one subsystem.
#
# Credits detection is the only server-side thing that opens a media file, and it does so as
# ranged reads over the last few minutes of it. The gateway runs on the NAS (10.0.0.213) and
# the media and Emby live on the HTPC (10.0.0.2), so with this unset every one of those
# ranged reads takes MEMBY_EMBY_URL: out to the DDNS name, through TLS and the reverse proxy,
# and back in — and a proxy that buffers turns the ranged read into a whole-file read, which
# is the one thing the scan design exists to avoid.
#
# Unset, it falls back to MEMBY_EMBY_URL and behaves exactly as before. Confirm the port your
# Emby listens on over plain HTTP on the LAN before uncommenting.
MEMBY_EMBY_MEDIA_URL=http://10.0.0.2:8096
# Postgres password for the memby role. Generate one, e.g. # Postgres password for the memby role. Generate one, e.g.
# openssl rand -base64 24 # openssl rand -base64 24
POSTGRES_PASSWORD=7dfc3eb07108013c7bea9787457397551b5eb9059adac51aea4741f4ec649be2 POSTGRES_PASSWORD=7dfc3eb07108013c7bea9787457397551b5eb9059adac51aea4741f4ec649be2
@@ -14,10 +28,12 @@ POSTGRES_PASSWORD=7dfc3eb07108013c7bea9787457397551b5eb9059adac51aea4741f4ec649b
# Fixed NAS host port used by the mserver.sublogue.com reverse proxy. # Fixed NAS host port used by the mserver.sublogue.com reverse proxy.
MEMBY_PORT=32768 MEMBY_PORT=32768
# INFO is recommended. DEBUG also logs successful health, status and artwork requests, # INFO is recommended. DEBUG adds diagnostic request and playback detail; TRACE adds the
# playback progress reports and search terms. # deepest request and playback-negotiation trace. Sensitive structured values are redacted.
MEMBY_LOG_LEVEL=INFO MEMBY_LOG_LEVEL=INFO
MEMBY_LOG_BUFFER_CAPACITY=5000 MEMBY_LOG_BUFFER_CAPACITY=5000
# The Compose default is a named-volume-backed JSONL archive restored by the admin log.
MEMBY_LOG_HISTORY_PATH=/data/logs/events.jsonl
# console (default) is one aligned line per event, timestamp first and no `time=` key. # console (default) is one aligned line per event, timestamp first and no `time=` key.
# logfmt restores slog's own key=value line; json is for a log collector. # logfmt restores slog's own key=value line; json is for a log collector.
MEMBY_LOG_FORMAT=console MEMBY_LOG_FORMAT=console
@@ -34,6 +50,10 @@ MEMBY_RECOMMEND_TTL=24h
# MEMBY_RECOMMENDATION_WEIGHTS={"ExplorationRate":0.08,"MinimumEvidence":2,"ImpressionPenalty":0.12} # MEMBY_RECOMMENDATION_WEIGHTS={"ExplorationRate":0.08,"MinimumEvidence":2,"ImpressionPenalty":0.12}
MEMBY_RECOMMENDATION_WEIGHTS= MEMBY_RECOMMENDATION_WEIGHTS=
# Optional complete Remote Config document. Leave blank for bundled-equivalent defaults.
# Every change must increase configVersion; see server/REMOTE_CONFIG.md.
MEMBY_REMOTE_CONFIG_JSON=
# Maximum number of distinct Memby TVs one Emby user may keep signed in. # Maximum number of distinct Memby TVs one Emby user may keep signed in.
# Admin interface at https://mserver.sublogue.com/admin/ — library imports, the # Admin interface at https://mserver.sublogue.com/admin/ — library imports, the
@@ -41,12 +61,16 @@ MEMBY_RECOMMENDATION_WEIGHTS=
# openssl rand -hex 32 # openssl rand -hex 32
MEMBY_ADMIN_TOKEN=4fad67d508558efee5cc5ae05694105421d4c79d35ee2333a817b3791235cd8c MEMBY_ADMIN_TOKEN=4fad67d508558efee5cc5ae05694105421d4c79d35ee2333a817b3791235cd8c
# Public gateway address and a dedicated token used only by the Gitea release workflow. # Public gateway address. Release publishing uses the file-backed secret in
# Generate the token with: openssl rand -hex 32 # MEMBY_SECRETS_DIR, never a value in this environment file.
MEMBY_PUBLIC_URL=https://mserver.sublogue.com MEMBY_PUBLIC_URL=https://mserver.sublogue.com
MEMBY_RELEASE_PUBLISH_TOKEN=4b0a891382f056d6ab2ddb43ad08fbbadda0a5a7db9371c7d90fd57b38d083d2 MEMBY_SECRETS_DIR=/share/Docker/Memby-secrets
# Library import. Hourly incremental keeps up with episodes added through the day. # Catalogue sweep. With both *arr webhooks below configured this is reconciliation for
# media Sonarr and Radarr do not manage — a file dropped in by hand, a title edited in
# Emby, a notification that never arrived — so it can be lengthened to 6h. Without them
# it is the only way a new title is ever found and must stay frequent. The console can
# override it at Settings > Catalogue sweep without a redeployment.
MEMBY_SYNC_INTERVAL=1h MEMBY_SYNC_INTERVAL=1h
MEMBY_SYNC_ON_START=false MEMBY_SYNC_ON_START=false
@@ -61,21 +85,36 @@ MEMBY_SYNC_API_KEY=56775917938841e7ac1b6a233d4d5075
MEMBY_SONARR_URL=http://10.0.0.2:8989 MEMBY_SONARR_URL=http://10.0.0.2:8989
MEMBY_SONARR_API_KEY=6b608b051ee24582925773bd5dfbe37a MEMBY_SONARR_API_KEY=6b608b051ee24582925773bd5dfbe37a
MEMBY_SONARR_TTL=5m MEMBY_SONARR_TTL=5m
# How long after an episode airs the "aired, coming soon" banner keeps being offered. # How long an episode banner keeps being offered — both the "aired, coming soon" one and
# 0 turns the banners off and leaves the airing-today row alone. # the "new episode added" one a finished scan produces. 0 turns both off and leaves the
# airing-today row alone.
MEMBY_SONARR_ALERT_WINDOW=3h MEMBY_SONARR_ALERT_WINDOW=3h
# Shared secret for Sonarr's webhook, which is how the catalogue learns that an episode
# landed rather than waiting for the next sweep. In Sonarr: Settings > Connect > + >
# Webhook, with On Import, On Upgrade, On Rename, On Episode File Delete and On Series
# Delete ticked, URL https://<public gateway>/hooks/sonarr?token=<this value>. Empty
# makes the hook 404.
MEMBY_SONARR_WEBHOOK_TOKEN=09f091f0f2ee8af3cba1aac29557e344
# How long after a webhook the gateway first looks for the file in Emby. Sonarr and
# Radarr fire the moment they have moved the file into place and Emby has not scanned it
# yet, so asking immediately spends a request to learn nothing.
MEMBY_ARR_INGEST_SETTLE=1m
# Optional Radarr calendar integration. Upcoming movies are selected strictly from # Optional Radarr calendar integration. Upcoming movies cover the coming month, ordered by
# Radarr's digital release date; theatrical and physical dates are ignored. # Radarr's digital release date. A film with no digital date yet is estimated at its cinema
# date plus 30 days and says so on the card; physical dates are ignored.
MEMBY_RADARR_URL=http://10.0.0.2:7878 MEMBY_RADARR_URL=http://10.0.0.2:7878
MEMBY_RADARR_API_KEY=d393acb157a44dc2b0e2aede96278ad5 MEMBY_RADARR_API_KEY=d393acb157a44dc2b0e2aede96278ad5
MEMBY_RADARR_TTL=5m MEMBY_RADARR_TTL=5m
# Shared secret for Radarr's "On Import" webhook, which announces a newly added film on # Shared secret for Radarr's webhook, which is how the catalogue learns that a film landed
# every TV that is awake. In Radarr: Settings > Connect > + > Webhook, On Import only, # rather than waiting for the next sweep. In Radarr: Settings > Connect > + > Webhook, with
# URL https://<public gateway>/hooks/radarr?token=<this value>. Empty makes the hook 404. # On Import, On Upgrade, On Rename, On Movie File Delete and On Movie Delete ticked, URL
# https://<public gateway>/hooks/radarr?token=<this value>. Empty makes the hook 404.
# The catalogue reads all five; the banner is announced once the film has actually scanned
# in, and only for an import — an upgrade replaced a film that was already there.
MEMBY_RADARR_WEBHOOK_TOKEN=bfa059594adeadf9105c27481a5fd758 MEMBY_RADARR_WEBHOOK_TOKEN=bfa059594adeadf9105c27481a5fd758
# How long an imported film keeps being announced, so a TV switched on shortly after the # How long a newly scanned film keeps being announced, so a TV switched on shortly after
# import still hears about it. 0 turns the banners off. # the import still hears about it. 0 turns the banners off.
MEMBY_RADARR_ALERT_WINDOW=3h MEMBY_RADARR_ALERT_WINDOW=3h
# Optional Bazarr integration, one of the two providers a viewer can fetch a missing # Optional Bazarr integration, one of the two providers a viewer can fetch a missing
@@ -89,11 +128,11 @@ MEMBY_RADARR_ALERT_WINDOW=3h
# redeployment. The second provider, OpenSubtitles, is configured entirely on that page — # redeployment. The second provider, OpenSubtitles, is configured entirely on that page —
# it needs only an API key, and the credentials live in the database rather than in this # it needs only an API key, and the credentials live in the database rather than in this
# file. # file.
MEMBY_BAZARR_URL=http://10.0.0.2:6767 #MEMBY_BAZARR_URL=http://10.0.0.2:6767
MEMBY_BAZARR_API_KEY=e079ab79c1e32b5cf648d079f4421e11 #MEMBY_BAZARR_API_KEY=e079ab79c1e32b5cf648d079f4421e11
# How long Bazarr's movie/series/episode listings are cached. They exist only to turn an # How long Bazarr's movie/series/episode listings are cached. They exist only to turn an
# Emby item into the Radarr/Sonarr id Bazarr keys on. # Emby item into the Radarr/Sonarr id Bazarr keys on.
MEMBY_BAZARR_TTL=5m #MEMBY_BAZARR_TTL=5m
# A manual search queries live subtitle providers and is legitimately slow, so it gets a # A manual search queries live subtitle providers and is legitimately slow, so it gets a
# longer timeout than the rest of the upstreams. Too short reads to a viewer as "no # longer timeout than the rest of the upstreams. Too short reads to a viewer as "no
# subtitles found" rather than as a timeout. # subtitles found" rather than as a timeout.
@@ -104,6 +143,25 @@ MEMBY_BAZARR_TIMEOUT=45s
# raises the matching "back online" one. 0 turns the probe and both banners off. # raises the matching "back online" one. 0 turns the probe and both banners off.
MEMBY_EMBY_HEALTH_INTERVAL=60s MEMBY_EMBY_HEALTH_INTERVAL=60s
# How slow a request has to be before its log line carries a breakdown of where the time
# went: Emby, Postgres, Redis, each *arr, and the gateway's own row assembly and encoding.
# Fast requests carry none deliberately — a breakdown on every /v1/status poll would bury
# the one it exists to reveal. Lower it while chasing one slow screen. The gateway's
# settings page overrides it without a redeployment.
MEMBY_SLOW_REQUEST_THRESHOLD=500ms
# Which reverse proxies the gateway believes when working out where a request came from,
# for the admin console's Remote IP column and the login/trailer logs. X-Forwarded-For
# and X-Real-IP are only honoured when the immediate peer is one of these, so a direct
# client cannot spoof its address with a header. Blank trusts loopback and the private
# ranges (10/8, 172.16/12, 192.168/16, fc00::/7, link-local) — every proxy a home
# deployment puts in front of Memby. Set a comma-separated list of addresses or CIDR
# ranges to narrow or widen it (add your CDN's ranges here if TLS terminates off-site),
# or "none" to trust no proxy. The reverse proxy must be configured to send the headers
# — e.g. nginx: proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; and
# proxy_set_header X-Real-IP $remote_addr;
MEMBY_TRUSTED_PROXIES=
# Optional Tracearr-powered For You signals. Create a read-only public API key in # Optional Tracearr-powered For You signals. Create a read-only public API key in
# Tracearr Settings. Server ID is optional unless Tracearr monitors multiple servers. # Tracearr Settings. Server ID is optional unless Tracearr monitors multiple servers.
MEMBY_TRACEARR_URL=https://tracearr.sublogue.com/ MEMBY_TRACEARR_URL=https://tracearr.sublogue.com/
@@ -111,6 +169,33 @@ MEMBY_TRACEARR_API_KEY=trr_pub_WKSdiZFGZ_10d-zgQ2Wx0H4Ym4NAiIeLBSvf8a6rvZ0
MEMBY_TRACEARR_SERVER_ID=6964b9ed-3a21-4f51-b94b-cd344ec42c1b MEMBY_TRACEARR_SERVER_ID=6964b9ed-3a21-4f51-b94b-cd344ec42c1b
MEMBY_TRACEARR_SYNC_INTERVAL=5m MEMBY_TRACEARR_SYNC_INTERVAL=5m
MEMBY_TRACEARR_FULL_INTERVAL=24h MEMBY_TRACEARR_FULL_INTERVAL=24h
# Credits detection: where an episode's closing credits begin, discovered for the few
# episodes the household is actually about to watch. Tracearr is what says which those are,
# so this never scans the library — it prepares a sliding window a few episodes ahead of
# each viewer and stops. An accepted marker is scanned once per media version; inconclusive
# attempts observe the retry delay configured in the admin console.
#
# It is the only thing in the gateway that reads media bytes, which is why it is off by
# default. With ffmpeg absent it still runs, writing markers from where viewers actually
# stopped — which on a well-watched show is the better signal anyway.
#
# Where those bytes are read FROM is MEMBY_EMBY_MEDIA_URL, near the top of this file beside
# the other Emby addresses. It is the setting that decides whether a scan crosses the LAN to
# the HTPC or goes out to the DDNS name and back through the reverse proxy, so it is worth
# setting before turning this on.
MEMBY_CREDITS_ENABLED=true
# Leave blank to find ffmpeg on the path, which is where the image puts it.
MEMBY_CREDITS_FFMPEG=
# Look-ahead for an ordinary viewer. A binge expands it, a slow viewer contracts it, and
# MAX_PREFETCH is the ceiling nothing exceeds however fast somebody watches.
MEMBY_CREDITS_PREFETCH_EPISODES=3
MEMBY_CREDITS_MAX_PREFETCH=5
# Pending candidates. Past this, low-priority speculation is discarded rather than queued:
# a backlog of episodes nobody reached has stopped describing demand. These three values
# are first-run defaults; Admin Console → Credits detection can override them durably.
MEMBY_CREDITS_QUEUE_LIMIT=20
MEMBY_FOR_YOU_MIN_REBUILD_AGE=24h MEMBY_FOR_YOU_MIN_REBUILD_AGE=24h
MEMBY_FOR_YOU_REFRESH_INTERVAL=24h MEMBY_FOR_YOU_REFRESH_INTERVAL=24h
MEMBY_FOR_YOU_REBUILD_HOUR=4 MEMBY_FOR_YOU_REBUILD_HOUR=4
+9
View File
@@ -57,6 +57,14 @@ jobs:
./gradlew --console=plain testDebugUnitTest assembleRelease \ ./gradlew --console=plain testDebugUnitTest assembleRelease \
-Pmemby.versionName="$VERSION" -Pmemby.versionName="$VERSION"
- name: Verify signed APK
shell: bash
run: |
"$ANDROID_HOME/build-tools/35.0.0/apksigner" verify --verbose --print-certs \
app/build/outputs/apk/release/app-release.apk
echo "APK_SHA256=$(sha256sum app/build/outputs/apk/release/app-release.apk | awk '{print $1}')" \
>> "$GITEA_ENV"
- name: Publish to Memby gateway - name: Publish to Memby gateway
shell: bash shell: bash
env: env:
@@ -67,6 +75,7 @@ jobs:
-X POST \ -X POST \
-H "Authorization: Bearer $RELEASE_TOKEN" \ -H "Authorization: Bearer $RELEASE_TOKEN" \
-F "version=$VERSION" \ -F "version=$VERSION" \
-F "sha256=$APK_SHA256" \
-F "notes=$NOTES" \ -F "notes=$NOTES" \
-F "apk=@app/build/outputs/apk/release/app-release.apk;type=application/vnd.android.package-archive" \ -F "apk=@app/build/outputs/apk/release/app-release.apk;type=application/vnd.android.package-archive" \
https://mserver.sublogue.com/admin/api/release https://mserver.sublogue.com/admin/api/release
+23
View File
@@ -1,6 +1,7 @@
# Android / Gradle # Android / Gradle
*.iml *.iml
.gradle/ .gradle/
.tmp-gradle-run/
.kotlin/ .kotlin/
build/ build/
/captures /captures
@@ -19,12 +20,34 @@ local.properties
.env .env
/server/bin/ /server/bin/
/server/.tmp-go-cache/ /server/.tmp-go-cache/
/server/.tmp-go-build/
# A compiled gateway binary belongs in the release pipeline, never in the tree.
/server/*.exe
# Admin console (Node/Vite) — rebuilt fresh by the Dockerfile's own `npm ci` /
# `npm run build`, exactly as admin-ui/.dockerignore already excludes both from
# the build context. Neither belongs in git.
/admin-ui/node_modules/
/admin-ui/dist/
# Release artefacts and signing material. The keystore must never be committed: # Release artefacts and signing material. The keystore must never be committed:
# whoever holds it can publish an update that installs over Memby. # whoever holds it can publish an update that installs over Memby.
/dist/out/ /dist/out/
*.apk
*.jks *.jks
*.keystore *.keystore
*.p12
*.pfx
*.password
*.secret
/secrets/
# Local environment variants may contain host paths or release settings. The
# checked-in example contains names/placeholders only.
.env.*
!.env.example
# The installed APK a deploy script pulls off a television to compare against. # The installed APK a deploy script pulls off a television to compare against.
/.tmp-memby-installed-base.apk /.tmp-memby-installed-base.apk
.tmp-go-cache
/.gocache-task
@@ -0,0 +1 @@
v1 0013ab9588d3498285dd3386c01febbfe0a0ff4e8d928052fe7496d007c270d3 8d51d08c8018c8793b497ca740b913bf70a638cd4d824913fa511db7db02a07b 20 1787612864447745600
@@ -0,0 +1 @@
v1 0048625f73da410448d2e7d51a687291fbfa7d93a7d8f41855e8f8816fb16d34 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612879321125600
@@ -0,0 +1 @@
v1 004c9752476fe734ebc1d642471ff7ebbeefce65c72112912f2a50063dfbd865 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612883877408500
@@ -0,0 +1 @@
v1 008342c3773e92fbc91a3bbb0d160ae3da7c3a06296ecd344d11455611b8856d e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612874783321800
@@ -0,0 +1 @@
v1 00c37a62977cc7722dcceb9511bead52513d25e2dba5d3db44862fdd3c386621 59cca1b3a8f13ed9cce044598c6924d1feb79aaa757bbf45b45f7ec378a05a61 2050 1787612854823470700
@@ -0,0 +1 @@
v1 00f0cef7d087ecb346c875297d4d8e7295cfb2289185e208c5656f0b3baef9ae 3f9b346ef5f7c86270843a7a35df7ac4662ebbf7ae687586ca79a334ffca9528 431 1787612854735953300
@@ -0,0 +1 @@
v1 01c96271890a3b629b9d80b152413c7c47c96493971afb5398edd8781f4504f2 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612872495618300
@@ -0,0 +1 @@
v1 01e472d8a74cd02bf5de309d92296535e4fb554f8955cb4daff9bfee2e75218d 18137dc2848485192bcd31dc2e75e5d744f4179cf63884280519bc2201675017 114770 1787612867242682800
@@ -0,0 +1 @@
v1 0204e54d929beec3d691570b4dd5cd3e68c4eb6b2885b6251ee9db84bd612bce e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612874835548300
@@ -0,0 +1 @@
v1 023fdda948be7c0177dacd725da85a84cb24f7dd988562564e9bb42b24d81cce e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612872305133700
@@ -0,0 +1 @@
v1 0273bae732ccf0e6cec2cd10d67d176eac60ec34ff1cfe915c3a8f3435dd5518 7807198f53c775496ed9880094d35fc6fbac1fac3169694e59cd537dd192992c 135 1787612872328872800
@@ -0,0 +1 @@
v1 029a577b0caf436b4dc44a295e6385408c106671074a8a96c9465659685170fc 666f7db8f5ab2f23d5afe3621c04400d89a91dd424474f5000de56c28d984cef 87 1787612863471486800
@@ -0,0 +1 @@
v1 02e7e7ccbef956e1fb5813285fbf06c73079966274e294db4e859f0afde83529 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612859924301400
@@ -0,0 +1 @@
v1 02f50f923f0beb73ec63b95330762406f16f91cbe6f87c2c090924ddb5df0c6d e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612875696120300
@@ -0,0 +1 @@
v1 035a04d9e3817bab8af791e08f637bbd25cf26e56277d4e4edcf5f063c06c75d 6c02c4bc61e39fffe69e3b014c09117734af2ee226d73a6a2aa43646eb4d85ed 459 1787612854740617800
@@ -0,0 +1 @@
v1 038ade0befe8f41ba59ba280f14a4c52870787c5e5dfb1a7dd0c41ce314fca6f e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612859819371100
@@ -0,0 +1 @@
v1 044cdd3b2d0d4c6173a4708c35e7c72ade3f49d683f272ccc3dea736833efa29 7c48b5653694c7a65c0578cb270b49d37ea213c90ae1689cde4a63bca3467cc1 28 1787612866159438200
@@ -0,0 +1 @@
v1 045a1350dc420f69f2a0fc2bb6f6df0e18b910690d052296f42bb81e84233ead dd97110e7b00ea2b7f7c6e613e34d3b813d10415c8d9b93487180c7e29147fe2 2552 1787612853220737200
@@ -0,0 +1,13 @@
./counters_supported.go
./coverage.go
./encoding.go
./fuzz.go
./mem.go
./minimize.go
./mutator.go
./mutators_byteslice.go
./pcg.go
./queue.go
./sys_windows.go
./trace.go
./worker.go
@@ -0,0 +1 @@
v1 04656d45036ad7944cfe718bcb519d67592052a0798a8cfc6cbd52134f607ecb 63ea3a9f0ac4c69424e8a1efec065e38af09d49469de8d15b22ecc46407ac8b4 840 1787612884342714500
@@ -0,0 +1 @@
v1 0485235c0022ae167f8a714a33129a827058e00007c7b8603f88ab5d27b709dd e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612868073333200
@@ -0,0 +1,7 @@
./deflate.go
./deflatefast.go
./dict_decoder.go
./huffman_bit_writer.go
./huffman_code.go
./inflate.go
./token.go
@@ -0,0 +1 @@
v1 0502a98a811970efc39c51a11c632c6bf9673de2fbe116db86d9a845dfd7d1ae b1138891e9c761f8beed00cb73b1fcc763f1a89fdfc6942e0c18b265d5675c65 1290816 1787612883970908800
@@ -0,0 +1 @@
v1 0561b7cc0f632758cd64c262260824c2fb59b740583a7777833173d4e6c80df3 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612878131576200
@@ -0,0 +1 @@
v1 056d02df91733acc7710268f4f5055e190905a5a912e3859305395a693acd4a8 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612875059057800
@@ -0,0 +1 @@
v1 0585a070810f8342bd6a5477102e82f0fb6a1d0e26cfd459095440b23fca5f4d 7116c35c1fcecfbdd2b27ea9fa7fcef7b86c8903e86a8bd9401571e216f04bf7 1680 1787612854895118700
@@ -0,0 +1 @@
v1 05a6f5873119063ef3e9e5a5030f106d4ae7dc16639a21157679ede7e6a7c1b9 510fd4d7bda5ce58670a98a61b91f0551a7d38c1acd6d39c3576570e62692123 1056854 1787612884247324100
@@ -0,0 +1 @@
v1 05a952326cb757bd66c8ea076bf42045a6a28652d86f1b36e678c64ef09851a5 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612868073333200
@@ -0,0 +1 @@
v1 05c705cdd66025c9a8e120763eb2ab099bde141d7950025c9319691a67f6cb6f e8b48d94796e409cfb2b8235d3d58fbd1d84cb62b8599732e8c92495e3e3e2dd 1905 1787612854822949500
@@ -0,0 +1 @@
v1 05d8f5d9c73de7ab29b1ec62e3944d593053a31a1da716c3edc38df82b4981ac 879e941c6cff8537553a4bd74a1249ca03d45c9b709e3096b54edb62ddd5a584 293 1787612874214989600
@@ -0,0 +1,5 @@
./doc.go
./errors.go
./format.go
./print.go
./scan.go
@@ -0,0 +1 @@
v1 061060d47e9b1819dbe0c7caef743ec0dd27e330c6e838de9189df70060cb566 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612881087801900
@@ -0,0 +1 @@
v1 066a5c3cb0b1eae6bc71dd5b596f21a5067f3aaec52729d79ac5580d216fd2b6 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612874869040800
@@ -0,0 +1 @@
v1 066d7ac0b406dafe96881c9f5e34388a1e05c3e8c90c34fbbf53bec5b0cfad54 d04c79cee6393d8bbca7cfcffbb1d70bfc9a48f66f3a0f81509f24d61dec229f 44966 1787612945370166500
@@ -0,0 +1 @@
v1 06709c7f029b671367a181a76c818331648f59d5d95275d29590440bda419389 fa965bb298e0768645a877a996708528d09f37bd5b4a10dc978a3a96e7bf1dec 15264 1787612854020967500
@@ -0,0 +1 @@
./tabwriter.go
@@ -0,0 +1 @@
v1 06ad94f36a03e2c6372892850e1f59bc6cd168e3cec7317d047b62d475797a51 3ca1bba1237dfbe301eb622841791a3d34e6691024dee1da90e62672670c3093 209076 1787612870886512600
@@ -0,0 +1 @@
v1 06c073cc89294e71f8785c3c9868c2166013ba86cbf39397df0a16729001b13f 1746dfeb93a7332cc6e24ec1fd2740179d754eda038b42f6b796396c85c8f846 85624 1787612868650302700
@@ -0,0 +1 @@
v1 0700a708cbbccbc6daf16e59af8c2eec33812f12a63caadf650f18459b1b7baa 0969e306e9f80f93efeb4bb924af3796cb308fd50063726ba08c765017ef5445 48278 1787612857443462500
@@ -0,0 +1 @@
v1 072b2951c8848761a1320c3d61773c1955b8a7e24f69ab612e4e5396cac773d7 b6edd17a12ba059f6e83ebcf718badd4cf3c0d54f11d2aee1bbd806ec9712359 16020284 1787612889640806400
@@ -0,0 +1,2 @@
./expr.go
./vers.go
@@ -0,0 +1 @@
v1 07f5d11d608adf5eff0321856d524c1ff3577868f799ef5b167dcc78a624eea1 140f0719d0a0c4c4e6d91220c16833fe5abeee55935ebc3d536d5bac53ded9eb 527 1787612853204095900
@@ -0,0 +1 @@
v1 0823f1052c082c1fd1cd3f260017aa6da3e8f539a3a052a3abd0184f9bc19e41 5bf4ae74f4179ff354e1338c6a9e26ce35a3035aa794aa1466a20d2e84f59047 183884 1787612871094603800
@@ -0,0 +1 @@
v1 082899ff1c29716ca0cee7f9d2bb590a284157eb9b6d73654c166993504be1a5 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612878540471400
@@ -0,0 +1 @@
v1 0830a1a1fefbef7bd9df47b4c6c7d6510bd5e1dab79dc9bb2b95cbf19ebd66db 2bf673b875b9edd287e70363258381e160b747525566b68c68a011af513f69ff 27 1787612878550021900
@@ -0,0 +1 @@
v1 083f9fcc00681809ac2e21ad87a08b875ebd0945e6fd597a18f3060b6259657f e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612879958847700
@@ -0,0 +1 @@
v1 08536fd52b7c97aaf02a09c845d39b1a7d4cc922029ff961b41b719b89552f23 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612865981553600
@@ -0,0 +1 @@
v1 0884c3817d4b67abdc77884b062f78cc1d48435832162f7c64d3ed89f091ef4e d536f40f866c9dc07def214fa209d8ed612e1cbeb707b47fee4a3d05747aa0ce 367 1787612854429766500
@@ -0,0 +1 @@
v1 0897401b3431d5f6d4b0be96dc460a316947218af9088b4b3b84d0c23944b827 0f736c801547f80942187afd5864006708142b1901dc0bff87a7ae97a05cadc4 56 1787612866007487900
@@ -0,0 +1 @@
v1 089c046295371713147afcf024ae06c8238350bd0276c4742198df5451d0e683 66d855a470d9d45811ee0cf87299663a0c18c70f87b54610cff90fd7c8108f6e 909 1787612853660410000
@@ -0,0 +1 @@
v1 08c9778d9847b2fbb316b22014a1d50be13a86001ede0d35c113cf5dd4d715d7 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612871939835800
@@ -0,0 +1 @@
v1 090ca59083123b5008581f8e68fe57e972a7a4c67409d157d6566a521c4e6b64 af1a70f0ee84bcab011a4fbaa66d1c1f1885a067d2c6b75371edcbd7a7902d83 1175 1787612854508394600
@@ -0,0 +1,56 @@
./authentication_cleartext_password.go
./authentication_gss.go
./authentication_gss_continue.go
./authentication_md5_password.go
./authentication_ok.go
./authentication_sasl.go
./authentication_sasl_continue.go
./authentication_sasl_final.go
./backend.go
./backend_key_data.go
./big_endian.go
./bind.go
./bind_complete.go
./cancel_request.go
./chunkreader.go
./close.go
./close_complete.go
./command_complete.go
./copy_both_response.go
./copy_data.go
./copy_done.go
./copy_fail.go
./copy_in_response.go
./copy_out_response.go
./data_row.go
./describe.go
./doc.go
./empty_query_response.go
./error_response.go
./execute.go
./flush.go
./frontend.go
./function_call.go
./function_call_response.go
./gss_enc_request.go
./gss_response.go
./no_data.go
./notice_response.go
./notification_response.go
./parameter_description.go
./parameter_status.go
./parse.go
./parse_complete.go
./password_message.go
./pgproto3.go
./portal_suspended.go
./query.go
./ready_for_query.go
./row_description.go
./sasl_initial_response.go
./sasl_response.go
./ssl_request.go
./startup_message.go
./sync.go
./terminate.go
./trace.go
@@ -0,0 +1 @@
v1 092a23662e3b064aaabe4c1de48fe6b6bd76f79ce24eba1744d94a8e3bfb73ac cf5b1d49651a659fc170c19d77a26dd94a2f915748b28cd600db676d3a75e31e 394014 1787612865112194200
@@ -0,0 +1 @@
v1 093af1c1763792b0e2110c3db1bd70049459a7302d0bae5ad0dfb4a0cb20db45 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612858493847400
@@ -0,0 +1 @@
v1 0953c0f22772b7603e66471d7239eb734b4a47c2c297e6008c7a4ccfe38a523b e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612874807976100
@@ -0,0 +1 @@
v1 097006a5fec7e6f441fee63a17a52095cfca41afe24817755383ebe024e9c50e cbeb0dc60fef0fac5adf9e41720340a99f7e5b58d4330b1cd46770cc2aa58d1f 1638 1787612854525789800
@@ -0,0 +1 @@
v1 099bde41a95bdb247f346c3fc0d8a188d07650e8a44f10744f189d02679ed7f5 6ddb2a108fc1ae1ca42cd7f9c2479a3adcfa92c22d617bb18ff199328e574070 1032 1787612854037737200
@@ -0,0 +1,3 @@
./signal.go
./srt.go
./subtitles.go
@@ -0,0 +1 @@
v1 09b6e1003d1341867de38dcd11a7588cd1a934ca5baf23e9799bf5ef801e9d12 eb4a25d0ce5d611e98d42d0f8715719284564124cb7811c452bafd61a3402f54 2333 1787612854091003300
@@ -0,0 +1 @@
v1 09d7c42bdf59220e15023668f2eb04c4a01fcf6abe69403b931a73180c9210cb be22bf77574857e9f9aba903631f588827cd17003bad108bdadd373419b2d06c 228 1787612886008985800
@@ -0,0 +1 @@
v1 09e07ae09d03a01b21f35843914e25d61c51894017b569206d22ead726710e9a e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612875024454700
@@ -0,0 +1 @@
v1 0a539b3fcbf1be56a0a1d7a1e424e045fdfb8588a5586ee7d8d3753fb8d968ed e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612874321617100
@@ -0,0 +1 @@
v1 0a6a3ce6def29b93ff303c420349993947a9b142101b3f8e20d800de25ae80c7 87f51506654b7ca17704dd79f4659d5e8fe8fc9651c2cf7b4d589d847e86c9f4 756 1787612884196868500
@@ -0,0 +1 @@
v1 0a863bef5f935dd1d17ca33de0b3c93107ab59ded28ad49575e8de072eecace8 5ac60334d7ecbc2f1878f32110c2e395c2c467ba3b677638e99a8dc7232f4f52 1648 1787612853308227300
@@ -0,0 +1 @@
v1 0a96b1a2a6e9b45f10e644b11872ec650bb5f6d2747d97af057612fe4ae56520 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 1787612862649853400

Some files were not shown because too many files have changed in this diff Show More