# vim: set tw=75 ft=mail :

2001/04/17	1.06.00
 - added support for "metaexec.cfg", a commands file to be exec'd after
   loading the plugins, for plugin commands and cvars, since autoexec.cfg
   is parsed too early (before plugins loaded) and server.cfg is parsed too
   late (after ServerActivate).
 - better info in trace plugin's log messages for MessageBegin,
   WriteString, AlertMessage, RegUserMsg
 - to provide more manageable trace log output, throttled trace plugin to 1
   logmsg per second, by default (of course, this can cause log messages to
   be lost).  Added cvar "trace_unlimit" (0/1) to enable unlimited logging,
   as it did previously.
 - added centersay meta-utility functions (CENTER_SAY, CENTER_SAY_PARMS,
   CENTER_SAY_VARARGS).  Raised META_INTERFACE_VERSION from 5:3 to 5:4.
 - fixed crash when trying to load typical game DLLs (like standalone-bots)
   as metamod plugins.
 - fixed segfault on failed plugin attach; was dlclosing plugin
   prematurely.
 - in wdmisc, added a proof-of-concept for catching certain game events by
   doing string matching on all the log messages produced by the game.
   Ugly, to be sure, but interesting nonetheless.
 - added more entities for HL Paintball, and fixed the linux so name.
 - added "-Wno-unused" to CFLAGS when compiling sdk_util.o, to alleviate
   the complaints from #including all the extra SDK header files and class
   definitions.
 - removed GetEntityAPI routine from trace plugin, as it's unnecessary as a
   metamod plugin if already providing GetEntityAPI2.
 - in trace, moved gMetaFunctionTable declaration to plugin.cpp, so that
   meta_api.cpp can be a standard (plugin-independent) sourcefile used in
   any plugin.
 - updated the docs to include recent new features, as well as some better
   discussion of coding details.

2001/04/06	1.05.00
 - created utility callback functions, for use by plugins, to reduce code
   duplication and help simplify some things.  Currently, these consist of
   only some convenient logging functions (LOG_CONSOLE, LOG_MESSAGE,
   LOG_ERROR, LOG_DEVELOPER).
 - added "mutil_funcs_t" to Meta_Query, to pass the meta utility function
   table.  Increased META_INTERFACE_VERSION from 5:2 to 5:3.
 - made sure all exported DLL routines (ie routines that are accessed via
   dlsym) are both declared _and defined_ as 'extern "C"', so that the C++
   compiler enforces parameter type-matching, rather than considering
   routines with mis-matched arguments/types to be overloaded functions...
   Note that it's not sufficient to just be declared "C"; it has to defined
   this way as well, to make sure the C++ compiler matches it with the
   declaration.  Otherwise, again, it'll consider it an overloaded
   function, and allow it happily without complaint, and cause the
   subsequent dlsym to fail.
 - created and deployed C_DLLEXPORT macro for declaring/defining functions
   'extern "C" DLLEXPORT'.
 - added plugin 'wdmisc' as a basic example, and for my miscellaneous
   commands/cvars.
 - renamed "mm_stub" and "mm_trace" to "stub_mm" and "trace_mm" to make
   plugin name more apparent, and to be more consistent with adminmod_MM.
 - had to move plugin_info_t to its own header file, to avoid circular
   #include's between meta_api.h and mutil.h.
 - in dllapi.cpp and engineapi.cpp, pulled RETURN_API out of META_HANDLE
   macro, to make it easier to add code to middle of API routines.
 - renamed util_meta.h to support_meta.h, to avoid confusion with mutil.h
 - some code cleanup (better 80-column linebreaks).

2001/04/03	1.02.00
 - added support for Half-Life Paintball
 - added "*_mm" and "*_MM" to the list of suffixes to look for when loading
   plugins at console.
 - log errors when plugin tries to use MRES_SUPERCEDE in a _Post function
   (supercede is only relevant in a non-Post function; use OVERRIDE in a
   Post function).
 - mm_trace: added info to trace log for FindEntityInSphere
 - added osdep macro for strcasecmp, for compiling under windows
 - fixed a debug log message for GetEngineFunctions_Post
 - fixed a couple internal references to engine globals (gpGLobals)
 - renamed local SDK API routines to "mm_*" for easier debug breakpoints
 - altered debug levels for a couple API routines in api_info.cpp

2001/04/01	1.01.00
 - replaced use of FStrEQ in most places with !strcasecmp, so that case
   doesn't matter for things like console commands ("META LOAD" will now
   work in addition to "meta load") and paths (like "-game CSTRIKE"; and
   win32 filepaths are case-insignificant anyway).  Interestingly, the HL
   engine ignores case for console commands ("ADMIN_COMMAND" works), but
   cvars are only recognized with matching case ("ADMIN_DEBUG" does not
   work).  Confusing.
 - added "by " when printing author info, to make it a bit clearer
 - added a bit more operation info to metamod.html

2001/03/30	1.00.00
 - released as v1.0, for inclusion with release of Adminmod v2.50.
 - added $(VERSFILE) to Makefile and Config.mak, to better insure correct
   rebuild on version number changes
 - added "i486", "i586", and "i686" to "i386" in the list of prefixes to
   look for when loading plugins at console.
 - added "MDLL*" and "MNEW" macros in meta_api.h, to be more convenient for
   plugins to call GameDLL functions.
 - added missing "extern gamedll_funcs_t *gpGamedllFuncs" to meta_api.h
 - added handling of gpGamedllFuncs in stub, for example purposes.
 - fixed problems with running bots under metagame.ini:
 - moved instantiation of Plugins object to before meta_load_gamedll, so
   that if gamedll calls engine functions during GiveFnptrsToDll (like
   hpb_bot does), META_ENGINE_HANDLE won't crash from a null Plugins object
   pointer.
 - in GET_FUNC_TABLE_FROM_GAME, memset gamedll.funcs.struct_field, and then
   free/null it if the gamedll's GetFuncs call fails, to handle the
   situation where the gamedll provides GetNewDLLFunctions(), but doesn't
   have anything to return (like hpb_bot does, when the real gamedll
   doesn't provide GetNewDLLFunctions).
 - add handling of gpGamedllFuncs to mm_stub's Meta_Attach().

2001/03/27	1.0-rc5
 - fixed problem with crashing when a plugin failed to load (improper
   dereference of null 'info' structure; incomplete fix from rc2).
 - added a plugin status "badfile", for plugin files that appear to be
   invalid metamod plugins; this is to differentiate from "failed", which
   is a valid-looking plugin file (queried) but encountered a failure
   attaching/unloading/etc.
 - changed "-march=i686" optimization to "-march=i586", and moved this to
   only the optimized binaries, and not the debugging binaries.  As it
   turns out, i686 doesn't work on things like AMD K6-III cpus (I know, go
   figure :).
 - duplicated functionality of adminmod's "admin.ini", except with a file
   named "metagame.ini".  This will allow (at least partial) use with game
   DLLs that metamod doesn't support yet - "partial" because, although the
   game DLL will load, it may not work if it uses entities that metamod
   doesn't know about yet.  It will also allow use of standalone "bot"
   DLLs, which sit between metamod and the gamedll (much like metamod sits
   between the engine and the gamedll).
 - added console command "meta game" to show information about the loaded
   game DLL (to help troubleshoot issues with "metagame.ini").

2001/03/25	1.0-rc4
 - split linkfunc.cpp into linkent.h, linkgame.cpp, linkplug.cpp
 - split entity lists for mods into separate files, one for each mod; these
   are used to build linkgame.cpp
 - metamod/mm_trace version info should indicate debugging/optimized compile
 - added entity support for Judgement DM
 - added "-fno-rtti" to mm_trace gcc cflags, to address problem of
   unresolved CSaveRestoreBuffer symbols using older versions of gcc
 - lowered debug levels in GetEntityAPI, GetNewDLLFunctions, etc to enable
   "+developer" messages (6 -> 3).
 - removed "-Werror" from Makefile's default cflags; should only be used
   on devl system with edited SDK

2001/03/18	1.0-rc3
 - central Makefile can now build optimzed as well as debugging targets;
   default to compile is debugging; default in 'dlls' dir is optimized
 - toplevel Makefile builds release tgz/zip files.  TGZ file includes only
   linux .so objects, and text files in unix-LF format.  ZIP file includes
   only win32 .dll objects, and text files in dos-CRLF format, and actual
   files rather than symlinks.
 - added mod recognition for "judgedm" mod; still need entities list
 - added 4 entities for Firearms 2.5

2001/03/07	1.0-rc2
 - fixed missing WINAPI in mm_trace GiveFnptrsToDll
 - added HTML version of docs
 - description field in metamod.ini is now optional: 
    - uses "name" from plugin info for desc by default
    - desc field in metamod.ini will override this
    - "meta list" shows just desc, rather than desc and name
 - altered debug levels for a couple API routines in api_info.cpp
 - added missing "load" cmd in "meta" usage help
 - added to "meta load" usage help
 - added macros RETURN_META(result) and RETURN_META_VALUE(result, value) to
   simplify plugin coding
 - added parameter "gamedll_funcs" to meta_attach(), to give each plugin a
   copy of the gamedll's API function tables
 - raised META_INTERFACE_VERSION to "5:2"
 - now load gamedll before plugins (rather than the reverse) so that
   it'll have the gamedll func tables to hand to the plugins
 - changed trace plugin console commands:
     trace_version	->	trace version
     trace <routine>	->	trace set <routine>
     untrace <routine>	->	trace unset <routine>
     showtrace		->	trace show
 - added "trace list <api>" to list all available routines for tracing
 - fixed broken trace cvars
 - for "meta {load,unload,etc}" console cmd, added matching against plugin
   logtag, as well as for "mm_<prefix>" in plugin file
 - handle null 'info' after failed plugin load (ie in "meta info" etc)
 - fixed "usage: meta list" errors on some meta commands; was calling
   cmd_meta_pluginlist() instead of Plugins->show()
 - fixed: unload/attach delayed plugins at changelevel
 - now doesn't export newapi if gamedll doesn't provide it
 - now doesn't call plugins getnewapi if gamedll doesn't provide it
 - fixed incorrect apitable references in MPlugin::show()

2001/02/08	1.0-rc1
 - fixed unistd.h under MSVC
 - fixed S_ISREG under MSVC
 - fixed strncasecmp under MSVC
 - fixed void svr_meta() returning value
 - fixed missing WINAPI in mm_stub GiveFnptrsToDll
 - remade MSVC project for metamod
 - created MSVC project for mm_stub
 - added an example "metamod.ini" to ./docs
