Build 20260930-242000: Correct Titanium pet command wire IDs (attack is 7, not dismiss ID 2). Unknown commands no longer silently send follow. Pet status uses server ownership, health, buffs and charm-release/death/zone cleanup, with real window commands and all thirty reported effects reachable. Raid rosters retain ungrouped members, support full pagination, and display leader, lock, member note and MOTD state. Populated live pet/raid behavior and original side-by-side comparisons remain unverified. Full client parity is unfinished.

Previous release notes:
Build 20260930-241000: Guild rosters now distinguish valid empty responses from malformed packets; member presence comes from the server zone update, not a last-login timestamp guess. The window separates rank and zone, paginates the full roster and selects public notes without opening an item inspector. Live guild membership changes, original side-by-side behavior and guild administration remain unverified. Full client parity is unfinished.

Previous release notes:
Build 20260930-240000: Tracking uses real Titanium server lists and entity IDs, not sample names. Missing/dead targets cannot be selected; lists reset on zoning. Track sends the selected ID and starts Titanium's client-side direction messages, with original angular buckets, two-second cadence and six-minute timeout. Original filter/sort controls and original-client live direction comparisons remain open. Full client parity remains unfinished.

Previous release notes:
Build 20260930-239000: original horizontal sliding doors and parameter-height vertical gates. World-space travel follows original type/heading/parameter rules; visible meshes, picking and authored collision move together. Full client parity remains unfinished.

Previous release notes:
Build 20260930-238000: queued spell, item and discipline casts cancel pending camp/logout. Your own server BeginCast also cancels camp before the logout tick; other casters do not. Camping is blocked during active casting or learning. Cast success, mana, charges and cooldowns remain server-owned. Full client parity remains unfinished.

Previous release notes:
Build 20260930-237000: source-derived fixed-height vertical gate motion. Opening9 units/sec, closing5 units/sec, original8/10/14-unit travel and20-second return. Rendered geometry, picking and collision checked. Broader lifts, live original-client gate comparison and whole-client parity remain open.

Previous release notes:
KARTONATH NATIVE RUST CLIENT — LINUX X86-64 ALPHA
Build 20260930-236000 — combat buttons, hotkeys and tome protection

Alt+C (or /combatabilities) now toggles the eight-button Combat Abilities
window. Click S to open learned Combat Skills. Hotkey creates a movable
discipline button; place it in the combat window or an ordinary hotbar.
Assignments are saved separately for each character. Drag to move/swap;
right-click a combat slot to select or clear. Incompatible swaps preserve
both buttons. Old settings gain eight empty slots without resetting anything.

Buttons show actual names, artwork and server reuse. A saved but unlearned
ability remains visibly unlearned and cannot be cast. No hotkey grants skills,
deducts endurance, or fabricates success. Shared casting/timer support from
235000 remains in place.

Skill tomes are no longer sent through spellbook scribing. They remain
untouched with guildmaster hand-in guidance from original Titanium help.
The existing NPC hand-in path and server discipline update own learning.
Actual tome hand-in and successful live discipline use remain unverified.
Original list columns, window movement/settings and broader parity are open.

Patch base: unmodified Linux 20260930-235000. Close the game and run the
patch without sudo. Settings/assets remain intact; older/modified versions
need the full download in a new folder. No updater/server/era changes.

Previous release notes (historical):

KARTONATH NATIVE RUST CLIENT — LINUX X86-64 ALPHA
Build 20260930-235000 — learned disciplines and server reuse

Actions > Combat > Combat abilities (or /combatabilities) now shows your
server-supplied learned disciplines. Use a row or /discipline <name or spell ID>.
Names resolve only against learned abilities; ambiguous prefixes are rejected.
The full 100-slot profile/update list is preserved. Server timers0..19 count
down in seconds; a server reset clears them. Same-character zoning retains
known deadlines, while a fresh login clears them.

Requests use Titanium casting slot10 and the full invalid inventory index,
distinct from item clicks. The server owns endurance, actual casting, effects
and reuse. Unknown spell artwork remains visible and actionable by real ID.
This does not claim live warrior/monk acceptance or original window parity.
Tome learning, dedicated discipline hotkeys, full original list columns and
window behavior remain open. Other client layers are still incomplete.

Patch base: unmodified Linux 20260930-234000. Close the game and run the
patch installer without sudo. Settings/assets are preserved. Use a fresh
full download for older/modified installations. No server/updater/era changes.

Previous release notes (historical):

KARTONATH NATIVE RUST CLIENT — LINUX X86-64 ALPHA
Build 20260930-234000 — separate active combat-effect display

Titanium slot 37 now appears in a separate Combat Ability panel, not in the
song bar. The original 44px icon and 40px decal are retained. Icon zero is valid;
missing artwork shows a named, removable placeholder. Right-click sends the
existing OP_Buff request using slot 37; only the server can remove the effect.
Zero duration does not cause a local fade. No active discipline is fabricated
from profile data or shown when no server effect is present.

Original UI/server mapping, slot boundaries, four-resolution hit testing,
foreground-window occlusion, unknown art and rendered pixels are checked.
Synthetic UI fixtures are explicitly NOT live warrior/monk acceptance.
Discipline learning, selection, casting, timers and original live comparison
are separate outstanding work. This does not claim full Titanium parity.

Patch base: unmodified Linux 20260930-233000. Close the game, extract the
controls patch and run apply-update.sh against the existing installation.
Do not use sudo. Assets and settings are preserved. Older or modified builds
must use the full download in a new folder. No updater/server/era-gate changes.

Retained previous release notes:

KARTONATH NATIVE RUST CLIENT — LINUX X86-64 ALPHA
Build 20260930-233000 — original zone-specific transport models

Six original actor/component links now select their archive-local models:
Firiona and Timorous ship -> ELS (animated Elven ship)
Halas launch -> HFERRY
Erudin launch -> ERLAUNCH
Cabilis East/West launchm -> CBGOND101

The full model definitions, skeleton/animation buffers and textures match new
isolated exports from the installed original Titanium archives. Loader and pose
regressions pass. Native source/export renders are compared separately from
live original-client parity; boat route, boarding and collision acceptance
remain open. Static and EQG source-radius interpretation is still unresolved.

No assets are overwritten. The small controls patch requires unmodified Linux
20260930-232000; older installations should use the full download in a NEW
folder. Close the game, extract the patch and run its apply-update.sh against
the existing installation. Do not use sudo. Settings are preserved.

Windows remains at 20260930-231000. No expansion-gate, database, automatic
updater or production spectator change. Full Titanium parity is unfinished.

Retained previous release notes:

KARTONATH NATIVE RUST CLIENT — LINUX X86-64 ALPHA
Build 20260930-232000 — ordinary water controls and delivery

Source swimming and guarded breath handling now ship enabled, without QA-only
environment switches. Water entry preserves actual sideways/backward/coasting
velocity; dry exit transfers that velocity to the ground controller. The active
10ms clock now also drives render interpolation, including dry-ground frames.
Source North Qeynos water fog can use the shipped original Human actor bounds.

Ordinary stamina, food/drink, equipment and accepted breath buffs feed the air
clock. Missing data, inverse/instrument-scaled breath buffs and illusions suspend
damage explicitly. The server still owns HP. No local health editing is used.
The fog path remains limited to the measured, unscaled Human male, normal-vision
North Qeynos case without active buffs or worn effects. Other observers are NOT
claimed verified. Flight, lava, levitation and spell-speed parity remain open.

Diagnostic rollback only: set EQ_CLASSIC_SWIM=0, EQ_CLASSIC_BREATH=0 or
EQ_CLASSIC_WATER_FOG=0 before launching. Unset means enabled;1 also enables.
No updater, server database, expansion gate or production spectator change.
Full Titanium parity is still unfinished. See the published verification record.

Retained previous release notes:

KARTONATH NATIVE RUST CLIENT — LINUX X86-64 ALPHA
Build 20260930-231000 — original-source dragon lighting bounds

21 packaged dragon models now have verified original skeleton radii.
Their geometry was compared against all 21 candidate original archives.
An unrelated actor failure had incorrectly hidden a complete dragon export.
The source catalog now covers1951 models;186 remain unresolved.
All21 dragons load and840 sampled poses are finite. Prior1930 entries remain
unchanged. The additional actor-bounds-v3.json does not overwrite older assets.
This is source/geometry verification, not a live dragon encounter comparison.
No whole-client parity claim is made.

Retained from 20260930-230000 — long-buff and song windows

All 25 long-buff and 12 song slots now display live server buff state.
NewIcon0 is valid. Missing art displays a clickable question-mark placeholder.
Hover shows the spell name. Right-click requests removal using the actual
server slot and waits for the server to confirm the fade.
Slot 37 belongs to disciplines and is not presented as a song.
Synthetic GPU checks cover all 37 slots at four resolutions, icon pixels,
empty/unknown slots, covered clicks and outgoing packet offsets.
These checks are not a claim of a live bard group or whole-client parity.

Retained from 20260930-220000 — active-buff vision

Buffs now contribute source-table infravision/ultravision to player lighting.
Original effect type, inverse cancellation and bard modifier bytes are retained.
Normal buffs no longer suspend the source lighting path merely for being active.
All63 original vision entries use the accepted formula100/base1/max0 path.
Unknown tables, formulas or relevant metadata retain explicit fallback.
Worn effects (including ammo vision), illusions and other unaccepted observers
remain gated. Unit/table/GPU tests pass; live vision-buff comparison is pending.
No full lighting or whole-client parity claim is made.

Retained from 20260930-210000 — single-pass actor lighting uploads

The final per-actor lighting is now selected and uploaded once with each pose
or crowd update, instead of uploading fallback lighting and replacing it.
Nine GPU scenarios match the preceding two-stage API pixel-for-pixel, including
reordered actors, default reset, moving lights, empty crowds and single actors.
Invalid colors/counts leave the previous pose and GPU state untouched.
The software-rendered QA host is still slow; no hardware FPS gain is claimed.
Full Titanium parity remains unfinished. This update changes no assets.

Retained from 20260930-200000 — source-matched bounds and innate vision

New in this update:
  Adds exact source bounds for48 more packaged model paths, including skeletons,
  wolves and Iksar models. Geometry bytes were matched against isolated original
  archive exports.1,930 paths are now resolved;207 remain unresolved.
  The client now reads Titanium's25 innate skill fields from the server profile.
  Innate infravision and ultravision use the original RGB floors and precedence;
  zero means available,255 means unavailable. Vision is not guessed from race.
  Buffs, worn effects, illusions, deaths and the spectator path still require
  additional source/runtime acceptance. Human normal vision is live-compared;
  infra/ultra paths have source-derived arithmetic and offset regression tests,
  not yet a complete live multi-race comparison.


New lighting work:
  Original sky colors and separate world minimum-light contribution now feed
  the renderer. Actors receive their own sampled brightness and original CPU
  byte quantization, not a single observing-player brightness for the crowd.
  Source skeleton bounds cover 1,930 packaged model paths; 207 are unresolved.
  The runtime source path uses server-profile innate vision for an unbuffed
  non-illusion player without worn effects. Unsupported states and the spectator
  retain the previous lighting path. Unknown actor bounds use a fallback.
  GPU tests cover different actors in one draw, reordering, stale-value reset,
  and world special ambient. Two initialized original actors match the terrain
  brightness probe. Normal North Qeynos login/rendering/camp were checked.
  This is not full lighting parity: vision/buff/equipment branches, exact light
  update cadence, remaining bounds, materials and broader acceptance are open.


Camera views:
  F9 now cycles the original six ordinary views: first person, overhead,
  close rear, two saved fixed-angle views and trailing view. F9 after wheel
  chase enters overhead. Custom-view mouse movement rotates the camera
  independently of the character; pitch changes disable automatic look-at.
  Custom views persist through settings saves. Terrain and doors use the
  original-style one-unit swept camera trace. The broadcast rig is unchanged.
  All six views were captured in both clients in North Qeynos. Four static
  preset cameras also have coordinate regression tests. This is not complete
  camera acceptance: exact wheel/keyboard zoom, mounts, input sensitivities
  and a broader collision/zone matrix remain open.

Retained recent repairs:
  Original shared-animation donor mappings and zone-local donors restore
  movement for additional NPC models, retaining rig compatibility checks.
  Ambience follows original 04:00/18:00 normalized audio boundaries and
  original intermittent cooldown/random delays. Linux sound names are
  case-insensitive; zone changes stop swimming/underwater beds.
  Region audio, spatial/fade behavior, music and audible hardware acceptance
  remain open. Lighting/material differences are visible and not marked done.

Earlier original era-zone and character assets:

New asset coverage:
  Adds 20 previously unbundled original player zones, their terrain, BSP,
  textures, primary/supplemental objects, characters and original imports.
  Adds 66 character imports/actor aliases/donors with archive-local dependencies.
  Iceclad boats now use the original actor-to-mesh names, not guessed models.
  All mapped requirements in this 20-zone database inventory have base models;
  248 selected models load and 21,332 animation pose samples remain finite.
  Original executable mappings restore shared animations for kobolds, cold
  spectres and prismatic dragons; the existing rig compatibility guard remains.
  Race 508 (eight database references) has no Titanium mapping and remains open.
  Startup crowd models now use the same source-scoped resolver as runtime.
  Zero-radius original lights no longer discard an entire zone's light catalog:
  Thurgadin retains 481 active lights and Skyshrine retains 1,512.
  The sky catalog covers 121 packaged zones. Duplicate/invalid catalog
  additions are rejected instead of replacing existing definitions.
  These are asset/load checks and rendered previews, not full zone parity.
  Expansion access, NPC logic and the era database are unchanged.

Build storage:
  Linux/Windows bundle staging and full extraction require the data drive;
  packaging refuses OS-drive output paths. This does not relocate player installs.

Zone skies:
  Original sky settings and dependency textures cover all 121 packaged zones.
  Steamfont and other covered zones use their original day/night and rain
  color tracks, starfield and horizon instead of a flat server-fog background.
  The server sky-enable byte and original sky-resource name are respected;
  outdoor sky does not persist while the next zone header is pending.
  Original time types and fixed zone clocks drive sky orientation/colors.
  This does not complete clouds, sun/moon, scene lighting or every era's zones.

World objects:
  Adds 384 original object models and their texture/buffer dependencies,
  covering 2,564 previously absent database object placements. Original
  supplemental and Global_obj namespaces are loaded without mixing textures.
  Types 100–102 and 105–107 use the original rotating-object speed/ramp rules.
  Negative inclines are decoded as signed angles. Steamfont windmill motion
  is compared with the original Titanium executable and the live server.
  172 additional database object references remain unresolved; other motion
  types, animations and broader zone acceptance are not declared complete.

Banking:
  Right-click a nearby banker. Deposit or withdraw copper, silver, gold and
  platinum separately using 1/10/100/All. Pocket and bank balances are shown.
  Transfers require sufficient funds and proximity; denominations do not convert.
  Right-click a bank bag to open its contents. Inventory opens carried slots
  while the bank container remains accessible. Click items and destinations
  to move them. Bank containers close when you move out of banker range.
  Shared-bank controls and original coin-cursor/conversion gestures remain open.

Player trading:
  Incoming trades open automatically when available. Both sides show real
  items, stack counts and money. Offer changes clear both acceptances.
  Inventory opens your bags; the Trade button returns to the active exchange.
  Right-click either side's item to inspect. Cancel returns the entire offer
  through server inventory/money packets. NO DROP items cannot enter player
  offers. Coin buttons add exact denominations without converting your money.
  Inventory and equipped stackable items now display their stack counts.
  Both transfer and cancellation paths were checked with isolated characters;
  container contents, splitting and concurrent disconnect cases remain open.

Linked spell reuse:
  The client decodes the server's linked-reuse packet and applies the group's
  remaining time to its spell gems and linked hotbuttons. Ordinary mana updates
  do not clear a linked timer. Same-character zone transitions retain known
  group deadlines; starting a fresh login clears them. A zone-in profile seeds
  linked groups from its nonzero memorized-spell refresh values.
  This does not invent timers the server never sent. An unseen group with no
  profile refresh remains server-enforced. Broader class/discipline variants
  and shared-group spell combinations still need live acceptance.

Spell readiness:
  Successful memorization waits the original spell's recast time plus 1 second.
  Server-confirmed gem casts start spell reuse and shared recovery timers.
  Recovering gems and their hotbuttons are dimmed with seconds remaining.
  Clicking, Alt+number, /cast and linked hotbuttons share the readiness check.
  Bard songs skip shared recovery, as in Titanium, but retain spell reuse.
  Cancel/restart memorization preserves its timer; completion resets it.
  Warrior, Monk, Rogue and Berserker cannot open the spellbook. Low-level
  hybrids can open it before their first spell level.
  Queued gem casts reserve readiness for 10 seconds while awaiting the server.
  Server resource replies release failed-cast reservations; keepcasting retains
  the cast. Successful replies replace the reservation with actual recovery.
  The casting bar waits for server completion rather than expiring locally.
  Fizzles, missed notes and interruptions show distinct messages.
  Zone-in restores each gem's remaining server-supplied reuse milliseconds.
  Item/ability cooldowns, bard song variants and broader spell cases remain open.

Spellbook:
  Opening the book sits the character. Closing stands you back up only when
  the book caused you to sit; a character who was already sitting stays seated.
  Standing closes the book. Moving/disabled characters cannot open it.
  Opening chat or switching focus no longer cancels a learning operation.
  Ctrl+B opens the learned book. Right-click a spell, then right-click a
  destination to move/swap, including across pages. Escape cancels selection.
  Right-click a learned spell and press Delete to open a named confirmation.
  Keep spell/Escape cancels; Delete spell waits for the server to approve it.
  A deleted learned spell needs a new scroll to relearn. Memorized gems are
  separate: right-click a gem to forget it.
  Scroll on cursor + empty book slot scribes; learned spell + gem memorizes.
  16 slots per two-page spread, 25 spreads: the original 400-slot order.
  Spell icon indexing is corrected: Minor Healing shows the original red heart,
  not the neighboring shield. Icon zero is valid; missing sheets do not wrap.
  Memorizing uses original level/skill-dependent progress, not instant requests.
  Scribing advances the original 92-count gauge one eligible frame at a time.
  Escape, standing, movement, closing the book or losing the scroll interrupts
  before sending. Successful learning still waits for the server's reply.
  Occupied gems and duplicate memorized spells are rejected before sending.
  The low-level cleric timing is compared live with Titanium. Buffed/equipped
  bard timing and broader spell acceptance remain open.
  Edits are serialized. Lost replies lock further edits until reply/reconnect;
  a swap is never automatically retried because that could reverse it.
  Zoning/reconnect clears stale selections and requests.

Close camera:
  The local avatar is hidden when too close to the camera's near plane.
  This is a targeted fix, not completion of every original camera controller.

Extract into a new directory and run ./run-kartonath.sh.
For an unmodified 20260930-231000 installation, this patch updates the client
without downloading retained assets again. It verifies all existing assets
before installation. Close the game first; do not use sudo.

NEW PLAYER SYSTEMS
  Short right-click activates a click effect, opens a bag or reads a book.
  Hold right-click (0.5s) or Alt-click to inspect without activation.
  Hold left-click on an inventory slot for about 3 seconds, then place its link
  on the hotbar. The link follows that slot's current item, not a saved item ID.
  Escape/right-click cancels placement; normal short clicks still move items.
  Click casts use real Titanium item packets. Charges and successful casts are
  server-controlled. Move click-cast items out of bags; equip equip-only effects.
  Books and notes display server text with Previous/Next pages and Close/Escape.
  Item inspection no longer displays sample armor stats. Hold right-click or
  Alt-click gear, weapons or carried items to inspect the selected server item.
  General inventory and bag slots have Info buttons; scroll scribing and bag
  opening retain their existing right-click behavior.
  Right-click merchant listings or non-container bank items to inspect them.
  Right-click a bank container to open it. Close or Escape
  returns to the underlying window without moving an item or ending the shop.
  Details show base server values, not your buffed character totals. Unknown
  fields remain unavailable. Names alone never borrow another item's stats.
  Previous/Next pages keep long restrictions and effect descriptions readable.
  Specialized modifiers and broader click-effect acceptance remain separate work.
  Alt+M > Abilities has six configurable slots; Combat has four.
  Click an empty slot or right-click any ability slot to assign or clear it.
  /doability 1–6 uses Abilities; /doability 7–10 uses Combat.
  Drag an ability to a hotbutton to link that slot. Reassignment changes the
  linked button too. Assignments are saved per login/server/character.
  The chooser shows live server skill values, not eligibility or cooldown.
  Sixteen active skill requests are supported; other skills remain unfinished.
  Melee specials now send attack type 100; Round Kick and Tiger Claw IDs are
  corrected; Eagle Strike and the full Disarm request are implemented.
  1–9 and 0 activate the ten hotbuttons. Shift+number changes among ten pages.
  Click an empty button, or right-click any hotbutton, to assign an action,
  memorized spell slot or social. Spell hotbuttons follow the gem slot.
  Drag between hotbuttons to swap them. Hold for three seconds to pick one up
  and click its destination. Escape/right-click cancels without losing it.
  Alt+M opens Actions: use or drag actions and socials onto the hotbar.
  Right-click a social to edit its name and five command lines. Tab changes
  fields; Ctrl+Enter saves. Buttons/socials are stored per login/character.
  /pause 1–600 waits in tenths of a second without blocking movement/rendering.
  /pause 10, /loc executes /loc, then waits one second before the next line.
  /stopsocial cancels; zoning, death and disconnect cancel queued commands.
  /hotbutton Name /command creates a social on the cursor to place.
  /dosocial Name or /dosocial 1–120 runs a saved social.
  /dohotbutton 1–10 activates a button on the selected hotbar page.
  Chat now supports Left/Right, Home/End, Delete/Backspace, Shift selection,
  Ctrl+A and Up/Down history with restoration of the unfinished input line.

TITANIUM CONTROLS
  Arrows/numeric keypad move and turn. Ctrl+R toggles run/walk; NumLock autorun.
  Right mouse steers; both buttons move forward; right mouse + turn strafes.
  Wheel forward enters first person. F9 cycles six original camera views.
  Q attack, H hail, C consider, D duck, Ctrl+S sit, Space jump.
  Left click targets; right click opens merchant/corpse/NPC interaction.
  F1 self, F2–F6 party/pets, F7/F8 visible player/NPC, Tab self/previous target.
  I inventory, Ctrl+B spellbook, Alt+1–8 cast, Alt+O Options, F10 hide/show UI.
  Options > Controls offers an explicit optional WASD preset.

VERIFICATION AND LIMITATIONS
This is a tested gameplay-system update, NOT a finished AAA game or complete
Titanium replacement. Broader camera acceptance, movement modifiers/ceiling
cases, broader inventory and click-effect acceptance, skills and reuse UI, gameplay
windows, rendering/asset acceptance and hardware performance remain open.
Windows compilation is checked separately; this archive is Linux only.
The existing binary-only update channel is unchanged. Previous downloads remain
available. Keep your previous client folder as a fallback.

DEPENDENCIES
./install-linux-deps.sh chooses the correct ALSA package.
Ubuntu 24.04+: libasound2t64 libvulkan1 mesa-vulkan-drivers libxkbcommon-x11-0
Older Ubuntu/Debian: libasound2 libvulkan1 mesa-vulkan-drivers libxkbcommon-x11-0
Requires x86-64, glibc 2.30+, X11 or Wayland and a Vulkan-capable driver.
Game endpoint: 205.134.198.196:5998. The proxied website is not the UDP endpoint.
