TribalWarsClone
|
No worlds available.
| » Register Now | English |
|---|---|
|
|
ReleasesAdded, changed and fixed - newest releases first. Select a release or hotfix to read its notes. V2.0.0Latest: V2.0.0.4Updates and hotfixesV2.0.0.43 November map correction: Church coverage uses a darker navy, 4.5% fill and rounded feathered union boundary. Relic coverage uses circular 2/2/3/3/4-tile radii for Shoddy/Sturdy/Enhanced/Superior/Renowned, matching actual bonus checks, overview and minimap. The previously named Basic tier is consistently labelled Sturdy. The release archive, game/admin/support version labels and cache identifiers identify V2.0.0.4. Existing V2.0.0.3 combat policy identifiers remain stable for historical reports. V2.0.0.3Automatic player morale uses consistent percentage units, including exact 100% and zero-point boundaries. Archer attacks use archer defense; dead scouts cannot reveal resources, buildings or away troops. Catapults use ordinary-building or wall resistance according to their target. Faith reduces damage outside the research-level argument. Simulator wall levels are constrained to 0-20 and calculations use the displayed normalized luck. Combined recruitment cancellation advances subsequent orders in the same building. Each independently producing building has a countdown. Mass recruitment shows every requested village outcome, keeps rejected inputs editable, and links successes to the correct village. Combined overview merchant capacities use each village's own bonus and inventory effects. Permanent inventory effects display their accumulated value without changing stacking or gameplay calculations. Coordinate BBCode keeps its destination when the game selects a default village. Attack-size command icons are included. Support displays V2.0.0.3. Market feedback explains empty shipments, invalid ratios and merchant shortages; fractional offer modifications are rejected and rejected creation fields are retained. Mass rename counts UTF-8 characters. Its description explicitly states village-ID ordering and the separate behavior of automatic conquest naming. Demolition time quotes use the queued level. Church coverage is a merged union with a dark blue exterior boundary. Relic areas stay visible with quality-colored fills and outlines while their layer is enabled. Main-map and minimap rendering share coverage geometry. Optional coalition morale combines player and accepted-alliance/NAP group protection by taking the lower percentage. Seven-day observed strength and former relationships resist immediate evasion. Player profiles, confirmation, map preview and simulator explain morale. Optional dominance pressure uses continental control, minimum population, real-clock qualification, public warning and sustained recovery. Active attack caps are 10% against protected tribed players and 25% against protected solo players; affected defensive troop-owner contributions receive 50%. Existing worlds do not opt in automatically. Paper Empire - Mark of Shame records active and historical coalition sanctions without achievement points, items or other rewards. Administrative policy changes are audited separately from organic recovery. All literal and encoded em/en dash separators in UTF-8 project text use the standard ASCII hyphen. V2.0.0.2Village overviews load regardless of an assigned relic's direction; relic range, bonuses and assignment locks are preserved. Market demolition clears offers that exceed the new effective merchant capacity, refunds their reserved resources once and preserves travelling shipments. Existing inconsistent merchant counters are reconciled when opening the Market. Market searches apply resource and ratio filters. Seller profiles retain the selected village, and Send Resources pre-fills the destination. Offer pages show accepted-trade Incoming and Outgoing cargo beneath merchants, with resource icons and spacing. The create form uses Offering and Requesting. Trade reports identify resources with icons and readable names, show the viewer's sent/received perspective, and use clear participant roles. Batch reports show the actual exchanged totals. Recruitment validates the complete village order before reserving resources and population. Rejected orders show a reason and retain quantities; simultaneous orders cannot reserve the same population twice. Recalled support shows its actual return direction. Active militia appear in Rally Point Defense without becoming sendable or recallable. Headquarters construction quotes include the active inventory and tribe modifiers used by the queue. The emoji picker includes its catalogue locally. Paladin, Statue and Church picker entries are available when enabled, with matching BBCode rendering. Profile minimaps support dragging. Map centering is refreshed after late layout changes and image loading. Inventory details become inaccessible when filters hide the selected item. Simulator help links work, and empty unit requirements are labelled clearly. In a Day is last in the Ranking dropdown. Village Name replaces the joke naming examples. Invalid delivery forms retain their values and explain the failing field. The main start/login page no longer displays an IP address. Authenticated Settings and security logging remain available. World Moderation → Player Moderation → Individual Village Moderation opens Village Admin View for individual or bulk village edits, up to 20 selected villages per operation. Explicit final home troop counts respect each village's effective population cap, buildings and existing reservations. Away/returning troops and foreign support are retained. Each village has its own result and audit entry. Permanent inventory effects can be activated directly, using the same effect values, scope and stack rules as player activation. Grant Item groups items by category with a separate Permanent section. Numeric strength ordering and duration fallback determine light brown, dark silver and gold tiers. V2.0.0.1Removed the extra Attack / Defense / Total shortcut rows beneath Battle Points (Player) and Battle Points (Tribe) from the top Ranking dropdown. The normal category entries and in-page As Attacker / As Defender / As Supporter / Total tabs remain unchanged. Original releaseThe podium, battle-point tabs and results tables share the centre of the available content area beside the category sidebar. Podiums remain on page one only across all ranking categories. Players and Tribes now have an As Supporter battle-point tab, with ordinary pagination and its own first-page podium. Scores are recorded by both battle-processing paths when stationed troops defend another player's village. Enemy casualties are measured in farm population, consistent with existing lifetime battle points. Each external troop owner's share is proportional to the stationed population before casualties, combining multiple origins belonging to the same owner. The defender keeps the remainder. Own troops defending another owned village and the attacker's stationed troops are excluded from supporter credit, as are self attacks and battles without enemy losses. Rounding remains with the defender, so defender and support shares do not count the same enemy casualty twice. Supporter shares update the player, the tribe they belong to at battle time, total battle points and daily Support scores. A battle/player ledger prevents the supporter share being awarded again if the credit routine is replayed. Existing serialized battle processing and its broader retry behavior remain unchanged. New worlds include the supporter columns. Existing worlds gain them and the credit ledger automatically. Historical battle-point totals are preserved; the new lifetime supporter subtotal starts at zero and records new battles after upgrading. Past support contributions cannot be reconstructed reliably from the stored reports and are not invented or backfilled. V1.9.9Latest: V1.9.9.8.9Updates and hotfixesV1.9.9.8.9First-page leaderboard podium with original king, queen and prince SVG crowns for ranks 1, 2 and 3. The first-place card is taller and centered, with second on the left and third on the right. Includes Players, Tribes, attacker/defender/combined Battle Points for players and tribes, continent rankings, achievements, each daily category/date and World Dominance. Uses each visible ranking's ordered rows with no additional leaderboard queries. Profile links use the correct player/tribe identity, including achievement player IDs. Later pages have no podium. Empty rankings have no podium; new worlds show only existing leaders. Names are escaped, long labels wrap, crown sizes are constrained and both CDN trees include the assets. World Dominance has a single standings page, so its leading player or tribe podium appears there. Validation: 178 PHP checks passed, including expanded ranking fixture and Smarty rendering checks for first/later/empty pages, all nine standard ranking lists, specialized podium data and correct entity links. SVG crowns rendered and visually inspected. Live/browser layout and Docker build remain unverified. V1.9.9.8.8Constrain all bonus icons to a 16 by 16 pixel box with object-fit:contain in Combined and Production overviews. The 90 by 70 source icon no longer expands its row. Existing tooltip and aspect ratio are preserved. V1.9.9.8.7Restores the existing all-resources bonus icon at graphic/overview/all.png in both global_cdn trees, fixing the broken 30% resource-production bonus icon in Combined and Production overviews. Added checks that all nine bonus icon paths exist and decode in both CDN trees. Includes all V1.9.9.8.6 changes. V1.9.9.8.6Background: artwork is now a full-viewport fixed image layer with cover sizing, root-relative JPEG URL, and an isolated body paint context. Existing header, popup and game-panel layers remain above it. Both CDN trees include the JPEG. The previous body-background-only WebP rule and reduced-data hiding rule have been removed. Units: aligned all 12 recruitable units with the official simple-tech table for attack, three defense values, resource costs, population, base movement speed and loot. Militia combat values were already correct. Light Cavalry base attack is 130 instead of 900. Noble recruitment costs now use 40,000 wood, 50,000 clay and 50,000 iron in every academy mode. No-research units now use their full base strength at tech level zero. Existing research, world speed and earned item/flag/relic/Paladin/tribe modifiers still apply. Wall: official 20-level resource and population tables, base construction time of 20 minutes before HQ/world-speed adjustments, and actual flat wall defense in the shared battle/simulator calculation. Flat defense is added separately from the troop multiplier. The default unfortified village defense is 20; existing explicit world base-defense overrides are retained. At the standard base setting, level 20 displays and applies 1,020 flat defense. Existing percentage bonus table (up to +107%) is retained. Existing commands retain their scheduled arrivals; newly sent commands use corrected unit travel speeds. Existing reports retain historical results. Building population is recalculated through the normal village refresh routines. Validation: 178 PHP checks; both MariaDB suites; active-controller and map/minimap drag regressions. Docker and live visual verification are not completed. Official sources: https://support.innogames.com/kb/TribalWars/en_DK/1185 https://support.innogames.com/kb/TribalWars/en_DK/5342 https://support.innogames.com/kb/TribalWars/en_DK/1190 https://support.innogames.com/kb/TribalWars/en_DK/1195 The linked legacy help wiki pages are blocked to this environment. Official InnoGames support was used for unit values and wall upgrade tables; exact proprietary battle-engine equivalence is not asserted. V1.9.9.8.5Removed Public Profile, Friends and Daily Bonus from Settings. Preserved the Profile dropdown and added matching sidebars to Inventory, Treasury, Friends, Daily Bonus and your public profile. Settings pages retain their account sidebar. Feature flags continue to hide Inventory, Treasury and Daily Bonus when disabled. Added original frontier parchment artwork, optimized as WebP and present in both CDN trees. No database migration required. V1.9.9.8.4Creation and move preview tiles use the absolute public /global_cdn/graphic/map/ path. Admin configuration does not provide config.cdn; V1.9.9.8.3 consequently produced broken /graphic/map/ URLs. Both village and terrain images now resolve independently of that setting. The active external map controller now replaces the influence source data returned with every AJAX map response. It redraws church and relic ranges against the displayed minimap center and again when the replacement minimap image loads. Checkbox toggling is no longer needed after dragging either map. Influence tile placement now uses the same 130-pixel tile origin as the minimap renderer. Existing image revision protection also prevents an older PNG response from restoring an old radius position. The external controller URL is versioned V1.9.9.8.4 so browsers request the repaired script. Both CDN copies contain the same implementation. V1.9.9.8.3 changed only the fallback map navigation code; that code is bypassed when the external controller is active. This release repairs the active path and adds integration coverage that loads the exact script referenced by the map template. V1.9.9.8.3Headquarters projects queued demolition and construction in execution order. Rebuilding after demolition uses the correct next level and cost; demolition orders no longer consume construction surcharge slots. New demolition queues are limited to five orders. Cancel later orders for the same building before an earlier prerequisite. Church and relic minimap influence redraws after the new minimap image loads. Older image responses cannot overwrite a newer map center. Barbarian growth excludes both Church buildings. Old barbarian church orders and their events are purged; event execution also refuses them. Troop Manager queues up to 20 units per Stable or Workshop batch; Barracks batches remain 50. Moderation supports selecting and assigning up to ten nearby barbarian villages together, with per-village audit entries and planner cleanup. Admin Max buildings can use Resources, Offensive or Defensive default construction targets. Existing higher buildings are preserved. Default Account Manager templates also offer a maximum-level finishing stage. Village creation and movement have an eleven-by-eleven destination preview. Destinations must be empty and outside blocked forest. Moves preserve village identity, buildings and troops, update continent, and are refused while troop or merchant movements involve the village. Profile menu includes Inventory, Treasury, Friends and Daily Bonus. Daily rewards use a three-by-three chest grid and a popup on the first game visit each server-local day. One claim per player per world per server-local calendar day. Missed days pause progress. Rewards are inventory items and are activated separately. After day nine, the next eligible claim starts a fresh random nine-day cycle. | Day | Reward | | --- | --- | | 1 | 1% resource package | | 2 | Random 5% production, construction or recruitment buff for 24 hours | | 3 | 2% resource package | | 4 | Random 10% buff for 24 hours | | 5 | 5% resource package | | 6 | Random 15% buff for 24 hours | | 7 | 10% resource package | | 8 | Random 15% buff: 48 hours with 90% probability, 168 hours with 10% probability | | 9 | Random permanent village item: Good Connections, Weapon Master, Improved Saddles or Enhanced Engineering | Claims and inventory grants share an InnoDB transaction with a locked progress row, so duplicate requests cannot grant twice. Rewards are available in worlds with Inventory enabled. V1.9.9.8.2Resource relics can be placed near villages north or west of the target without an unsigned-coordinate database error. Placement, movement and removal refresh cached bonuses immediately. Recruitment bonus villages preserve the world unit catalogue, combat stats, archers and Paladins. Only recruitment times in the relevant building change. Self-conquest processes old defender losses before stationing the surviving attackers. Existing support is combined with survivors in one row. Admin assignment releases a village claim when the recipient is the claimant, including claims in allied planners. Other players' claims remain. Older owner-matching claims are repaired when their planner opens; admin assignments are logged as assignments and do not grant conquest medals. Delivery schedules use UTC throughout, including around DST and midnight. Existing cached next-run times are refreshed automatically once per world. Village overview level badges sit above the image-map overlay, so the Statue badge opens the Statue. Troops overview Rally Point and Troops actions open the village on their row. Poll Preview retains zero/no-end and other voting durations, plus the Important choice. Applying an Account Manager template without an owned village selection returns a selection error. Incoming market shipments label the resource column correctly. Same-resource offers explain that two different resources are required. V1.9.9.8.12026-10-09 · Hotfix for V1.9.9.8 Fixed the build failure caused by inconsistent build, configuration and footer version markers. Includes all V1.9.9.8 QA repairs. All 174 PHP build checks rerun after version updates. No live deployment. V1.9.9.82026-10-09 · Based on V1.9.9.7 Editable command queues support up to 20 independently previewed waves to one destination, with aggregate troop validation. Alliance and planner sharing now require invitations and acceptance; accepted relations are bilateral. Fixed market self-transfers and cancellation, simulator tie/empty-defense losses, paladin casualty identity, and population-flag recruitment. Corrected timezone and numeric display, village naming, forum refresh, planner coordinates, map privacy/colors, Statue links and template All selection. Tribe creation guards committed membership and retry behavior; production query and 502 root causes remain unverified. Upgrade and validation instructions are in README.md. No live deployment is included. V1.9.9.7World Settings now offers presets below the complete settings table and above Save world settings. Preview effective game/resource/travel/loyalty rates and affected fields before loading a draft. Apply it using the existing Save world settings action. All nine requested matching speeds, three balanced recommendations, and nine official-world adaptations. Read-only system templates with Copy preset; custom create, independent edit, delete and global reuse. Joined-player locks retained in the UI and enforced by the existing server validator. Authenticated Owner/Administrator access, security tokens, audit records, value validation and optimistic revisions. Brown buttons with white text, including both text color and text fill. Official sources and unsupported mapping notes included. World 158 is marked unavailable because its source could not be retrieved. The Account Manager, map and button fixes from V1.9.9.6.2 are retained. All footers, configuration markers and the build marker are V1.9.9.7. All 171 PHP build checks passed, as did the Node DOM interaction fixture and JS syntax validation. No Docker executable or browser engine is available; this release was not verified through a container build or a rendered browser session. V1.9.9.6.2Fixed white text for Account Manager template-management and return buttons in all link states. These links now use the existing button class, so the global brown hyperlink rule excludes them. Both color and WebKit text fill are explicitly white. Other V1.9.9.6.1 behavior is retained. Use TribalWarsCloneV1.9.9.6.2.tar.gz with the existing upgrade workflow. V1.9.9.6.1Account Manager now has one brown template-management button aligned on the right, with a matching return button in template views and improved table spacing. Unmet recruitment targets automatically queue their missing level-one research through the normal Smithy event system, including after logout. Research respects building prerequisites, available resources, resource buffers, the three-order queue and duplicate prevention. Targets already satisfied do not trigger research. Missing buildings still need construction or a construction template. New regression checks cover research events, ownership guards, buffers, queue limits, prerequisites, duplicates and manager navigation, and run during Docker build checks. All previous V1.9.9.6 features remain. Use TribalWarsCloneV1.9.9.6.1.tar.gz with the existing upgrade workflow. Keep the scheduler running for unattended management. World speed presets are outside this hotfix. V1.9.9.6Correct map owner point text; the minimap viewport follows main-map dragging continuously. Simultaneous attack/support markers appear side by side. Planner locks: yours yellow, your tribe blue, allies light blue, NAPs purple. Map visibility does not grant planner editing permissions. Account Manager runs in the server scheduler after logout and accrues offline resources before spending them. Its saved state survives worker restarts. Construction templates store an ordered milestone queue. Resources, Defensive and Offensive defaults follow the reference queues. Custom queues support add/remove/up/down, copy, protected defaults, JSON export/file import and optional excess-level demolition using normal world rules. Necessary prerequisite, farm and warehouse upgrades are inserted before a blocked milestone; ordinary orders retain their sequence. Troop templates have horizontal unit targets and wood/clay/iron/population buffers, with no built-in troop templates. Villages can use a saved template or individual saved targets, with group/status filters and pagination. Each recruitment building rotates in 50-unit batches. Resource-limited partial batches finish before the next unit; completed/unavailable targets are skipped. Existing army and queued units count toward targets. The centered 1176px default width, login/server binding, Discord preview and previous deployment fixes are retained. Use TribalWarsCloneV1.9.9.6.tar.gz with your existing upgrade workflow. Keep the scheduler service running: logging out does not stop automation, but stopping the server does. New Account Manager tables are created automatically in each world; saved user templates and village assignments remain compatible. V1.9.9.5Window width now controls the centered game interface and footer in pixels (640-3840). The default is 1176px, matching the existing desktop layout. Existing legacy 840px defaults migrate once; custom widths remain unchanged. New worlds default to 1176px. After migration, selecting 840px explicitly remains supported. Use TribalWarsCloneV1.9.9.5.tar.gz in your usual upgrade command. Each world migrates its legacy width default on first game request. Prior Adminer, build and Discord preview changes are retained. V1.9.9.4.4Adds public homepage Open Graph and Twitter preview metadata with a general game description and the existing gold Tribal Wars logo. Uses absolute HTTPS URLs for the public reverse proxy deployment. Preserves both Adminer bindings, faster builds and the corrected Releases test. Updates footer versions. Use TribalWarsCloneV1.9.9.4.4.tar.gz in your usual upgrade command. Public HTTPS homepage links carry preview metadata. No database migration. V1.9.9.4.3Fixes the Releases build test by comparing against build-version.txt instead of hardcoding an older release. Adminer remains available on localhost and 192.168.67.72, port 6678. Retains the faster Docker build setup and updates all footer versions. Use TribalWarsCloneV1.9.9.4.3.tar.gz in your usual upgrade command. No database migration. Earlier release documentation is preserved under docs. V1.9.9.4.2Adminer now binds to the server LAN address 192.168.67.72 instead of localhost. Existing TRIBALWARS_ADMINER_BIND values no longer override the LAN binding; the port remains configurable with TRIBALWARS_ADMINER_PORT. Preserves the V1.9.9.4.1 Docker build optimizations. Updates footer versions to V1.9.9.4.2. Open http://192.168.67.72:6678/. No database migration. This archive is configured for a host with LAN address 192.168.67.72. Adminer also remains available locally at http://127.0.0.1:6678/ through a separate loopback port binding. Fixed the release regression test to compare against build-version.txt instead of a hardcoded older version. All 163 PHP build commands passed locally with PHP 7.4. Docker image build was not available here. V1.9.9.4.1Removes recursive ownership changes across approximately 18,700 application files. Docker COPY assigns www-data ownership directly, preserving the previous runtime owner. Every PHP check runs before the final chmod and cache-directory setup. A failed late fixture now stops the build before filesystem preparation. Groups the original 163 PHP checks into two fail-fast scripts, retaining their original command order, ini boundary and explicit auto-prepend overrides. Reduces Docker layer overhead without dropping tests. Adds a restricted build context, excluding archives, documentation, local environment files and compiled Smarty output. Writable template directories are recreated after validation. Stable PHP/Apache dependencies and configuration remain before application copying for cache reuse. Public/game/admin footers and release notes now show V1.9.9.4.1. V1.9.9.4Continent Players and Continent Tribes rank owned villages by points on the chosen continent, with local village counts. Players also show total villages. Continent selection, rank jump, exact name/tag search, deterministic ordering and pagination retain the selected continent. The middle Ranking menu includes the continent lists, Achievements, In a Day and direct Attack/Defense/Total battle rankings. Existing achievement names and thresholds now match the supported rules in the Tribal Wars reference. Already earned medals remain earned. Combat tracking now credits distinct opponents, successful loot, actual conquests, ram wall damage, catapult damage, noble casualties, scout defenses, self-conquests and complete army destruction. Support battles count once per player per battle; own-village support is excluded from social support awards. Supporter daily kills are apportioned by the population strength of stationed troops, rounded down. Architect and Recruitment Drive count completed upgrades and troops. Continent Scorer keeps the best observed position on any occupied continent. Gatherer, living-Paladin milestones and relic acquisition/type/attachment/merge achievements follow the applicable world settings. Coin awards apply only to coin worlds. Daily awards cover attacking, defending, looting, distinct raided villages, conquests, supporting and scavenging. In a Day shows category rankings, date selection and finalized results. Daily awards run midnight to midnight in the game server timezone (Europe/Dublin). A positive unique leader wins; ties receive no award. Results finalize after due commands and scavenging returns are resolved. Repeat wins are counted, with first-world awards for the first two wins in the applicable categories. Friendship approval counts each distinct friend once. Tribe membership measures consecutive time in the same tribe. Replacement villages after complete conquest count one restart per restart action. Premium gifting, premium completion, events, Strongholds, apprenticeships, skill books, Paladin leveling/skills, referral recruitment and unsupported personal quests are excluded. Empty attack loyalty fields no longer masquerade as conquests; unsuccessful raids no longer inflate plunder counts. Medal promotion updates the level and score atomically, preventing duplicate notifications on concurrent requests. Friendship approval cannot replay an already accepted invitation. Cross-world profiles tolerate worlds that have not yet migrated the new medal columns. Both CDN paths include artwork for the new award keys. Public report sharing stays restricted to attack, scouting and defense reports. All public, game and admin footers and the build version show V1.9.9.4. The start-page Releases list includes this update. V1.9.9.3.4Barbarian resource updates no longer look up player inventory effects. Thirteen inventory SELECTs per resource update become zero; player inventory bonuses remain enabled. Growth selection joins the daily ledger instead of querying it per village and excludes exhausted villages until the next UTC day. Each pass processes at most 250 villages, ordered oldest-first to distribute work across later passes. Forbidden Academy/Statue removal remains eligible even after the daily allowance is exhausted or growth is disabled. When no building changes, growth maintenance no longer settles resources or calculates cumulative building population twice. Resource timestamps remain untouched so the next village view, battle or real building change accrues the elapsed resources using the existing calculation. Growth caps, daily allowance and player-owned village exclusion remain enforced. These changes address the unnecessary work observed in the supplied database/scheduler capture. Production CPU improvement and the recurring six-hour pattern still require measurement after deployment; no percentage reduction is claimed. Read-only health scans calculate population capacity from the selected world's Farm system/custom capacity, population bonus village, valid population Flag and active farm-capacity Inventory effects. Scope, owner, expiry and feature toggles are respected. Missing feature tables are not initialized by scanning. This avoids both incomplete capacity comparisons and runtime helper calls that could write during a read-only scan. Custom Farm capacity now retains the population-bonus village's 10% increase in gameplay as well as health checks. Population Flags and farm-capacity items multiply by that base exactly as in gameplay. Flag boosters do not double population Flags. Villages with uncompleted scavenging runs are deferred during scans and repairs, because their troops are temporarily away from the home garrison. Busy villages, invalid troop records and changing records retain the existing protections. Speed bonuses from items, Relics and Tribe skills do not change population usage; overdue checks use the saved actual arrival/completion times rather than guessing from unmodified unit speeds. Temporary Militia does not consume permanent population. V1.9.9.3.3Map hover command icons are explicitly 16×16 pixels, including returning support and attack SVGs. Slowest-unit icons use the same compact dimensions. SVGs no longer stretch the command row or push the hover card below the screen. Map hover village names, owner names, tribe tags and command-origin names are HTML-escaped after decoding. Player-controlled text is displayed as text rather than interpreted as HTML. Favorite requests reject malformed/non-string security tokens and use a timing-safe comparison. Existing world authentication, bans and command/report visibility checks remain in place. A read-only CPU diagnostic script captures running database queries, MariaDB counters, container and host CPU snapshots, system timer names and recent scheduler logs. It does not enable query logging, change database settings, restart services or change scheduler behavior. Run during a high-CPU period to identify the actual workload. Militia troops per Farm level is multiplied by the actual Farm level: 50 × 30 = 1,500 Militia. The allowed-until Farm level field controls eligibility for new calls; it is not a fixed troop quantity. -1 means unlimited owned villages. The supplied graph measures the tribalwars database container. The packaged scheduler has no six-hour periodic task. It processes commands every second, Account Manager on a five-second throttle, and maintenance every 1-60 seconds depending on world settings. Source candidates include Account Manager filling queues and unowned village growth, but neither is proven to cause the supplied pattern. Host backups, other scheduled host jobs, and player-driven repeating batches also remain possible. Attribution requires production snapshots during a peak; no remote host or live database was accessed. V1.9.9.3.2The map renders again. Four missing quotes in the returning attack/support marker template prevented legacy Smarty from compiling the map page. The context menu also reads its security token from the rendered map attribute, avoiding legacy Smarty literal-block newlines that broke its JavaScript. Return markers, forwarded report intel and own/shared claim colors are retained. World Settings has four Militia controls directly below Farm system: Enable Militia, maximum owned villages (-1 means unlimited), troops per Farm level, and maximum Farm level. All four settings lock after players join, both in the admin form and on the server. Militia calls check actual village ownership, Farm level and the player's current village count on the server. Both limits are inclusive: a limit of 3 villages permits calls with 3 villages but prevents calls with 4. A value of 0 permits no calls; -1 removes the village limit. Troop amount equals actual Farm level multiplied by the configured troops per level. Existing deployments last until their original timer ends even if the player gains villages. Existing worlds default to enabled Militia, unlimited villages, 50 troops per Farm level and maximum Farm level 30. Existing deployment duration, combat strength and production penalty remain unchanged. The Farm and Militia details popup show the effective world rules. The start page has a Releases link immediately to the right of Statistics. Release groups appear newest first; nested updates and hotfixes expand independently. Historical release notes ship with the application, and the latest hotfix appears first inside its release. Public notes are escaped plain text. All footer and build markers display V1.9.9.3.2. V1.9.9.3.1This release adds incoming attack/support indicators, a selectable Incoming overview, personal labels and a reorderable Configure Label dialog. Incoming unit labels are estimates based on visible travel time; equal-speed units are listed together. Own command unit icons use actual troop counts. World unit registries determine available units. Request Support creates editable Simple and Queued BBCode for selected attacks, grouping requests by target village and including wall, loyalty and residing troops. Forum and message actions open new windows with drafts only. Existing message/forum length limits apply when you send; draft text is not silently truncated. Map return markers distinguish attacks, recalled support and newly cancelled support. Cancelled commands from older builds lack their original type and retain the attack-return fallback. Forwarded battle/scout report intel is visible only to its recipient; map Last attack now observes the same report-owner restriction. Own claims are yellow, shared visible claims light blue, and live claim creation uses the yellow asset immediately. Three small world-local tables initialize automatically: tw_command_labels, tw_command_label_settings and tw_command_returns. No movement scheduling, combat, relic merging, or Farm militia mechanics are changed. V1.9.9.2Village Points appears immediately after the current village name, coordinates and continent. The identity area wraps on narrower screens so the value remains visible. Five-action foreign-village menus now form a regular pentagon. Larger menus use evenly spaced positions around the same village selection ring. Existing actions and ownership/diplomacy restrictions are preserved. Menu anchors leave enough room at map edges for the icons. The lock now uses the matching lock artwork from the existing menu sprite, giving it the same background and frame as the other actions. Blue claim markers remain on the map. Relic headings and merge choices now show the quality color: Shoddy uses readable dark text, Basic green, Enhanced blue, Superior purple, and Renowned orange. The selected dropdown label keeps its quality color. A colored progression legend explains the merge rules. The existing merge algorithm upgrades exactly one quality level. Three Shoddy (gray) relics produce Basic (green); three Basic relics produce Enhanced (blue). Matching types retain their type and secondary stats, and mixed types roll a new type and stats. No merge mechanics or existing relic records have been changed. Verification covers all four upgrade steps and confirms invalid, assigned, mixed-quality or highest-tier selections do not consume relics. V1.9.9.1Eligible village mini menus now include a blue lock icon. Clicking it creates an Ennoblement Planner claim for the signed-in player and shows the map lock immediately. An existing visible claim opens the planner instead. Claims can be reviewed and released there, and automatic release on conquest is preserved. Own villages, villages in the player's tribe, allied tribes and NAPs are excluded. Friendly diplomacy in either direction is respected. Both the map and planner use the same server-side claim service, checking current ownership and diplomacy, enabled settings, duplicate/shared-partner claims, player limits and release cooldowns. The service applies the configured expiry and writes the existing claim log. A per-world database lock prevents concurrent requests bypassing claim limits or shared claim checks. The AJAX endpoint requires the authenticated world session and a POST form token. Players without a tribe receive a clear message. Both [spoiler] and [spoiler=Title] render as centered brown buttons with white text. Their content begins hidden, and each button toggles only its own content. Keyboard activation and aria-expanded state work, including nested spoilers. Rendering is shared by global/world BBCode and Guest View; no page-specific script is required. Existing BBCode formatting inside spoilers is preserved. All public, Guest View, in-game and admin footers and build markers show V1.9.9.1. Changed map assets are synchronized in both CDN directories and their cache versions are updated. Previous release notes, changelog and README are archived under docs/. No manual database migration is required. Original releaseMass message now lists world checkboxes with Select all. The current world is selected initially. Messages go to all registered players in each selected world; an account with registrations in multiple selected worlds receives a message in each corresponding inbox. Archived worlds cannot receive new broadcasts. Registry IDs, staff permissions and the existing form token protect the action. The result shows recipient counts by world. Rally Point has a Troop Templates submenu. Players can save up to 20 named templates per world, edit or delete them, and choose a fixed quantity or All per unit. The unit columns follow world settings, including Paladin and archer availability. Templates are private to the owning player and world and can be applied in the Rally Point or map window. Map troop presets and available quantities are brown hyperlinks. Noble adds exactly one noble to the current selection, up to availability. Attack and Support lead to an editable confirmation window before dispatch. Add additional commands, change each composition independently, select templates, remove rows and review the aggregate total against village availability. Travel, arrival and carrying capacity are calculated by the server for every row; morale follows the world rules. Catapult targets appear when catapults are selected for an attack. Four beben rows containing 100 axes and 25 light cavalry produce four separate movements, using 400 axes and 100 light cavalry in total. The final server action validates enabled units and aggregate availability, reserves the total with one guarded update, and creates one movement and scheduler event per row. The existing repeated-command Rally Point flow remains compatible. V1.9.8Latest: V1.9.8.9.3Updates and hotfixesV1.9.8.9.3Noble Planner Owner and Claimant usernames now link to public player profiles. Each user's tribe abbreviation links to its tribe profile; barbarian villages retain a plain Barbarian owner label. A confirmed claimant conquest automatically deletes the fulfilled claim and records a persistent tribe event: the claimant conquered the village and the noble claim was automatically released. This entry appears in All and Ennoblements. Report-derived duplicates of that same completion are excluded. Claims belonging to other claimants are retained. Previously fulfilled claims are reconciled on opening the planner or Tribe Overview using matching confirmed attacker reports and current village ownership. Expired-at-conquest claims are not credited as fulfilled. Repeated processing does not duplicate the event. In-game, public and Guest View footer versions, both world configurations, the build marker and Compose runtime version are synchronized to V1.9.8.9.3. An additional regression check verifies the in-game footer version. Validation: all 135 Dockerfile PHP test and syntax commands pass on PHP 7.4.33. Claim completion fixtures verify matching claimant ownership, expiration, idempotence and safely escaped activity messages. Archive SHA256 verification. V1.9.8.9.2Left-aligns nested report detail tables with the report artwork, including attacker/defender units, troops in movement and plunder. The alignment rule is scoped to the report detail container; unit-number cell alignment is preserved. The stylesheet cache key is updated. Validation: report-menu, statistics/footer, Guest View and public editor/embed regression checks on PHP 7.4; archive SHA256 verification. V1.9.8.9.1Fixes the Docker build failure at the statistics footer regression check. Public and Guest View footers still contained v1.9.8.8.6 in V1.9.8.9; they now show the current release exactly once. Both world configuration version markers and the Compose runtime build version are synchronized. The existing strict footer checks remain in place. The statistics test additionally verifies that both configuration versions match app/build-version.txt. The V1.9.8.9 report manager, filters, folders, forwarding and battle-only public sharing remain included. Validation: all 134 Dockerfile PHP tests and syntax commands run on PHP 7.4.33 with the required extensions; archive SHA256 manifest verification. V1.9.8.9Reports redesign based on the provided reference: category sidebar, expanded collapsible filters, battle indicators, archive/folders, forwarding, public links and selection actions. The top Reports submenu includes the new views. Only battle reports (attack, which includes attack/scout/defense snapshots, and supportAttack, a support-defense casualty report) may be shared. Server-side publish checks reject other types; the public endpoint rejects previously shared non-battle reports. Existing battle tokens and individual redaction choices are preserved. Bulk Publicize shares all fields; use the individual report to select fields to hide. World configuration controls Paladin filters/indicators and Scavenging navigation. Unit positions are derived from the active world registry. Filters and counts execute in SQL, with pagination limited to the filtered player inbox. Archive/folder/forwarding metadata is separate from battle snapshots. New report_inbox and report_folders tables are created on first use. Forwarding copies a snapshot into the recipient's inbox; deleting the sender's copy does not remove the forwarded copy. Deleting a report revokes that copy's public links. Deleting a folder returns its reports to the inbox. Validation: PHP syntax; game Smarty template compilation/rendering; MariaDB filter, owner-scope, troop-boundary, archive/folder and stable-token integration checks; actual action forwarding, cross-owner bulk guards and publication restrictions; scouting persistence, editor/public embed and world feature checks. V1.9.8.8.6Administrator selects and locks all subordinate permissions, including forum permissions. Forum role icons are centered in the members table. V1.9.8.8.5Fix stale public footer version that blocked Docker build. Attribute conquests using recorded tribe membership periods, preserving them after departure and excluding pre-join conquests. V1.9.8.8.4Existing diplomacy activity now links the initiating player and the other tribe to their public profiles. V1.9.8.8.3Ennoblements now reads confirmed attacker conquest reports, so recent captures including those made before this release appear without changing their timestamps. The All feed includes them too. New alliance, NAP, enemy, war, and invitation actions are recorded as tribe events for the sender and, where applicable, the recipient. Accepted and declined invitations are recorded on both sides. Historical diplomacy transitions were not stored by earlier builds and cannot be reconstructed from the current relation alone. Changes made after deployment will be logged. V1.9.8.8.2The top Tribe dropdown now follows the Tribe submenus: Overview, Properties, optional Level, Members, Diplomacy when permitted, Wars, Planner, Recruitment, Mass Mail when permitted, and Forum. Obsolete Profile, Invites, Welcome, and Options entries have been removed. The dropdown test is part of the Docker build checks. V1.9.8.8.1This layout update removes the extra Forum button, centers the administration link under the thread controls, expands thread rows, and adds a Last Post by column using the latest reply. The forum detail has clearer spacing. Tribe Overview event filters now use a plain selected label with bracketed links for the remaining categories. The Docker build checks the forum source and lints its PHP files. Test both a thread with no replies and one with a reply to verify Last Post by on your world. V1.9.8.8The Forum tab now provides General and additional forums, new threads and polls, BBCode editor, preview, replies, editing and deletion of replies, important and locked threads, and poll voting. Forum administrators can create, rename, reorder, and delete empty forums. Visibility cycles All → Hidden → Trustable → All. Partner forum access requires an active alliance or NAP and can be removed from the sharing popup. Forum Moderator, Access to Hidden Forums, and Trustworthy Member are scoped to the current tribe. The Members page includes these roles and each player's global rank. Tribe Mass Mail delivers a non-replyable message under the tribe's name. Announcement filters and richer coordinate links are included. V1.9.8.7Based on V1.9.8.6. Tribe Overview has a Leave Tribe button and resizes embedded public reports to show their full height. Noble Planner claimants appear below Owner on map hover as [TAG] Player. Wars replaces the placeholder with declarations, allied war invitations, accepted NAP requests, battle points, member rankings, two-sided peace offers, and an archive. Active wars end when a participating tribe is dissolved. Battle points begin recording after this version is deployed. Tribe Skill activation now uses a tribe-wide record paid for by the activating player. All current members receive the effect. Earlier player activations remain active until expiry. The Level page and Village Overview show who activated each effect and when it expires. Overtime is reflected in production display, and construction and recruitment bonuses apply to newly queued orders. Docker build includes PHP lint and the shared skill and war source checks. Verify a shared skill from a second member account and test war and NAP invitations after deployment. V1.9.8.6Based on V1.9.8.5.1. Tribe Recruitment combines invitations, a saved recruitment policy (open, apply, or invitation only), application message template, and editable welcome message. The tribe menu removes Profile and adds Wars, Noble Planner, Recruitment, and Forum. Wars and Forum are placeholders. Noble Planner claims expire after the configured time. Members can claim villages up to the configured limit; the claim owner or a leader/diplomat may release them. A cooldown prevents reclaiming a released village. Leaders and diplomats can edit settings inline and share the planner with tribes that are mutually allied through Diplomacy. Shared claims appear as blue locks on the game map. Docker build includes PHP lint and a regression source check. Test one claim, one allied partner, and the map marker after deployment. V1.9.8.5.1Based on V1.9.8.5. The scheduler now loads relic helpers before handling attacks. Previously tw_relic_types() was undefined in the scheduler process, causing event ticks to fail. Successful ticks should process overdue attacks and allow Troop Manager to run. A Docker build check verifies this dependency. After deployment, check docker compose logs --tail=100 scheduler for any further errors and confirm the overdue attack resolves. V1.9.8.5Based on V1.9.8.4.2. The Construction Manager and Troop Manager each have a per-player, per-world template selector for future conquests. Select the built-in construction template and DEF troop template, respectively; both choices are off until saved. Only villages captured after enabling the options are assigned. Former owners' Account Manager assignments are cleared on conquest; the new owner receives only templates belonging to that account. Troop Manager shows a per-village status under the template: targets met, queued recruitment, missing Barracks/Stable/Workshop, missing research, full farm, missing resources, or awaiting the scheduler. Existing target counts are unchanged. The scheduler runs Account Manager at least every ten seconds even while the priority event queue remains saturated, while retaining its 500-assignment pass limit. Docker build includes the conquest assignment and readiness checks. Verify on a test conquest and inspect the scheduler logs if an eligible village remains ready without recruiting. V1.9.8.4.2Updates the public and Guest View footer checks to derive their version from the build marker. Also corrects the Guest View footer to the current version. No gameplay changes from V1.9.8.4.1. V1.9.8.4.1Corrects the world-features build test to expect Tribe Levels in the locked world-setting list. Gameplay is unchanged from V1.9.8.4. The footer and build marker show V1.9.8.4.1. V1.9.8.4Based on V1.9.8.3. Tribe Properties now follows Overview and includes editable name, tag (up to six characters), homepage, IRC, member counts, preferred languages with flags, points, rank, and a public tribe link. Tribe Levels is a world setting placed below Enable church and locked once players join. It defaults to Off for existing worlds and new worlds. Levels 1-20 use the exact XP thresholds from the Tribalwars wiki for the world tribe member limit. Members accumulate weekly Prestige based on weeks in the tribe, donate it for XP, and activate seven skills for 24 hours. Recruitment completions contribute to a weekly recruit quest and three personal Prestige milestones. Leaving a tribe clears the balance; kicking a member also deducts a capped share of that member's contributions. World Moderation includes a Prestige grant for testing, with a separate actor and timestamp log. The wiki specifies effects and prices, but not exact level power, unlock level, or duration. This implementation uses 3% at level 1, +1% per level (22% at level 20) and a 24-hour duration. Unlock levels are 1, 2, 3, 5, 7, 10, 12. These rules are starting values for live testing. The game, home page, and admin footers now display v1.9.8.4. The build version marker is updated. Deployment: back up the database. Enable Tribe Levels on a world before players join. The Docker build includes syntax and threshold checks. Verify the seven skill effects, donation, weekly grant, and moderation grant in a test world before enabling player access. A PHP and Docker runtime was unavailable in the authoring workspace, so the live build was not run there. V1.9.8.3Fixes the public battle report HTTP 500 caused by Smarty interpreting inline CSS as template tags. The public view still uses the private battle report layout with the chosen visibility settings. The editor’s 16 color buttons now show their intended swatch colors despite global button styling. All editor submenus close with ×, a second click on the active toolbar icon, Escape, or an outside click. Deploy using README.md. Back up the world database first. V1.9.8.2Buildings in the editor and scouting report use the existing graphic/overview/*.png artwork. The editor has compact icon buttons and visual unit, building, and emoji pickers. The color menu has 16 swatches, a color chooser, and a manual validated #RRGGBB field. Includes a searchable set of over 4,000 named emoji aliases backed by local Twemoji SVG art. Twemoji graphics are credited in app/tribalwars/global_cdn/graphic/emoji/ATTRIBUTION.txt and licensed under CC BY 4.0. Quoted authors appear in bold with English wording. Public attack reports use the private battle report template with each selected disclosure category enforced on the public view. Other report types retain the compact public summary. Includes the standalone mail-thread dependency fix and updated build checks. Back up the world database and deploy using README.md. V1.9.8.1Fixes the standalone mail-thread test failure caused by the BBCode formatter not being loaded. Includes all V1.9.8 tribe editor and public report changes. Deploy using README.md. Original releaseThis release adds a public report link with selectable disclosure fields and revocation. Copy the URL or insert it as [report_display]URL[/report_display] in a message or profile. The communication editor now offers BBCode controls for font size, color, table, coordinates, unit and building icons, and named emoji such as :pensive:. The same formatter handles player profiles, tribe descriptions and announcements, and mail. The public report view is available without a login only while its owner keeps the share active. Deploy using README.md. Back up the database first. The public_reports table is created automatically. V1.9.7Latest: V1.9.7.9Updates and hotfixesV1.9.7.9Corrected CSS specificity so the brown hyperlink palette no longer overrides white text on Headquarters and Smithy action buttons. Green and red button backgrounds remain unchanged. Deploy using README.md. V1.9.7.8Fixed white text on Construct, Research, Cancel, and Speed Up buttons; overview building-level numbers; and button styling throughout the Admin Panel. Regular buttons are brown with white text. Existing red and green backgrounds are preserved with white text. Hyperlinks remain brown. Deploy using README.md. V1.9.7.7Church and Relic influence areas can be toggled below the minimap when enabled in the world. Both map views show coverage, and relic colors follow quality. Marked Players now uses a neutral empty state. The Tribe landing page has a new benefits design, invitations, Establish, and up to ten nearby tribes within 25 fields; Apply sends a request to tribe recruiters. Deploy using README.md. V1.9.7.6The Messages conversation view now uses a 760-pixel content area, with the editor, preview, and posts aligned to the available width. Inbox, Outbox, and Archive lists keep their existing layout. Deploy using README.md. V1.9.7.5Messages now show a threaded conversation with an inline reply editor, quote controls on posts, and a preview above the editor. Inbox, Outbox and Archive navigation and lists remain in place. Replies notify recipients through the existing delivery path. Existing worlds create the conversation tables when a player opens a thread; new world templates include them. Deploy using README.md. V1.9.7.4Fixes message replies from the outbox and archive, English reply quotation, and centered overview panel headings. Deploy with the instructions in README.md. V1.9.7.2.3Unified in-game button styling to brown with white text and hyperlink text to brown. Kept green and red action buttons unchanged. Inline actions such as Stop management and per-village coin maximums remain brown text links. Matched the personal crest file picker to the standard brown OK button. Added Relic Bonus to graphical and classic Village Overview when Relics are enabled, listing the nearby equipped relics and their effects; included the panel in saved overview layouts. Included the corrected World Speed Presets guide. V1.9.7.2.2Fixed mass coin minting SQL using the same unaliased table names in the guarded update as in its MyISAM table locks. The coin regression check now covers both selected and maximum batch operations. Darkened the Account Manager village rename button; styled Return to Academy as a button and added clickable brown per-village maximum amounts. Moved the Account Manager unlock threshold beneath starting villages in Admin World Settings. Worlds without an explicit value default to five; saved values remain unchanged. Added WORLD-SPEED-PRESETS.md with 1×, 2×, 5×, 10×, 50× and 500× recommendations. V1.9.7.2.1Corrects the Account Manager Docker build regression check to pass the configurable unlock threshold to the Smarty template and verify both the default and a custom value. Gameplay from V1.9.7.2 is unchanged. V1.9.7.2Based on V1.9.7.1. Account Manager can number and rename all currently owned villages, including recent conquests. Optional automatic numbering applies to future captured villages. The world unlock threshold is editable from 1 to 1,000 villages after players join; saving a changed value sends system mail to every player on that world. Existing unlocks remain permanent. Corrected cross-village resource accrual and capacity: production uses the village-specific bonus warehouse and production tables; the village overview, recruitment, inventory resource packages, and scavenging returns use the appropriate cap. Added Academy mass minting for gold-coin worlds: filter by village group, page through Academy villages, enter amounts or mint the maximum from the visible page. Resource and coin balances are checked under table locks before one guarded update. Deploy using the commands in README.md. Check /build-version.txt after the app rebuild. V1.9.7.1Based on V1.9.7. All relic gameplay remains included. The game resolves ../global_cdn from /tribalwars/w1/ (and other world routes) to /tribalwars/global_cdn. V1.9.7 placed the 18 original relic SVG files only in the root /global_cdn tree. This build also includes them in app/tribalwars/global_cdn/graphic/relics/, so the top-bar telescope, Treasury heading and item artwork load from the game's actual image path. The URL /tribalwars/global_cdn/graphic/relics/telescope.svg should now return the icon after deploying this archive and rebuilding the app container. The root copy remains available for direct root-relative use. Original releaseBased on V1.9.6.13. Relics appear in a world-specific Treasury, opened with a custom telescope icon immediately to the right of Flags. The eighteen relic types have original vector artwork. No starter relics. Barbarian village takeovers yield a relic; other conquests have a 35% discovery chance. Successful resource raids and village defenses each have a 3% discovery chance. The movement ID prevents duplicate awards on retry. Five qualities: Shoddy, Basic, Enhanced, Superior, Renowned. Main stats give 2/4/6/8/10%; two distinct secondary stats give 1/2/3/4/5%. A stat's combined relic bonus is capped at 10%. Up to ten owned villages can equip one relic each. Range is 1/1/2/2/3 map tiles, depending on quality. Placement locks the relic for 24 hours. Conquering an equipped village transfers its relic to the conqueror's Treasury. Merge three unassigned relics of the same quality. Three of the same type retain their type and secondary stats; mixed types roll a new type and secondary stats. The first discovery or merger of a Superior or Renowned type on a world names that quality/type after its discoverer. Resource production, barracks/stable/workshop recruitment, haul, applicable unit combat, and scouting bonuses are wired into gameplay. Longbow and Shortbow do not drop when archers are disabled. World Settings has Enable relics below Flags with Locked after players join. Existing Alpha/Beta worlds (IDs 1-4) default to Yes; other worlds and newly created worlds default to No. The setting cannot change after players join. V1.9.6Latest: V1.9.6.13Updates and hotfixesV1.9.6.13V1.9.6.13 fixes intermittent server-side action delays and synchronizes production display units. Normal player requests no longer wait behind the scheduler's world-wide maintenance lock. The optional player-side lifecycle check uses an immediate, zero-second lock attempt. If the scheduler is busy, the request continues without waiting. When acquired, that lock is released immediately after the lifecycle check instead of remaining held until the page request ends. Scheduler, lifecycle mutation, recovery, and administrative operations retain their existing protected critical sections. Wood, clay, and iron always display with the same unit for a village. If any one of the three produces below 18,000 per hour (300 per minute), all three display Per Hour. All three switch to Per Minute only after the least-producing resource reaches 300 per minute. The rule applies to the village overview and the Timber Camp, Clay Pit, and Iron Mine pages. V1.9.6.12V1.9.6.13 adjusts the adaptive production-display threshold requested after V1.9.6.11. Effective production of at least 300 resources per minute is displayed as Per Minute. Anything below 300 resources per minute is displayed as its actual Per Hour amount. The cutoff is exactly equivalent to 18,000 resources per hour: 18,000/hour displays as 300/minute, while 17,999/hour displays per hour. Wood, clay, and iron continue to be evaluated independently on the village overview and their respective building pages. World speed, resource bonuses, flags, inventory effects, and militia penalties remain included in the effective rate. V1.9.6.11V1.9.6.11 introduces adaptive production units across the village overview and all resource-building pages. An effective production rate of at least 10 units per minute is shown as Per Minute. A smaller effective rate is shown as Per Hour, avoiding tiny or awkward per-minute figures. Wood, clay, and iron are evaluated independently, so bonuses or penalties can legitimately give them different units. The displayed amount includes world speed, bonus-village production, flags, inventory bonuses, and militia penalties. Current and next-level breakdowns on the Timber Camp, Clay Pit, and Iron Mine use the same unit selected from current effective production for a clear comparison. V1.9.6.10V1.9.6.10 fixes the Docker build gate for the synchronized Guest View forest implementation delivered in V1.9.6.9. V1.9.6.9V1.9.6.9 synchronizes procedural forests across both map views and repairs the Smithy countdown on the village overview. The overview now selects the earliest active Smithy research order in deterministic queue order. Its countdown uses the same research end_time as the Smithy screen. No timer is rendered when research is absent or already expired, so the generic timer script cannot enter a repeated refresh loop. Guest View now removes SQL identifier quoting before using the world database name as the procedural terrain seed. Guest View and the authenticated map therefore generate the same forest tile at every coordinate in the same world. Forest occupancy checks are cached for the duration of a request, reducing duplicate hashing while rendering buffered maps and checking neighboring tiles. V1.9.6.8V1.9.6.8 repairs existing forest overlaps and compacts all future village placement. On the first scheduler maintenance pass for each world, every village whose underlying coordinate is a procedural forest tile is moved to the nearest valid coordinate. No village is deleted or recreated. IDs, owners, bonus types, buildings, troops, resources, queues, reports, support, and commands remain intact. Only x, y, and continent are updated. Occupied coordinates and stored map terrain are skipped. The search expands outward one ring at a time until a forest-safe coordinate is available. Player map caches are refreshed after their affected villages move. A per-world migration marker makes the operation idempotent. Every new village after the first is anchored to one of the 50 most recently created villages: 55% are directly adjacent. 30% have one empty coordinate between villages. 15% have two empty coordinates between villages. Collisions and forest terrain cause another compact candidate to be chosen. The previous 25% wide radial-placement branch has been removed. V1.9.6.7V1.9.6.7 strengthens forest collision and limits daily unowned-village development. A candidate is rejected if its coordinate is a forest tile. A candidate is also rejected when the coordinate is a small clear hole enclosed by more than two neighboring forest tiles. A village may still be placed directly beside an ordinary forest edge. The shared rule is used by player creation, automatic barbarian and bonus creation, Admin bulk generation, and exact-coordinate Admin creation. The additional enclosed-clearing rule prevents a village image from visually replacing the middle of a connected grove, which was the case shown in the supplied Beta 2 screenshot. Added Maximum points each unowned village may gain per day to Admin World Settings. The default is 500 points per village per UTC day. Abandoned and bonus villages each receive an independent allowance. An upgrade is skipped when its point value would exceed the remaining daily allowance. Zero-point prerequisite upgrades remain legal because they do not consume the allowance. Daily counters reset automatically at midnight UTC. The overall point ceiling and minutes-between-upgrades settings remain independently configurable. V1.9.6.6V1.9.6.6 expands bonus villages and improves future settlement placement. Bonus type 7: 100% more wood production. Bonus type 8: 100% more clay production. Bonus type 9: 100% more iron production. Random automatic bonus creation now selects from all nine types. Admin bulk creation, exact village creation, and bonus reassignment expose all three new types. Authenticated and Guest View bonus displays use the matching wood, clay, and iron artwork. The specialized multiplier affects only the named resource. It stacks with world speed, the existing resource flag, militia production state, and active inventory effects. Generated villages favor coordinates one or two fields from one of the 50 newest settlements. This produces both directly adjacent villages and villages separated by one empty coordinate. Twenty-five percent of attempts retain the wider radial algorithm to prevent unnaturally solid settlement blocks. Every generated candidate is still checked for occupied map tiles and deterministic forest terrain. Exact-coordinate Admin creation continues to reject forest coordinates with a clear error. V1.9.6.5V1.9.6.5 restructures the procedural forests introduced in V1.9.6.4. Forest filenames are now interpreted in their artwork-defined bottom/left/top/right edge order. All 16 edge combinations are used, including forest0110.png. Neighboring tiles therefore connect cleanly instead of producing visibly mismatched square blocks. The same deterministic, world-specific forest layout remains shared by the authenticated map and Guest View. Forest generation targets 10-15% map coverage and remains below 20%. The revised generator creates broader, smoother clusters while preserving stable layouts across restarts. Player, administrator, barbarian and bonus-village creation continue to reject forest coordinates. V1.9.6.4Added all 15 supplied forest*.png connection variants to normal and night map assets. Forests form connected, irregular clusters rather than isolated random decorations. Grass now has a subtle texture instead of a flat #5c701b fill. The same texture is used beneath village artwork so village tiles continue to blend into the terrain. The world database name seeds the terrain generator. Different worlds receive different forest patterns. A world's layout remains stable through page loads, container restarts, and deployments. Authenticated and Guest View maps call the same terrain generator and therefore display identical forests. The shared player, barbarian, and automatic bonus-village creator rejects procedural forest coordinates. The administrator's manual village-creation tool rejects the same coordinates. Existing database-backed terrain remains protected by the original collision check. Existing villages remain visible and are not moved; procedural forest rendering yields to a village already occupying a coordinate. V1.9.6.3The authenticated map now includes bonus in its village query. Previously it could not reliably distinguish normal from bonus villages. Removed legacy code that appended b.png after an already complete filename, which could turn a valid bonus filename into an invalid URL. Guest View retains its direct database-driven selection. Both maps now enforce the requested mapping: Owned bonus: b1.png through b6.png Unowned bonus: b1_left.png through b6_left.png Owned normal: v1.png through v6.png Unowned normal: v1_left.png through v6_left.png Rebuilt all 24 village assets from the authoritative V1.9.6.3 ZIP. Owned villages have a transparent dynamic-color center surrounded by a one-pixel black ring. Unowned villages have no ownership circle. Village-image edges and all four grass tiles use the exact sampled background color #5c701b, eliminating visible pasted-on rectangles. The simplified two-entry legend remains exclusive to Guest View. The automatic bonus-village World Setting introduced in V1.9.6.2 remains available directly below the barbarian-village setting. V1.9.6.2Authenticated and Guest View maps now use the supplied six-stage files exactly by category: owned normal (v*.png), unowned normal (v*_left.png), owned bonus (b*.png), and unowned bonus (b*_left.png). Day and night runtime asset copies are synchronized. Unowned village artwork has no ownership circle. Owned normal and bonus villages expose the live ownership/diplomacy color in the top-left circle. A tiny black border now surrounds that colored circle. Map grass uses the artwork's background palette so the 53×38 tiles blend into their surroundings. Admin World Settings now includes Create X automatic bonus villages after every 1 player village (-1 disables) immediately below the automatic barbarian-village control. -1 disables creation; positive values create that many unowned bonus villages after each player village. 0 is rejected to keep the setting unambiguous. The simplified Standard: Abandoned, Player Villages legend remains limited to Guest View. The authenticated legend remains unchanged. V1.9.6.1Replaced the legacy village graphics used by the authenticated map and Guest View with the supplied modern artwork. All six point-based visual stages are included for ordinary and bonus villages. Added the supplied abandoned ordinary-village variants. Abandoned bonus villages use the matching modern bonus artwork instead of retaining a legacy asset. Updated every runtime copy used by normal and night maps so the appearance remains consistent across routes. Preserved the original transparent top-left status-circle mask on player and owned village artwork. Existing tile background colors therefore continue to show through the circle for ownership, tribe, alliance, NAP and enemy status. Abandoned variants remain circle-free, matching existing behavior. Simplified only the Guest View legend to Standard: Abandoned, Player Villages. The authenticated in-game legend is unchanged. Original releaseFixed unowned/barbarian villages remaining at their starting size even when growth was enabled. The scheduler worker is intentionally recycled after roughly 59 seconds, but maintenance previously required 60 uninterrupted seconds. Its timestamp was reset on every restart, so the growth task never ran. Maintenance is now due immediately after every world worker starts. Further maintenance passes honor each world's configured growth interval up to the normal 60-second cadence. A 0.5-minute interval runs approximately every 30 seconds. The fix applies independently to every active world, including World 4 (Beta 2). No database migration or setting change is required. Existing barbarian villages retain their buildings, resources and last-growth timestamps. Overdue eligible villages resume normal one-level-at-a-time growth after deployment. Player-owned villages remain excluded, and the configured point ceiling and building prerequisites remain enforced. V1.9.5Latest: V1.9.5.22Updates and hotfixesV1.9.5.22Restyled the map village hover panel to match the authenticated in-game map. The panel is fully opaque and uses the parchment body, gold title bar, bordered rows and drop shadow from the game UI. Kept Guest View data intentionally limited to public village, owner and tribe information. Added the standard Page loaded and live Server Time status bar. Added the canonical copyright footer with the V1.9.5.22 version. V1.9.5.21This release completes the read-only links shown on Guest View public profiles. [ally]TAG[/ally] resolves the tribe tag in the selected world and links to its Guest View tribe profile. [player]Name[/player] resolves the username in the selected world and links to its Guest View player profile. Both tags are supported in tribe descriptions and player personal text. Text and unknown references remain safely escaped; this renderer does not enable authenticated actions or arbitrary HTML. A tribe profile's heading, Name and Tag link back to that same public tribe profile. A player profile's displayed username links back to that same public player profile. Tribe member names continue to open their corresponding public player profiles. V1.9.5.20This release corrects Guest View public profiles and restores the previously established achievement design. Fixed the HTTP 500 that occurred when Guest View attempted to read an unavailable global_db configuration key. Guest profile data now uses the world manager's validated main-database identifier. Achievement failures are contained so a profile can no longer degrade into a partially emitted, unstyled HTML fragment. Added the shared achievement-quality stylesheet to Guest View. Sections appear in the agreed order: Achievements, Miscellaneous Achievements, Achievements on Other Worlds. The achievement aggregate is labeled exactly Total Medals. Miscellaneous Achievements displays Years of Service when the account is at least one year old. Archived victories display the world, player and tribe, for example Alpha 2 - ogky in the tribe POLAND. Other-world achievements use compact, bordered quality icons; hovering an icon displays its achievement name and quality. Tribe tags on player profiles remain clickable. Links stay within Guest View and open the read-only public tribe profile for the currently selected world. V1.9.5.19This release completes and visually aligns the read-only Guest View. Map, Rankings, Statistics and all ranking-category buttons use white text in active, inactive, visited and hover states. Player names and tribe tags in rankings link to guest-only public profiles in the selected world. Added a read-only public tribe profile with properties, member list, crest and public description. Tribe links on player and village pages remain inside Guest View. Player profiles use the configured achievement names and medal artwork. The aggregate achievement count is labeled Total Medals. Achievements on Other Worlds matches the in-game compact medal layout and supports chronological or alphabetical sorting. Reworked the layout to match the in-game map frame, two-row legend, directional controls, center form and framed minimap. Main-map dragging and minimap dragging remain live synchronized. Village selection remains read-only and exposes only Village information and View profile. V1.9.5.18This hotfix completes the PHP syntax repairs for the Guest View detail-page implementation. Retains the missing-semicolon correction from V1.9.5.17. Removed a duplicate <?php opening tag while the controller was already in PHP mode. Resolved Parse error: unexpected '<', expecting end of file on line 50. V1.9.5.17This hotfix corrects the PHP parse failure in the V1.9.5.16 Guest View player-profile renderer. Added the missing statement terminator after the player profile's primary-village assignment. Restored successful parsing before ob_start() in guest_player_page(). Retains the guest player profile, guest village information, map coordinate axes and corrected radial-menu icons from V1.9.5.16. V1.9.5.16This release completes the read-only destinations and visual controls used by the Guest View map. View Profile opens a dedicated guest route modeled on the in-game player profile. Displays public player details, ranking, defeated opponents, tribe, villages, profile crest, personal text and earned achievements. Village and coordinate links remain within Guest View. No messaging, friendship, tribe invitation or blocking controls are exposed. Village information opens a dedicated guest route modeled on the in-game village page. Displays the minimap, coordinates, points, owner and tribe. Reports, notes and authenticated village actions are excluded. Restored visible X and Y coordinate axes around the viewport. Coordinate numbers update while either the main map or minimap is dragged. Corrected radial-menu icon rendering by attaching the original sprite classes to the action buttons. V1.9.5.15This release aligns the read-only Guest View map with the existing in-game map. Uses fixed 53×38 terrain and village tiles without image-baseline gaps. Main-map dragging updates the minimap viewport continuously. Minimap dragging updates the main map continuously. Village clicks open the existing circular context-menu design. The guest menu contains only read-only Village information and View profile actions. Map, Rankings and Statistics buttons always use white text. Guest View remains isolated from authenticated village actions and private game state. No troop, resource, favorite or village-management controls are emitted by the guest controller. V1.9.5.14This release rebuilds Guest View around the in-game map interaction model and fixes Guest Rankings. Uses the same 53×38 map tiles, village artwork, terrain artwork, navigation arrows, colors and view sizes as the in-game map. Renders a three-viewport buffer so the main map follows the pointer while dragging. Supports smooth drag navigation, coordinate centering and navigation arrows. Replaces the placeholder minimap with a world-backed 267×267 minimap using the in-game grid scale and colors. Supports minimap click navigation and minimap dragging. Village hover displays a read-only information popup; clicking pins it until clicking elsewhere or pressing Escape. Player, tribe, points, coordinates and bonus-village information are available without exposing private village data. Guest map data, popup data and minimap images use dedicated read-only routes in guest.php. Guest View does not load authenticated map command, favorite, mail, market, troop or resource endpoints. No troop/resource submission controls or links are rendered. Removed brittle cross-table joins that caused HTTP 500 on active or archived worlds. Player, tribe, battle-point and medal rankings now use guarded schema-compatible reads. Tribe names are resolved independently so missing optional relationships cannot break the page. Added pagination and a safe empty-category state. V1.9.5.13This build fixes the final stale village-overview test and completes removal of the Flag Bonus panel from saved overview layouts. Removed flag from the overview layout test's required panels. Added an explicit regression assertion that Flag Bonus remains absent. Removed flag from the server-side draggable-panel registry and default layout. Existing saved layouts are sanitized when loaded, discarding the removed panel while preserving the player's remaining panel order. Updated all visible and build versions to V1.9.5.18. V1.9.5.12This build fixes the Docker build regression introduced by the Guest View query hardening in V1.9.5.11. Updated tests/guest-worlds.php to validate the current schema-compatible village query instead of the removed joined query. The test now explicitly checks the rendered map container and minimap. Gameplay behavior remains unchanged from V1.9.5.11. V1.9.5.11This patch fixes the Guest View map request and removes Flag Bonus from both village-overview layouts. Guest View map loading now uses simple, schema-compatible village queries. Player names are loaded separately, so a join cannot prevent the map from opening. Minimap buckets are calculated in PHP for compatibility with active and archived world schemas. Database query failures now write the underlying database error to the PHP/container log. Flag Bonus is no longer displayed in graphical or classic village overview. V1.9.5.10This release completes the public Guest View and aligns the public start page with the in-game layout. Guest View URLs use public world route numbers, so Beta 2 at w4 uses world=4 rather than its internal database registry ID. Archived worlds retain read-only Guest Map and Rankings access. Every Statistics action is labelled Guest View; unavailable worlds use a disabled gray Guest View button. Guest map queries no longer depend on an unnecessary tribe join and use portable minimap ownership aggregation. The public page uses the wider 1200-pixel in-game content layout with responsive viewport limits. The public status bar shows page load time and server time, while the release appears once in the matching copyright footer. V1.9.5.9This UI hotfix stops the village overview refresh loop and corrects world-selector styling and version labels. Expired or invalid Item Bonus timers render as expired without initiating a reload loop. A valid active Item Bonus still counts down and refreshes the overview once when it reaches zero. Open-world names remain white in every link state. The world-selector Close action remains white before, during, and after hover. World Settings and Select World are raised together and aligned in the footer. Player, homepage, administration, asset-cache, migration, support, and build version labels are synchronized to V1.9.5.9. V1.9.5.8This hotfix corrects the Guest View regression test that prevented the V1.9.5.7 Docker images from building. Retains the read-only Guest Map, minimap, and Rankings introduced in V1.9.5.7. Retains the player-visible, read-only World Settings page. Retains the constant-time timer formatter that prevents new-village 504 timeouts. Corrects the build assertion so it verifies the actual Guest View screen-selection expression. V1.9.5.7This release adds public read-only world browsing, player-visible world configuration, and a constant-time timer formatter. Guest View links for open worlds on the public Statistics page. Guest Map with coordinate centering, six view sizes, village artwork, hover details, and a cached minimap. Guest Rankings for players, tribes, player/tribe battle points, and medals. No guest access to gameplay actions or authenticated player endpoints. Read-only effective World Settings page in the in-game footer. Safe format_time() arithmetic in both runtime function copies, preventing non-finite or unusually large timers from exhausting PHP's execution limit. V1.9.5.6This hotfix corrects the meaning of the automatic-barbarian world setting and fixes the Docker build regression introduced by V1.9.5.5. A value of X creates X automatic barbarian villages for every newly created player village. -1 still disables automatic barbarian creation, and the setting remains editable after players join. Both runtime copies of the village-creation function use the new behavior. Legacy Smarty test modifiers use named PHP callbacks rather than Closure objects. V1.9.5.5This UI and capacity-consistency hotfix builds on V1.9.5.4. Icon-based Espionage information in Scout reports. Correct world-specific + bonus-village + item Warehouse capacity stacking. Consistent map-hover, top-bar, and Warehouse-page capacity. Non-negative Warehouse timers and redesigned capacity/resource tables. Redesigned Wall defense table. Clear, unlocked automatic-barbarian creation interval. The Docker build runs the complete existing regression suite plus checks for the new Warehouse, Wall, Scout-report, and world-setting behavior. V1.9.5.4This hotfix repairs missing Scout intelligence in attack reports. Successful scouting now saves a resource snapshot and every enabled building level with the attacker's report. Attack reports load the saved scouting fields and render them in a themed Scouting intelligence table. Removed the disabled legacy report block that had left resource and building output commented out. Added an idempotent startup migration for the new report fields across every registered world. New world database templates include the scouting fields from creation. The migration preserves existing reports and may run repeatedly without duplicating columns. Reports created before this update remain unchanged because their missing intelligence was not stored historically. V1.9.5.3This hotfix completes the requested world-setting locks, gold-coin price notifications, and victory history details. Player villages per automatic barbarian, level-30 population capacity, level-30 warehouse capacity, Academy mode, Farm system, and Archers now use the darker game-changing styling. Each setting displays “Locked after players join.” Its control becomes disabled once the world contains a player. Server-side validation independently rejects attempts to change it after players join. Any increase or reduction to wood, clay, or iron coin cost sends an automatic system message to every player registered in that world. The message identifies the world and lists every changed resource with its old and new value. Each recipient's new-mail indicator is set immediately. The Victory miscellaneous achievement retains the total victory count. It now lists each archived victory as World - Player in the tribe TRIBE. Names and tribe tags come from the immutable end-of-world snapshot, so later account or tribe changes do not rewrite history. V1.9.5.2This hotfix finishes the requested map command-window readability changes. Troop preset labels now force a high-contrast dark brown color, including browser text-fill overrides that beat the global white button rule. Available-troop counts now use the same clear brown color without a white glow. Zero/disabled counts remain readable while only their unit icon and input are dimmed. The close control no longer relies on a font glyph. Its white X is drawn from two centered CSS bars, preventing the cross-eyed appearance. Hover and focus states retain readable brown text. The red Attack and green Support controls were deliberately not restyled. V1.9.5.1This hotfix corrects the World Settings template introduced in V1.9.5. Wrapped the game-changing World Settings CSS in a Smarty {literal} block. Prevents Smarty 2 from interpreting CSS braces as template tags during the Docker build and at runtime. Retains the darker styling for Scavenging, Paladin, Flags, Inventory, and Church rows. All V1.9.5 feature toggles, Paladin limits, Farm choices, and map command-window changes remain unchanged. Original releaseThis release makes major gameplay systems selectable per world before players join. Scavenging: when disabled, Scavenging and Mass Scavenging disappear from the Rally Point and scheduler processing is skipped. Paladin: may be disabled or capped at exactly one or ten Paladins. Disabled worlds expose neither the Statue nor Paladin unit/screens. Single-Paladin worlds enforce one slot and use the compact resident-oriented interface. Flags: when disabled, the header control is hidden and rewards, assignment, and bonuses are inactive. Inventory: when disabled, the header control is hidden and item usage, staff grants, and active effects are rejected or ignored. Church: remains world-specific and joins the highlighted game-changing section. These settings are enforced server-side and cannot change once a player has joined the world. Existing worlds default to enabled with a ten-Paladin limit. Game-changing settings use darker rows and display “Locked after players join.” Farm System now uses named Classic and Modern choices. Classic is the S1 curve with 22,782 level-30 capacity; Modern is the current 24,000 curve. The map command modal uses a centered white X on brown, while troop counts and preset labels use high-contrast brown text. Attack and Support button styling is unchanged. The Docker build includes regression checks for feature defaults, server-side gates, Paladin limits, Farm curves, and command-window styling. V1.9.4Latest: V1.9.4.9Updates and hotfixesV1.9.4.9This release completes the compact command workflow opened from map village actions. Available troop counts are clickable and fill the corresponding unit field. Units unavailable in the origin village are visibly grayed out and cannot be selected. Added three presets: All Troops: fills every available unit. Fake Nuke: fills all available Scouts and one Catapult when available. Noble: fills up to 100 Axemen, 25 Light Cavalry, and one Nobleman. Attack and Support now send directly from the map modal through the existing protected command pipeline. Success closes the workflow and refreshes the map so active command markers update. Validation errors remain inside the modal. Catapult attacks default to the Village Headquarters target when sent directly. The close control now has a brown background and white ×. The direct workflow retains the normal CSRF check, ownership checks, atomic troop reservation, beginner protection, command limits, timings, and attack/support accounting. V1.9.4.8This map UI hotfix corrects the center selection circle and the action rules for owned villages. The center circle is now only a transparent selection ring over the existing map village. No cloned, enlarged, or replacement village artwork is rendered inside the ring. Barbarian, abandoned, and bonus village information is a separate small action button on the left. Send Troops and Send Resources remain available for other owned villages. Send Troops and Send Resources are hidden for the currently selected white village. The inline fallback controller follows the same rules as the primary external controller. Regression checks enforce the empty transparent ring, separate information action, and current-village send restriction. V1.9.4.7This map UI hotfix restores the missing circular center on unowned-village menus and completes the action set for owned villages. Barbarian, abandoned, and bonus villages retain the full circular center with the Village Information icon centered inside it. Owned-village menus now include Send Troops on the left and Send Resources on the right. Existing Recruitment, View Profile, Village Information, Village Overview, and Favorite actions remain available for owned villages. Regression checks cover the restored circle and both added owned-village actions. V1.9.4.6This hotfix corrects the map context-menu sprite mapping introduced during the menu redesign. Favorite: star. Recruitment: red-and-white tent; only shown for villages owned by the current player. View Profile: person. Write Message: parchment. Village Overview: plain village. Village Information: village-information icon. Send Troops and Send Resources retain their existing correct icons. The build regression check now validates every corrected sprite offset and the Recruitment ownership restriction. V1.9.4.5Widened map hover cards to 590px on desktop. Restored compact fixed 44px troop and building cells instead of stretching them across the card. Kept units in one nine-cell row and buildings in one ten-cell row on desktop. Moved context sprite artwork onto isolated pseudo-elements so the global button:hover background-position rule cannot expose adjacent frames. Replaced the neutral-village faded image combination with a clean central Village Information button. Preserved authenticated command sending, favorites, hover details, and both map dragging modes. This is an in-place UI hotfix from V1.9.4.4. No manual database migration is required. V1.9.4.4Anchored contextual menus to the clicked village artwork and made own-village actions symmetrical. Corrected the context sprite viewport so every button shows exactly one 24×24 icon frame. Removed redundant Send Troops, Send Resources, Village Information, profile, and message links from hover cards. Rebuilt unit and building details as five-column grids for a cleaner, taller hover card. Removed the oversized bonus-village rowspan that compressed details into a narrow column. Fixed the compact command window rejecting valid villages because its AJAX endpoint did not reconstruct the logged-in world session. Applied the same authenticated bootstrap to favorites and hover details. Preserved main-map and minimap dragging from V1.9.4.3. This is an in-place hotfix from V1.9.4.3. No manual database migration is required. V1.9.4.3Fixed main-map dragging not starting or completing. Fixed village hover cards failing to open. Fixed village clicks failing to open contextual icon menus. Moved the interaction controller into a cache-versioned external JavaScript file to remove the fragile all-or-nothing inline controller. Added ordinary mouse-event handling as a reliable fallback while retaining the V1.9.4.2 map design and server endpoints. Preserved AJAX recentering, minimap navigation, favorites, command markers, and the compact Send Troops window. Added Docker build assertions for the external controller, drag lifecycle, hover handler, click menu, and AJAX surface replacement. This is an in-place hotfix for V1.9.4.2. No manual database migration is required. V1.9.4.2Made both coordinate rails transparent while retaining readable coordinate labels. Added village-type-aware contextual icon menus without removing hover behavior. Added the requested own-village, player-village, and abandoned/bonus-village actions. Added persistent world-local village favorites. Added a compact Send Troops window using the existing attack/support confirmation pipeline. Added active attack and support artwork to affected map villages. Made command artwork expire in place at command completion. Expanded hover cards with loyalty, flags, resources, population, merchants, travel times, buildings, last attack, and relevant active commands where applicable. Kept Morale out of the other-player hover card. This is an in-place upgrade from V1.9.4.1. Existing worlds create map_favorites automatically; new worlds receive it from the world schema. V1.9.4.1Rebuilt the village interface as the requested compact two-row bar. Added native building artwork to Headquarters, Recruit, Academy, Smithy, Rally point, and Market shortcuts. Matched the reference's segmented borders, beige gradients, typography, spacing, and compact height. Kept previous/next village controls, village coordinates, resources, storage, population, Flags, and Inventory. Deliberately omitted Offer because that feature does not exist in TribalWarsClone. Kept resource values as non-clickable, non-bold text with live capacity colours; only their icons are links. This is an in-place upgrade from V1.9.4. No manual database migration is required. Original releaseRedesigned the lower village header around switching, village identity, resources, Flags, and Inventory. Moved Map into the primary menu between Overview and Reports. Replaced Permission with a clear Loyalty meter. Added keyboard-accessible hover descriptions to active Item Bonuses. Good Connections now grants +25% Warehouse capacity and +25% merchant capacity. Applied merchant capacity consistently to Market screens, overviews, and Account Manager deliveries. Resource amounts are black normally, brown from 90% capacity, and red at full capacity, without bold text. This is an in-place upgrade from V1.9.3.2; no manual database migration is required. V1.9.3Latest: V1.9.3.2Updates and hotfixesV1.9.3.2Added the Church combat helper to the standalone event-worker bootstrap, fixing Call to undefined function tw_church_covers() when resolving attacks on Church-enabled worlds. Added Inventory initialization to the worker so active combat, haul and loyalty item effects are applied during scheduled attack resolution. The per-world event loop now catches PHP Throwable failures as well as ordinary exceptions, preventing one bad tick from terminating that world's worker process. Added build-time dependency checks for Church and Inventory combat resolution. The V1.9.3 indexed priority queue and adaptive 500-event batching remain unchanged. No manual SQL migration is required. V1.9.3.1Updated the Account Manager regression test to require the V1.9.3 scheduler limit of 500 instead of the previous limit of 250. Preserved the V1.9.3 priority scheduler, adaptive command batching and automatic event indexes unchanged. There are no additional database or gameplay changes from V1.9.3. No manual SQL migration is required. Original releaseDue commands are now fetched through a composite (event_time, id) index in ordered batches of 500. A busy world keeps draining further batches during the same scheduler tick instead of waiting for the next pass. Attacks, support, returns, recruitment, construction, research, merchants and Paladin deployment take priority over background work. Full-world lifecycle, village-growth, Paladin-item, premium and ranking maintenance no longer runs inside every one-second command pass. Attack resolution no longer performs four full global ranking rebuilds for every processed movement. Account Manager and scavenging idle capacity is raised from 250 to 500, but these processors yield whenever the command queue is backlogged. The scheduler keeps its database connection for the worker lifetime instead of reconnecting every second. V1.9.2Latest: V1.9.2.3Updates and hotfixesV1.9.2.3Removed the building templates' runtime dependency on the $cl_builds object when selecting level-aware artwork. Added a standalone Smarty building_graphic modifier shared by Headquarters, Academy and the other individual building screens. Fixed the Docker build failure in tests/coins.php: Call to a member function getHqGraphic() on null. Added direct threshold checks for Headquarters and other multi-stage building artwork. Added an isolated Academy render assertion to prevent this regression from returning. There are no database or gameplay changes from V1.9.2.2. No manual SQL migration is required. V1.9.2.2Restyled Miscellaneous Achievements and Achievements on Other Worlds to use the same gold table design as Achievements and Achievements Missing. Replaced blurry 18-pixel Headquarters-list icons with compact, proportional artwork from graphic/big_buildings. Building artwork now changes automatically at the established level thresholds. Village Headquarters uses main1.png for levels 1-4, main2.png for levels 5-14 and main3.png for levels 15-30. Applied equivalent existing artwork thresholds to the other Headquarters building rows, construction queue and unavailable-building requirements. Updated individual building screens so their header artwork also reflects the building's current level instead of always displaying the level-1 image. There are no database changes. No manual SQL migration is required. V1.9.2.1Corrected the public-profile build regression test so dynamic achievement names are checked in profile_achievements.php, where they are defined. Kept template assertions focused on the public-profile sections and rendering hooks that the template actually contains. Updated release and cache-busting version markers to V1.9.2.1. There are no gameplay or database changes from V1.9.2. No manual SQL migration is required. Original releaseItem Bonus panel below Flag Bonus on both village overview modes. Permanent labels and live countdowns for active Inventory effects; the overview refreshes when a timed effect expires. Miscellaneous global profile achievements for account age and world victories. Compact, quality-bordered achievements from every other world on public profiles, including hover names and sorting. Compact rounded Inventory chest shortcut matching the Flags shortcut. Village name and coordinates align vertically with the Map header. Village overview production figures now include active Inventory production effects. No manual SQL migration is required. V1.9.1Latest: V1.9.1.1Updates and hotfixesV1.9.1.1Registered the format_time helper in the standalone Inventory Smarty regression fixture. The Inventory template can now compile during the Docker image build instead of failing at tests/inventory.php. This is a test-fixture-only hotfix. Inventory gameplay, catalogue data, interface behavior and database schema remain unchanged from V1.9.1. Original releaseChest shortcut beside Flags with original SVG artwork. Responsive Inventory screen with category filtering, search, count badges, details, use confirmation and active-effect status. World-local inventory, effect and append-only grant/use log tables. Recruitment, percentage resource package, unit and village item catalogue. Timed, permanent and instant item handling, including safe one-village relocation. Inventory modifiers integrated with resource production, recruitment and core combat calculations. Secure World Moderation grant form with quantity validation and audit logging. Docker-build inventory regression and Smarty compilation coverage. No manual SQL migration is required. Back up the live database before upgrading. V1.9.0Latest: V1.9.0.7Updates and hotfixesV1.9.0.7Owned-flag quantities now appear in high-contrast green rounded badges with white numbers. The styling follows the village overview's building-level labels and remains visible over every flag colour. Newly earned flags add a red +N indicator immediately to the right of the default header flag icon. Only unseen rewards are counted. Opening the Flags screen marks them as seen and removes the indicator. The displayed indicator is capped at +9, even when more than nine unseen flags are waiting. Existing flag inventories are baselined during upgrade and do not create false notifications. Seen state is stored independently inside each world's database. Flag tests now cover new reward counting, duplicate-reward safety, reset-on-view behavior, the +9 cap, header markup, and both badge styles. V1.9.0.6The Academy's Educate action is now displayed as the standard brown game button. The existing nobleman education URL, village identifier, action, and security token remain unchanged. The Academy column heading remains Educate, and the availability heading remains Number of noblemen that can still be educated. The recruitment build test now requires the Academy education action to retain its button class as well as the corrected wording. V1.9.0.5Queue Cancel actions now use the same brown button treatment as the Recruit action. The change applies to Barracks, Stable, Workshop, the combined Recruit screen, and Academy queues. The existing cancellation destinations, queue identifiers, village identifiers, and security tokens are unchanged. The Academy action column and nobleman action are now labelled Educate. The availability heading now reads Number of noblemen that can still be educated. Equivalent availability wording for alternate Academy configurations now consistently uses education terminology. The Disband recruitment tab is now labelled Decommissioning on the combined Recruit screen and the Barracks, Stable, and Workshop screens. The internal mode=disband route remains unchanged for upgrade compatibility. The recruitment and disband build tests now check the shared Barracks/Stable/Workshop template, combined Recruit screen, styled Cancel controls, Academy education wording, and Decommissioning tab labels. V1.9.0.4The top-right Flags shortcut now always displays the default flag icon. Its purpose is navigation and it no longer changes appearance when the current village has a flag assigned. The village overview now separates its two bonus systems: Paladin weapon bonuses active in this village is renamed to Paladin Bonus. A new Flag Bonus panel displays the assigned flag icon, type, level and exact village bonus. Villages without an assigned flag display the default icon and No flag selected for village. The flag icon is always clickable and opens the Flags screen for the current village. The new Flag Bonus panel appears in both graphical and classic overview modes. In graphical mode it participates in the existing draggable, per-player and per-world panel layout. The overview and Flags build checks now verify the default top-right icon, both Flag Bonus states, the clickable Flags destination, the renamed Paladin heading, and the new draggable panel identifier. V1.9.0.3V1.9.0.3 fixes the remaining reason flag artwork did not appear. The existing Apache graphic-directory rules allowed GIF, JPEG and PNG files but denied SVG files, so every packaged flag image returned a forbidden response. Both served graphic trees now explicitly permit .svg and return the image/svg+xml MIME type. This enables the complete 72-image flag collection and the empty current-village flag image in the header, inventory, current-village panel, village overview and recent rewards. The Village flag overview now displays 25 villages by default. Players can select 25, 50 or 100 villages per page and navigate with Previous and Next controls. Invalid sizes fall back to 25, and invalid or outdated page numbers are clamped to the available range. The full village list remains available in the flag-assignment selector regardless of the overview page. The Flags build test now verifies Apache SVG access and MIME configuration, all pagination sizes and boundary handling, and rendering of the page-size and navigation controls. V1.9.0.2V1.9.0.2 fixes the broken images across the Flags page and the header flag control. V1.9.0 and V1.9.0.1 used the root-relative /global_cdn/graphic/flags/... path. The deployed game is hosted beneath /tribalwars, where its configured CDN path resolves to /tribalwars/global_cdn. All flag artwork now uses {$config.cdn} consistently with the rest of the game. The fix covers the header control, current-village image, complete inventory matrix, village overview and recent reward history. It works independently of the selected world directory. The Flags build test now supplies the configured CDN path, verifies the rendered inventory URL and rejects the broken root-relative form. It also statically verifies the header icon uses the configured path. V1.9.0.1The Flags build test now renders an assigned and locked flag, and confirms that its remaining lock duration appears successfully. This directly covers the template path that failed during the V1.9.0 image build. All V1.9.0 flag rewards, assignments, world isolation and gameplay bonuses remain unchanged. Original releaseFlags are accessible immediately to the right of the resource and farm indicators. The screen displays an eight-type, nine-level inventory grid, the current village's flag, a village assignment overview and the latest 20 rewards. Flag artwork is supplied as local SVG assets. Each newly attained achievement stage and each completed Nobleman produces one random flag. Types have equal 1-in-8 odds and levels have equal 1-in-9 odds, independently. Existing completed achievements and previously produced Noblemen are not backfilled. An achievement stage cannot reward the same player twice if their rank drops and recovers. Nobleman batch completions award individually, with retry keys preventing duplicate rewards. Flags are scoped to the player and world. One flag can benefit only one village at a time, and each village can use only one flag. Assignments lock for 24 hours. Afterward, remove a flag to return it to the available inventory and assign it elsewhere. Replacing a flag returns the previous one to inventory. Losing a village returns its flag to the original player's inventory. No player trading, cross-world transfers, flag combining or world enable/disable setting is included. Values are percentages for levels 1 through 9, except luck, which uses percentage points. | Type | Values | Effect | | --- | --- | --- | | Resource production | 4, 6, 8, 10, 12, 14, 16, 17, 18 | Increases all three resources; settles accrued resources before changing flags. | | Recruitment speed | 6, 8, 10, 12, 14, 16, 18, 19, 20 | New recruitment times are divided by 1 + bonus/100. Existing queues retain their times. | | Attack strength | 2, 3, 4, 5, 6, 7, 8, 9, 10 | Improves attacks from the assigned village. | | Defense strength | 2, 3, 4, 5, 6, 7, 8, 9, 10 | Improves troops defending the assigned village, including support. | | Offensive luck | 6, 8, 10, 12, 14, 16, 18, 19, 20 | Moves each attack's luck roll toward zero by this many points. | | Population | 2, 3, 4, 5, 6, 7, 8, 9, 10 | Increases farm capacity, including bonus villages. | | Coin costs | 10, 12, 14, 16, 18, 20, 22, 23, 24 | Discounts gold coin resource costs, rounded up. | | Haul capacity | 2, 3, 4, 5, 6, 7, 8, 9, 10 | Increases surviving attackers' carrying capacity. | Combat and haul bonuses use the village flag at battle resolution. Population flags cannot be removed or downgraded if the village would exceed its resulting farm capacity. The Troop Manager retains its existing 24,000 population target cap. Reference: https://help.tribalwars.net/wiki/Flags . Reward sources, random levels and world isolation follow the custom rules for this clone. The application creates tw_flags automatically in each world database. No manual SQL is required. A unique player/source key protects reward retries; a unique assigned-village key prevents two active flags in a village. Assignment actions use POST, session-token verification, player ownership checks and the existing world action lock. Sitters cannot change flags. Archived-world action restrictions remain in place. The achievement refresh also now handles unchanged stages without emitting an invalid UPDATE statement. V1.8.0Original releaseWhen a world reaches its configured victory condition, V1.8.0 records one durable victory for every winning player: For a tribe victory, every player who belonged to the winning tribe in the final world snapshot receives one victory. For a player victory, each declared winning player receives one victory. Tied winners continue to be supported. Each archived-world/player pair is unique, preventing duplicate awards if finalization is retried. The homepage Victories total combines any existing legacy users.wins value with archived-world awards. On startup, existing final snapshots are safely backfilled. This makes the already-archived Alpha 2 victory appear for all POLAND members without reopening or re-finalizing the world. Older tribe snapshots are matched using the archived tribe name; new snapshots also retain the tribe ID. Archived worlds now use the same red artwork family as Logout while retaining the World archived caption. Close keeps its brown Select World-style appearance and now forces white text in normal and hover states. Asset cache identifiers are updated to V1.8.0. The application creates tw_world_victory_awards automatically in the main database. No manual SQL is required. V1.7.9Latest: V1.7.9.9Updates and hotfixesV1.7.9.9This release applies the final visual adjustments requested for the compact world selector. Close now uses the same brown gradient, white text, border, hover treatment and typography as Select World. The current world no longer uses a darker green treatment. Every available world uses the same classic green button artwork and white text. Closed homepage worlds retain their existing disabled grey styling. The raised footer trigger and increased bottom-edge clearance from V1.7.9.8 remain unchanged. Keyboard-focus states remain visible. CSS and JavaScript cache identifiers are updated to V1.7.9.9 so browsers receive the corrected design immediately. V1.7.9.8The V1.7.9.7 positioning improvements remain, while the world choices return to the preferred classic green style. Available/open world buttons use the original green artwork with white text. The currently selected world uses a darker green gradient and white text, making its state immediately recognizable. Closed homepage worlds retain their existing disabled/grey styling. The brown Select World footer trigger remains raised five pixels and fully visible. The popup retains its increased distance from the bottom browser edge. Close returns to a lightweight brown text action instead of appearing as another world button. Hover and keyboard-focus states remain visible. CSS and JavaScript cache identifiers are updated to V1.7.9.8 so the corrected design replaces V1.7.9.7 without requiring manual cache clearing. V1.7.9.7The in-game world switcher has been moved away from the bottom browser edge so its label and controls remain fully visible. The fixed-footer Select World button sits five pixels higher. The open popup receives six additional pixels of clearance above the trigger. The CSS fallback position is raised by eight pixels. World choices use a brown gradient with bold white text. The current-world indicator uses the same coherent brown style. The Close control is now a proper brown button rather than a low-contrast text control. Hover states become lighter brown while retaining white text. Keyboard focus uses a visible white and brown outline. The homepage selector shares the updated brown world-button style. Cache-busting versions ensure the changes replace the earlier V1.7.9.6 assets immediately. V1.7.9.6A dedicated Staff Logs page now provides one chronological view of: World bans, lifted bans and private moderation notes. Village creation, maximization, resource filling, bonus changes, barbarian assignment and village destruction actions. Global bans, lifted bans and username changes. Staff sign-ins, account creation, role/status changes and password resets. Audited private login-as-player usage. The page follows the existing technical Admin Logs styling and offers filters for source, action category, world, staff member, player/account/detail text, and 25/50/100 rows per page. Results use database-side filtering and pagination. World/player review pages show the latest 10 actions for the selected player. Global account review pages show the latest 10 account actions. World-wide and complete account histories are accessed from Staff Logs. Staff Accounts links to the consolidated staff-account/access history. The feature reads the existing append-only moderation, global moderation and staff audit ledgers. Deployment does not delete, move or rewrite historical rows. Staff Logs are restricted to administrators and owners with log access. Passwords, authentication cookies, session tokens and one-use bearer tokens are never displayed or recorded. V1.7.9.5This release compacts public world route identifiers without renumbering live database records. The startup migration preserves the current world order and maps the six worlds as follows: | World | Public route | | --- | --- | | Alpha 1 | w1 | | Alpha 2 | w2 | | Beta 1 | w3 | | Beta 2 | w4 | | World 1 | w5 | | World 2 | w6 | Stale route symlinks are removed safely and the required routes are rebuilt against the shared world application. New worlds use the lowest available public wN route independently from the database auto-increment value. With the current six-world registry, the next route is w7, followed by w8, w9, and so on. Database IDs and names remain unchanged by design. This prevents route cleanup from invalidating player memberships, sessions, world settings, moderation records, lifecycle history or logs. V1.7.9.4This hotfix completes the private player test-login workflow introduced in V1.7.9.3. Generates the complete absolute enter_user.php?token=… URL on the server using the validated request host and admin path. Displays the full URL in a full-width, read-only field. Copies through the secure Clipboard API when available and handles its asynchronous success or rejection. Falls back to document.execCommand('copy') for older or restricted browsers. Shows Copied to clipboard only after a successful copy. If browser policy blocks both methods, keeps the full URL selected and instructs the administrator to press Ctrl+C or Cmd+C. Adds build-time regression checks for absolute URL generation, clipboard fallback and user feedback. The bearer link remains audited, single-use, and valid for two minutes. It is intended to be pasted into an Incognito/InPrivate window. V1.7.9.3Assigning or reviewing an administratively expanded player now reconciles gold-coin capacity in gold-coin Academy worlds. Reconciliation uses the same consumed capacity shown by the Academy: conquered villages, existing Noblemen and Noblemen in production. Coins are raised only to the minimum cumulative triangular threshold needed to prevent a negative Nobleman balance; existing higher balances are never reduced. Administrative coin grants do not consume village resources and do not increase the player's coin-minting medal. The example account with 11 consumed slots is repaired from 8 to 66 coins. The displayed number of Noblemen that can still be educated is clamped at zero as a defensive fallback. Removed the trailing colon from “Noblemen that can still be educated”. V1.7.9.2 Church, First Church and World Moderation repairs. V1.6.4 cross-world session fixes. V1.6.0 security hardening and SQL-injection protections. V1.7.9.2Restores the complete V1.7.9.1 Church and First Church implementation and artwork. The founding village receives a level-one First Church with a 6-field radius. Ordinary Churches remain level 1-3 and require Headquarters level 5 and Farm level 5. Player review no longer fails when optional registration or IP metadata is unavailable. Nearby barbarian discovery uses SQL compatible with strict MariaDB/MySQL modes. Assigning a barbarian village validates ownership and distance immediately before the update. Assignment reconciles only the affected player and noble origin instead of running a fragile world-wide recount. Assignment records the correct moderation audit event. V1.6.4 cross-world session fixes. V1.6.0 security hardening and SQL-injection protections. Owner-only world-scoped test login and village-assignment authorization. V1.7.9.1Added a distinct First Church to every player's oldest village on Church-enabled worlds. The First Church is permanently level 1, cannot be constructed or demolished, and provides a 6-field faith radius. Existing V1.7.9 seeded Churches are migrated safely to First Churches; ordinary Churches in other villages are retained. Ordinary Churches remain level 1-3 with 4, 6 and 8-field radii and now require Headquarters level 5 and Farm level 5. Added the missing First Church schema to fresh-world templates and live migrations. Fixed both First Church and ordinary Church artwork resolution in graphical village overviews. Redesigned the Church information screen with the correct building name, image, level, radius, faith effects and requirements. Fixed HTTP 500 when reviewing a player by isolating optional global registration/IP data and replacing the strict-SQL-incompatible nearby-barbarian aggregation with a portable lookup. Preserved the top-10 and 25-field limits and the submission-time ownership/distance checks. Fixed nearby barbarian assignment reporting a database failure after ownership changed by removing the unrelated world-wide recount from that action. Added safe labels for new moderation audit actions. Polished detailed player review panels and action buttons. V1.7.9 Church combat faith calculation and world configuration. Owner-only world-scoped test login and barbarian assignment security. V1.6.4 cross-world session fixes and V1.6.0 security hardening. Original releaseCompleted the previously dormant per-world Church feature. Church-enabled worlds now receive the required village schema migration automatically, including existing managed worlds such as a world routed as w7. Existing players without a Church receive level 1 in their oldest village, while new players receive level 1 in their first village. Registered the Church as a buildable three-level building with the bundled artwork and its own information screen. Added faith radii of 4, 6 and 8 fields for Church levels 1, 2 and 3. Connected Church coverage to the existing combat faith multiplier: troops outside their owner's coverage fight at 50% strength. Church-disabled worlds retain the disabled Church artwork and do not expose the building. Added an owner-only Log in as this user (selected world only) control to World Moderation. Reuses the player's most recent valid session in that world, or creates one without invalidating the player's other sessions. Uses an audited, single-use handoff that expires after two minutes and a world-path-scoped browser cookie. Added a list of the 10 closest unowned villages within 25 fields of a selected player's villages. Staff with village-management permission can assign one of those villages to the selected player. Assignment rechecks distance and ownership at submission time, recounts player/tribe points and ranks, refreshes map state, and records the action. V1.7.8 village artwork positioning. Draggable panels and per-player/per-world layout persistence. Existing V1.6 security hardening and later gameplay changes. V1.7.8Original releaseFixed the farm-field artwork fragment appearing between the village overview and the sidebar panels. Constrained the graphical village canvas to its native 600×418 dimensions so all absolutely positioned village artwork remains anchored to the intended scene. The farm field now appears in the brown field area at the top-right of the village artwork. Preserved draggable panels, per-player/per-world layout persistence, and all V1.7.7 security and gameplay changes. Events remain excluded from the draggable dashboard. V1.7.6Original releaseRemoved the jQuery UI initialization path that still failed to activate on the deployed overview. Dashboard title rows now receive direct mouse and touch handlers using the already-loaded core jQuery runtime. Dragging begins after a four-pixel movement threshold, while title text selection is suppressed immediately. A cloned panel follows the pointer and a full-height placeholder marks the destination. Drop detection supports reordering inside either column and moving between columns. Layout persistence remains per player and per world and is written only after a completed drag. Links and controls inside title rows remain clickable and do not start dragging. Events remain excluded. Existing layout validation, CSRF protection, gameplay changes, and security hardening remain intact. V1.7.5Original releaseReplaced unreliable browser-native dragging on legacy table/form panels with the bundled jQuery UI 1.8.18 mouse-drag implementation. Panel headers are now explicit drag handles. A visible cloned panel and correctly sized placeholder show where a panel will be dropped. Panels can be reordered within either column and moved between the main column and sidebar. Layout saving occurs only after the drop completes and continues to be scoped to the player and current world. Removed the previous native draggable path so two drag systems cannot conflict. Events remain excluded. Preserved all V1.7.4 layout validation, CSRF protection, runtime schema creation, and earlier gameplay behavior. V1.7.4Original releaseReworked the graphical village overview into a wide main column and compact sidebar matching the requested reference layout. Village, Incoming, Commands, Production, Building Queue, Units, Paladin bonuses, and Loyalty are draggable panels. Panels can be reordered within a column or moved between columns. The layout is saved for the logged-in player in the current world. Each world therefore retains an independent arrangement. Events are intentionally excluded from this release. Layout writes use the existing session CSRF key, accept only known panel identifiers, and restore omitted panels safely. Existing V1.7.3 building deltas, queue controls, button contrast, Headquarters, Smithy, Account Manager, Speed Up, security, and world-session behavior remain intact. V1.7.3Original releaseChanged submit, button, and action-button labels to high-contrast white throughout the served game and public styles, including red and green actions. Added small aggregate +N and -N level indicators beside buildings with queued upgrades or demolitions on both graphical and non-graphical village overviews. Added a Building Queue panel between Production and Units on both overview variants. Each overview queue row shows the building artwork, name, individual level change, projected target level, live completion countdown, and cancellation control. Added a Docker regression gate covering queue ordering, target-level projection, cancellation links, overview placement, delta badges, and button contrast. Headquarters construction and Demolition redesigns. Five normal-cost construction orders, with the original extra-resource penalty beginning with order six. Account Manager five-order construction queues. Building Speed Up only during the final ten minutes, without shortening construction time by half. Smithy research presentation, individual Research buttons, and the maximum three-order research queue. V1.6.4 cross-world session repair and V1.6.0 security hardening. V1.7.2Original releaseReplaced the Smithy's inverted two-row research assignment box with a full-width queue styled like the Village Headquarters. The queue now shows the technology artwork, target level, duration, completion time, and a high-contrast Cancel button for every order. Added support for up to three sequential research orders per village; a fourth order is rejected server-side. Individual Research buttons remain available while one or two queue slots are occupied. Queued research uses projected technology levels so each order receives the correct resource cost and duration. The same technology cannot be queued twice simultaneously, preventing level/cost ambiguity when an earlier order is cancelled. Cancelling any queued order refunds its exact cost, removes only that order, and pulls subsequent completion times forward. Completing or cancelling the active order updates smith_tec to the next queued technology for village overview timers. Added a Docker regression gate covering the three-order limit, scheduling, cancellation, queue presentation, and next-order state. Headquarters construction and Demolition redesigns. Five normal-cost construction orders and the original penalty beginning with order six. Account Manager five-order construction queues. Building Speed Up only during the final ten minutes. V1.6.4 cross-world session repair and V1.6.0 security hardening. V1.7.1Original releaseRenamed the Headquarters Demolish mode to Demolition. Redesigned the complete Demolition table to match the V1.7.0 Headquarters construction layout. Added classic detailed building artwork, demolition time, villagers needed, minimum-level messaging, and white-text Downgrade buttons. Converted individual Smithy research links into matching brown buttons with high-contrast white labels. Renamed the initial Smithy Search action to Research for consistent wording. Removed hotfix suffixes from all visible V1.7.1 footer labels. Expanded the Docker regression gate to compile and validate the construction, Demolition, and Smithy templates. Five normal-cost construction orders and the original penalty beginning with order six. Account Manager five-order construction queues. Speed Up only during the final ten minutes, with instant completion rather than halving. Classic detailed Headquarters artwork and high-contrast action labels. V1.6.4 cross-world session repair and V1.6.0 security hardening. V1.7.0Updates and hotfixesV1.7.0 Hotfix 4Made Construct, Cancel, and Speed Up labels white with sufficient selector specificity for normal, visited, hover, and active link states. Added a subtle dark text shadow so the white action labels remain legible on brown, red, and green buttons. Restored the classic detailed building artwork in the construction queue, available-buildings list, unavailable-buildings list, and prerequisite list. Added regression checks for both the white action labels and classic artwork paths. Five normal-cost construction orders and the original penalty beginning with order six. Account Manager five-order construction queues. Speed Up only during the final ten minutes, with instant completion rather than halving. Smarty compilation and generated-PHP syntax validation for the Headquarters template. V1.6.4 cross-world session repair and V1.6.0 security hardening. V1.7.0 Hotfix 3Restored the Village Headquarters body, which was blank because Smarty attempted to interpret the redesign's CSS braces as template tags. Wrapped the complete Headquarters CSS block in Smarty {literal} markers. Wrapped the standalone Headquarters JavaScript initialization in its own {literal} block. Added Docker regression assertions requiring the literal protection and its closing marker. The Docker build now compiles game_main.tpl with the project's real Smarty compiler and parses the generated PHP, preventing another syntactically broken Headquarters template from being packaged. Five normal-cost construction orders. The original queue penalty beginning with order six. Account Manager five-order construction queues. Final-ten-minute Speed Up behavior. V1.6.4 cross-world session repair and V1.6.0 security hardening. V1.7.0 Hotfix 2Corrected the Headquarters regression test so it resolves files from both the source archive layout and the Docker /var/www/html layout. The test no longer incorrectly searches for /var/www/html/app/tribalwars/... after Docker has copied the contents of app/ directly into /var/www/html/. Construction orders 1 through 5 now use normal resource costs. Adding the sixth order starts the original 25% extra-resource penalty. Later orders retain the existing/default increasing penalty calculation. Restored a visible penalty warning on the Headquarters. Restored the optional confirmation prompt controlled by the player's queue-confirmation setting. Insufficient resources for a penalized order now explicitly identify the queue penalty. Headquarters tests cover both supported filesystem layouts. Tests require the five-slot penalty threshold, visible warning, and confirmation control. V1.7.0-hotfix Account Manager five-order enforcement remains unchanged. Final-ten-minute Speed Up behavior. V1.6.4 cross-world session repair. V1.6.0 security hardening. V1.7.0 Hotfix 1Restored the Headquarters queue heading from Actions to Cancellation, preserving the established Account Manager/Headquarters template contract. Restored the second Duration heading for the available-buildings table. Updated the regression suite to protect both required Headquarters headings explicitly. The Account Manager Docker build gate now passes the redesigned Headquarters template instead of aborting both the app and scheduler builds. The Account Manager Construction Manager now maintains up to five queued building orders per managed village instead of three. All three enforcement points use the same five-order limit: candidate selection, scheduler loop, and atomic database guard. Updated the Construction Manager explanation and regression assertions from three orders to five. V1.7.0 Headquarters redesign and final-ten-minute Speed Up behavior. V1.6.4 cross-world session repair. V1.6.0 security hardening. Original releaseV1.7.0 introduces a complete Headquarters redesign based on the classic compact construction view. Replaced the old progress-bar building list with a compact table showing each building's artwork, current level, wood, clay, iron, population, duration, and next-level construction button. Added a separate Not yet available section with the prerequisite buildings and levels required to unlock each entry. Restyled the active construction queue with clear construction, duration, completion, cancellation, and Speed Up controls. Kept demolition mode, village renaming, queue cancellation, resource availability timers, maximum-level handling, and all prerequisite/storage/farm checks. No premium or -20% construction-time reduction is shown or applied. Speed Up appears only for the active building during its final 10 minutes. Using it completes that building immediately; it never halves or partially shortens a timer. Requests are checked again on the server, so a modified URL cannot speed up a building with more than 10 minutes remaining. Any later queue entries move forward only by the exact remaining time removed from the completed building. V1.6.0 application security hardening. V1.6.1-V1.6.2 minimap corrections. V1.6.4 cross-world session repair. V1.6.4Original releaseV1.6.4 is the definitive cross-world session repair based directly on V1.6.3. A valid global login now authorizes entry to any world in which the player is a member without writing to that world's legacy sessions table. World 2, World 3, and older dynamically created worlds no longer depend on matching World 1's session-table schema. Duplicate session cookies left by older releases are detected from the complete Cookie header instead of trusting only the single value exposed by PHP. The valid 64-character cryptographic token is selected and the canonical root cookie is refreshed. A legacy cookie scoped to the currently selected world is expired so it cannot continue shadowing the root cookie. Direct-world and vacation-replacement sessions remain available as a compatibility fallback. The obsolete V1.6.3 Docker assertion was replaced with regression gates for schema-independent authentication and duplicate-cookie recovery. V1.6.0 application security hardening. V1.6.1 minimap endpoint repair. V1.6.2 right-minimap geometry across all supported map sizes. V1.6.3Original releaseV1.6.3 is a session-switching maintenance release based directly on V1.6.2. Restored switching between every registered world without being redirected to the session-timeout page. Made the valid global login session authoritative during cross-world navigation. Replaces stale or duplicate world-local session rows with one exact copy before entering the selected world. Verifies the complete session ID and action key after the world-local copy is written and before redirecting. Transparently repairs a missing or outdated world-local session from the global session on subsequent requests. Preserved direct world login and vacation-replacement session compatibility when no global session exists. Added a mandatory Docker-build regression test for the complete cross-world session contract. V1.6.0 application security hardening, including 64-character cryptographic session IDs. V1.6.1 minimap endpoint repair. V1.6.2 right-minimap geometry and all supported map sizes. V1.6.2Original releaseV1.6.2 is a map-layout maintenance release based directly on V1.6.1. Corrected the right navigation minimap frame overflowing across its right-hand navigation control. Replaced equal-width fixed table columns with explicit 11px, 267px, and 11px columns. Set the frame to its exact 291px outer width: a 267×267 minimap, two 11px navigation columns, and two 1px borders. Removed inherited generic table-cell padding inside the minimap frame so it cannot silently enlarge the centre column. Kept the right minimap at its native 267×267 resolution for every main-map view size from 7×7 through 17×17. Extended the minimap regression test to require the exact frame and column geometry. V1.6.0 application security hardening. V1.6.1 minimap endpoint dependency fix. Main-map drag behavior, coordinate overlays, map-size choices, pinned village popups, and two-way minimap navigation. V1.6.1Original releaseV1.6.1 is a map rendering maintenance release based directly on V1.6.0. Restored the right-side navigation minimap on the main map screen. Restored the village-information minimap used on village detail pages. Corrected the shared minimap.php endpoint so it loads the V1.6 security validation helper before using it. Fixed the right minimap panel at its intended 267×267 image size instead of sizing its container as 77% of the remaining page column. Prevented 7×7, 9×9, and 11×11 views from stretching the right minimap as the main-map viewport becomes narrower. Preserved the main map's real 53×38-pixel tile scale at every supported view size. Added an automated minimap regression test to the Docker build. Includes all V1.6.0 security changes. Requires no manual database changes. Existing worlds, accounts, sessions, and .env configuration remain compatible. V1.6.0Original releaseV1.6.0 is a security-focused release based on V1.5.2-hotfix. It retains the fully opaque green village-overview badges and white building-level text introduced by that release. Removed confirmed SQL injection paths in bonus-village lookup, global/world preferences, quest rewards, and tribe homepage/IRC settings. Added strict integer validation and SQL escaping helpers for security-sensitive legacy queries. Added village ownership authorization, CSRF validation, and one-time atomic claiming to quest rewards. Prevented invalid or expired troop movements from entering the cancellation path. Replaced predictable player session IDs and four-character action keys with 256-bit values generated by random_bytes(). Removed session identifiers from world-login URLs and rejected legacy-sized session tokens. Added HttpOnly, SameSite=Lax, and HTTPS-aware Secure player cookies. Added modern password_hash() storage with transparent verification and migration of both historical password formats. Added database-backed login throttling: ten failed attempts within fifteen minutes per account or address. Removed username enumeration from global login responses. Restricted BBCode URLs and images to HTTP(S), added safe link attributes, and suppressed referrer data on remote images. Re-encodes profile and tribe images as PNG after validating real image content, dimensions, size, and upload origin. Replaced browser-visible SQL diagnostics with generic errors and server-side logging. Added CSRF protection to friend mutations and quest completion. Added browser hardening headers and stricter PHP upload/session settings. Bound Adminer to loopback by default. Set TRIBALWARS_ADMINER_BIND only when deliberate remote exposure is protected by a firewall or VPN. Removed hardcoded database and administration passwords from application configuration and the legacy initialization script. Existing accounts retain their passwords. Their legacy hashes are upgraded automatically after successful authentication. Existing sessions are intentionally invalidated once because V1.6.0 accepts only the new cryptographically secure token format. Existing databases are migrated automatically to support modern password hashes and login-attempt tracking. The container remains on PHP 7.4 because the bundled 2014-era application and Smarty 2 runtime rely on behavior removed from newer PHP versions. V1.6.0 mitigates the identified application-level vulnerabilities, but PHP 7.4 itself is end-of-life. Moving to a supported PHP release requires a separately tested modernization of constructors, Smarty, and compatibility functions; changing only the base image would make the game unusable. V1.5.2Original releaseBuilding-level badges now use a fully opaque green background. Building-level numbers and badge timer text are forced to solid white for reliable contrast. Legacy browser opacity filters are explicitly disabled so an earlier translucent rule cannot leak into the final badge style. The correction is synchronized across all packaged copies of the game stylesheet. The Docker image build includes a regression test covering the background, opacity reset, legacy filter reset, and white badge text. V1.5.1Original releaseLimits the log table to 25 rows per page by default. Adds 25, 50, and 100 row-size options. Adds compact first/previous/nearby/next/last page navigation. Adds filters for attacks, movement processing, updates, deletions, errors, and other actions. Preserves the action and row-count selections while changing pages. Shows the matching record count and current result range. Decodes legacy URL-encoded log entries into readable separators. Orders results by newest record ID for stable pagination. The Docker image build includes regression coverage for pagination, filters, action classification, decoding, and template controls. V1.5.0Original releaseAdded one shared server-side content policy rather than relying on browser validation. Matching normalizes case, HTML, accents, punctuation, repeated characters and common number/symbol substitutions. Exact-token matching avoids broad substring blocks that would reject innocent words containing a shorter sequence. Protected write points include registration usernames, player profile text/location, tribe names/tags/profiles/member titles/internal text/welcome messages, the internal tribe forum, village names and notebook entries, personal note titles/bodies, Paladin names, village-group names, Account Manager template names, player mail and support-ticket text. Existing stored text is not automatically rewritten or deleted. Administrators can correct existing usernames through Global Moderation. Added Global Moderation above the renamed World Moderation menu item. Lists all registered accounts with search, banned-only filtering and pagination. Staff with moderation permission can review an account, rename it, apply a permanent global ban, or lift that ban. Username changes update the global identity plus matching player/session identities in every registered world. Global bans use the established account-ban flag enforced by login and remove active global/world sessions immediately. Actions require the staff action token, explicit confirmation, a reason and a one-use request key. Added append-only history recording actor, action, old/new username, reason and timestamp. V1.4.6Original releasePaladin weapon combat-scope correction. Audited every Paladin weapon path in the live combat engine. Confirmed ordinary attack and defence multipliers are selected through the exact configured unit-to-weapon mapping. Confirmed Ram, Catapult, Scout, and Nobleman special effects require their intended units and matching weapons. Fixed defensive battles incorrectly considering a weapon belonging to an origin village whose support row contained no Paladin. Defensive weapon discovery now considers only own or supporting armies with at least one Paladin physically present in the defending village. Added build-time regression coverage for exact unit mapping and special-effect requirements. V1.4.5Original releaseDocker build correction for the V1.4.4 typography release. Corrected the global typography regression test to resolve stylesheets inside the application document root. Removed the invalid parent-directory lookup that stopped both the app and scheduler image builds. Preserved all V1.4.4 Arial/Verdana typography and rounded white building-level badge changes. Verified every path used by the test exists in the packaged app tree. V1.4.4Original releaseGlobal typography and village building-level badge refresh. Replaced the serif Georgia interface typography with a compact Arial/Verdana sans-serif stack matching the supplied reference. Applied the typography consistently to the game, public pages, form controls, buttons, world selector, and administration interface. Preserved deliberately monospace fields such as HEX colour inputs and technical output. Rounded the green building-level badges on the graphical village overview. Changed building-level text and every link state to high-contrast white. Added a subtle dark outline, shadow, and text shadow to keep levels readable over village artwork. Added build-time regression coverage for global typography and building-level badge contrast. V1.4.3Original releaseCompact Paladin weapon-bonus display. Removed weapon artwork from the village-overview bonus panel. Preserved the Paladin name, weapon name, affected unit, and exact bonus text. Kept the panel compact in both graphical and non-graphical village views. Added regression coverage preventing the oversized artwork from returning. V1.4.2Original releaseVillage-overview Paladin identity and weapon-bonus release. Replaced the obsolete account-wide knight name on the village overview with the actual stationed Paladin's individual name. Shows N Paladins when multiple own or supporting Paladins are stationed in the village. Keeps Paladin names and counts linked to the Paladin unit-details popup. Added a weapon-bonus panel directly below the troop list in graphical and table village views. Shows the Paladin, equipped weapon, affected unit, and exact configured combat or special effect. Added explicit descriptions for Scout, Ram, Catapult, and Nobleman weapon effects. Updated the Paladin unit description for the permanent ten-slot system and shared Weapons Room. Added build-time regression coverage for names, plural counts, support lookup, popup links, and bonuses. V1.4.1Original releasePaladin residents, placement, and shared weapons. Restored the original village-specific Resident concept. It now shows the Paladin physically stationed in the currently viewed village, their home, equipped weapon artwork, and exact attack, defense, and special multipliers. Moved the ten-slot roster to a dedicated Paladin Overview tab. Added explicit village selection when recruiting or reviving every Paladin. Recruitment resources and population are charged to the selected village rather than whichever village happened to be open in the browser. A Paladin cannot be recruited in a village where another Paladin is stationed or already being recruited. Stationing also rejects occupied destinations, enforcing one Paladin placement per village for all new actions. Added persistent individual weapon assignments to every Paladin slot. Kept one player-wide Weapons Room and shared discovery progress. Limited each weapon to two equipped Paladins and added a clear rejection message when the limit is reached. Added weapon usage counters, current-assignment controls, unequip actions, exact bonus displays, and equipped-weapon portraits. Updated battle processing so an attacking or defending Paladin uses the weapon assigned to that specific Paladin rather than one global weapon. Automatically migrates the legacy globally equipped weapon to Paladin 1 and adds the new schema columns to existing V1.4.0 worlds. Added regression coverage for the Resident, Overview, recruitment placement, weapon cap, artwork, schema, and combat integration. V1.4.0Original releaseMultiple Paladins. Added up to 10 Paladin slots, unlocked permanently at 1, 3, 5, 10, 20, 35, 50, 65, 80, and 100 owned villages. Slot unlocks are permanent. Losing villages never removes a previously earned Paladin slot, and a fallen Paladin in that slot can still be revived. Rebuilt the Statue resident view as a responsive two-column Paladin overview inspired by the supplied reference. Added an individual persistent name, life/recruitment state, and home village for every Paladin slot. Added per-slot recruitment, revival, cancellation, renaming, and stationing. Changed stationing to move exactly one Paladin instead of overwriting the village Paladin count, allowing several Paladins to coexist. Existing single-Paladin worlds migrate automatically: earned slots are created and existing Paladin units are imported into the registry. Retained the shared Paladin weapons room and item progress system. Added schema and Docker build regression coverage for all unlock thresholds, permanent slots, per-slot actions, and the new overview. V1.3.7Original releaseFixed World Dominance showing 0 days forever for legacy and open immediately worlds. Scheduled worlds continue to calculate age from their configured opening timestamp. Immediate worlds now calculate age from the earliest player-owned village creation timestamp, the earliest durable world-local evidence that gameplay began. Empty immediate worlds remain at 0 days until the first player village exists. Added lifecycle and World Dominance regression checks for scheduled and immediate worlds. Updated all current build, configuration, Support, Admin, lobby, and game version labels to V1.3.7. V1.3.6Original releaseRestored distinct red Attack and green Support Rally Point actions. Standardized both command labels in title case and gave them consistent sizing. Increased foreground/background contrast for red and green action buttons across normal and hover states. Prevented the global link-color rule from making destructive link-buttons unreadable. Made Tribe Properties Disband a clearly visible, high-contrast destructive action. Added regression checks for the command labels, action colors, and Disband treatment. Updated all current build, configuration, Support, Admin, lobby, and game version labels to V1.3.6. V1.3.5Original releaseApplied a consistent Tribal Wars-themed appearance to every in-game submit, button, and reset control, including legacy controls without a button class. Added unified hover, pressed, keyboard-focus, and disabled states. Improved text, password, number, email, URL, date, time, select, textarea, checkbox, radio, and file-upload controls. Preserved the existing green, red, grey, scavenging, account-manager, and other specialized control variants. Synchronized the root and browser-served copies of game.css. Capitalized the Tribe Properties Disband action, styled it as destructive, and repaired its malformed confirmation call. Added a Docker build test that prevents unstyled legacy buttons and diverged CDN styles from returning. Updated all hardcoded configuration and footer labels to V1.3.5. V1.3.4Original releaseFixed missing status images beside player names on Tribe > Members. Replaced the incorrect world-relative graphic/stat/ URL with the configured CDN path. Added version-based cache busting to member status images. Corrected Vacation Mode from nonexistent blue.png to the included vacation.png artwork. Normalized every member status to an array before rendering. Removed a duplicate unreachable banned-status branch. Added a Docker build test covering all six possible member-status artworks in both CDN trees. Updated all hardcoded configuration and footer labels to V1.3.4. V1.3.3Original releaseAdded an IPinfo public-IP lookup before player login. Cached the browser lookup in session storage for five minutes to avoid repeated IPinfo requests. Stored validated public IPv4 or IPv6 addresses against the authenticated player. Used a fresh cached public IP for subsequent world-entry login-history records. Retained the server-observed address as the fallback whenever IPinfo is unavailable, slow, invalid, private, or reserved. Added build tests covering the lookup URL, five-minute cache, validation, fallback behavior, and world-login integration. Updated previously hardcoded V1.3.0 configuration and footer labels to V1.3.3. Existing login-history entries are intentionally unchanged. New entries use this behavior after V1.3.3 is deployed. V1.3.2Original releaseFixed the four scavenging card artworks not loading in the browser. Added all four 182 x 180 PNG assets to the browser-served path at app/tribalwars/global_cdn/graphic/scavenging/. Retained a matching copy under app/global_cdn/graphic/scavenging/ for compatibility with root-based installations. Added v=1.3.2 cache busting to the artwork URLs so previously cached missing responses are not reused. Strengthened the scavenging build test so future releases must contain the artwork in the actual browser-served CDN tree. The V1.3.1 clickable troop counts, styled controls, and ordered mass unlocking remain unchanged. V1.3.1Original releaseRestored the four supplied scavenging artworks as clean 182 x 180 card assets. Made each parenthesized available troop count clickable so that unit's full available amount is entered immediately. Retained the All troops shortcut and added input clamping to prevent values outside the available range. Reworked the Scavenging and Mass Scavenging presentation with game-themed panels, cards, buttons, hover states, and responsive layouts. Added ordered mass unlocking for selected villages. Each submission unlocks the next valid option only, preserving the required 1 -> 2 -> 3 -> 4 sequence. Mass unlock skips villages with an unlock already in progress, insufficient resources, or all options already unlocked. Added per-village unlock progress and next-option status to Mass Scavenging. V1.3.0Original releaseScavenging. Added four Rally Point scavenging options: Lackadaisical Looters, Humble Haulers, Clever Collectors, and Great Gatherers. Added sequential unlock costs of 100, 500, 2,500, and 12,500 of each resource. Added unlock times of 5, 30, 90, and 360 minutes, divided by world speed. Scavenging hauls use the original 10%, 25%, 50%, and 75% carry-capacity efficiencies and are divided almost equally between all three resources. Gathering duration follows the original capacity/efficiency formula with the world-speed duration factor. Only eligible troops stationed in the village can gather. Troops remain unavailable until they return. All four options can run concurrently, but each option can run only once per village and cannot be cancelled. Completed runs return troops, add resources up to warehouse capacity, and generate a detailed report. Added Mass Scavenging with village selection and automatic assignment of all eligible stationed troops. Extracted and included the four supplied scavenging artworks. Added automatic schema migration and Docker build regression coverage. V1.2.6Original releaseVillage information redesign. Redesigned every owned, player-owned, barbarian, and bonus village information page around the same responsive two-column layout. Added a minimap centered on the displayed village plus coordinates, points, player, and tribe details. Added a private per-player notebook for every village, including existing worlds through an automatic schema migration. Added own attack/support commands travelling to the displayed village with arrival time, live countdown, details, and cancellation where permitted. Added direct Center Map, Send Troops, and Send Resources actions without a troop-template selector. Added General View of Village as the final action when the displayed village belongs to the logged-in player. Added the latest 50 attack reports involving the village, with Select All and CSRF-protected deletion. Added Docker build regression coverage for the complete village-information feature. V1.2.4Original releasePublic path hotfix. Installed the supplied Farm Militia artwork under /tribalwars/global_cdn, matching the CDN URL resolved by world pages. Fixed the expired-session Home page link so it resolves to the application root /index.php rather than the nonexistent /tribalwars/index.php. Added release checks for both browser-facing paths. All Militia simulator and report behavior from V1.2.2 remains unchanged. V1.2.3Original releaseFarm Militia artwork path hotfix. Installed the supplied Militia artwork in the actual global_cdn asset tree used by world pages. Kept the Farm presentation and all V1.2.2 Militia simulator/report behavior unchanged. Updated the Militia release check to validate the browser-resolvable CDN asset location. V1.2.2Original releaseMilitia simulator, report, and Farm artwork hotfix. Added Militia to the Rally Point simulator exclusively on the Defender side. Added defender Militia totals and losses to simulator results. Defender troop tables in attack reports now always include the Militia column, including a visible zero-state column for reports created before Militia existed. Replaced the Farm's generic building illustration with the supplied Militia artwork. Extended the Militia release checks to protect the defender-only simulator rule, report rendering, and Farm asset. Militia remains non-recruitable and cannot be sent or entered as an attacking unit. V1.2.1Original releaseThis hotfix improves the presentation and discoverability of the V1.2.0 militia feature. Restyled the Farm into a reference-inspired two-column layout. Population capacity and current usage are displayed before the militia controls. The Farm militia panel switches between Call Militia and Militia in Village according to deployment state. Active surviving militia appear in the graphical village Overview troop list. The militia icon and name open a dedicated unit-information popup with its statistics, deployment rules, cost and Farm availability. Overview production figures now visibly include the active 35% militia penalty. Militia remain separate from normal units and therefore cannot be recruited, placed in Troop Manager templates, or sent away from the village. V1.2.0Original releaseEvery owned village can call militia from its Farm; village count does not restrict access. A call provides 50 militia per Farm level (1,500 at level 30) for exactly three hours. Militia have 5 offensive strength, 15 general defense, 45 cavalry defense and 25 archer defense. They require no research. Militia are defensive-only, never leave their village and cannot be recruited or managed through any troop recruitment interface. Wood, clay and iron production are reduced by 35% during the complete three-hour deployment. Battle losses reduce the stationed militia. If all militia die, the village remains in recovery and cannot call them again until the original timer ends; the production penalty also remains until then. Defense reports show militia and militia losses to the defending player only. Existing worlds create the village_militia state table automatically on first use. Fresh installations include it in the world database templates. V1.1.9Original releaseV1.1.9 fixes the V1.1.8 container build regression. Updated the Public Profile regression test to recognize that the obsolete minimap viewport polygon is now removed for every normal map. Preserved Public Profile minimap coloring and the new single white synchronized viewport overlay. No database migration or manual data change is required. V1.1.8Original releaseV1.1.8 makes both map views and their navigation information stay synchronized. The Continent heading now follows the live map center when either map is dragged or clicked. The X and Y center fields update with the live map position. The main map now displays X coordinates along its lower border and Y coordinates along its left border. Coordinate labels follow the map during dragging and respect the selected 7x7 through 17x17 view size. Removed the old viewport rectangle drawn into the minimap image. The remaining white minimap rectangle matches the selected main-map view size and moves live with either map. No database migration or manual data change is required. V1.1.7Original releaseV1.1.7 prevents the Troop Manager from scheduling more population than a village can support. Calculates population occupied by every completed building level. Includes population reserved by queued construction; pending demolitions do not free population prematurely. Includes all existing troops belonging to the village, including noblemen and the paladin. Includes every unfinished recruitment order before scheduling another batch. Uses the village's current farm capacity with an absolute maximum of 24,000 population; 10% population bonus villages receive no additional allowance. Retains the existing limit of five queued batches per recruitment building and 50 troops per batch. No database migration or manual data change is required. V1.1.6Original releaseV1.1.6 adds direct navigation to every Account Manager section. The top Account Manager button now opens a dropdown consistent with the other primary navigation buttons. The dropdown links directly to Overview, Construction, Troops, and Deliveries. Existing Account Manager page tabs remain available for navigation inside the manager. The legacy winter navigation receives the same four destinations. No database migration or manual data change is required. V1.1.5Original releaseV1.1.5 corrects an awkward Academy translation. Replaced It can still be generated: with Noblemen that can still be educated: on the Academy nobleman availability table. No database migration or manual data change is required. V1.1.4Original releaseV1.1.4 expands Account Manager capacity and adds clearer troop and template management. Construction assignments, troop assignments and due delivery routes now process up to 250 records per scheduler pass instead of 25. Troop Manager shows each village's currently owned troops above its assigned template targets. Troop progress is red below 75%, orange from 75% through 99%, and green when the target is met. Saved custom construction templates can be edited or deleted. Saved troop templates can be edited or deleted. Deleting a template safely stops management for villages assigned to it. Existing construction and recruitment orders continue normally. The built-in default construction template remains protected. The 250-record pass limit was selected for a host providing 12 vCPUs from an Intel Core Ultra 9 185H while also running other services. It is a deployment reference, not a minimum hardware requirement. Actual load depends on world activity, database performance and the number of managed villages and routes. No database migration or manual data change is required. V1.1.3Original releaseV1.1.3 improves the Account Manager troop scheduler. Troop Manager now maintains independent recruitment queues for the Barracks, Stable, and Workshop. Each recruitment order contains no more than 50 troops. Each recruitment building is capped at five active batches per village. Barracks, Stable, and Workshop queues can be populated during the same manager pass. Existing queued troops are included when comparing current strength with template targets. New batches are chained after the final active batch in their respective building. No database migration or manual data change is required. V1.1.2Original releaseV1.1.2 improves the Account Manager construction scheduler and cleans up the Village Headquarters labels. Construction Manager now maintains up to three queued building upgrades per managed village. Already queued upgrades are projected when selecting subsequent upgrades, so template targets and prerequisites remain correct. Added orders are scheduled sequentially through the existing build and event pipeline and remain individually cancellable. Villages with demolition orders are skipped by automatic construction management. The active construction table now uses Construction, Duration, Completion, and Cancellation. The available-buildings table now uses Duration instead of During. No database migration or manual data change is required. V1.1.1Original releaseRedesigned the Account Manager to match the compact visual style of the village overview. Added a clearer selected-state treatment to the Overview, Construction, Troops and Deliveries tabs. Added a dashboard-style Account Manager overview with summary cards. Added Select All Villages controls above and below the construction and troop village lists. Added green managed and red unmanaged status icons for every village. Construction and troop lists now display the actual assigned template name. Moved Stop management into the relevant village row. Linked village names directly to their village overviews. Moved template creation into collapsible management panels to keep long village lists readable. Redesigned delivery creation and scheduled-route tables with village coordinates, resource icons, route state and compact inline actions. Added responsive styling for narrower screens. This patch does not change the permanent ten-village Account Manager unlock or its automation rules. V1.1.0Original releaseAdded a free Account Manager that is always visible in the main navigation. Access unlocks permanently for a player in a specific world after that player owns at least 10 villages there. Losing villages after the unlock does not revoke it. Added an overview showing active managers. Added Construction Manager templates and per-village assignments. The built-in construction template prioritizes Warehouse, resource buildings, Farm, then every remaining building. Added custom construction templates with target levels. Added Troop Manager templates with per-village troop targets and assignments. Recruitment respects resources, population, research, recruitment buildings and existing queues. Paladins and noblemen remain manually controlled. Added scheduled Delivery Manager routes with source, destination, resources, weekdays and UTC time. Deliveries use ordinary merchants and wait when resources or merchants are unavailable. All automation runs through the existing world scheduler and creates ordinary visible queues and transports. Replaced the former top-level Notes button with Account Manager. Moved Notes into Settings directly beneath My Account in both the dropdown and left-side menu. Existing direct Notes links redirect to the new Settings location. Added world-local Account Manager unlock, template, assignment and delivery-route tables. Existing worlds create these tables automatically on first scheduler or Account Manager use. New worlds receive them from the clean world database template. V1.0.0Original releaseRemoved the global World goal / Victory goal strip from ordinary game screens. Victory conditions, progress, contenders, deadlines and archive status remain available exclusively under Ranking → World Dominance. Removed the redundant lifecycle-display preparation previously performed on every game page. No database migration is required. V0.9.9Latest: V0.9.9.8Updates and hotfixesV0.9.9.8Corrected the broken remove-friend icon shown to the left of each active friend. The image now uses the configured CDN path, so it works consistently in every registered world. Added an accessible label and hover title to the icon. No database migration is required. V0.9.9.7Added World Dominance directly below Players in the Ranking dropdown and ranking sidebar. Uses the selected world's real lifecycle configuration instead of a hard-coded dominance rule. Supports no victory rule, player points target, tribe points target, highest player points at the scheduled end, and highest tribe points at the scheduled end. Shows the relevant top 20 player or tribe contenders. Shows world age, the configured victory rule, leader progress, the signed-in player's or tribe's contribution, scheduled deadline, time remaining, and archive status where applicable. No database migration is required. V0.9.9.6Added a minimap centered on the first village in the displayed village list. Highlights that primary village in magenta and all other villages owned by the player in pink. Omits the normal minimap viewport outline on public profiles. Added context-aware Write Message, Add as Friend, Invite to Tribe, and Block all communication actions. Retains player details, profile text and crest, achievements, and the existing villages table. Uses a responsive two-column layout that collapses cleanly on narrower screens. No database migration is required. V0.9.9.5V0.9.9.5 clarifies the player-facing Settings navigation while retaining the V0.9.9.4 troop-health hotfix. Renamed Profile to Public Profile in the Settings hover dropdown. Renamed the same entry in the Settings sidebar for consistent navigation. The existing profile route and stored player profile data are unchanged. Includes the V0.9.9.4 hotfix that safely consolidates duplicate home-garrison rows before recalculating cached troop and population totals. V0.9.9.4V0.9.9.4 adds safe, audited troop-counter repair tools to the Main admin health dashboard. Added an Owner-only Repair all flagged troop totals action beneath the read-only health scan. Rechecks every player-owned village while holding the world action lock. Synchronizes only proven derived fields: all_unit_* troop totals and r_bh population usage. Uses troop-location records and cumulative building population as authoritative inputs. Skips villages with movements, recruitment, construction, demolition, invalid troop locations or records that changed before update. Never creates, deletes, moves or edits the actual troops stored in unit_place. Shows repair, deferred, invalid and concurrent-change totals after completion. Records the acting Owner and repair summary in the staff audit log. Extended health and staff-permission regression coverage. 1. Sign into the selected world's Admin panel as the built-in superuser or an Owner. 2. Open Home and select Run read-only scan. 3. Review the proposed stored and calculated values. 4. Confirm and select Repair all flagged troop totals. 5. Review the automatic follow-up scan and staff audit log. Busy villages remain deferred until their commands and queues finish. Structurally invalid troop-location records remain manual-review items. V0.9.9.3V0.9.9.3 fixes lifecycle victory scoring in all worlds. Corrected the tribe leaderboard query to read the legacy ally.short column as the tribe tag. Player-points and tribe-points victory checks no longer produce World database operation failed when a player opens a world. The same correction applies automatically to World 1 and dynamically created worlds such as World 2. Extended the mandatory lifecycle regression test to verify the real world schema column name. V0.9.9.2V0.9.9.2 fixes troop accounting for repeated Rally Point commands. The complete troop total for a command batch is now reserved with one conditional database update. A stale confirmation, duplicate submission or concurrent command can no longer reduce any troop count below zero. If the available troops changed, the complete batch is rejected before movements are created. Expanded the command-batch regression test to cover aggregate deductions and dispatch ordering. V0.9.9.1V0.9.9.1 is a small pre-1.0 interface-polish release based on V0.9.9. Added the missing » marker to General View of Village when viewing a village owned by the signed-in player. Corrected the closing table-cell markup for the village information action links. Added a mandatory build-time regression check for the village information action list. Original releaseAn idle Paladin can now be stationed in any village owned by the player. Open the Statue, choose an eligible owned village from Station Paladin, and confirm the move. The destination does not need its own Statue. Relocation uses the existing Paladin travel event, so the Paladin is unavailable as a troop while travelling. On arrival, he becomes a home troop of the selected village and can be sent from that village through its Rally Point. The selector shows coordinates and free population for every owned village. It disables the current station and destinations that cannot house the Paladin. Capacity is calculated separately for each destination, including the larger Farm capacity of population-bonus villages. Returning a Paladin who is stationed as support to his original home does not reserve his population twice. Server-side checks require an idle Paladin, a valid request token, an owned destination, and sufficient population. The update also consumes the exact idle Paladin row before scheduling travel, preventing a stale page from dispatching the same Paladin twice. The packaged V0.9.9 release also includes the build-test correction discovered during first deployment: destination identifiers must use their canonical decimal form, so malformed values such as 04 are rejected consistently by both the validator and regression test. V0.9.8Original releaseThe Rally Point form now has a Commands field (1-20, default 1). Enter troops per command and one destination coordinate pair, then choose Attack or Support. For example, 3 commands with 100 axemen sends three separate commands of 100 axemen each to that destination and requires 300 axemen at home. Confirmation shows the command count, troops per command and aggregate troop requirements. Both the preview and final submission validate total availability. All commands use the same troop composition, destination and selected catapult target, and depart together. They appear individually in the movement list. This is immediate repeated dispatch, not a timed wave scheduler or a list of different destinations. Existing beginner-protection and target checks apply. The outgoing command link now reads “Cancel”. The support confirmation heading and destination label were also corrected. V0.9.7Original releaseThe homepage now temporarily caches the browser's HTTPS response from https://ipinfo.io/ip in sessionStorage for five minutes. The cache is bound to the current player and login session, so signing in again or changing accounts forces a new lookup. If browser storage is blocked, capture and saving still work. The browser submits the captured IP to an authenticated POST endpoint. The endpoint derives the player ID from the existing main-site login session, checks a session-bound CSRF token, validates IPv4/IPv6 and capture age, and saves the latest capture in a new main-database table, tw_player_public_ip. This table is created automatically; no manual SQL is required. It retains one latest capture per player after the temporary browser cache expires. Older captures from other tabs cannot overwrite a newer capture. Moderation → Player details → Last login IP now reads this saved IPinfo value, with capture time and the source label “IPinfo (browser-reported)”. It no longer uses the server/proxy address for that field. Existing server-observed login history remains unchanged. This is a browser-reported public IP, not verified identity evidence; a modified client can submit a different valid IP. After upgrading, open the game homepage while logged in (or sign in again) to populate the field. Other players must do the same. Until a successful capture is saved, their field says “Not recorded yet”. Capture time is when IPinfo was queried, not a rewritten authentication timestamp. If IPinfo is unavailable, fails CORS, is blocked or returns invalid content, no fallback proxy address is saved. The last successful saved capture remains. If saving fails, the homepage address tooltip says so and a reload retries. Trusted-proxy settings are not needed for this IPinfo capture; they continue to apply separately to the original server connection logs. Back up your database and .env, copy the archive to /home/atxsu/, and run: Open the homepage while logged in, allow the IPinfo lookup/save to finish, then refresh your Moderation player profile. Its Last login IP should match the homepage's IPinfo address. The address tooltip indicates whether it saved. V0.9.6Original releaseRefilling selected villages now loads each village's warehouse capacity using its own bonus type. A level-30 normal warehouse fills to 400,000 wood, clay and iron; the warehouse bonus fills each to 600,000. Mixed selections are handled separately. The corrected values are included in the existing saved operation plan and audit flow. Other bonuses do not increase storage. Player details now shows Last login IP, the recorded UTC timestamp, and its source (Game home or Selected world). Uses the most recent direct-player login across those two histories; sitter/vacation logins are excluded. Missing history displays Not recorded. Values are HTML-escaped and remain inside the existing staff-only Moderation page. This displays server login records, not the browser IPinfo result. Historical proxy addresses are not rewritten. Configure trusted proxy forwarding as described in RELEASE-V0.9.5.md to capture the original client IP for future logins. No schema migration is required. V0.9.5Original releaseRemoved Premium Points from the homepage user-info panel. Stored balances remain unchanged. Logged-in players' browsers request their public IP from https://ipinfo.io/ip over HTTPS. No game cookies or referrer are sent. This contacts IPinfo directly and displays its response only; it is not saved as verified login evidence. Requests time out after four seconds. If blocked, unavailable, or returning invalid content, the panel retains the server-observed address. Hover over the address to see its source. Added trusted-proxy client IP resolution for server-side login history and existing request-IP uses. Supports IPv4/IPv6 and explicit IP/CIDR trust lists. Untrusted request headers are ignored. Traverses X-Forwarded-For from the nearest hop to the first untrusted address. Set TW_TRUSTED_PROXIES in /opt/tribalwars/.env to the actual reverse-proxy address seen by the app, and any additional trusted proxy hops, comma-separated. No proxies are trusted by default. Do not trust arbitrary private networks or every address. Your HTTP reverse proxy must supply X-Forwarded-For with the actual connecting client's IP. Configure its handling of upstream headers so clients cannot impersonate other addresses. Pure NAT/port forwarding cannot recover an original address that has already been lost; the first HTTP proxy must see the client address. The screenshot's 10.250.0.1 may be a gateway or proxy. Verify that role before adding it to the trust list. Browser IPinfo display works without this setting, but server-side records require correct forwarding and trust configuration. Existing login history is not rewritten. VPN/shared public IPs identify connections, not unique people. Back up the database and .env first, copy the archive to /home/atxsu/, then: No schema migration is required. After adding/changing TW_TRUSTED_PROXIES, recreate app and scheduler with docker compose up -d --force-recreate app scheduler. V0.9.4Original releaseFixed the resource lookup shared by the Other offers list and offer acceptance. The legacy expression $$row['buy_ress'] is evaluated differently under PHP 7, so it could reject trades with “Not enough resources” even when the village had the requested wood, clay or iron. An explicit resource map now checks the requested resource against the amount for the selected trade quantity. A successful acceptance now returns the status expected by the controller, which redirects back to the offer list. Zero-quantity requests and offers with no remaining reservations cannot create empty shipments. Failed submissions now distinguish insufficient merchants, insufficient resources and unavailable offer quantities. The change covers the shared world implementation and the legacy root copy. No database migration or resource/troop recalculation is required. V0.9.3Original releaseNotes now supports up to 100 separate titled notes per player per world. A compact title list sits beside the editor. Create, edit and permanently delete notes with an explicit deletion confirmation. Notes are available across all your villages in the same world. The old notepad is imported once as My original note on first opening Notes. Its original database value is retained as a fallback; deleting the imported note does not reimport it. New tables are created automatically. Titles and contents are plain text and escaped on display. All note lookups and mutations are scoped to the signed-in player and selected world. Writes require POST and a session-bound token. Revision checks prevent stale tabs overwriting newer text. Limits: 120 bytes per title, 10,000 bytes per note. Includes all V0.9.2 features. No new game-rules page is added. Validation: added Docker build checks for input limits, one-time migration, unknown-note rejection, scoped mutations, stale edits, deletion confirmation and escaped template rendering. PHP and Docker are unavailable in this environment, so these checks still need to run during the container build. V0.9.2Original releaseFix dropdowns closing while moving from a top navigation button into its submenu: anchor each popup to its parent cell, remove the old margin and overlap the edge by one pixel. Apply the same darker gold button styling to all top-level items, including Notes and Logout. Only dropdown buttons display arrows. Preserve submenu row styling, destinations and keyboard focus access. Update the navigation stylesheet cache version for every world using the shared game template. Includes all V0.9.1 features. No database changes are required for this styling update. Validation: source checks passed. Browser hover testing was unavailable because Chromium is not installed; the full PHP/Docker build was not run here. V0.9.1Original releaseWorld lifecycle controls are available under Admin → World Settings → World Lifecycle for Owners and the built-in administrator. Existing routine Administrator permissions remain unchanged. Schedule opening, registration closing and an optional ending in UTC. Closing registration prevents new world memberships; existing players can continue. Choose a player or tribe points target, or the highest player/tribe score at the scheduled end. Points use the sum of currently owned village points. Tied top scores share victory. A target triggers on detection; the highest eligible score wins. A deadline with an unmet target archives standings without a winner. Finalization freezes gameplay and stores immutable player and tribe leaderboards. View these through Statistics → Archived final leaderboards. Archives survive deletion of the live world. Finished worlds cannot be reopened or reset; create another world for a new round. Manual access closure does not pause timers or victory checks. A future opening date pauses event processing until opening. Saving lifecycle settings enables access at the specified opening time. Registration has its own enabled/disabled selection. Opening time cannot change once players have joined. V0.9.0Original releaseThe Admin panel now has Staff Accounts for Owners and Administrators, plus My Staff Account for every staff member. Staff identities are global across worlds and Support, and remain separate from player accounts. | Role | Permissions | Can create | |---|---|---| | Built-in superuser | Every permission, using the existing container-configured credentials | Any staff role | | Owner | Every Admin and Support tool, including world resets, creation/deletion and legacy utilities | Owner, Administrator, Moderator, Support | | Administrator | Player moderation, village creation/changes/destruction, routine world settings, starting buildings, health, global info, mass mail, logs and tickets | Administrator, Moderator, Support | | Moderator | Player bans, lifting bans, private moderation notes, and support tickets | None | | Support | Ticket replies, private ticket notes, status and priority; no player moderation, village tools or world controls | None | Administrators may manage existing Moderator and Support accounts. Only Owners/the built-in superuser may manage existing Administrator and Owner accounts. No staff member can change their own role or enabled status. Everyone with a staff account can change their own password after entering the current one. The built-in superuser is never a mutable directory entry and cannot be disabled, renamed, reset or downgraded here: its credentials remain TW_ADMIN_USER and TW_ADMIN_PASSWORD in the container configuration. Account creation defaults to Support. Usernames are case-insensitive and normalized to lowercase, 3-40 letters/digits/dots/underscores/hyphens. The configured superuser name is reserved. Staff passwords are hashed with PHP's password API and must be 12-72 bytes. Creation does not send email; give the initial password directly to the staff member. One shared staff login for Admin and Support. Player login never grants staff privileges. Opaque random session cookies, with only their SHA-256 hashes stored in the database, expiring after 12 hours. Existing static admin cookies are not accepted; sign in once after upgrading. Role and enabled status are fetched from the database on every request. Role/status/password changes revoke all sessions for the affected staff account. Already-running requests are not forcibly interrupted. Built-in sessions are invalidated if the container credentials change. Logout revokes the current server-side session. Staff login is limited to eight attempts per username per 15-minute window; the counter clears after successful login. Menus reflect capabilities, while server-side dispatch also rejects unauthorized direct URLs, village actions/recovery requests, world lifecycle requests and staff-management submissions. Legacy admin PHP action/module files reject direct requests outside the authenticated dispatcher. Unmapped legacy screens are Owner-only. Staff changes use CSRF checks and transactional account checks. Account changes and sign-ins are recorded in the staff audit; moderation/village decisions and ticket replies use the actual staff name. Older main-menu mutation forms now require POST and a session-bound action token. Reset World remains Owner-only, requires a typed world-specific confirmation, and records the request in the staff audit. A legacy malformed sessions-table reset query was corrected. New announcements accept plain text and safe HTTP(S)/site-relative links; displayed announcements, logs and mail form values are escaped. Bonus-village creation validates its numeric bonus type. Support ticket privacy now means the ticket owner and authorized staff. Private staff notes remain hidden from players. Staff replies continue to feed unread support notifications. The explicit player-ticket view still works when a staff member also has a player login. V0.8.9Original releaseA compact parchment notification bar now appears above each in-game screen, with consistent counts and direct links for incoming attacks, pending tribe invitations and tickets with unread support replies. Attacks are counted from visible, live attack movements targeting your villages in the selected world. The previous cached attack badge is replaced by this shared bar. Invitations count pending invitations from existing tribes when the player has no tribe; the link opens the tribe invitation screen. Support counts tickets, not individual messages, across all worlds. Only public administrator replies count. Private staff notes, player replies, system entries and imported legacy entries do not. Opening your own ticket marks only the administrator replies included in the loaded history as read. A later reply becomes unread again. Administrator viewing does not clear player read markers. The support link explicitly selects the player view even if the browser also holds an administrator login. Use Administrator login to return to the administrator view; existing authentication and ownership checks remain required. Counts refresh when loading or refreshing a game page. This release does not add background polling or external notifications. The new global tw_support_reads table is created automatically when authenticated Support opens. Existing public administrator replies initially count as unread until opened. In-game counting also works before this table exists. Existing tickets and game data are preserved. Validation: unread SQL was exercised with an in-memory SQLite fixture for owner isolation, private/system exclusions, read markers, subsequent replies, counting one ticket for multiple replies, qualified list correlation and upgrade fallback. Source and route wiring were inspected. PHP helper/ownership/upgrade/syntax checks are included in the Docker build. PHP, MariaDB, Docker and browser runtime tests could not be executed in this workspace; deploy only after the Docker build succeeds. V0.8.8Original releaseVillage groups are available under Overview > Village Groups and the Groups overview tab. Add Offense/Defense/Resources with one button, create custom groups, rename/delete groups, and assign checked villages in bulk or return them to Ungrouped. A village has one group; groups are private per player and world. Deleting a group leaves villages intact. Village assignment lists are paginated at 100 rows. Combined, Production, Troops and Groups offer All/Ungrouped/named-group filters and sorting by name, points or coordinates, ascending or descending. Selections carry between overview tabs via links. Commands and Incoming intentionally remain unfiltered and arrival-ordered so group selection never hides troop activity. Sorting does not alter village-arrow order. New world-local tables store groups and memberships without repurposing legacy group fields. Tables initialize automatically. POST changes use a session-bound signed token, world locking and server-side ownership validation; changes to the new tables are transactional. Captured villages do not inherit the previous owner's private group in the new owner's view. Based on V0.8.7. Source wiring reviewed. Docker build includes validation/sorting/ownership fixtures; PHP, database and browser execution were unavailable here, so these fixtures and integration behavior remain unverified at runtime. Archive checksums verified. V0.8.7Original releaseAdmin Home begins with World health for the selected world. The summary observes the scheduler advisory lock and counts construction, demolition and movement entries more than 120 seconds overdue. The worker-lock indicator is an observation, not proof of successful processing or a heartbeat history. No worker lock can briefly occur during worker restart; rescan before treating it as an outage. Run read-only scan shows up to 30 oldest overdue events per category and checks 100 player-owned villages per page, with navigation through the whole world. It compares cached troop totals with all troop-location rows belonging to each idle village, including support stationed elsewhere. Population is calculated from cumulative building requirements plus those troops, with the village's bonus-aware capacity. Villages with movements, recruitment or building/demolition queues are deferred. Missing home rows, invalid troop values, duplicate destinations or missing destination villages require record review instead of numeric repair. Repeated source reads detect concurrent changes; results remain provisional in a live MyISAM world. Over-capacity population is distinguished from a cached-value mismatch and does not propose troop deletion. Expandable repair previews display stored and calculated values. These are proposals only, not executable SQL. Overdue-event guidance directs staff to investigate logs and resume normal event processing instead of deleting events. No repair action, scheduler restart, troop change or database migration is performed by this dashboard. The health reader rejects non-SELECT queries and avoids the standard world manager's schema initialization. Access is through the existing administrator-authenticated Home route. Includes V0.8.6. Source/schema checks completed and archive checksums verified. New Docker build fixtures cover stationed support totals, population, bonus capacity, mismatch previews and the read-only query guard. PHP/Docker, live database integration and browser rendering were unavailable here; fixtures were not executed in the authoring environment. V0.8.6Original releaseTop-level dropdown triggers now have subtle parchment/gold shading, inset brown borders, a small downward caret, and a brighter hover/focus state. Includes Overview, Reports, Messages, Ranking, Settings, and Tribe when its dropdown is available. Popup item styling, text and destinations are preserved. Keyboard focus also exposes the existing popup. Based on V0.8.5. Popup link markup and archive integrity checked; browser rendering and PHP/Docker execution not performed. No database changes. V0.8.5Original releaseReports dropdown now matches the sidebar: All, Attacks, Defense, Support, Trade, Other. The Trade filter no longer displays Market. Existing links and filtering are unchanged. Includes all V0.8.4 changes. All six label-to-route mappings and archive checksums verified. Runtime/browser testing not performed. No database changes. V0.8.4Original releaseMessages dropdown and sidebar now use the same labels and order: Inbox, Outbox, Archive, Write Message, Block Sender. Existing routes are preserved. Based on V0.8.3, including wider layouts and all prior features. No database changes. Verified all five dropdown labels against their routes and sidebar entries. Archive checksums verified. PHP/Docker and browser execution not performed. V0.8.3Original releaseGame desktop layout expanded from 980px to 1176px (+20%), including the header, navigation, game panel and footer. Intermediate screens use the available width, retaining the existing 980px minimum for legacy game tables. Font sizes are unchanged. Combined and Production overview names, headings and population links avoid awkward line wrapping. Admin content maximum width expanded from 1180px to 1416px (+20%). Moderation gives the village list slightly more space, keeps short table headings/coordinates/points together, and stacks the profile columns on narrower screens. Includes all V0.8.2 functionality. No database changes. Source and archive integrity checked; browser rendering and PHP/Docker execution unavailable here. V0.8.2Original releaseModeration player profiles now let administrators apply, replace or remove a bonus on selected villages, or choose a bonus while creating a village. All six existing bonus types are available. Creation defaults to ordinary villages. The player's village list marks existing bonus types. Uses existing administrator form verification, world locking, ownership validation, operation recovery and audit history. Bonus updates record the requested type and settle accrued resources under the old bonus before changing it. Buildings, ownership and troops are retained. Existing queues are not rescheduled. Removing a capacity bonus can leave over-capacity population; normal game limits apply. No manual SQL required. Based on V0.8.1. Source and archive checks completed; PHP, Docker, database integration and browser execution were unavailable here. V0.8.1Original releaseCombined and Production overviews now load farm and warehouse capacity separately for each village, using its own bonus configuration rather than the currently selected village. No population or troop data is modified. At the standard level-30 farm capacity, 26,385 used population in a population-bonus village now shows 15 available (26,400 capacity), instead of -2,385. Genuine over-capacity values remain visible. Both overviews include a compact Bonus column with a building icon and a hover description; ordinary villages show a dash. Saved V0.8.0 features and the support cookie hotfix are retained. PHP/Docker and browser execution were unavailable. Archive integrity and source wiring were checked locally; a focused PHP capacity regression check is included in the Docker build. V0.8.0Original releaseBased on V0.7.9 hotfix 1, including support cookie cleanup. Village arrows now wrap: previous on the first village opens the last village, and next on the last opens the first. The existing name/ID ordering, current screen and mode are preserved. Navigation stays within the current player and world. For a single village, arrows remain disabled. Settings shows 1 January 1970 when no valid birthday is saved. Existing valid birthdays remain unchanged; this does not overwrite player data. No manual SQL or environment changes are required. PHP/Docker/browser execution was unavailable here; source changes and archive integrity were checked locally. V0.7.9Original releaseBased on V0.7.8, including the corrected growth test and preceding navigation fixes. The support portal at /zapping_support/ now uses the player's existing main-page login. Each player sees only their own tickets, replies and previous attachments. They can create tickets with a subject, category, world and description, reply, resolve and reopen them. A reply reopens a resolved ticket. General/account tickets can be filed without selecting a world, including requests about world access. The administrator can view the full queue, filter active/all/resolved and individual statuses, search subjects or ticket numbers, reply, change priorities, set Open / In progress / Waiting for player / Resolved, and add private notes. Notes are never included in the player's history query. Changes are recorded in the ticket thread. Lists are paginated in groups of 25. Timestamps are UTC. No email notifications or new file uploads are implemented in this release. /zapping_support/admin/ uses the exact administrator credentials and admin_auth cookie used by the game Admin panel. An existing administrator session is recognised. Otherwise, sign in there with TW_ADMIN_USER and TW_ADMIN_PASSWORD as configured for the server. Support no longer grants rights from player administration flags or legacy support_session values. The Manage users tab and its old action endpoint have been removed. Every ticket read, reply, status update, priority change and attachment download checks administrator authority or ticket ownership on the server. The player cannot access another player's ticket by changing an ID. Players cannot add private notes or set administrator-only workflow statuses/priorities. All mutations require POST and a session-bound CSRF token. Ticket updates use row locks, revisions and transactions to reject stale forms. Creation/replies have request keys to avoid duplicate submissions. Ticket text and imported legacy text are rendered as escaped plain text. Support logout logs out the shared administrator account; it does not erase the player's game session. The portal does not use the old independent support password login. The first authenticated portal requests create tw_support_tickets and tw_support_messages in the main database and import previous support_ticket/support_response records in batches. Migration preserves recorded ticket owner IDs and original tables, and uses unique legacy IDs to avoid duplicate imports. Legacy replies are labelled legacy rather than inferring trusted administrator roles from their author text. Tickets whose recorded owner no longer exists remain available to the administrator. Old showticket links map to imported tickets and then pass through the same ownership check. Old direct-action scripts no longer run their former SQL or accept state-changing GET links. Public access to the uploads directory and support log files is denied by the Apache configuration. Previous attachment metadata is shown only on an authorised ticket; its download resolves the stored file within the uploads directory, checks ownership again and serves it as an attachment. If the old file is absent, the portal reports it as unavailable. No new attachments are accepted in this release. No manual SQL or changes to .env are required. Existing game data and world routing are retained. Use the usual extraction, build and recreate procedure without deleting database volumes. V0.7.8Original releaseBased on V0.7.7, retaining the V0.7.6 growth-test hotfix. Registration information now reads "Registered on 21.08.2026 at 14:24:52", using an explicit date rather than appending the generic "On/Today/Tomorrow" formatter. Other date displays are unchanged. Statistics opens at /?screen=stats inside the existing main-page layout. The legacy /stats.php entry point redirects to /?screen=stats. An old /stats.php?screen=home link redirects to /?screen=home; other supported main-page screens work similarly. Unsupported screen values fall back to stats. Main navigation links for Home, Rules, Team and Statistics use root-relative URLs, preventing the current script filename from becoming part of the destination. No database changes or manual SQL are required. Validation: source/link review, template structure and archive integrity checks. PHP and Docker execution are unavailable in the authoring environment; existing build gates remain enabled. V0.7.7Original releaseBased on V0.7.6 hotfix 1, including its corrected zero-point Rally Point growth test. The main-page and in-game player world selectors share a compact parchment panel, green world buttons, status text below each button, and a centred Close control. The current in-game world has a green non-link button and a Current world caption. Other joined, accessible worlds retain their existing authenticated login links. The in-game panel opens above Select World and is clamped within the viewport horizontally. Close, Escape and outside-click dismissal are retained. Resizing repositions an open panel. The main-page popup now fully contains two buttons and wraps additional worlds into rows; long names wrap instead of spilling outside. The selectors share a versioned stylesheet so every world receives the same appearance. World eligibility, memberships, bans, world switching, growth and moderation logic are unchanged. No database migration or manual SQL is needed. Validation performed: JavaScript syntax and isolated interaction checks for opening, closing, Escape, outside clicks, focus restoration and viewport clamping; template block checks; release diff and archive integrity checks. A browser render could not run because the local browser executable is unavailable. PHP/Docker checks could not run in this workspace; existing build checks remain in place. V0.7.6Original releaseHotfix 1: corrected the growth test to allow the zero-point Rally Point level-1 upgrade at the ceiling. A second case verifies that no positive-point upgrade fits after Rally Point is built. Gameplay files are unchanged from V0.7.6. The reported host build passed all earlier fixtures; the corrected growth fixture has not been executed in this authoring environment. Moderation > Review player now offers: Create one village at specified empty coordinates, using the selected world's starting building defaults. Academy and Statue start at zero; no troops are granted. Max buildings in up to 20 selected villages. Construction and demolition queues must be empty; troops, research and ownership remain unchanged. Resource production is settled at the old building levels first. Fill resources up to each selected village's current warehouse capacity. Destroy selected villages with the existing exact-selection preview and typed confirmation, while player access stays open. Destruction still refuses active movements, merchants, offers, queues, events, outside/supporting troops and noble-origin dependencies. Finish or cancel those dependencies first. It does not silently delete other players' armies or outstanding trades. New operations record reasons, affected IDs and snapshots. Creation does not reuse deleted village IDs. Points, village counts, player and tribe rankings, population use and map refresh flags are updated as appropriate. There is no one-click Undo. World Settings includes an enable switch, a point ceiling (initially 9,000) and minutes between upgrades (initially 0.5, matching the previous configured interval). These are separate per world and can be edited after players join. Abandoned, barbarian and unowned bonus villages can gain one eligible building level per interval. Ownership, prerequisites, maximum building levels and the resulting point total are checked. An upgrade never crosses the ceiling. Some ceilings cannot be reached exactly; the village stops when no legal upgrade fits. Lowering the ceiling pauses growth above it rather than demolishing ordinary buildings. Raising it allows growth to continue. Player-owned bonus villages are excluded. Academy and Statue never grow. Existing unowned villages have these two buildings removed on the next scheduler tick, even when ordinary growth is disabled. Other buildings and stationed troops are retained. Newly generated unowned villages also start without Academy or Statue. Captured villages stop automatic growth once they belong to a player. The previous growth query omitted l_grow even though the function used it. This is corrected, and point checks use the actual building levels rather than stale cached totals. Growth settles resources before changing production levels. Web game requests and scheduler event ticks now share a per-world database advisory lock. Event workers release it before sleeping; they do not hold it for the full daemon minute. Village tools use the same lock, so players need not be logged out and world access need not be closed. Separate worlds use separate locks. Requests may wait briefly during another action; a timeout refuses the request instead of proceeding without a lock. The legacy world tables are MyISAM. New village tools journal their planned changes in the global tw_village_tools table; destruction retains tw_village_deletions and its table locks. An interrupted prepared operation temporarily blocks game actions and event processing for that world until an administrator resumes it from the affected player's moderation profile. This prevents play against partially changed data. Snapshot records are not a database backup or rollback transaction. The recovery buttons replay the stored operation, not a new creation. V0.7.5Original releaseBased on V0.7.4. The scheduler and timer fix, moderation, shared stylesheet cache key and earlier gameplay changes are retained. Every administration section now has the same bounded content column, consistent table sizing and form widths. The left Main Functions menu remains in place. A shared Select World dialog is available on every authenticated admin page, with world buttons, current-world indication and player-access status. Switching preserves the section but drops player IDs, village selections and action parameters. Global pages are identified as global. The existing self-ban safeguard remains. The moderation profile now explains why the signed-in player's Ban option is hidden. Online status does not stop another player from being banned. The owner can moderate that account from a separate administrator browser session without a player login. 1. Close player access for that world in World Settings. Background events continue. 2. Open Moderation and review the player. 3. Select up to 20 owned villages, provide a reason and choose Review selected villages. 4. Review the exact village names, IDs, coordinates and points. Type the displayed DESTROY N VILLAGES phrase and confirm. 5. Reopen the world after successful completion. This removes the selected villages from the map, including their home troops and stored resources. It does not convert them to barbarian villages or refund resources. The player's other villages remain intact. A player losing their last village follows the game's normal village-creation rules on next login. Deletion is refused while movements, merchants, market offers, construction, demolition, recruitment, research, pending events or non-home stationed troops reference the selection. Surviving conquered villages cannot be left referring to a deleted noble-origin village. These conditions are checked again immediately before deletion. Village ownership and identity must still match the reviewed selection. The operation waits for the current daemon batch, then locks world tables for final checks and deletion while the world is closed. Player/tribe points, village counts, ranks and relevant surviving conquest counters are recalculated. Historical reports and messages are retained; old links to deleted villages no longer open a live village. The global database automatically receives tw_village_deletions, containing snapshots of removed villages and their troop-placement rows, reason, administrator, request ID and prepared/complete status. Moderation history records preparation and completion. These snapshots are recovery data, not a one-click Undo feature. The legacy world tables use MyISAM, so this is not claimed to be a rollback transaction. If a process stops mid-operation, keep the world closed and use Review and finish this operation on the player's moderation profile. Completion is retryable with the same operation ID. World Settings refuses to reopen a world with a prepared operation. Unexpected schema/database errors may need administrator investigation before recovery can finish. Do not manually reset/delete a world while a prepared operation is unresolved. Forms bind confirmation to the world, player, exact village IDs and identity fingerprint, have expiring signed tokens, and require the typed phrase. Selection changes require a new review. V0.7.4Original releaseThe event daemon already processes each world for approximately 59 seconds. The scheduler then slept another 60 seconds, leaving a minute-long gap with no event processing. Reduce this additional sleep to a one-second restart backoff. Existing per-world daemon locks and parallel processing remain intact. Overdue Town Hall construction/demolition queues show “Completing…” instead of a negative duration and refresh every three seconds until the event worker completes the job. Refresh uses a clean viewing URL, never a build/cancel action URL. Refresh pauses in a hidden tab or after input has been edited to preserve unsaved form data. This does not alter building durations, world speed or stored queue timestamps. The scheduler improvement also reduces the processing gap for other scheduled events. No database migration is needed. Shell syntax and JavaScript syntax/behaviour checks passed locally; archive contents verified. Live Docker/PHP/database validation was unavailable. A worker that fails to run still requires its logs to be inspected; the UI does not mark an unprocessed build complete. V0.7.3Original releaseBased on V0.7.2. All worlds now load the same canonical administration stylesheet with a SHA-256 content cache key. This applies to the administration login, administration pages and world-ban notice. The actual CSS and all moderation/gameplay behaviour are unchanged. The content key changes whenever admin.css changes, avoiding stale per-world cached styling after an upgrade. No database migration or manual CSS edit is required. Validation: verified the CSS is byte-identical to V0.7.2, both admin templates receive the shared URL, and the notice uses the same helper. Archive files checked against their SHA-256 manifest. PHP/Docker/browser runtime testing was unavailable in this workspace. V0.7.2Original releaseSelect the world using the world links at the top of Moderation. Search players by name or ID; filter by active bans or activity within five minutes. Review points, rank, tribe, account registration, last activity and owned villages. Ban for one hour, 24 hours, seven days, 30 days, or permanently. Replacing a ban explicitly creates a new recorded decision. Lift active bans with a reason. Add private staff notes independently of bans. Browse paginated player and world audit history. Records retain the player name, administrator login name, reason, action and timestamps in UTC. Ban reasons and expiry are shown to the player, alongside Support/Appeal and world selection links. Private notes and unban reasons are not shown to players. Signed-in players are checked on their next authenticated world request. Vacation replacement also checks the replacement player's world restriction. Timed bans expire automatically when access is checked. There is no dependence on a scheduled expiry task. Past decisions stay in the audit history. World bans do not prevent access to other worlds or Support. Production, movements, incoming attacks and recruitment timers are not paused. The admin's signed-in global player account cannot be banned from the same browser session. Administration still uses the existing shared administrator login; the history records that login, not separate staff identities. An InnoDB append-only moderation ledger is automatically created in the global database. Records are scoped by both world ID and world database. Existing legacy world bans remain effective until lifted. Once a decision exists, the ledger determines access; do not edit the old users.banned field to change a moderated player's status. Old administration ban routes redirect to Moderation. Ban/unban decisions do not alter troop counts, villages, resources, gameplay timers or the global account ban flag. This release does not reconcile the earlier stale troop-total issue. Forms use signed, world/player-bound tokens with a 30-minute expiry, explicit confirmation, single-use request IDs and revision checks. Per-player locks serialize decisions. The audit event itself is the authoritative state change, so no separate ban flag can be committed without its matching history record. V0.7.1Original releaseBased on V0.7.0. Adds Disband beside Recruit on unified recruitment, Barracks, Stable and Workshop. Mass recruitment remains available. Disband accepts specific quantities of the selected village's own completed troops currently at home. Individual building screens accept only that building's units. Paladins and noblemen remain excluded. No support from another village, travelling troops, away support or queued recruitment is removed. Disbanding is immediate and permanent, with no resource refund. The home troop count, stored total and used farm population decrease together in one guarded multi-table UPDATE. The server verifies the authenticated village owner, security key, confirmation, allowed units, integer quantities and sufficient counters/population. Invalid quantities or insufficient counts cause no update. Refreshing after success does not repeat the action. This feature does not reconcile pre-existing stale troop or population totals. Validation: local template structure and source route checks; archive hashes. Docker retains earlier checks and adds PHP tests for quantity validation, guarded query accounting, and Smarty rendering of all four Disband screens. These are fixture/static tests, not a live database integration test. PHP/Docker were unavailable locally; build and live gameplay tests must run on the host. Upgrade over the existing installation, preserving .env and database volumes. Existing w1/world routes are retained. No database migration required. V0.7.0Original releaseBased on V0.6.9. Main-page navigation now labels the Team page as Team. Restored /stats.php, which renders Statistics inside the existing main-page layout. ?screen=stats works too. Live per-world aggregates: registered players, active players within five minutes, tribes, player-owned villages, barbarian/unowned villages, and total player-village points. World access status is shown. Global account totals and activity are separate from world membership counts. No player emails, IP addresses, or private account details are added to Statistics. Statistics work for visitors and signed-in players, with an empty state when there are no worlds. Local verification covers routes, template structure, shell/Compose syntax and archive hashes. The Docker build retains existing checks and adds statistics query, formatting, Smarty rendering and PHP syntax checks. PHP/Docker were unavailable in the editing workspace; live database/browser verification remains for the host. Upgrade by extracting over the installation with --strip-components=1, building app/scheduler and recreating services. Existing .env, world settings and routes are preserved. No new database migration. V0.6.9Original releaseBased on V0.6.8. Friends now has the Settings heading above the shared sidebar and Friends content, matching the other Settings pages. The in-game footer replaces Forum with Discord, using the community URL saved in Administration → Global Info. If no URL is configured, the link is hidden, matching the main page. Footer Help opens /zapping_support/, the existing support directory, from any world route. Existing world routes and .env are preserved. No database migration. Template structure, link targets and archive hashes checked locally. The changed game PHP entry point is included in the existing Docker syntax gate. PHP/Docker and live browser checks were unavailable locally. V0.6.8Original releaseBased on V0.6.7. Reorders the administration Main Functions menu and applies the requested capitalization: 1. Home 2. Global Info 3. Mass Mail 4. World Settings 5. Starting Building Levels 6. Barbarian Villages 7. Bonus Villages 8. Reset World 9. Logs 10. Logout Menu destinations are unchanged. Verified exact order and labels, and compared against V0.6.7 to confirm only the menu and release version labels changed. No database migration. Existing world routes, including w1, remain stored in the database. Preserve .env and database volumes during upgrade. V0.6.7Original releaseBased on V0.6.6. Support branding only, plus release version labels. Replaced 15 legacy publisher header images across player/admin support pages with TribalWarsClone text. Removed both Tribal Wars game-logo placements (support entry and admin user-management pages). Replaced all 12 existing support footers with exactly © 2026 TribalWarsClone. Updated the support name, page title and legacy footer configuration. Local source scans and shell syntax checks passed. All changed support PHP files are included in the existing Docker PHP syntax gate. PHP/Docker and live browser validation were unavailable locally. Existing game functionality is retained from V0.6.6. Extract over the installation with --strip-components=1, build app/scheduler and recreate services. The archive contains no .env and does not delete database volumes. V0.6.6Original releaseBased on V0.6.5. Select World in the fixed bottom bar opens a parchment popup listing the player's joined, open worlds. The current world is marked. Closed, future, ended, unjoined and banned worlds are excluded. Closing registration does not hide a world from existing members. Switching uses the existing authenticated main-account login route. A player whose main account session has expired may need to log in again; no new session bypass was added. The popup closes with its close button, Escape, another click on Select World, or a click outside it. Friends sits next to Forum, Help and Profile. The in-game title is lowered by 14 pixels. The normal night village view is brightened by 16%, keeping the night artwork. Day artwork is unchanged. The Settings dropdown, Settings sidebar and Friends sidebar share the same menu: Profile, My Account, Change Password, Holiday, Friends, Logged In. Upgrade normally over V0.6.5, preserving .env and database volumes. No database migration is required. Local validation: JavaScript parsing and popup event tests; shell syntax, Compose structure, shared menu includes, and archive hash verification. New PHP build checks cover membership filtering, menu order, Smarty rendering and PHP syntax. PHP/Docker/browser execution was unavailable locally; the PHP checks run during the Docker build, and live switching requires testing on the host. V0.6.5Original releaseBased on V0.6.4. Administration sidebar: World Settings contains world selection, configuration, creation and deletion. Global Info contains the community link, team and source credits. Home retains announcements and its existing login controls. Each settings form saves and redirects to its own page. Global Info remains shared across worlds. Player world selection uses direct links and displays Join world, Enter world, Registration closed, World closed, Not started yet, World ended, or Account banned. Closed worlds explain why access is unavailable instead of silently redirecting home. Corrected the swapped session ID/security-key columns when entering a world for the first time. World registration uses a POST with the existing session security key. Joining a second world keeps the first world's membership and progress. To open World 2, select it under World Settings, enable Player access open and Allow new players to register, and save. Scheduled start/end dates still apply. New worlds deliberately remain closed until opened by the host; this upgrade does not change those settings. Upgrade by extracting over the existing installation with --strip-components=1, building app/scheduler and recreating services. The archive does not contain .env and does not remove database volumes. Verification: local shell/Compose/template-structure and archive integrity checks. Docker build retains prior PHP tests and adds world access-state, menu-route, session-column and actual Smarty rendering checks. PHP/Docker were unavailable in the editing environment, so these PHP checks and live multi-world login still require execution on the host. No live database test is claimed. V0.6.4Original releaseBuilt forward from V0.6.3. This release adds world administration at Administration → Home. Select a world using the links above the settings form. Its URL selects the database used by the other world administration tools. Main-page/community/team settings remain global. Settings include name, player access, registration access, start/end dates, game speed, independent resource multiplier, movement multiplier, merchant speed, loyalty recovery/damage, protection, cancellation windows, starting village count, tribe controls, morale, scouts, gold coin costs, and existing unit/building system switches. Registration shows the effective settings from the same stored configuration. Game speed multiplies production, movement, loyalty recovery, and build/research/recruitment speed. The resource multiplier additionally scales production; the movement multiplier additionally scales unit and merchant travel. Existing travel and queue completion timestamps are retained. Resource balances and loyalty accrue at the old rate before rate changes. Scheduler configuration refreshes each iteration. Academy/farm systems, archer/church/paladin options, and capacity curves are locked after players join. These switches expose the legacy engine's existing behavior; this release does not add new combat or church mechanics. Capacity values scale the existing level curves, with zero retaining defaults. Closing player access blocks game access but does not pause existing timers. Closing registration alone keeps existing players able to log in. Dates use the configured server time zone. Changes persist in the main database across rebuilds. Creation copies the original world's table structures and saved settings, including schema defaults for starting buildings. It does not copy player data. Each new world receives its own database and URL and starts closed. Configure it, then enable player access and registration. World URLs share the current release code. Routes are reconstructed from the world registry when containers start. Each world has its own scheduler process. Rebuilding does not remove worlds or their settings. Deletion permanently drops a managed world's database and removes its registry entry. It requires closing the world first and typing its exact name. The original world is protected because it supplies the code and source schema. A busy scheduler may require retrying deletion after a minute. Back up databases before deleting a world. The localization startup service grants the existing application account access to the restricted tw_world_ database namespace. Root credentials are used by that one-shot service, not passed to the application or scheduler. V0.6.3Original releaseBaseline: V0.6.2. Gameplay and existing selection/link styles are preserved. The dead Forum menu item is replaced by a configurable community link (default label Discord). A blank URL hides the item. Configure it under world administration > startpage > Main page and team. Only complete HTTP/HTTPS URLs without embedded credentials are accepted. The same form edits team members (one Name | Role per line), original source name, developer credit, and an optional source URL. Defaults credit Zapping Wars and Caique Portela (in-game: Felipe Medeiros), exactly as identified in the bundled app/include/config.php header. No original source URL has been assumed. The AI-assistance credit remains above the original-source attribution. Settings are shared across worlds in the main database's tw_homepage_settings table, created automatically if absent. The table is retained in the database volume across rebuilds. Public reads use the configured main database; world administration uses TW_MAIN_DATABASE (default pkmhunters_imp). Admin authentication remains required, and saves require POST with a token derived from the authenticated admin cookie. Editable text is HTML-escaped when displayed. Remove public sidebar Title and Rank and their unused ranks query. Lower the main-page wordmark by 16 pixels with increased top padding. Validation: include resolution, template nesting, sidebar removal, and byte comparisons against V0.6.2 passed. A PHP build test covers default settings, save/reload, main-database targeting, invalid URL rejection, team parsing, and escaped Team template rendering. PHP/Docker and live browser checks are unavailable in the authoring workspace and must run on the host. Upgrade: Then open /tribalwars/wereld1/admin/index.php?screen=startpage and save the community URL and team details. Verify the public Home and Team pages and verify settings remain after rebuilding. Existing .env is preserved. V0.6.2Original releaseBaseline: V0.6.1. Presentation changes only. Remove the black text/image selection declarations from all three game stylesheets. Apply browser/system Highlight and HighlightText selection colors across the game, landing/login, admin, forum, and support theme stylesheets. Image selection backgrounds are transparent. Hyperlinks use bold brown (#804000, matching Spearman) in normal, visited, hover, active, and focus states. Red/glowing link overrides are superseded. Resource-header anchors retain their existing URLs and counters, with the inherited text-color override removed. Resource warning spans retain their warning styling. Validation: all ten theme files checked for selection and link declarations, no original black selection rules remaining, and baseline byte comparisons limit changes to theme CSS, header styling, version markers, and release notes. No gameplay or database changes. Live browser rendering was not available in this workspace; hard-refresh after deployment to discard cached CSS. Upgrade: Press Ctrl+Shift+R after deployment. Check selected text/images and normal/visited/hovered links in the game, login, admin, forum, and support pages. The archive excludes .env and preserves earlier gameplay fixes. V0.6.1Original releaseBaseline: V0.6.0. Replace the hard-coded Research everything action with a configuration-driven bulk action. Premium is not required, consistent with the earlier request to remove the gate. The existing instant-completion behavior is retained and explained beside the button. Technologies are processed in configured order, completing affordable levels up to their configured maximum. Completed technologies, unmet building requirements, disabled technologies, and unaffordable research are skipped. Actual per-level costs are deducted cumulatively; resources cannot be spent twice within the batch. A current research order blocks the bulk action. Submission uses POST with the existing session security key. The server re-reads the village, checks ownership, and checks active research while holding MyISAM-compatible table locks; selected levels and costs are applied in one update. A successful action redirects back to the Smithy. Ordinary research and cancellation code are unchanged. Validation: source scope comparison, existing research/cancellation byte comparison, template block nesting, and request checks passed. Added PHP build fixtures cover low-level buildings, real costs, exact/partial resources, completed research, capacity, enabled/disabled archers, ownership, active research, and unlock behavior. PHP/Docker are unavailable here; executable fixture checks run during the host build. Live database/browser behavior still needs host verification. Upgrade: No database schema changes. The archive preserves .env. Test the button without premium, in a low-level village, with only enough resources for part of the available research, and while an individual research order is active. V0.5.8Original releaseBaseline: V0.5.7, including the format_time/format_date coin-test hotfix. Remove the extra outer table cell from market confirmation and use a readable 600px maximum table width within the existing game content area. Calculate arrival and return from numeric travel seconds; label the one-way duration Travel Time. Decode shipment hives data as wood;clay;iron instead of market-offer fields, including existing reports. Show all three quantities with resource icons. Generate subjects as Village (Player) supplied Village (Player). Normalize existing shipment subjects on display in both report lists and details using current village/player names; missing entities have English fallbacks. No database migration is required. Retain all previous build gates and the complete coin modifier repair. Add shipment/report fixture and template-render checks to the Docker build. Validation completed here: baseline byte comparisons limiting changes to market/report files, coin test repair, build wiring, and version markers; HTML structure checks; modifier dependency checks; shell syntax; archive manifest integrity. PHP/Docker are unavailable in the authoring workspace, so PHP fixture execution and live database/browser verification remain host-side checks. Tests use database fixtures, not a live world. V0.5.6Original releaseAcademy gold-coin minting update built directly from the approved V0.5.5 archive. The Gold Coins section now has a Quantity field, Mint, and Mint maximum. Requirements are clearly labeled per coin. Mint maximum calculates affordability again on submission using the current database balances, rather than trusting the displayed maximum. An unaffordable requested quantity is rejected without partially minting it. With the screenshot's 101,356 wood, 101,356 clay, and 372,009 iron, the maximum is 3 coins at 28,000 / 30,000 / 25,000 per coin. The batch costs 84,000 wood, 90,000 clay, and 75,000 iron, leaving 17,356 / 11,356 / 297,009 before further production. The server requires POST and a valid session request key, checks village ownership and Academy availability, locks the legacy MyISAM tables before reading balances, and updates resources, coins, the next-noble threshold, and gold-medal progress in one guarded database statement. Locks are released after success or validation failure. Successful requests redirect back to the Academy. The next-noble calculation handles batches spanning several thresholds. For example, 21 existing coins plus 24 newly minted coins gives 45 total and 10 until the next nobleman. Two adjacent fixes are necessary for this feature: the existing recruitment form now closes before the mint form, and resource refresh adds wood production to the wood balance instead of incorrectly starting from the clay balance. The same one-line resource fix applies to both legacy copies of that routine. The insufficient-iron wait calculation also uses the configured iron price instead of an undefined variable. V0.5.5Original releaseCommand display update built directly from V0.5.4. The V0.5.4 ranking fixes are retained. Both outgoing and incoming command details now show these fields in order: 1. Source 2. Attacker 3. Destination 4. Defender 5. Arrival 6. Arrival In Village links retain the full name, coordinates, and continent. Player links use the correct attacker and defender IDs. Ownerless destinations show “No player” without an invalid profile link. The attacker/defender identities refer to the original command participants, including when inspecting a returning command. Fixed the village-label cache shared by command listings: the first and every subsequent command now retain the complete label, such as TT (500|499) K45. The cache is keyed by the village actually displayed and escapes names once. Return journeys use their origin village; cancelled commands retain their original target label. This covers the village overview, Rally Point, combined command overview, and incoming destination labels. Also corrected the combined overview's home-village label and separate player-name cache. Existing command authorization and troop visibility are retained. Incoming opponents' unit counts and loot are not exposed. Own-command troop information and existing cancellation links remain available. Arrival countdowns on command details cannot become negative. V0.5.4Original releaseRanking repair release built directly from the approved V0.5.3 archive, SHA-256 d3c80b7b1cdbe55fc29b03f6eaa3860e286a1aa4567dccd8968749bf6884da4f. Ranking menus consistently show Battle Points (Player), Battle Points (Tribe), and Medals. Players, Tribes, Medals, and all six battle-point lists use shared pagination. Requested pages are honored; invalid pages use page 1 and excessive page numbers clamp to the last page. Links read <<< Up and Down >>>. Links only appear when another page exists and retain the village, ranking category, and battle tab. Medals no longer redirects to Players. Ranks are calculated from the current ordered scores, starting at 1 and continuing across pages. Equal scores use ascending IDs for stable, distinct positions. Zero scores receive a valid position too. Player ranking uses points, tribe ranking uses top-40 points, Medals uses total medal stages, and battle rankings use their selected attack/defense/total scores. Corrected both copies of the tribe battle-rank refresh: they now read tribe records instead of player records. Player and tribe battle-rank refreshes have deterministic tie ordering. Tribe battle-ranking names open tribe profiles. Medal names open the correct player profile using the player ID, not the medal record ID. Medal tribe names and achievement counts are populated correctly. Zero-village players and zero-member/zero-village tribes no longer cause division-by-zero averages in ranking views. V0.5.3Original releaseTranslation release built directly from the approved V0.5.2 archive (SHA-256 b8fd3ba53db0d48642869df80e6a172cb86840a033a4ed779764b5ca7d03ed30). V0.5.2 remains the behavioral baseline. The audit inventoried the entire baseline and reviewed PHP, Smarty templates, JavaScript, CSS, language catalogs, SQL seeds, generated messages, and image text. Corrections cover player pages, recruitment/help text, reports and medals, movement and event logs, chat, forums, administration modules, validation messages, tooltips, and source comments. Both player and administrator zapping_support pages are covered: ticket creation, replies, status labels, attachments, FAQ, authentication, validation, and language selection. English is the only selectable support language. Legacy PT/NL catalog paths remain compatible and contain English content. New events are generated in English. The existing startup migration is extended for legacy system log phrases and additional medal titles, including URL-encoded logs. Player-authored messages, tickets, profiles, names, and custom content are not automatically translated. Unused promotional screenshots containing German or Portuguese text were removed after checking source references. Their exact paths are listed in RETIRED-ASSETS.txt. No active map images or UI layouts were replaced. Internal database column names, routes, identifiers, proper names, license attributions, and foreign-language migration search patterns remain intact for compatibility. These are not untranslated display text. Renaming database keys would be a separate refactor. V0.5.2Original releaseCanonical source for the next release: this complete archive. Do not rebuild from an older workspace tree. Base: V0.5.1, SHA-256 c8101e099e022a8f5f94c55c0aa214e1ab5e6bf2a82dc0f367293089e5d2179e. Map source: V0.3.2, SHA-256 e49d40a560d01e3ecdeac049c46f2379835c51336cad80969de57bb97f626f55. Restored V0.3.2 map, minimap, popup, marker templates, handlers and renderer together. Retained their drag/pin/synchronization behavior. Escaped marker CSS for Smarty and made its HEX pattern template-safe. Fixed the shared recruitment function returning a string rather than an associative array. Individual buildings now receive configured units. Fixed remaining generated Paladin SELECT lists and the Academy owner-ID lookup. Preserved mass recruitment. Restricted the individual recruiter cancellation branch to cancellation requests. Added Friends to the Settings dropdown and Settings navigation to the Friends page. Replaced the legacy image headers with TribalWarsClone text. Credited Atxsu / Ogky as owner, developer and staff. Updated the main footers. Styled the separate administration login; preserved its existing authentication endpoint and fields. Translated report generation and added migration of old report titles. Added missing Paladin language entries, configured item names/effects, corrected inventory links, and bounded the progress display. Translated additional game and administration labels. Removed language caches and replaced the size-only cache check with direct English parsing. Restored the marked_ally migration required by the V0.3.2 map. |
| Page loaded in 3ms | Server Time: 3:00:33 | 05/11/2026 (Europe/Dublin) |
| © 2026 Influxing - TribalWarsClone v2.0.0.4 |
|---|