HYPHEN Version History ========================================================================================================== KNOWN ISSUES ========================================================================================================== - ContactInfo.Read/WriteSetting & ContactInfo.WriteSettingAsBlob do not support blob values yet - MirandaDatabase.ContactSettingChange event does not provide data for changed blob values (see prev point) v0.8.6.1931 ========================================================================================================== * MANY BINARY INCOMPATIBLE CHANGES * MirandaContext completely refactored - Service functions => ServiceManager - Events + Event hooks => EventManager + MirandaContext.ServiceCallInterceptors - Plugin dialogs tracking rewritten to be more efficient and deadlock free :-) - EventHandle class refactored (see EventManager) - DatabaseEventInfo.Data encoding bug fixed - Internal text encoding mishandling fixed + LoaderOptions.MinimalMirandaVersion added + Hyphen tray icon moved to Hyphen's menu v0.8.5.1502 ========================================================================================================== - MirandaDatabase.AddEvent encoding bug fixed - MirandaDatabase.GetContacts/FindContact methods rewritten to be more efficient + ContactInfo.OpenMessageWindow() * MirandaContext.UnhookEvent(MirandaPlugin, string) => MirandaContext.UnhookEvent(string, MirandaPlugin) * IConfigurablePlugin interface undergone incompatible binary change v0.8.5.1303 ========================================================================================================== + Codename Casablanca - new configuration infrastructure + ContactList.AddEvent method introduced + AckRouter class for protocol ack processing introduced + Protocol.StatusChanged event introduced + Stability improvements + Exception handling improvements - LangPack string encoding fixed - Other bug fiexes - Internal refactoring * MirandaContext.NetworkProtocols => MirandaContext.Protocols * NetworkProtocolDictionary => ProtocolDictionary * A few events refactored * A few classes renamed v0.8.5.1101 ========================================================================================================== - 0.7+ Miranda Plugin API conformance v0.8.5.1 ========================================================================================================== - Minor stability fix v0.8.5.0 ========================================================================================================== * Virtuoso.Hyphen.Sandbox renamed to Virtuoso.Miranda.Plugins.Helpers.Sandbox * ProtocolPlugin.Descriptor renamed to ProtocolPlugin.ProtocolDescriptor + MenuItemDeclarationAttribute can be now applied to methods as well without the need to specify the service name; the service will be created for the method automagically + Virtuoso.Miranda.Plugins.Helpers.MessageQueue class introduced * GenericEventArgs renamed to MirandaEventArgs * Many *EventArgs classes renamed - FIXED BUG: BeforeEventAdded event now does provide valid event data v0.8.4.1 ========================================================================================================== * Many interfaces refactored, - Critical interop bug fixed (thanks to MikZ) v0.8.4.0 ========================================================================================================== - MPM bug fixes * Configuration class renamed to PluginConfiguration, v0.8.4.0 ========================================================================================================== * MirandaDatabase class + several other APIs overhauled, + Managed protocol support (see the MPM project on my site) v0.8.3.2 ========================================================================================================== + Configuration dialog revisited v0.8.3.1 ========================================================================================================== + Main menu popup menus support for managed plugins + Updated version of CueBannerTextBox included + InformationDialog introduced + New 'Loading plugins' dialog introduced - FIXED BUG: Plugin settings not saved with LazyUnload feature enabled v0.8.3.0 ========================================================================================================== - Incompatible binary changes, plugins must be recompiled + Plugin configuration framework introduced + Vista style introduced + Lazy unload introduced + CueBannerTextBox control included (nice work of Chili Software) + GradientPanel control included + Hyphen configuration revisited - Many internal changes v0.8.2.60 ========================================================================================================== - Hyphen is now strong named because some plugins may need to be strong named so Hyphen must be too - Plugins will automatically load the newest version of Hyphen; this is done using the BindingRedirect to avoid multiple versions of Hyphen assemblies to be deployed * Incompatible binary changes, plugins must be recompiled v0.8.2.25 ========================================================================================================== - I haven't accounted .NET Remoting object lifetime so after 5 minutes, all the remote objects are disconnected, which is very bad => fixed by overriding the MarshalByRefObject::InitalizeLifetimeService method - If you're designing an object accessible from another AppDomain (for example if you're using the Sandbox class), derive it from the Virtuoso.Miranda.Plugins.Infrastructure.RemoteObject class to make it connected as long as it's not collected by GC v0.8.2.20 ========================================================================================================== - ConfigurableMirandaPlugin class introduced; provides plugins with a seamless configuration store v0.8.2.0 ========================================================================================================== - Icons refreshed - Various internal changes - Sandbox class introduced; allows you to easily sandbox your own plugins (in plugins :-)) or scripts v0.8.1.80 ========================================================================================================== - Langpack localization support via the LanguagePack, LanguagePackStringResolver & LocalizableForm classes - Hyphen's main menu items now take advantage of Langpack (I'm not going to localize dialogs using Langpack, (at least not now), I prefer the .NET way, i.e. satelite assemblies) v0.8.1.60 ========================================================================================================== - Updater plugin support (Virtuoso.Miranda.Plugins.ThirdParty.Updater.UpdaterPlugin class) - LoaderOptionsAttribute now supports required Hyphen version specification; Hyphen refuses to load a plugin that requires a newer version of Hyphen v0.8.1.40 ========================================================================================================== - Internal stability improvements v0.8.1.35 ========================================================================================================== - Virtuoso.Miranda.Plugins.Helpers.IniStructure class added; thanks kratchkov@inbox.lv for his CodeProject submission! v0.8.1.32 ========================================================================================================== - ContactInfo.Value is now translated to ANSI string by default not to Miranda's build default encoding. v0.8.1.30 ========================================================================================================== - Internal sandboxing API changes v0.8.1.10 ========================================================================================================== - Safe callbacks introduced; no managed plugin should now crash Miranda with an unhandled exception; an exception will be caught and processed by a callback stub v0.8.1.4 ========================================================================================================== - Internal refinements v0.8.1.3 ========================================================================================================== - Internal Loader changes - Internal Hyphen.Mini changes v0.8.0.0 ========================================================================================================== - Midas is now Hyphen, the core has been re-engineered... - Hyphen now supports delayed plugin loading and unloading; plugins are not loaded on startup but you can load them using the Miranda Menu - 'Load/Unload Microsoft.net plugins' item; this saves memory and startup time - EventHandle class providing you with an option to create and manage your own events - MirandaContext now offers CreateServiceFunction and HookEvent methods - You can override the builtin configuration and use your own Plugin manager instead of the builtin one - You can override the builtin configuration and use your own Assembly probe to search for plugins in custom directories - You can manage plugins via a Hyphen manager icon in the tray - Plugin assemblies are now shadow copied so you can update them on the fly and Hyphen will reload them without the need of restarting Miranda - Noticable performance improvements introduced; unsafe C# pointers employed to get rid of many copying operations - Bunch of new functionality added, see for yourself; I am unable to track that amount of changes ;) v0.7.2.0 ========================================================================================================== - Midas.dll and Virtuoso.Miranda.Plugins were merged into the Midas.dll assembly v0.7.1.10 ========================================================================================================== - Internal tuning - InteropBufferPool now offers an override allowing you to set the buffer capacity - note that a new buffer will be allocated if you explicitly set a capacity higher than the default one, which is 260 bytes v0.7.1.5 ========================================================================================================== - InteropBuffer class revamped to be more robust - InteropBufferPool class introduced; it manages a few shared buffers and when an additional buffer is requested, it allocates a one - to obtain an instance of a buffer, you have to call the InteropBufferPool::AcquireBuffer() method - you will be provided with an instance of capacity 260 bytes - to release a buffer and free its resources, call the InteropBufferPool::ReleaseBuffer(InteropBuffer) method; a buffer to be released must be unlocked! - MirandaContext::CreateHookableEvent method provided; returns an instance of the EventHandle class allowing you to manipulate with the event (fire it and set a default hook) v0.7.1.1 ========================================================================================================== - Minor internal changes - IcqXStatusPlugin source code included (note it requires Unicode Miranda and the latest ICQOscarJ plugin) v0.7.1.0 ========================================================================================================== - MirandaContext::PluginSettingsManager property now returns null; please do not use this class, it will be refactored in the future - MirandaDatabase::GetProfileName() & ::GetProfilePath() methods added - Translate::ToString() method now supports length and encoding options; you can now specify an encoding in which is a string pointed by a handle encoded in or select StringEncoding::MirandaDefault to assume ANSI under the non-unicode Miranda core and UNICODE under the unicode-aware Miranda core; using this method will simplify possible unicode transition in the future - MirandaEnvironment static class introduced; you can use it to obtain the information about Miranda (currently there is a MirandaStringEncoding property only) - InteropBuffer class introduced; you can pass it to a Miranda service expecting a char/byte/whatever buffer pointer; just don't forget to Lock() and Unlock() it before and after the use, respectively - to obtain a buffer pointer, you the IntPtr property; - WARNING: do not call the Free()/Dispose() methods (!!!) these will invalidate the buffer and prevent its next use; these methods are supposed to be called by internal callers only! - to purge the content of the buffer (if security is your concern), use the Zero() method - note that the Zero() operation is quite a slow one, so carefully consider its use - to obtain the capacity of the buffer, use either the InteropBuffer::Capacity or ::CapacityAsXX fields v0.7.0.5 ========================================================================================================== - MirandaDatabase now supports writing and reading contact settings; reading is done via a "DB/Contact/GetSettingStatic" service call to improve performance v0.7.0.1 ========================================================================================================== - Midas v1.0.0.1 included; minor internal API changes v0.7.0.0 ========================================================================================================== - DotNetConnector is now Midas - Miranda-2-.net proxy is now pure IL with 3 unmanaged exports only representing the Miranda API entry points (previously there was an C++/CLI IJW assembly dependent on the MS VCRT v8.0 dlls; this is now gone) - No public API changes v0.6.8.0 ========================================================================================================== - PluginSettings class for storing plugin specific settings - MirandaDatabase class extended - IndividualMirandaPlugin class added; you can derive your plugins from it and use a small IL stub to create plugins that are not managed by the PluginManager and thus can override Miranda system modules and are even transient - More documentation will code... - Project has been started; it's goal is to replace the C++/CLI loader stub with a pure IL stub consisting from 3 unmanaged exports only... v0.6.7.0 ========================================================================================================== - MenuItemDeclarationAttribute API refactored - StandardServices & StandardEvent class removed - ContactList now supports adding and modifying menu items - Some collection changes - ContactList.ProtocolStatusChange event added v0.6.6.0 ========================================================================================================== - All previous known issues resolved (probably caused by some hook-twice operation) - PluginContext is now MirandaContext - PluginContext.MirandaPInvokeBridge is not public now, it was visible due a bug - Miranda lazy event binding introduced (binds to Miranda's internal event only when somebody subscribes a one) - PrivatePluginAttribute introduced (makes a plugin manually loadable only, fusion will ignore it) v0.6.5.0 ========================================================================================================== - Some optimalizations - KNOWN ISSUES - MirandaDatabase::EventAdded event fired twice. I think Miranda does this, but don't know why... v0.6.3.0 ========================================================================================================== - Bunch of new stuff added, see for yourself... v0.5.8.0 ========================================================================================================== - Contact info query support - UnmanagedStructHandle´1 struct made public for use (can be used for easy unmanaged memory allocation and deallocation) - Performance and stability tuning - MirandaPlugin base class expansion; some new virtual methods added - Threaded fusion v0.5.0.0 ========================================================================================================== - initial alpha release