304 lines
16 KiB
Plaintext
304 lines
16 KiB
Plaintext
|
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 <no-codename-yet> 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<6C>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
|