Repository navigation
Releases: voidfnc/mw4-texture-streaming-research
Release list
v0.4.0-beta
Twelve languages, and "See the full report" now shows the report.
- Languages. English, Russian, Chinese (Simplified), Spanish, French, German, Portuguese (Brazil), Turkish, Polish, Japanese, Korean and Italian. Settings has a Language row (Automatic follows the language chosen in
the installer, else the Windows display language); changing it restarts the window and leaves a running session alone. Logs, saved reports, file names and tool names stay English on purpose. Missing text falls
back to English, so an untranslated line never breaks the window. The translations are machine drafts and have not been proofread: corrections welcome. - Installer. The setup wizard shows a language list first (preselected from Windows), translates its own pages, task names, prompts and the "what this setup does" text (the licence stays English), and saves the choice as
the program's default language (language.txtnext to the program, removed on uninstall). Simplified Chinese uses a wizard file written for this project (packaging/lang/ChineseSimplified.isl). - Under the hood.
tools/ccslib/i18n.py(the English text is the key; templates for text built from parts; one hook translates every widget, canvas and dialogtext=),tools/ccslib/lang/<code>.json, and
tools/i18n_extract.py(lists the strings,--checkfinds missing keys and broken placeholders). A test fails when window text changes without the list being updated.CCS_LANG=deforces a language. - Fix: See the full report opened an empty page. The Report tab was only filled when a report was written during that run of the window; after a restart, or when the stop-time report was skipped because a saved
one already covered the run, it stayed blank. It now shows the newest saved report (selected in the Saved list), writes one from the proxy log if there is traffic but no report yet, and otherwise says there is no report yet.
v0.3.0-beta
A new main window. Everyday use is one screen with one button; every old tab is still there in Advanced mode.
- Home screen. Turn on HD textures, start the game, Turn off. A ring shows the state (off, turning on, on, playing, done, needs attention), a step strip says where you are, and three cards show the game folder, how textures load and the free
space. While you play it shows the textures delivered, the speed, failed requests, where they come from and a three-minute graph. Problems appear as a card that says what happened and has the button that fixes it. Every part has a hover tip. - First start in three questions. The research notice (a full screen now, not a dialog), where the game is, how textures should load, and, only if needed, the one-time game setup. The old yes/no offer of the checklist now appears only when Advanced mode is opened first.
- Settings panel. Slides in from the right: how textures load, the offline copy, game folder, game setup state, Check my PC, the word list, reports, the before/after test, reduced motion, Advanced mode.
- Offline copy page. A progress ring and bar, pieces and gigabytes, speed and time left, Pause and Resume, How much and Detail level, and Use only this copy when the download is complete. It drives the same downloader as the Texture pack tab, with the same notices.
- Advanced mode. Every tab kept, now behind a side navigation grouped as Live, Textures, Game and PC, Setup. Each page has a title and one line saying what it is for, long texts wrap to the window, a page taller than the window scrolls, and the check boxes, radio buttons, lists and buttons use the
same dark look. The Dashboard's profile and action rows no longer run off the side. - Look and feel. Anti-aliased rounded shapes, line icons and a progress ring drawn by the program itself (still no extra libraries). The program tells Windows it scales itself, so it is sharp at 125 and 150 percent (
CCS_NO_DPI=1turns that off). Reduce motion
in Settings stops the animations, and the Windows animation switch is honoured. - Under the hood. New
tools/ccslib/ui.py(the drawing kit),home.py(what each screen says, as plain data, fully tested) andhomeui.py(the screens). The window cancels its timers when it closes. About 50 new tests (323 in total). - Docs. README, USAGE, GETTING-STARTED, ARCHITECTURE and TEXTURE-PACK describe the new window, and so do the installer's start page and its "what setup does" text. The program screenshots and the four installer pages are new, and the walkthrough video now shows the new window.
v0.2.6-beta
You can switch between the quick fix and the offline copy, and the offline copy's text now says the program still has to run.
- Step 1 of the guided setup can be changed. The choice between Quick fix and Offline copy could not be undone before: Start over keeps it on purpose, and a finished step 1 showed no
buttons. It now has one button that switches to the other path (Use offline copy or Use quick fix), and the checklist follows (the Texture pack step appears or goes away). The choice
only shapes the checklist: with the Default profile the helper serves an offline copy you already have first, whichever path is chosen. - The offline copy needs a session too. The helper has to run every time you play (Start session, then the game), because the game still asks for its textures through it; the copy
replaces the download, not the helper. The path texts, the glossary, the Texture pack tab and the docs say so. The Texture pack tab also names the folder the copy is kept in (it was only
in the Game tab, which Simple view hides), and the hover text of the Mirror light explains that "off" while a session runs means no copy was found there. - Docs: USAGE has a section on using an offline copy you have already downloaded; the README has two new troubleshooting entries (the offline copy and the program, and counters that stay at
zero until a mission has loaded) and a link to a narrated walkthrough video (attached to the release). The README shows two in-game frames (docs/ingame/, with the game folder path covered in
the first and no metadata in either), anddocs/FINDINGS.mdhas a section 9 on the game folder settings (online mode and the cache link): what was observed in one session, what was not
tested separately, and what is still unchecked. - Wording: the program's own messages about the game's Steam settings use the same neutral wording as the docs (the 0.2.5-beta files still use the older wording in a few messages). One older
changelog line no longer refers to where a fix came from. - The screenshots in the README are unchanged (program windows from 0.2.3-beta, installer pages from 0.2.5-beta): this version changes one button and some text.
v0.2.5-beta
The installer installs for all users by default. "For me only" stays an option on its first screen.
- Program Files by default. The program runs as administrator, so its files should be somewhere only an administrator can change: setup now asks for one Windows permission prompt and
installs into Program Files for all users (uninstall entry and shortcuts for everyone). "For me only" installs into your own profile without administrator rights, as before; the
README's Administrator rights section says what that choice means. Silent installs: all users is the default,/CURRENTUSERfor the current user only. If you switch from one to the
other, uninstall the old copy first. - The installer test covers both.
packaging\build.batinstalls, upgrades (with the hosts block on) and uninstalls once for the current user and once for all users (when the build
window is elevated), and refuses to run if shortcuts of a real installed copy are in the way. - The installer's four README screenshots are retaken for this version; the program's screenshots are still from 0.2.3-beta.
v0.2.4-beta
The program runs as administrator by default. It asks for permission once, when it starts, instead of per action.
- Elevated from the start.
MW4 Texture Streaming.exenow carries an administrator manifest, so Windows shows the permission prompt (UAC) when it opens and the program then
writes to the hosts file, the game folder and a mirror inside Program Files without asking again. That also removes a whole class of "cannot write" problems for a game in
Program Files. If the prompt is declined the program still starts and asks per hosts-file change, as before. From source,ccsgui.pyrelaunches itself elevated once;
CCS_NO_ELEVATE=1or--no-elevatekeeps it unelevated.ccs-cli.exe(helpers, command line, setup's hooks) is unchanged and does not ask. - Setup and uninstall still work. Setup starts the program with
shellexecso the prompt can appear, anduninstall-prep stop-helpersasks Windows for permission when the helpers
were started by the elevated window (an unelevated process cannot end them);procs.stopno longer forgets a helper it could not end. - Docs: a new Administrator rights section in the README says what the rights are used for and notes that an elevated program in a folder other programs of yours can write to
(the per-user install folder) could be replaced; install for all users if that matters to you. The README screenshots are from 0.2.3-beta (the windows did not change).
v0.2.3-beta
One fix: the mirror index can be read from a folder you cannot write to. Nothing else changes.
- A mirror in a folder you cannot write to is read correctly. The mirror index could not be opened by a normal (non-administrator) user when the mirror sat in a folder only an
administrator can write to, such as inside Program Files: the Doctor showed Mirror: unable to open database file, the proxy started with no stored chunk keys, and the
session was reported as not ready. The proxy, the Doctor, the texture pack check and the reports now read the index without writing next to it (ccslib/mirrordb.py).
The Doctor's Mirror folder row says when a folder is read-only for you, and Download in the Texture pack tab explains it instead of failing later.
v0.2.2-beta
Game setup: a better undo and a few smaller gaps closed. No other change.
- Game setup: a better undo. It puts only the two settings back (to their earlier values, or removes them if they were not there; a settings file that did not exist is removed),
so other edits toconfigs.main.inisince then stay. It asks Windows for permission when the game folder needs it, and the Doctor's Game setup row has an Undo the game setup
button after a setup made by this tool. - The game-running check also knows the default game process names when the setting was edited, and the setup is not offered when the engine cache folder setting points at
sp26\xpak_cacheitself.
v0.2.1-beta
Game setup: helps the game use the textures it is sent. One new check and one-click fix, nothing else changes.
- Game setup check and fix. In some game folders the Steam settings put the game in offline mode and the game looks for its cache in
sp26\xpak_cachewhile the engine fills
xpak_cachein the game folder, so streamed textures can arrive without ever showing. The Doctor has a new Game setup row and the guide's Check this PC step asks for it
when it is needed; Set up the game (one click, after a confirmation) setsoffline=0anddisable_lan_only=1insp26\steam_settings\configs.main.ini(a copy of the
original is kept next to it, other lines are left alone) and makessp26\xpak_cachea folder link (junction) toxpak_cache. A real folder in the way is renamed aside, never
deleted. Nothing is changed while the game runs, applying twice changes nothing, and Windows is asked for permission only when the game folder needs it. A link of your own atsp26\xpak_cache, a read-only settings file or a failed link step are
reported in plain words and left as they were (a moved-aside folder is put back).
Command line:ccs-cli.exe --ccs-run gamefix status | apply | undo.
v0.2.0-beta
An installer, a portable zip, and no Python needed. From this version each release offers a Windows setup program, a portable zip, and the source as before.
MW4-Texture-Streaming-<version>-Setup.exe: a setup wizard (Inno Setup). It installs for the current user by default, with no administrator rights; "for all users" is an
option on its first screen. It shows the notice and licence, says what it will and will not do, adds Start menu entries and an optional desktop shortcut, and registers an
uninstall entry. It never touches the hosts file. Settings, logs and reports stay in%LOCALAPPDATA%\MW4TextureStreaming, separate from the program.- Hosts-safe update and uninstall. If a session is running or the hosts override is on, setup and the uninstaller stop the helpers and take the override out first (Windows asks
once), and ask before deleting your settings. A texture mirror and the game folder are never deleted. Silent switches:/VERYSILENT /DIR= /MERGETASKS=. - Portable zip: unzip anywhere, nothing is installed, settings stay in a
datafolder next to the program. - Same program inside:
MW4 Texture Streaming.exe(the window) andccs-cli.exe(the helpers and every command-line tool:ccs-cli.exe --ccs-run ccsproxy ...). The helpers
are started through one function (ccslib/launch.py), so running from source behaves exactly as before. - Releases are one command:
packaging\build.batbuilds the program, the zip and the installer, smoke-tests the result and installs, upgrades (with the hosts block on) and
uninstalls the Setup.exe on the build PC;python packaging/release.pythen makes a draft GitHub release (files, checksums, notes from this changelog). There is no CI pipeline.
The version is read fromtools/ccslib/version.pyonly, and the release script refuses files from another version. - New:
ccs-cli.exe --ccs-run selfcheck(starts and stops the proxy and disk guard and makes a shortcut, without touching the hosts file) anduninstall-prep(what the installer calls). - The window has an icon, and holds a named mutex so the installer knows it is open.
- Fixed: a Python warning in
netwatch.py. - 28 new tests (196 in total): launcher and dispatcher, uninstall hooks, selfcheck, version and packaging consistency (the installer script, build script, spec, release script and requirements must agree with the code and the version).