goon/mobile/src/changelog.ts
goon-foss b4c1216133 fix(player): nie twórz playera, gdy apka jest w tle
expo-video wola w init konstruktora VideoPlayer bezwarunkowy startService dla
androidx.media3 MediaSessionService (VideoPlayer.kt:233), a Android od 8.0
zabrania startu zwyklego serwisu z tla. Gdy ekran playera montowal sie juz w tle
(user wyszedl w trakcie resolve albo system wznowil stos ekranow), konstruktor
rzucal IllegalStateException i zamiast wideo pokazywal sie ekran bledu.
GOON-12: 63 wystapienia, 28 osob, wszystkie z in_foreground=false.

Konfiguracja tego nie wylacza, wiec bramkujemy montowanie: hooka nie da sie
warunkowac, stad wlasciwy ekran wyjechal do PlayerScreenActive, a eksportowany
PlayerScreen czeka na AppState 'active'. Bramka dziala tylko przy montowaniu,
wiec zejscie w tlo z juz dzialajacym playerem nie przerywa odtwarzania.

Opublikowane OTA na 1.2 i 1.1.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 12:16:33 +02:00

501 lines
20 KiB
TypeScript

/**
* Changelog bundlowany z apką → ZAWSZE zgodny z tym, co przyszło OTA (te same zmiany
* lecą w tym samym bundlu). WhatsNewModal pokazuje wpisy nowsze niż ostatnio widziany
* (`lastSeenChangelogId` w SecureStore) i oznacza najnowszy jako przeczytany.
*
* Przy każdym publish OTA: DOPISZ nowy wpis NA GÓRZE (newest-first), z nowym `id`.
* Treść user-facing (bez wewnętrznego żargonu), to widzi użytkownik.
*/
export type ChangelogEntry = {
/** Stabilny, rosnący identyfikator (np. data + seq). Newest-first w CHANGELOG. */
id: string;
/** Krótki, ludzki tytuł daty/wersji pokazywany w nagłówku wpisu. */
date: string;
/** Punkty zmian, krótkie, user-facing. */
items: string[];
};
export const CHANGELOG: ChangelogEntry[] = [
{
id: '2026-08-20b',
date: 'August 2026',
items: [
'Fixed a crash that replaced the video with an error screen. If you left the app while a scene was still opening, or Android restored the player by itself, the player refused to start. It now waits until the app is back on screen and then plays normally.',
],
},
{
id: '2026-08-20',
date: 'August 2026',
items: [
'Sites, performers, studios and tags were hiding a large part of the catalogue. The "minimum length" rule was also dropping every scene whose length we simply do not know, which is most of them on some sites: hentaimama, supjav, hentaigasm, hentaiplay, javflix and xanimeporn showed nothing at all, and xhamster, porndish and porntrex showed a fraction. Opening one of those now shows everything it has.',
],
},
{
id: '2026-08-18i',
date: 'August 2026',
items: [
'Dragging the progress bar now works on videos whose length the player has not reported yet. The handle and the time moved with your finger, but letting go did nothing; it seeks properly now.',
],
},
{
id: '2026-08-18h',
date: 'August 2026',
items: [
'Cleaner scene page. Quality and length now sit in the corners of the artwork, and the studio, site and length share one line under it instead of taking a whole section each. The studio is still tappable.',
'Dropped the "Sources" box that showed an internal name like TUBE-SCRAPER; the site the scene comes from is now named properly next to the studio.',
'Section headings got a divider line, so the page has a steadier rhythm as you scroll.',
],
},
{
id: '2026-08-18g',
date: 'August 2026',
items: [
'Scene tiles now show the quality (4K, 1080p) in the corner when we actually know it, and the site the scene comes from next to the studio name. No more opening a scene just to find out where it is hosted.',
],
},
{
id: '2026-08-18f',
date: 'August 2026',
items: [
'This list now shows the month once per group instead of repeating it above every single entry.',
'Sites: dropped the redundant title and hint line, so the list starts right where the other tabs do.',
],
},
{
id: '2026-08-18e',
date: 'August 2026',
items: [
'Consistent look across the Scenes, Movies, Sites, JAV and Anime tabs. The search box, filter button and the little pills were each styled slightly differently per tab (different corners, borders, font sizes, spacing); they now all come from one shared set, so the top of every tab lines up and matches.',
],
},
{
id: '2026-08-18d',
date: 'August 2026',
items: [
'Reworked the top tabs. The blob from a few days ago sat too tall and threw the header out of line, and the animation never looked right. It is now a thin underline that slides to the tab you pick, the way most apps do it, and the row lines up again.',
],
},
{
id: '2026-08-18c',
date: 'August 2026',
items: [
'Filter by minimum quality: 720p, 1080p or 4K, next to the length filter. It only shows scenes whose quality we actually know, and most sites never state it, so expect the list to get a lot shorter when you switch it on. The filter says so underneath.',
],
},
{
id: '2026-08-18b',
date: 'August 2026',
items: [
'naughtymachinima: a video that hit a brief server hiccup no longer drops you straight onto the site page (which was often rate-limited and showed an error). The app now grabs a fresh link and keeps playing.',
'perverzija: playback works again. The site switched video hosts, so every link was failing; the app now opens the new host.',
],
},
{
id: '2026-08-18',
date: 'August 2026',
items: [
'The liquid tab bar now actually flows. The melt animation existed but could never run: switching tabs rebuilt the whole header, so the blob just teleported. The bar also drew in the same colour as the header behind it, which reduced the whole effect to a floating dot. Both fixed, the blob now slides and the bar melts around it.',
],
},
{
id: '2026-08-14e',
date: 'August 2026',
items: [
'JAV now has its own performer list. Opening Performers from that tab used to show the western cast; it now shows the 1392 names that actually appear in JAV scenes.',
'The Anime tab no longer offers a Performers button. Animation has no cast to list, so the button only ever led to an empty screen.',
],
},
{
id: '2026-08-14d',
date: 'August 2026',
items: [
'The Anime and JAV sections now have their own tag list. Opening Tags from those tabs used to show the main catalogue vocabulary, where almost every tag led to an empty screen.',
'Tags that have no scenes are no longer listed or offered in filters. Searching the tag list used to turn up thousands of dead entries, mostly character names from animation.',
'Quality tags (HD, 4k, 720p) are gone. They were a claim by the site rather than a fact, and the app already works out real quality from the video sources.',
],
},
{
id: '2026-08-14c',
date: 'August 2026',
items: [
'Anime: tapping a tag or a studio now stays inside the Anime section. Before, a tag opened from an anime scene showed everything except anime, and an anime studio looked like it did nothing because its page came up empty. The JAV section had the same bug and is fixed too.',
],
},
{
id: '2026-08-14b',
date: 'August 2026',
items: [
'galaxyporn: if a video fails to start, the app now asks for a fresh link instead of giving up. Their servers rotate, so a second try usually lands on a working one.',
],
},
{
id: '2026-08-14',
date: 'August 2026',
items: [
'New look for the tabs at the top: the bar now melts around the tab you are on instead of sliding a pill across it.',
],
},
{
id: '2026-08-13e',
date: 'August 2026',
items: [
'Scene titles get two lines instead of one, so you can actually read them. Before, only about one title in seven fitted; now more than half do.',
'When a title just repeats the studio name that is already shown underneath, that part is dropped, so the space goes to the title itself.',
],
},
{
id: '2026-08-13d',
date: 'August 2026',
items: [
'Readability pass: links, active tabs and the favourite star are a shade lighter, so they stand out against cards instead of sinking into them. Search and input fields now have a visible outline.',
],
},
{
id: '2026-08-13c',
date: 'August 2026',
items: [
'Followed studios now show how many movies they have, not just scenes. Studios that only put out movies used to look empty in your favourites.',
],
},
{
id: '2026-08-13b',
date: 'August 2026',
items: [
'Animated and 3D content has moved into its own Anime tab and no longer shows up in the main scene feed. Its tag list is separate too, so you no longer scroll past thousands of tags that only exist for animation.',
'Followed studios now show their movies. Opening a studio you follow gives you a Movies tab next to Scenes, so a "+1" that came from a new movie actually leads somewhere.',
],
},
{
id: '2026-08-13',
date: 'August 2026',
items: [
'New: animated and 3D content. Five sources have been added, four hentai and one 3D animation, each with its own catalogue rather than reposts of the others.',
'Playback for the 3D source is resolved on your phone, so you get the full quality ladder up to 1080p instead of a stripped-down stream.',
],
},
{
id: '2026-08-11',
date: 'August 2026',
items: [
'Version 0.2.2 has to be installed by hand, once: it is signed with a different key, so Android will not install it over the current app. Copy your sync code from the banner on the Scenes tab BEFORE you uninstall, then paste it back after installing. Without it your favourites and watch progress cannot be found again.',
'Thumbnails from fullporner are back. They had been switched off after their image host briefly served blanks.',
],
},
{
id: '2026-08-02',
date: 'August 2026',
items: [
'Tag and performer counts are now shortened (181k instead of 181 764), so the chips stay readable.',
'Merged duplicate tags that differed only by a plural, so "Blowjob" and "Blowjobs" are one tag again.',
],
},
{
id: '2026-07-28b',
date: 'July 2026',
items: [
'Change video quality while watching: tap the gear icon in the player. It keeps your position, so you do not lose your place.',
],
},
{
id: '2026-07-28',
date: 'July 2026',
items: [
'Auto-rotate can now be turned off (Settings -> Auto-rotate), so the video stops flipping when the phone lies flat on a table. The fullscreen button still switches to landscape.',
'The "+N new" badge on a favourite performer or studio now also counts new movies, not just scenes.',
],
},
{
id: '2026-07-26b',
date: 'July 2026',
items: [
'youporn thumbnails that had gone blank now load again.',
],
},
{
id: '2026-07-26',
date: 'July 2026',
items: [
'If your network or DNS blocks a site\'s video servers (some providers do), the app now falls back to streaming through the server instead of dropping you on the site\'s page full of ads.',
'porntrex: new videos show up again. Their site changed, so we were saving new scenes without a length, and the "minimum length" filter was hiding them.',
],
},
{
id: '2026-07-22b',
date: 'July 2026',
items: [
'The brief burst of sound before a video starts is now fully silenced, including sites whose player auto-plays with sound as the app grabs the stream.',
],
},
{
id: '2026-07-22',
date: 'July 2026',
items: [
'Fixed a rare crash that could happen when a pop-up (like the update prompt) tried to appear just as the app was being sent to the background.',
],
},
{
id: '2026-07-21',
date: 'July 2026',
items: [
'Similar scenes: a scene\'s detail page now shows a row of related scenes, matched by shared performers and tags. Tap one to jump straight to it.',
],
},
{
id: '2026-07-20b',
date: 'July 2026',
items: [
'No more burst of sound when opening a video: the page we briefly load to grab the stream now stays fully muted until it hands off to the player (or until you tap, for the few sites that play in the web view).',
],
},
{
id: '2026-07-20',
date: 'July 2026',
items: [
'Fixed site ratings for sources that play through a quick web-view step (like freshporno): their successful plays now count, so they no longer get wrongly marked offline and demoted. Freshporno is back in rotation.',
],
},
{
id: '2026-07-16',
date: 'July 2026',
items: [
'Bug reports now attach a bit of context automatically (your phone model, Android version, and the last source/server you played), so playback issues can be fixed without us having to ask you for details.',
],
},
{
id: '2026-07-14c',
date: 'July 2026',
items: [
'Copy video link: while a video is playing, tap the link icon in the top bar to copy its URL, then paste it into a browser or a player like VLC or MX Player. Works best for direct sources.',
],
},
{
id: '2026-07-14b',
date: 'July 2026',
items: [
'Backup & sync: move your favorites, saved searches, hidden list and watch progress to another phone. Settings -> Backup & sync: copy this phone\'s sync code, then paste it into Restore on the new phone (your old phone keeps everything).',
],
},
{
id: '2026-07-14',
date: 'July 2026',
items: [
'hqfap: videos play reliably again. The site started blocking our server, so the app now resolves hqfap links directly on your device, fixing the cases that only showed ads or failed to start.',
],
},
{
id: '2026-07-11',
date: 'July 2026',
items: [
'JAV and other voe-hosted videos now play directly in the built-in player instead of falling back to the web view, faster start and smoother playback.',
],
},
{
id: '2026-07-10b',
date: 'July 2026',
items: [
'New JAV tab: a separate section for Japanese adult video (English-subtitled). It is kept out of the main Scenes feed, so the main list stays as it was.',
],
},
{
id: '2026-07-10',
date: 'July 2026',
items: [
'Fixed: audio no longer cuts out when you tap or scroll on the video. It now only mutes while you hold to fast-forward, as intended.',
],
},
{
id: '2026-07-07',
date: 'July 2026',
items: [
'The Scenes feed no longer repeats the same videos as you scroll down.',
'Hold to fast-forward (2x) now mutes the sped-up audio until you let go.',
'hqfap is back: the site returned with working video, so its scenes are being re-added.',
],
},
{
id: '2026-07-05b',
date: 'July 2026',
items: [
'Tap a movie\'s studio to see every other film from that studio. You can also filter the Movies list by studio (Movies → Filter → Studios).',
],
},
{
id: '2026-07-05',
date: 'July 2026',
items: [
'watchporn: if a video link has gone stale (its host node rotated or the link expired), the app now automatically grabs a fresh link and keeps playing in the built-in player, no more "resolver broken".',
],
},
{
id: '2026-07-03',
date: 'July 2026',
items: [
'Movie posters show up again (freeomovie), and more of its sources actually play (myvidplay).',
],
},
{
id: '2026-07-02b',
date: 'July 2026',
items: [
'Fixed a case where a removed or briefly-failing video could get stuck on "Reconnecting" instead of playing or showing the error.',
'Quick play no longer occasionally re-opens the player by itself after you mark a source broken.',
],
},
{
id: '2026-07-02',
date: 'July 2026',
items: [
'Favorites "+N new" now counts genuinely new scenes only, bulk back-catalog imports (old content a site re-dated to today) no longer inflate the badge or show a NEW tag.',
],
},
{
id: '2026-07-01b',
date: 'July 2026',
items: [
'Quick play: tap the ▶ on any thumbnail to start the best source right away, with a default quality set (Settings → Playback) it is one tap to video.',
],
},
{
id: '2026-07-01',
date: 'July 2026',
items: [
'Set a default video quality in Settings → Playback (e.g. 720p) to skip the quality chooser when that quality is available.',
'The "+N new" count on a favorite now matches what you actually see when you open it, no more "+6" with nothing new.',
'Smoother scrolling: when fresh scenes land at the top of a list, it no longer jumps under your finger.',
'Fixed: a video that plays fine no longer flashes "Playback failed / Mark broken" while it reconnects.',
],
},
{
id: '2026-06-29b',
date: 'June 2026',
items: [
'Seeking (swipe or drag) no longer pops a big pause button into the middle of the screen.',
'Diagnostics "open in browser" now opens privately inside the app (incognito), no cookies, no trace in your real browser.',
],
},
{
id: '2026-06-29',
date: 'June 2026',
items: [
'No more brief blast of sound when a video page is opening, it stays muted until you tap.',
],
},
{
id: '2026-06-26',
date: 'June 2026',
items: [
'Source code moved to our own server (git.goon-foss.org). Still fully open source (MIT). The Settings link now points there.',
],
},
{
id: '2026-06-25',
date: 'June 2026',
items: [
'sxyprn and a few other sites: if a video fails to start, the app now grabs a fresh link and retries automatically instead of just hanging.',
],
},
{
id: '2026-06-22b',
date: 'June 2026',
items: [
'New: a quick tutorial on first launch: tabs, search, long-press actions and player gestures. Replay it anytime from Settings ⚙.',
],
},
{
id: '2026-06-22',
date: 'June 2026',
items: [
'Sites now show a 0-5★ rating: how fresh, how well-described, and how reliably each source plays. Tap the stars for the breakdown.',
'Dropped two sources whose videos stopped playing (they served a "server down" clip).',
'latestpornvideo now keeps up with its newest videos.',
],
},
{
id: '2026-06-21b',
date: 'June 2026',
items: [
'Filter movies by performer (Movies → Filter → Performers).',
'Movies grid fits more per screen (3 columns).',
],
},
{
id: '2026-06-21',
date: 'June 2026',
items: [
'Double-tap to skip no longer flashes a pause button in the middle of the screen.',
'Movies show fewer, de-duplicated playback links (no more repeats from mirror sites).',
],
},
{
id: '2026-06-20c',
date: 'June 2026',
items: [
'Cleaner site names (dropped the .com/.org clutter).',
'siska scenes work again (and their newer videos play).',
],
},
{
id: '2026-06-20b',
date: 'June 2026',
items: [
'Hide content you never want to see: Settings → Hidden content lets you hide any tag, performer or studio (and undo it).',
],
},
{
id: '2026-06-20',
date: 'June 2026',
items: [
'Going back to the list from a scene no longer reloads everything or slows the phone.',
],
},
{
id: '2026-06-19',
date: 'June 2026',
items: [
'Smoother scrolling on long scene lists, no more lag or phone slowdown.',
'fpo.xxx scenes now play the actual video instead of an ad.',
],
},
{
id: '2026-06-16',
date: 'June 2026',
items: [
'Grid columns: pick 1, 2 or 3 thumbnails per row in Settings (1 = bigger previews).',
'Filter scenes by minimum length, hide short clips (5/10/20/30+ min).',
'Save searches: tap ☆ Save next to the search box, then reuse them as chips.',
'Privacy: the app is hidden in Recents and blocks screenshots again.',
'Smoother startup when an update is downloading (no more double PIN prompt).',
],
},
{
id: '2026-06-13',
date: 'June 2026',
items: [
'Source code link added in Settings. The app is open source (MIT).',
'New: a Refresh thumbnail button on a scene when its preview is broken or stale.',
'Fewer dead links: deleted videos on some sites are now detected automatically.',
],
},
{
id: '2026-06-12',
date: 'June 2026',
items: [
'Favorites now has a Scenes tab, every scene you heart shows up there.',
'Your bug reports can get replies: tap the ? button, then "Your messages".',
'More reliable playback and lower data use on several sites.',
'Clearer message when a source is blocked in your region or by your network.',
],
},
];
export const NEWEST_CHANGELOG_ID = CHANGELOG.length ? CHANGELOG[0].id : null;
/** Wpisy nowsze niż `lastSeenId`. lastSeen=null (pierwsze uruchomienie) → tylko najnowszy
* (nie zrzucamy całej historii). lastSeen == najnowszy → pusto (nic do pokazania). */
export function unseenEntries(lastSeenId: string | null): ChangelogEntry[] {
if (!CHANGELOG.length) return [];
if (!lastSeenId) return [CHANGELOG[0]];
const idx = CHANGELOG.findIndex((e) => e.id === lastSeenId);
if (idx === -1) return [CHANGELOG[0]]; // nieznany marker → pokaż tylko najnowszy
return CHANGELOG.slice(0, idx);
}