Contributing

How this wiki is maintained, what is still open, and how the settings in the code are checked against the settings in the wiki.

Principles

  • The code is the source of truth, not anyone’s memory: the settings definitions in App/Shared/Views/Settings/SettingsGuide.swift (SettingsGuide.all) and the explanatory texts in App/Shared/Localizable.xcstrings (settings.info.*, settings.*). Default values come from the *Preference files and UserDefaults keys. If something isn’t in the code, it isn’t in the wiki – it goes on the “Open” list instead.
  • Version: branch release-1.0.2 (commit da66e128, 15.10.2026), inventory Docs/release-1.0.2/neu-in-1.0.2.md. When the app changes, read the new version first, then update the wiki.
  • Language: standard German with Swiss spelling (ss instead of ß), informal “du”, short sentences, no technical term without an explanation (see Glossary).
  • Neutral: no provider names, no real channel names (examples use made-up channels such as “Nordkanal” and “Sportwelt”), no prices, no statements about the trial or subscription terms, no marketing claims (“lag-free”, “better than”). No figures from the rulebook that the app doesn’t display itself.
  • Images only from the new design: Docs/release-1.0.2/screens/design-4/ and design-settings/ in the source code, copied to images/ with tools/bilder_102.py (the script also adds the numbered markers on the remote and the player; the key is on the page). No new hand-made screenshots.

How a setting is laid out

Every setting appears exactly once, on the sub-page for its section, with an invisible anchor directly below the heading:

### Name as shown in the app (English name)
<!-- setting: bereich.schlüssel -->

- **Where:** section · platforms
- **What it does:** 2–3 sentences, the app’s explanatory sentence in «guillemets»
- **Default:** backed up by the code
- **Options:** advantage and disadvantage for each option
- **When to change:** …
- **What it costs:** battery, delay behind live, data usage, storage
- **Works together with:** links

The <!-- setting: … --> anchor carries the key from SettingsGuide.swift. The check below counts these anchors.

Forgejo builds heading anchors like this: lower case, every run of characters that are not a letter, digit or underscore becomes one hyphen, and there are no hyphens at the start or end. Umlauts are kept. Example: “Reserve gegen Aussetzer (Reserve against dropouts)” → #reserve-gegen-aussetzer-reserve-against-dropouts. Page links have no .md and take the form [Text](Seitenname#anker) (page name and anchor).

Checking before you push

The wiki repo contains two scripts under tools/:

NEVERLAG_SRC=~/neverlag-wiki-src python3 tools/check_settings.py --table   # 81 = 81, none duplicated
python3 tools/check_links.py                                                 # pages, anchors, images

check_settings.py --table regenerates the comparison list below. Both must run without findings. Then commit and git push origin main; the page count can be confirmed via the API: GET /api/v1/repos/haris/Neverlag/wiki/pages.

Changing a page

  1. Bring the source copy to the version you want (git -C ~/neverlag-wiki-src checkout <tag>).
  2. Read the app’s explanatory text (settings.info.<id> in Localizable.xcstrings) and find the default value in the code.
  3. Change the page; the setting’s name exactly as in the app, with the English name in brackets.
  4. Run the check scripts, commit with a meaningful message, push.
  5. Anything that can’t be backed up: add it here under “Open” – don’t guess.

Open

Points that the sources couldn’t settle clearly, or where sources contradict each other. Whoever clears one up adds the answer and strikes the point.

  1. Scope of the FAQ: the brief mentions 27 questions; Web/src/i18n/faq/de.ts contains 34. The wiki includes all 34.
  2. Does 4K come back by itself? The website FAQ (“Does 4K come back by itself?”, “Why am I suddenly on 1080p?”, “… when my provider throttles?”) describes an automatic return after a few minutes. The 1.0.2 rulebook says “Never step up automatically”; the lower level applies per channel for at most 30 minutes, and you can go back up at any time with the button. The wiki follows the rulebook; the website texts would need updating.
  3. Website FAQ “most stable player” names other players; the wiki leaves the names out.
  4. Autoplay: available since 1.0.2 (“Play next episode automatically”, Settings → Playback). Done.
  5. Preferred audio language: there is no fixed preference (“always German”). Since 1.0.2, Neverlag remembers the audio language you chose last; you can view and reset it under “Remembered Audio Language” (Settings → Picture & Sound).
  6. Continue watching for recordings: a saved position for recordings isn’t documented in the texts (only for movies and series). Not claimed.
  7. Number of settings: in the release-1.0.2 version (15.10.2026), SettingsGuide.all contains 81 entries in eleven sections; the wiki lists each exactly once (table below). The code is what counts; older overviews with 61 or 64 entries are out of date.
  8. Android / Fire TV: the column in Platform differences is based on Docs/android-parity.md (each row dated there), not on running the app. Parental controls, NAS, sending pairing, the first-launch notice, rating/feedback and the tour are listed there as missing or still to follow; the new features from 1.0.2 (profiles, remote, source chain, archive as a library, keywords, new settings) aren’t listed there at all yet.
  9. Device measurements, Picture II: according to the report, three decisions remain open until measurements have been taken on a real iPhone: keeping “120 Hz for video”, the final standard mode, and the default for motion smoothing. The wiki gives today’s default values (on / off).
  10. Apple TV 4K with HDR: the website FAQ mentions dropped frames with 4K HDR as a known limitation (“we’re working on it”). Whether the “New renderer” solves this in 1.0.2 isn’t documented as complete in the reports.
  11. Reserve caps per device (85 s on iPhone and Apple TV 4K, 60 s on Apple TV HD, 40 s when memory is tight) come from the Package 2a report; the app shows the achievable value itself. Check again for new device classes.
  12. Images: since 1.0.2, the images come from Docs/release-1.0.2/screens/design-4/ and design-settings/ (script tools/bilder_102.py). There are no captures there for the initial “Your profile” setup, the language choice on first launch, timeshift on iPhone/iPad or the network test; those pages do without or show the closest related image.
  13. Mac jump bar: its behaviour on the Mac (a bar with start/end, or a simple list) varies with the window size; the wiki only describes it roughly.
  14. Prices: deliberately not in the wiki, even where the website gives them. The wiki does mention the trial (7 days), because the app shows it that way itself.
  15. Source of the wiki: so far the wiki is maintained directly in the wiki repo. The rule “Docs/wiki/ in the source code → Forgejo wiki → help on the website”, with a mirroring script, is still to come.
  16. Translations: since 16 October 2026 the pages under en/, fr/ and it/ match the German pages (1.0.2). Whoever changes a German page updates the three languages in the same commit; anchors stay German.
  17. Cut without a frozen frame: that Neverlag continues packet-accurately after a brief connection drop is proven on the test bench; according to the report, measurement on a real device is still outstanding.

Comparison: settings in the code vs. in the wiki

Version release-1.0.2 (15.10.2026): 81 settings in the code, 81 in the wiki, each exactly once. Generated with tools/check_settings.py --table.

No.Key in the codeSectionName in the appWiki pageStatus
1provider.addXtreamproviderAdd Xtream account …Settings → Providers & Content✓
2provider.addM3UproviderAdd M3U playlist …Settings → Providers & Content✓
3provider.sendQRproviderSend to Apple TV (scan QR code) …Settings → Providers & Content✓
4provider.refreshIntervalproviderRefresh automaticallySettings → Providers & Content✓
5provider.refreshCatalogproviderRefresh catalogue nowSettings → Providers & Content✓
6provider.refreshEPGguideRefresh EPG nowSettings → TV Guide✓
7provider.loadDetailsproviderLoad movie detailsSettings → Providers & Content✓
8provider.manageGroupsproviderManage groups & reload …Settings → Providers & Content✓
9provider.sendToTVproviderSend to Apple TV …Settings → Providers & Content✓
10provider.removeproviderRemove providerSettings → Providers & Content✓
11categories.showproviderShow categoriesSettings → Providers & Content✓
12categories.manageproviderManage categoriesSettings → Providers & Content✓
13categories.sortAZproviderSort alphabetically (A–Z)Settings → Providers & Content✓
14categories.resetproviderResetSettings → Providers & Content✓
15backup.exportproviderExport backup…Settings → Providers & Content✓
16backup.importproviderImport backup…Settings → Providers & Content✓
17tags.manageguideManage tags …Settings → TV Guide✓
18epg.assignmentguideEPG mapping …Settings → TV Guide✓
19appearancegeneralAppearanceSettings → General✓
20rendereradvancedNew rendererSettings → Advanced✓
21startQualitypictureSoundPreferred startup qualitySettings → Picture & Sound✓
22frameTimingpictureSoundFrame pacingSettings → Picture & Sound✓
23matchFrameRatepictureSoundMatch refresh rate to programmeSettings → Picture & Sound✓
24highRefreshRatepictureSound120 Hz for videoSettings → Picture & Sound✓
25motionSmoothingpictureSoundMotion smoothingSettings → Picture & Sound✓
26audioLanguagepictureSoundRemembered Audio LanguageSettings → Picture & Sound✓
27timeshift.diskplaybackTimeshift on diskSettings → Playback✓
28timeshift.windowplaybackRewind windowSettings → Playback✓
29leadHoldplaybackBuffer before first pictureSettings → Playback✓
30reserveplaybackReserve against dropoutsSettings → Playback✓
31autoplayNextEpisodeplaybackPlay next episode automaticallySettings → Playback✓
32lastChannelOnLaunchplaybackPlay last channel on launchSettings → Playback✓
33autoSourceSwitchplaybackSwitch to another source automatically on failureSettings → Playback✓
34relayadvancedPlayback through local receiverSettings → Advanced✓
35relay.adaptiveRateadvancedAdapt playback to the connectionSettings → Advanced✓
36relay.controlleradvancedController decidesSettings → Advanced✓
37recordings.destinationrecordingsRecording destinationSettings → Recordings✓
38recordings.chooseFolderrecordingsChoose folder …Settings → Recordings✓
39recordings.defaultFolderrecordingsUse default folderSettings → Recordings✓
40recordings.nasSetuprecordingsSet up network storage …Settings → Recordings✓
41recordings.nasTransferrecordingsSend to Apple TV …Settings → Recordings✓
42recordings.paddingBeforerecordingsPre-rollSettings → Recordings✓
43recordings.paddingAfterrecordingsPost-rollSettings → Recordings✓
44profiles.addprofilesAdd profileSettings → Profiles & Parental Controls✓
45profiles.switchprofilesSwitch profileSettings → Profiles & Parental Controls✓
46profiles.isChildprofilesChild profileSettings → Profiles & Parental Controls✓
47profiles.requiresPINprofilesProtect with PINSettings → Profiles & Parental Controls✓
48profiles.allowLiveprofilesLive categoriesSettings → Profiles & Parental Controls✓
49profiles.allowVODprofilesMovie categoriesSettings → Profiles & Parental Controls✓
50profiles.allowSeriesprofilesSeries categoriesSettings → Profiles & Parental Controls✓
51profiles.blockChannelsprofilesHidden channelsSettings → Profiles & Parental Controls✓
52profiles.unblockAllprofilesShow all channels againSettings → Profiles & Parental Controls✓
53profiles.unlockContentprofilesUnlock contentSettings → Profiles & Parental Controls✓
54profiles.deleteprofilesDelete profile…Settings → Profiles & Parental Controls✓
55profiles.setPINprofilesSet PIN…Settings → Profiles & Parental Controls✓
56profiles.changePINprofilesChange PIN…Settings → Profiles & Parental Controls✓
57profiles.removePINprofilesRemove PINSettings → Profiles & Parental Controls✓
58profiles.settingsPINprofilesProtect settings with PINSettings → Profiles & Parental Controls✓
59profiles.relockprofilesLock again nowSettings → Profiles & Parental Controls✓
60subscription.startsubscriptionStart subscriptionSettings → Subscription✓
61subscription.managesubscriptionManage subscriptionSettings → Subscription✓
62subscription.restoresubscriptionRestore purchaseSettings → Subscription✓
63subscription.termsaboutTerms of UseSettings → About Neverlag✓
64diagnostics.overviewadvancedDiagnostics & statusSettings → Advanced✓
65diagnostics.historyadvancedHistorySettings → Advanced✓
66diagnostics.networkTestadvancedNetwork testSettings → Advanced✓
67diagnostics.journalShareadvancedShare journalSettings → Advanced✓
68diagnostics.journalDeleteadvancedDelete journalSettings → Advanced✓
69remote.openremoteOpen remoteSettings → Remote✓
70remote.pairremotePair Apple TVSettings → Remote✓
71remote.pairTVremotePair iPhoneSettings → Remote✓
72remote.devicesremotePaired devicesSettings → Remote✓
73languagegeneralLanguageSettings → General✓
74about.tourgeneralTour of the appSettings → General✓
75about.hintsgeneralShow hintsSettings → General✓
76about.hintsResetgeneralReset all hintsSettings → General✓
77about.noticeaboutPlayer, not a provider — the noticeSettings → About Neverlag✓
78about.rateaboutRate NeverlagSettings → About Neverlag✓
79about.feedbackaboutSend feedbackSettings → About Neverlag✓
80about.privacyPolicyaboutPrivacy policySettings → About Neverlag✓
81about.licensesaboutOpen source licensesSettings → About Neverlag✓